aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authordrh <drh@noemail.net>2011-08-25 18:01:28 +0000
committerdrh <drh@noemail.net>2011-08-25 18:01:28 +0000
commitd7f6e906db4e97accd60d5e3dd829d64d66202dd (patch)
tree69fdad8ddb4376bbde75b795142e54c95c82a573 /src
parentee140c4d711e88de0d20350403f20bc248f451c9 (diff)
downloadsqlite-d7f6e906db4e97accd60d5e3dd829d64d66202dd.tar.gz
sqlite-d7f6e906db4e97accd60d5e3dd829d64d66202dd.zip
Disable external merge source when SQLITE_TEMP_STORE==3. Add documentation
to the OP_OpenSorter opcode. FossilOrigin-Name: 5a690486811379cea40c6ed48b2902f421234832
Diffstat (limited to 'src')
-rw-r--r--src/sqliteInt.h8
-rw-r--r--src/vdbe.c6
2 files changed, 14 insertions, 0 deletions
diff --git a/src/sqliteInt.h b/src/sqliteInt.h
index bcf6a591a..c97499b30 100644
--- a/src/sqliteInt.h
+++ b/src/sqliteInt.h
@@ -367,6 +367,14 @@
#endif
/*
+** If all temporary storage is in-memory, then omit the external merge-sort
+** logic since it is superfluous.
+*/
+#if SQLITE_TEMP_STORE==3 && !defined(SQLITE_OMIT_MERGE_SORT)
+# define SQLITE_OMIT_MERGE_SORT
+#endif
+
+/*
** GCC does not define the offsetof() macro so we'll have to do it
** ourselves.
*/
diff --git a/src/vdbe.c b/src/vdbe.c
index 3cab3b3fd..be07f6087 100644
--- a/src/vdbe.c
+++ b/src/vdbe.c
@@ -3156,6 +3156,12 @@ case OP_OpenWrite: {
** by this opcode will be used for automatically created transient
** indices in joins.
*/
+/* Opcode: OpenSorter P1 P2 * P4 *
+**
+** This opcode works like OP_OpenEphemeral except that it opens
+** a transient index that is specifically designed to sort large
+** tables using an external merge-sort algorithm.
+*/
case OP_OpenSorter:
case OP_OpenAutoindex:
case OP_OpenEphemeral: {