]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Fix incorrect b-tree root page reports from the enhanced PRAGMA integrity_check
authordrh <>
Thu, 18 May 2023 23:28:33 +0000 (23:28 +0000)
committerdrh <>
Thu, 18 May 2023 23:28:33 +0000 (23:28 +0000)
output introduced in version 3.42.0.

FossilOrigin-Name: 0a0b7a2d3178f1aa650acd1d729566c889e27c9714463437a7f17c08e992ffd3

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

index 1131396b527294426e5eae4cfb8783f5c7b5382d..69f6b80df2221bf75a82644c44be148fedc0cf85 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Avoid\san\sassert()\sfailure\sthat\scould\soccur\sin\sSQLITE_ENABLE_UPDATE_DELETE_LIMIT\sbuilds\swhen\sa\sWITH\sclause\sattached\sto\san\sUPDATE\sor\sDELETE\sstatement\screated\sa\sCTE\sof\sthe\ssame\sname\sas\sthe\stable\sbeing\smodified.
-D 2023-05-17T11:45:25.116
+C Fix\sincorrect\sb-tree\sroot\spage\sreports\sfrom\sthe\senhanced\sPRAGMA\sintegrity_check\noutput\sintroduced\sin\sversion\s3.42.0.
+D 2023-05-18T23:28:33.755
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
 F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
@@ -575,7 +575,7 @@ F src/auth.c f4fa91b6a90bbc8e0d0f738aa284551739c9543a367071f55574681e0f24f8cf
 F src/backup.c 5c97e8023aab1ce14a42387eb3ae00ba5a0644569e3476f38661fa6f824c3523
 F src/bitvec.c 7c849aac407230278445cb069bebc5f89bf2ddd87c5ed9459b070a9175707b3d
 F src/btmutex.c 6ffb0a22c19e2f9110be0964d0731d2ef1c67b5f7fabfbaeb7b9dabc4b7740ca
-F src/btree.c ecaaf8d57cd8b5f4e3167bd59cf61cef031b4b2ee606e6afa11b96a60a14f9ef
+F src/btree.c 01a065d8719546753ea68ee2445dce11d237112546fe1596cbca6fcec42aa513
 F src/btree.h aa354b9bad4120af71e214666b35132712b8f2ec11869cb2315c52c81fad45cc
 F src/btreeInt.h b900603c8956bdeb313841f9b67bdeceef32c64d962d35477c07ec25e8cf0f9b
 F src/build.c 7a7217f75f202eff03617ca447bb9c3bc07d5af49da1d3cff2b1a88e8e394686
@@ -883,7 +883,7 @@ F test/conflict2.test 5557909ce683b1073982f5d1b61dfb1d41e369533bfdaf003180c5bc87
 F test/conflict3.test 81865d9599609aca394fb3b9cd5f561d4729ea5b176bece3644f6ecb540f88ac
 F test/contrib01.test 2a1cbc0f2f48955d7d073f725765da6fbceda6b4
 F test/corrupt.test d7cb0300e4a297147b6a05e92a1684bc8973635c3bcaa3d66e983c9cbdbf47a3
-F test/corrupt2.test 6e0c1e1c2ff4bedde4bc73f16250d74ae5b3d9ece086640ce88b9a94620ba993
+F test/corrupt2.test 9745c55b3ff2d84d9b6dc4f7365f91a99e70d90f3127ebc97ff0549c418e4d3d
 F test/corrupt3.test 6a982535d52c8165654cbc79a043cfd0bf02495a5efbf4754295e056fc548539
 F test/corrupt4.test b5ae41607e8d17d9c1f3e94fdb572ce061ed3beeebdb46fb3a348181b8c8a097
 F test/corrupt5.test 387be3250795e2a86e6234745558b80efb248a357d0cd8e53bce75c7463f545d
@@ -2070,9 +2070,9 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93
 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
 F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
 F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
-P adee1440bdca6ef9ab4096abf6cb59b30cd801055f6158b153dfcd512abdd8bb
-Q +8edf56d1698c3db38250db3b25864f658488414efb3a6b3e1443283b6affd26d
-R a7de3e31c5ce29ef90a0fbe785327e21
+P 60f03e3245089ce24020105a4dbe4c9ac3de4c4978ec87b62538c1a3929e11b3
+Q +9b538f62539bcde7d7d7ad06eccdc558ecbd3f9160db35197568f4d3b4247c76
+R b8238c8f46f178bfb2f19ca4c430a345
 U drh
-Z 3aa9e98570a6688f7639d69e562b850c
+Z 1b8f1630f647afb7da25f21f9d272132
 # Remove this line to create a well-formed Fossil manifest.
index a04140ded9cdbfa25bc6104c7878131a1306d428..37eb54404e7f0fc2e42fbef18b879a79aa6c3e04 100644 (file)
@@ -1 +1 @@
-60f03e3245089ce24020105a4dbe4c9ac3de4c4978ec87b62538c1a3929e11b3
\ No newline at end of file
+0a0b7a2d3178f1aa650acd1d729566c889e27c9714463437a7f17c08e992ffd3
\ No newline at end of file
index 87bc0058bb8566e96c1b70519a2e9d5b325ff55a..314e2be943c82c811ce6d5dca8925ed7f99e0ef6 100644 (file)
@@ -10662,7 +10662,7 @@ static int checkTreePage(
   if( iPage==0 ) return 0;
   if( checkRef(pCheck, iPage) ) return 0;
   pCheck->zPfx = "Tree %u page %u: ";
-  pCheck->v0 = pCheck->v1 = iPage;
+  pCheck->v1 = iPage;
   if( (rc = btreeGetPage(pBt, iPage, &pPage, 0))!=0 ){
     checkAppendMsg(pCheck,
        "unable to get the page. error code=%d", rc);
@@ -10999,6 +10999,7 @@ int sqlite3BtreeIntegrityCheck(
       checkPtrmap(&sCheck, aRoot[i], PTRMAP_ROOTPAGE, 0);
     }
 #endif
+    sCheck.v0 = aRoot[i];
     checkTreePage(&sCheck, aRoot[i], &notUsed, LARGEST_INT64);
   }
   pBt->db->flags = savedDbFlags;
index 96d28490aa5a918c06f1ef84dd153946a9354a5a..2e36cbd3014428cebfee0d2cbf71fe2e34a61ebc 100644 (file)
@@ -248,7 +248,7 @@ do_test corrupt2-5.1 {
   }
   set result
 } {{*** in database main ***
-Tree 11 page 2 cell 0: 2nd reference to page 10
+Tree 2 page 2 cell 0: 2nd reference to page 10
 Page 4: never used}}
 
 db2 close