This commit is contained in:
Hongze Cheng 2022-02-28 07:42:20 +00:00
parent 7ca2cf2e18
commit c4dd34b190
4 changed files with 14 additions and 4 deletions

View File

@ -26,6 +26,7 @@ int tdbDbOpen(const char *fname, int keyLen, int valLen, FKeyComparator keyCmprF
int ret; int ret;
char fFullName[TDB_FILENAME_LEN]; char fFullName[TDB_FILENAME_LEN];
SPage * pPage; SPage * pPage;
SPgno pgno;
*ppDb = NULL; *ppDb = NULL;
@ -50,7 +51,12 @@ int tdbDbOpen(const char *fname, int keyLen, int valLen, FKeyComparator keyCmprF
// TODO: Search if the DB already in the file // TODO: Search if the DB already in the file
if (1 /*todo: db should be created*/) { if (1 /*todo: db should be created*/) {
ret = tdbPFileAllocPage(pFile, &pPage); ret = tdbPFileAllocPage(pFile, &pPage, &pgno);
if (ret < 0) {
return -1;
}
ret = tdbPFileWrite(pFile, pPage);
if (ret < 0) { if (ret < 0) {
return -1; return -1;
} }

View File

@ -109,14 +109,13 @@ SPage *tdbPFileGet(SPFile *pFile, SPgno pgno) {
return pPage; return pPage;
} }
int tdbPFileWrite(SPFile *pFile, SPage *pPage) { int tdbPFileWrite(SPFile *pFile, SPage *pPage) {
// TODO: if the page is not in journal, write to journal // TODO: if the page is not in journal, write to journal
// mark the page as dirty // mark the page as dirty
return 0; return 0;
} }
int tdbPFileAllocPage(SPFile *pFile, SPage **ppPage) { int tdbPFileAllocPage(SPFile *pFile, SPage **ppPage, SPgno *ppgno) {
SPage *pPage; SPage *pPage;
SPgno pgno; SPgno pgno;
@ -125,10 +124,12 @@ int tdbPFileAllocPage(SPFile *pFile, SPage **ppPage) {
pPage = tdbPFileGet(pFile, pgno); pPage = tdbPFileGet(pFile, pgno);
ASSERT(pPage != NULL); ASSERT(pPage != NULL);
} else { } else {
/* TODO: allocate from the free list */
ASSERT(0); ASSERT(0);
} }
*ppPage = pPage; *ppPage = pPage;
*ppgno = pgno;
return 0; return 0;
} }

View File

@ -124,8 +124,11 @@ typedef TD_DLIST_NODE(SPgFile) SPgFileListNode;
typedef int (*FKeyComparator)(const void *pKey1, int kLen1, const void *pKey2, int kLen2); typedef int (*FKeyComparator)(const void *pKey1, int kLen1, const void *pKey2, int kLen2);
#define TDB_JOURNAL_NAME "tdb.journal" #define TDB_JOURNAL_NAME "tdb.journal"
#define TDB_FILENAME_LEN 128 #define TDB_FILENAME_LEN 128
#define TDB_DEFAULT_FANOUT 6
#include "tdbUtil.h" #include "tdbUtil.h"
#include "tdbBtree.h" #include "tdbBtree.h"

View File

@ -26,7 +26,7 @@ int tdbPFileOpen(SPCache *pCache, const char *fileName, SPFile **ppFile);
int tdbPFileClose(SPFile *pFile); int tdbPFileClose(SPFile *pFile);
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); int tdbPFileAllocPage(SPFile *pFile, SPage **ppPage, SPgno *ppgno);
int tdbPFileBegin(SPFile *pFile); int tdbPFileBegin(SPFile *pFile);
int tdbPFileCommit(SPFile *pFile); int tdbPFileCommit(SPFile *pFile);
int tdbPFileRollback(SPFile *pFile); int tdbPFileRollback(SPFile *pFile);