From f93af4d2e0f9d39d45ad196e526575c3879d29d0 Mon Sep 17 00:00:00 2001 From: slzhou Date: Sun, 16 Jul 2023 20:28:54 +0800 Subject: [PATCH] enhance: pass simple test --- source/libs/executor/inc/executorInt.h | 1 + source/libs/executor/src/scanoperator.c | 19 +++++-------------- 2 files changed, 6 insertions(+), 14 deletions(-) diff --git a/source/libs/executor/inc/executorInt.h b/source/libs/executor/inc/executorInt.h index 3b3f2cbb8a..6aa93a9c5e 100644 --- a/source/libs/executor/inc/executorInt.h +++ b/source/libs/executor/inc/executorInt.h @@ -238,6 +238,7 @@ typedef struct STableMergeScanInfo { SArray* pSortInfo; SSortHandle* pSortHandle; SSDataBlock* pSortInputBlock; + SSDataBlock* pReaderBlock; int64_t startTs; // sort start time SArray* sortSourceParams; SLimitInfo limitInfo; diff --git a/source/libs/executor/src/scanoperator.c b/source/libs/executor/src/scanoperator.c index cf1e93d3f2..93addef91d 100644 --- a/source/libs/executor/src/scanoperator.c +++ b/source/libs/executor/src/scanoperator.c @@ -53,7 +53,6 @@ typedef struct STableMergeScanSortSourceParam { SOperatorInfo* pOperator; int32_t readerIdx; uint64_t uid; - SSDataBlock* inputBlock; } STableMergeScanSortSourceParam; typedef struct STableCountScanOperatorInfo { @@ -2735,7 +2734,7 @@ static SSDataBlock* getTableDataBlockImpl(void* param) { SStorageAPI* pAPI = &pTaskInfo->storageAPI; int32_t readIdx = source->readerIdx; - SSDataBlock* pBlock = source->inputBlock; + SSDataBlock* pBlock = pInfo->pReaderBlock; int32_t code = 0; int64_t st = taosGetTimestampUs(); @@ -2753,6 +2752,7 @@ static SSDataBlock* getTableDataBlockImpl(void* param) { } else if (pInfo->readIdx != readIdx + pInfo->tableStartIndex) { pAPI->tsdReader.tsdSetQueryTableList(pInfo->base.dataReader, p, 1); pAPI->tsdReader.tsdReaderResetStatus(pInfo->base.dataReader, &pInfo->base.cond); + pInfo->readIdx = readIdx + pInfo->tableStartIndex ; } STsdbReader* reader = pInfo->base.dataReader; @@ -2802,8 +2802,6 @@ static SSDataBlock* getTableDataBlockImpl(void* param) { return pBlock; } - blockDataDestroy(source->inputBlock); - source->inputBlock = NULL; return NULL; } @@ -2872,7 +2870,6 @@ int32_t startGroupTableMergeScan(SOperatorInfo* pOperator) { STableMergeScanSortSourceParam param = {0}; param.readerIdx = i; param.pOperator = pOperator; - param.inputBlock = createOneDataBlock(pInfo->pResBlock, false); taosArrayPush(pInfo->sortSourceParams, ¶m); } @@ -2906,10 +2903,6 @@ int32_t stopGroupTableMergeScan(SOperatorInfo* pOperator) { pInfo->sortExecInfo.readBytes += sortExecInfo.readBytes; pInfo->sortExecInfo.writeBytes += sortExecInfo.writeBytes; - for (int32_t i = 0; i < taosArrayGetSize(pInfo->sortSourceParams); ++i) { - STableMergeScanSortSourceParam* param = taosArrayGet(pInfo->sortSourceParams, i); - blockDataDestroy(param->inputBlock); - } taosArrayClear(pInfo->sortSourceParams); tsortDestroySortHandle(pInfo->pSortHandle); @@ -3014,11 +3007,6 @@ void destroyTableMergeScanOperatorInfo(void* param) { int32_t numOfTable = taosArrayGetSize(pTableScanInfo->sortSourceParams); - for (int32_t i = 0; i < numOfTable; i++) { - STableMergeScanSortSourceParam* p = taosArrayGet(pTableScanInfo->sortSourceParams, i); - blockDataDestroy(p->inputBlock); - } - pTableScanInfo->base.readerAPI.tsdReaderClose(pTableScanInfo->base.dataReader); pTableScanInfo->base.dataReader = NULL; @@ -3030,6 +3018,7 @@ void destroyTableMergeScanOperatorInfo(void* param) { pTableScanInfo->pResBlock = blockDataDestroy(pTableScanInfo->pResBlock); pTableScanInfo->pSortInputBlock = blockDataDestroy(pTableScanInfo->pSortInputBlock); + pTableScanInfo->pReaderBlock = blockDataDestroy(pTableScanInfo->pReaderBlock); taosArrayDestroy(pTableScanInfo->pSortInfo); taosMemoryFreeClear(param); @@ -3115,6 +3104,8 @@ SOperatorInfo* createTableMergeScanOperatorInfo(STableScanPhysiNode* pTableScanN pInfo->pSortInputBlock = createOneDataBlock(pInfo->pResBlock, false); initLimitInfo(pTableScanNode->scan.node.pLimit, pTableScanNode->scan.node.pSlimit, &pInfo->limitInfo); + pInfo->pReaderBlock = createOneDataBlock(pInfo->pResBlock, false); + int32_t rowSize = pInfo->pResBlock->info.rowSize; uint32_t nCols = taosArrayGetSize(pInfo->pResBlock->pDataBlock); pInfo->bufPageSize = getProperSortPageSize(rowSize, nCols);