fix: free operator
This commit is contained in:
parent
fec49abf33
commit
d43df78537
|
@ -182,6 +182,7 @@ int16_t getOperatorResultBlockId(struct SOperatorInfo* pOperator, int32_t
|
||||||
int32_t createOperator(SPhysiNode* pPhyNode, SExecTaskInfo* pTaskInfo, SReadHandle* pHandle, SNode* pTagCond,
|
int32_t createOperator(SPhysiNode* pPhyNode, SExecTaskInfo* pTaskInfo, SReadHandle* pHandle, SNode* pTagCond,
|
||||||
SNode* pTagIndexCond, const char* pUser, const char* dbname, SOperatorInfo** pOptrInfo);
|
SNode* pTagIndexCond, const char* pUser, const char* dbname, SOperatorInfo** pOptrInfo);
|
||||||
void destroyOperator(SOperatorInfo* pOperator);
|
void destroyOperator(SOperatorInfo* pOperator);
|
||||||
|
void destroyOperatorAndDownstreams(SOperatorInfo* pOperator, SOperatorInfo** stream, int32_t num);
|
||||||
|
|
||||||
int32_t extractOperatorInTree(SOperatorInfo* pOperator, int32_t type, const char* id, SOperatorInfo** pOptrInfo);
|
int32_t extractOperatorInTree(SOperatorInfo* pOperator, int32_t type, const char* id, SOperatorInfo** pOptrInfo);
|
||||||
int32_t getTableScanInfo(SOperatorInfo* pOperator, int32_t* order, int32_t* scanFlag, bool inheritUsOrder);
|
int32_t getTableScanInfo(SOperatorInfo* pOperator, int32_t* order, int32_t* scanFlag, bool inheritUsOrder);
|
||||||
|
|
|
@ -137,22 +137,14 @@ int32_t createAggregateOperatorInfo(SOperatorInfo* downstream, SAggPhysiNode* pA
|
||||||
}
|
}
|
||||||
|
|
||||||
*pOptrInfo = pOperator;
|
*pOptrInfo = pOperator;
|
||||||
return code;
|
return TSDB_CODE_SUCCESS;
|
||||||
|
|
||||||
_error:
|
_error:
|
||||||
if (code != TSDB_CODE_SUCCESS) {
|
qError("%s failed at line %d since %s", __func__, lino, tstrerror(code));
|
||||||
qError("%s failed at line %d since %s", __func__, lino, tstrerror(code));
|
|
||||||
}
|
|
||||||
if (pInfo != NULL) {
|
if (pInfo != NULL) {
|
||||||
destroyAggOperatorInfo(pInfo);
|
destroyAggOperatorInfo(pInfo);
|
||||||
}
|
}
|
||||||
if (pOperator != NULL) {
|
destroyOperatorAndDownstreams(pOperator, &downstream, 1);
|
||||||
pOperator->info = NULL;
|
|
||||||
if (pOperator->pDownstream == NULL && downstream != NULL) {
|
|
||||||
destroyOperator(downstream);
|
|
||||||
}
|
|
||||||
destroyOperator(pOperator);
|
|
||||||
}
|
|
||||||
pTaskInfo->code = code;
|
pTaskInfo->code = code;
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
|
|
@ -378,20 +378,14 @@ int32_t createCountwindowOperatorInfo(SOperatorInfo* downstream, SPhysiNode* phy
|
||||||
}
|
}
|
||||||
|
|
||||||
*pOptrInfo = pOperator;
|
*pOptrInfo = pOperator;
|
||||||
return code;
|
return TSDB_CODE_SUCCESS;
|
||||||
|
|
||||||
_error:
|
_error:
|
||||||
if (pInfo != NULL) {
|
if (pInfo != NULL) {
|
||||||
destroyCountWindowOperatorInfo(pInfo);
|
destroyCountWindowOperatorInfo(pInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pOperator != NULL) {
|
destroyOperatorAndDownstreams(pOperator, &downstream, 1);
|
||||||
pOperator->info = NULL;
|
|
||||||
if (pOperator->pDownstream == NULL && downstream != NULL) {
|
|
||||||
destroyOperator(downstream);
|
|
||||||
}
|
|
||||||
destroyOperator(pOperator);
|
|
||||||
}
|
|
||||||
pTaskInfo->code = code;
|
pTaskInfo->code = code;
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1006,14 +1006,14 @@ int32_t createDynQueryCtrlOperatorInfo(SOperatorInfo** pDownstream, int32_t numO
|
||||||
NULL, optrDefaultGetNextExtFn, NULL);
|
NULL, optrDefaultGetNextExtFn, NULL);
|
||||||
|
|
||||||
*pOptrInfo = pOperator;
|
*pOptrInfo = pOperator;
|
||||||
return code;
|
return TSDB_CODE_SUCCESS;
|
||||||
|
|
||||||
_error:
|
_error:
|
||||||
if (pInfo != NULL) {
|
if (pInfo != NULL) {
|
||||||
destroyDynQueryCtrlOperator(pInfo);
|
destroyDynQueryCtrlOperator(pInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
taosMemoryFree(pOperator);
|
destroyOperatorAndDownstreams(pOperator, pDownstream, numOfDownstream);
|
||||||
pTaskInfo->code = code;
|
pTaskInfo->code = code;
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
|
|
@ -140,20 +140,14 @@ int32_t createEventwindowOperatorInfo(SOperatorInfo* downstream, SPhysiNode* phy
|
||||||
}
|
}
|
||||||
|
|
||||||
*pOptrInfo = pOperator;
|
*pOptrInfo = pOperator;
|
||||||
return code;
|
return TSDB_CODE_SUCCESS;
|
||||||
|
|
||||||
_error:
|
_error:
|
||||||
if (pInfo != NULL) {
|
if (pInfo != NULL) {
|
||||||
destroyEWindowOperatorInfo(pInfo);
|
destroyEWindowOperatorInfo(pInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pOperator != NULL) {
|
destroyOperatorAndDownstreams(pOperator, &downstream, 1);
|
||||||
pOperator->info = NULL;
|
|
||||||
if (pOperator->pDownstream == NULL && downstream != NULL) {
|
|
||||||
destroyOperator(downstream);
|
|
||||||
}
|
|
||||||
destroyOperator(pOperator);
|
|
||||||
}
|
|
||||||
pTaskInfo->code = code;
|
pTaskInfo->code = code;
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
|
|
@ -444,7 +444,7 @@ int32_t createExchangeOperatorInfo(void* pTransporter, SExchangePhysiNode* pExNo
|
||||||
pOperator->fpSet = createOperatorFpSet(prepareLoadRemoteData, loadRemoteDataNext, NULL, destroyExchangeOperatorInfo,
|
pOperator->fpSet = createOperatorFpSet(prepareLoadRemoteData, loadRemoteDataNext, NULL, destroyExchangeOperatorInfo,
|
||||||
optrDefaultBufFn, NULL, optrDefaultGetNextExtFn, NULL);
|
optrDefaultBufFn, NULL, optrDefaultGetNextExtFn, NULL);
|
||||||
*pOptrInfo = pOperator;
|
*pOptrInfo = pOperator;
|
||||||
return code;
|
return TSDB_CODE_SUCCESS;
|
||||||
|
|
||||||
_error:
|
_error:
|
||||||
if (code != TSDB_CODE_SUCCESS) {
|
if (code != TSDB_CODE_SUCCESS) {
|
||||||
|
|
|
@ -511,26 +511,21 @@ int32_t createFillOperatorInfo(SOperatorInfo* downstream, SFillPhysiNode* pPhyFi
|
||||||
optrDefaultGetNextExtFn, NULL);
|
optrDefaultGetNextExtFn, NULL);
|
||||||
|
|
||||||
code = appendDownstream(pOperator, &downstream, 1);
|
code = appendDownstream(pOperator, &downstream, 1);
|
||||||
|
if (code != TSDB_CODE_SUCCESS) {
|
||||||
|
goto _error;
|
||||||
|
}
|
||||||
|
|
||||||
*pOptrInfo = pOperator;
|
*pOptrInfo = pOperator;
|
||||||
return code;
|
return TSDB_CODE_SUCCESS;
|
||||||
|
|
||||||
_error:
|
_error:
|
||||||
if (code != TSDB_CODE_SUCCESS) {
|
qError("%s failed at line %d since %s", __func__, lino, tstrerror(code));
|
||||||
qError("%s failed at line %d since %s", __func__, lino, tstrerror(code));
|
|
||||||
}
|
|
||||||
if (pInfo != NULL) {
|
if (pInfo != NULL) {
|
||||||
destroyFillOperatorInfo(pInfo);
|
destroyFillOperatorInfo(pInfo);
|
||||||
}
|
}
|
||||||
|
destroyOperatorAndDownstreams(pOperator, &downstream, 1);
|
||||||
pTaskInfo->code = code;
|
pTaskInfo->code = code;
|
||||||
if (pOperator != NULL) {
|
|
||||||
pOperator->info = NULL;
|
|
||||||
if (pOperator->pDownstream == NULL && downstream != NULL) {
|
|
||||||
destroyOperator(downstream);
|
|
||||||
}
|
|
||||||
destroyOperator(pOperator);
|
|
||||||
}
|
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1510,20 +1510,14 @@ int32_t createGroupCacheOperatorInfo(SOperatorInfo** pDownstream, int32_t numOfD
|
||||||
qTrace("new group cache operator, maxCacheSize:%" PRId64 ", globalGrp:%d, batchFetch:%d", pInfo->maxCacheSize, pInfo->globalGrp, pInfo->batchFetch);
|
qTrace("new group cache operator, maxCacheSize:%" PRId64 ", globalGrp:%d, batchFetch:%d", pInfo->maxCacheSize, pInfo->globalGrp, pInfo->batchFetch);
|
||||||
|
|
||||||
*pOptrInfo = pOperator;
|
*pOptrInfo = pOperator;
|
||||||
return code;
|
return TSDB_CODE_SUCCESS;
|
||||||
|
|
||||||
_error:
|
_error:
|
||||||
if (pInfo != NULL) {
|
if (pInfo != NULL) {
|
||||||
destroyGroupCacheOperator(pInfo);
|
destroyGroupCacheOperator(pInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pOperator != NULL) {
|
destroyOperatorAndDownstreams(pOperator, pDownstream, numOfDownstream);
|
||||||
pOperator->info = NULL;
|
|
||||||
if (pOperator->pDownstream == NULL && pDownstream != NULL && (*pDownstream) != NULL) {
|
|
||||||
destroyOperator(*pDownstream);
|
|
||||||
}
|
|
||||||
destroyOperator(pOperator);
|
|
||||||
}
|
|
||||||
pTaskInfo->code = code;
|
pTaskInfo->code = code;
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
|
|
@ -600,22 +600,12 @@ int32_t createGroupOperatorInfo(SOperatorInfo* downstream, SAggPhysiNode* pAggNo
|
||||||
QUERY_CHECK_CODE(code, lino, _error);
|
QUERY_CHECK_CODE(code, lino, _error);
|
||||||
|
|
||||||
*pOptrInfo = pOperator;
|
*pOptrInfo = pOperator;
|
||||||
return code;
|
return TSDB_CODE_SUCCESS;
|
||||||
|
|
||||||
_error:
|
_error:
|
||||||
|
if (pInfo != NULL) destroyGroupOperatorInfo(pInfo);
|
||||||
|
destroyOperatorAndDownstreams(pOperator, &downstream, 1);
|
||||||
pTaskInfo->code = code;
|
pTaskInfo->code = code;
|
||||||
if (pInfo != NULL) {
|
|
||||||
destroyGroupOperatorInfo(pInfo);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (pOperator) {
|
|
||||||
pOperator->info = NULL;
|
|
||||||
if (pOperator->pDownstream == NULL && downstream != NULL) {
|
|
||||||
destroyOperator(downstream);
|
|
||||||
}
|
|
||||||
destroyOperator(pOperator);
|
|
||||||
}
|
|
||||||
|
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1229,20 +1219,14 @@ int32_t createPartitionOperatorInfo(SOperatorInfo* downstream, SPartitionPhysiNo
|
||||||
}
|
}
|
||||||
|
|
||||||
*pOptrInfo = pOperator;
|
*pOptrInfo = pOperator;
|
||||||
return code;
|
return TSDB_CODE_SUCCESS;
|
||||||
|
|
||||||
_error:
|
_error:
|
||||||
if (pInfo != NULL) {
|
if (pInfo != NULL) {
|
||||||
destroyPartitionOperatorInfo(pInfo);
|
destroyPartitionOperatorInfo(pInfo);
|
||||||
}
|
}
|
||||||
pTaskInfo->code = code;
|
pTaskInfo->code = code;
|
||||||
if (pOperator != NULL) {
|
destroyOperatorAndDownstreams(pOperator, &downstream, 1);
|
||||||
pOperator->info = NULL;
|
|
||||||
if (pOperator->pDownstream == NULL && downstream != NULL) {
|
|
||||||
destroyOperator(downstream);
|
|
||||||
}
|
|
||||||
destroyOperator(pOperator);
|
|
||||||
}
|
|
||||||
TAOS_RETURN(code);
|
TAOS_RETURN(code);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1778,18 +1762,12 @@ int32_t createStreamPartitionOperatorInfo(SOperatorInfo* downstream, SStreamPart
|
||||||
QUERY_CHECK_CODE(code, lino, _error);
|
QUERY_CHECK_CODE(code, lino, _error);
|
||||||
|
|
||||||
*pOptrInfo = pOperator;
|
*pOptrInfo = pOperator;
|
||||||
return code;
|
return TSDB_CODE_SUCCESS;
|
||||||
|
|
||||||
_error:
|
_error:
|
||||||
pTaskInfo->code = code;
|
pTaskInfo->code = code;
|
||||||
if (pInfo != NULL) destroyStreamPartitionOperatorInfo(pInfo);
|
if (pInfo != NULL) destroyStreamPartitionOperatorInfo(pInfo);
|
||||||
if (pOperator != NULL) {
|
destroyOperatorAndDownstreams(pOperator, &downstream, 1);
|
||||||
pOperator->info = NULL;
|
|
||||||
if (pOperator->pDownstream == NULL && downstream != NULL) {
|
|
||||||
destroyOperator(downstream);
|
|
||||||
}
|
|
||||||
destroyOperator(pOperator);
|
|
||||||
}
|
|
||||||
qError("%s failed at line %d since %s", __func__, lino, tstrerror(code));
|
qError("%s failed at line %d since %s", __func__, lino, tstrerror(code));
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1228,15 +1228,14 @@ int32_t createHashJoinOperatorInfo(SOperatorInfo** pDownstream, int32_t numOfDow
|
||||||
qDebug("create hash Join operator done");
|
qDebug("create hash Join operator done");
|
||||||
|
|
||||||
*pOptrInfo = pOperator;
|
*pOptrInfo = pOperator;
|
||||||
return code;
|
return TSDB_CODE_SUCCESS;
|
||||||
|
|
||||||
_return:
|
_return:
|
||||||
|
|
||||||
if (pInfo != NULL) {
|
if (pInfo != NULL) {
|
||||||
destroyHashJoinOperator(pInfo);
|
destroyHashJoinOperator(pInfo);
|
||||||
}
|
}
|
||||||
|
destroyOperatorAndDownstreams(pOperator, pDownstream, numOfDownstream);
|
||||||
taosMemoryFree(pOperator);
|
|
||||||
pTaskInfo->code = code;
|
pTaskInfo->code = code;
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1869,6 +1869,7 @@ int32_t createMergeJoinOperatorInfo(SOperatorInfo** pDownstream, int32_t numOfDo
|
||||||
SSortMergeJoinPhysiNode* pJoinNode, SExecTaskInfo* pTaskInfo, SOperatorInfo** pOptrInfo) {
|
SSortMergeJoinPhysiNode* pJoinNode, SExecTaskInfo* pTaskInfo, SOperatorInfo** pOptrInfo) {
|
||||||
QRY_OPTR_CHECK(pOptrInfo);
|
QRY_OPTR_CHECK(pOptrInfo);
|
||||||
|
|
||||||
|
int32_t oldNum = numOfDownstream;
|
||||||
bool newDownstreams = false;
|
bool newDownstreams = false;
|
||||||
int32_t code = TSDB_CODE_SUCCESS;
|
int32_t code = TSDB_CODE_SUCCESS;
|
||||||
SOperatorInfo* pOperator = NULL;
|
SOperatorInfo* pOperator = NULL;
|
||||||
|
@ -1921,8 +1922,7 @@ _return:
|
||||||
if (newDownstreams) {
|
if (newDownstreams) {
|
||||||
taosMemoryFree(pDownstream);
|
taosMemoryFree(pDownstream);
|
||||||
}
|
}
|
||||||
|
destroyOperatorAndDownstreams(pOperator, pDownstream, oldNum);
|
||||||
taosMemoryFree(pOperator);
|
|
||||||
pTaskInfo->code = code;
|
pTaskInfo->code = code;
|
||||||
|
|
||||||
return code;
|
return code;
|
||||||
|
|
|
@ -649,14 +649,13 @@ int32_t createMultiwayMergeOperatorInfo(SOperatorInfo** downStreams, size_t numS
|
||||||
}
|
}
|
||||||
|
|
||||||
*pOptrInfo = pOperator;
|
*pOptrInfo = pOperator;
|
||||||
return code;
|
return TSDB_CODE_SUCCESS;
|
||||||
|
|
||||||
_error:
|
_error:
|
||||||
if (pInfo != NULL) {
|
if (pInfo != NULL) {
|
||||||
destroyMultiwayMergeOperatorInfo(pInfo);
|
destroyMultiwayMergeOperatorInfo(pInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
pTaskInfo->code = code;
|
pTaskInfo->code = code;
|
||||||
taosMemoryFree(pOperator);
|
destroyOperatorAndDownstreams(pOperator, downStreams, numStreams);
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
|
|
@ -633,7 +633,11 @@ int32_t createOperator(SPhysiNode* pPhyNode, SExecTaskInfo* pTaskInfo, SReadHand
|
||||||
} else {
|
} else {
|
||||||
code = TSDB_CODE_INVALID_PARA;
|
code = TSDB_CODE_INVALID_PARA;
|
||||||
pTaskInfo->code = code;
|
pTaskInfo->code = code;
|
||||||
|
for (int32_t i = 0; i < size; ++i) {
|
||||||
|
destroyOperator(ops[i]);
|
||||||
|
}
|
||||||
taosMemoryFree(ops);
|
taosMemoryFree(ops);
|
||||||
|
qError("invalid operator type %d", type);
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -672,6 +676,23 @@ void destroyOperator(SOperatorInfo* pOperator) {
|
||||||
taosMemoryFreeClear(pOperator);
|
taosMemoryFreeClear(pOperator);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void destroyOperatorAndDownstreams(SOperatorInfo* pOperator, SOperatorInfo** downstreams, int32_t num) {
|
||||||
|
if (downstreams != NULL) {
|
||||||
|
for (int i = 0; i < num; i++) {
|
||||||
|
destroyOperator(downstreams[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (pOperator != NULL) {
|
||||||
|
pOperator->info = NULL;
|
||||||
|
if (pOperator->pDownstream != NULL) {
|
||||||
|
taosMemoryFreeClear(pOperator->pDownstream);
|
||||||
|
pOperator->pDownstream = NULL;
|
||||||
|
}
|
||||||
|
destroyOperator(pOperator);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
int32_t getOperatorExplainExecInfo(SOperatorInfo* operatorInfo, SArray* pExecInfoList) {
|
int32_t getOperatorExplainExecInfo(SOperatorInfo* operatorInfo, SArray* pExecInfoList) {
|
||||||
SExplainExecInfo execInfo = {0};
|
SExplainExecInfo execInfo = {0};
|
||||||
SExplainExecInfo* pExplainInfo = taosArrayPush(pExecInfoList, &execInfo);
|
SExplainExecInfo* pExplainInfo = taosArrayPush(pExecInfoList, &execInfo);
|
||||||
|
|
|
@ -177,17 +177,11 @@ int32_t createProjectOperatorInfo(SOperatorInfo* downstream, SProjectPhysiNode*
|
||||||
}
|
}
|
||||||
|
|
||||||
*pOptrInfo = pOperator;
|
*pOptrInfo = pOperator;
|
||||||
return code;
|
return TSDB_CODE_SUCCESS;
|
||||||
|
|
||||||
_error:
|
_error:
|
||||||
if (pInfo != NULL) destroyProjectOperatorInfo(pInfo);
|
if (pInfo != NULL) destroyProjectOperatorInfo(pInfo);
|
||||||
if (pOperator != NULL) {
|
destroyOperatorAndDownstreams(pOperator, &downstream, 1);
|
||||||
pOperator->info = NULL;
|
|
||||||
if (pOperator->pDownstream == NULL && downstream != NULL) {
|
|
||||||
destroyOperator(downstream);
|
|
||||||
}
|
|
||||||
destroyOperator(pOperator);
|
|
||||||
}
|
|
||||||
pTaskInfo->code = code;
|
pTaskInfo->code = code;
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
@ -525,17 +519,11 @@ int32_t createIndefinitOutputOperatorInfo(SOperatorInfo* downstream, SPhysiNode*
|
||||||
}
|
}
|
||||||
|
|
||||||
*pOptrInfo = pOperator;
|
*pOptrInfo = pOperator;
|
||||||
return code;
|
return TSDB_CODE_SUCCESS;
|
||||||
|
|
||||||
_error:
|
_error:
|
||||||
if (pInfo != NULL) destroyIndefinitOperatorInfo(pInfo);
|
if (pInfo != NULL) destroyIndefinitOperatorInfo(pInfo);
|
||||||
if (pOperator != NULL) {
|
destroyOperatorAndDownstreams(pOperator, &downstream, 1);
|
||||||
pOperator->info = NULL;
|
|
||||||
if (pOperator->pDownstream == NULL && downstream != NULL) {
|
|
||||||
destroyOperator(downstream);
|
|
||||||
}
|
|
||||||
destroyOperator(pOperator);
|
|
||||||
}
|
|
||||||
pTaskInfo->code = code;
|
pTaskInfo->code = code;
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1528,7 +1528,7 @@ int32_t createTableScanOperatorInfo(STableScanPhysiNode* pTableScanNode, SReadHa
|
||||||
// for non-blocking operator, the open cost is always 0
|
// for non-blocking operator, the open cost is always 0
|
||||||
pOperator->cost.openCost = 0;
|
pOperator->cost.openCost = 0;
|
||||||
*pOptrInfo = pOperator;
|
*pOptrInfo = pOperator;
|
||||||
return code;
|
return TSDB_CODE_SUCCESS;
|
||||||
|
|
||||||
_error:
|
_error:
|
||||||
if (pInfo != NULL) {
|
if (pInfo != NULL) {
|
||||||
|
|
|
@ -155,20 +155,13 @@ int32_t createSortOperatorInfo(SOperatorInfo* downstream, SSortPhysiNode* pSortN
|
||||||
}
|
}
|
||||||
|
|
||||||
*pOptrInfo = pOperator;
|
*pOptrInfo = pOperator;
|
||||||
return code;
|
return TSDB_CODE_SUCCESS;
|
||||||
|
|
||||||
_error:
|
_error:
|
||||||
if (pInfo != NULL) {
|
if (pInfo != NULL) {
|
||||||
destroySortOperatorInfo(pInfo);
|
destroySortOperatorInfo(pInfo);
|
||||||
}
|
}
|
||||||
|
destroyOperatorAndDownstreams(pOperator, &downstream, 1);
|
||||||
if (pOperator != NULL) {
|
|
||||||
pOperator->info = NULL;
|
|
||||||
if (pOperator->pDownstream == NULL && downstream != NULL) {
|
|
||||||
destroyOperator(downstream);
|
|
||||||
}
|
|
||||||
destroyOperator(pOperator);
|
|
||||||
}
|
|
||||||
pTaskInfo->code = code;
|
pTaskInfo->code = code;
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
@ -841,19 +834,13 @@ int32_t createGroupSortOperatorInfo(SOperatorInfo* downstream, SGroupSortPhysiNo
|
||||||
}
|
}
|
||||||
|
|
||||||
*pOptrInfo = pOperator;
|
*pOptrInfo = pOperator;
|
||||||
return code;
|
return TSDB_CODE_SUCCESS;
|
||||||
|
|
||||||
_error:
|
_error:
|
||||||
pTaskInfo->code = code;
|
pTaskInfo->code = code;
|
||||||
if (pInfo != NULL) {
|
if (pInfo != NULL) {
|
||||||
destroyGroupSortOperatorInfo(pInfo);
|
destroyGroupSortOperatorInfo(pInfo);
|
||||||
}
|
}
|
||||||
if (pOperator != NULL) {
|
destroyOperatorAndDownstreams(pOperator, &downstream, 1);
|
||||||
pOperator->info = NULL;
|
|
||||||
if (pOperator->pDownstream == NULL && downstream != NULL) {
|
|
||||||
destroyOperator(downstream);
|
|
||||||
}
|
|
||||||
destroyOperator(pOperator);
|
|
||||||
}
|
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
|
|
@ -920,20 +920,14 @@ int32_t createStreamCountAggOperatorInfo(SOperatorInfo* downstream, SPhysiNode*
|
||||||
}
|
}
|
||||||
|
|
||||||
*pOptrInfo = pOperator;
|
*pOptrInfo = pOperator;
|
||||||
return code;
|
return TSDB_CODE_SUCCESS;
|
||||||
|
|
||||||
_error:
|
_error:
|
||||||
if (pInfo != NULL) {
|
if (pInfo != NULL) {
|
||||||
destroyStreamCountAggOperatorInfo(pInfo);
|
destroyStreamCountAggOperatorInfo(pInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pOperator != NULL) {
|
destroyOperatorAndDownstreams(pOperator, &downstream, 1);
|
||||||
pOperator->info = NULL;
|
|
||||||
if (pOperator->pDownstream == NULL && downstream != NULL) {
|
|
||||||
destroyOperator(downstream);
|
|
||||||
}
|
|
||||||
destroyOperator(pOperator);
|
|
||||||
}
|
|
||||||
pTaskInfo->code = code;
|
pTaskInfo->code = code;
|
||||||
qError("%s failed at line %d since %s", __func__, lino, tstrerror(code));
|
qError("%s failed at line %d since %s", __func__, lino, tstrerror(code));
|
||||||
return code;
|
return code;
|
||||||
|
|
|
@ -982,17 +982,11 @@ int32_t createStreamEventAggOperatorInfo(SOperatorInfo* downstream, SPhysiNode*
|
||||||
QUERY_CHECK_CODE(code, lino, _error);
|
QUERY_CHECK_CODE(code, lino, _error);
|
||||||
|
|
||||||
*pOptrInfo = pOperator;
|
*pOptrInfo = pOperator;
|
||||||
return code;
|
return TSDB_CODE_SUCCESS;
|
||||||
|
|
||||||
_error:
|
_error:
|
||||||
if (pInfo != NULL) destroyStreamEventOperatorInfo(pInfo);
|
if (pInfo != NULL) destroyStreamEventOperatorInfo(pInfo);
|
||||||
if (pOperator != NULL) {
|
destroyOperatorAndDownstreams(pOperator, &downstream, 1);
|
||||||
pOperator->info = NULL;
|
|
||||||
if (pOperator->pDownstream == NULL && downstream != NULL) {
|
|
||||||
destroyOperator(downstream);
|
|
||||||
}
|
|
||||||
destroyOperator(pOperator);
|
|
||||||
}
|
|
||||||
pTaskInfo->code = code;
|
pTaskInfo->code = code;
|
||||||
qError("%s failed at line %d since %s", __func__, lino, tstrerror(code));
|
qError("%s failed at line %d since %s", __func__, lino, tstrerror(code));
|
||||||
return code;
|
return code;
|
||||||
|
|
|
@ -1451,20 +1451,13 @@ int32_t createStreamFillOperatorInfo(SOperatorInfo* downstream, SStreamFillPhysi
|
||||||
QUERY_CHECK_CODE(code, lino, _error);
|
QUERY_CHECK_CODE(code, lino, _error);
|
||||||
|
|
||||||
*pOptrInfo = pOperator;
|
*pOptrInfo = pOperator;
|
||||||
return code;
|
return TSDB_CODE_SUCCESS;
|
||||||
|
|
||||||
_error:
|
_error:
|
||||||
if (code != TSDB_CODE_SUCCESS) {
|
qError("%s failed at line %d since %s. task:%s", __func__, lino, tstrerror(code), GET_TASKID(pTaskInfo));
|
||||||
qError("%s failed at line %d since %s. task:%s", __func__, lino, tstrerror(code), GET_TASKID(pTaskInfo));
|
|
||||||
}
|
|
||||||
if (pInfo != NULL) destroyStreamFillOperatorInfo(pInfo);
|
if (pInfo != NULL) destroyStreamFillOperatorInfo(pInfo);
|
||||||
if (pOperator != NULL) {
|
destroyOperatorAndDownstreams(pOperator, &downstream, 1);
|
||||||
pOperator->info = NULL;
|
|
||||||
if (pOperator->pDownstream == NULL && downstream != NULL) {
|
|
||||||
destroyOperator(downstream);
|
|
||||||
}
|
|
||||||
destroyOperator(pOperator);
|
|
||||||
}
|
|
||||||
pTaskInfo->code = code;
|
pTaskInfo->code = code;
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
|
|
@ -2024,17 +2024,11 @@ int32_t createStreamFinalIntervalOperatorInfo(SOperatorInfo* downstream, SPhysiN
|
||||||
}
|
}
|
||||||
|
|
||||||
*pOptrInfo = pOperator;
|
*pOptrInfo = pOperator;
|
||||||
return code;
|
return TSDB_CODE_SUCCESS;
|
||||||
|
|
||||||
_error:
|
_error:
|
||||||
if (pInfo != NULL) destroyStreamFinalIntervalOperatorInfo(pInfo);
|
if (pInfo != NULL) destroyStreamFinalIntervalOperatorInfo(pInfo);
|
||||||
if (pOperator != NULL) {
|
destroyOperatorAndDownstreams(pOperator, &downstream, 1);
|
||||||
pOperator->info = NULL;
|
|
||||||
if (pOperator->pDownstream == NULL && downstream != NULL) {
|
|
||||||
destroyOperator(downstream);
|
|
||||||
}
|
|
||||||
destroyOperator(pOperator);
|
|
||||||
}
|
|
||||||
pTaskInfo->code = code;
|
pTaskInfo->code = code;
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
@ -3858,20 +3852,13 @@ int32_t createStreamSessionAggOperatorInfo(SOperatorInfo* downstream, SPhysiNode
|
||||||
}
|
}
|
||||||
|
|
||||||
*pOptrInfo = pOperator;
|
*pOptrInfo = pOperator;
|
||||||
return code;
|
return TSDB_CODE_SUCCESS;
|
||||||
|
|
||||||
_error:
|
_error:
|
||||||
if (pInfo != NULL) {
|
if (pInfo != NULL) {
|
||||||
destroyStreamSessionAggOperatorInfo(pInfo);
|
destroyStreamSessionAggOperatorInfo(pInfo);
|
||||||
}
|
}
|
||||||
|
destroyOperatorAndDownstreams(pOperator, &downstream, 1);
|
||||||
if (pOperator != NULL) {
|
|
||||||
pOperator->info = NULL;
|
|
||||||
if (pOperator->pDownstream == NULL && downstream != NULL) {
|
|
||||||
destroyOperator(downstream);
|
|
||||||
}
|
|
||||||
destroyOperator(pOperator);
|
|
||||||
}
|
|
||||||
pTaskInfo->code = code;
|
pTaskInfo->code = code;
|
||||||
qError("%s failed at line %d since %s", __func__, lino, tstrerror(code));
|
qError("%s failed at line %d since %s", __func__, lino, tstrerror(code));
|
||||||
return code;
|
return code;
|
||||||
|
@ -4074,6 +4061,7 @@ int32_t createStreamFinalSessionAggOperatorInfo(SOperatorInfo* downstream, SPhys
|
||||||
SOperatorInfo* pOperator = NULL;
|
SOperatorInfo* pOperator = NULL;
|
||||||
code = createStreamSessionAggOperatorInfo(downstream, pPhyNode, pTaskInfo, pHandle, &pOperator);
|
code = createStreamSessionAggOperatorInfo(downstream, pPhyNode, pTaskInfo, pHandle, &pOperator);
|
||||||
if (pOperator == NULL || code != 0) {
|
if (pOperator == NULL || code != 0) {
|
||||||
|
downstream = NULL;
|
||||||
QUERY_CHECK_CODE(code, lino, _error);
|
QUERY_CHECK_CODE(code, lino, _error);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4135,9 +4123,6 @@ _error:
|
||||||
}
|
}
|
||||||
if (pOperator != NULL) {
|
if (pOperator != NULL) {
|
||||||
pOperator->info = NULL;
|
pOperator->info = NULL;
|
||||||
if (pOperator->pDownstream == NULL && downstream != NULL) {
|
|
||||||
destroyOperator(downstream);
|
|
||||||
}
|
|
||||||
destroyOperator(pOperator);
|
destroyOperator(pOperator);
|
||||||
}
|
}
|
||||||
pTaskInfo->code = code;
|
pTaskInfo->code = code;
|
||||||
|
@ -5035,17 +5020,11 @@ int32_t createStreamStateAggOperatorInfo(SOperatorInfo* downstream, SPhysiNode*
|
||||||
QUERY_CHECK_CODE(code, lino, _error);
|
QUERY_CHECK_CODE(code, lino, _error);
|
||||||
|
|
||||||
*pOptrInfo = pOperator;
|
*pOptrInfo = pOperator;
|
||||||
return code;
|
return TSDB_CODE_SUCCESS;
|
||||||
|
|
||||||
_error:
|
_error:
|
||||||
if (pInfo != NULL) destroyStreamStateOperatorInfo(pInfo);
|
if (pInfo != NULL) destroyStreamStateOperatorInfo(pInfo);
|
||||||
if (pOperator != NULL) {
|
destroyOperatorAndDownstreams(pOperator, &downstream, 1);
|
||||||
pOperator->info = NULL;
|
|
||||||
if (pOperator->pDownstream == NULL && downstream != NULL) {
|
|
||||||
destroyOperator(downstream);
|
|
||||||
}
|
|
||||||
destroyOperator(pOperator);
|
|
||||||
}
|
|
||||||
pTaskInfo->code = code;
|
pTaskInfo->code = code;
|
||||||
qError("%s failed at line %d since %s", __func__, lino, tstrerror(code));
|
qError("%s failed at line %d since %s", __func__, lino, tstrerror(code));
|
||||||
return code;
|
return code;
|
||||||
|
@ -5376,17 +5355,11 @@ int32_t createStreamIntervalOperatorInfo(SOperatorInfo* downstream, SPhysiNode*
|
||||||
QUERY_CHECK_CODE(code, lino, _error);
|
QUERY_CHECK_CODE(code, lino, _error);
|
||||||
|
|
||||||
*pOptrInfo = pOperator;
|
*pOptrInfo = pOperator;
|
||||||
return code;
|
return TSDB_CODE_SUCCESS;
|
||||||
|
|
||||||
_error:
|
_error:
|
||||||
if (pInfo != NULL) destroyStreamFinalIntervalOperatorInfo(pInfo);
|
if (pInfo != NULL) destroyStreamFinalIntervalOperatorInfo(pInfo);
|
||||||
if (pOperator != NULL) {
|
destroyOperatorAndDownstreams(pOperator, &downstream, 1);
|
||||||
pOperator->info = NULL;
|
|
||||||
if (pOperator->pDownstream == NULL && downstream != NULL) {
|
|
||||||
destroyOperator(downstream);
|
|
||||||
}
|
|
||||||
destroyOperator(pOperator);
|
|
||||||
}
|
|
||||||
pTaskInfo->code = code;
|
pTaskInfo->code = code;
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1192,22 +1192,17 @@ int32_t createTimeSliceOperatorInfo(SOperatorInfo* downstream, SPhysiNode* pPhyN
|
||||||
// int32_t code = initKeeperInfo(pSliceInfo, pBlock, &pOperator->exprSupp);
|
// int32_t code = initKeeperInfo(pSliceInfo, pBlock, &pOperator->exprSupp);
|
||||||
|
|
||||||
code = appendDownstream(pOperator, &downstream, 1);
|
code = appendDownstream(pOperator, &downstream, 1);
|
||||||
|
QUERY_CHECK_CODE(code, lino, _error);
|
||||||
|
|
||||||
*pOptrInfo = pOperator;
|
*pOptrInfo = pOperator;
|
||||||
return code;
|
return TSDB_CODE_SUCCESS;
|
||||||
|
|
||||||
_error:
|
_error:
|
||||||
if (code != TSDB_CODE_SUCCESS) {
|
if (code != TSDB_CODE_SUCCESS) {
|
||||||
qError("%s failed at line %d since %s", __func__, lino, tstrerror(code));
|
qError("%s failed at line %d since %s", __func__, lino, tstrerror(code));
|
||||||
}
|
}
|
||||||
if (pInfo != NULL) destroyTimeSliceOperatorInfo(pInfo);
|
if (pInfo != NULL) destroyTimeSliceOperatorInfo(pInfo);
|
||||||
if (pOperator != NULL) {
|
destroyOperatorAndDownstreams(pOperator, &downstream, 1);
|
||||||
pOperator->info = NULL;
|
|
||||||
if (pOperator->pDownstream == NULL && downstream != NULL) {
|
|
||||||
destroyOperator(downstream);
|
|
||||||
}
|
|
||||||
destroyOperator(pOperator);
|
|
||||||
}
|
|
||||||
pTaskInfo->code = code;
|
pTaskInfo->code = code;
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1428,19 +1428,13 @@ int32_t createIntervalOperatorInfo(SOperatorInfo* downstream, SIntervalPhysiNode
|
||||||
}
|
}
|
||||||
|
|
||||||
*pOptrInfo = pOperator;
|
*pOptrInfo = pOperator;
|
||||||
return code;
|
return TSDB_CODE_SUCCESS;
|
||||||
|
|
||||||
_error:
|
_error:
|
||||||
if (pInfo != NULL) {
|
if (pInfo != NULL) {
|
||||||
destroyIntervalOperatorInfo(pInfo);
|
destroyIntervalOperatorInfo(pInfo);
|
||||||
}
|
}
|
||||||
if (pOperator != NULL) {
|
destroyOperatorAndDownstreams(pOperator, &downstream, 1);
|
||||||
pOperator->info = NULL;
|
|
||||||
if (pOperator->pDownstream == NULL && downstream != NULL) {
|
|
||||||
destroyOperator(downstream);
|
|
||||||
}
|
|
||||||
destroyOperator(pOperator);
|
|
||||||
}
|
|
||||||
pTaskInfo->code = code;
|
pTaskInfo->code = code;
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
@ -1703,20 +1697,14 @@ int32_t createStatewindowOperatorInfo(SOperatorInfo* downstream, SStateWinodwPhy
|
||||||
}
|
}
|
||||||
|
|
||||||
*pOptrInfo = pOperator;
|
*pOptrInfo = pOperator;
|
||||||
return code;
|
return TSDB_CODE_SUCCESS;
|
||||||
|
|
||||||
_error:
|
_error:
|
||||||
if (pInfo != NULL) {
|
if (pInfo != NULL) {
|
||||||
destroyStateWindowOperatorInfo(pInfo);
|
destroyStateWindowOperatorInfo(pInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pOperator != NULL) {
|
destroyOperatorAndDownstreams(pOperator, &downstream, 1);
|
||||||
pOperator->info = NULL;
|
|
||||||
if (pOperator->pDownstream == NULL && downstream != NULL) {
|
|
||||||
destroyOperator(downstream);
|
|
||||||
}
|
|
||||||
destroyOperator(pOperator);
|
|
||||||
}
|
|
||||||
pTaskInfo->code = code;
|
pTaskInfo->code = code;
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
@ -1805,17 +1793,11 @@ int32_t createSessionAggOperatorInfo(SOperatorInfo* downstream, SSessionWinodwPh
|
||||||
QUERY_CHECK_CODE(code, lino, _error);
|
QUERY_CHECK_CODE(code, lino, _error);
|
||||||
|
|
||||||
*pOptrInfo = pOperator;
|
*pOptrInfo = pOperator;
|
||||||
return code;
|
return TSDB_CODE_SUCCESS;
|
||||||
|
|
||||||
_error:
|
_error:
|
||||||
if (pInfo != NULL) destroySWindowOperatorInfo(pInfo);
|
if (pInfo != NULL) destroySWindowOperatorInfo(pInfo);
|
||||||
if (pOperator != NULL) {
|
destroyOperatorAndDownstreams(pOperator, &downstream, 1);
|
||||||
pOperator->info = NULL;
|
|
||||||
if (pOperator->pDownstream == NULL && downstream != NULL) {
|
|
||||||
destroyOperator(downstream);
|
|
||||||
}
|
|
||||||
destroyOperator(pOperator);
|
|
||||||
}
|
|
||||||
pTaskInfo->code = code;
|
pTaskInfo->code = code;
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
@ -2122,17 +2104,11 @@ int32_t createMergeAlignedIntervalOperatorInfo(SOperatorInfo* downstream, SMerge
|
||||||
QUERY_CHECK_CODE(code, lino, _error);
|
QUERY_CHECK_CODE(code, lino, _error);
|
||||||
|
|
||||||
*pOptrInfo = pOperator;
|
*pOptrInfo = pOperator;
|
||||||
return code;
|
return TSDB_CODE_SUCCESS;
|
||||||
|
|
||||||
_error:
|
_error:
|
||||||
if (miaInfo != NULL) destroyMAIOperatorInfo(miaInfo);
|
if (miaInfo != NULL) destroyMAIOperatorInfo(miaInfo);
|
||||||
if (pOperator != NULL) {
|
destroyOperatorAndDownstreams(pOperator, &downstream, 1);
|
||||||
pOperator->info = NULL;
|
|
||||||
if (pOperator->pDownstream == NULL && downstream != NULL) {
|
|
||||||
destroyOperator(downstream);
|
|
||||||
}
|
|
||||||
destroyOperator(pOperator);
|
|
||||||
}
|
|
||||||
pTaskInfo->code = code;
|
pTaskInfo->code = code;
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
@ -2462,19 +2438,12 @@ int32_t createMergeIntervalOperatorInfo(SOperatorInfo* downstream, SMergeInterva
|
||||||
}
|
}
|
||||||
|
|
||||||
*pOptrInfo = pOperator;
|
*pOptrInfo = pOperator;
|
||||||
return code;
|
return TSDB_CODE_SUCCESS;
|
||||||
_error:
|
_error:
|
||||||
if (pMergeIntervalInfo != NULL) {
|
if (pMergeIntervalInfo != NULL) {
|
||||||
destroyMergeIntervalOperatorInfo(pMergeIntervalInfo);
|
destroyMergeIntervalOperatorInfo(pMergeIntervalInfo);
|
||||||
}
|
}
|
||||||
|
destroyOperatorAndDownstreams(pOperator, &downstream, 1);
|
||||||
if (pOperator != NULL) {
|
|
||||||
pOperator->info = NULL;
|
|
||||||
if (pOperator->pDownstream == NULL && downstream != NULL) {
|
|
||||||
destroyOperator(downstream);
|
|
||||||
}
|
|
||||||
destroyOperator(pOperator);
|
|
||||||
}
|
|
||||||
pTaskInfo->code = code;
|
pTaskInfo->code = code;
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
|
|
@ -5221,7 +5221,7 @@ int32_t filterInitFromNode(SNode *pNode, SFilterInfo **pInfo, uint32_t options)
|
||||||
FLT_ERR_JRET(fltOptimizeNodes(info, &info->sclCtx.node, &stat));
|
FLT_ERR_JRET(fltOptimizeNodes(info, &info->sclCtx.node, &stat));
|
||||||
}
|
}
|
||||||
|
|
||||||
return code;
|
return TSDB_CODE_SUCCESS;
|
||||||
|
|
||||||
_return:
|
_return:
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue