diff --git a/source/libs/tdb/src/db/tdbBtree.c b/source/libs/tdb/src/db/tdbBtree.c index a3d8c3f53b..44182c3367 100644 --- a/source/libs/tdb/src/db/tdbBtree.c +++ b/source/libs/tdb/src/db/tdbBtree.c @@ -25,8 +25,13 @@ struct SBTree { struct SBtCursor { SBTree *pBt; + int8_t iPage; }; +typedef struct SBPage { + /* TODO */ +} SBPage; + int tdbBtreeOpen(SPgno root, SBTree **ppBt) { *ppBt = NULL; /* TODO */ @@ -38,6 +43,25 @@ int tdbBtreeClose(SBTree *pBt) { return 0; } +int tdbBtreeCursor(SBTree *pBt, SBtCursor *pCur) { + pCur->pBt = pBt; + pCur->iPage = -1; + return 0; +} + +int tdbBtreeCursorMoveTo(SBtCursor *pCur) { + /* TODO */ + return 0; +} + +static int tdbBtreeCursorMoveToRoot(SBtCursor *pCur) { + SPFile *pFile = pCur->pBt->pFile; + + tdbPFileGet(pFile, pCur->pBt->root); + /* TODO */ + return 0; +} + #if 0 struct SBtCursor { SBTree *pBtree; diff --git a/source/libs/tdb/src/db/tdbPFile.c b/source/libs/tdb/src/db/tdbPFile.c index bf4bda83be..5e70667b8f 100644 --- a/source/libs/tdb/src/db/tdbPFile.c +++ b/source/libs/tdb/src/db/tdbPFile.c @@ -70,6 +70,19 @@ int tdbPFileClose(SPFile *pFile) { return 0; } +SPgHdr *tdbPFileGet(SPFile *pFile, SPgno pgno) { + SPCache *pCache; + SPgid pgid; + SPgHdr * pPage; + + pCache = pFile->pCache; + + pPage = tdbPCacheFetch(pCache, &pgid, true); + tdbPCacheFetchFinish(pCache, pPage); + + return pPage; +} + int tdbPFileBegin(SPFile *pFile) { // TODO return 0; diff --git a/source/libs/tdb/src/inc/tdbPFile.h b/source/libs/tdb/src/inc/tdbPFile.h index e1133b9951..f0cad63568 100644 --- a/source/libs/tdb/src/inc/tdbPFile.h +++ b/source/libs/tdb/src/inc/tdbPFile.h @@ -22,12 +22,12 @@ extern "C" { typedef struct SPFile SPFile; -int tdbPFileOpen(SPCache *pCache, const char *fileName, SPFile **ppFile); -int tdbPFileClose(SPFile *pFile); -void *tdbPFileGet(SPFile *pFile, SPgno pgno); -int tdbPFileBegin(SPFile *pFile); -int tdbPFileCommit(SPFile *pFile); -int tdbPFileRollback(SPFile *pFile); +int tdbPFileOpen(SPCache *pCache, const char *fileName, SPFile **ppFile); +int tdbPFileClose(SPFile *pFile); +SPgHdr *tdbPFileGet(SPFile *pFile, SPgno pgno); +int tdbPFileBegin(SPFile *pFile); +int tdbPFileCommit(SPFile *pFile); +int tdbPFileRollback(SPFile *pFile); #ifdef __cplusplus }