return code

This commit is contained in:
facetosea 2025-02-20 19:15:22 +08:00
parent d6f05d48c8
commit d9bbe0d888
3 changed files with 12 additions and 7 deletions

View File

@ -1955,6 +1955,7 @@ int32_t createExprFromOneNode(SExprInfo* pExp, SNode* pNode, int16_t slotId) {
QUERY_CHECK_CODE(code, lino, _end); QUERY_CHECK_CODE(code, lino, _end);
} }
} }
pExp->pExpr->_function.bindExprID = ((SExprNode*)pNode)->bindExprID;
} else if (type == QUERY_NODE_OPERATOR) { } else if (type == QUERY_NODE_OPERATOR) {
pExp->pExpr->nodeType = QUERY_NODE_OPERATOR; pExp->pExpr->nodeType = QUERY_NODE_OPERATOR;
SOperatorNode* pOpNode = (SOperatorNode*)pNode; SOperatorNode* pOpNode = (SOperatorNode*)pNode;
@ -1992,9 +1993,6 @@ int32_t createExprFromOneNode(SExprInfo* pExp, SNode* pNode, int16_t slotId) {
code = TSDB_CODE_QRY_EXECUTOR_INTERNAL_ERROR; code = TSDB_CODE_QRY_EXECUTOR_INTERNAL_ERROR;
QUERY_CHECK_CODE(code, lino, _end); QUERY_CHECK_CODE(code, lino, _end);
} }
if (type == QUERY_NODE_FUNCTION) {
pExp->pExpr->_function.bindExprID = ((SExprNode*)pNode)->bindExprID;
}
pExp->pExpr->relatedTo = ((SExprNode*)pNode)->relatedTo; pExp->pExpr->relatedTo = ((SExprNode*)pNode)->relatedTo;
_end: _end:
if (code != TSDB_CODE_SUCCESS) { if (code != TSDB_CODE_SUCCESS) {

View File

@ -3241,7 +3241,7 @@ int32_t nodesListDeduplicate(SNodeList** ppList) {
} }
void rewriteExprAliasName(SExprNode* pNode, int64_t num) { void rewriteExprAliasName(SExprNode* pNode, int64_t num) {
tsnprintf(pNode->aliasName, TSDB_COL_NAME_LEN, "expr_%x", num); (void)tsnprintf(pNode->aliasName, TSDB_COL_NAME_LEN, "expr_%x", num);
return; return;
} }

View File

@ -7428,8 +7428,11 @@ static EDealRes pushDownBindSelectFunc(SNode** pNode, void* pContext) {
if (nodesIsExprNode(*pNode)) { if (nodesIsExprNode(*pNode)) {
SExprNode* pExpr = (SExprNode*)*pNode; SExprNode* pExpr = (SExprNode*)*pNode;
pExpr->relatedTo = pCxt->bindExprID; pExpr->relatedTo = pCxt->bindExprID;
if (nodeType(*pNode) != QUERY_NODE_COLUMN) {
return DEAL_RES_CONTINUE;
}
if (isRelatedToOtherExpr(pExpr) && *pNode != pCxt->root) { if (*pNode != pCxt->root) {
int len = strlen(pExpr->aliasName); int len = strlen(pExpr->aliasName);
if (len + TSDB_COL_NAME_EXLEN >= TSDB_COL_NAME_LEN) { if (len + TSDB_COL_NAME_EXLEN >= TSDB_COL_NAME_LEN) {
char buffer[TSDB_COL_NAME_EXLEN + TSDB_COL_NAME_LEN + 1] = {0}; char buffer[TSDB_COL_NAME_EXLEN + TSDB_COL_NAME_LEN + 1] = {0};
@ -7609,6 +7612,7 @@ static int32_t rewriteColsFunction(STranslateContext* pCxt, SNodeList** nodeList
} }
SNodeList* pNewNodeList = NULL; SNodeList* pNewNodeList = NULL;
SNode* pNewNode = NULL;
if (needRewrite) { if (needRewrite) {
if (pCxt->createStream) { if (pCxt->createStream) {
return TSDB_CODE_PAR_INVALID_COLS_FUNCTION; return TSDB_CODE_PAR_INVALID_COLS_FUNCTION;
@ -7625,7 +7629,6 @@ static int32_t rewriteColsFunction(STranslateContext* pCxt, SNodeList** nodeList
} }
} }
SNode* pNewNode = NULL;
int32_t nums = 0; int32_t nums = 0;
int32_t selectFuncCount = (*selectFuncList)->length; int32_t selectFuncCount = (*selectFuncList)->length;
SNode* pTmpNode = NULL; SNode* pTmpNode = NULL;
@ -7649,14 +7652,17 @@ static int32_t rewriteColsFunction(STranslateContext* pCxt, SNodeList** nodeList
++selectFuncCount; ++selectFuncCount;
selectFuncIndex = selectFuncCount; selectFuncIndex = selectFuncCount;
code = nodesCloneNode(pSelectFunc, &pNewNode); code = nodesCloneNode(pSelectFunc, &pNewNode);
if(TSDB_CODE_SUCCESS != code) goto _end;
((SExprNode*)pNewNode)->bindExprID = selectFuncIndex; ((SExprNode*)pNewNode)->bindExprID = selectFuncIndex;
nodesListMakeStrictAppend(selectFuncList, pNewNode); code = nodesListMakeStrictAppend(selectFuncList, pNewNode);
if(TSDB_CODE_SUCCESS != code) goto _end;
} }
// start from index 1, because the first parameter is select function which needn't to output. // start from index 1, because the first parameter is select function which needn't to output.
for (int i = 1; i < pFunc->pParameterList->length; ++i) { for (int i = 1; i < pFunc->pParameterList->length; ++i) {
SNode* pExpr = nodesListGetNode(pFunc->pParameterList, i); SNode* pExpr = nodesListGetNode(pFunc->pParameterList, i);
code = nodesCloneNode(pExpr, &pNewNode); code = nodesCloneNode(pExpr, &pNewNode);
if(TSDB_CODE_SUCCESS != code) goto _end;
if (nodesIsExprNode(pNewNode)) { if (nodesIsExprNode(pNewNode)) {
SBindTupleFuncCxt pCxt = {pNewNode, selectFuncIndex}; SBindTupleFuncCxt pCxt = {pNewNode, selectFuncIndex};
nodesRewriteExpr(&pNewNode, pushDownBindSelectFunc, &pCxt); nodesRewriteExpr(&pNewNode, pushDownBindSelectFunc, &pCxt);
@ -7683,6 +7689,7 @@ static int32_t rewriteColsFunction(STranslateContext* pCxt, SNodeList** nodeList
} }
_end: _end:
if (TSDB_CODE_SUCCESS != code) { if (TSDB_CODE_SUCCESS != code) {
nodesDestroyNode(pNewNode);
nodesDestroyList(pNewNodeList); nodesDestroyList(pNewNodeList);
} }
return code; return code;