]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Ensure that the OP_Prev opcode verifies that content has not been deleted
authordrh <drh@noemail.net>
Mon, 29 Sep 2014 15:00:28 +0000 (15:00 +0000)
committerdrh <drh@noemail.net>
Mon, 29 Sep 2014 15:00:28 +0000 (15:00 +0000)
out from under the cursor.  Fix for ticket [209d31e3161b9e9ff].

FossilOrigin-Name: 414f0d6a647a4d040b5463c73c5e15e699d85b4c

manifest
manifest.uuid
src/btree.c
test/eval.test

index 63e97cbf9f669bace965973fd2fe5a426b12dad5..68c67e07c13e481d045ee65de050647e5496090d 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Add\san\sassert()\sto\sverify\sthe\slast-row-id\sfor\sthe\sdatabase\sjust\sprior\sto\scalling\sa\sSQL\sfunction.
-D 2014-09-26T18:30:11.093
+C Ensure\sthat\sthe\sOP_Prev\sopcode\sverifies\sthat\scontent\shas\snot\sbeen\sdeleted\nout\sfrom\sunder\sthe\scursor.\s\sFix\sfor\sticket\s[209d31e3161b9e9ff].
+D 2014-09-29T15:00:28.761
 F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
 F Makefile.in cf57f673d77606ab0f2d9627ca52a9ba1464146a
 F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
@@ -172,7 +172,7 @@ F src/auth.c d8abcde53426275dab6243b441256fcd8ccbebb2
 F src/backup.c a31809c65623cc41849b94d368917f8bb66e6a7e
 F src/bitvec.c 19a4ba637bd85f8f63fc8c9bae5ade9fb05ec1cb
 F src/btmutex.c 49ca66250c7dfa844a4d4cb8272b87420d27d3a5
-F src/btree.c 59f03e421dad3cb6e27cc7d2393d3a7459be4b5e
+F src/btree.c ede8348a7d623257ee6c06ca4796ceaee13b8657
 F src/btree.h a79aa6a71e7f1055f01052b7f821bd1c2dce95c8
 F src/btreeInt.h 1bd7957161a1346a914f1f09231610e777a8e58d
 F src/build.c bde83dd5cf812e310a7e5ad2846790a14745bef4
@@ -469,7 +469,7 @@ F test/enc3.test 90683ad0e6ea587b9d5542ca93568af9a9858c40
 F test/enc4.test c8f1ce3618508fd0909945beb8b8831feef2c020
 F test/eqp.test 85873fa5816c48915c82c4e74cb5c35a5b48160f
 F test/errmsg.test f31592a594b44ee121371d25ddd5d63497bb3401
-F test/eval.test bc269c365ba877554948441e91ad5373f9f91be3
+F test/eval.test a64c9105d6ff163df7cf09d6ac29cdad5922078c
 F test/exclusive.test c7ebbc756eacf544c108b15eed64d7d4e5f86b75
 F test/exclusive2.test 32798111aae78a5deec980eee383213f189df308
 F test/exec.test e949714dc127eaa5ecc7d723efec1ec27118fdd7
@@ -1200,7 +1200,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 83913515830aa850f9e38406f9422d7e88dcab66
-R dc4da31df9102dea4f18af6519657b79
-U mistachkin
-Z 6fd91dd1e10822b3b57f7222d98e1fa9
+P d026f0c944ce812732d3595eaa3c5d432a86c7dd
+R 4bbd3babbb639de348c82ac1e98901ef
+U drh
+Z e609ec38acb2ceba655fca4c2f22f4af
index 482b36195624f93abe3512cdfdfe8c675ea1e8b9..909bc1e4db3e7f9747837db65b39ba92983bd33c 100644 (file)
@@ -1 +1 @@
-d026f0c944ce812732d3595eaa3c5d432a86c7dd
\ No newline at end of file
+414f0d6a647a4d040b5463c73c5e15e699d85b4c
\ No newline at end of file
index 135b40139f70a2aae9d10fd8b8282ad379e9b6af..503a2fb5d0462964e03e932ea620bff8f639af41 100644 (file)
@@ -4985,8 +4985,7 @@ static SQLITE_NOINLINE int btreePrevious(BtCursor *pCur, int *pRes){
   assert( (pCur->curFlags & (BTCF_AtLast|BTCF_ValidOvfl|BTCF_ValidNKey))==0 );
   assert( pCur->info.nSize==0 );
   if( pCur->eState!=CURSOR_VALID ){
-    assert( pCur->eState>=CURSOR_REQUIRESEEK );
-    rc = btreeRestoreCursorPosition(pCur);
+    rc = restoreCursorPosition(pCur);
     if( rc!=SQLITE_OK ){
       return rc;
     }
index 912dc8215bdf6ddf8476399c4f5b03b9da9c9c69..360d158f3c8a4b0bdbea627967d22a76b8c4b0fc 100644 (file)
@@ -58,6 +58,18 @@ do_test eval-2.2 {
     SELECT * FROM t2
   }
 } {}
+do_test eval-2.3 {
+  execsql {
+    INSERT INTO t2 SELECT x, x+1 FROM t1 WHERE x<5;
+    SELECT x, test_eval('DELETE FROM t2 WHERE x='||x), y FROM t2
+     ORDER BY rowid DESC;
+  }
+} {4 {} {} 3 {} {} 2 {} {} 1 {} {}}
+do_test eval-2.4 {
+  execsql {
+    SELECT * FROM t2
+  }
+} {}
 
 # Modify a row while it is being read.
 #