]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
New checked in PRAGMA integrity_check to validate the autovacuum settings
authordrh <drh@noemail.net>
Fri, 20 Jul 2018 15:44:09 +0000 (15:44 +0000)
committerdrh <drh@noemail.net>
Fri, 20 Jul 2018 15:44:09 +0000 (15:44 +0000)
in the header.

FossilOrigin-Name: a4663f09c91d1381a831f61a2b8e8a113eb6083932c4aea2ad0c011ece1418c5

manifest
manifest.uuid
src/btree.c

index 0eb200455e473c1faf5c1c2d468e83e6307ccfdd..7867f7d9f5829d0c2757b98b9e1558c147540f21 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Enhanced\sdetection\sof\sproblems\son\sthe\sfreelist\sand\son\soverflow\slist\sin\nPRAGMA\sintegrity_check.
-D 2018-07-20T13:39:28.100
+C New\schecked\sin\sPRAGMA\sintegrity_check\sto\svalidate\sthe\sautovacuum\ssettings\nin\sthe\sheader.
+D 2018-07-20T15:44:09.800
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
 F Makefile.in 0a3a6c81e6fcb969ff9106e882f0a08547014ba463cb6beca4c4efaecc924ee6
@@ -438,7 +438,7 @@ F src/auth.c a38f3c63c974787ecf75e3213f8cac6568b9a7af7591fb0372ec0517dd16dca8
 F src/backup.c 78d3cecfbe28230a3a9a1793e2ead609f469be43e8f486ca996006be551857ab
 F src/bitvec.c 17ea48eff8ba979f1f5b04cc484c7bb2be632f33
 F src/btmutex.c 8acc2f464ee76324bf13310df5692a262b801808984c1b79defb2503bbafadb6
-F src/btree.c 76395ea8cb88e7075af1ba6465b1d2751b92cbaa0bcbc8618b6e1787c61c10d9
+F src/btree.c 3f5e1a03db871e627bf5da21092bf7434ecfc5c5980bbd7d45eba13341340173
 F src/btree.h febb2e817be499570b7a2e32a9bbb4b607a9234f6b84bb9ae84916d4806e96f2
 F src/btreeInt.h 620ab4c7235f43572cf3ac2ac8723cbdf68073be4d29da24897c7b77dda5fd96
 F src/build.c d8f6ac1e9e484eb3f3921a8336d3dc6c87273d9db8729702162ef045997a1463
@@ -1750,7 +1750,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 271b8980c3bcd0403a40aec26681ec111be1d88d2d5d35199a85a10f09ad6920
-R 12f9a839a98e388a878641cfa671f691
+P 11e58f5b37d99848978007d834d187c262d904eb9d58924742e028d7cb324e64
+R c0acde69723fe0b5e3fbc25297e0d544
 U drh
-Z 9f541998dc72c18645337f8a0e2a985a
+Z 0f08918d98de0383295ceae1a107394a
index 6617ca082ad981203d783cb46470c650ea437b36..4205d45f50d5d472769db2bc5f9a4035b96b81e7 100644 (file)
@@ -1 +1 @@
-11e58f5b37d99848978007d834d187c262d904eb9d58924742e028d7cb324e64
\ No newline at end of file
+a4663f09c91d1381a831f61a2b8e8a113eb6083932c4aea2ad0c011ece1418c5
\ No newline at end of file
index 45ff2bfe8f397313a6418c96f73142510d3f807b..2fb52854747b5e566da3e61418c1b71459727e2e 100644 (file)
@@ -9840,6 +9840,24 @@ char *sqlite3BtreeIntegrityCheck(
 
   /* Check all the tables.
   */
+#ifndef SQLITE_OMIT_AUTOVACUUM
+  if( pBt->autoVacuum ){
+    int mx = 0;
+    int mxInHdr;
+    for(i=0; (int)i<nRoot; i++) if( mx<aRoot[i] ) mx = aRoot[i];
+    mxInHdr = get4byte(&pBt->pPage1->aData[52]);
+    if( mx!=mxInHdr ){
+      checkAppendMsg(&sCheck,
+        "max rootpage (%d) disagrees with header (%d)",
+        mx, mxInHdr
+      );
+    }
+  }else if( get4byte(&pBt->pPage1->aData[64])!=0 ){
+    checkAppendMsg(&sCheck,
+      "incremental_vacuum enabled with a max rootpage of zero"
+    );
+  }
+#endif
   testcase( pBt->db->flags & SQLITE_CellSizeCk );
   pBt->db->flags &= ~SQLITE_CellSizeCk;
   for(i=0; (int)i<nRoot && sCheck.mxErr; i++){