This commit is contained in:
Hongze Cheng 2022-03-22 06:08:28 +00:00
parent df12ae0d79
commit 3abd4b2e67
2 changed files with 16 additions and 1 deletions

View File

@ -602,7 +602,7 @@ static int tdbBtreeBalanceNonRoot(SBTree *pBt, SPage *pParent, int idx) {
// TODO: sort the page according to the page number
}
{ // Do the actual cell distribution
{ // Do the real cell distribution
SPage *pTPage[2];
int tPage, tIdx, iOld;
@ -650,6 +650,20 @@ static int tdbBtreeBalanceNonRoot(SBTree *pBt, SPage *pParent, int idx) {
}
}
{ // Insert records in parent page
int cIdx;
int szCell;
SCell pCell[128]; // TODO
SCellDecoder cd;
for (int iNew = 0; iNew < nNews; iNew++) {
tdbBtreeDecodeCell(pNews[iNew], tdbPageGetCell(pNews[iNew], TDB_PAGE_TOTAL_CELLS(pNews[iNew]) - 1), &cd);
tdbBtreeEncodeCell(pParent, cd.pKey, cd.kLen, (void *)&TDB_PAGE_PGNO(pNews[iNew]), sizeof(SPgno), pCell, &szCell);
tdbPageInsertCell(pParent, cIdx, pCell, szCell);
}
}
return 0;
}

View File

@ -100,6 +100,7 @@ struct SPage {
// APIs
#define TDB_PAGE_TOTAL_CELLS(pPage) ((pPage)->nOverflow + (pPage)->pPageMethods->getCellNum(pPage))
#define TDB_PAGE_USABLE_SIZE(pPage) ((u8 *)(pPage)->pPageFtr - (pPage)->pCellIdx)
#define TDB_PAGE_PGNO(pPage) ((pPage)->pgid.pgno)
#define TDB_BYTES_CELL_TAKEN(pPage, pCell) ((*(pPage)->xCellSize)(pPage, pCell) + (pPage)->pPageMethods->szOffset)
int tdbPageCreate(int pageSize, SPage **ppPage, void *(*xMalloc)(void *, size_t), void *arg);