fix a TDB balance bug
This commit is contained in:
parent
6888971563
commit
bf355e705a
|
@ -582,14 +582,14 @@ static int tdbBtreeBalanceNonRoot(SBTree *pBt, SPage *pParent, int idx, TXN *pTx
|
|||
SCell *pCell;
|
||||
int szLCell, szRCell;
|
||||
|
||||
// balance page (iNew) and (iNew-1)
|
||||
for (;;) {
|
||||
pCell = tdbPageGetCell(pOlds[infoNews[iNew - 1].iPage], infoNews[iNew - 1].oIdx);
|
||||
|
||||
if (childNotLeaf) {
|
||||
szLCell = szRCell = tdbBtreeCellSize(pOlds[infoNews[iNew - 1].iPage], pCell);
|
||||
} else {
|
||||
szLCell = tdbBtreeCellSize(pOlds[infoNews[iNew - 1].iPage], pCell);
|
||||
|
||||
if (!childNotLeaf) {
|
||||
szRCell = szLCell;
|
||||
} else {
|
||||
int iPage = infoNews[iNew - 1].iPage;
|
||||
int oIdx = infoNews[iNew - 1].oIdx + 1;
|
||||
SPage *pPage;
|
||||
|
|
|
@ -202,6 +202,8 @@ TEST(tdb_test, simple_test) {
|
|||
ret = tdbDbcOpen(pDb, &pDBC, NULL);
|
||||
GTEST_ASSERT_EQ(ret, 0);
|
||||
|
||||
tdbDbcMoveToFirst(pDBC);
|
||||
|
||||
for (;;) {
|
||||
ret = tdbDbcNext(pDBC, &pKey, &kLen, &pVal, &vLen);
|
||||
if (ret < 0) break;
|
||||
|
@ -283,6 +285,8 @@ TEST(tdb_test, simple_test2) {
|
|||
ret = tdbDbcOpen(pDb, &pDBC, NULL);
|
||||
GTEST_ASSERT_EQ(ret, 0);
|
||||
|
||||
tdbDbcMoveToFirst(pDBC);
|
||||
|
||||
for (;;) {
|
||||
ret = tdbDbcNext(pDBC, &pKey, &kLen, &pVal, &vLen);
|
||||
if (ret < 0) break;
|
||||
|
@ -341,7 +345,7 @@ TEST(tdb_test, simple_delete1) {
|
|||
GTEST_ASSERT_EQ(ret, 0);
|
||||
|
||||
// open database
|
||||
ret = tdbDbOpen("db.db", -1, -1, NULL, pEnv, &pDb);
|
||||
ret = tdbDbOpen("db.db", -1, -1, tKeyCmpr, pEnv, &pDb);
|
||||
GTEST_ASSERT_EQ(ret, 0);
|
||||
|
||||
tdbTxnOpen(&txn, 0, poolMalloc, poolFree, pPool, TDB_TXN_WRITE | TDB_TXN_READ_UNCOMMITTED);
|
||||
|
|
Loading…
Reference in New Issue