From 3544c8789b04d3c479c28ce5e92bf1e1c19e1550 Mon Sep 17 00:00:00 2001 From: Xiaoyu Wang Date: Sat, 9 Apr 2022 15:57:39 +0800 Subject: [PATCH] create/drop/show bnode/snode/mnode frontend implement --- source/libs/parser/inc/sql.y | 5 +---- source/libs/parser/src/parAstCreater.c | 6 ++++-- source/libs/parser/src/sql.c | 8 +------- source/libs/planner/src/planLogicCreater.c | 4 +++- 4 files changed, 9 insertions(+), 14 deletions(-) diff --git a/source/libs/parser/inc/sql.y b/source/libs/parser/inc/sql.y index bcedd97ec9..6f00c66ece 100644 --- a/source/libs/parser/inc/sql.y +++ b/source/libs/parser/inc/sql.y @@ -728,10 +728,7 @@ select_list(A) ::= select_sublist(B). select_sublist(A) ::= select_item(B). { A = createNodeList(pCxt, B); } select_sublist(A) ::= select_sublist(B) NK_COMMA select_item(C). { A = addNodeToList(pCxt, B, C); } -select_item(A) ::= common_expression(B). { - SToken t = getTokenFromRawExprNode(pCxt, B); - A = setProjectionAlias(pCxt, releaseRawExprNode(pCxt, B), &t); - } +select_item(A) ::= common_expression(B). { A = releaseRawExprNode(pCxt, B); } select_item(A) ::= common_expression(B) column_alias(C). { A = setProjectionAlias(pCxt, releaseRawExprNode(pCxt, B), &C); } select_item(A) ::= common_expression(B) AS column_alias(C). { A = setProjectionAlias(pCxt, releaseRawExprNode(pCxt, B), &C); } select_item(A) ::= table_name(B) NK_DOT NK_STAR(C). { A = createColumnNode(pCxt, &B, &C); } diff --git a/source/libs/parser/src/parAstCreater.c b/source/libs/parser/src/parAstCreater.c index 731e23e20d..e13d9930f2 100644 --- a/source/libs/parser/src/parAstCreater.c +++ b/source/libs/parser/src/parAstCreater.c @@ -205,9 +205,11 @@ SNode* createRawExprNodeExt(SAstCreateContext* pCxt, const SToken* pStart, const SNode* releaseRawExprNode(SAstCreateContext* pCxt, SNode* pNode) { CHECK_RAW_EXPR_NODE(pNode); - SNode* tmp = ((SRawExprNode*)pNode)->pNode; + SRawExprNode* pRawExpr = (SRawExprNode*)pNode; + SNode* pExpr = pRawExpr->pNode; + strncpy(((SExprNode*)pExpr)->aliasName, pRawExpr->p, pRawExpr->n); taosMemoryFreeClear(pNode); - return tmp; + return pExpr; } SToken getTokenFromRawExprNode(SAstCreateContext* pCxt, SNode* pNode) { diff --git a/source/libs/parser/src/sql.c b/source/libs/parser/src/sql.c index 918b7aa41b..05362dbf97 100644 --- a/source/libs/parser/src/sql.c +++ b/source/libs/parser/src/sql.c @@ -3415,6 +3415,7 @@ static YYACTIONTYPE yy_reduce( { yymsp[-1].minor.yy564 = createValueNode(pCxt, TSDB_DATA_TYPE_TIMESTAMP, &yymsp[0].minor.yy0); } break; case 260: /* signed_literal ::= duration_literal */ + case 354: /* select_item ::= common_expression */ yytestcase(yyruleno==354); case 398: /* search_condition ::= common_expression */ yytestcase(yyruleno==398); { yylhsminor.yy564 = releaseRawExprNode(pCxt, yymsp[0].minor.yy564); } yymsp[0].minor.yy564 = yylhsminor.yy564; @@ -3679,13 +3680,6 @@ static YYACTIONTYPE yy_reduce( case 350: /* select_list ::= NK_STAR */ { yymsp[0].minor.yy476 = NULL; } break; - case 354: /* select_item ::= common_expression */ -{ - SToken t = getTokenFromRawExprNode(pCxt, yymsp[0].minor.yy564); - yylhsminor.yy564 = setProjectionAlias(pCxt, releaseRawExprNode(pCxt, yymsp[0].minor.yy564), &t); - } - yymsp[0].minor.yy564 = yylhsminor.yy564; - break; case 355: /* select_item ::= common_expression column_alias */ { yylhsminor.yy564 = setProjectionAlias(pCxt, releaseRawExprNode(pCxt, yymsp[-1].minor.yy564), &yymsp[0].minor.yy21); } yymsp[-1].minor.yy564 = yylhsminor.yy564; diff --git a/source/libs/planner/src/planLogicCreater.c b/source/libs/planner/src/planLogicCreater.c index 6832cdce7a..596bb64bac 100644 --- a/source/libs/planner/src/planLogicCreater.c +++ b/source/libs/planner/src/planLogicCreater.c @@ -72,7 +72,9 @@ static EDealRes doNameExpr(SNode* pNode, void* pContext) { case QUERY_NODE_OPERATOR: case QUERY_NODE_LOGIC_CONDITION: case QUERY_NODE_FUNCTION: { - sprintf(((SExprNode*)pNode)->aliasName, "#expr_%p", pNode); + if ('\0' == ((SExprNode*)pNode)->aliasName[0]) { + sprintf(((SExprNode*)pNode)->aliasName, "#expr_%p", pNode); + } return DEAL_RES_IGNORE_CHILD; } default: -- GitLab