Improvements to the wording of some comments. Reinstate an assert() that

is only true for non-corrupt database files by adding an "|| CORRUPT_DB" term.

FossilOrigin-Name: 67adb44838f98805f86aecca634d9a3b07370b9e
This commit is contained in:
drh 2014-10-30 23:14:56 +00:00
parent ba0f999418
commit 2a0df92542
3 changed files with 19 additions and 22 deletions

View File

@ -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

View File

@ -1 +1 @@
c7d9aa3a1ce63e27ec94295601bc89fecf1e4977
67adb44838f98805f86aecca634d9a3b07370b9e

View 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,