diff --git a/include/libs/executor/executor.h b/include/libs/executor/executor.h index 1fe30a2d66..0bca254e14 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 6a71d441b0..cfa2964e16 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 c5f040c987..51842a8ae4 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 de918e0034..d8c85c5ffb 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 3ee8ea9452..01baba5a52 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 cde8346487..066912fbdf 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 17190d8436..267cb36769 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 46e68f46ec..e47edb8a1e 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 0e17a01d05..8222000cd6 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 910dd524cb..139e7d4bf4 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 b14bc649dd..dec24010fc 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