diff --git a/source/dnode/vnode/src/inc/tsdb.h b/source/dnode/vnode/src/inc/tsdb.h index 8c7f9be062a4c47d1b4352fe12f06262867f8d1d..8bca22fea148415622c1e3175493c7197328c87c 100644 --- a/source/dnode/vnode/src/inc/tsdb.h +++ b/source/dnode/vnode/src/inc/tsdb.h @@ -644,7 +644,6 @@ typedef struct { } SRowInfo; typedef struct SSttBlockLoadInfo { - int32_t sttFileIndex; SBlockData blockData[2]; SArray *aSttBlk; int32_t blockIndex[2]; // to denote the loaded block in the corresponding position. diff --git a/source/dnode/vnode/src/tsdb/tsdbMergeTree.c b/source/dnode/vnode/src/tsdb/tsdbMergeTree.c index beb0004e24a7367c82deaf1d1239780b73982c14..4347550c2d1bef28f31de0b1c69725e94fa1f11d 100644 --- a/source/dnode/vnode/src/tsdb/tsdbMergeTree.c +++ b/source/dnode/vnode/src/tsdb/tsdbMergeTree.c @@ -90,22 +90,23 @@ static SBlockData* loadBlockIfMissing(SLDataIter *pIter) { int32_t code = 0; SSttBlockLoadInfo* pInfo = pIter->pBlockLoadInfo; - if (pInfo->blockIndex[0] == pIter->iStt) { + if (pInfo->blockIndex[0] == pIter->iSttBlk) { return &pInfo->blockData[0]; } - if (pInfo->blockIndex[1] == pIter->iStt) { + if (pInfo->blockIndex[1] == pIter->iSttBlk) { return &pInfo->blockData[1]; } pInfo->currentLoadBlockIndex ^= 1; if (pIter->pSttBlk != NULL) { // current block not loaded yet code = tsdbReadSttBlock(pIter->pReader, pIter->iStt, pIter->pSttBlk, &pInfo->blockData[pInfo->currentLoadBlockIndex]); + tsdbDebug("read last block, index:%d, last file index:%d", pIter->iSttBlk, pIter->iStt); if (code != TSDB_CODE_SUCCESS) { goto _exit; } - pInfo->blockIndex[pInfo->currentLoadBlockIndex] = pIter->iStt; + pInfo->blockIndex[pInfo->currentLoadBlockIndex] = pIter->iSttBlk; pIter->iRow = (pIter->backward) ? pInfo->blockData[pInfo->currentLoadBlockIndex].nRow : -1; } @@ -136,26 +137,13 @@ int32_t tLDataIterOpen(struct SLDataIter **pIter, SDataFReader *pReader, int32_t (*pIter)->timeWindow = *pTimeWindow; (*pIter)->pBlockLoadInfo = pBlockLoadInfo; - - if (pBlockLoadInfo->aSttBlk == NULL) { - // loaded into the common shared objects - pBlockLoadInfo->aSttBlk = taosArrayInit(0, sizeof(SSttBlk)); - if (pBlockLoadInfo->aSttBlk == NULL) { - code = TSDB_CODE_OUT_OF_MEMORY; - goto _exit; - } - + if (taosArrayGetSize(pBlockLoadInfo->aSttBlk) == 0) { code = tsdbReadSttBlk(pReader, iStt, pBlockLoadInfo->aSttBlk); if (code) { goto _exit; } } - code = tsdbReadSttBlk(pReader, iStt, pBlockLoadInfo->aSttBlk); - if (code) { - goto _exit; - } - size_t size = taosArrayGetSize(pBlockLoadInfo->aSttBlk); // find the start block