diff --git a/include/libs/nodes/querynodes.h b/include/libs/nodes/querynodes.h index 02dd971d9c..48b98fcf33 100644 --- a/include/libs/nodes/querynodes.h +++ b/include/libs/nodes/querynodes.h @@ -51,6 +51,7 @@ typedef struct SExprNode { char userAlias[TSDB_COL_NAME_LEN]; SArray* pAssociation; bool orderAlias; + bool asAlias; } SExprNode; typedef enum EColumnType { diff --git a/source/libs/parser/src/parAstCreater.c b/source/libs/parser/src/parAstCreater.c index b23adaabb5..4077c27840 100644 --- a/source/libs/parser/src/parAstCreater.c +++ b/source/libs/parser/src/parAstCreater.c @@ -680,6 +680,7 @@ SNode* setProjectionAlias(SAstCreateContext* pCxt, SNode* pNode, SToken* pAlias) pExpr->aliasName[len] = '\0'; strncpy(pExpr->userAlias, pAlias->z, len); pExpr->userAlias[len] = '\0'; + pExpr->asAlias = true; return pNode; } diff --git a/source/libs/parser/src/parTranslater.c b/source/libs/parser/src/parTranslater.c index d4feef6cb4..37703534d6 100644 --- a/source/libs/parser/src/parTranslater.c +++ b/source/libs/parser/src/parTranslater.c @@ -1579,7 +1579,7 @@ static int32_t translateMultiResFunc(STranslateContext* pCxt, SFunctionNode* pFu "%s(*) is only supported in SELECTed list", pFunc->functionName); } } - if (tsKeepColumnName && 1 == LIST_LENGTH(pFunc->pParameterList)) { + if (tsKeepColumnName && 1 == LIST_LENGTH(pFunc->pParameterList) && !pFunc->node.asAlias) { strcpy(pFunc->node.userAlias, ((SExprNode*)nodesListGetNode(pFunc->pParameterList, 0))->userAlias); } return TSDB_CODE_SUCCESS;