]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Improvements to the wording of some comments. Reinstate an assert() that
authordrh <drh@noemail.net>
Thu, 30 Oct 2014 23:14:56 +0000 (23:14 +0000)
committerdrh <drh@noemail.net>
Thu, 30 Oct 2014 23:14:56 +0000 (23:14 +0000)
is only true for non-corrupt database files by adding an "|| CORRUPT_DB" term.

FossilOrigin-Name: 67adb44838f98805f86aecca634d9a3b07370b9e

manifest
manifest.uuid
src/btree.c

index c8c02f1b16ca55cd43be54c0bca681077cfd4a59..98a273f2e03dfce12fcccb51d5d8fff11b80ddb3 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Tweaks\sto\scomments\sin\sbtree.c.\s\sMinor\scode\schanges\sto\senhance\stestability.
-D 2014-10-30T20:48:44.305
+C Improvements\sto\sthe\swording\sof\ssome\scomments.\s\sReinstate\san\sassert()\sthat\nis\sonly\strue\sfor\snon-corrupt\sdatabase\sfiles\sby\sadding\san\s"||\sCORRUPT_DB"\sterm.
+D 2014-10-30T23:14:56.756
 F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
 F Makefile.in cf57f673d77606ab0f2d9627ca52a9ba1464146a
 F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
@@ -172,7 +172,7 @@ F src/auth.c b56c78ebe40a2110fd361379f7e8162d23f92240
 F src/backup.c 7f841396adfd47507ff670a471162d2bfcda3136
 F src/bitvec.c 19a4ba637bd85f8f63fc8c9bae5ade9fb05ec1cb
 F src/btmutex.c 49ca66250c7dfa844a4d4cb8272b87420d27d3a5
-F src/btree.c 8d955d8ef15dd724ea5ef1cb65c17151beaff1e0
+F src/btree.c 8f7ea96935c3b1db94439204965a6ec1392f7977
 F src/btree.h a79aa6a71e7f1055f01052b7f821bd1c2dce95c8
 F src/btreeInt.h 026d0129724e8f265fdc60d44ec240cf5a4e6179
 F src/build.c 67bb05b1077e0cdaccb2e36bfcbe7a5df9ed31e8
@@ -1209,7 +1209,7 @@ F tool/vdbe_profile.tcl 67746953071a9f8f2f668b73fe899074e2c6d8c1
 F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4
 F tool/warnings.sh 0abfd78ceb09b7f7c27c688c8e3fe93268a13b32
 F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
-P 08a27440f19b7fc884464832e6105af1bf008172
-R 984c5e022c7b2ce03eb5bed97ff43b89
+P c7d9aa3a1ce63e27ec94295601bc89fecf1e4977
+R 230a6673a34b4786200f7ae54e553a63
 U drh
-Z 333c45d7dfd79a88b32c00dfbc4028a5
+Z 52f8e66a5796212d2c4dbab1cb7cef14
index 8964ddfef6c1c5a6dc74c07db8176ed73fbfc2b8..fd375ba77a082343025d8113224ffbcad01cb9f2 100644 (file)
@@ -1 +1 @@
-c7d9aa3a1ce63e27ec94295601bc89fecf1e4977
\ No newline at end of file
+67adb44838f98805f86aecca634d9a3b07370b9e
\ No newline at end of file
index e56cdf81edece867164f267ce97f2b743a3dfc7d..2c3cbb4adc7a5acf7096118126fb2bdca451fb57 100644 (file)
@@ -6526,7 +6526,7 @@ static int balance_nonroot(
   u8 *apDiv[NB-1];             /* Divider cells in pParent */
   int cntNew[NB+2];            /* Index in aCell[] of cell after i-th page */
   int cntOld[NB+2];            /* Old index in aCell[] after i-th page */
-  int szNew[NB+2];             /* Combined size of cells place on i-th page */
+  int szNew[NB+2];             /* Combined size of cells placed on i-th page */
   u8 **apCell = 0;             /* All cells begin balanced */
   u16 *szCell;                 /* Local size of all cells in apCell[] */
   u8 *aSpace1;                 /* Space for copies of dividers cells */
@@ -6765,9 +6765,10 @@ static int balance_nonroot(
 
   /*
   ** The packing computed by the previous block is biased toward the siblings
-  ** on the left side.  The left siblings are always nearly full, while the
-  ** right-most sibling might be nearly empty.  This block of code attempts
-  ** to adjust the packing of siblings to get a better balance.
+  ** on the left side (siblings with smaller keys). The left siblings are
+  ** always nearly full, while the right-most sibling might be nearly empty.
+  ** The next block of code attempts to adjust the packing of siblings to
+  ** get a better balance.
   **
   ** This adjustment is more than an optimization.  The packing above might
   ** be so out of balance as to be illegal.  For example, the right-most
@@ -6796,18 +6797,14 @@ static int balance_nonroot(
     szNew[i-1] = szLeft;
   }
 
-  /* Either we found one or more cells (cntnew[0])>0) or pPage is
-  ** a virtual root page.  A virtual root page is when the real root
-  ** page is page 1 and we are the only child of that page.
-  **
-  ** UPDATE:  The assert() below is not necessarily true if the database
-  ** file is corrupt.  The corruption will be detected and reported later
-  ** in this procedure so there is no need to act upon it now.
+  /* Sanity check:  For a non-corrupt database file one of the follwing
+  ** must be true:
+  **    (1) We found one or more cells (cntNew[0])>0), or
+  **    (2) pPage is a virtual root page.  A virtual root page is when
+  **        the real root page is page 1 and we are the only child of
+  **        that page.
   */
-#if 0
-  assert( cntNew[0]>0 || (pParent->pgno==1 && pParent->nCell==0) );
-#endif
-
+  assert( cntNew[0]>0 || (pParent->pgno==1 && pParent->nCell==0) || CORRUPT_DB);
   TRACE(("BALANCE: old: %d(nc=%d) %d(nc=%d) %d(nc=%d)\n",
     apOld[0]->pgno, apOld[0]->nCell,
     nOld>=2 ? apOld[1]->pgno : 0, nOld>=2 ? apOld[1]->nCell : 0,