keep committed data in TDB
This commit is contained in:
parent
938ce798c5
commit
610832f0b4
|
@ -297,7 +297,8 @@ static int tdbBtreeOpenImpl(SBTree *pBt) {
|
||||||
|
|
||||||
{
|
{
|
||||||
// 1. TODO: Search the main DB to check if the DB exists
|
// 1. TODO: Search the main DB to check if the DB exists
|
||||||
pgno = 0;
|
ret = tdbPagerOpenDB(pBt->pPager, &pgno, true);
|
||||||
|
ASSERT(ret == 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pgno != 0) {
|
if (pgno != 0) {
|
||||||
|
|
|
@ -76,6 +76,8 @@ int tdbPagerOpen(SPCache *pCache, const char *fileName, SPager **ppPager) {
|
||||||
|
|
||||||
// pPager->jfd = -1;
|
// pPager->jfd = -1;
|
||||||
pPager->pageSize = tdbPCacheGetPageSize(pCache);
|
pPager->pageSize = tdbPCacheGetPageSize(pCache);
|
||||||
|
// pPager->dbOrigSize
|
||||||
|
ret = tdbGetFileSize(pPager->fd, pPager->pageSize, &(pPager->dbOrigSize));
|
||||||
|
|
||||||
*ppPager = pPager;
|
*ppPager = pPager;
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -91,26 +93,32 @@ int tdbPagerOpenDB(SPager *pPager, SPgno *ppgno, bool toCreate) {
|
||||||
SPage *pPage;
|
SPage *pPage;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
{
|
if (pPager->dbOrigSize > 0) {
|
||||||
// TODO: try to search the main DB to get the page number
|
pgno = 1;
|
||||||
|
} else {
|
||||||
pgno = 0;
|
pgno = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// if (pgno == 0 && toCreate) {
|
{
|
||||||
// ret = tdbPagerAllocPage(pPager, &pPage, &pgno);
|
// TODO: try to search the main DB to get the page number
|
||||||
// if (ret < 0) {
|
// pgno = 0;
|
||||||
// return -1;
|
}
|
||||||
// }
|
|
||||||
|
|
||||||
// // TODO: Need to zero the page
|
// if (pgno == 0 && toCreate) {
|
||||||
|
// ret = tdbPagerAllocPage(pPager, &pPage, &pgno);
|
||||||
|
// if (ret < 0) {
|
||||||
|
// return -1;
|
||||||
|
// }
|
||||||
|
|
||||||
// ret = tdbPagerWrite(pPager, pPage);
|
// // TODO: Need to zero the page
|
||||||
// if (ret < 0) {
|
|
||||||
// return -1;
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
|
|
||||||
*ppgno = pgno;
|
// ret = tdbPagerWrite(pPager, pPage);
|
||||||
|
// if (ret < 0) {
|
||||||
|
// return -1;
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
*ppgno = pgno;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -30,5 +30,18 @@ int tdbGnrtFileID(const char *fname, uint8_t *fileid, bool unique) {
|
||||||
((uint64_t *)fileid)[2] = taosRand();
|
((uint64_t *)fileid)[2] = taosRand();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int tdbGetFileSize(tdb_fd_t fd, int szPage, SPgno *size) {
|
||||||
|
int ret;
|
||||||
|
int64_t szBytes;
|
||||||
|
|
||||||
|
ret = tdbOsFileSize(fd, &szBytes);
|
||||||
|
if (ret < 0) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
*size = szBytes / szPage;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
|
@ -46,13 +46,14 @@ typedef TdFilePtr tdb_fd_t;
|
||||||
|
|
||||||
#define tdbOsOpen(PATH, OPTION, MODE) taosOpenFile((PATH), (OPTION))
|
#define tdbOsOpen(PATH, OPTION, MODE) taosOpenFile((PATH), (OPTION))
|
||||||
|
|
||||||
#define tdbOsClose(FD) taosCloseFile(&(FD))
|
#define tdbOsClose(FD) taosCloseFile(&(FD))
|
||||||
#define tdbOsRead taosReadFile
|
#define tdbOsRead taosReadFile
|
||||||
#define tdbOsPRead taosPReadFile
|
#define tdbOsPRead taosPReadFile
|
||||||
#define tdbOsWrite taosWriteFile
|
#define tdbOsWrite taosWriteFile
|
||||||
#define tdbOsFSync taosFsyncFile
|
#define tdbOsFSync taosFsyncFile
|
||||||
#define tdbOsLSeek taosLSeekFile
|
#define tdbOsLSeek taosLSeekFile
|
||||||
#define tdbOsRemove remove
|
#define tdbOsRemove remove
|
||||||
|
#define tdbOsFileSize(FD, PSIZE) taosFStatFile(FD, PSIZE, NULL)
|
||||||
|
|
||||||
/* directory */
|
/* directory */
|
||||||
#define tdbOsMkdir taosMkDir
|
#define tdbOsMkdir taosMkDir
|
||||||
|
@ -110,10 +111,11 @@ i64 tdbOsWrite(tdb_fd_t fd, const void *pData, i64 nBytes);
|
||||||
#define tdbOsFSync fsync
|
#define tdbOsFSync fsync
|
||||||
#define tdbOsLSeek lseek
|
#define tdbOsLSeek lseek
|
||||||
#define tdbOsRemove remove
|
#define tdbOsRemove remove
|
||||||
|
#define tdbOsFileSize(FD, PSIZE)
|
||||||
|
|
||||||
/* directory */
|
/* directory */
|
||||||
#define tdbOsMkdir mkdir
|
#define tdbOsMkdir mkdir
|
||||||
#define tdbOsRmdir rmdir
|
#define tdbOsRmdir rmdir
|
||||||
|
|
||||||
// For threads and lock -----------------
|
// For threads and lock -----------------
|
||||||
/* spin lock */
|
/* spin lock */
|
||||||
|
|
|
@ -29,6 +29,7 @@ extern "C" {
|
||||||
#define TDB_ROUND8(x) (((x) + 7) & ~7)
|
#define TDB_ROUND8(x) (((x) + 7) & ~7)
|
||||||
|
|
||||||
int tdbGnrtFileID(const char *fname, uint8_t *fileid, bool unique);
|
int tdbGnrtFileID(const char *fname, uint8_t *fileid, bool unique);
|
||||||
|
int tdbGetFileSize(tdb_fd_t fd, int szPage, SPgno *size);
|
||||||
|
|
||||||
#define TDB_REALLOC(PTR, SIZE) \
|
#define TDB_REALLOC(PTR, SIZE) \
|
||||||
({ \
|
({ \
|
||||||
|
|
Loading…
Reference in New Issue