more TDB
This commit is contained in:
parent
7ca2cf2e18
commit
c4dd34b190
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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"
|
||||||
|
|
|
@ -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);
|
||||||
|
|
Loading…
Reference in New Issue