提交 5fdfb808 编写于 作者: H Hongze Cheng

more TDB

上级 2586ac0b
......@@ -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);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册