]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Fix test cases. Avoid unnecessary tests for MemPage.nFree less than zero.
authordrh <drh@noemail.net>
Mon, 11 Feb 2019 17:22:30 +0000 (17:22 +0000)
committerdrh <drh@noemail.net>
Mon, 11 Feb 2019 17:22:30 +0000 (17:22 +0000)
FossilOrigin-Name: 480a5090befdc29eaeb6f0b22831c980d6ee92438d9b2e766de68b037ded38b8

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

index e02fc96147358edcf0ab4c534b2885acf94ecd03..2326789beada6a5f54996e412469a3516b420cae 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Updates\sto\sa\scomment\sto\skeep\sit\sin\salignment\sto\sthe\schanges\son\sthis\sbranch.
-D 2019-02-11T12:51:39.303
+C Fix\stest\scases.\s\sAvoid\sunnecessary\stests\sfor\sMemPage.nFree\sless\sthan\szero.
+D 2019-02-11T17:22:30.984
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
 F Makefile.in 178d8eb6840771149cee40b322d1b3be30d330198c522c903c1b66fb5a1bfca4
@@ -455,7 +455,7 @@ F src/auth.c 0fac71038875693a937e506bceb492c5f136dd7b1249fbd4ae70b4e8da14f9df
 F src/backup.c 78d3cecfbe28230a3a9a1793e2ead609f469be43e8f486ca996006be551857ab
 F src/bitvec.c 17ea48eff8ba979f1f5b04cc484c7bb2be632f33
 F src/btmutex.c 8acc2f464ee76324bf13310df5692a262b801808984c1b79defb2503bbafadb6
-F src/btree.c 85d49318710ff322811c6f0664cecab1c9d6646175d34878e8b299e9d169a474
+F src/btree.c aa182a9b5ac74db26086c8cb004d64de3fba4a5970ca788e324bebb256393479
 F src/btree.h 63b94fb38ce571c15eb6a3661815561b501d23d5948b2d1e951fbd7a2d04e8d3
 F src/btreeInt.h d7520b98e72f9a7e2a3140cc476df461fa8a34a3d56258184f8c26f70248cef9
 F src/build.c 906ca6663b9dcd413e72ae9c44dd51e596d8336b04d52e678a7501e71c20cab2
@@ -738,7 +738,7 @@ F test/conflict2.test bb0b94cf7196c64a3cbd815c66d3ee98c2fecd9c
 F test/conflict3.test a83db76a6c3503b2fa057c7bfb08c318d8a422202d8bc5b86226e078e5b49ff9
 F test/contrib01.test 2a1cbc0f2f48955d7d073f725765da6fbceda6b4
 F test/corrupt.test d7cb0300e4a297147b6a05e92a1684bc8973635c3bcaa3d66e983c9cbdbf47a3
-F test/corrupt2.test a7f95356d19a4e8bf9423622ad865cabf48ae49dad40eb7a17a0b39f1cdd6948
+F test/corrupt2.test bb50042cf9a1f1023d73af325d47eb02a6bb11e3c52f8812644b220c5d4bca35
 F test/corrupt3.test f95d7bf78109e0b84eb285a787ce91a3fd6a2dd7d0cb55882abff3bdc081a57e
 F test/corrupt4.test 8d1d86b850fcc43e417450454f2044e52d55778a
 F test/corrupt5.test 387be3250795e2a86e6234745558b80efb248a357d0cd8e53bce75c7463f545d
@@ -749,14 +749,14 @@ F test/corrupt9.test 730a3db08d4ab9aa43392ea30d9c2b4879cbff85
 F test/corruptA.test 112f4b2ae0b95ebf3ea63718642fb969a93acea557ace3a307234d19c245989b
 F test/corruptB.test 73a8d6c0b9833697ecf16b63e3c5c05c945b5dec
 F test/corruptC.test 138ecb02188ed1a719b533d4a139568204039f72f00e07a8d30d920bd83122db
-F test/corruptD.test b3c205fac7952b1de645ce44bb02335cd9e3e040
+F test/corruptD.test 33a37ce3ed56a20093ceee778cd2d7109c7085a59f3213d2baede11d952e8e50
 F test/corruptE.test 82ccf4f8f543fdbedd4aa42c709cb077f7374c62
 F test/corruptF.test be9fde98e4c93648f1ba52b74e5318edc8f59fe4
 F test/corruptG.test adf79b669cbfd19e28c8191a610d083ae53a6d51
 F test/corruptH.test 79801d97ec5c2f9f3c87739aa1ec2eb786f96454
 F test/corruptI.test a17bbf54fdde78d43cf3cc34b0057719fd4a173a3d824285b67dc5257c064c7b
 F test/corruptJ.test 4d5ccc4bf959464229a836d60142831ef76a5aa4
-F test/corruptK.test 5ef338c560ca4dfb7360828da16f1829be4deba3b378cafdc7a1cdaf027eb5c4
+F test/corruptK.test 5b4212fe346699831c5ad559a62c54e11c0611bdde1ea8423a091f9c01aa32af
 F test/corruptL.test 0f64242b83db6d0bd5b6e38c205bf7c2a3bc6c9f80351f49c4dee1639aca60d8
 F test/cost.test 51f4fcaae6e78ad5a57096831259ed6c760e2ac6876836e91c00030fad385b34
 F test/count.test cb2e0f934c6eb33670044520748d2ecccd46259c
@@ -1804,7 +1804,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 9285899120dec24ff2944431ad455d7ae217ef408ae2f1a3e7bdfb897099028c
-R 53dbac70400c0535df6c7379dea2a735
+P 7499f74351415e601eb48eff6b6fccd3a78d137f5ea9cd7cac46b904772966de
+R 2bddb3922f13e5970175a7d20955a56a
 U drh
-Z 0c6f69e2cd78e095467b69c3a20fd016
+Z e6d6ab91319b683b695ef49a0d7e5092
index 603606eaa8eb2b47bd299f4ac6e509b5a085060b..f2328d4d701afe16b04ed38115348f6cce86c13b 100644 (file)
@@ -1 +1 @@
-7499f74351415e601eb48eff6b6fccd3a78d137f5ea9cd7cac46b904772966de
\ No newline at end of file
+480a5090befdc29eaeb6f0b22831c980d6ee92438d9b2e766de68b037ded38b8
\ No newline at end of file
index d3805823ad8460875d69290ab8507bb4cfffebfd..6ac0a7f1345951b2c3307661c0c6f9f1e7f47b8a 100644 (file)
@@ -7225,15 +7225,8 @@ static int balance_quick(MemPage *pParent, MemPage *pPage, u8 *pSpace){
   assert( pPage->nOverflow==1 );
   
   if( pPage->nCell==0 ) return SQLITE_CORRUPT_BKPT;  /* dbfuzz001.test */
-  if( pPage->nFree<0 ){
-    rc = btreeComputeFreeSpace(pPage);
-    if( rc ) return rc;
-  }
-  if( pParent->nFree<0 ){
-    rc = btreeComputeFreeSpace(pParent);
-    if( rc ) return rc;
-  }
-
+  assert( pPage->nFree>=0 );
+  assert( pParent->nFree>=0 );
 
   /* Allocate a new page. This page will become the right-sibling of 
   ** pPage. Make the parent page writable, so that the new divider cell
@@ -7511,10 +7504,7 @@ static int balance_nonroot(
   if( !aOvflSpace ){
     return SQLITE_NOMEM_BKPT;
   }
-  if( pParent->nFree<0 ){
-    rc = btreeComputeFreeSpace(pParent);
-    if( rc ) return rc;
-  }
+  assert( pParent->nFree>=0 );
 
   /* Find the sibling pages to balance. Also locate the cells in pParent 
   ** that divide the siblings. An attempt is made to find NN siblings on 
@@ -8336,6 +8326,9 @@ static int balance(BtCursor *pCur){
       int const iIdx = pCur->aiIdx[iPage-1];
 
       rc = sqlite3PagerWrite(pParent->pDbPage);
+      if( rc==SQLITE_OK && pParent->nFree<0 ){
+        rc = btreeComputeFreeSpace(pParent);
+      }
       if( rc==SQLITE_OK ){
 #ifndef SQLITE_OMIT_QUICKBALANCE
         if( pPage->intKeyLeaf
index eee7ed322c52ca6200fc235cfa07a63c162a0b24..f97a526ef5762fd9a191f23346381f5f21e98f4e 100644 (file)
@@ -95,11 +95,11 @@ do_test corrupt2-1.4 {
   close $f
 
   sqlite3 db2 corrupt.db
-  catchsql "
-    $::presql
-    SELECT * FROM sqlite_master;
-  " db2
-} {1 {database disk image is malformed}}
+  # Note: This test is no longer meaningful due to the deferred computation
+  # of MemPage.nFree 
+  catchsql {PRAGMA quick_check} db2
+} {0 {{*** in database main ***
+Page 1: free space corruption}}}
 
 do_test corrupt2-1.5 {
   db2 close
@@ -118,11 +118,9 @@ do_test corrupt2-1.5 {
   close $f
 
   sqlite3 db2 corrupt.db
-  catchsql "
-    $::presql
-    SELECT * FROM sqlite_master;
-  " db2
-} {1 {database disk image is malformed}}
+  catchsql {PRAGMA quick_check} db2
+} {0 {{*** in database main ***
+Page 1: free space corruption}}}
 db2 close
 
 # Corrupt a database by having 2 indices of the same name:
index 63474584c3f9a8058407ad377f05542acfd5b264..eb6ccb3fcd29358380022d4e39adeb159dfb7082 100644 (file)
@@ -111,8 +111,9 @@ proc restore_file {} {
 do_test corruptD-1.1.1 {
   incr_change_counter
   hexio_write test.db [expr 1024+1] FFFF
-  catchsql { SELECT * FROM t1 ORDER BY rowid }
-} {1 {database disk image is malformed}}
+  catchsql { PRAGMA quick_check }
+} {0 {{*** in database main ***
+Page 2: free space corruption}}}
 do_test corruptD-1.1.2 {
   incr_change_counter
   hexio_write test.db [expr 1024+1] [hexio_render_int32 1021]
index ad5b9a4718cb99247809165c9a1bcbb440d20db2..1569afe4a8b462a944156dc7d3fecfe19e31cc34 100644 (file)
@@ -68,9 +68,15 @@ do_test 1.2 {
 do_execsql_test 1.3 {
   INSERT INTO t1 VALUES(randomblob(20));
 }
+
+# This test no longer functions due to the deferred computation of
+# MemPage.nFree.
+#
+if 0 {
 do_catchsql_test 1.4 {
   INSERT INTO t1 VALUES(randomblob(90));
 } {1 {database disk image is malformed}}
+}
 
 #-------------------------------------------------------------------------
 reset_db