From 46d6dcda3e26917a6276a6b4e74e686c70f393af Mon Sep 17 00:00:00 2001 From: Minglei Jin Date: Thu, 20 Jul 2023 08:41:32 +0800 Subject: [PATCH] tsdb/cache: reset skyline when clearing fileset --- source/dnode/vnode/src/tsdb/tsdbCache.c | 52 ++++++++++++++++--------- 1 file changed, 33 insertions(+), 19 deletions(-) diff --git a/source/dnode/vnode/src/tsdb/tsdbCache.c b/source/dnode/vnode/src/tsdb/tsdbCache.c index 23cdb288bf..d9d4e83569 100644 --- a/source/dnode/vnode/src/tsdb/tsdbCache.c +++ b/source/dnode/vnode/src/tsdb/tsdbCache.c @@ -1921,25 +1921,7 @@ typedef struct SFSNextRowIter { struct CacheNextRowIter *pRowIter; } SFSNextRowIter; -static void clearLastFileSet(SFSNextRowIter *state) { - if (state->pLastIter) { - lastIterClose(&state->pLastIter); - } - - if (state->pBlockData) { - tBlockDataDestroy(state->pBlockData); - state->pBlockData = NULL; - } - - if (state->pFileReader) { - tsdbDataFileReaderClose(&state->pFileReader); - } - - if (state->pTSRow) { - taosMemoryFree(state->pTSRow); - state->pTSRow = NULL; - } -} +static void clearLastFileSet(SFSNextRowIter *state); static int32_t getNextRowFromFS(void *iter, TSDBROW **ppRow, bool *pIgnoreEarlierTs, bool isLast, int16_t *aCols, int nCols) { @@ -2643,6 +2625,38 @@ typedef struct CacheNextRowIter { STsdb *pTsdb; } CacheNextRowIter; +static void clearLastFileSet(SFSNextRowIter *state) { + if (state->pLastIter) { + lastIterClose(&state->pLastIter); + } + + if (state->pBlockData) { + tBlockDataDestroy(state->pBlockData); + state->pBlockData = NULL; + } + + if (state->pFileReader) { + tsdbDataFileReaderClose(&state->pFileReader); + } + + if (state->pTSRow) { + taosMemoryFree(state->pTSRow); + state->pTSRow = NULL; + } + + if (state->pRowIter->pSkyline) { + taosArrayDestroy(state->pRowIter->pSkyline); + state->pRowIter->pSkyline = NULL; + + void *pe = NULL; + int32_t iter = 0; + while ((pe = tSimpleHashIterate(state->pr->pTableMap, pe, &iter)) != NULL) { + STableLoadInfo *pInfo = *(STableLoadInfo **)pe; + pInfo->pTombData = taosArrayDestroy(pInfo->pTombData); + } + } +} + static int32_t nextRowIterOpen(CacheNextRowIter *pIter, tb_uid_t uid, STsdb *pTsdb, STSchema *pTSchema, tb_uid_t suid, SArray *pLDataIterArray, STsdbReadSnap *pReadSnap, int64_t lastTs, SCacheRowsReader *pr) {