From 0f97a21163c44e0f4fbb492e5613cf03eb698fe6 Mon Sep 17 00:00:00 2001 From: Haojun Liao Date: Thu, 21 Sep 2023 15:21:01 +0800 Subject: [PATCH] fix(tsdb): set the correct scaninfo to load the tomb data. --- source/dnode/vnode/src/tsdb/tsdbReadUtil.c | 34 +++++++++++----------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/source/dnode/vnode/src/tsdb/tsdbReadUtil.c b/source/dnode/vnode/src/tsdb/tsdbReadUtil.c index 74eb1c7302..a4d2eef093 100644 --- a/source/dnode/vnode/src/tsdb/tsdbReadUtil.c +++ b/source/dnode/vnode/src/tsdb/tsdbReadUtil.c @@ -486,10 +486,15 @@ typedef enum { } ETombBlkCheckEnum; static int32_t doCheckTombBlock(STombBlock* pBlock, STsdbReader* pReader, int32_t numOfTables, int32_t* j, - STableBlockScanInfo** pScanInfo, ETombBlkCheckEnum* pRet) { + ETombBlkCheckEnum* pRet) { int32_t code = 0; STombRecord record = {0}; + uint64_t uid = pReader->status.uidList.tableUidList[*j]; + STableBlockScanInfo* pScanInfo = getTableBlockScanInfo(pReader->status.pTableMap, uid, pReader->idStr); + if (pScanInfo->pFileDelData == NULL) { + pScanInfo->pFileDelData = taosArrayInit(4, sizeof(SDelData)); + } for (int32_t k = 0; k < TARRAY2_SIZE(pBlock->suid); ++k) { code = tTombBlockGet(pBlock, k, &record); @@ -507,11 +512,9 @@ static int32_t doCheckTombBlock(STombBlock* pBlock, STsdbReader* pReader, int32_ return TSDB_CODE_SUCCESS; } - bool newTable = false; if (uid < record.uid) { while ((*j) < numOfTables && pReader->status.uidList.tableUidList[*j] < record.uid) { (*j) += 1; - newTable = true; } if ((*j) >= numOfTables) { @@ -520,6 +523,10 @@ static int32_t doCheckTombBlock(STombBlock* pBlock, STsdbReader* pReader, int32_ } uid = pReader->status.uidList.tableUidList[*j]; + pScanInfo = getTableBlockScanInfo(pReader->status.pTableMap, uid, pReader->idStr); + if (pScanInfo->pFileDelData == NULL) { + pScanInfo->pFileDelData = taosArrayInit(4, sizeof(SDelData)); + } } if (record.uid < uid) { @@ -528,16 +535,9 @@ static int32_t doCheckTombBlock(STombBlock* pBlock, STsdbReader* pReader, int32_ ASSERT(record.suid == pReader->info.suid && uid == record.uid); - if (newTable) { - (*pScanInfo) = getTableBlockScanInfo(pReader->status.pTableMap, uid, pReader->idStr); - if ((*pScanInfo)->pFileDelData == NULL) { - (*pScanInfo)->pFileDelData = taosArrayInit(4, sizeof(SDelData)); - } - } - if (record.version <= pReader->info.verRange.maxVer) { SDelData delData = {.version = record.version, .sKey = record.skey, .eKey = record.ekey}; - taosArrayPush((*pScanInfo)->pFileDelData, &delData); + taosArrayPush(pScanInfo->pFileDelData, &delData); } } @@ -581,15 +581,15 @@ static int32_t doLoadTombDataFromTombBlk(const TTombBlkArray* pTombBlkArray, STs return code; } - uint64_t uid = pReader->status.uidList.tableUidList[j]; +// uint64_t uid = pReader->status.uidList.tableUidList[j]; - STableBlockScanInfo* pScanInfo = getTableBlockScanInfo(pReader->status.pTableMap, uid, pReader->idStr); - if (pScanInfo->pFileDelData == NULL) { - pScanInfo->pFileDelData = taosArrayInit(4, sizeof(SDelData)); - } +// STableBlockScanInfo* pScanInfo = getTableBlockScanInfo(pReader->status.pTableMap, uid, pReader->idStr); +// if (pScanInfo->pFileDelData == NULL) { +// pScanInfo->pFileDelData = taosArrayInit(4, sizeof(SDelData)); +// } ETombBlkCheckEnum ret = 0; - code = doCheckTombBlock(&block, pReader, numOfTables, &j, &pScanInfo, &ret); + code = doCheckTombBlock(&block, pReader, numOfTables, &j, &ret); tTombBlockDestroy(&block); if (code != TSDB_CODE_SUCCESS || ret == BLK_CHECK_QUIT) {