Avoid calling sqlite3BtreeKeysize() on a b-tree cursor in SKIPNEXT or SKIPPREV state.
FossilOrigin-Name: 54e7d3fcb1ab21c03ffef1af93ae029a2901098a
This commit is contained in:
parent
dd715f7c57
commit
2b8669a9da
14
manifest
14
manifest
@ -1,5 +1,5 @@
|
||||
C Do\snot\sautomatically\sremove\sthe\sDISTINCT\skeyword\sfrom\s"a\sIN\s(SELECT\sDISTINCT\s...)"\sexpressions.\sFix\sfor\s[db87229497].
|
||||
D 2014-11-14T15:28:33.929
|
||||
C Avoid\scalling\ssqlite3BtreeKeysize()\son\sa\sb-tree\scursor\sin\sSKIPNEXT\sor\sSKIPPREV\sstate.
|
||||
D 2014-11-17T19:42:48.262
|
||||
F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
|
||||
F Makefile.in a226317fdf3f4c895fb3cfedc355b4d0868ce1fb
|
||||
F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
|
||||
@ -291,7 +291,7 @@ F src/update.c 3c4ecc282accf12d39edb8d524cf089645e55a13
|
||||
F src/utf.c fc6b889ba0779b7722634cdeaa25f1930d93820c
|
||||
F src/util.c 3b627daa45c7308c1e36e3dbaa3f9ce7e5c7fa73
|
||||
F src/vacuum.c 9b30ec729337dd012ed88d4c292922c8ef9cf00c
|
||||
F src/vdbe.c 5e47308836e9bb5fdb4835fdf88eeab071848d3f
|
||||
F src/vdbe.c 5d3991d723f00ef86263f4d494e105faba5a5abd
|
||||
F src/vdbe.h 6fc69d9c5e146302c56e163cb4b31d1ee64a18c3
|
||||
F src/vdbeInt.h 9bb69ff2447c34b6ccc58b34ec35b615f86ead78
|
||||
F src/vdbeapi.c 07acb615d1e4170e71fc1b0d087f3c53a1ad8e83
|
||||
@ -734,7 +734,7 @@ F test/misc4.test 9c078510fbfff05a9869a0b6d8b86a623ad2c4f6
|
||||
F test/misc5.test 528468b26d03303b1f047146e5eefc941b9069f5
|
||||
F test/misc6.test 953cc693924d88e6117aeba16f46f0bf5abede91
|
||||
F test/misc7.test edd0b63e2ee29a256900b0514f6fff27e19e9bb2
|
||||
F test/misc8.test e838ec20c9c988bc94812fdb89af26409c20931b
|
||||
F test/misc8.test fc2754d38892f7dac30c22db3616c2764f117d66
|
||||
F test/misuse.test 3c34719944ba045cc6c188a4852ba04680728912
|
||||
F test/mmap1.test 1bfd611b9841eafb44f7d83c0788e146d84a33c9
|
||||
F test/mmap2.test 9d6dd9ddb4ad2379f29cc78f38ce1e63ed418022
|
||||
@ -1221,7 +1221,7 @@ F tool/vdbe_profile.tcl 67746953071a9f8f2f668b73fe899074e2c6d8c1
|
||||
F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4
|
||||
F tool/warnings.sh 0abfd78ceb09b7f7c27c688c8e3fe93268a13b32
|
||||
F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
|
||||
P ef03a203351a6002e2b1075139717e4234c816cd
|
||||
R bb54553354aa14551393c5e5701542c8
|
||||
P 55e453aadbb676dda07f0fa537d39ce184ef636c
|
||||
R 6cd25f6196e6f786753b0fb88328cee1
|
||||
U dan
|
||||
Z f91e19e3f2d1e58cdccd86465c86ab70
|
||||
Z f594bfe54166ed1c0f3ae7a5a057ba04
|
||||
|
@ -1 +1 @@
|
||||
55e453aadbb676dda07f0fa537d39ce184ef636c
|
||||
54e7d3fcb1ab21c03ffef1af93ae029a2901098a
|
@ -4408,6 +4408,10 @@ case OP_Rowid: { /* out2-prerelease */
|
||||
assert( pC->pCursor!=0 );
|
||||
rc = sqlite3VdbeCursorRestore(pC);
|
||||
if( rc ) goto abort_due_to_error;
|
||||
if( pC->nullRow ){
|
||||
pOut->flags = MEM_Null;
|
||||
break;
|
||||
}
|
||||
rc = sqlite3BtreeKeySize(pC->pCursor, &v);
|
||||
assert( rc==SQLITE_OK ); /* Always so because of CursorRestore() above */
|
||||
}
|
||||
|
@ -58,4 +58,41 @@ do_catchsql_test misc8-1.7 {
|
||||
} {1 {abort due to ROLLBACK}}
|
||||
|
||||
|
||||
reset_db
|
||||
|
||||
proc dbeval {sql} { db eval $sql }
|
||||
db func eval dbeval
|
||||
|
||||
do_execsql_test misc8-2.1 {
|
||||
CREATE TABLE t1(a INTEGER PRIMARY KEY, b INTEGER) WITHOUT ROWID;
|
||||
CREATE TABLE t2(c INTEGER PRIMARY KEY, d INTEGER, x BLOB);
|
||||
INSERT INTO t1 VALUES(0,0);
|
||||
INSERT INTO t1 VALUES(10,10);
|
||||
INSERT INTO t2 VALUES(1,1,zeroblob(200));
|
||||
INSERT INTO t2 VALUES(2,2,zeroblob(200));
|
||||
INSERT INTO t2 VALUES(3,3,zeroblob(200));
|
||||
INSERT INTO t2 VALUES(4,4,zeroblob(200));
|
||||
INSERT INTO t2 VALUES(5,5,zeroblob(200));
|
||||
INSERT INTO t2 VALUES(6,6,zeroblob(200));
|
||||
INSERT INTO t2 VALUES(7,7,zeroblob(200));
|
||||
INSERT INTO t2 VALUES(8,8,zeroblob(200));
|
||||
INSERT INTO t2 VALUES(9,9,zeroblob(200));
|
||||
INSERT INTO t2 VALUES(10,10,zeroblob(200));
|
||||
SELECT a, c, eval(
|
||||
printf('DELETE FROM t2 WHERE c=%d AND %d>5', a+c, a+c)
|
||||
) FROM t1, t2;
|
||||
} {
|
||||
0 1 {} 10 1 {}
|
||||
0 2 {} 10 2 {}
|
||||
0 3 {} 10 3 {}
|
||||
0 4 {} 10 4 {}
|
||||
0 5 {} 10 5 {}
|
||||
0 6 {} 10 {} {}
|
||||
0 7 {} 10 {} {}
|
||||
0 8 {} 10 {} {}
|
||||
0 9 {} 10 {} {}
|
||||
0 10 {} 10 {} {}
|
||||
}
|
||||
|
||||
|
||||
finish_test
|
||||
|
Loading…
x
Reference in New Issue
Block a user