mirror of https://github.com/sqlite/sqlite
Use OP_Sort rather than OP_Rewind in order to sort the content of a new
index on the CREATE INDEX statement. Add an ALWAYS() to the merge sort logic to document an unreachable branch. FossilOrigin-Name: f01766f42342f043bf0cbe1e07224963011f01b7
This commit is contained in:
parent
ad2148da00
commit
9da058bb5c
16
manifest
16
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
|
||||
|
|
|
@ -1 +1 @@
|
|||
0f42ef697e197d193867c0d6be3c9cf6471488c6
|
||||
f01766f42342f043bf0cbe1e07224963011f01b7
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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}
|
||||
|
|
Loading…
Reference in New Issue