diff --git a/src/inc/tsdb.h b/src/inc/tsdb.h index f4242fbe1f..ab5d26e0dd 100644 --- a/src/inc/tsdb.h +++ b/src/inc/tsdb.h @@ -109,6 +109,8 @@ int tsdbDropTable(TsdbRepoT *pRepo, STableId tableId); int tsdbAlterTable(TsdbRepoT *repo, STableCfg *pCfg); TSKEY tsdbGetTableLastKey(TsdbRepoT *repo, int64_t uid); +uint32_t tsdbGetFileInfo(TsdbRepoT *repo, char *name, uint32_t *index, int32_t *size); + // the TSDB repository info typedef struct STsdbRepoInfo { STsdbCfg tsdbCfg; diff --git a/src/tsdb/inc/tsdbMain.h b/src/tsdb/inc/tsdbMain.h index 278463f0d2..f179ef6ef9 100644 --- a/src/tsdb/inc/tsdbMain.h +++ b/src/tsdb/inc/tsdbMain.h @@ -490,9 +490,10 @@ int tsdbWriteCompInfo(SRWHelper *pHelper); int tsdbWriteCompIdx(SRWHelper *pHelper); // --------- Other functions need to further organize -void tsdbFitRetention(STsdbRepo *pRepo); -int tsdbAlterCacheTotalBlocks(STsdbRepo *pRepo, int totalBlocks); -void tsdbAdjustCacheBlocks(STsdbCache *pCache); +void tsdbFitRetention(STsdbRepo *pRepo); +int tsdbAlterCacheTotalBlocks(STsdbRepo *pRepo, int totalBlocks); +void tsdbAdjustCacheBlocks(STsdbCache *pCache); +int32_t tsdbGetMetaFileName(char *rootDir, char *fname); #ifdef __cplusplus } diff --git a/src/tsdb/src/tsdbMain.c b/src/tsdb/src/tsdbMain.c index 8d570911a9..2b9f1c9fe0 100644 --- a/src/tsdb/src/tsdbMain.c +++ b/src/tsdb/src/tsdbMain.c @@ -7,6 +7,7 @@ #include "tscompression.h" #include "tchecksum.h" #include "ttime.h" +#include int tsdbDebugFlag = 135; @@ -760,7 +761,7 @@ static int32_t tsdbSetRepoEnv(STsdbRepo *pRepo) { return -1; } - tsdbError( + tsdbTrace( "id %d: set up tsdb environment succeed! cacheBlockSize %d, totalBlocks %d, maxTables %d, daysPerFile %d, keep " "%d, minRowsPerFileBlock %d, maxRowsPerFileBlock %d, precision %d, compression%d", pRepo->config.tsdbId, pCfg->cacheBlockSize, pCfg->totalBlocks, pCfg->maxTables, pCfg->daysPerFile, pCfg->keep, @@ -1124,4 +1125,45 @@ static void tsdbAlterKeep(STsdbRepo *pRepo, int32_t keep) { static void tsdbAlterMaxTables(STsdbRepo *pRepo, int32_t maxTables) { // TODO +} + +uint32_t tsdbGetFileInfo(TsdbRepoT *repo, char *name, uint32_t *index, int32_t *size) { + // TODO: need to refactor this function + tsdbError("name:%s index:%d size:%d", name, *index, *size); + + STsdbRepo *pRepo = (STsdbRepo *)repo; + // STsdbMeta *pMeta = pRepo->tsdbMeta; + STsdbFileH *pFileH = pRepo->tsdbFileH; + uint32_t magic = 0; + char fname[256] = "\0"; + + struct stat fState; + + if (name[0] == 0) { + // Map index to the file name + int fid = (*index) / 3; + + if (fid > pFileH->numOfFGroups) { + // return meta data file + if ((*index) % 3 > 0) { // it is finished + return 0; + } else { + tsdbGetMetaFileName(pRepo->rootDir, fname); + } + } else { + // return data file name + strcpy(fname, pFileH->fGroup[fid].files[(*index) % 3].fname); + } + strcpy(name, fname); + } else { + // Name is provided, need to get the file info + sprintf(fname, "%s/%s", pRepo->rootDir, name); + } + + if (stat(fname, &fState) < 0) return 0; + + *size = fState.st_size; + magic = *size; + + return magic; } \ No newline at end of file diff --git a/src/tsdb/src/tsdbMetaFile.c b/src/tsdb/src/tsdbMetaFile.c index 6821fc2d98..f9d10ec579 100644 --- a/src/tsdb/src/tsdbMetaFile.c +++ b/src/tsdb/src/tsdbMetaFile.c @@ -28,7 +28,7 @@ typedef struct { int64_t uid; } SRecordInfo; -static int32_t tsdbGetMetaFileName(char *rootDir, char *fname); +// static int32_t tsdbGetMetaFileName(char *rootDir, char *fname); // static int32_t tsdbCheckMetaHeader(int fd); static int32_t tsdbWriteMetaHeader(int fd); static int tsdbCreateMetaFile(char *fname); @@ -180,7 +180,7 @@ void tsdbCloseMetaFile(SMetaFile *mfh) { tfree(mfh); } -static int32_t tsdbGetMetaFileName(char *rootDir, char *fname) { +int32_t tsdbGetMetaFileName(char *rootDir, char *fname) { if (rootDir == NULL) return -1; sprintf(fname, "%s/%s", rootDir, TSDB_META_FILE_NAME); return 0; diff --git a/src/vnode/src/vnodeMain.c b/src/vnode/src/vnodeMain.c index 6ffac08b4e..4a779cd22d 100644 --- a/src/vnode/src/vnodeMain.c +++ b/src/vnode/src/vnodeMain.c @@ -383,9 +383,8 @@ static int vnodeWalCallback(void *arg) { } static uint32_t vnodeGetFileInfo(void *ahandle, char *name, uint32_t *index, int32_t *size) { - // SVnodeObj *pVnode = ahandle; - //tsdbGetFileInfo(pVnode->tsdb, name, index, size); - return 0; + SVnodeObj *pVnode = ahandle; + return tsdbGetFileInfo(pVnode->tsdb, name, index, size); } static int vnodeGetWalInfo(void *ahandle, char *name, uint32_t *index) {