diff --git a/include/libs/executor/executor.h b/include/libs/executor/executor.h index ad57cbf4e4a9b5afb67a3954ed29c19546ea1064..e0fce2aa6a7d2d7da21d11c5989486d4352c9b34 100644 --- a/include/libs/executor/executor.h +++ b/include/libs/executor/executor.h @@ -165,15 +165,6 @@ int32_t qGetQualifiedTableIdList(void* pTableList, const char* tagCond, int32_t */ int32_t qUpdateQueriedTableIdList(qTaskInfo_t tinfo, int64_t uid, int32_t type); -/** - * release the query handle and decrease the reference count in cache - * @param pMgmt - * @param pQInfo - * @param freeHandle - * @return - */ -void** qReleaseTask(void* pMgmt, void* pQInfo, bool freeHandle); - void qProcessFetchRsp(void* parent, struct SRpcMsg* pMsg, struct SEpSet* pEpSet); int32_t qGetExplainExecInfo(qTaskInfo_t tinfo, int32_t *resNum, SExplainExecInfo **pRes); diff --git a/source/libs/executor/src/executorimpl.c b/source/libs/executor/src/executorimpl.c index 46c30c43c7ac11351227d89651e3797c534d7a17..f9b06f360fde05706b52d2762d931a377f465daf 100644 --- a/source/libs/executor/src/executorimpl.c +++ b/source/libs/executor/src/executorimpl.c @@ -4184,6 +4184,7 @@ static void destroyOperatorInfo(SOperatorInfo* pOperator) { pOperator->numOfDownstream = 0; } + taosMemoryFree(pOperator->pExpr); taosMemoryFreeClear(pOperator->info); taosMemoryFreeClear(pOperator); } @@ -4195,8 +4196,6 @@ int32_t doInitAggInfoSup(SAggSupporter* pAggSup, SqlFunctionCtx* pCtx, int32_t n pAggSup->resultRowSize = getResultRowSize(pCtx, numOfOutput); pAggSup->keyBuf = taosMemoryCalloc(1, keyBufSize + POINTER_BYTES + sizeof(int64_t)); pAggSup->pResultRowHashTable = taosHashInit(10, hashFn, true, HASH_NO_LOCK); - // pAggSup->pResultRowListSet = taosHashInit(100, hashFn, false, HASH_NO_LOCK); - // pAggSup->pResultRowArrayList = taosArrayInit(10, sizeof(SResultRowCell)); if (pAggSup->keyBuf == NULL /*|| pAggSup->pResultRowArrayList == NULL || pAggSup->pResultRowListSet == NULL*/ || pAggSup->pResultRowHashTable == NULL) { @@ -4358,6 +4357,7 @@ void destroySFillOperatorInfo(void* param, int32_t numOfOutput) { static void destroyProjectOperatorInfo(void* param, int32_t numOfOutput) { SProjectOperatorInfo* pInfo = (SProjectOperatorInfo*)param; doDestroyBasicInfo(&pInfo->binfo, numOfOutput); + cleanupAggSup(&pInfo->aggSup); } void destroyExchangeOperatorInfo(void* param, int32_t numOfOutput) { @@ -4687,7 +4687,7 @@ static SExecTaskInfo* createExecTaskInfo(uint64_t queryId, uint64_t taskId, EOPT char* p = taosMemoryCalloc(1, 128); snprintf(p, 128, "TID:0x%" PRIx64 " QID:0x%" PRIx64, taskId, queryId); - pTaskInfo->id.str = strdup(p); + pTaskInfo->id.str = p; return pTaskInfo; } @@ -5287,6 +5287,7 @@ void doDestroyTask(SExecTaskInfo* pTaskInfo) { qDebug("%s execTask is freed", GET_TASKID(pTaskInfo)); doDestroyTableQueryInfo(&pTaskInfo->tableqinfoGroupInfo); + destroyOperatorInfo(pTaskInfo->pRoot); // taosArrayDestroy(pTaskInfo->summary.queryProfEvents); // taosHashCleanup(pTaskInfo->summary.operatorProfResults); diff --git a/source/libs/executor/src/scanoperator.c b/source/libs/executor/src/scanoperator.c index b28a65d1d25ca2c598963919084f899768c86ea3..132c279218e401a220761c55c30873d0ef296f26 100644 --- a/source/libs/executor/src/scanoperator.c +++ b/source/libs/executor/src/scanoperator.c @@ -670,6 +670,8 @@ static void destroySysScanOperator(void* param, int32_t numOfOutput) { if (strncasecmp(name, TSDB_INS_TABLE_USER_TABLES, TSDB_TABLE_FNAME_LEN) == 0) { metaCloseTbCursor(pInfo->pCur); } + + taosArrayDestroy(pInfo->scanCols); } EDealRes getDBNameFromConditionWalker(SNode* pNode, void* pContext) { @@ -1248,6 +1250,11 @@ static SSDataBlock* doTagScan(SOperatorInfo* pOperator) { SExprInfo* pExprInfo = &pOperator->pExpr[0]; SSDataBlock* pRes = pInfo->pRes; + if (taosArrayGetSize(pInfo->pTableGroups->pGroupList) == 0) { + setTaskStatus(pTaskInfo, TASK_COMPLETED); + return NULL; + } + SArray* pa = taosArrayGetP(pInfo->pTableGroups->pGroupList, 0); char str[512] = {0};