fix: create param node from function node
This commit is contained in:
parent
8c3fe7cc70
commit
45ec9fcbc8
|
@ -1477,6 +1477,16 @@ void createExprFromOneNode(SExprInfo* pExp, SNode* pNode, int16_t slotId) {
|
||||||
SValueNode* pvn = (SValueNode*)p1;
|
SValueNode* pvn = (SValueNode*)p1;
|
||||||
pExp->base.pParam[j].type = FUNC_PARAM_TYPE_VALUE;
|
pExp->base.pParam[j].type = FUNC_PARAM_TYPE_VALUE;
|
||||||
nodesValueNodeToVariant(pvn, &pExp->base.pParam[j].param);
|
nodesValueNodeToVariant(pvn, &pExp->base.pParam[j].param);
|
||||||
|
} else if (p1->type == QUERY_NODE_FUNCTION) {
|
||||||
|
if (strcmp(((SFunctionNode*)p1)->functionName, "_select_value") == 0 &&
|
||||||
|
((SFunctionNode*)p1)->pParameterList->length == 1 &&
|
||||||
|
((SFunctionNode*)p1)->pParameterList->pHead->pNode->type == QUERY_NODE_COLUMN) {
|
||||||
|
SColumnNode* pcn = (SColumnNode*)(((SFunctionNode*)p1)->pParameterList->pHead->pNode);
|
||||||
|
SValueNode* pvn = (SValueNode*)p1;
|
||||||
|
pExp->base.pParam[j].type = FUNC_PARAM_TYPE_COLUMN;
|
||||||
|
pExp->base.pParam[j].pCol =
|
||||||
|
createColumn(pcn->dataBlockId, pcn->slotId, pcn->colId, &pcn->node.resType, pcn->colType);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (type == QUERY_NODE_OPERATOR) {
|
} else if (type == QUERY_NODE_OPERATOR) {
|
||||||
|
|
|
@ -4513,15 +4513,6 @@ static EDealRes replaceOrderByAliasImpl(SNode** pNode, void* pContext) {
|
||||||
SExprNode* pExpr = (SExprNode*)pProject;
|
SExprNode* pExpr = (SExprNode*)pProject;
|
||||||
SNode* activeNode = pProject;
|
SNode* activeNode = pProject;
|
||||||
if (0 == strcmp(((SColumnRefNode*)*pNode)->colName, pExpr->aliasName)) {
|
if (0 == strcmp(((SColumnRefNode*)*pNode)->colName, pExpr->aliasName)) {
|
||||||
if(QUERY_NODE_FUNCTION == pProject->type && strcmp(((SFunctionNode*)pProject)->functionName, "_select_value") == 0) {
|
|
||||||
SNode* paramNode = NULL;
|
|
||||||
FOREACH(paramNode, ((SFunctionNode*)pProject)->pParameterList) {
|
|
||||||
SExprNode* pExpr2 = (SExprNode*)pProject;
|
|
||||||
if (0 == strcmp(((SColumnRefNode*)*pNode)->colName, pExpr2->aliasName)) {
|
|
||||||
activeNode = paramNode;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
SNode* pNew = nodesCloneNode(activeNode);
|
SNode* pNew = nodesCloneNode(activeNode);
|
||||||
if (NULL == pNew) {
|
if (NULL == pNew) {
|
||||||
pCxt->pTranslateCxt->errCode = TSDB_CODE_OUT_OF_MEMORY;
|
pCxt->pTranslateCxt->errCode = TSDB_CODE_OUT_OF_MEMORY;
|
||||||
|
|
Loading…
Reference in New Issue