more TDB
This commit is contained in:
parent
ac620c0dc2
commit
6a8424b671
|
@ -49,13 +49,9 @@ int tdbPageCreate(int pageSize, SPage **ppPage, void *(*xMalloc)(void *, size_t)
|
||||||
pPage->pData = ptr;
|
pPage->pData = ptr;
|
||||||
pPage->pageSize = pageSize;
|
pPage->pageSize = pageSize;
|
||||||
if (pageSize < 65536) {
|
if (pageSize < 65536) {
|
||||||
pPage->szOffset = 2;
|
pPage->pPageMethods = &pageMethods;
|
||||||
pPage->szPageHdr = sizeof(SPageHdr);
|
|
||||||
pPage->szFreeCell = sizeof(SFreeCell);
|
|
||||||
} else {
|
} else {
|
||||||
pPage->szOffset = 3;
|
pPage->pPageMethods = &pageLargeMethods;
|
||||||
pPage->szPageHdr = sizeof(SPageHdrL);
|
|
||||||
pPage->szFreeCell = sizeof(SFreeCellL);
|
|
||||||
}
|
}
|
||||||
TDB_INIT_PAGE_LOCK(pPage);
|
TDB_INIT_PAGE_LOCK(pPage);
|
||||||
|
|
||||||
|
@ -249,6 +245,9 @@ static inline void setPageCellOffset(SPage *pPage, int idx, int offset) {
|
||||||
}
|
}
|
||||||
|
|
||||||
SPageMethods pageMethods = {
|
SPageMethods pageMethods = {
|
||||||
|
2, // szOffset
|
||||||
|
sizeof(SPageHdr), // szPageHdr
|
||||||
|
sizeof(SFreeCell), // szFreeCell
|
||||||
getPageFlags, // getPageFlags
|
getPageFlags, // getPageFlags
|
||||||
setPageFlags, // setFlagsp
|
setPageFlags, // setFlagsp
|
||||||
getPageCellNum, // getCellNum
|
getPageCellNum, // getCellNum
|
||||||
|
|
|
@ -24,6 +24,9 @@ typedef u8 SCell;
|
||||||
|
|
||||||
// PAGE APIS implemented
|
// PAGE APIS implemented
|
||||||
typedef struct {
|
typedef struct {
|
||||||
|
int szOffset;
|
||||||
|
int szPageHdr;
|
||||||
|
int szFreeCell;
|
||||||
// flags
|
// flags
|
||||||
u16 (*getFlags)(SPage *);
|
u16 (*getFlags)(SPage *);
|
||||||
void (*setFlags)(SPage *, u16);
|
void (*setFlags)(SPage *, u16);
|
||||||
|
@ -56,9 +59,7 @@ struct SPage {
|
||||||
pthread_spinlock_t lock;
|
pthread_spinlock_t lock;
|
||||||
u8 *pData;
|
u8 *pData;
|
||||||
int pageSize;
|
int pageSize;
|
||||||
u8 szOffset;
|
SPageMethods *pPageMethods;
|
||||||
u8 szPageHdr;
|
|
||||||
u8 szFreeCell;
|
|
||||||
// Fields below used by pager and am
|
// Fields below used by pager and am
|
||||||
u8 szAmHdr;
|
u8 szAmHdr;
|
||||||
u8 *pPageHdr;
|
u8 *pPageHdr;
|
||||||
|
@ -75,7 +76,6 @@ struct SPage {
|
||||||
int nOverflow;
|
int nOverflow;
|
||||||
SCell *apOvfl[4];
|
SCell *apOvfl[4];
|
||||||
int aiOvfl[4];
|
int aiOvfl[4];
|
||||||
SPageMethods *pPageMethods;
|
|
||||||
// Fields used by SPCache
|
// Fields used by SPCache
|
||||||
TDB_PCACHE_PAGE
|
TDB_PCACHE_PAGE
|
||||||
};
|
};
|
||||||
|
|
|
@ -67,6 +67,9 @@ static inline void setPageCellOffset(SPage *pPage, int idx, int offset) {
|
||||||
}
|
}
|
||||||
|
|
||||||
SPageMethods pageLargeMethods = {
|
SPageMethods pageLargeMethods = {
|
||||||
|
3, // szOffset
|
||||||
|
sizeof(SPageHdrL), // szPageHdr
|
||||||
|
sizeof(SFreeCellL), // szFreeCell
|
||||||
getPageFlags, // getPageFlags
|
getPageFlags, // getPageFlags
|
||||||
setPageFlags, // setFlagsp
|
setPageFlags, // setFlagsp
|
||||||
getPageCellNum, // getCellNum
|
getPageCellNum, // getCellNum
|
||||||
|
|
Loading…
Reference in New Issue