return code
This commit is contained in:
parent
d6f05d48c8
commit
d9bbe0d888
|
@ -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) {
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
|
|
Loading…
Reference in New Issue