]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Use OP_Sort rather than OP_Rewind in order to sort the content of a new
authordrh <drh@noemail.net>
Wed, 17 Aug 2011 00:40:58 +0000 (00:40 +0000)
committerdrh <drh@noemail.net>
Wed, 17 Aug 2011 00:40:58 +0000 (00:40 +0000)
index on the CREATE INDEX statement.  Add an ALWAYS() to the merge sort
logic to document an unreachable branch.

FossilOrigin-Name: f01766f42342f043bf0cbe1e07224963011f01b7

manifest
manifest.uuid
src/build.c
src/vdbesort.c
test/like.test

index 47279dc512dc9315d9769b31de8f2116cacfe58e..71ed90664f777276dfb13de335bae52e899d61d9 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Updated\scomments\son\sthe\smultiplexor\sextension.\s\sNo\schanges\sto\scode.
-D 2011-08-15T19:44:30.942
+C Use\sOP_Sort\srather\sthan\sOP_Rewind\sin\sorder\sto\ssort\sthe\scontent\sof\sa\snew\nindex\son\sthe\sCREATE\sINDEX\sstatement.\s\sAdd\san\sALWAYS()\sto\sthe\smerge\ssort\nlogic\sto\sdocument\san\sunreachable\sbranch.
+D 2011-08-17T00:40:58.276
 F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
 F Makefile.in 8c930e7b493d59099ea1304bd0f2aed152eb3315
 F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
@@ -127,7 +127,7 @@ F src/btmutex.c 976f45a12e37293e32cae0281b15a21d48a8aaa7
 F src/btree.c a30bdcc27eedc36a38a3a11e1ba83de9a6729f7e
 F src/btree.h f5d775cd6cfc7ac32a2535b70e8d2af48ef5f2ce
 F src/btreeInt.h 67978c014fa4f7cc874032dd3aacadd8db656bc3
-F src/build.c 77b40abf79e1541356f552c9681b0b431aba672b
+F src/build.c 77be7c2174300e94404ca89a2a9bbd8047d0ce11
 F src/callback.c 0425c6320730e6d3981acfb9202c1bed9016ad1a
 F src/complete.c dc1d136c0feee03c2f7550bafc0d29075e36deac
 F src/ctime.c 7f283795650dd4122cc07bd02193c40193b32cc6
@@ -245,7 +245,7 @@ F src/vdbeapi.c 11dc47987abacb76ad016dcf5abc0dc422482a98
 F src/vdbeaux.c 8fb978eb73a97b34d352dd3ef3bff35b1b3fa7e9
 F src/vdbeblob.c f024f0bf420f36b070143c32b15cc7287341ffd3
 F src/vdbemem.c 0498796b6ffbe45e32960d6a1f5adfb6e419883b
-F src/vdbesort.c af82a8b0d0dbf67f8b03d9a70d3d6fcd3bdf83ba
+F src/vdbesort.c a63bab05465ef7f8d28d46757eef55f84828d9a7
 F src/vdbetrace.c 5d0dc3d5fd54878cc8d6d28eb41deb8d5885b114
 F src/vtab.c 901791a47318c0562cd0c676a2c6ff1bc530e582
 F src/wal.c 3154756177d6219e233d84291d5b05f4e06ff5e9
@@ -544,7 +544,7 @@ F test/jrnlmode3.test 556b447a05be0e0963f4311e95ab1632b11c9eaa
 F test/keyword1.test a2400977a2e4fde43bf33754c2929fda34dbca05
 F test/lastinsert.test 474d519c68cb79d07ecae56a763aa7f322c72f51
 F test/laststmtchanges.test ae613f53819206b3222771828d024154d51db200
-F test/like.test 9cc5261d22f2108a27cedff8a972aa3284a4ba52
+F test/like.test 7b4aaa4a8192fdec90e0a905984c92a688c51e48
 F test/like2.test 3b2ee13149ba4a8a60b59756f4e5d345573852da
 F test/limit.test 2db7b3b34fb925b8e847d583d2eb67531d0ce67e
 F test/loadext.test dab17f7014f8079698dbd4b02705562b0ce6db5f
@@ -960,7 +960,7 @@ F tool/symbols.sh caaf6ccc7300fd43353318b44524853e222557d5
 F tool/tostr.awk 11760e1b94a5d3dcd42378f3cc18544c06cfa576
 F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f
 F tool/warnings.sh 2ebae31e1eb352696f3c2f7706a34c084b28c262
-P c1daa809a17a97610e51f9babd90f36908921245
-R b2a38ddd9a0fb78674a7b9b801a2c178
+P 0f42ef697e197d193867c0d6be3c9cf6471488c6
+R 379592adaec833a4cd5b123be0966811
 U drh
-Z fd99972c6519c355091efb4b8ed6aaf8
+Z ca898c130a5f289776aff7d373cdb475
index f8523bca97a1f6f4846ad9ee9bf67fa8de53fdbb..bcfcf28f1699ab89e44310fa3b813ea499e146c4 100644 (file)
@@ -1 +1 @@
-0f42ef697e197d193867c0d6be3c9cf6471488c6
\ No newline at end of file
+f01766f42342f043bf0cbe1e07224963011f01b7
\ No newline at end of file
index 550538c3c2bc44f32b2b0f4db4b644c9bc9aef59..6d7f5bf3dc0673b61ef82c1981ff90aa38c23a7e 100644 (file)
@@ -2385,7 +2385,7 @@ static void sqlite3RefillIndex(Parse *pParse, Index *pIndex, int memRootPage){
     sqlite3VdbeAddOp2(v, OP_IdxInsert, iSorter, regRecord);
     sqlite3VdbeAddOp2(v, OP_Next, iTab, addr1+1);
     sqlite3VdbeJumpHere(v, addr1);
-    addr1 = sqlite3VdbeAddOp2(v, OP_Rewind, iSorter, 0);
+    addr1 = sqlite3VdbeAddOp2(v, OP_Sort, iSorter, 0);
     sqlite3VdbeAddOp2(v, OP_RowKey, iSorter, regRecord);
   }
 
index a093b73fab82391e657a230b2cf2087e17d3e665..a4dbab0be38c0928a7ceaa961116daba27ac2b67 100644 (file)
@@ -692,7 +692,7 @@ int sqlite3VdbeSorterRowkey(VdbeCursor *pCsr, Mem *pOut){
   ** were passed to the sorter - meaning it is always large enough for the
   ** largest key. But this could change very easily, so we leave the call
   ** to sqlite3VdbeMemGrow() in. */
-  if( sqlite3VdbeMemGrow(pOut, pIter->nKey, 0) ){
+  if( NEVER(sqlite3VdbeMemGrow(pOut, pIter->nKey, 0)) ){
     return SQLITE_NOMEM;
   }
   pOut->n = pIter->nKey;
index 45d5a97c5bc7b832f6703620f3334daeb02a91bc..767efd5828f46896a00fe1fca52bc8ed874ddd21 100644 (file)
@@ -308,8 +308,8 @@ do_test like-3.18 {
 #
 do_test like-3.19 {
   set sqlite_like_count 0
+  db eval {CREATE INDEX i1 ON t1(x);}
   queryplan {
-    CREATE INDEX i1 ON t1(x);
     SELECT x FROM t1 WHERE x GLOB 'abc*' ORDER BY 1;
   }
 } {abc abcd nosort {} i1}
@@ -522,7 +522,7 @@ do_test like-5.24 {
   }
 } {zz-lower-lower zZ-lower-upper Zz-upper-lower ZZ-upper-upper nosort {} i2}
 do_test like-5.25 {
-  queryplan {
+  db eval {
     PRAGMA case_sensitive_like=on;
     CREATE TABLE t3(x TEXT);
     CREATE INDEX i3 ON t3(x);
@@ -530,6 +530,8 @@ do_test like-5.25 {
     INSERT INTO t3 VALUES('zZ-lower-upper');
     INSERT INTO t3 VALUES('Zz-upper-lower');
     INSERT INTO t3 VALUES('zz-lower-lower');
+  }
+  queryplan {
     SELECT x FROM t3 WHERE x LIKE 'zz%';
   }
 } {zz-lower-lower nosort {} i3}