From 2e53d7a477114cb3ce5e2437fc17061b1e838dc9 Mon Sep 17 00:00:00 2001 From: Hongze Cheng Date: Tue, 2 Jun 2020 06:19:54 +0000 Subject: [PATCH] fix tsdbGetFileInfo --- src/tsdb/src/tsdbMain.c | 57 +++++++++++++---------------------------- 1 file changed, 18 insertions(+), 39 deletions(-) diff --git a/src/tsdb/src/tsdbMain.c b/src/tsdb/src/tsdbMain.c index 318ce4e049..47b808d1db 100644 --- a/src/tsdb/src/tsdbMain.c +++ b/src/tsdb/src/tsdbMain.c @@ -1208,55 +1208,34 @@ uint32_t tsdbGetFileInfo(TsdbRepoT *repo, char *name, uint32_t *index, uint32_t tsdbTrace("vgId:%d name:%s index:%d eindex:%d", pRepo->config.tsdbId, name, *index, eindex); ASSERT(*index <= eindex); - if (name[0] == 0) { // get the file from index or after, but not larger than eindex - if (*index == 0) { // need to return the first file and set the *index - if (pFileH->numOfFGroups > 0) { - int fid = TSDB_MIN_FILE_ID(pFileH); - - if (fid * 3 <= eindex) { - strcpy(fname, pFileH->fGroup[fid].files[0].fname); - *index = fid * 3; - strcpy(name, fname+strlen(pRepo->rootDir)); - } else { // no file found - return 0; - } + if (name[0] == 0) { // get the file from index or after, but not larger than eindex + if (*index == TSDB_META_FILE_INDEX) { + tsdbGetMetaFileName(pRepo->rootDir, fname); + } else { // to get a file in index or larger than index but + if (pFileH->numOfFGroups == 0) { // not found + return 0; } else { - if (TSDB_META_FILE_INDEX <= eindex) { - *index = TSDB_META_FILE_INDEX; - tsdbGetMetaFileName(pRepo->rootDir, fname); - strcpy(name, fname+strlen(pRepo->rootDir)); - } else { // no file found - return 0; - } - } - } else { // return a file name at *index - if (*index == TSDB_META_FILE_INDEX) { - tsdbGetMetaFileName(pRepo->rootDir, fname); - } else { // to get a file in index or larger than index but - if (pFileH->numOfFGroups == 0) { // not found + int fid = (*index) / 3; + SFileGroup *pFGroup = + taosbsearch(&fid, pFileH->fGroup, pFileH->numOfFGroups, sizeof(SFileGroup), compFGroupKey, TD_GE); + if (pFGroup == NULL) { return 0; } else { - int fid = (*index) / 3; - SFileGroup *pFGroup = taosbsearch(&fid, pFileH->fGroup, pFileH->numOfFGroups, sizeof(SFileGroup), compFGroupKey, TD_GE); - if (pFGroup == NULL) { - return 0; + if (pFGroup->fileId == fid) { + strcpy(fname, pFGroup->files[(*index) % 3].fname); } else { - if (pFGroup->fileId == fid) { - strcpy(fname, pFGroup->files[(*index)%3].fname); + if (pFGroup->fileId * 3 + 2 < eindex) { + strcpy(fname, pFGroup->files[(*index) % 3].fname); + *index = pFGroup->fileId * 3 + (*index) % 3; } else { - if (pFGroup->fileId * 3 + 2 < eindex) { - strcpy(fname, pFGroup->files[(*index)%3].fname); - *index = pFGroup->fileId * 3 + (*index) % 3; - } else { - return 0; - } + return 0; } } } } - strcpy(name, fname); } - } else { // get the named file at the specified index. If not there, return 0 + strcpy(name, fname); + } else { // get the named file at the specified index. If not there, return 0 if (*index == TSDB_META_FILE_INDEX) { // get meta file tsdbGetMetaFileName(pRepo->rootDir, fname); } else { -- GitLab