more TDB
This commit is contained in:
parent
aee8b60324
commit
d7b54201bc
|
@ -520,7 +520,7 @@ static int tdbBtreeBalanceNonRoot(SBTree *pBt, SPage *pParent, int idx) {
|
||||||
}
|
}
|
||||||
// copy the parent key out if child pages are not leaf page
|
// copy the parent key out if child pages are not leaf page
|
||||||
childLeaf = TDB_BTREE_PAGE_IS_LEAF(TDB_BTREE_PAGE_GET_FLAGS(pOlds[0]));
|
childLeaf = TDB_BTREE_PAGE_IS_LEAF(TDB_BTREE_PAGE_GET_FLAGS(pOlds[0]));
|
||||||
if (childLeaf) {
|
if (!childLeaf) {
|
||||||
for (int i = 0; i < nOlds - 1; i++) {
|
for (int i = 0; i < nOlds - 1; i++) {
|
||||||
pCell = tdbPageGetCell(pParent, sIdx + i);
|
pCell = tdbPageGetCell(pParent, sIdx + i);
|
||||||
|
|
||||||
|
@ -564,8 +564,8 @@ static int tdbBtreeBalanceNonRoot(SBTree *pBt, SPage *pParent, int idx) {
|
||||||
if (infoNews[nNews].size + cellBytes > TDB_PAGE_USABLE_SIZE(pPage)) {
|
if (infoNews[nNews].size + cellBytes > TDB_PAGE_USABLE_SIZE(pPage)) {
|
||||||
// page is full, use a new page
|
// page is full, use a new page
|
||||||
nNews++;
|
nNews++;
|
||||||
// for a child leaf case, this cell is used as the new divider cell to parent
|
// for a internal leaf case, this cell is used as the new divider cell to parent
|
||||||
if (childLeaf) continue;
|
if (!childLeaf) continue;
|
||||||
}
|
}
|
||||||
infoNews[nNews].cnt++;
|
infoNews[nNews].cnt++;
|
||||||
infoNews[nNews].size += cellBytes;
|
infoNews[nNews].size += cellBytes;
|
||||||
|
@ -573,8 +573,8 @@ static int tdbBtreeBalanceNonRoot(SBTree *pBt, SPage *pParent, int idx) {
|
||||||
infoNews[nNews].oIdx = oIdx;
|
infoNews[nNews].oIdx = oIdx;
|
||||||
}
|
}
|
||||||
|
|
||||||
// For child leaf pages
|
// For internal pages
|
||||||
if (childLeaf && oPage < nOlds - 1) {
|
if (!childLeaf && oPage < nOlds - 1) {
|
||||||
if (infoNews[nNews].size + szDivCell[oPage] + TDB_PAGE_OFFSET_SIZE(pPage) > TDB_PAGE_USABLE_SIZE(pPage)) {
|
if (infoNews[nNews].size + szDivCell[oPage] + TDB_PAGE_OFFSET_SIZE(pPage) > TDB_PAGE_USABLE_SIZE(pPage)) {
|
||||||
nNews++;
|
nNews++;
|
||||||
}
|
}
|
||||||
|
@ -594,6 +594,7 @@ static int tdbBtreeBalanceNonRoot(SBTree *pBt, SPage *pParent, int idx) {
|
||||||
int nCells;
|
int nCells;
|
||||||
int cellBytes;
|
int cellBytes;
|
||||||
|
|
||||||
|
if (childLeaf) { // child leaf
|
||||||
pPage = pOlds[infoNews[iNew - 1].oPage];
|
pPage = pOlds[infoNews[iNew - 1].oPage];
|
||||||
nCells = TDB_PAGE_TOTAL_CELLS(pPage);
|
nCells = TDB_PAGE_TOTAL_CELLS(pPage);
|
||||||
|
|
||||||
|
@ -616,6 +617,9 @@ static int tdbBtreeBalanceNonRoot(SBTree *pBt, SPage *pParent, int idx) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
} else { // internal leaf
|
||||||
|
// TODO
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue