]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
This is an experimental patch that ensures that all cursors have their position savepoint-rollback
authordrh <drh@noemail.net>
Thu, 2 Feb 2017 00:46:55 +0000 (00:46 +0000)
committerdrh <drh@noemail.net>
Thu, 2 Feb 2017 00:46:55 +0000 (00:46 +0000)
saved prior to starting a ROLLBACK TO.

FossilOrigin-Name: 01d97e5b6502b1811b52a681f445e1aaae6c0ee6

manifest
manifest.uuid
src/btree.c

index 6459c8e5add680cde3c8e59b5716fca97e6a8835..4cc36f422d8209e9b4ccb2c45dcd2ea03fce5b49 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Fix\sharmless\scompiler\swarnings\sseen\swith\sMSVC.
-D 2017-02-01T23:06:17.747
+C This\sis\san\sexperimental\spatch\sthat\sensures\sthat\sall\scursors\shave\stheir\sposition\nsaved\sprior\sto\sstarting\sa\sROLLBACK\sTO.
+D 2017-02-02T00:46:55.000
 F Makefile.in 5f415e7867296d678fed2e6779aea10c1318b4bc
 F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434
 F Makefile.msc ba953c8921fc7e18333f61898007206de7e23964
@@ -336,7 +336,7 @@ F src/auth.c 930b376a9c56998557367e6f7f8aaeac82a2a792
 F src/backup.c faf17e60b43233c214aae6a8179d24503a61e83b
 F src/bitvec.c 17ea48eff8ba979f1f5b04cc484c7bb2be632f33
 F src/btmutex.c 0e9ce2d56159b89b9bc8e197e023ee11e39ff8ca
-F src/btree.c 6a63fa34e6fe86e87090e41963c0f2fcf9d3e16d
+F src/btree.c 9fe65ab418d99e80289f024016b5e5e74c3059dd
 F src/btree.h e6d352808956ec163a17f832193a3e198b3fb0ac
 F src/btreeInt.h 10c4b77c2fb399580babbcc7cf652ac10dba796e
 F src/build.c 9e799f1edd910dfa8a0bc29bd390d35d310596af
@@ -1552,8 +1552,10 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93
 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
 F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
 F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
-P aaae74d06f4865818465cfdb440258ae8a5b985a 997f765bc6706769ae15f3e719354473e02bd78b
-R 939bce209d57b72db3d58f9894d61374
-T +closed 997f765bc6706769ae15f3e719354473e02bd78b
-U mistachkin
-Z c2a7081e9858115a573bd4695718af54
+P 0c66cf0f0a9ada2ddcb8d61001ef791b86226416
+R 329580c21139f900f64001f6acfc9557
+T *branch * savepoint-rollback
+T *sym-savepoint-rollback *
+T -sym-trunk *
+U drh
+Z 5087946e64391fb6ac59f69d722efdd6
index 0e343416858d42e69462b5d685a8d543a0ca7875..9d5ad1c9815081c6978df7d784b1c55c2c3389c9 100644 (file)
@@ -1 +1 @@
-0c66cf0f0a9ada2ddcb8d61001ef791b86226416
\ No newline at end of file
+01d97e5b6502b1811b52a681f445e1aaae6c0ee6
\ No newline at end of file
index 45a1c5a0f8f336a291740dd714e210e0557a2b1a..de553423b8847ff23b58c2ce3ec8218314c7a2e8 100644 (file)
@@ -4038,7 +4038,12 @@ int sqlite3BtreeSavepoint(Btree *p, int op, int iSavepoint){
     assert( op==SAVEPOINT_RELEASE || op==SAVEPOINT_ROLLBACK );
     assert( iSavepoint>=0 || (iSavepoint==-1 && op==SAVEPOINT_ROLLBACK) );
     sqlite3BtreeEnter(p);
-    rc = sqlite3PagerSavepoint(pBt->pPager, op, iSavepoint);
+    if( op==SAVEPOINT_ROLLBACK ){
+      rc = saveAllCursors(pBt, 0, 0);
+    }
+    if( rc==SQLITE_OK ){
+      rc = sqlite3PagerSavepoint(pBt->pPager, op, iSavepoint);
+    }
     if( rc==SQLITE_OK ){
       if( iSavepoint<0 && (pBt->btsFlags & BTS_INITIALLY_EMPTY)!=0 ){
         pBt->nPage = 0;