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