From da1207ef742f25d4f9f21b245259bd12d4bc18f5 Mon Sep 17 00:00:00 2001 From: Haojun Liao Date: Fri, 8 Dec 2023 11:07:45 +0800 Subject: [PATCH] fix(tsdb): add return flag for stt files. --- source/dnode/vnode/src/tsdb/tsdbRead2.c | 3 ++- source/dnode/vnode/src/tsdb/tsdbReadUtil.h | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/source/dnode/vnode/src/tsdb/tsdbRead2.c b/source/dnode/vnode/src/tsdb/tsdbRead2.c index ed62e9ea9c..7900afb889 100644 --- a/source/dnode/vnode/src/tsdb/tsdbRead2.c +++ b/source/dnode/vnode/src/tsdb/tsdbRead2.c @@ -2069,7 +2069,7 @@ static bool initSttBlockReader(SSttBlockReader* pSttBlockReader, STableBlockScan // second time init stt block reader if (pScanInfo->cleanSttBlocks && pReader->info.execMode == READER_EXEC_ROWS) { - return true; + return !pScanInfo->sttBlockReturned; } STimeWindow w = pSttBlockReader->window; @@ -2710,6 +2710,7 @@ static int32_t doLoadSttBlockSequentially(STsdbReader* pReader) { pScanInfo->lastProcKey = ASCENDING_TRAVERSE(pReader->info.order) ? pScanInfo->sttWindow.ekey : pScanInfo->sttWindow.skey; pSttBlockReader->mergeTree.pIter = NULL; + pScanInfo->sttBlockReturned = true; tsdbDebug("%p uid:%" PRId64 " return clean stt block as one, brange:%" PRId64 "-%" PRId64 " rows:%" PRId64 " %s", pReader, pResBlock->info.id.uid, pResBlock->info.window.skey, pResBlock->info.window.ekey, diff --git a/source/dnode/vnode/src/tsdb/tsdbReadUtil.h b/source/dnode/vnode/src/tsdb/tsdbReadUtil.h index 89e4c4224d..a9e80e1b8c 100644 --- a/source/dnode/vnode/src/tsdb/tsdbReadUtil.h +++ b/source/dnode/vnode/src/tsdb/tsdbReadUtil.h @@ -94,6 +94,7 @@ typedef struct STableBlockScanInfo { int32_t sttBlockDelIndex; // delete index for last block bool iterInit; // whether to initialize the in-memory skip list iterator or not bool cleanSttBlocks; // stt block is clean in current fileset + bool sttBlockReturned; // result block returned alreay int64_t numOfRowsInStt; STimeWindow sttWindow; } STableBlockScanInfo;