From 0a372a735909d05c9b03f0ceb6339eda8d822949 Mon Sep 17 00:00:00 2001 From: Hongze Cheng Date: Thu, 10 Feb 2022 07:08:26 +0000 Subject: [PATCH] more TDB --- source/libs/tdb/src/db/btree.c | 33 +++++++++++++++++++++++++++++++- source/libs/tdb/src/db/tdb.c | 9 ++++++++- source/libs/tdb/src/inc/btree.h | 2 +- source/libs/tdb/src/inc/pgfile.h | 1 - source/libs/tdb/src/inc/tdbInt.h | 2 ++ 5 files changed, 43 insertions(+), 4 deletions(-) diff --git a/source/libs/tdb/src/db/btree.c b/source/libs/tdb/src/db/btree.c index 746ca6a99a..a37711e399 100644 --- a/source/libs/tdb/src/db/btree.c +++ b/source/libs/tdb/src/db/btree.c @@ -17,4 +17,35 @@ struct SBtCursor { // TODO -}; \ No newline at end of file +}; + +static int btreeCreate(SBTree **pBt); +static int btreeDestroy(SBTree *pBt); + +int btreeOpen(SBTree **ppBt, SPgFile *pPgFile) { + SBTree *pBt; + int ret; + + ret = btreeCreate(&pBt); + if (ret != 0) { + return -1; + } + + *ppBt = pBt; + return 0; +} + +int btreeClose(SBTree *pBt) { + // TODO + return 0; +} + +static int btreeCreate(SBTree **pBt) { + // TODO + return 0; +} + +static int btreeDestroy(SBTree *pBt) { + // TODO + return 0; +} \ No newline at end of file diff --git a/source/libs/tdb/src/db/tdb.c b/source/libs/tdb/src/db/tdb.c index bd8d7ec1f7..2e2e772336 100644 --- a/source/libs/tdb/src/db/tdb.c +++ b/source/libs/tdb/src/db/tdb.c @@ -16,7 +16,7 @@ #include "tdbInt.h" struct STDb { - SBTree btree; // current access method + SBTree * pBt; // current access method SPgFile *pPgFile; // backend page file this DB is using TENV * pEnv; // TENV containing the DB }; @@ -47,6 +47,7 @@ int tdbOpen(TDB **ppDb, const char *fname, const char *dbname, TENV *pEnv) { uint8_t fileid[TDB_FILE_ID_LEN]; SPgFile * pPgFile; SPgCache *pPgCache; + SBTree * pBt; // Create DB if DB handle is not created yet if (ppDb == NULL) { @@ -78,6 +79,7 @@ int tdbOpen(TDB **ppDb, const char *fname, const char *dbname, TENV *pEnv) { } // Check if the SPgFile already opened + tdbGnrtFileID(fname, fileid, false); pPgFile = tdbEnvGetPageFile(pEnv, fileid); if (pPgFile == NULL) { pPgCache = tdbEnvGetPgCache(pEnv); @@ -89,6 +91,11 @@ int tdbOpen(TDB **ppDb, const char *fname, const char *dbname, TENV *pEnv) { pDb->pPgFile = pPgFile; // open the access method (TODO) + if (btreeOpen(&pBt, pPgFile) != 0) { + return -1; + } + + pDb->pBt = pBt; return 0; } diff --git a/source/libs/tdb/src/inc/btree.h b/source/libs/tdb/src/inc/btree.h index 2aa2f4528f..ec73f3651b 100644 --- a/source/libs/tdb/src/inc/btree.h +++ b/source/libs/tdb/src/inc/btree.h @@ -24,7 +24,7 @@ typedef struct SBTree SBTree; typedef struct SBtCursor SBtCursor; // SBTree -int btreeOpen(SBTree **ppBt); +int btreeOpen(SBTree **ppBt, SPgFile *pPgFile); int btreeClose(SBTree *pBt); // SBtCursor diff --git a/source/libs/tdb/src/inc/pgfile.h b/source/libs/tdb/src/inc/pgfile.h index cb954ba946..f248f3c953 100644 --- a/source/libs/tdb/src/inc/pgfile.h +++ b/source/libs/tdb/src/inc/pgfile.h @@ -20,7 +20,6 @@ extern "C" { #endif -typedef struct SPgFile SPgFile; struct SPgFile { char * fname; // backend file name uint8_t fileid[TDB_FILE_ID_LEN]; // file id diff --git a/source/libs/tdb/src/inc/tdbInt.h b/source/libs/tdb/src/inc/tdbInt.h index 74fed019e7..879a4f4f66 100644 --- a/source/libs/tdb/src/inc/tdbInt.h +++ b/source/libs/tdb/src/inc/tdbInt.h @@ -25,6 +25,8 @@ extern "C" { #endif +typedef struct SPgFile SPgFile; + // pgno_t typedef int32_t pgno_t; #define TDB_IVLD_PGNO ((pgno_t)-1)