diff --git a/source/libs/executor/src/executil.c b/source/libs/executor/src/executil.c index 825d716926..5e28621f7b 100644 --- a/source/libs/executor/src/executil.c +++ b/source/libs/executor/src/executil.c @@ -1477,6 +1477,16 @@ void createExprFromOneNode(SExprInfo* pExp, SNode* pNode, int16_t slotId) { SValueNode* pvn = (SValueNode*)p1; pExp->base.pParam[j].type = FUNC_PARAM_TYPE_VALUE; 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) { diff --git a/source/libs/parser/src/parTranslater.c b/source/libs/parser/src/parTranslater.c index 1ba48fa0d4..08e794f169 100644 --- a/source/libs/parser/src/parTranslater.c +++ b/source/libs/parser/src/parTranslater.c @@ -4513,15 +4513,6 @@ static EDealRes replaceOrderByAliasImpl(SNode** pNode, void* pContext) { SExprNode* pExpr = (SExprNode*)pProject; SNode* activeNode = pProject; 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); if (NULL == pNew) { pCxt->pTranslateCxt->errCode = TSDB_CODE_OUT_OF_MEMORY;