diff --git a/source/libs/tdb/src/db/tdbDb.c b/source/libs/tdb/src/db/tdbDb.c index aec640fdcba61719dc3502691a131bd7f31aeffd..8c1d1af08918f5b2241689d8c6bb14e8fac712a7 100644 --- a/source/libs/tdb/src/db/tdbDb.c +++ b/source/libs/tdb/src/db/tdbDb.c @@ -49,11 +49,16 @@ int tdbDbOpen(const char *fname, int keyLen, int valLen, FKeyComparator keyCmprF ASSERT(pPager != NULL); + // Try to open the database ret = tdbPagerOpenDB(pPager, &pgno, true); if (ret < 0) { return -1; } + if (pgno == 0) { + // TODO: Try to create a new database + } + // pDb->pBt ret = tdbBtreeOpen(pgno, keyLen, valLen, pPager, keyCmprFn, &(pDb->pBt)); if (ret < 0) { diff --git a/source/libs/tdb/src/db/tdbPager.c b/source/libs/tdb/src/db/tdbPager.c index cbbaef3e20cbf8de319b92ccc538aaca17bf9ffa..d7da14596b1dfc1c4b37de7aea615aaba2c88e36 100644 --- a/source/libs/tdb/src/db/tdbPager.c +++ b/source/libs/tdb/src/db/tdbPager.c @@ -242,4 +242,19 @@ static int tdbPagerReadPage(SPager *pPager, SPage *pPage) { return 0; } -int tdbPagerGetPageSize(SPager *pPager) { return pPager->pageSize; } \ No newline at end of file +int tdbPagerGetPageSize(SPager *pPager) { return pPager->pageSize; } + +static void tdbPagerZeroPage(SPage *pPage, int flags) { + SPager *pPager; + + pPager = pPage->pPager; + memset(pPage->pData, 0, pPager->pageSize); + pPage->pPageHdr = (SPageHdr *)(pPage->pData); + pPage->aCellIdx = (u16 *)(&(pPage->pPageHdr[1])); + /* TODO */ +} + +static int tdbPagerInitPage(SPage *pPage) { + // TODO + return 0; +} \ No newline at end of file diff --git a/source/libs/tdb/src/inc/tdbPager.h b/source/libs/tdb/src/inc/tdbPager.h index a9999eb6097f3e0abe2ac6ccfce28a795507922d..be09f1c91db05cf0523fe24433d050abb7d4545d 100644 --- a/source/libs/tdb/src/inc/tdbPager.h +++ b/source/libs/tdb/src/inc/tdbPager.h @@ -20,14 +20,14 @@ extern "C" { #endif -int tdbPagerOpen(SPCache *pCache, const char *fileName, SPager **ppFile); -int tdbPagerClose(SPager *pFile); -int tdbPagerOpenDB(SPager *pFile, SPgno *ppgno, bool toCreate); +int tdbPagerOpen(SPCache *pCache, const char *fileName, SPager **ppPager); +int tdbPagerClose(SPager *pPager); +int tdbPagerOpenDB(SPager *pPager, SPgno *ppgno, bool toCreate); SPage *tdbPagerGet(SPager *pPager, SPgno pgno, bool toLoad); -int tdbPagerWrite(SPager *pFile, SPage *pPage); -int tdbPagerAllocPage(SPager *pFile, SPage **ppPage, SPgno *ppgno); -int tdbPagerBegin(SPager *pFile); -int tdbPagerCommit(SPager *pFile); +int tdbPagerWrite(SPager *pPager, SPage *pPage); +int tdbPagerAllocPage(SPager *pPager, SPage **ppPage, SPgno *ppgno); +int tdbPagerBegin(SPager *pPager); +int tdbPagerCommit(SPager *pPager); int tdbPagerGetPageSize(SPager *pPager); #ifdef __cplusplus