提交 d7b54201 编写于 作者: H Hongze Cheng

more TDB

上级 aee8b603
......@@ -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
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++) {
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)) {
// page is full, use a new page
nNews++;
// for a child leaf case, this cell is used as the new divider cell to parent
if (childLeaf) continue;
// for a internal leaf case, this cell is used as the new divider cell to parent
if (!childLeaf) continue;
}
infoNews[nNews].cnt++;
infoNews[nNews].size += cellBytes;
......@@ -573,8 +573,8 @@ static int tdbBtreeBalanceNonRoot(SBTree *pBt, SPage *pParent, int idx) {
infoNews[nNews].oIdx = oIdx;
}
// For child leaf pages
if (childLeaf && oPage < nOlds - 1) {
// For internal pages
if (!childLeaf && oPage < nOlds - 1) {
if (infoNews[nNews].size + szDivCell[oPage] + TDB_PAGE_OFFSET_SIZE(pPage) > TDB_PAGE_USABLE_SIZE(pPage)) {
nNews++;
}
......@@ -594,6 +594,7 @@ static int tdbBtreeBalanceNonRoot(SBTree *pBt, SPage *pParent, int idx) {
int nCells;
int cellBytes;
if (childLeaf) { // child leaf
pPage = pOlds[infoNews[iNew - 1].oPage];
nCells = TDB_PAGE_TOTAL_CELLS(pPage);
......@@ -616,6 +617,9 @@ static int tdbBtreeBalanceNonRoot(SBTree *pBt, SPage *pParent, int idx) {
break;
}
}
} else { // internal leaf
// TODO
}
}
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册