From 4be337db73291d19543be906d963a59fc73cca5d Mon Sep 17 00:00:00 2001 From: Hongze Cheng Date: Mon, 28 Feb 2022 05:56:04 +0000 Subject: [PATCH] more --- source/libs/tdb/src/db/tdbBtree.c | 2 -- source/libs/tdb/src/db/tdbDb.c | 19 ++++++++++++++----- source/libs/tdb/src/db/tdbEnv.c | 16 +++++++++++----- source/libs/tdb/src/inc/tdbDb.h | 2 +- source/libs/tdb/src/inc/tdbInt.h | 2 ++ source/libs/tdb/test/tdbTest.cpp | 4 ++-- 6 files changed, 30 insertions(+), 15 deletions(-) diff --git a/source/libs/tdb/src/db/tdbBtree.c b/source/libs/tdb/src/db/tdbBtree.c index c557c67b33..3c079b1b26 100644 --- a/source/libs/tdb/src/db/tdbBtree.c +++ b/source/libs/tdb/src/db/tdbBtree.c @@ -17,8 +17,6 @@ #define BTREE_MAX_DEPTH 20 -typedef int (*FKeyComparator)(const void *pKey1, int kLen1, const void *pKey2, int kLen2); - struct SBTree { SPgno root; int keyLen; diff --git a/source/libs/tdb/src/db/tdbDb.c b/source/libs/tdb/src/db/tdbDb.c index a85ff46e57..e5c6e19163 100644 --- a/source/libs/tdb/src/db/tdbDb.c +++ b/source/libs/tdb/src/db/tdbDb.c @@ -16,15 +16,24 @@ #include "tdbInt.h" struct STDb { - STEnv *pEnv; - /* TODO */ + STEnv * pEnv; + SBTree *pBt; }; -int tdbDbOpen(STDb **ppDb) { - STDb *pDb; +int tdbDbOpen(const char *fname, int keyLen, int valLen, FKeyComparator keyCmprFn, STEnv *pEnv, STDb **ppDb) { + STDb * pDb; + SPFile *pFile; *ppDb = NULL; - /* TODO */ + + pDb = (STDb *)calloc(1, sizeof(*pDb)); + if (pDb == NULL) { + return -1; + } + + pDb->pEnv = pEnv; + + *ppDb = pDb; return 0; } diff --git a/source/libs/tdb/src/db/tdbEnv.c b/source/libs/tdb/src/db/tdbEnv.c index ca36830b16..d61ac704d7 100644 --- a/source/libs/tdb/src/db/tdbEnv.c +++ b/source/libs/tdb/src/db/tdbEnv.c @@ -22,10 +22,11 @@ struct STEnv { }; int tdbEnvOpen(const char *rootDir, int pageSize, int cacheSize, STEnv **ppEnv) { - STEnv * pEnv; - int dsize; - int zsize; - uint8_t *pPtr; + STEnv *pEnv; + int dsize; + int zsize; + u8 * pPtr; + int ret; *ppEnv = NULL; @@ -45,7 +46,12 @@ int tdbEnvOpen(const char *rootDir, int pageSize, int cacheSize, STEnv **ppEnv) pEnv->jfd = -1; - tdbPCacheOpen(pageSize, cacheSize, 0, &(pEnv->pCache)); + ret = tdbPCacheOpen(pageSize, cacheSize, 0, &(pEnv->pCache)); + if (ret < 0) { + return -1; + } + + mkdir(rootDir, 0755); *ppEnv = pEnv; return 0; diff --git a/source/libs/tdb/src/inc/tdbDb.h b/source/libs/tdb/src/inc/tdbDb.h index 5356a406ea..e3bc7eec2c 100644 --- a/source/libs/tdb/src/inc/tdbDb.h +++ b/source/libs/tdb/src/inc/tdbDb.h @@ -22,7 +22,7 @@ extern "C" { typedef struct STDb STDb; -int tdbDbOpen(STDb **ppDb); +int tdbDbOpen(const char *fname, int keyLen, int valLen, FKeyComparator keyCmprFn, STEnv *pEnv, STDb **ppDb); int tdbDbClose(STDb *pDb); int tdbDbInsert(STDb *pDb, const void *pKey, int keyLen, const void *pVal, int valLen); diff --git a/source/libs/tdb/src/inc/tdbInt.h b/source/libs/tdb/src/inc/tdbInt.h index 1bf82d4b26..e764c65e72 100644 --- a/source/libs/tdb/src/inc/tdbInt.h +++ b/source/libs/tdb/src/inc/tdbInt.h @@ -121,6 +121,8 @@ typedef TD_DLIST_NODE(SPgFile) SPgFileListNode; /* TODO */ \ } while (0) +typedef int (*FKeyComparator)(const void *pKey1, int kLen1, const void *pKey2, int kLen2); + #define TDB_JOURNAL_NAME "tdb.journal" #include "tdbUtil.h" diff --git a/source/libs/tdb/test/tdbTest.cpp b/source/libs/tdb/test/tdbTest.cpp index fc135e5aef..a8445c0e9b 100644 --- a/source/libs/tdb/test/tdbTest.cpp +++ b/source/libs/tdb/test/tdbTest.cpp @@ -5,14 +5,14 @@ TEST(tdb_test, simple_test) { int ret; STEnv *pEnv; - STDb *pDb; + STDb * pDb; // Open Env ret = tdbEnvOpen("tdb", 1024, 20, &pEnv); GTEST_ASSERT_EQ(ret, 0); // Create a database - ret = tdbDbOpen(&pDb); + ret = tdbDbOpen("db.db", TDB_VARIANT_LEN, TDB_VARIANT_LEN, NULL, pEnv, &pDb); GTEST_ASSERT_EQ(ret, 0); // Insert some data