diff --git a/source/dnode/vnode/src/tsdb/tsdbCache.c b/source/dnode/vnode/src/tsdb/tsdbCache.c index 8367a0c491..2f6901cb24 100644 --- a/source/dnode/vnode/src/tsdb/tsdbCache.c +++ b/source/dnode/vnode/src/tsdb/tsdbCache.c @@ -165,21 +165,23 @@ static int32_t getMemLastRow(SMemTable *mem, tb_uid_t suid, tb_uid_t uid, STSRow static int32_t getTableDelDataFromDelIdx(SDelFReader *pDelReader, SDelIdx *pDelIdx, SArray *aDelData) { int32_t code = 0; - SMapData delDataMap; - SDelData delData; + // SMapData delDataMap; + // SDelData delData; if (pDelIdx) { - tMapDataReset(&delDataMap); + // tMapDataReset(&delDataMap); // code = tsdbReadDelData(pDelReader, pDelIdx, &delDataMap, NULL); + code = tsdbReadDelData(pDelReader, pDelIdx, aDelData, NULL); if (code) goto _err; - + /* for (int32_t iDelData = 0; iDelData < delDataMap.nItem; ++iDelData) { code = tMapDataGetItemByIdx(&delDataMap, iDelData, &delData, tGetDelData); if (code) goto _err; taosArrayPush(aDelData, &delData); } + */ } _err: @@ -241,14 +243,17 @@ _err: static int32_t getTableDelIdx(SDelFReader *pDelFReader, tb_uid_t suid, tb_uid_t uid, SDelIdx *pDelIdx) { int32_t code = 0; - SMapData delIdxMap; - SDelIdx idx = {.suid = suid, .uid = uid}; + // SMapData delIdxMap; + SArray *pDelIdxArray = taosArrayInit(32, sizeof(SDelIdx)); + SDelIdx idx = {.suid = suid, .uid = uid}; - tMapDataReset(&delIdxMap); - // code = tsdbReadDelIdx(pDelFReader, &delIdxMap, NULL); + // tMapDataReset(&delIdxMap); + // code = tsdbReadDelIdx(pDelFReader, &delIdxMap, NULL); + code = tsdbReadDelIdx(pDelFReader, pDelIdxArray, NULL); if (code) goto _err; - code = tMapDataSearch(&delIdxMap, &idx, tGetDelIdx, tCmprDelIdx, pDelIdx); + // code = tMapDataSearch(&delIdxMap, &idx, tGetDelIdx, tCmprDelIdx, pDelIdx); + pDelIdx = taosArraySearch(pDelIdxArray, &idx, tCmprDelIdx, TD_EQ); if (code) goto _err; _err: @@ -590,23 +595,27 @@ static int32_t mergeLastRow(tb_uid_t uid, STsdb *pTsdb, STSRow **ppRow) { *ppRow = NULL; - SDelFReader *pDelFReader; - SDelFile *pDelFile = tsdbFSStateGetDelFile(pTsdb->fs->cState); - code = tsdbDelFReaderOpen(&pDelFReader, pDelFile, pTsdb, NULL); - if (code) goto _err; - - SDelIdx delIdx; - code = getTableDelIdx(pDelFReader, suid, uid, &delIdx); - if (code) goto _err; - SArray *pSkyline = taosArrayInit(32, sizeof(TSDBKEY)); - code = getTableDelSkyline(pMem, pIMem, pDelFReader, &delIdx, pSkyline); - if (code) goto _err; + + SDelFile *pDelFile = tsdbFSStateGetDelFile(pTsdb->fs->cState); + if (pDelFile) { + SDelFReader *pDelFReader; + + code = tsdbDelFReaderOpen(&pDelFReader, pDelFile, pTsdb, NULL); + if (code) goto _err; + + SDelIdx delIdx; + code = getTableDelIdx(pDelFReader, suid, uid, &delIdx); + if (code) goto _err; + + code = getTableDelSkyline(pMem, pIMem, pDelFReader, &delIdx, pSkyline); + if (code) goto _err; + + tsdbDelFReaderClose(pDelFReader); + } int iSkyline = taosArrayGetSize(pSkyline) - 1; - tsdbDelFReaderClose(pDelFReader); - SBlockIdx idx = {.suid = suid, .uid = uid}; SFSNextRowIter fsState = {0};