From 3ccb52e424adb4d7d8c130ae2e61875123498597 Mon Sep 17 00:00:00 2001 From: Hongze Cheng Date: Tue, 15 Feb 2022 06:35:35 +0000 Subject: [PATCH] more TDB --- source/libs/tdb/src/db/tdbEnv.c | 9 ++++++--- source/libs/tdb/src/db/tdbPgCache.c | 4 +--- source/libs/tdb/src/inc/tdbPgCache.h | 2 +- source/libs/tdb/test/tdbTest.cpp | 1 + 4 files changed, 9 insertions(+), 7 deletions(-) diff --git a/source/libs/tdb/src/db/tdbEnv.c b/source/libs/tdb/src/db/tdbEnv.c index 3e693e1753..9cecd82987 100644 --- a/source/libs/tdb/src/db/tdbEnv.c +++ b/source/libs/tdb/src/db/tdbEnv.c @@ -59,6 +59,8 @@ int tdbEnvCreate(TENV **ppEnv, const char *rootDir) { int tdbEnvOpen(TENV *pEnv) { SPgCache *pPgCache; + pgsz_t pgSize; + int npage; int ret; ASSERT(pEnv != NULL); @@ -68,13 +70,14 @@ int tdbEnvOpen(TENV *pEnv) { */ mkdir(pEnv->rootDir, 0755); - ret = pgCacheOpen(&pPgCache, pEnv->pgSize, pEnv->cacheSize / pEnv->pgSize); + pgSize = pEnv->pgSize; + npage = pEnv->cacheSize / pEnv->pgSize; + ret = pgCacheOpen(&pPgCache, pgSize, npage, pEnv); if (ret != 0) { goto _err; } pEnv->pPgCache = pPgCache; - return 0; _err: @@ -83,7 +86,7 @@ _err: int tdbEnvClose(TENV *pEnv) { if (pEnv == NULL) return 0; - /* TODO */ + pgCacheClose(pEnv->pPgCache); tdbEnvDestroy(pEnv); return 0; } diff --git a/source/libs/tdb/src/db/tdbPgCache.c b/source/libs/tdb/src/db/tdbPgCache.c index 0a222c152e..9a8ea62863 100644 --- a/source/libs/tdb/src/db/tdbPgCache.c +++ b/source/libs/tdb/src/db/tdbPgCache.c @@ -17,7 +17,7 @@ static void pgCachePinPage(SPage *pPage); static void pgCacheUnpinPage(SPage *pPage); -int pgCacheOpen(SPgCache **ppPgCache, pgsz_t pgSize, int32_t npage) { +int pgCacheOpen(SPgCache **ppPgCache, pgsz_t pgSize, int32_t npage, TENV *pEnv) { SPgCache *pPgCache; SPage * pPage; @@ -147,8 +147,6 @@ static void pgCacheUnpinPage(SPage *pPage) { // TODO } - - #if 0 // Exposed handle typedef struct TDB_MPOOL TDB_MPOOL; diff --git a/source/libs/tdb/src/inc/tdbPgCache.h b/source/libs/tdb/src/inc/tdbPgCache.h index d1a01903d5..35a8b9d1fc 100644 --- a/source/libs/tdb/src/inc/tdbPgCache.h +++ b/source/libs/tdb/src/inc/tdbPgCache.h @@ -24,7 +24,7 @@ typedef struct SPgCache SPgCache; typedef struct SPage SPage; // SPgCache -int pgCacheOpen(SPgCache **ppPgCache, pgsz_t pgSize, int32_t npage); +int pgCacheOpen(SPgCache **ppPgCache, pgsz_t pgSize, int32_t npage, TENV *pEnv); int pgCacheClose(SPgCache *pPgCache); SPage *pgCacheFetch(SPgCache *pPgCache, pgid_t pgid); diff --git a/source/libs/tdb/test/tdbTest.cpp b/source/libs/tdb/test/tdbTest.cpp index a458ea3e84..ccaddb4e14 100644 --- a/source/libs/tdb/test/tdbTest.cpp +++ b/source/libs/tdb/test/tdbTest.cpp @@ -37,5 +37,6 @@ TEST(tdb_test, simple_test) { tdbClose(pDb1); tdbClose(pDb2); #endif + tdbEnvClose(pEnv); } \ No newline at end of file