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

more TDB

上级 2586ac0b
...@@ -49,19 +49,9 @@ int tdbDbOpen(const char *fname, int keyLen, int valLen, FKeyComparator keyCmprF ...@@ -49,19 +49,9 @@ 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*/) { if (ret < 0) {
ret = tdbPFileAllocPage(pFile, &pPage, &pgno); return -1;
if (ret < 0) {
return -1;
}
ret = tdbPFileWrite(pFile, pPage);
if (ret < 0) {
return -1;
}
} else {
ASSERT(0);
} }
// pDb->pBt // pDb->pBt
......
...@@ -31,6 +31,10 @@ struct SPFile { ...@@ -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) { ...@@ -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; ...@@ -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);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册