From 10cd3c0f298f23cb3a453d39fdd91aba3f8a667c Mon Sep 17 00:00:00 2001 From: Haojun Liao Date: Sun, 6 Nov 2022 15:18:33 +0800 Subject: [PATCH] fix(query): remove the invalid capacity changing. --- source/common/src/tdatablock.c | 4 +--- source/libs/executor/src/projectoperator.c | 3 +-- source/libs/executor/src/sortoperator.c | 5 +++-- tests/system-test/2-query/cast.py | 2 +- 4 files changed, 6 insertions(+), 8 deletions(-) diff --git a/source/common/src/tdatablock.c b/source/common/src/tdatablock.c index 9bb2552e68..b8321679e8 100644 --- a/source/common/src/tdatablock.c +++ b/source/common/src/tdatablock.c @@ -280,16 +280,14 @@ int32_t colDataMergeCol(SColumnInfoData* pColumnInfoData, int32_t numOfRow1, int memcpy(pColumnInfoData->pData + oldLen, pSource->pData, len); pColumnInfoData->varmeta.length = len + oldLen; } else { - if (finalNumOfRows > *capacity || (numOfRow1 == 0 && pColumnInfoData->info.bytes != 0)) { + if (finalNumOfRows > (*capacity)) { // all data may be null, when the pColumnInfoData->info.type == 0, bytes == 0; - // ASSERT(finalNumOfRows * pColumnInfoData->info.bytes); char* tmp = taosMemoryRealloc(pColumnInfoData->pData, finalNumOfRows * pColumnInfoData->info.bytes); if (tmp == NULL) { return TSDB_CODE_OUT_OF_MEMORY; } pColumnInfoData->pData = tmp; - if (BitmapLen(numOfRow1) < BitmapLen(finalNumOfRows)) { char* btmp = taosMemoryRealloc(pColumnInfoData->nullbitmap, BitmapLen(finalNumOfRows)); uint32_t extend = BitmapLen(finalNumOfRows) - BitmapLen(numOfRow1); diff --git a/source/libs/executor/src/projectoperator.c b/source/libs/executor/src/projectoperator.c index 4e4c33d4c3..ba076233aa 100644 --- a/source/libs/executor/src/projectoperator.c +++ b/source/libs/executor/src/projectoperator.c @@ -384,6 +384,7 @@ SOperatorInfo* createIndefinitOutputOperatorInfo(SOperatorInfo* downstream, SPhy initBasicInfo(&pInfo->binfo, pResBlock); initResultSizeInfo(&pOperator->resultInfo, numOfRows); + blockDataEnsureCapacity(pResBlock, numOfRows); int32_t code = initAggInfo(pSup, &pInfo->aggSup, pExprInfo, numOfExpr, keyBufSize, pTaskInfo->id.str); if (code != TSDB_CODE_SUCCESS) { @@ -391,8 +392,6 @@ SOperatorInfo* createIndefinitOutputOperatorInfo(SOperatorInfo* downstream, SPhy } setFunctionResultOutput(pOperator, &pInfo->binfo, &pInfo->aggSup, MAIN_SCAN, numOfExpr); - - pInfo->binfo.pRes = pResBlock; pInfo->pCondition = pPhyNode->node.pConditions; pInfo->pPseudoColInfo = setRowTsColumnOutputInfo(pSup->pCtx, numOfExpr); diff --git a/source/libs/executor/src/sortoperator.c b/source/libs/executor/src/sortoperator.c index 47fea9577a..7abf05e7d6 100644 --- a/source/libs/executor/src/sortoperator.c +++ b/source/libs/executor/src/sortoperator.c @@ -631,6 +631,8 @@ SSDataBlock* getMultiwaySortedBlockData(SSortHandle* pHandle, SSDataBlock* pData SOperatorInfo* pOperator) { SMultiwayMergeOperatorInfo* pInfo = pOperator->info; + int32_t capacity = pOperator->resultInfo.capacity; + SExecTaskInfo* pTaskInfo = pOperator->pTaskInfo; blockDataCleanup(pDataBlock); @@ -639,9 +641,7 @@ SSDataBlock* getMultiwaySortedBlockData(SSortHandle* pHandle, SSDataBlock* pData return NULL; } - int32_t capacity = pOperator->resultInfo.capacity; blockDataEnsureCapacity(p, capacity); - while (1) { doGetSortedBlockData(pInfo, pHandle, capacity, p); if (p->info.rows == 0) { @@ -697,6 +697,7 @@ SSDataBlock* doMultiwayMerge(SOperatorInfo* pOperator) { } else { doSetOperatorCompleted(pOperator); } + return pBlock; } diff --git a/tests/system-test/2-query/cast.py b/tests/system-test/2-query/cast.py index b3969a9c45..e6542c7c2b 100644 --- a/tests/system-test/2-query/cast.py +++ b/tests/system-test/2-query/cast.py @@ -15,7 +15,7 @@ class TDTestCase: def init(self, conn, logSql, replicaVar=1): self.replicaVar = int(replicaVar) tdLog.debug(f"start to excute {__file__}") - tdSql.init(conn.cursor()) + tdSql.init(conn.cursor(), True) self.dbname = "db" def __cast_to_bigint(self, col_name, tbname):