]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Fix a problem in rbu vacuum on tables with a large sqlite_master table.
authordan <dan@noemail.net>
Thu, 21 Apr 2016 15:26:26 +0000 (15:26 +0000)
committerdan <dan@noemail.net>
Thu, 21 Apr 2016 15:26:26 +0000 (15:26 +0000)
FossilOrigin-Name: 23eac52e987996afe8db847921aef434cebd25b5

ext/rbu/rbuvacuum.test
ext/rbu/sqlite3rbu.c
manifest
manifest.uuid

index 85ecfc4c13b8cc9ea6d692615fdc3fd67c073e50..c67162c56729e59719f16559e45542b1433c0da7 100644 (file)
@@ -241,6 +241,21 @@ foreach step {0 1} {
     PRAGMA main.user_version;
     PRAGMA main.application_id;
   } {8192 2 412 413}
+
+  # Vacuum a database with a large sqlite_master table.
+  #
+  reset_db
+  do_test 1.10.1 {
+    for {set i 1} {$i < 50} {incr i} {
+      execsql "PRAGMA page_size = 1024"
+      execsql "CREATE TABLE t$i (a, b, c, PRIMARY KEY(a, b));"
+      execsql "
+        INSERT INTO t$i VALUES(1, 2, 3);
+        INSERT INTO t$i VALUES(4, 5, 6);
+      "
+    }
+  } {}
+  do_rbu_vacuum_test 1.10.2 $step
 }
 
 #-------------------------------------------------------------------------
index 022e682bde8488cc51c83ba7e2de9e3898710339..04dc9944d722a3a9cadf63006ddcbca5c3bd5fd4 100644 (file)
@@ -3952,9 +3952,9 @@ static int rbuVfsRead(
           rbuPutU32(&aBuf[24], pRbu->pRbuFd->iCookie+1);  /* Change counter */
 
           if( iAmt>100 ){
-            assert( iAmt>=101 );
-            memset(&aBuf[101], 0, iAmt-101);
+            memset(&aBuf[100], 0, iAmt-100);
             rbuPutU16(&aBuf[105], iAmt & 0xFFFF);
+            aBuf[100] = 0x0D;
           }
         }
       }
index 1ec956e979d9d87c3510d42e9a1eda57e211e6eb..dbe7f79adcec09bd36c1644a1273e3488a1c78d1 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Add\sa\sdocumentation\scomment\sfor\ssqlite3rbu_vacuum()\sto\ssqlite3rbu.h.
-D 2016-04-20T20:08:58.990
+C Fix\sa\sproblem\sin\srbu\svacuum\son\stables\swith\sa\slarge\ssqlite_master\stable.
+D 2016-04-21T15:26:26.501
 F Makefile.in eba680121821b8a60940a81454316f47a341487a
 F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434
 F Makefile.msc 71b8b16cf9393f68e2e2035486ca104872558836
@@ -247,8 +247,8 @@ F ext/rbu/rbufault3.test 54a399888ac4af44c68f9f58afbed23149428bca
 F ext/rbu/rbufts.test 828cd689da825f0a7b7c53ffc1f6f7fdb6fa5bda
 F ext/rbu/rbuprogress.test 2023a7df2c523e3df1cb532eff811cda385a789a
 F ext/rbu/rbusave.test 0f43b6686084f426ddd040b878426452fd2c2f48
-F ext/rbu/rbuvacuum.test ecd7ce1cd8528d6230b56f4840bbb7188cee6946
-F ext/rbu/sqlite3rbu.c 80ab68658a1dc1921a3eee7c666c948ea640087c
+F ext/rbu/rbuvacuum.test aa405cff38b15a89f6c97f91f1c6a67b2140b358
+F ext/rbu/sqlite3rbu.c 8310553b029e749329a89b3880a21f80876755c3
 F ext/rbu/sqlite3rbu.h efcafd0e36861943a88deb181753236f84dbc244
 F ext/rbu/test_rbu.c 430b8b9520c233505371d564d3561e0b554355f4
 F ext/rtree/README 6315c0d73ebf0ec40dedb5aa0e942bc8b54e3761
@@ -1484,7 +1484,7 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93
 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
 F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
 F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
-P f042fdd1ea7febec7228e51efc2b0281805e196a
-R 20401012c91c212b91bec1accca1e5a8
+P da5c753ddac3cbfdf03710a82f5fd9fa2e29e819
+R e2636288f7318e2301180a849b5ff72b
 U dan
-Z ebff3ad2f969914e02c51eda888da39a
+Z d9d3e7dacedd64ed84574ca4c0316d8e
index ffe63d9829c67870138a560e0fc5db4ea310ca5b..8f13cab8e3ab666f30d1268af3e4aa33ab473c7a 100644 (file)
@@ -1 +1 @@
-da5c753ddac3cbfdf03710a82f5fd9fa2e29e819
\ No newline at end of file
+23eac52e987996afe8db847921aef434cebd25b5
\ No newline at end of file