diff --git a/include/libs/executor/executor.h b/include/libs/executor/executor.h index 1fe30a2d66b0a42470ca846d1682ec68bd64f4f3..0bca254e14a9548ff7ac7a0bd7b832bb73271cdd 100644 --- a/include/libs/executor/executor.h +++ b/include/libs/executor/executor.h @@ -142,8 +142,11 @@ int32_t qGetQueryTableSchemaVersion(qTaskInfo_t tinfo, char* dbName, char* table */ int32_t qExecTaskOpt(qTaskInfo_t tinfo, SArray* pResList, uint64_t* useconds, bool* hasMore, SLocalFetch* pLocal); + int32_t qExecTask(qTaskInfo_t tinfo, SSDataBlock** pBlock, uint64_t* useconds); +void qCleanExecTaskBlockBuf(qTaskInfo_t tinfo); + /** * kill the ongoing query asynchronously * @param tinfo qhandle diff --git a/source/common/src/tdatablock.c b/source/common/src/tdatablock.c index 6a71d441b0c13e7259367c8a5682e2af76d8aac0..cfa2964e1643202f26767999e10320195164bbf5 100644 --- a/source/common/src/tdatablock.c +++ b/source/common/src/tdatablock.c @@ -1322,10 +1322,6 @@ int32_t copyDataBlock(SSDataBlock* dst, const SSDataBlock* src) { for (int32_t i = 0; i < numOfCols; ++i) { SColumnInfoData* pDst = taosArrayGet(dst->pDataBlock, i); SColumnInfoData* pSrc = taosArrayGet(src->pDataBlock, i); - if (pSrc->pData == NULL) { - continue; - } - colDataAssign(pDst, pSrc, src->info.rows, &src->info); } diff --git a/source/dnode/vnode/src/sma/smaRollup.c b/source/dnode/vnode/src/sma/smaRollup.c index c5f040c987e217cad768be6a8e54b53f3dd2176a..51842a8ae499e1f2a03035b2c8c06ada3d3280c8 100644 --- a/source/dnode/vnode/src/sma/smaRollup.c +++ b/source/dnode/vnode/src/sma/smaRollup.c @@ -739,11 +739,13 @@ static int32_t tdRSmaExecAndSubmitResult(SSma *pSma, qTaskInfo_t taskInfo, SRSma } } - tdBlockDataDestroy(pResList); + taosArrayDestroy(pResList); + qCleanExecTaskBlockBuf(taskInfo); return TSDB_CODE_SUCCESS; _err: - tdBlockDataDestroy(pResList); + taosArrayDestroy(pResList); + qCleanExecTaskBlockBuf(taskInfo); return TSDB_CODE_FAILED; } diff --git a/source/libs/executor/src/exchangeoperator.c b/source/libs/executor/src/exchangeoperator.c index de918e0034941447f9e90d6c25b7f24a5b2ba197..d8c85c5ffb42ca9ff6f660a49d1a186a8b01da9c 100644 --- a/source/libs/executor/src/exchangeoperator.c +++ b/source/libs/executor/src/exchangeoperator.c @@ -646,6 +646,7 @@ int32_t seqLoadRemoteData(SOperatorInfo* pOperator) { SRetrieveTableRsp* pRsp = pDataInfo->pRsp; SLoadRemoteDataInfo* pLoadInfo = &pExchangeInfo->loadInfo; + if (pRsp->numOfRows == 0) { qDebug("%s vgId:%d, taskID:0x%" PRIx64 " execId:%d %d of total completed, rowsOfSource:%" PRIu64 ", totalRows:%" PRIu64 " try next", diff --git a/source/libs/executor/src/executor.c b/source/libs/executor/src/executor.c index 3ee8ea9452c4a5ea89baef801a9f96e0e7f0a277..01baba5a525cfd380e614277916ee6ed42556d4b 100644 --- a/source/libs/executor/src/executor.c +++ b/source/libs/executor/src/executor.c @@ -572,6 +572,18 @@ int32_t qExecTaskOpt(qTaskInfo_t tinfo, SArray* pResList, uint64_t* useconds, bo return pTaskInfo->code; } +void qCleanExecTaskBlockBuf(qTaskInfo_t tinfo) { + SExecTaskInfo* pTaskInfo = (SExecTaskInfo*)tinfo; + SArray* pList = pTaskInfo->pResultBlockList; + size_t num = taosArrayGetSize(pList); + for(int32_t i = 0; i < num; ++i) { + SSDataBlock** p = taosArrayGet(pTaskInfo->pResultBlockList, i); + blockDataDestroy(*p); + } + + taosArrayClear(pTaskInfo->pResultBlockList); +} + int32_t qExecTask(qTaskInfo_t tinfo, SSDataBlock** pRes, uint64_t* useconds) { SExecTaskInfo* pTaskInfo = (SExecTaskInfo*)tinfo; int64_t threadId = taosGetSelfPthreadId(); diff --git a/source/libs/executor/src/groupoperator.c b/source/libs/executor/src/groupoperator.c index cde8346487d641a5d80e033555c7e507ce0ef42d..066912fbdf26a71f512f3deb283a3f997a20a87b 100644 --- a/source/libs/executor/src/groupoperator.c +++ b/source/libs/executor/src/groupoperator.c @@ -274,10 +274,9 @@ static void doHashGroupbyAgg(SOperatorInfo* pOperator, SSDataBlock* pBlock) { // return; // } - int32_t len = 0; - STimeWindow w = TSWINDOW_INITIALIZER; - + int32_t len = 0; terrno = TSDB_CODE_SUCCESS; + int32_t num = 0; for (int32_t j = 0; j < pBlock->info.rows; ++j) { // Compare with the previous row of this column, and do not set the output buffer again if they are identical. diff --git a/source/libs/function/src/detail/tavgfunction.c b/source/libs/function/src/detail/tavgfunction.c index 17190d84361686a1c2d05333e4dfa95f092bae8d..267cb36769a107c80224b8678d3a3843a384b64d 100644 --- a/source/libs/function/src/detail/tavgfunction.c +++ b/source/libs/function/src/detail/tavgfunction.c @@ -494,7 +494,7 @@ int32_t avgFunction(SqlFunctionCtx* pCtx) { switch(type) { case TSDB_DATA_TYPE_UTINYINT: case TSDB_DATA_TYPE_TINYINT: { - const int8_t* plist = (const int8_t*) &pCol->pData[start]; + const int8_t* plist = (const int8_t*) pCol->pData; // 1. If the CPU supports AVX, let's employ AVX instructions to speedup this loop if (simdAvailable) { diff --git a/source/libs/function/src/detail/tminmax.c b/source/libs/function/src/detail/tminmax.c index 46e68f46ec97d7e375c49da95a60d19024e3ec24..e47edb8a1e65ef98a910def3e6a084a441ddc62c 100644 --- a/source/libs/function/src/detail/tminmax.c +++ b/source/libs/function/src/detail/tminmax.c @@ -827,7 +827,7 @@ int32_t doMinMaxHelper(SqlFunctionCtx* pCtx, int32_t isMinFunc) { if (i >= end) { ASSERT(numOfElems == 0); - return numOfElems; + goto _over; } doExtractVal(pCol, i, end, pCtx, pBuf, isMinFunc); diff --git a/tests/system-test/1-insert/block_wise.py b/tests/system-test/1-insert/block_wise.py index 0e17a01d051975512e6a363f81507b0b07571e44..8222000cd6ab220c8f5df23324228e56d4d37186 100644 --- a/tests/system-test/1-insert/block_wise.py +++ b/tests/system-test/1-insert/block_wise.py @@ -145,7 +145,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(), False) + tdSql.init(conn.cursor(), True) self.precision = "ms" self.sma_count = 0 self.sma_created_index = [] diff --git a/tests/system-test/2-query/avg.py b/tests/system-test/2-query/avg.py index 910dd524cb91aefeb84fbf3aa2fdc7b3bff327a9..139e7d4bf4d2b422013720e1eef7875ad0bfbe9a 100644 --- a/tests/system-test/2-query/avg.py +++ b/tests/system-test/2-query/avg.py @@ -1,5 +1,7 @@ import taos import sys + +import math import numpy as np from util.log import * from util.sql import * @@ -411,7 +413,7 @@ class TDTestCase: tdSql.checkData(0,2,14042.142857143) tdSql.checkData(0,3,53.571428571) tdSql.checkData(0,4,5.828571332045761e+37) - tdSql.checkData(0,5,None) + tdSql.checkData(0,5,math.inf) # check + - * / in functions @@ -421,7 +423,7 @@ class TDTestCase: tdSql.checkData(0,2,14042.142857143) tdSql.checkData(0,3,26.785714286) tdSql.checkData(0,4,2.9142856660228804e+37) - tdSql.checkData(0,5,None) + tdSql.checkData(0,5,math.inf) diff --git a/tests/system-test/2-query/max_partition.py b/tests/system-test/2-query/max_partition.py index b14bc649dd64679bdb59b671b5011cb2a93fbd93..dec24010fcf4a43fa16863a577ad3b49fb160e23 100644 --- a/tests/system-test/2-query/max_partition.py +++ b/tests/system-test/2-query/max_partition.py @@ -7,7 +7,7 @@ class TDTestCase: def init(self, conn, logSql, replicaVar=1): self.replicaVar = int(replicaVar) tdLog.debug("start to execute %s" % __file__) - tdSql.init(conn.cursor()) + tdSql.init(conn.cursor(), True) self.row_nums = 10 self.tb_nums = 10