From 8bd4beec94eeacdafe85f41f7d889736bc0a74aa Mon Sep 17 00:00:00 2001 From: Hongze Cheng Date: Tue, 1 Mar 2022 06:46:50 +0000 Subject: [PATCH] refact --- source/libs/tdb/src/db/tdbBtree.c | 34 +++++++++++++++++-------------- source/libs/tdb/src/db/tdbDb.c | 2 +- source/libs/tdb/src/db/tdbEnv.c | 2 +- source/libs/tdb/src/inc/tdbEnv.h | 2 +- 4 files changed, 22 insertions(+), 18 deletions(-) diff --git a/source/libs/tdb/src/db/tdbBtree.c b/source/libs/tdb/src/db/tdbBtree.c index 813ea91e4a..91bdbd6cac 100644 --- a/source/libs/tdb/src/db/tdbBtree.c +++ b/source/libs/tdb/src/db/tdbBtree.c @@ -117,23 +117,27 @@ static int tdbBtCursorMoveTo(SBtCursor *pCur, const void *pKey, int kLen) { return -1; } - for (;;) { - int lidx, ridx, midx, c; + if (pCur->pPage->pHdr->nCells == 0) { + // Tree is empty + } else { + for (;;) { + int lidx, ridx, midx, c; - pBtPage = pCur->pPage; - lidx = 0; - ridx = pBtPage->pHdr->nCells - 1; - while (lidx <= ridx) { - midx = (lidx + ridx) >> 1; - pCell = (void *)(pBtPage->aData + pBtPage->aCellIdx[midx]); + pBtPage = pCur->pPage; + lidx = 0; + ridx = pBtPage->pHdr->nCells - 1; + while (lidx <= ridx) { + midx = (lidx + ridx) >> 1; + pCell = (void *)(pBtPage->aData + pBtPage->aCellIdx[midx]); - c = tdbCompareKeyAndCell(pKey, kLen, pCell); - if (c == 0) { - break; - } else if (c < 0) { - lidx = lidx + 1; - } else { - ridx = ridx - 1; + c = tdbCompareKeyAndCell(pKey, kLen, pCell); + if (c == 0) { + break; + } else if (c < 0) { + lidx = lidx + 1; + } else { + ridx = ridx - 1; + } } } diff --git a/source/libs/tdb/src/db/tdbDb.c b/source/libs/tdb/src/db/tdbDb.c index c078da59c8..5cc9941851 100644 --- a/source/libs/tdb/src/db/tdbDb.c +++ b/source/libs/tdb/src/db/tdbDb.c @@ -38,7 +38,7 @@ int tdbDbOpen(const char *fname, int keyLen, int valLen, FKeyComparator keyCmprF // pDb->pEnv pDb->pEnv = pEnv; - pFile = tdbEnvGetPFile(pEnv, fname); + pFile = tdbEnvGetPager(pEnv, fname); if (pFile == NULL) { snprintf(fFullName, TDB_FILENAME_LEN, "%s/%s", pEnv->rootDir, fname); ret = tdbPagerOpen(pEnv->pCache, fFullName, &pFile); diff --git a/source/libs/tdb/src/db/tdbEnv.c b/source/libs/tdb/src/db/tdbEnv.c index d116ca40bd..0b27796790 100644 --- a/source/libs/tdb/src/db/tdbEnv.c +++ b/source/libs/tdb/src/db/tdbEnv.c @@ -64,7 +64,7 @@ int tdbEnvClose(STEnv *pEnv) { return 0; } -SPager *tdbEnvGetPFile(STEnv *pEnv, const char *fname) { +SPager *tdbEnvGetPager(STEnv *pEnv, const char *fname) { // TODO return NULL; } \ No newline at end of file diff --git a/source/libs/tdb/src/inc/tdbEnv.h b/source/libs/tdb/src/inc/tdbEnv.h index 0e097c057d..959b963a07 100644 --- a/source/libs/tdb/src/inc/tdbEnv.h +++ b/source/libs/tdb/src/inc/tdbEnv.h @@ -30,7 +30,7 @@ typedef struct STEnv { int tdbEnvOpen(const char *rootDir, int pageSize, int cacheSize, STEnv **ppEnv); int tdbEnvClose(STEnv *pEnv); -SPager *tdbEnvGetPFile(STEnv *pEnv, const char *fname); +SPager *tdbEnvGetPager(STEnv *pEnv, const char *fname); #ifdef __cplusplus }