more TDB
This commit is contained in:
parent
2586ac0b03
commit
5fdfb80855
|
@ -49,19 +49,9 @@ int tdbDbOpen(const char *fname, int keyLen, int valLen, FKeyComparator keyCmprF
|
|||
|
||||
ASSERT(pFile != NULL);
|
||||
|
||||
// TODO: Search if the DB already in the file
|
||||
if (1 /*todo: db should be created*/) {
|
||||
ret = tdbPFileAllocPage(pFile, &pPage, &pgno);
|
||||
if (ret < 0) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
ret = tdbPFileWrite(pFile, pPage);
|
||||
if (ret < 0) {
|
||||
return -1;
|
||||
}
|
||||
} else {
|
||||
ASSERT(0);
|
||||
ret = tdbPFileOpenDB(pFile, &pgno, true);
|
||||
if (ret < 0) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
// pDb->pBt
|
||||
|
|
|
@ -31,6 +31,10 @@ struct SPFile {
|
|||
u8 inTran;
|
||||
};
|
||||
|
||||
typedef struct {
|
||||
/* TODO */
|
||||
} SFileHdr;
|
||||
|
||||
static int tdbPFileReadPage(SPFile *pFile, SPage *pPage);
|
||||
|
||||
int tdbPFileOpen(SPCache *pCache, const char *fileName, SPFile **ppFile) {
|
||||
|
@ -87,6 +91,33 @@ int tdbPFileClose(SPFile *pFile) {
|
|||
return 0;
|
||||
}
|
||||
|
||||
int tdbPFileOpenDB(SPFile *pFile, SPgno *ppgno, bool toCreate) {
|
||||
SPgno pgno;
|
||||
SPage *pPage;
|
||||
int ret;
|
||||
|
||||
{
|
||||
// TODO: try to search the main DB to get the page number
|
||||
pgno = 0;
|
||||
}
|
||||
|
||||
if (pgno == 0 && toCreate) {
|
||||
ret = tdbPFileAllocPage(pFile, &pPage, &pgno);
|
||||
if (ret < 0) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
// tdbPFileZeroPage(pPage);
|
||||
ret = tdbPFileWrite(pFile, pPage);
|
||||
if (ret < 0) {
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
*ppgno = pgno;
|
||||
return 0;
|
||||
}
|
||||
|
||||
SPage *tdbPFileGet(SPFile *pFile, SPgno pgno) {
|
||||
SPgid pgid;
|
||||
SPage *pPage;
|
||||
|
|
|
@ -24,6 +24,7 @@ typedef struct SPFile SPFile;
|
|||
|
||||
int tdbPFileOpen(SPCache *pCache, const char *fileName, SPFile **ppFile);
|
||||
int tdbPFileClose(SPFile *pFile);
|
||||
int tdbPFileOpenDB(SPFile *pFile, SPgno *ppgno, bool toCreate);
|
||||
SPage *tdbPFileGet(SPFile *pFile, SPgno pgno);
|
||||
int tdbPFileWrite(SPFile *pFile, SPage *pPage);
|
||||
int tdbPFileAllocPage(SPFile *pFile, SPage **ppPage, SPgno *ppgno);
|
||||
|
|
Loading…
Reference in New Issue