more TDB
This commit is contained in:
parent
24bf28e293
commit
bc00eb0e87
|
@ -51,7 +51,18 @@ int tdbPageDestroy(SPage *pPage, void (*xFree)(void *arg, void *ptr), void *arg)
|
||||||
}
|
}
|
||||||
|
|
||||||
int tdbPageInsertCell(SPage *pPage, int idx, SCell *pCell, int szCell) {
|
int tdbPageInsertCell(SPage *pPage, int idx, SCell *pCell, int szCell) {
|
||||||
|
int ret;
|
||||||
|
SCell *pTarget;
|
||||||
|
|
||||||
|
if (pPage->nOverflow || szCell + TDB_PAGE_CELL_OFFSET_SIZE(pPage) > pPage->nFree) {
|
||||||
// TODO
|
// TODO
|
||||||
|
} else {
|
||||||
|
ret = tdbPageAllocate(pPage, szCell, &pTarget);
|
||||||
|
if (ret < 0) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -61,7 +72,20 @@ int tdbPageDropCell(SPage *pPage, int idx) {
|
||||||
}
|
}
|
||||||
|
|
||||||
static int tdbPageAllocate(SPage *pPage, int size, SCell **ppCell) {
|
static int tdbPageAllocate(SPage *pPage, int size, SCell **ppCell) {
|
||||||
// TODO
|
SCell *pCell;
|
||||||
|
int szOffset;
|
||||||
|
|
||||||
|
szOffset = TDB_PAGE_CELL_OFFSET_SIZE(pPage);
|
||||||
|
ASSERT(pPage->nFree > size + szOffset);
|
||||||
|
|
||||||
|
if (pPage->pFreeEnd - pPage->pFreeStart > size + szOffset) {
|
||||||
|
pPage->pFreeEnd -= size;
|
||||||
|
pPage->pFreeStart += szOffset;
|
||||||
|
|
||||||
|
pCell = pPage->pFreeEnd;
|
||||||
|
} else {
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -69,3 +93,8 @@ static int tdbPageFree(SPage *pPage, int idx, SCell *pCell, int size) {
|
||||||
// TODO
|
// TODO
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int tdbPageDefragment(SPage *pPage) {
|
||||||
|
// TODO
|
||||||
|
return 0;
|
||||||
|
}
|
|
@ -44,8 +44,11 @@ struct SPage {
|
||||||
SPageHdr *pPageHdr;
|
SPageHdr *pPageHdr;
|
||||||
SPageFtr *pPageFtr;
|
SPageFtr *pPageFtr;
|
||||||
u16 *aCellIdx;
|
u16 *aCellIdx;
|
||||||
|
u8 *pFreeStart;
|
||||||
|
u8 *pFreeEnd;
|
||||||
int kLen;
|
int kLen;
|
||||||
int vLen;
|
int vLen;
|
||||||
|
int nFree;
|
||||||
int maxLocal;
|
int maxLocal;
|
||||||
int minLocal;
|
int minLocal;
|
||||||
int nOverflow;
|
int nOverflow;
|
||||||
|
|
Loading…
Reference in New Issue