more TDB
This commit is contained in:
parent
df12ae0d79
commit
3abd4b2e67
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue