diff --git a/include/libs/nodes/querynodes.h b/include/libs/nodes/querynodes.h index 98f0a795f7..13f5aeb3fa 100644 --- a/include/libs/nodes/querynodes.h +++ b/include/libs/nodes/querynodes.h @@ -35,6 +35,7 @@ typedef struct SRawExprNode { char* p; uint32_t n; SNode* pNode; + bool isPseudoColumn; } SRawExprNode; typedef struct SDataType { diff --git a/source/libs/nodes/src/nodesUtilFuncs.c b/source/libs/nodes/src/nodesUtilFuncs.c index bf5b6c8080..c5a1bfa599 100644 --- a/source/libs/nodes/src/nodesUtilFuncs.c +++ b/source/libs/nodes/src/nodesUtilFuncs.c @@ -2033,7 +2033,6 @@ typedef struct SCollectFuncsCxt { char* tableAlias; FFuncClassifier classifier; SNodeList* pFuncs; - SHashObj* pFuncsSet; } SCollectFuncsCxt; static EDealRes collectFuncs(SNode* pNode, void* pContext) { @@ -2048,9 +2047,15 @@ static EDealRes collectFuncs(SNode* pNode, void* pContext) { } } SExprNode* pExpr = (SExprNode*)pNode; - if (NULL == taosHashGet(pCxt->pFuncsSet, &pExpr, sizeof(SExprNode*))) { + bool bFound = false; + SNode* pn = NULL; + FOREACH(pn, pCxt->pFuncs) { + if (nodesEqualNode(pn, pNode)) { + bFound = true; + } + } + if (!bFound) { pCxt->errCode = nodesListStrictAppend(pCxt->pFuncs, nodesCloneNode(pNode)); - taosHashPut(pCxt->pFuncsSet, &pExpr, POINTER_BYTES, &pExpr, POINTER_BYTES); } return (TSDB_CODE_SUCCESS == pCxt->errCode ? DEAL_RES_IGNORE_CHILD : DEAL_RES_ERROR); } @@ -2077,12 +2082,10 @@ int32_t nodesCollectFuncs(SSelectStmt* pSelect, ESqlClause clause, char* tableAl SCollectFuncsCxt cxt = {.errCode = TSDB_CODE_SUCCESS, .classifier = classifier, .tableAlias = tableAlias, - .pFuncs = (NULL == *pFuncs ? nodesMakeList() : *pFuncs), - .pFuncsSet = taosHashInit(4, funcNodeHash, false, false)}; - if (NULL == cxt.pFuncs || NULL == cxt.pFuncsSet) { + .pFuncs = (NULL == *pFuncs ? nodesMakeList() : *pFuncs)}; + if (NULL == cxt.pFuncs) { return TSDB_CODE_OUT_OF_MEMORY; } - taosHashSetEqualFp(cxt.pFuncsSet, funcNodeEqual); *pFuncs = NULL; nodesWalkSelectStmt(pSelect, clause, collectFuncs, &cxt); if (TSDB_CODE_SUCCESS == cxt.errCode) { @@ -2094,7 +2097,6 @@ int32_t nodesCollectFuncs(SSelectStmt* pSelect, ESqlClause clause, char* tableAl } else { nodesDestroyList(cxt.pFuncs); } - taosHashCleanup(cxt.pFuncsSet); return cxt.errCode; } diff --git a/source/libs/parser/inc/parAst.h b/source/libs/parser/inc/parAst.h index ad60d9b250..91ba0aa9b5 100644 --- a/source/libs/parser/inc/parAst.h +++ b/source/libs/parser/inc/parAst.h @@ -99,6 +99,7 @@ void initAstCreateContext(SParseContext* pParseCxt, SAstCreateContext* pCxt); SNode* createRawExprNode(SAstCreateContext* pCxt, const SToken* pToken, SNode* pNode); SNode* createRawExprNodeExt(SAstCreateContext* pCxt, const SToken* pStart, const SToken* pEnd, SNode* pNode); +SNode* setRawExprNodeIsPseudoColumn(SAstCreateContext* pCxt, SNode* pNode, bool isPseudoColumn); SNode* releaseRawExprNode(SAstCreateContext* pCxt, SNode* pNode); SToken getTokenFromRawExprNode(SAstCreateContext* pCxt, SNode* pNode); diff --git a/source/libs/parser/inc/sql.y b/source/libs/parser/inc/sql.y index 5e9e64e9e8..2bab513602 100755 --- a/source/libs/parser/inc/sql.y +++ b/source/libs/parser/inc/sql.y @@ -813,7 +813,7 @@ expr_or_subquery(A) ::= expression(B). //expr_or_subquery(A) ::= subquery(B). { A = createTempTableNode(pCxt, releaseRawExprNode(pCxt, B), NULL); } expression(A) ::= literal(B). { A = B; } -expression(A) ::= pseudo_column(B). { A = B; } +expression(A) ::= pseudo_column(B). { A = B; setRawExprNodeIsPseudoColumn(pCxt, A, true); } expression(A) ::= column_reference(B). { A = B; } expression(A) ::= function_expression(B). { A = B; } expression(A) ::= case_when_expression(B). { A = B; } diff --git a/source/libs/parser/src/parAstCreater.c b/source/libs/parser/src/parAstCreater.c index 06c098af92..12062e0d4a 100644 --- a/source/libs/parser/src/parAstCreater.c +++ b/source/libs/parser/src/parAstCreater.c @@ -257,6 +257,15 @@ SNode* createRawExprNodeExt(SAstCreateContext* pCxt, const SToken* pStart, const return (SNode*)target; } +SNode* setRawExprNodeIsPseudoColumn(SAstCreateContext* pCxt, SNode* pNode, bool isPseudoColumn) { + CHECK_PARSER_STATUS(pCxt); + if (NULL == pNode || QUERY_NODE_RAW_EXPR != nodeType(pNode)) { + return pNode; + } + ((SRawExprNode*)pNode)->isPseudoColumn = isPseudoColumn; + return pNode; +} + SNode* releaseRawExprNode(SAstCreateContext* pCxt, SNode* pNode) { CHECK_PARSER_STATUS(pCxt); SRawExprNode* pRawExpr = (SRawExprNode*)pNode; @@ -266,6 +275,10 @@ SNode* releaseRawExprNode(SAstCreateContext* pCxt, SNode* pNode) { if (QUERY_NODE_COLUMN == nodeType(pExpr)) { strcpy(pExpr->aliasName, ((SColumnNode*)pExpr)->colName); strcpy(pExpr->userAlias, ((SColumnNode*)pExpr)->colName); + } else if (pRawExpr->isPseudoColumn) { + // all pseudo column are translate to function with same name + strcpy(pExpr->userAlias, ((SFunctionNode*)pExpr)->functionName); + strcpy(pExpr->aliasName, ((SFunctionNode*)pExpr)->functionName); } else { int32_t len = TMIN(sizeof(pExpr->aliasName) - 1, pRawExpr->n); diff --git a/source/libs/parser/src/parTranslater.c b/source/libs/parser/src/parTranslater.c index 1c31993a92..42ab2f7a2f 100644 --- a/source/libs/parser/src/parTranslater.c +++ b/source/libs/parser/src/parTranslater.c @@ -263,6 +263,8 @@ static int32_t createLastTsSelectStmt(char* pDb, char* pTable, STableMeta* pMet static int32_t setQuery(STranslateContext* pCxt, SQuery* pQuery); static int32_t setRefreshMate(STranslateContext* pCxt, SQuery* pQuery); +static int32_t replacePsedudoColumnFuncWithColumn(STranslateContext* pCxt, SNode** ppNode); + static bool afterGroupBy(ESqlClause clause) { return clause > SQL_CLAUSE_GROUP_BY; } static bool beforeHaving(ESqlClause clause) { return clause < SQL_CLAUSE_HAVING; } @@ -1550,26 +1552,6 @@ static int32_t translateAggFunc(STranslateContext* pCxt, SFunctionNode* pFunc) { return TSDB_CODE_SUCCESS; } -static int32_t translateScanPseudoColumnFunc(STranslateContext* pCxt, SFunctionNode* pFunc) { - if (!fmIsScanPseudoColumnFunc(pFunc->funcId)) { - return TSDB_CODE_SUCCESS; - } - if (0 == LIST_LENGTH(pFunc->pParameterList)) { - if (!isSelectStmt(pCxt->pCurrStmt) || NULL == ((SSelectStmt*)pCxt->pCurrStmt)->pFromTable || - QUERY_NODE_REAL_TABLE != nodeType(((SSelectStmt*)pCxt->pCurrStmt)->pFromTable)) { - return generateSyntaxErrMsg(&pCxt->msgBuf, TSDB_CODE_PAR_INVALID_TBNAME); - } - } else { - SValueNode* pVal = (SValueNode*)nodesListGetNode(pFunc->pParameterList, 0); - STableNode* pTable = NULL; - pCxt->errCode = findTable(pCxt, pVal->literal, &pTable); - if (TSDB_CODE_SUCCESS == pCxt->errCode && (NULL == pTable || QUERY_NODE_REAL_TABLE != nodeType(pTable))) { - return generateSyntaxErrMsg(&pCxt->msgBuf, TSDB_CODE_PAR_INVALID_TBNAME); - } - } - return TSDB_CODE_SUCCESS; -} - static int32_t translateIndefiniteRowsFunc(STranslateContext* pCxt, SFunctionNode* pFunc) { if (!fmIsIndefiniteRowsFunc(pFunc->funcId)) { return TSDB_CODE_SUCCESS; @@ -1639,7 +1621,8 @@ static int32_t translateInterpFunc(STranslateContext* pCxt, SFunctionNode* pFunc return TSDB_CODE_SUCCESS; } -static int32_t translateInterpPseudoColumnFunc(STranslateContext* pCxt, SFunctionNode* pFunc) { +static int32_t translateInterpPseudoColumnFunc(STranslateContext* pCxt, SNode** ppNode, bool* pRewriteToColumn) { + SFunctionNode* pFunc = (SFunctionNode*)(*ppNode); if (!fmIsInterpPseudoColumnFunc(pFunc->funcId)) { return TSDB_CODE_SUCCESS; } @@ -1651,6 +1634,25 @@ static int32_t translateInterpPseudoColumnFunc(STranslateContext* pCxt, SFunctio return generateSyntaxErrMsgExt(&pCxt->msgBuf, TSDB_CODE_PAR_INVALID_INTERP_CLAUSE, "%s is not allowed in where clause", pFunc->functionName); } + + SSelectStmt* pSelect = (SSelectStmt*)pCxt->pCurrStmt; + SNode* pNode = NULL; + bool bFound = false; + FOREACH(pNode, pSelect->pProjectionList) { + if (nodeType(pNode) == QUERY_NODE_FUNCTION && strcasecmp(((SFunctionNode*)pNode)->functionName, "interp") == 0) { + bFound = true; + break; + } + } + if (!bFound) { + *pRewriteToColumn = true; + int32_t code = replacePsedudoColumnFuncWithColumn(pCxt, ppNode); + if (code != TSDB_CODE_SUCCESS) { + return code; + } + translateColumn(pCxt, (SColumnNode**)ppNode); + return pCxt->errCode; + } return TSDB_CODE_SUCCESS; } @@ -1706,20 +1708,6 @@ static int32_t translateForbidFillFunc(STranslateContext* pCxt, SFunctionNode* p return TSDB_CODE_SUCCESS; } -static int32_t translateWindowPseudoColumnFunc(STranslateContext* pCxt, SFunctionNode* pFunc) { - if (!fmIsWindowPseudoColumnFunc(pFunc->funcId)) { - return TSDB_CODE_SUCCESS; - } - if (!isSelectStmt(pCxt->pCurrStmt) || NULL == ((SSelectStmt*)pCxt->pCurrStmt)->pWindow) { - return generateSyntaxErrMsg(&pCxt->msgBuf, TSDB_CODE_PAR_INVALID_WINDOW_PC); - } - if (beforeWindow(pCxt->currClause)) { - return generateSyntaxErrMsgExt(&pCxt->msgBuf, TSDB_CODE_PAR_INVALID_WINDOW_PC, "There mustn't be %s", - pFunc->functionName); - } - return TSDB_CODE_SUCCESS; -} - static int32_t translateForbidStreamFunc(STranslateContext* pCxt, SFunctionNode* pFunc) { if (!fmIsForbidStreamFunc(pFunc->funcId)) { return TSDB_CODE_SUCCESS; @@ -1948,10 +1936,108 @@ static int32_t rewriteSystemInfoFunc(STranslateContext* pCxt, SNode** pNode) { return TSDB_CODE_PAR_INTERNAL_ERROR; } -static int32_t translateNormalFunction(STranslateContext* pCxt, SFunctionNode* pFunc) { +static int32_t replacePsedudoColumnFuncWithColumn(STranslateContext* pCxt, SNode** ppNode) { + SColumnNode* pCol = (SColumnNode*)nodesMakeNode(QUERY_NODE_COLUMN); + if (pCol == NULL) { + return TSDB_CODE_OUT_OF_MEMORY; + } + SExprNode* pOldExpr = (SExprNode*)(*ppNode); + //rewrite a.tbname == tbname(a) + if (nodeType(*ppNode) == QUERY_NODE_FUNCTION && ((SFunctionNode*)(*ppNode))->funcType == FUNCTION_TYPE_TBNAME) { + SFunctionNode* pFunc = (SFunctionNode*)(*ppNode); + if (0 != LIST_LENGTH(pFunc->pParameterList)) { + SValueNode* pVal = (SValueNode*)nodesListGetNode(pFunc->pParameterList, 0); + pCol->node.resType = pOldExpr->resType; + strcpy(pCol->tableAlias, pVal->literal); + strcpy(pCol->colName, pFunc->functionName); + strcpy(pCol->node.aliasName, pCol->colName); + strcpy(pCol->node.userAlias, pCol->colName); + nodesDestroyNode(*ppNode); + *ppNode = (SNode*)pCol; + + return TSDB_CODE_SUCCESS; + } + } + pCol->node.resType = pOldExpr->resType; + strcpy(pCol->node.aliasName, pOldExpr->aliasName); + strcpy(pCol->node.userAlias, pOldExpr->userAlias); + strcpy(pCol->colName, pOldExpr->aliasName); + + nodesDestroyNode(*ppNode); + *ppNode = (SNode*)pCol; + + return TSDB_CODE_SUCCESS; +} + +static int32_t rewriteToColumnAndRetranslate(STranslateContext* pCxt, SNode** ppNode, int32_t errCode) { + int32_t code = replacePsedudoColumnFuncWithColumn(pCxt, ppNode); + if (code != TSDB_CODE_SUCCESS) { + return code; + } + translateColumn(pCxt, (SColumnNode**)ppNode); + if (pCxt->errCode != TSDB_CODE_SUCCESS) { + return generateSyntaxErrMsg(&pCxt->msgBuf, errCode); + } else { + return TSDB_CODE_SUCCESS; + } +} + +static int32_t translateWindowPseudoColumnFunc(STranslateContext* pCxt, SNode** ppNode, bool* pRewriteToColumn) { + SFunctionNode* pFunc = (SFunctionNode*)(*ppNode); + if (!fmIsWindowPseudoColumnFunc(pFunc->funcId)) { + return TSDB_CODE_SUCCESS; + } + if (!isSelectStmt(pCxt->pCurrStmt)) { + return generateSyntaxErrMsg(&pCxt->msgBuf, TSDB_CODE_PAR_INVALID_WINDOW_PC); + } + if (((SSelectStmt*)pCxt->pCurrStmt)->pWindow && beforeWindow(pCxt->currClause)) { + return generateSyntaxErrMsgExt(&pCxt->msgBuf, TSDB_CODE_PAR_INVALID_WINDOW_PC, "There mustn't be %s", + pFunc->functionName); + } + if (NULL == ((SSelectStmt*)pCxt->pCurrStmt)->pWindow) { + *pRewriteToColumn = true; + return rewriteToColumnAndRetranslate(pCxt, ppNode, TSDB_CODE_PAR_INVALID_WINDOW_PC); + } + return TSDB_CODE_SUCCESS; +} + +static int32_t translateScanPseudoColumnFunc(STranslateContext* pCxt, SNode** ppNode, bool* pRewriteToColumn) { + SFunctionNode* pFunc = (SFunctionNode*)(*ppNode); + if (!fmIsScanPseudoColumnFunc(pFunc->funcId)) { + return TSDB_CODE_SUCCESS; + } + if (0 == LIST_LENGTH(pFunc->pParameterList)) { + if (!isSelectStmt(pCxt->pCurrStmt) || NULL == ((SSelectStmt*)pCxt->pCurrStmt)->pFromTable) { + return generateSyntaxErrMsg(&pCxt->msgBuf, TSDB_CODE_PAR_INVALID_TBNAME); + } + if (QUERY_NODE_REAL_TABLE != nodeType(((SSelectStmt*)pCxt->pCurrStmt)->pFromTable)) { + *pRewriteToColumn = true; + return rewriteToColumnAndRetranslate(pCxt, ppNode, TSDB_CODE_PAR_INVALID_TBNAME); + } + } else { + SValueNode* pVal = (SValueNode*)nodesListGetNode(pFunc->pParameterList, 0); + STableNode* pTable = NULL; + pCxt->errCode = findTable(pCxt, pVal->literal, &pTable); + if (TSDB_CODE_SUCCESS != pCxt->errCode || (NULL == pTable)) { + return generateSyntaxErrMsg(&pCxt->msgBuf, TSDB_CODE_PAR_INVALID_TBNAME); + } + if (nodeType(pTable) != QUERY_NODE_REAL_TABLE) { + *pRewriteToColumn = true; + return rewriteToColumnAndRetranslate(pCxt, ppNode, TSDB_CODE_PAR_INVALID_TBNAME); + } + } + return TSDB_CODE_SUCCESS; +} + +static int32_t translateNormalFunction(STranslateContext* pCxt, SNode** ppNode) { + SFunctionNode* pFunc = (SFunctionNode*)(*ppNode); int32_t code = translateAggFunc(pCxt, pFunc); if (TSDB_CODE_SUCCESS == code) { - code = translateScanPseudoColumnFunc(pCxt, pFunc); + bool bRewriteToColumn = false; + code = translateScanPseudoColumnFunc(pCxt, ppNode, &bRewriteToColumn); + if (bRewriteToColumn) { + return code; + } } if (TSDB_CODE_SUCCESS == code) { code = translateIndefiniteRowsFunc(pCxt, pFunc); @@ -1960,7 +2046,11 @@ static int32_t translateNormalFunction(STranslateContext* pCxt, SFunctionNode* p code = translateForbidFillFunc(pCxt, pFunc); } if (TSDB_CODE_SUCCESS == code) { - code = translateWindowPseudoColumnFunc(pCxt, pFunc); + bool bRewriteToColumn = false; + code = translateWindowPseudoColumnFunc(pCxt, ppNode, &bRewriteToColumn); + if (bRewriteToColumn) { + return code; + } } if (TSDB_CODE_SUCCESS == code) { code = translateForbidStreamFunc(pCxt, pFunc); @@ -1981,7 +2071,11 @@ static int32_t translateNormalFunction(STranslateContext* pCxt, SFunctionNode* p code = translateInterpFunc(pCxt, pFunc); } if (TSDB_CODE_SUCCESS == code) { - code = translateInterpPseudoColumnFunc(pCxt, pFunc); + bool bRewriteToColumn = false; + code = translateInterpPseudoColumnFunc(pCxt, ppNode, &bRewriteToColumn); + if (bRewriteToColumn) { + return code; + } } if (TSDB_CODE_SUCCESS == code) { code = translateTimelineFunc(pCxt, pFunc); @@ -2052,7 +2146,7 @@ static int32_t translateFunctionImpl(STranslateContext* pCxt, SFunctionNode** pF if (fmIsClientPseudoColumnFunc((*pFunc)->funcId)) { return rewriteClientPseudoColumnFunc(pCxt, (SNode**)pFunc); } - return translateNormalFunction(pCxt, *pFunc); + return translateNormalFunction(pCxt, (SNode**)pFunc); } static EDealRes translateFunction(STranslateContext* pCxt, SFunctionNode** pFunc) { diff --git a/source/libs/parser/src/sql.c b/source/libs/parser/src/sql.c index 77cb9cf181..f79ec34f03 100644 --- a/source/libs/parser/src/sql.c +++ b/source/libs/parser/src/sql.c @@ -1,3 +1,5 @@ +/* This file is automatically generated by Lemon from input grammar +** source file "sql.y". */ /* ** 2000-05-29 ** @@ -22,9 +24,8 @@ ** The following is the concatenation of all %include directives from the ** input grammar file: */ -#include -#include /************ Begin %include sections from the grammar ************************/ +#line 11 "sql.y" #include #include @@ -41,12 +42,356 @@ #include "parAst.h" #define YYSTACKDEPTH 0 +#line 46 "sql.c" /**************** End of %include directives **********************************/ -/* These constants specify the various numeric values for terminal symbols -** in a format understandable to "makeheaders". This section is blank unless -** "lemon" is run with the "-m" command-line option. -***************** Begin makeheaders token definitions *************************/ -/**************** End makeheaders token definitions ***************************/ +/* These constants specify the various numeric values for terminal symbols. +***************** Begin token definitions *************************************/ +#ifndef TK_OR +#define TK_OR 1 +#define TK_AND 2 +#define TK_UNION 3 +#define TK_ALL 4 +#define TK_MINUS 5 +#define TK_EXCEPT 6 +#define TK_INTERSECT 7 +#define TK_NK_BITAND 8 +#define TK_NK_BITOR 9 +#define TK_NK_LSHIFT 10 +#define TK_NK_RSHIFT 11 +#define TK_NK_PLUS 12 +#define TK_NK_MINUS 13 +#define TK_NK_STAR 14 +#define TK_NK_SLASH 15 +#define TK_NK_REM 16 +#define TK_NK_CONCAT 17 +#define TK_CREATE 18 +#define TK_ACCOUNT 19 +#define TK_NK_ID 20 +#define TK_PASS 21 +#define TK_NK_STRING 22 +#define TK_ALTER 23 +#define TK_PPS 24 +#define TK_TSERIES 25 +#define TK_STORAGE 26 +#define TK_STREAMS 27 +#define TK_QTIME 28 +#define TK_DBS 29 +#define TK_USERS 30 +#define TK_CONNS 31 +#define TK_STATE 32 +#define TK_NK_COMMA 33 +#define TK_HOST 34 +#define TK_USER 35 +#define TK_ENABLE 36 +#define TK_NK_INTEGER 37 +#define TK_SYSINFO 38 +#define TK_ADD 39 +#define TK_DROP 40 +#define TK_GRANT 41 +#define TK_ON 42 +#define TK_TO 43 +#define TK_REVOKE 44 +#define TK_FROM 45 +#define TK_SUBSCRIBE 46 +#define TK_READ 47 +#define TK_WRITE 48 +#define TK_NK_DOT 49 +#define TK_WITH 50 +#define TK_DNODE 51 +#define TK_PORT 52 +#define TK_DNODES 53 +#define TK_RESTORE 54 +#define TK_NK_IPTOKEN 55 +#define TK_FORCE 56 +#define TK_UNSAFE 57 +#define TK_LOCAL 58 +#define TK_QNODE 59 +#define TK_BNODE 60 +#define TK_SNODE 61 +#define TK_MNODE 62 +#define TK_VNODE 63 +#define TK_DATABASE 64 +#define TK_USE 65 +#define TK_FLUSH 66 +#define TK_TRIM 67 +#define TK_COMPACT 68 +#define TK_IF 69 +#define TK_NOT 70 +#define TK_EXISTS 71 +#define TK_BUFFER 72 +#define TK_CACHEMODEL 73 +#define TK_CACHESIZE 74 +#define TK_COMP 75 +#define TK_DURATION 76 +#define TK_NK_VARIABLE 77 +#define TK_MAXROWS 78 +#define TK_MINROWS 79 +#define TK_KEEP 80 +#define TK_PAGES 81 +#define TK_PAGESIZE 82 +#define TK_TSDB_PAGESIZE 83 +#define TK_PRECISION 84 +#define TK_REPLICA 85 +#define TK_VGROUPS 86 +#define TK_SINGLE_STABLE 87 +#define TK_RETENTIONS 88 +#define TK_SCHEMALESS 89 +#define TK_WAL_LEVEL 90 +#define TK_WAL_FSYNC_PERIOD 91 +#define TK_WAL_RETENTION_PERIOD 92 +#define TK_WAL_RETENTION_SIZE 93 +#define TK_WAL_ROLL_PERIOD 94 +#define TK_WAL_SEGMENT_SIZE 95 +#define TK_STT_TRIGGER 96 +#define TK_TABLE_PREFIX 97 +#define TK_TABLE_SUFFIX 98 +#define TK_KEEP_TIME_OFFSET 99 +#define TK_NK_COLON 100 +#define TK_BWLIMIT 101 +#define TK_START 102 +#define TK_TIMESTAMP 103 +#define TK_END 104 +#define TK_TABLE 105 +#define TK_NK_LP 106 +#define TK_NK_RP 107 +#define TK_STABLE 108 +#define TK_COLUMN 109 +#define TK_MODIFY 110 +#define TK_RENAME 111 +#define TK_TAG 112 +#define TK_SET 113 +#define TK_NK_EQ 114 +#define TK_USING 115 +#define TK_TAGS 116 +#define TK_BOOL 117 +#define TK_TINYINT 118 +#define TK_SMALLINT 119 +#define TK_INT 120 +#define TK_INTEGER 121 +#define TK_BIGINT 122 +#define TK_FLOAT 123 +#define TK_DOUBLE 124 +#define TK_BINARY 125 +#define TK_NCHAR 126 +#define TK_UNSIGNED 127 +#define TK_JSON 128 +#define TK_VARCHAR 129 +#define TK_MEDIUMBLOB 130 +#define TK_BLOB 131 +#define TK_VARBINARY 132 +#define TK_GEOMETRY 133 +#define TK_DECIMAL 134 +#define TK_COMMENT 135 +#define TK_MAX_DELAY 136 +#define TK_WATERMARK 137 +#define TK_ROLLUP 138 +#define TK_TTL 139 +#define TK_SMA 140 +#define TK_DELETE_MARK 141 +#define TK_FIRST 142 +#define TK_LAST 143 +#define TK_SHOW 144 +#define TK_PRIVILEGES 145 +#define TK_DATABASES 146 +#define TK_TABLES 147 +#define TK_STABLES 148 +#define TK_MNODES 149 +#define TK_QNODES 150 +#define TK_FUNCTIONS 151 +#define TK_INDEXES 152 +#define TK_ACCOUNTS 153 +#define TK_APPS 154 +#define TK_CONNECTIONS 155 +#define TK_LICENCES 156 +#define TK_GRANTS 157 +#define TK_QUERIES 158 +#define TK_SCORES 159 +#define TK_TOPICS 160 +#define TK_VARIABLES 161 +#define TK_CLUSTER 162 +#define TK_BNODES 163 +#define TK_SNODES 164 +#define TK_TRANSACTIONS 165 +#define TK_DISTRIBUTED 166 +#define TK_CONSUMERS 167 +#define TK_SUBSCRIPTIONS 168 +#define TK_VNODES 169 +#define TK_ALIVE 170 +#define TK_NORMAL 171 +#define TK_CHILD 172 +#define TK_LIKE 173 +#define TK_TBNAME 174 +#define TK_QTAGS 175 +#define TK_AS 176 +#define TK_SYSTEM 177 +#define TK_INDEX 178 +#define TK_FUNCTION 179 +#define TK_INTERVAL 180 +#define TK_COUNT 181 +#define TK_LAST_ROW 182 +#define TK_META 183 +#define TK_ONLY 184 +#define TK_TOPIC 185 +#define TK_CONSUMER 186 +#define TK_GROUP 187 +#define TK_DESC 188 +#define TK_DESCRIBE 189 +#define TK_RESET 190 +#define TK_QUERY 191 +#define TK_CACHE 192 +#define TK_EXPLAIN 193 +#define TK_ANALYZE 194 +#define TK_VERBOSE 195 +#define TK_NK_BOOL 196 +#define TK_RATIO 197 +#define TK_NK_FLOAT 198 +#define TK_OUTPUTTYPE 199 +#define TK_AGGREGATE 200 +#define TK_BUFSIZE 201 +#define TK_LANGUAGE 202 +#define TK_REPLACE 203 +#define TK_STREAM 204 +#define TK_INTO 205 +#define TK_PAUSE 206 +#define TK_RESUME 207 +#define TK_TRIGGER 208 +#define TK_AT_ONCE 209 +#define TK_WINDOW_CLOSE 210 +#define TK_IGNORE 211 +#define TK_EXPIRED 212 +#define TK_FILL_HISTORY 213 +#define TK_UPDATE 214 +#define TK_SUBTABLE 215 +#define TK_UNTREATED 216 +#define TK_KILL 217 +#define TK_CONNECTION 218 +#define TK_TRANSACTION 219 +#define TK_BALANCE 220 +#define TK_VGROUP 221 +#define TK_LEADER 222 +#define TK_MERGE 223 +#define TK_REDISTRIBUTE 224 +#define TK_SPLIT 225 +#define TK_DELETE 226 +#define TK_INSERT 227 +#define TK_NULL 228 +#define TK_NK_QUESTION 229 +#define TK_NK_ARROW 230 +#define TK_ROWTS 231 +#define TK_QSTART 232 +#define TK_QEND 233 +#define TK_QDURATION 234 +#define TK_WSTART 235 +#define TK_WEND 236 +#define TK_WDURATION 237 +#define TK_IROWTS 238 +#define TK_ISFILLED 239 +#define TK_CAST 240 +#define TK_NOW 241 +#define TK_TODAY 242 +#define TK_TIMEZONE 243 +#define TK_CLIENT_VERSION 244 +#define TK_SERVER_VERSION 245 +#define TK_SERVER_STATUS 246 +#define TK_CURRENT_USER 247 +#define TK_CASE 248 +#define TK_WHEN 249 +#define TK_THEN 250 +#define TK_ELSE 251 +#define TK_BETWEEN 252 +#define TK_IS 253 +#define TK_NK_LT 254 +#define TK_NK_GT 255 +#define TK_NK_LE 256 +#define TK_NK_GE 257 +#define TK_NK_NE 258 +#define TK_MATCH 259 +#define TK_NMATCH 260 +#define TK_CONTAINS 261 +#define TK_IN 262 +#define TK_JOIN 263 +#define TK_INNER 264 +#define TK_SELECT 265 +#define TK_NK_HINT 266 +#define TK_DISTINCT 267 +#define TK_WHERE 268 +#define TK_PARTITION 269 +#define TK_BY 270 +#define TK_SESSION 271 +#define TK_STATE_WINDOW 272 +#define TK_EVENT_WINDOW 273 +#define TK_SLIDING 274 +#define TK_FILL 275 +#define TK_VALUE 276 +#define TK_VALUE_F 277 +#define TK_NONE 278 +#define TK_PREV 279 +#define TK_NULL_F 280 +#define TK_LINEAR 281 +#define TK_NEXT 282 +#define TK_HAVING 283 +#define TK_RANGE 284 +#define TK_EVERY 285 +#define TK_ORDER 286 +#define TK_SLIMIT 287 +#define TK_SOFFSET 288 +#define TK_LIMIT 289 +#define TK_OFFSET 290 +#define TK_ASC 291 +#define TK_NULLS 292 +#define TK_ABORT 293 +#define TK_AFTER 294 +#define TK_ATTACH 295 +#define TK_BEFORE 296 +#define TK_BEGIN 297 +#define TK_BITAND 298 +#define TK_BITNOT 299 +#define TK_BITOR 300 +#define TK_BLOCKS 301 +#define TK_CHANGE 302 +#define TK_COMMA 303 +#define TK_CONCAT 304 +#define TK_CONFLICT 305 +#define TK_COPY 306 +#define TK_DEFERRED 307 +#define TK_DELIMITERS 308 +#define TK_DETACH 309 +#define TK_DIVIDE 310 +#define TK_DOT 311 +#define TK_EACH 312 +#define TK_FAIL 313 +#define TK_FILE 314 +#define TK_FOR 315 +#define TK_GLOB 316 +#define TK_ID 317 +#define TK_IMMEDIATE 318 +#define TK_IMPORT 319 +#define TK_INITIALLY 320 +#define TK_INSTEAD 321 +#define TK_ISNULL 322 +#define TK_KEY 323 +#define TK_MODULES 324 +#define TK_NK_BITNOT 325 +#define TK_NK_SEMI 326 +#define TK_NOTNULL 327 +#define TK_OF 328 +#define TK_PLUS 329 +#define TK_PRIVILEGE 330 +#define TK_RAISE 331 +#define TK_RESTRICT 332 +#define TK_ROW 333 +#define TK_SEMI 334 +#define TK_STAR 335 +#define TK_STATEMENT 336 +#define TK_STRICT 337 +#define TK_STRING 338 +#define TK_TIMES 339 +#define TK_VALUES 340 +#define TK_VARIABLE 341 +#define TK_VIEW 342 +#define TK_WAL 343 +#endif +/**************** End token definitions ***************************************/ /* The next sections is a series of control #defines. ** various aspects of the generated parser. @@ -1526,6 +1871,7 @@ struct yyParser { }; typedef struct yyParser yyParser; +#include #ifndef NDEBUG #include static FILE *yyTraceFILE = 0; @@ -2896,7 +3242,9 @@ static void yy_destructor( case 497: /* query_simple_or_subquery */ case 499: /* sort_specification */ { +#line 7 "sql.y" nodesDestroyNode((yypminor->yy348)); +#line 3247 "sql.c" } break; case 345: /* account_options */ @@ -2906,7 +3254,9 @@ static void yy_destructor( case 422: /* with_meta */ case 431: /* bufsize_opt */ { +#line 54 "sql.y" +#line 3259 "sql.c" } break; case 349: /* ip_range_list */ @@ -2943,7 +3293,9 @@ static void yy_destructor( case 493: /* order_by_clause_opt */ case 498: /* sort_specification_list */ { +#line 85 "sql.y" nodesDestroyList((yypminor->yy860)); +#line 3298 "sql.c" } break; case 352: /* user_name */ @@ -2965,24 +3317,32 @@ static void yy_destructor( case 452: /* noarg_func */ case 470: /* alias_opt */ { +#line 792 "sql.y" +#line 3322 "sql.c" } break; case 353: /* sysinfo_opt */ { +#line 112 "sql.y" +#line 3329 "sql.c" } break; case 354: /* privileges */ case 357: /* priv_type_list */ case 358: /* priv_type */ { +#line 121 "sql.y" +#line 3338 "sql.c" } break; case 355: /* priv_level */ { +#line 137 "sql.y" +#line 3345 "sql.c" } break; case 364: /* force_opt */ @@ -2996,55 +3356,75 @@ static void yy_destructor( case 476: /* set_quantifier_opt */ case 477: /* tag_mode_opt */ { +#line 166 "sql.y" +#line 3361 "sql.c" } break; case 377: /* alter_db_option */ case 399: /* alter_table_option */ { +#line 264 "sql.y" +#line 3369 "sql.c" } break; case 389: /* type_name */ { +#line 386 "sql.y" +#line 3376 "sql.c" } break; case 404: /* db_kind_opt */ case 411: /* table_kind */ { +#line 547 "sql.y" +#line 3384 "sql.c" } break; case 405: /* table_kind_db_name_cond_opt */ { +#line 512 "sql.y" +#line 3391 "sql.c" } break; case 460: /* compare_op */ case 461: /* in_op */ { +#line 980 "sql.y" +#line 3399 "sql.c" } break; case 473: /* join_type */ { +#line 1056 "sql.y" +#line 3406 "sql.c" } break; case 489: /* fill_mode */ { +#line 1142 "sql.y" +#line 3413 "sql.c" } break; case 500: /* ordering_specification_opt */ { +#line 1227 "sql.y" +#line 3420 "sql.c" } break; case 501: /* null_ordering_opt */ { +#line 1233 "sql.y" +#line 3427 "sql.c" } break; /********* End destructor definitions *****************************************/ @@ -3211,7 +3591,7 @@ static YYACTIONTYPE yy_find_shift_action( #endif /* YYWILDCARD */ return yy_default[stateno]; }else{ - assert( i>=0 && i=0 && i<(int)(sizeof(yy_action)/sizeof(yy_action[0])) ); return yy_action[i]; } }while(1); @@ -4615,54 +4995,6 @@ static YYACTIONTYPE yy_reduce( (void)yyLookahead; (void)yyLookaheadToken; yymsp = yypParser->yytos; -#ifndef NDEBUG - if( yyTraceFILE && yyruleno<(int)(sizeof(yyRuleName)/sizeof(yyRuleName[0])) ){ - yysize = yyRuleInfoNRhs[yyruleno]; - if( yysize ){ - fprintf(yyTraceFILE, "%sReduce %d [%s]%s, pop back to state %d.\n", - yyTracePrompt, - yyruleno, yyRuleName[yyruleno], - yyrulenoyytos - yypParser->yystack)>yypParser->yyhwm ){ - yypParser->yyhwm++; - assert( yypParser->yyhwm == (int)(yypParser->yytos - yypParser->yystack)); - } -#endif -#if YYSTACKDEPTH>0 - if( yypParser->yytos>=yypParser->yystackEnd ){ - yyStackOverflow(yypParser); - /* The call to yyStackOverflow() above pops the stack until it is - ** empty, causing the main parser loop to exit. So the return value - ** is never used and does not matter. */ - return 0; - } -#else - if( yypParser->yytos>=&yypParser->yystack[yypParser->yystksz-1] ){ - if( yyGrowStack(yypParser) ){ - yyStackOverflow(yypParser); - /* The call to yyStackOverflow() above pops the stack until it is - ** empty, causing the main parser loop to exit. So the return value - ** is never used and does not matter. */ - return 0; - } - yymsp = yypParser->yytos; - } -#endif - } switch( yyruleno ){ /* Beginning here are the reduction cases. A typical example @@ -4676,15 +5008,21 @@ static YYACTIONTYPE yy_reduce( /********** Begin reduce actions **********************************************/ YYMINORTYPE yylhsminor; case 0: /* cmd ::= CREATE ACCOUNT NK_ID PASS NK_STRING account_options */ +#line 50 "sql.y" { pCxt->errCode = generateSyntaxErrMsg(&pCxt->msgBuf, TSDB_CODE_PAR_EXPRIE_STATEMENT); } +#line 5013 "sql.c" yy_destructor(yypParser,345,&yymsp[0].minor); break; case 1: /* cmd ::= ALTER ACCOUNT NK_ID alter_account_options */ +#line 51 "sql.y" { pCxt->errCode = generateSyntaxErrMsg(&pCxt->msgBuf, TSDB_CODE_PAR_EXPRIE_STATEMENT); } +#line 5019 "sql.c" yy_destructor(yypParser,346,&yymsp[0].minor); break; case 2: /* account_options ::= */ +#line 55 "sql.y" { } +#line 5025 "sql.c" break; case 3: /* account_options ::= account_options PPS literal */ case 4: /* account_options ::= account_options TSERIES literal */ yytestcase(yyruleno==4); @@ -4696,18 +5034,24 @@ static YYACTIONTYPE yy_reduce( case 10: /* account_options ::= account_options CONNS literal */ yytestcase(yyruleno==10); case 11: /* account_options ::= account_options STATE literal */ yytestcase(yyruleno==11); { yy_destructor(yypParser,345,&yymsp[-2].minor); +#line 56 "sql.y" { } +#line 5039 "sql.c" yy_destructor(yypParser,347,&yymsp[0].minor); } break; case 12: /* alter_account_options ::= alter_account_option */ { yy_destructor(yypParser,348,&yymsp[0].minor); +#line 68 "sql.y" { } +#line 5047 "sql.c" } break; case 13: /* alter_account_options ::= alter_account_options alter_account_option */ { yy_destructor(yypParser,346,&yymsp[-1].minor); +#line 69 "sql.y" { } +#line 5054 "sql.c" yy_destructor(yypParser,348,&yymsp[0].minor); } break; @@ -4721,19 +5065,27 @@ static YYACTIONTYPE yy_reduce( case 21: /* alter_account_option ::= USERS literal */ yytestcase(yyruleno==21); case 22: /* alter_account_option ::= CONNS literal */ yytestcase(yyruleno==22); case 23: /* alter_account_option ::= STATE literal */ yytestcase(yyruleno==23); +#line 73 "sql.y" { } +#line 5070 "sql.c" yy_destructor(yypParser,347,&yymsp[0].minor); break; case 24: /* ip_range_list ::= NK_STRING */ +#line 86 "sql.y" { yylhsminor.yy860 = createNodeList(pCxt, createValueNode(pCxt, TSDB_DATA_TYPE_BINARY, &yymsp[0].minor.yy0)); } +#line 5076 "sql.c" yymsp[0].minor.yy860 = yylhsminor.yy860; break; case 25: /* ip_range_list ::= ip_range_list NK_COMMA NK_STRING */ +#line 87 "sql.y" { yylhsminor.yy860 = addNodeToList(pCxt, yymsp[-2].minor.yy860, createValueNode(pCxt, TSDB_DATA_TYPE_BINARY, &yymsp[0].minor.yy0)); } +#line 5082 "sql.c" yymsp[-2].minor.yy860 = yylhsminor.yy860; break; case 26: /* white_list ::= HOST ip_range_list */ +#line 91 "sql.y" { yymsp[-1].minor.yy860 = yymsp[0].minor.yy860; } +#line 5088 "sql.c" break; case 27: /* white_list_opt ::= */ case 184: /* specific_cols_opt ::= */ yytestcase(yyruleno==184); @@ -4744,86 +5096,132 @@ static YYACTIONTYPE yy_reduce( case 557: /* partition_by_clause_opt ::= */ yytestcase(yyruleno==557); case 582: /* group_by_clause_opt ::= */ yytestcase(yyruleno==582); case 602: /* order_by_clause_opt ::= */ yytestcase(yyruleno==602); +#line 95 "sql.y" { yymsp[1].minor.yy860 = NULL; } +#line 5101 "sql.c" break; case 28: /* white_list_opt ::= white_list */ case 216: /* tags_def_opt ::= tags_def */ yytestcase(yyruleno==216); case 361: /* tag_def_or_ref_opt ::= tags_def */ yytestcase(yyruleno==361); case 482: /* star_func_para_list ::= other_para_list */ yytestcase(yyruleno==482); +#line 96 "sql.y" { yylhsminor.yy860 = yymsp[0].minor.yy860; } +#line 5109 "sql.c" yymsp[0].minor.yy860 = yylhsminor.yy860; break; case 29: /* cmd ::= CREATE USER user_name PASS NK_STRING sysinfo_opt white_list_opt */ +#line 100 "sql.y" { pCxt->pRootNode = createCreateUserStmt(pCxt, &yymsp[-4].minor.yy269, &yymsp[-2].minor.yy0, yymsp[-1].minor.yy371); pCxt->pRootNode = addCreateUserStmtWhiteList(pCxt, pCxt->pRootNode, yymsp[0].minor.yy860); } +#line 5118 "sql.c" break; case 30: /* cmd ::= ALTER USER user_name PASS NK_STRING */ +#line 104 "sql.y" { pCxt->pRootNode = createAlterUserStmt(pCxt, &yymsp[-2].minor.yy269, TSDB_ALTER_USER_PASSWD, &yymsp[0].minor.yy0); } +#line 5123 "sql.c" break; case 31: /* cmd ::= ALTER USER user_name ENABLE NK_INTEGER */ +#line 105 "sql.y" { pCxt->pRootNode = createAlterUserStmt(pCxt, &yymsp[-2].minor.yy269, TSDB_ALTER_USER_ENABLE, &yymsp[0].minor.yy0); } +#line 5128 "sql.c" break; case 32: /* cmd ::= ALTER USER user_name SYSINFO NK_INTEGER */ +#line 106 "sql.y" { pCxt->pRootNode = createAlterUserStmt(pCxt, &yymsp[-2].minor.yy269, TSDB_ALTER_USER_SYSINFO, &yymsp[0].minor.yy0); } +#line 5133 "sql.c" break; case 33: /* cmd ::= ALTER USER user_name ADD white_list */ +#line 107 "sql.y" { pCxt->pRootNode = createAlterUserStmt(pCxt, &yymsp[-2].minor.yy269, TSDB_ALTER_USER_ADD_WHITE_LIST, yymsp[0].minor.yy860); } +#line 5138 "sql.c" break; case 34: /* cmd ::= ALTER USER user_name DROP white_list */ +#line 108 "sql.y" { pCxt->pRootNode = createAlterUserStmt(pCxt, &yymsp[-2].minor.yy269, TSDB_ALTER_USER_DROP_WHITE_LIST, yymsp[0].minor.yy860); } +#line 5143 "sql.c" break; case 35: /* cmd ::= DROP USER user_name */ +#line 109 "sql.y" { pCxt->pRootNode = createDropUserStmt(pCxt, &yymsp[0].minor.yy269); } +#line 5148 "sql.c" break; case 36: /* sysinfo_opt ::= */ +#line 113 "sql.y" { yymsp[1].minor.yy371 = 1; } +#line 5153 "sql.c" break; case 37: /* sysinfo_opt ::= SYSINFO NK_INTEGER */ +#line 114 "sql.y" { yymsp[-1].minor.yy371 = taosStr2Int8(yymsp[0].minor.yy0.z, NULL, 10); } +#line 5158 "sql.c" break; case 38: /* cmd ::= GRANT privileges ON priv_level with_opt TO user_name */ +#line 117 "sql.y" { pCxt->pRootNode = createGrantStmt(pCxt, yymsp[-5].minor.yy537, &yymsp[-3].minor.yy993, &yymsp[0].minor.yy269, yymsp[-2].minor.yy348); } +#line 5163 "sql.c" break; case 39: /* cmd ::= REVOKE privileges ON priv_level with_opt FROM user_name */ +#line 118 "sql.y" { pCxt->pRootNode = createRevokeStmt(pCxt, yymsp[-5].minor.yy537, &yymsp[-3].minor.yy993, &yymsp[0].minor.yy269, yymsp[-2].minor.yy348); } +#line 5168 "sql.c" break; case 40: /* privileges ::= ALL */ +#line 122 "sql.y" { yymsp[0].minor.yy537 = PRIVILEGE_TYPE_ALL; } +#line 5173 "sql.c" break; case 41: /* privileges ::= priv_type_list */ case 43: /* priv_type_list ::= priv_type */ yytestcase(yyruleno==43); +#line 123 "sql.y" { yylhsminor.yy537 = yymsp[0].minor.yy537; } +#line 5179 "sql.c" yymsp[0].minor.yy537 = yylhsminor.yy537; break; case 42: /* privileges ::= SUBSCRIBE */ +#line 124 "sql.y" { yymsp[0].minor.yy537 = PRIVILEGE_TYPE_SUBSCRIBE; } +#line 5185 "sql.c" break; case 44: /* priv_type_list ::= priv_type_list NK_COMMA priv_type */ +#line 129 "sql.y" { yylhsminor.yy537 = yymsp[-2].minor.yy537 | yymsp[0].minor.yy537; } +#line 5190 "sql.c" yymsp[-2].minor.yy537 = yylhsminor.yy537; break; case 45: /* priv_type ::= READ */ +#line 133 "sql.y" { yymsp[0].minor.yy537 = PRIVILEGE_TYPE_READ; } +#line 5196 "sql.c" break; case 46: /* priv_type ::= WRITE */ +#line 134 "sql.y" { yymsp[0].minor.yy537 = PRIVILEGE_TYPE_WRITE; } +#line 5201 "sql.c" break; case 47: /* priv_level ::= NK_STAR NK_DOT NK_STAR */ +#line 138 "sql.y" { yylhsminor.yy993.first = yymsp[-2].minor.yy0; yylhsminor.yy993.second = yymsp[0].minor.yy0; } +#line 5206 "sql.c" yymsp[-2].minor.yy993 = yylhsminor.yy993; break; case 48: /* priv_level ::= db_name NK_DOT NK_STAR */ +#line 139 "sql.y" { yylhsminor.yy993.first = yymsp[-2].minor.yy269; yylhsminor.yy993.second = yymsp[0].minor.yy0; } +#line 5212 "sql.c" yymsp[-2].minor.yy993 = yylhsminor.yy993; break; case 49: /* priv_level ::= db_name NK_DOT table_name */ +#line 140 "sql.y" { yylhsminor.yy993.first = yymsp[-2].minor.yy269; yylhsminor.yy993.second = yymsp[0].minor.yy269; } +#line 5218 "sql.c" yymsp[-2].minor.yy993 = yylhsminor.yy993; break; case 50: /* priv_level ::= topic_name */ +#line 141 "sql.y" { yylhsminor.yy993.first = yymsp[0].minor.yy269; yylhsminor.yy993.second = nil_token; } +#line 5224 "sql.c" yymsp[0].minor.yy993 = yylhsminor.yy993; break; case 51: /* with_opt ::= */ @@ -4842,46 +5240,72 @@ static YYACTIONTYPE yy_reduce( case 591: /* every_opt ::= */ yytestcase(yyruleno==591); case 604: /* slimit_clause_opt ::= */ yytestcase(yyruleno==604); case 608: /* limit_clause_opt ::= */ yytestcase(yyruleno==608); +#line 143 "sql.y" { yymsp[1].minor.yy348 = NULL; } +#line 5245 "sql.c" break; case 52: /* with_opt ::= WITH search_condition */ case 523: /* from_clause_opt ::= FROM table_reference_list */ yytestcase(yyruleno==523); case 556: /* where_clause_opt ::= WHERE search_condition */ yytestcase(yyruleno==556); case 587: /* having_clause_opt ::= HAVING search_condition */ yytestcase(yyruleno==587); +#line 144 "sql.y" { yymsp[-1].minor.yy348 = yymsp[0].minor.yy348; } +#line 5253 "sql.c" break; case 53: /* cmd ::= CREATE DNODE dnode_endpoint */ +#line 147 "sql.y" { pCxt->pRootNode = createCreateDnodeStmt(pCxt, &yymsp[0].minor.yy269, NULL); } +#line 5258 "sql.c" break; case 54: /* cmd ::= CREATE DNODE dnode_endpoint PORT NK_INTEGER */ +#line 148 "sql.y" { pCxt->pRootNode = createCreateDnodeStmt(pCxt, &yymsp[-2].minor.yy269, &yymsp[0].minor.yy0); } +#line 5263 "sql.c" break; case 55: /* cmd ::= DROP DNODE NK_INTEGER force_opt */ +#line 149 "sql.y" { pCxt->pRootNode = createDropDnodeStmt(pCxt, &yymsp[-1].minor.yy0, yymsp[0].minor.yy345, false); } +#line 5268 "sql.c" break; case 56: /* cmd ::= DROP DNODE dnode_endpoint force_opt */ +#line 150 "sql.y" { pCxt->pRootNode = createDropDnodeStmt(pCxt, &yymsp[-1].minor.yy269, yymsp[0].minor.yy345, false); } +#line 5273 "sql.c" break; case 57: /* cmd ::= DROP DNODE NK_INTEGER unsafe_opt */ +#line 151 "sql.y" { pCxt->pRootNode = createDropDnodeStmt(pCxt, &yymsp[-1].minor.yy0, false, yymsp[0].minor.yy345); } +#line 5278 "sql.c" break; case 58: /* cmd ::= DROP DNODE dnode_endpoint unsafe_opt */ +#line 152 "sql.y" { pCxt->pRootNode = createDropDnodeStmt(pCxt, &yymsp[-1].minor.yy269, false, yymsp[0].minor.yy345); } +#line 5283 "sql.c" break; case 59: /* cmd ::= ALTER DNODE NK_INTEGER NK_STRING */ +#line 153 "sql.y" { pCxt->pRootNode = createAlterDnodeStmt(pCxt, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy0, NULL); } +#line 5288 "sql.c" break; case 60: /* cmd ::= ALTER DNODE NK_INTEGER NK_STRING NK_STRING */ +#line 154 "sql.y" { pCxt->pRootNode = createAlterDnodeStmt(pCxt, &yymsp[-2].minor.yy0, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy0); } +#line 5293 "sql.c" break; case 61: /* cmd ::= ALTER ALL DNODES NK_STRING */ +#line 155 "sql.y" { pCxt->pRootNode = createAlterDnodeStmt(pCxt, NULL, &yymsp[0].minor.yy0, NULL); } +#line 5298 "sql.c" break; case 62: /* cmd ::= ALTER ALL DNODES NK_STRING NK_STRING */ +#line 156 "sql.y" { pCxt->pRootNode = createAlterDnodeStmt(pCxt, NULL, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy0); } +#line 5303 "sql.c" break; case 63: /* cmd ::= RESTORE DNODE NK_INTEGER */ +#line 157 "sql.y" { pCxt->pRootNode = createRestoreComponentNodeStmt(pCxt, QUERY_NODE_RESTORE_DNODE_STMT, &yymsp[0].minor.yy0); } +#line 5308 "sql.c" break; case 64: /* dnode_endpoint ::= NK_STRING */ case 65: /* dnode_endpoint ::= NK_ID */ yytestcase(yyruleno==65); @@ -4914,7 +5338,9 @@ static YYACTIONTYPE yy_reduce( case 478: /* star_func ::= FIRST */ yytestcase(yyruleno==478); case 479: /* star_func ::= LAST */ yytestcase(yyruleno==479); case 480: /* star_func ::= LAST_ROW */ yytestcase(yyruleno==480); +#line 161 "sql.y" { yylhsminor.yy269 = yymsp[0].minor.yy0; } +#line 5343 "sql.c" yymsp[0].minor.yy269 = yylhsminor.yy269; break; case 67: /* force_opt ::= */ @@ -4926,7 +5352,9 @@ static YYACTIONTYPE yy_reduce( case 374: /* ignore_opt ::= */ yytestcase(yyruleno==374); case 543: /* tag_mode_opt ::= */ yytestcase(yyruleno==543); case 545: /* set_quantifier_opt ::= */ yytestcase(yyruleno==545); +#line 167 "sql.y" { yymsp[1].minor.yy345 = false; } +#line 5357 "sql.c" break; case 68: /* force_opt ::= FORCE */ case 69: /* unsafe_opt ::= UNSAFE */ yytestcase(yyruleno==69); @@ -4934,282 +5362,430 @@ static YYACTIONTYPE yy_reduce( case 347: /* agg_func_opt ::= AGGREGATE */ yytestcase(yyruleno==347); case 544: /* tag_mode_opt ::= TAGS */ yytestcase(yyruleno==544); case 546: /* set_quantifier_opt ::= DISTINCT */ yytestcase(yyruleno==546); +#line 168 "sql.y" { yymsp[0].minor.yy345 = true; } +#line 5367 "sql.c" break; case 70: /* cmd ::= ALTER LOCAL NK_STRING */ +#line 175 "sql.y" { pCxt->pRootNode = createAlterLocalStmt(pCxt, &yymsp[0].minor.yy0, NULL); } +#line 5372 "sql.c" break; case 71: /* cmd ::= ALTER LOCAL NK_STRING NK_STRING */ +#line 176 "sql.y" { pCxt->pRootNode = createAlterLocalStmt(pCxt, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy0); } +#line 5377 "sql.c" break; case 72: /* cmd ::= CREATE QNODE ON DNODE NK_INTEGER */ +#line 179 "sql.y" { pCxt->pRootNode = createCreateComponentNodeStmt(pCxt, QUERY_NODE_CREATE_QNODE_STMT, &yymsp[0].minor.yy0); } +#line 5382 "sql.c" break; case 73: /* cmd ::= DROP QNODE ON DNODE NK_INTEGER */ +#line 180 "sql.y" { pCxt->pRootNode = createDropComponentNodeStmt(pCxt, QUERY_NODE_DROP_QNODE_STMT, &yymsp[0].minor.yy0); } +#line 5387 "sql.c" break; case 74: /* cmd ::= RESTORE QNODE ON DNODE NK_INTEGER */ +#line 181 "sql.y" { pCxt->pRootNode = createRestoreComponentNodeStmt(pCxt, QUERY_NODE_RESTORE_QNODE_STMT, &yymsp[0].minor.yy0); } +#line 5392 "sql.c" break; case 75: /* cmd ::= CREATE BNODE ON DNODE NK_INTEGER */ +#line 184 "sql.y" { pCxt->pRootNode = createCreateComponentNodeStmt(pCxt, QUERY_NODE_CREATE_BNODE_STMT, &yymsp[0].minor.yy0); } +#line 5397 "sql.c" break; case 76: /* cmd ::= DROP BNODE ON DNODE NK_INTEGER */ +#line 185 "sql.y" { pCxt->pRootNode = createDropComponentNodeStmt(pCxt, QUERY_NODE_DROP_BNODE_STMT, &yymsp[0].minor.yy0); } +#line 5402 "sql.c" break; case 77: /* cmd ::= CREATE SNODE ON DNODE NK_INTEGER */ +#line 188 "sql.y" { pCxt->pRootNode = createCreateComponentNodeStmt(pCxt, QUERY_NODE_CREATE_SNODE_STMT, &yymsp[0].minor.yy0); } +#line 5407 "sql.c" break; case 78: /* cmd ::= DROP SNODE ON DNODE NK_INTEGER */ +#line 189 "sql.y" { pCxt->pRootNode = createDropComponentNodeStmt(pCxt, QUERY_NODE_DROP_SNODE_STMT, &yymsp[0].minor.yy0); } +#line 5412 "sql.c" break; case 79: /* cmd ::= CREATE MNODE ON DNODE NK_INTEGER */ +#line 192 "sql.y" { pCxt->pRootNode = createCreateComponentNodeStmt(pCxt, QUERY_NODE_CREATE_MNODE_STMT, &yymsp[0].minor.yy0); } +#line 5417 "sql.c" break; case 80: /* cmd ::= DROP MNODE ON DNODE NK_INTEGER */ +#line 193 "sql.y" { pCxt->pRootNode = createDropComponentNodeStmt(pCxt, QUERY_NODE_DROP_MNODE_STMT, &yymsp[0].minor.yy0); } +#line 5422 "sql.c" break; case 81: /* cmd ::= RESTORE MNODE ON DNODE NK_INTEGER */ +#line 194 "sql.y" { pCxt->pRootNode = createRestoreComponentNodeStmt(pCxt, QUERY_NODE_RESTORE_MNODE_STMT, &yymsp[0].minor.yy0); } +#line 5427 "sql.c" break; case 82: /* cmd ::= RESTORE VNODE ON DNODE NK_INTEGER */ +#line 197 "sql.y" { pCxt->pRootNode = createRestoreComponentNodeStmt(pCxt, QUERY_NODE_RESTORE_VNODE_STMT, &yymsp[0].minor.yy0); } +#line 5432 "sql.c" break; case 83: /* cmd ::= CREATE DATABASE not_exists_opt db_name db_options */ +#line 200 "sql.y" { pCxt->pRootNode = createCreateDatabaseStmt(pCxt, yymsp[-2].minor.yy345, &yymsp[-1].minor.yy269, yymsp[0].minor.yy348); } +#line 5437 "sql.c" break; case 84: /* cmd ::= DROP DATABASE exists_opt db_name */ +#line 201 "sql.y" { pCxt->pRootNode = createDropDatabaseStmt(pCxt, yymsp[-1].minor.yy345, &yymsp[0].minor.yy269); } +#line 5442 "sql.c" break; case 85: /* cmd ::= USE db_name */ +#line 202 "sql.y" { pCxt->pRootNode = createUseDatabaseStmt(pCxt, &yymsp[0].minor.yy269); } +#line 5447 "sql.c" break; case 86: /* cmd ::= ALTER DATABASE db_name alter_db_options */ +#line 203 "sql.y" { pCxt->pRootNode = createAlterDatabaseStmt(pCxt, &yymsp[-1].minor.yy269, yymsp[0].minor.yy348); } +#line 5452 "sql.c" break; case 87: /* cmd ::= FLUSH DATABASE db_name */ +#line 204 "sql.y" { pCxt->pRootNode = createFlushDatabaseStmt(pCxt, &yymsp[0].minor.yy269); } +#line 5457 "sql.c" break; case 88: /* cmd ::= TRIM DATABASE db_name speed_opt */ +#line 205 "sql.y" { pCxt->pRootNode = createTrimDatabaseStmt(pCxt, &yymsp[-1].minor.yy269, yymsp[0].minor.yy88); } +#line 5462 "sql.c" break; case 89: /* cmd ::= COMPACT DATABASE db_name start_opt end_opt */ +#line 206 "sql.y" { pCxt->pRootNode = createCompactStmt(pCxt, &yymsp[-2].minor.yy269, yymsp[-1].minor.yy348, yymsp[0].minor.yy348); } +#line 5467 "sql.c" break; case 90: /* not_exists_opt ::= IF NOT EXISTS */ +#line 210 "sql.y" { yymsp[-2].minor.yy345 = true; } +#line 5472 "sql.c" break; case 92: /* exists_opt ::= IF EXISTS */ case 353: /* or_replace_opt ::= OR REPLACE */ yytestcase(yyruleno==353); case 375: /* ignore_opt ::= IGNORE UNTREATED */ yytestcase(yyruleno==375); +#line 215 "sql.y" { yymsp[-1].minor.yy345 = true; } +#line 5479 "sql.c" break; case 94: /* db_options ::= */ +#line 218 "sql.y" { yymsp[1].minor.yy348 = createDefaultDatabaseOptions(pCxt); } +#line 5484 "sql.c" break; case 95: /* db_options ::= db_options BUFFER NK_INTEGER */ +#line 219 "sql.y" { yylhsminor.yy348 = setDatabaseOption(pCxt, yymsp[-2].minor.yy348, DB_OPTION_BUFFER, &yymsp[0].minor.yy0); } +#line 5489 "sql.c" yymsp[-2].minor.yy348 = yylhsminor.yy348; break; case 96: /* db_options ::= db_options CACHEMODEL NK_STRING */ +#line 220 "sql.y" { yylhsminor.yy348 = setDatabaseOption(pCxt, yymsp[-2].minor.yy348, DB_OPTION_CACHEMODEL, &yymsp[0].minor.yy0); } +#line 5495 "sql.c" yymsp[-2].minor.yy348 = yylhsminor.yy348; break; case 97: /* db_options ::= db_options CACHESIZE NK_INTEGER */ +#line 221 "sql.y" { yylhsminor.yy348 = setDatabaseOption(pCxt, yymsp[-2].minor.yy348, DB_OPTION_CACHESIZE, &yymsp[0].minor.yy0); } +#line 5501 "sql.c" yymsp[-2].minor.yy348 = yylhsminor.yy348; break; case 98: /* db_options ::= db_options COMP NK_INTEGER */ +#line 222 "sql.y" { yylhsminor.yy348 = setDatabaseOption(pCxt, yymsp[-2].minor.yy348, DB_OPTION_COMP, &yymsp[0].minor.yy0); } +#line 5507 "sql.c" yymsp[-2].minor.yy348 = yylhsminor.yy348; break; case 99: /* db_options ::= db_options DURATION NK_INTEGER */ case 100: /* db_options ::= db_options DURATION NK_VARIABLE */ yytestcase(yyruleno==100); +#line 223 "sql.y" { yylhsminor.yy348 = setDatabaseOption(pCxt, yymsp[-2].minor.yy348, DB_OPTION_DAYS, &yymsp[0].minor.yy0); } +#line 5514 "sql.c" yymsp[-2].minor.yy348 = yylhsminor.yy348; break; case 101: /* db_options ::= db_options MAXROWS NK_INTEGER */ +#line 225 "sql.y" { yylhsminor.yy348 = setDatabaseOption(pCxt, yymsp[-2].minor.yy348, DB_OPTION_MAXROWS, &yymsp[0].minor.yy0); } +#line 5520 "sql.c" yymsp[-2].minor.yy348 = yylhsminor.yy348; break; case 102: /* db_options ::= db_options MINROWS NK_INTEGER */ +#line 226 "sql.y" { yylhsminor.yy348 = setDatabaseOption(pCxt, yymsp[-2].minor.yy348, DB_OPTION_MINROWS, &yymsp[0].minor.yy0); } +#line 5526 "sql.c" yymsp[-2].minor.yy348 = yylhsminor.yy348; break; case 103: /* db_options ::= db_options KEEP integer_list */ case 104: /* db_options ::= db_options KEEP variable_list */ yytestcase(yyruleno==104); +#line 227 "sql.y" { yylhsminor.yy348 = setDatabaseOption(pCxt, yymsp[-2].minor.yy348, DB_OPTION_KEEP, yymsp[0].minor.yy860); } +#line 5533 "sql.c" yymsp[-2].minor.yy348 = yylhsminor.yy348; break; case 105: /* db_options ::= db_options PAGES NK_INTEGER */ +#line 229 "sql.y" { yylhsminor.yy348 = setDatabaseOption(pCxt, yymsp[-2].minor.yy348, DB_OPTION_PAGES, &yymsp[0].minor.yy0); } +#line 5539 "sql.c" yymsp[-2].minor.yy348 = yylhsminor.yy348; break; case 106: /* db_options ::= db_options PAGESIZE NK_INTEGER */ +#line 230 "sql.y" { yylhsminor.yy348 = setDatabaseOption(pCxt, yymsp[-2].minor.yy348, DB_OPTION_PAGESIZE, &yymsp[0].minor.yy0); } +#line 5545 "sql.c" yymsp[-2].minor.yy348 = yylhsminor.yy348; break; case 107: /* db_options ::= db_options TSDB_PAGESIZE NK_INTEGER */ +#line 231 "sql.y" { yylhsminor.yy348 = setDatabaseOption(pCxt, yymsp[-2].minor.yy348, DB_OPTION_TSDB_PAGESIZE, &yymsp[0].minor.yy0); } +#line 5551 "sql.c" yymsp[-2].minor.yy348 = yylhsminor.yy348; break; case 108: /* db_options ::= db_options PRECISION NK_STRING */ +#line 232 "sql.y" { yylhsminor.yy348 = setDatabaseOption(pCxt, yymsp[-2].minor.yy348, DB_OPTION_PRECISION, &yymsp[0].minor.yy0); } +#line 5557 "sql.c" yymsp[-2].minor.yy348 = yylhsminor.yy348; break; case 109: /* db_options ::= db_options REPLICA NK_INTEGER */ +#line 233 "sql.y" { yylhsminor.yy348 = setDatabaseOption(pCxt, yymsp[-2].minor.yy348, DB_OPTION_REPLICA, &yymsp[0].minor.yy0); } +#line 5563 "sql.c" yymsp[-2].minor.yy348 = yylhsminor.yy348; break; case 110: /* db_options ::= db_options VGROUPS NK_INTEGER */ +#line 235 "sql.y" { yylhsminor.yy348 = setDatabaseOption(pCxt, yymsp[-2].minor.yy348, DB_OPTION_VGROUPS, &yymsp[0].minor.yy0); } +#line 5569 "sql.c" yymsp[-2].minor.yy348 = yylhsminor.yy348; break; case 111: /* db_options ::= db_options SINGLE_STABLE NK_INTEGER */ +#line 236 "sql.y" { yylhsminor.yy348 = setDatabaseOption(pCxt, yymsp[-2].minor.yy348, DB_OPTION_SINGLE_STABLE, &yymsp[0].minor.yy0); } +#line 5575 "sql.c" yymsp[-2].minor.yy348 = yylhsminor.yy348; break; case 112: /* db_options ::= db_options RETENTIONS retention_list */ +#line 237 "sql.y" { yylhsminor.yy348 = setDatabaseOption(pCxt, yymsp[-2].minor.yy348, DB_OPTION_RETENTIONS, yymsp[0].minor.yy860); } +#line 5581 "sql.c" yymsp[-2].minor.yy348 = yylhsminor.yy348; break; case 113: /* db_options ::= db_options SCHEMALESS NK_INTEGER */ +#line 238 "sql.y" { yylhsminor.yy348 = setDatabaseOption(pCxt, yymsp[-2].minor.yy348, DB_OPTION_SCHEMALESS, &yymsp[0].minor.yy0); } +#line 5587 "sql.c" yymsp[-2].minor.yy348 = yylhsminor.yy348; break; case 114: /* db_options ::= db_options WAL_LEVEL NK_INTEGER */ +#line 239 "sql.y" { yylhsminor.yy348 = setDatabaseOption(pCxt, yymsp[-2].minor.yy348, DB_OPTION_WAL, &yymsp[0].minor.yy0); } +#line 5593 "sql.c" yymsp[-2].minor.yy348 = yylhsminor.yy348; break; case 115: /* db_options ::= db_options WAL_FSYNC_PERIOD NK_INTEGER */ +#line 240 "sql.y" { yylhsminor.yy348 = setDatabaseOption(pCxt, yymsp[-2].minor.yy348, DB_OPTION_FSYNC, &yymsp[0].minor.yy0); } +#line 5599 "sql.c" yymsp[-2].minor.yy348 = yylhsminor.yy348; break; case 116: /* db_options ::= db_options WAL_RETENTION_PERIOD NK_INTEGER */ +#line 241 "sql.y" { yylhsminor.yy348 = setDatabaseOption(pCxt, yymsp[-2].minor.yy348, DB_OPTION_WAL_RETENTION_PERIOD, &yymsp[0].minor.yy0); } +#line 5605 "sql.c" yymsp[-2].minor.yy348 = yylhsminor.yy348; break; case 117: /* db_options ::= db_options WAL_RETENTION_PERIOD NK_MINUS NK_INTEGER */ +#line 242 "sql.y" { SToken t = yymsp[-1].minor.yy0; t.n = (yymsp[0].minor.yy0.z + yymsp[0].minor.yy0.n) - yymsp[-1].minor.yy0.z; yylhsminor.yy348 = setDatabaseOption(pCxt, yymsp[-3].minor.yy348, DB_OPTION_WAL_RETENTION_PERIOD, &t); } +#line 5615 "sql.c" yymsp[-3].minor.yy348 = yylhsminor.yy348; break; case 118: /* db_options ::= db_options WAL_RETENTION_SIZE NK_INTEGER */ +#line 247 "sql.y" { yylhsminor.yy348 = setDatabaseOption(pCxt, yymsp[-2].minor.yy348, DB_OPTION_WAL_RETENTION_SIZE, &yymsp[0].minor.yy0); } +#line 5621 "sql.c" yymsp[-2].minor.yy348 = yylhsminor.yy348; break; case 119: /* db_options ::= db_options WAL_RETENTION_SIZE NK_MINUS NK_INTEGER */ +#line 248 "sql.y" { SToken t = yymsp[-1].minor.yy0; t.n = (yymsp[0].minor.yy0.z + yymsp[0].minor.yy0.n) - yymsp[-1].minor.yy0.z; yylhsminor.yy348 = setDatabaseOption(pCxt, yymsp[-3].minor.yy348, DB_OPTION_WAL_RETENTION_SIZE, &t); } +#line 5631 "sql.c" yymsp[-3].minor.yy348 = yylhsminor.yy348; break; case 120: /* db_options ::= db_options WAL_ROLL_PERIOD NK_INTEGER */ +#line 253 "sql.y" { yylhsminor.yy348 = setDatabaseOption(pCxt, yymsp[-2].minor.yy348, DB_OPTION_WAL_ROLL_PERIOD, &yymsp[0].minor.yy0); } +#line 5637 "sql.c" yymsp[-2].minor.yy348 = yylhsminor.yy348; break; case 121: /* db_options ::= db_options WAL_SEGMENT_SIZE NK_INTEGER */ +#line 254 "sql.y" { yylhsminor.yy348 = setDatabaseOption(pCxt, yymsp[-2].minor.yy348, DB_OPTION_WAL_SEGMENT_SIZE, &yymsp[0].minor.yy0); } +#line 5643 "sql.c" yymsp[-2].minor.yy348 = yylhsminor.yy348; break; case 122: /* db_options ::= db_options STT_TRIGGER NK_INTEGER */ +#line 255 "sql.y" { yylhsminor.yy348 = setDatabaseOption(pCxt, yymsp[-2].minor.yy348, DB_OPTION_STT_TRIGGER, &yymsp[0].minor.yy0); } +#line 5649 "sql.c" yymsp[-2].minor.yy348 = yylhsminor.yy348; break; case 123: /* db_options ::= db_options TABLE_PREFIX signed */ +#line 256 "sql.y" { yylhsminor.yy348 = setDatabaseOption(pCxt, yymsp[-2].minor.yy348, DB_OPTION_TABLE_PREFIX, yymsp[0].minor.yy348); } +#line 5655 "sql.c" yymsp[-2].minor.yy348 = yylhsminor.yy348; break; case 124: /* db_options ::= db_options TABLE_SUFFIX signed */ +#line 257 "sql.y" { yylhsminor.yy348 = setDatabaseOption(pCxt, yymsp[-2].minor.yy348, DB_OPTION_TABLE_SUFFIX, yymsp[0].minor.yy348); } +#line 5661 "sql.c" yymsp[-2].minor.yy348 = yylhsminor.yy348; break; case 125: /* db_options ::= db_options KEEP_TIME_OFFSET NK_INTEGER */ +#line 258 "sql.y" { yylhsminor.yy348 = setDatabaseOption(pCxt, yymsp[-2].minor.yy348, DB_OPTION_KEEP_TIME_OFFSET, &yymsp[0].minor.yy0); } +#line 5667 "sql.c" yymsp[-2].minor.yy348 = yylhsminor.yy348; break; case 126: /* alter_db_options ::= alter_db_option */ +#line 260 "sql.y" { yylhsminor.yy348 = createAlterDatabaseOptions(pCxt); yylhsminor.yy348 = setAlterDatabaseOption(pCxt, yylhsminor.yy348, &yymsp[0].minor.yy233); } +#line 5673 "sql.c" yymsp[0].minor.yy348 = yylhsminor.yy348; break; case 127: /* alter_db_options ::= alter_db_options alter_db_option */ +#line 261 "sql.y" { yylhsminor.yy348 = setAlterDatabaseOption(pCxt, yymsp[-1].minor.yy348, &yymsp[0].minor.yy233); } +#line 5679 "sql.c" yymsp[-1].minor.yy348 = yylhsminor.yy348; break; case 128: /* alter_db_option ::= BUFFER NK_INTEGER */ +#line 265 "sql.y" { yymsp[-1].minor.yy233.type = DB_OPTION_BUFFER; yymsp[-1].minor.yy233.val = yymsp[0].minor.yy0; } +#line 5685 "sql.c" break; case 129: /* alter_db_option ::= CACHEMODEL NK_STRING */ +#line 266 "sql.y" { yymsp[-1].minor.yy233.type = DB_OPTION_CACHEMODEL; yymsp[-1].minor.yy233.val = yymsp[0].minor.yy0; } +#line 5690 "sql.c" break; case 130: /* alter_db_option ::= CACHESIZE NK_INTEGER */ +#line 267 "sql.y" { yymsp[-1].minor.yy233.type = DB_OPTION_CACHESIZE; yymsp[-1].minor.yy233.val = yymsp[0].minor.yy0; } +#line 5695 "sql.c" break; case 131: /* alter_db_option ::= WAL_FSYNC_PERIOD NK_INTEGER */ +#line 268 "sql.y" { yymsp[-1].minor.yy233.type = DB_OPTION_FSYNC; yymsp[-1].minor.yy233.val = yymsp[0].minor.yy0; } +#line 5700 "sql.c" break; case 132: /* alter_db_option ::= KEEP integer_list */ case 133: /* alter_db_option ::= KEEP variable_list */ yytestcase(yyruleno==133); +#line 269 "sql.y" { yymsp[-1].minor.yy233.type = DB_OPTION_KEEP; yymsp[-1].minor.yy233.pList = yymsp[0].minor.yy860; } +#line 5706 "sql.c" break; case 134: /* alter_db_option ::= PAGES NK_INTEGER */ +#line 271 "sql.y" { yymsp[-1].minor.yy233.type = DB_OPTION_PAGES; yymsp[-1].minor.yy233.val = yymsp[0].minor.yy0; } +#line 5711 "sql.c" break; case 135: /* alter_db_option ::= REPLICA NK_INTEGER */ +#line 272 "sql.y" { yymsp[-1].minor.yy233.type = DB_OPTION_REPLICA; yymsp[-1].minor.yy233.val = yymsp[0].minor.yy0; } +#line 5716 "sql.c" break; case 136: /* alter_db_option ::= WAL_LEVEL NK_INTEGER */ +#line 274 "sql.y" { yymsp[-1].minor.yy233.type = DB_OPTION_WAL; yymsp[-1].minor.yy233.val = yymsp[0].minor.yy0; } +#line 5721 "sql.c" break; case 137: /* alter_db_option ::= STT_TRIGGER NK_INTEGER */ +#line 275 "sql.y" { yymsp[-1].minor.yy233.type = DB_OPTION_STT_TRIGGER; yymsp[-1].minor.yy233.val = yymsp[0].minor.yy0; } +#line 5726 "sql.c" break; case 138: /* alter_db_option ::= MINROWS NK_INTEGER */ +#line 276 "sql.y" { yymsp[-1].minor.yy233.type = DB_OPTION_MINROWS; yymsp[-1].minor.yy233.val = yymsp[0].minor.yy0; } +#line 5731 "sql.c" break; case 139: /* alter_db_option ::= WAL_RETENTION_PERIOD NK_INTEGER */ +#line 277 "sql.y" { yymsp[-1].minor.yy233.type = DB_OPTION_WAL_RETENTION_PERIOD; yymsp[-1].minor.yy233.val = yymsp[0].minor.yy0; } +#line 5736 "sql.c" break; case 140: /* alter_db_option ::= WAL_RETENTION_PERIOD NK_MINUS NK_INTEGER */ +#line 278 "sql.y" { SToken t = yymsp[-1].minor.yy0; t.n = (yymsp[0].minor.yy0.z + yymsp[0].minor.yy0.n) - yymsp[-1].minor.yy0.z; yymsp[-2].minor.yy233.type = DB_OPTION_WAL_RETENTION_PERIOD; yymsp[-2].minor.yy233.val = t; } +#line 5745 "sql.c" break; case 141: /* alter_db_option ::= WAL_RETENTION_SIZE NK_INTEGER */ +#line 283 "sql.y" { yymsp[-1].minor.yy233.type = DB_OPTION_WAL_RETENTION_SIZE; yymsp[-1].minor.yy233.val = yymsp[0].minor.yy0; } +#line 5750 "sql.c" break; case 142: /* alter_db_option ::= WAL_RETENTION_SIZE NK_MINUS NK_INTEGER */ +#line 284 "sql.y" { SToken t = yymsp[-1].minor.yy0; t.n = (yymsp[0].minor.yy0.z + yymsp[0].minor.yy0.n) - yymsp[-1].minor.yy0.z; yymsp[-2].minor.yy233.type = DB_OPTION_WAL_RETENTION_SIZE; yymsp[-2].minor.yy233.val = t; } +#line 5759 "sql.c" break; case 143: /* alter_db_option ::= KEEP_TIME_OFFSET NK_INTEGER */ +#line 289 "sql.y" { yymsp[-1].minor.yy233.type = DB_OPTION_KEEP_TIME_OFFSET; yymsp[-1].minor.yy233.val = yymsp[0].minor.yy0; } +#line 5764 "sql.c" break; case 144: /* integer_list ::= NK_INTEGER */ +#line 293 "sql.y" { yylhsminor.yy860 = createNodeList(pCxt, createValueNode(pCxt, TSDB_DATA_TYPE_BIGINT, &yymsp[0].minor.yy0)); } +#line 5769 "sql.c" yymsp[0].minor.yy860 = yylhsminor.yy860; break; case 145: /* integer_list ::= integer_list NK_COMMA NK_INTEGER */ case 387: /* dnode_list ::= dnode_list DNODE NK_INTEGER */ yytestcase(yyruleno==387); +#line 294 "sql.y" { yylhsminor.yy860 = addNodeToList(pCxt, yymsp[-2].minor.yy860, createValueNode(pCxt, TSDB_DATA_TYPE_BIGINT, &yymsp[0].minor.yy0)); } +#line 5776 "sql.c" yymsp[-2].minor.yy860 = yylhsminor.yy860; break; case 146: /* variable_list ::= NK_VARIABLE */ +#line 298 "sql.y" { yylhsminor.yy860 = createNodeList(pCxt, createDurationValueNode(pCxt, &yymsp[0].minor.yy0)); } +#line 5782 "sql.c" yymsp[0].minor.yy860 = yylhsminor.yy860; break; case 147: /* variable_list ::= variable_list NK_COMMA NK_VARIABLE */ +#line 299 "sql.y" { yylhsminor.yy860 = addNodeToList(pCxt, yymsp[-2].minor.yy860, createDurationValueNode(pCxt, &yymsp[0].minor.yy0)); } +#line 5788 "sql.c" yymsp[-2].minor.yy860 = yylhsminor.yy860; break; case 148: /* retention_list ::= retention */ @@ -5226,7 +5802,9 @@ static YYACTIONTYPE yy_reduce( case 548: /* select_list ::= select_item */ yytestcase(yyruleno==548); case 559: /* partition_list ::= partition_item */ yytestcase(yyruleno==559); case 615: /* sort_specification_list ::= sort_specification */ yytestcase(yyruleno==615); +#line 303 "sql.y" { yylhsminor.yy860 = createNodeList(pCxt, yymsp[0].minor.yy348); } +#line 5807 "sql.c" yymsp[0].minor.yy860 = yylhsminor.yy860; break; case 149: /* retention_list ::= retention_list NK_COMMA retention */ @@ -5241,672 +5819,1049 @@ static YYACTIONTYPE yy_reduce( case 549: /* select_list ::= select_list NK_COMMA select_item */ yytestcase(yyruleno==549); case 560: /* partition_list ::= partition_list NK_COMMA partition_item */ yytestcase(yyruleno==560); case 616: /* sort_specification_list ::= sort_specification_list NK_COMMA sort_specification */ yytestcase(yyruleno==616); +#line 304 "sql.y" { yylhsminor.yy860 = addNodeToList(pCxt, yymsp[-2].minor.yy860, yymsp[0].minor.yy348); } +#line 5824 "sql.c" yymsp[-2].minor.yy860 = yylhsminor.yy860; break; case 150: /* retention ::= NK_VARIABLE NK_COLON NK_VARIABLE */ +#line 306 "sql.y" { yylhsminor.yy348 = createNodeListNodeEx(pCxt, createDurationValueNode(pCxt, &yymsp[-2].minor.yy0), createDurationValueNode(pCxt, &yymsp[0].minor.yy0)); } +#line 5830 "sql.c" yymsp[-2].minor.yy348 = yylhsminor.yy348; break; case 151: /* speed_opt ::= */ case 348: /* bufsize_opt ::= */ yytestcase(yyruleno==348); +#line 310 "sql.y" { yymsp[1].minor.yy88 = 0; } +#line 5837 "sql.c" break; case 152: /* speed_opt ::= BWLIMIT NK_INTEGER */ case 349: /* bufsize_opt ::= BUFSIZE NK_INTEGER */ yytestcase(yyruleno==349); +#line 311 "sql.y" { yymsp[-1].minor.yy88 = taosStr2Int32(yymsp[0].minor.yy0.z, NULL, 10); } +#line 5843 "sql.c" break; case 154: /* start_opt ::= START WITH NK_INTEGER */ case 158: /* end_opt ::= END WITH NK_INTEGER */ yytestcase(yyruleno==158); +#line 314 "sql.y" { yymsp[-2].minor.yy348 = createValueNode(pCxt, TSDB_DATA_TYPE_BIGINT, &yymsp[0].minor.yy0); } +#line 5849 "sql.c" break; case 155: /* start_opt ::= START WITH NK_STRING */ case 159: /* end_opt ::= END WITH NK_STRING */ yytestcase(yyruleno==159); +#line 315 "sql.y" { yymsp[-2].minor.yy348 = createValueNode(pCxt, TSDB_DATA_TYPE_TIMESTAMP, &yymsp[0].minor.yy0); } +#line 5855 "sql.c" break; case 156: /* start_opt ::= START WITH TIMESTAMP NK_STRING */ case 160: /* end_opt ::= END WITH TIMESTAMP NK_STRING */ yytestcase(yyruleno==160); +#line 316 "sql.y" { yymsp[-3].minor.yy348 = createValueNode(pCxt, TSDB_DATA_TYPE_TIMESTAMP, &yymsp[0].minor.yy0); } +#line 5861 "sql.c" break; case 161: /* cmd ::= CREATE TABLE not_exists_opt full_table_name NK_LP column_def_list NK_RP tags_def_opt table_options */ case 163: /* cmd ::= CREATE STABLE not_exists_opt full_table_name NK_LP column_def_list NK_RP tags_def table_options */ yytestcase(yyruleno==163); +#line 325 "sql.y" { pCxt->pRootNode = createCreateTableStmt(pCxt, yymsp[-6].minor.yy345, yymsp[-5].minor.yy348, yymsp[-3].minor.yy860, yymsp[-1].minor.yy860, yymsp[0].minor.yy348); } +#line 5867 "sql.c" break; case 162: /* cmd ::= CREATE TABLE multi_create_clause */ +#line 326 "sql.y" { pCxt->pRootNode = createCreateMultiTableStmt(pCxt, yymsp[0].minor.yy860); } +#line 5872 "sql.c" break; case 164: /* cmd ::= DROP TABLE multi_drop_clause */ +#line 329 "sql.y" { pCxt->pRootNode = createDropTableStmt(pCxt, yymsp[0].minor.yy860); } +#line 5877 "sql.c" break; case 165: /* cmd ::= DROP STABLE exists_opt full_table_name */ +#line 330 "sql.y" { pCxt->pRootNode = createDropSuperTableStmt(pCxt, yymsp[-1].minor.yy345, yymsp[0].minor.yy348); } +#line 5882 "sql.c" break; case 166: /* cmd ::= ALTER TABLE alter_table_clause */ case 389: /* cmd ::= query_or_subquery */ yytestcase(yyruleno==389); case 390: /* cmd ::= insert_query */ yytestcase(yyruleno==390); +#line 332 "sql.y" { pCxt->pRootNode = yymsp[0].minor.yy348; } +#line 5889 "sql.c" break; case 167: /* cmd ::= ALTER STABLE alter_table_clause */ +#line 333 "sql.y" { pCxt->pRootNode = setAlterSuperTableType(yymsp[0].minor.yy348); } +#line 5894 "sql.c" break; case 168: /* alter_table_clause ::= full_table_name alter_table_options */ +#line 335 "sql.y" { yylhsminor.yy348 = createAlterTableModifyOptions(pCxt, yymsp[-1].minor.yy348, yymsp[0].minor.yy348); } +#line 5899 "sql.c" yymsp[-1].minor.yy348 = yylhsminor.yy348; break; case 169: /* alter_table_clause ::= full_table_name ADD COLUMN column_name type_name */ +#line 337 "sql.y" { yylhsminor.yy348 = createAlterTableAddModifyCol(pCxt, yymsp[-4].minor.yy348, TSDB_ALTER_TABLE_ADD_COLUMN, &yymsp[-1].minor.yy269, yymsp[0].minor.yy720); } +#line 5905 "sql.c" yymsp[-4].minor.yy348 = yylhsminor.yy348; break; case 170: /* alter_table_clause ::= full_table_name DROP COLUMN column_name */ +#line 338 "sql.y" { yylhsminor.yy348 = createAlterTableDropCol(pCxt, yymsp[-3].minor.yy348, TSDB_ALTER_TABLE_DROP_COLUMN, &yymsp[0].minor.yy269); } +#line 5911 "sql.c" yymsp[-3].minor.yy348 = yylhsminor.yy348; break; case 171: /* alter_table_clause ::= full_table_name MODIFY COLUMN column_name type_name */ +#line 340 "sql.y" { yylhsminor.yy348 = createAlterTableAddModifyCol(pCxt, yymsp[-4].minor.yy348, TSDB_ALTER_TABLE_UPDATE_COLUMN_BYTES, &yymsp[-1].minor.yy269, yymsp[0].minor.yy720); } +#line 5917 "sql.c" yymsp[-4].minor.yy348 = yylhsminor.yy348; break; case 172: /* alter_table_clause ::= full_table_name RENAME COLUMN column_name column_name */ +#line 342 "sql.y" { yylhsminor.yy348 = createAlterTableRenameCol(pCxt, yymsp[-4].minor.yy348, TSDB_ALTER_TABLE_UPDATE_COLUMN_NAME, &yymsp[-1].minor.yy269, &yymsp[0].minor.yy269); } +#line 5923 "sql.c" yymsp[-4].minor.yy348 = yylhsminor.yy348; break; case 173: /* alter_table_clause ::= full_table_name ADD TAG column_name type_name */ +#line 344 "sql.y" { yylhsminor.yy348 = createAlterTableAddModifyCol(pCxt, yymsp[-4].minor.yy348, TSDB_ALTER_TABLE_ADD_TAG, &yymsp[-1].minor.yy269, yymsp[0].minor.yy720); } +#line 5929 "sql.c" yymsp[-4].minor.yy348 = yylhsminor.yy348; break; case 174: /* alter_table_clause ::= full_table_name DROP TAG column_name */ +#line 345 "sql.y" { yylhsminor.yy348 = createAlterTableDropCol(pCxt, yymsp[-3].minor.yy348, TSDB_ALTER_TABLE_DROP_TAG, &yymsp[0].minor.yy269); } +#line 5935 "sql.c" yymsp[-3].minor.yy348 = yylhsminor.yy348; break; case 175: /* alter_table_clause ::= full_table_name MODIFY TAG column_name type_name */ +#line 347 "sql.y" { yylhsminor.yy348 = createAlterTableAddModifyCol(pCxt, yymsp[-4].minor.yy348, TSDB_ALTER_TABLE_UPDATE_TAG_BYTES, &yymsp[-1].minor.yy269, yymsp[0].minor.yy720); } +#line 5941 "sql.c" yymsp[-4].minor.yy348 = yylhsminor.yy348; break; case 176: /* alter_table_clause ::= full_table_name RENAME TAG column_name column_name */ +#line 349 "sql.y" { yylhsminor.yy348 = createAlterTableRenameCol(pCxt, yymsp[-4].minor.yy348, TSDB_ALTER_TABLE_UPDATE_TAG_NAME, &yymsp[-1].minor.yy269, &yymsp[0].minor.yy269); } +#line 5947 "sql.c" yymsp[-4].minor.yy348 = yylhsminor.yy348; break; case 177: /* alter_table_clause ::= full_table_name SET TAG column_name NK_EQ signed_literal */ +#line 351 "sql.y" { yylhsminor.yy348 = createAlterTableSetTag(pCxt, yymsp[-5].minor.yy348, &yymsp[-2].minor.yy269, yymsp[0].minor.yy348); } +#line 5953 "sql.c" yymsp[-5].minor.yy348 = yylhsminor.yy348; break; case 179: /* multi_create_clause ::= multi_create_clause create_subtable_clause */ case 490: /* when_then_list ::= when_then_list when_then_expr */ yytestcase(yyruleno==490); +#line 356 "sql.y" { yylhsminor.yy860 = addNodeToList(pCxt, yymsp[-1].minor.yy860, yymsp[0].minor.yy348); } +#line 5960 "sql.c" yymsp[-1].minor.yy860 = yylhsminor.yy860; break; case 180: /* create_subtable_clause ::= not_exists_opt full_table_name USING full_table_name specific_cols_opt TAGS NK_LP expression_list NK_RP table_options */ +#line 360 "sql.y" { yylhsminor.yy348 = createCreateSubTableClause(pCxt, yymsp[-9].minor.yy345, yymsp[-8].minor.yy348, yymsp[-6].minor.yy348, yymsp[-5].minor.yy860, yymsp[-2].minor.yy860, yymsp[0].minor.yy348); } +#line 5966 "sql.c" yymsp[-9].minor.yy348 = yylhsminor.yy348; break; case 183: /* drop_table_clause ::= exists_opt full_table_name */ +#line 367 "sql.y" { yylhsminor.yy348 = createDropTableClause(pCxt, yymsp[-1].minor.yy345, yymsp[0].minor.yy348); } +#line 5972 "sql.c" yymsp[-1].minor.yy348 = yylhsminor.yy348; break; case 185: /* specific_cols_opt ::= NK_LP col_name_list NK_RP */ case 359: /* col_list_opt ::= NK_LP col_name_list NK_RP */ yytestcase(yyruleno==359); +#line 372 "sql.y" { yymsp[-2].minor.yy860 = yymsp[-1].minor.yy860; } +#line 5979 "sql.c" break; case 186: /* full_table_name ::= table_name */ +#line 374 "sql.y" { yylhsminor.yy348 = createRealTableNode(pCxt, NULL, &yymsp[0].minor.yy269, NULL); } +#line 5984 "sql.c" yymsp[0].minor.yy348 = yylhsminor.yy348; break; case 187: /* full_table_name ::= db_name NK_DOT table_name */ +#line 375 "sql.y" { yylhsminor.yy348 = createRealTableNode(pCxt, &yymsp[-2].minor.yy269, &yymsp[0].minor.yy269, NULL); } +#line 5990 "sql.c" yymsp[-2].minor.yy348 = yylhsminor.yy348; break; case 190: /* column_def ::= column_name type_name */ +#line 382 "sql.y" { yylhsminor.yy348 = createColumnDefNode(pCxt, &yymsp[-1].minor.yy269, yymsp[0].minor.yy720, NULL); } +#line 5996 "sql.c" yymsp[-1].minor.yy348 = yylhsminor.yy348; break; case 191: /* type_name ::= BOOL */ +#line 387 "sql.y" { yymsp[0].minor.yy720 = createDataType(TSDB_DATA_TYPE_BOOL); } +#line 6002 "sql.c" break; case 192: /* type_name ::= TINYINT */ +#line 388 "sql.y" { yymsp[0].minor.yy720 = createDataType(TSDB_DATA_TYPE_TINYINT); } +#line 6007 "sql.c" break; case 193: /* type_name ::= SMALLINT */ +#line 389 "sql.y" { yymsp[0].minor.yy720 = createDataType(TSDB_DATA_TYPE_SMALLINT); } +#line 6012 "sql.c" break; case 194: /* type_name ::= INT */ case 195: /* type_name ::= INTEGER */ yytestcase(yyruleno==195); +#line 390 "sql.y" { yymsp[0].minor.yy720 = createDataType(TSDB_DATA_TYPE_INT); } +#line 6018 "sql.c" break; case 196: /* type_name ::= BIGINT */ +#line 392 "sql.y" { yymsp[0].minor.yy720 = createDataType(TSDB_DATA_TYPE_BIGINT); } +#line 6023 "sql.c" break; case 197: /* type_name ::= FLOAT */ +#line 393 "sql.y" { yymsp[0].minor.yy720 = createDataType(TSDB_DATA_TYPE_FLOAT); } +#line 6028 "sql.c" break; case 198: /* type_name ::= DOUBLE */ +#line 394 "sql.y" { yymsp[0].minor.yy720 = createDataType(TSDB_DATA_TYPE_DOUBLE); } +#line 6033 "sql.c" break; case 199: /* type_name ::= BINARY NK_LP NK_INTEGER NK_RP */ +#line 395 "sql.y" { yymsp[-3].minor.yy720 = createVarLenDataType(TSDB_DATA_TYPE_BINARY, &yymsp[-1].minor.yy0); } +#line 6038 "sql.c" break; case 200: /* type_name ::= TIMESTAMP */ +#line 396 "sql.y" { yymsp[0].minor.yy720 = createDataType(TSDB_DATA_TYPE_TIMESTAMP); } +#line 6043 "sql.c" break; case 201: /* type_name ::= NCHAR NK_LP NK_INTEGER NK_RP */ +#line 397 "sql.y" { yymsp[-3].minor.yy720 = createVarLenDataType(TSDB_DATA_TYPE_NCHAR, &yymsp[-1].minor.yy0); } +#line 6048 "sql.c" break; case 202: /* type_name ::= TINYINT UNSIGNED */ +#line 398 "sql.y" { yymsp[-1].minor.yy720 = createDataType(TSDB_DATA_TYPE_UTINYINT); } +#line 6053 "sql.c" break; case 203: /* type_name ::= SMALLINT UNSIGNED */ +#line 399 "sql.y" { yymsp[-1].minor.yy720 = createDataType(TSDB_DATA_TYPE_USMALLINT); } +#line 6058 "sql.c" break; case 204: /* type_name ::= INT UNSIGNED */ +#line 400 "sql.y" { yymsp[-1].minor.yy720 = createDataType(TSDB_DATA_TYPE_UINT); } +#line 6063 "sql.c" break; case 205: /* type_name ::= BIGINT UNSIGNED */ +#line 401 "sql.y" { yymsp[-1].minor.yy720 = createDataType(TSDB_DATA_TYPE_UBIGINT); } +#line 6068 "sql.c" break; case 206: /* type_name ::= JSON */ +#line 402 "sql.y" { yymsp[0].minor.yy720 = createDataType(TSDB_DATA_TYPE_JSON); } +#line 6073 "sql.c" break; case 207: /* type_name ::= VARCHAR NK_LP NK_INTEGER NK_RP */ +#line 403 "sql.y" { yymsp[-3].minor.yy720 = createVarLenDataType(TSDB_DATA_TYPE_VARCHAR, &yymsp[-1].minor.yy0); } +#line 6078 "sql.c" break; case 208: /* type_name ::= MEDIUMBLOB */ +#line 404 "sql.y" { yymsp[0].minor.yy720 = createDataType(TSDB_DATA_TYPE_MEDIUMBLOB); } +#line 6083 "sql.c" break; case 209: /* type_name ::= BLOB */ +#line 405 "sql.y" { yymsp[0].minor.yy720 = createDataType(TSDB_DATA_TYPE_BLOB); } +#line 6088 "sql.c" break; case 210: /* type_name ::= VARBINARY NK_LP NK_INTEGER NK_RP */ +#line 406 "sql.y" { yymsp[-3].minor.yy720 = createVarLenDataType(TSDB_DATA_TYPE_VARBINARY, &yymsp[-1].minor.yy0); } +#line 6093 "sql.c" break; case 211: /* type_name ::= GEOMETRY NK_LP NK_INTEGER NK_RP */ +#line 407 "sql.y" { yymsp[-3].minor.yy720 = createVarLenDataType(TSDB_DATA_TYPE_GEOMETRY, &yymsp[-1].minor.yy0); } +#line 6098 "sql.c" break; case 212: /* type_name ::= DECIMAL */ +#line 408 "sql.y" { yymsp[0].minor.yy720 = createDataType(TSDB_DATA_TYPE_DECIMAL); } +#line 6103 "sql.c" break; case 213: /* type_name ::= DECIMAL NK_LP NK_INTEGER NK_RP */ +#line 409 "sql.y" { yymsp[-3].minor.yy720 = createDataType(TSDB_DATA_TYPE_DECIMAL); } +#line 6108 "sql.c" break; case 214: /* type_name ::= DECIMAL NK_LP NK_INTEGER NK_COMMA NK_INTEGER NK_RP */ +#line 410 "sql.y" { yymsp[-5].minor.yy720 = createDataType(TSDB_DATA_TYPE_DECIMAL); } +#line 6113 "sql.c" break; case 217: /* tags_def ::= TAGS NK_LP column_def_list NK_RP */ case 362: /* tag_def_or_ref_opt ::= TAGS NK_LP col_name_list NK_RP */ yytestcase(yyruleno==362); +#line 419 "sql.y" { yymsp[-3].minor.yy860 = yymsp[-1].minor.yy860; } +#line 6119 "sql.c" break; case 218: /* table_options ::= */ +#line 421 "sql.y" { yymsp[1].minor.yy348 = createDefaultTableOptions(pCxt); } +#line 6124 "sql.c" break; case 219: /* table_options ::= table_options COMMENT NK_STRING */ +#line 422 "sql.y" { yylhsminor.yy348 = setTableOption(pCxt, yymsp[-2].minor.yy348, TABLE_OPTION_COMMENT, &yymsp[0].minor.yy0); } +#line 6129 "sql.c" yymsp[-2].minor.yy348 = yylhsminor.yy348; break; case 220: /* table_options ::= table_options MAX_DELAY duration_list */ +#line 423 "sql.y" { yylhsminor.yy348 = setTableOption(pCxt, yymsp[-2].minor.yy348, TABLE_OPTION_MAXDELAY, yymsp[0].minor.yy860); } +#line 6135 "sql.c" yymsp[-2].minor.yy348 = yylhsminor.yy348; break; case 221: /* table_options ::= table_options WATERMARK duration_list */ +#line 424 "sql.y" { yylhsminor.yy348 = setTableOption(pCxt, yymsp[-2].minor.yy348, TABLE_OPTION_WATERMARK, yymsp[0].minor.yy860); } +#line 6141 "sql.c" yymsp[-2].minor.yy348 = yylhsminor.yy348; break; case 222: /* table_options ::= table_options ROLLUP NK_LP rollup_func_list NK_RP */ +#line 425 "sql.y" { yylhsminor.yy348 = setTableOption(pCxt, yymsp[-4].minor.yy348, TABLE_OPTION_ROLLUP, yymsp[-1].minor.yy860); } +#line 6147 "sql.c" yymsp[-4].minor.yy348 = yylhsminor.yy348; break; case 223: /* table_options ::= table_options TTL NK_INTEGER */ +#line 426 "sql.y" { yylhsminor.yy348 = setTableOption(pCxt, yymsp[-2].minor.yy348, TABLE_OPTION_TTL, &yymsp[0].minor.yy0); } +#line 6153 "sql.c" yymsp[-2].minor.yy348 = yylhsminor.yy348; break; case 224: /* table_options ::= table_options SMA NK_LP col_name_list NK_RP */ +#line 427 "sql.y" { yylhsminor.yy348 = setTableOption(pCxt, yymsp[-4].minor.yy348, TABLE_OPTION_SMA, yymsp[-1].minor.yy860); } +#line 6159 "sql.c" yymsp[-4].minor.yy348 = yylhsminor.yy348; break; case 225: /* table_options ::= table_options DELETE_MARK duration_list */ +#line 428 "sql.y" { yylhsminor.yy348 = setTableOption(pCxt, yymsp[-2].minor.yy348, TABLE_OPTION_DELETE_MARK, yymsp[0].minor.yy860); } +#line 6165 "sql.c" yymsp[-2].minor.yy348 = yylhsminor.yy348; break; case 226: /* alter_table_options ::= alter_table_option */ +#line 430 "sql.y" { yylhsminor.yy348 = createAlterTableOptions(pCxt); yylhsminor.yy348 = setTableOption(pCxt, yylhsminor.yy348, yymsp[0].minor.yy233.type, &yymsp[0].minor.yy233.val); } +#line 6171 "sql.c" yymsp[0].minor.yy348 = yylhsminor.yy348; break; case 227: /* alter_table_options ::= alter_table_options alter_table_option */ +#line 431 "sql.y" { yylhsminor.yy348 = setTableOption(pCxt, yymsp[-1].minor.yy348, yymsp[0].minor.yy233.type, &yymsp[0].minor.yy233.val); } +#line 6177 "sql.c" yymsp[-1].minor.yy348 = yylhsminor.yy348; break; case 228: /* alter_table_option ::= COMMENT NK_STRING */ +#line 435 "sql.y" { yymsp[-1].minor.yy233.type = TABLE_OPTION_COMMENT; yymsp[-1].minor.yy233.val = yymsp[0].minor.yy0; } +#line 6183 "sql.c" break; case 229: /* alter_table_option ::= TTL NK_INTEGER */ +#line 436 "sql.y" { yymsp[-1].minor.yy233.type = TABLE_OPTION_TTL; yymsp[-1].minor.yy233.val = yymsp[0].minor.yy0; } +#line 6188 "sql.c" break; case 230: /* duration_list ::= duration_literal */ case 446: /* expression_list ::= expr_or_subquery */ yytestcase(yyruleno==446); +#line 440 "sql.y" { yylhsminor.yy860 = createNodeList(pCxt, releaseRawExprNode(pCxt, yymsp[0].minor.yy348)); } +#line 6194 "sql.c" yymsp[0].minor.yy860 = yylhsminor.yy860; break; case 231: /* duration_list ::= duration_list NK_COMMA duration_literal */ case 447: /* expression_list ::= expression_list NK_COMMA expr_or_subquery */ yytestcase(yyruleno==447); +#line 441 "sql.y" { yylhsminor.yy860 = addNodeToList(pCxt, yymsp[-2].minor.yy860, releaseRawExprNode(pCxt, yymsp[0].minor.yy348)); } +#line 6201 "sql.c" yymsp[-2].minor.yy860 = yylhsminor.yy860; break; case 234: /* rollup_func_name ::= function_name */ +#line 448 "sql.y" { yylhsminor.yy348 = createFunctionNode(pCxt, &yymsp[0].minor.yy269, NULL); } +#line 6207 "sql.c" yymsp[0].minor.yy348 = yylhsminor.yy348; break; case 235: /* rollup_func_name ::= FIRST */ case 236: /* rollup_func_name ::= LAST */ yytestcase(yyruleno==236); case 300: /* tag_item ::= QTAGS */ yytestcase(yyruleno==300); +#line 449 "sql.y" { yylhsminor.yy348 = createFunctionNode(pCxt, &yymsp[0].minor.yy0, NULL); } +#line 6215 "sql.c" yymsp[0].minor.yy348 = yylhsminor.yy348; break; case 239: /* col_name ::= column_name */ case 301: /* tag_item ::= column_name */ yytestcase(yyruleno==301); +#line 457 "sql.y" { yylhsminor.yy348 = createColumnNode(pCxt, NULL, &yymsp[0].minor.yy269); } +#line 6222 "sql.c" yymsp[0].minor.yy348 = yylhsminor.yy348; break; case 240: /* cmd ::= SHOW DNODES */ +#line 460 "sql.y" { pCxt->pRootNode = createShowStmt(pCxt, QUERY_NODE_SHOW_DNODES_STMT); } +#line 6228 "sql.c" break; case 241: /* cmd ::= SHOW USERS */ +#line 461 "sql.y" { pCxt->pRootNode = createShowStmt(pCxt, QUERY_NODE_SHOW_USERS_STMT); } +#line 6233 "sql.c" break; case 242: /* cmd ::= SHOW USER PRIVILEGES */ +#line 462 "sql.y" { pCxt->pRootNode = createShowStmt(pCxt, QUERY_NODE_SHOW_USER_PRIVILEGES_STMT); } +#line 6238 "sql.c" break; case 243: /* cmd ::= SHOW db_kind_opt DATABASES */ +#line 463 "sql.y" { pCxt->pRootNode = createShowStmt(pCxt, QUERY_NODE_SHOW_DATABASES_STMT); setShowKind(pCxt, pCxt->pRootNode, yymsp[-1].minor.yy361); } +#line 6246 "sql.c" break; case 244: /* cmd ::= SHOW table_kind_db_name_cond_opt TABLES like_pattern_opt */ +#line 467 "sql.y" { pCxt->pRootNode = createShowTablesStmt(pCxt, yymsp[-2].minor.yy749, yymsp[0].minor.yy348, OP_TYPE_LIKE); } +#line 6253 "sql.c" break; case 245: /* cmd ::= SHOW db_name_cond_opt STABLES like_pattern_opt */ +#line 470 "sql.y" { pCxt->pRootNode = createShowStmtWithCond(pCxt, QUERY_NODE_SHOW_STABLES_STMT, yymsp[-2].minor.yy348, yymsp[0].minor.yy348, OP_TYPE_LIKE); } +#line 6258 "sql.c" break; case 246: /* cmd ::= SHOW db_name_cond_opt VGROUPS */ +#line 471 "sql.y" { pCxt->pRootNode = createShowStmtWithCond(pCxt, QUERY_NODE_SHOW_VGROUPS_STMT, yymsp[-1].minor.yy348, NULL, OP_TYPE_LIKE); } +#line 6263 "sql.c" break; case 247: /* cmd ::= SHOW MNODES */ +#line 472 "sql.y" { pCxt->pRootNode = createShowStmt(pCxt, QUERY_NODE_SHOW_MNODES_STMT); } +#line 6268 "sql.c" break; case 248: /* cmd ::= SHOW QNODES */ +#line 474 "sql.y" { pCxt->pRootNode = createShowStmt(pCxt, QUERY_NODE_SHOW_QNODES_STMT); } +#line 6273 "sql.c" break; case 249: /* cmd ::= SHOW FUNCTIONS */ +#line 475 "sql.y" { pCxt->pRootNode = createShowStmt(pCxt, QUERY_NODE_SHOW_FUNCTIONS_STMT); } +#line 6278 "sql.c" break; case 250: /* cmd ::= SHOW INDEXES FROM table_name_cond from_db_opt */ +#line 476 "sql.y" { pCxt->pRootNode = createShowStmtWithCond(pCxt, QUERY_NODE_SHOW_INDEXES_STMT, yymsp[0].minor.yy348, yymsp[-1].minor.yy348, OP_TYPE_EQUAL); } +#line 6283 "sql.c" break; case 251: /* cmd ::= SHOW INDEXES FROM db_name NK_DOT table_name */ +#line 477 "sql.y" { pCxt->pRootNode = createShowStmtWithCond(pCxt, QUERY_NODE_SHOW_INDEXES_STMT, createIdentifierValueNode(pCxt, &yymsp[-2].minor.yy269), createIdentifierValueNode(pCxt, &yymsp[0].minor.yy269), OP_TYPE_EQUAL); } +#line 6288 "sql.c" break; case 252: /* cmd ::= SHOW STREAMS */ +#line 478 "sql.y" { pCxt->pRootNode = createShowStmt(pCxt, QUERY_NODE_SHOW_STREAMS_STMT); } +#line 6293 "sql.c" break; case 253: /* cmd ::= SHOW ACCOUNTS */ +#line 479 "sql.y" { pCxt->errCode = generateSyntaxErrMsg(&pCxt->msgBuf, TSDB_CODE_PAR_EXPRIE_STATEMENT); } +#line 6298 "sql.c" break; case 254: /* cmd ::= SHOW APPS */ +#line 480 "sql.y" { pCxt->pRootNode = createShowStmt(pCxt, QUERY_NODE_SHOW_APPS_STMT); } +#line 6303 "sql.c" break; case 255: /* cmd ::= SHOW CONNECTIONS */ +#line 481 "sql.y" { pCxt->pRootNode = createShowStmt(pCxt, QUERY_NODE_SHOW_CONNECTIONS_STMT); } +#line 6308 "sql.c" break; case 256: /* cmd ::= SHOW LICENCES */ case 257: /* cmd ::= SHOW GRANTS */ yytestcase(yyruleno==257); +#line 482 "sql.y" { pCxt->pRootNode = createShowStmt(pCxt, QUERY_NODE_SHOW_LICENCES_STMT); } +#line 6314 "sql.c" break; case 258: /* cmd ::= SHOW CREATE DATABASE db_name */ +#line 484 "sql.y" { pCxt->pRootNode = createShowCreateDatabaseStmt(pCxt, &yymsp[0].minor.yy269); } +#line 6319 "sql.c" break; case 259: /* cmd ::= SHOW CREATE TABLE full_table_name */ +#line 485 "sql.y" { pCxt->pRootNode = createShowCreateTableStmt(pCxt, QUERY_NODE_SHOW_CREATE_TABLE_STMT, yymsp[0].minor.yy348); } +#line 6324 "sql.c" break; case 260: /* cmd ::= SHOW CREATE STABLE full_table_name */ +#line 486 "sql.y" { pCxt->pRootNode = createShowCreateTableStmt(pCxt, QUERY_NODE_SHOW_CREATE_STABLE_STMT, yymsp[0].minor.yy348); } +#line 6329 "sql.c" break; case 261: /* cmd ::= SHOW QUERIES */ +#line 487 "sql.y" { pCxt->pRootNode = createShowStmt(pCxt, QUERY_NODE_SHOW_QUERIES_STMT); } +#line 6334 "sql.c" break; case 262: /* cmd ::= SHOW SCORES */ +#line 488 "sql.y" { pCxt->pRootNode = createShowStmt(pCxt, QUERY_NODE_SHOW_SCORES_STMT); } +#line 6339 "sql.c" break; case 263: /* cmd ::= SHOW TOPICS */ +#line 489 "sql.y" { pCxt->pRootNode = createShowStmt(pCxt, QUERY_NODE_SHOW_TOPICS_STMT); } +#line 6344 "sql.c" break; case 264: /* cmd ::= SHOW VARIABLES */ case 265: /* cmd ::= SHOW CLUSTER VARIABLES */ yytestcase(yyruleno==265); +#line 490 "sql.y" { pCxt->pRootNode = createShowStmt(pCxt, QUERY_NODE_SHOW_VARIABLES_STMT); } +#line 6350 "sql.c" break; case 266: /* cmd ::= SHOW LOCAL VARIABLES */ +#line 492 "sql.y" { pCxt->pRootNode = createShowStmt(pCxt, QUERY_NODE_SHOW_LOCAL_VARIABLES_STMT); } +#line 6355 "sql.c" break; case 267: /* cmd ::= SHOW DNODE NK_INTEGER VARIABLES like_pattern_opt */ +#line 493 "sql.y" { pCxt->pRootNode = createShowDnodeVariablesStmt(pCxt, createValueNode(pCxt, TSDB_DATA_TYPE_BIGINT, &yymsp[-2].minor.yy0), yymsp[0].minor.yy348); } +#line 6360 "sql.c" break; case 268: /* cmd ::= SHOW BNODES */ +#line 494 "sql.y" { pCxt->pRootNode = createShowStmt(pCxt, QUERY_NODE_SHOW_BNODES_STMT); } +#line 6365 "sql.c" break; case 269: /* cmd ::= SHOW SNODES */ +#line 495 "sql.y" { pCxt->pRootNode = createShowStmt(pCxt, QUERY_NODE_SHOW_SNODES_STMT); } +#line 6370 "sql.c" break; case 270: /* cmd ::= SHOW CLUSTER */ +#line 496 "sql.y" { pCxt->pRootNode = createShowStmt(pCxt, QUERY_NODE_SHOW_CLUSTER_STMT); } +#line 6375 "sql.c" break; case 271: /* cmd ::= SHOW TRANSACTIONS */ +#line 497 "sql.y" { pCxt->pRootNode = createShowStmt(pCxt, QUERY_NODE_SHOW_TRANSACTIONS_STMT); } +#line 6380 "sql.c" break; case 272: /* cmd ::= SHOW TABLE DISTRIBUTED full_table_name */ +#line 498 "sql.y" { pCxt->pRootNode = createShowTableDistributedStmt(pCxt, yymsp[0].minor.yy348); } +#line 6385 "sql.c" break; case 273: /* cmd ::= SHOW CONSUMERS */ +#line 499 "sql.y" { pCxt->pRootNode = createShowStmt(pCxt, QUERY_NODE_SHOW_CONSUMERS_STMT); } +#line 6390 "sql.c" break; case 274: /* cmd ::= SHOW SUBSCRIPTIONS */ +#line 500 "sql.y" { pCxt->pRootNode = createShowStmt(pCxt, QUERY_NODE_SHOW_SUBSCRIPTIONS_STMT); } +#line 6395 "sql.c" break; case 275: /* cmd ::= SHOW TAGS FROM table_name_cond from_db_opt */ +#line 501 "sql.y" { pCxt->pRootNode = createShowStmtWithCond(pCxt, QUERY_NODE_SHOW_TAGS_STMT, yymsp[0].minor.yy348, yymsp[-1].minor.yy348, OP_TYPE_EQUAL); } +#line 6400 "sql.c" break; case 276: /* cmd ::= SHOW TAGS FROM db_name NK_DOT table_name */ +#line 502 "sql.y" { pCxt->pRootNode = createShowStmtWithCond(pCxt, QUERY_NODE_SHOW_TAGS_STMT, createIdentifierValueNode(pCxt, &yymsp[-2].minor.yy269), createIdentifierValueNode(pCxt, &yymsp[0].minor.yy269), OP_TYPE_EQUAL); } +#line 6405 "sql.c" break; case 277: /* cmd ::= SHOW TABLE TAGS tag_list_opt FROM table_name_cond from_db_opt */ +#line 503 "sql.y" { pCxt->pRootNode = createShowTableTagsStmt(pCxt, yymsp[-1].minor.yy348, yymsp[0].minor.yy348, yymsp[-3].minor.yy860); } +#line 6410 "sql.c" break; case 278: /* cmd ::= SHOW TABLE TAGS tag_list_opt FROM db_name NK_DOT table_name */ +#line 504 "sql.y" { pCxt->pRootNode = createShowTableTagsStmt(pCxt, createIdentifierValueNode(pCxt, &yymsp[0].minor.yy269), createIdentifierValueNode(pCxt, &yymsp[-2].minor.yy269), yymsp[-4].minor.yy860); } +#line 6415 "sql.c" break; case 279: /* cmd ::= SHOW VNODES ON DNODE NK_INTEGER */ +#line 505 "sql.y" { pCxt->pRootNode = createShowVnodesStmt(pCxt, createValueNode(pCxt, TSDB_DATA_TYPE_BIGINT, &yymsp[0].minor.yy0), NULL); } +#line 6420 "sql.c" break; case 280: /* cmd ::= SHOW VNODES */ +#line 506 "sql.y" { pCxt->pRootNode = createShowVnodesStmt(pCxt, NULL, NULL); } +#line 6425 "sql.c" break; case 281: /* cmd ::= SHOW db_name_cond_opt ALIVE */ +#line 508 "sql.y" { pCxt->pRootNode = createShowAliveStmt(pCxt, yymsp[-1].minor.yy348, QUERY_NODE_SHOW_DB_ALIVE_STMT); } +#line 6430 "sql.c" break; case 282: /* cmd ::= SHOW CLUSTER ALIVE */ +#line 509 "sql.y" { pCxt->pRootNode = createShowAliveStmt(pCxt, NULL, QUERY_NODE_SHOW_CLUSTER_ALIVE_STMT); } +#line 6435 "sql.c" break; case 283: /* table_kind_db_name_cond_opt ::= */ +#line 513 "sql.y" { yymsp[1].minor.yy749.kind = SHOW_KIND_ALL; yymsp[1].minor.yy749.dbName = nil_token; } +#line 6440 "sql.c" break; case 284: /* table_kind_db_name_cond_opt ::= table_kind */ +#line 514 "sql.y" { yylhsminor.yy749.kind = yymsp[0].minor.yy361; yylhsminor.yy749.dbName = nil_token; } +#line 6445 "sql.c" yymsp[0].minor.yy749 = yylhsminor.yy749; break; case 285: /* table_kind_db_name_cond_opt ::= db_name NK_DOT */ +#line 515 "sql.y" { yylhsminor.yy749.kind = SHOW_KIND_ALL; yylhsminor.yy749.dbName = yymsp[-1].minor.yy269; } +#line 6451 "sql.c" yymsp[-1].minor.yy749 = yylhsminor.yy749; break; case 286: /* table_kind_db_name_cond_opt ::= table_kind db_name NK_DOT */ +#line 516 "sql.y" { yylhsminor.yy749.kind = yymsp[-2].minor.yy361; yylhsminor.yy749.dbName = yymsp[-1].minor.yy269; } +#line 6457 "sql.c" yymsp[-2].minor.yy749 = yylhsminor.yy749; break; case 287: /* table_kind ::= NORMAL */ +#line 520 "sql.y" { yymsp[0].minor.yy361 = SHOW_KIND_TABLES_NORMAL; } +#line 6463 "sql.c" break; case 288: /* table_kind ::= CHILD */ +#line 521 "sql.y" { yymsp[0].minor.yy361 = SHOW_KIND_TABLES_CHILD; } +#line 6468 "sql.c" break; case 289: /* db_name_cond_opt ::= */ case 294: /* from_db_opt ::= */ yytestcase(yyruleno==294); +#line 523 "sql.y" { yymsp[1].minor.yy348 = createDefaultDatabaseCondValue(pCxt); } +#line 6474 "sql.c" break; case 290: /* db_name_cond_opt ::= db_name NK_DOT */ +#line 524 "sql.y" { yylhsminor.yy348 = createIdentifierValueNode(pCxt, &yymsp[-1].minor.yy269); } +#line 6479 "sql.c" yymsp[-1].minor.yy348 = yylhsminor.yy348; break; case 292: /* like_pattern_opt ::= LIKE NK_STRING */ +#line 527 "sql.y" { yymsp[-1].minor.yy348 = createValueNode(pCxt, TSDB_DATA_TYPE_BINARY, &yymsp[0].minor.yy0); } +#line 6485 "sql.c" break; case 293: /* table_name_cond ::= table_name */ +#line 529 "sql.y" { yylhsminor.yy348 = createIdentifierValueNode(pCxt, &yymsp[0].minor.yy269); } +#line 6490 "sql.c" yymsp[0].minor.yy348 = yylhsminor.yy348; break; case 295: /* from_db_opt ::= FROM db_name */ +#line 532 "sql.y" { yymsp[-1].minor.yy348 = createIdentifierValueNode(pCxt, &yymsp[0].minor.yy269); } +#line 6496 "sql.c" break; case 299: /* tag_item ::= TBNAME */ +#line 540 "sql.y" { yylhsminor.yy348 = setProjectionAlias(pCxt, createFunctionNode(pCxt, &yymsp[0].minor.yy0, NULL), &yymsp[0].minor.yy0); } +#line 6501 "sql.c" yymsp[0].minor.yy348 = yylhsminor.yy348; break; case 302: /* tag_item ::= column_name column_alias */ +#line 543 "sql.y" { yylhsminor.yy348 = setProjectionAlias(pCxt, createColumnNode(pCxt, NULL, &yymsp[-1].minor.yy269), &yymsp[0].minor.yy269); } +#line 6507 "sql.c" yymsp[-1].minor.yy348 = yylhsminor.yy348; break; case 303: /* tag_item ::= column_name AS column_alias */ +#line 544 "sql.y" { yylhsminor.yy348 = setProjectionAlias(pCxt, createColumnNode(pCxt, NULL, &yymsp[-2].minor.yy269), &yymsp[0].minor.yy269); } +#line 6513 "sql.c" yymsp[-2].minor.yy348 = yylhsminor.yy348; break; case 304: /* db_kind_opt ::= */ +#line 548 "sql.y" { yymsp[1].minor.yy361 = SHOW_KIND_ALL; } +#line 6519 "sql.c" break; case 305: /* db_kind_opt ::= USER */ +#line 549 "sql.y" { yymsp[0].minor.yy361 = SHOW_KIND_DATABASES_USER; } +#line 6524 "sql.c" break; case 306: /* db_kind_opt ::= SYSTEM */ +#line 550 "sql.y" { yymsp[0].minor.yy361 = SHOW_KIND_DATABASES_SYSTEM; } +#line 6529 "sql.c" break; case 307: /* cmd ::= CREATE SMA INDEX not_exists_opt col_name ON full_table_name index_options */ +#line 554 "sql.y" { pCxt->pRootNode = createCreateIndexStmt(pCxt, INDEX_TYPE_SMA, yymsp[-4].minor.yy345, yymsp[-3].minor.yy348, yymsp[-1].minor.yy348, NULL, yymsp[0].minor.yy348); } +#line 6534 "sql.c" break; case 308: /* cmd ::= CREATE INDEX not_exists_opt col_name ON full_table_name NK_LP col_name_list NK_RP */ +#line 556 "sql.y" { pCxt->pRootNode = createCreateIndexStmt(pCxt, INDEX_TYPE_NORMAL, yymsp[-6].minor.yy345, yymsp[-5].minor.yy348, yymsp[-3].minor.yy348, yymsp[-1].minor.yy860, NULL); } +#line 6539 "sql.c" break; case 309: /* cmd ::= DROP INDEX exists_opt full_index_name */ +#line 557 "sql.y" { pCxt->pRootNode = createDropIndexStmt(pCxt, yymsp[-1].minor.yy345, yymsp[0].minor.yy348); } +#line 6544 "sql.c" break; case 310: /* full_index_name ::= index_name */ +#line 559 "sql.y" { yylhsminor.yy348 = createRealTableNodeForIndexName(pCxt, NULL, &yymsp[0].minor.yy269); } +#line 6549 "sql.c" yymsp[0].minor.yy348 = yylhsminor.yy348; break; case 311: /* full_index_name ::= db_name NK_DOT index_name */ +#line 560 "sql.y" { yylhsminor.yy348 = createRealTableNodeForIndexName(pCxt, &yymsp[-2].minor.yy269, &yymsp[0].minor.yy269); } +#line 6555 "sql.c" yymsp[-2].minor.yy348 = yylhsminor.yy348; break; case 312: /* index_options ::= FUNCTION NK_LP func_list NK_RP INTERVAL NK_LP duration_literal NK_RP sliding_opt sma_stream_opt */ +#line 563 "sql.y" { yymsp[-9].minor.yy348 = createIndexOption(pCxt, yymsp[-7].minor.yy860, releaseRawExprNode(pCxt, yymsp[-3].minor.yy348), NULL, yymsp[-1].minor.yy348, yymsp[0].minor.yy348); } +#line 6561 "sql.c" break; case 313: /* index_options ::= FUNCTION NK_LP func_list NK_RP INTERVAL NK_LP duration_literal NK_COMMA duration_literal NK_RP sliding_opt sma_stream_opt */ +#line 566 "sql.y" { yymsp[-11].minor.yy348 = createIndexOption(pCxt, yymsp[-9].minor.yy860, releaseRawExprNode(pCxt, yymsp[-5].minor.yy348), releaseRawExprNode(pCxt, yymsp[-3].minor.yy348), yymsp[-1].minor.yy348, yymsp[0].minor.yy348); } +#line 6566 "sql.c" break; case 316: /* func ::= sma_func_name NK_LP expression_list NK_RP */ +#line 573 "sql.y" { yylhsminor.yy348 = createFunctionNode(pCxt, &yymsp[-3].minor.yy269, yymsp[-1].minor.yy860); } +#line 6571 "sql.c" yymsp[-3].minor.yy348 = yylhsminor.yy348; break; case 317: /* sma_func_name ::= function_name */ case 533: /* alias_opt ::= table_alias */ yytestcase(yyruleno==533); +#line 577 "sql.y" { yylhsminor.yy269 = yymsp[0].minor.yy269; } +#line 6578 "sql.c" yymsp[0].minor.yy269 = yylhsminor.yy269; break; case 322: /* sma_stream_opt ::= */ case 363: /* stream_options ::= */ yytestcase(yyruleno==363); +#line 583 "sql.y" { yymsp[1].minor.yy348 = createStreamOptions(pCxt); } +#line 6585 "sql.c" break; case 323: /* sma_stream_opt ::= sma_stream_opt WATERMARK duration_literal */ +#line 584 "sql.y" { ((SStreamOptions*)yymsp[-2].minor.yy348)->pWatermark = releaseRawExprNode(pCxt, yymsp[0].minor.yy348); yylhsminor.yy348 = yymsp[-2].minor.yy348; } +#line 6590 "sql.c" yymsp[-2].minor.yy348 = yylhsminor.yy348; break; case 324: /* sma_stream_opt ::= sma_stream_opt MAX_DELAY duration_literal */ +#line 585 "sql.y" { ((SStreamOptions*)yymsp[-2].minor.yy348)->pDelay = releaseRawExprNode(pCxt, yymsp[0].minor.yy348); yylhsminor.yy348 = yymsp[-2].minor.yy348; } +#line 6596 "sql.c" yymsp[-2].minor.yy348 = yylhsminor.yy348; break; case 325: /* sma_stream_opt ::= sma_stream_opt DELETE_MARK duration_literal */ +#line 586 "sql.y" { ((SStreamOptions*)yymsp[-2].minor.yy348)->pDeleteMark = releaseRawExprNode(pCxt, yymsp[0].minor.yy348); yylhsminor.yy348 = yymsp[-2].minor.yy348; } +#line 6602 "sql.c" yymsp[-2].minor.yy348 = yylhsminor.yy348; break; case 326: /* with_meta ::= AS */ +#line 591 "sql.y" { yymsp[0].minor.yy88 = 0; } +#line 6608 "sql.c" break; case 327: /* with_meta ::= WITH META AS */ +#line 592 "sql.y" { yymsp[-2].minor.yy88 = 1; } +#line 6613 "sql.c" break; case 328: /* with_meta ::= ONLY META AS */ +#line 593 "sql.y" { yymsp[-2].minor.yy88 = 2; } +#line 6618 "sql.c" break; case 329: /* cmd ::= CREATE TOPIC not_exists_opt topic_name AS query_or_subquery */ +#line 595 "sql.y" { pCxt->pRootNode = createCreateTopicStmtUseQuery(pCxt, yymsp[-3].minor.yy345, &yymsp[-2].minor.yy269, yymsp[0].minor.yy348); } +#line 6623 "sql.c" break; case 330: /* cmd ::= CREATE TOPIC not_exists_opt topic_name with_meta DATABASE db_name */ +#line 597 "sql.y" { pCxt->pRootNode = createCreateTopicStmtUseDb(pCxt, yymsp[-4].minor.yy345, &yymsp[-3].minor.yy269, &yymsp[0].minor.yy269, yymsp[-2].minor.yy88); } +#line 6628 "sql.c" break; case 331: /* cmd ::= CREATE TOPIC not_exists_opt topic_name with_meta STABLE full_table_name where_clause_opt */ +#line 599 "sql.y" { pCxt->pRootNode = createCreateTopicStmtUseTable(pCxt, yymsp[-5].minor.yy345, &yymsp[-4].minor.yy269, yymsp[-1].minor.yy348, yymsp[-3].minor.yy88, yymsp[0].minor.yy348); } +#line 6633 "sql.c" break; case 332: /* cmd ::= DROP TOPIC exists_opt topic_name */ +#line 601 "sql.y" { pCxt->pRootNode = createDropTopicStmt(pCxt, yymsp[-1].minor.yy345, &yymsp[0].minor.yy269); } +#line 6638 "sql.c" break; case 333: /* cmd ::= DROP CONSUMER GROUP exists_opt cgroup_name ON topic_name */ +#line 602 "sql.y" { pCxt->pRootNode = createDropCGroupStmt(pCxt, yymsp[-3].minor.yy345, &yymsp[-2].minor.yy269, &yymsp[0].minor.yy269); } +#line 6643 "sql.c" break; case 334: /* cmd ::= DESC full_table_name */ case 335: /* cmd ::= DESCRIBE full_table_name */ yytestcase(yyruleno==335); +#line 605 "sql.y" { pCxt->pRootNode = createDescribeStmt(pCxt, yymsp[0].minor.yy348); } +#line 6649 "sql.c" break; case 336: /* cmd ::= RESET QUERY CACHE */ +#line 609 "sql.y" { pCxt->pRootNode = createResetQueryCacheStmt(pCxt); } +#line 6654 "sql.c" break; case 337: /* cmd ::= EXPLAIN analyze_opt explain_options query_or_subquery */ case 338: /* cmd ::= EXPLAIN analyze_opt explain_options insert_query */ yytestcase(yyruleno==338); +#line 612 "sql.y" { pCxt->pRootNode = createExplainStmt(pCxt, yymsp[-2].minor.yy345, yymsp[-1].minor.yy348, yymsp[0].minor.yy348); } +#line 6660 "sql.c" break; case 341: /* explain_options ::= */ +#line 620 "sql.y" { yymsp[1].minor.yy348 = createDefaultExplainOptions(pCxt); } +#line 6665 "sql.c" break; case 342: /* explain_options ::= explain_options VERBOSE NK_BOOL */ +#line 621 "sql.y" { yylhsminor.yy348 = setExplainVerbose(pCxt, yymsp[-2].minor.yy348, &yymsp[0].minor.yy0); } +#line 6670 "sql.c" yymsp[-2].minor.yy348 = yylhsminor.yy348; break; case 343: /* explain_options ::= explain_options RATIO NK_FLOAT */ +#line 622 "sql.y" { yylhsminor.yy348 = setExplainRatio(pCxt, yymsp[-2].minor.yy348, &yymsp[0].minor.yy0); } +#line 6676 "sql.c" yymsp[-2].minor.yy348 = yylhsminor.yy348; break; case 344: /* cmd ::= CREATE or_replace_opt agg_func_opt FUNCTION not_exists_opt function_name AS NK_STRING OUTPUTTYPE type_name bufsize_opt language_opt */ +#line 627 "sql.y" { pCxt->pRootNode = createCreateFunctionStmt(pCxt, yymsp[-7].minor.yy345, yymsp[-9].minor.yy345, &yymsp[-6].minor.yy269, &yymsp[-4].minor.yy0, yymsp[-2].minor.yy720, yymsp[-1].minor.yy88, &yymsp[0].minor.yy269, yymsp[-10].minor.yy345); } +#line 6682 "sql.c" break; case 345: /* cmd ::= DROP FUNCTION exists_opt function_name */ +#line 628 "sql.y" { pCxt->pRootNode = createDropFunctionStmt(pCxt, yymsp[-1].minor.yy345, &yymsp[0].minor.yy269); } +#line 6687 "sql.c" break; case 350: /* language_opt ::= */ case 384: /* on_vgroup_id ::= */ yytestcase(yyruleno==384); +#line 642 "sql.y" { yymsp[1].minor.yy269 = nil_token; } +#line 6693 "sql.c" break; case 351: /* language_opt ::= LANGUAGE NK_STRING */ case 385: /* on_vgroup_id ::= ON NK_INTEGER */ yytestcase(yyruleno==385); +#line 643 "sql.y" { yymsp[-1].minor.yy269 = yymsp[0].minor.yy0; } +#line 6699 "sql.c" break; case 354: /* cmd ::= CREATE STREAM not_exists_opt stream_name stream_options INTO full_table_name col_list_opt tag_def_or_ref_opt subtable_opt AS query_or_subquery */ +#line 653 "sql.y" { pCxt->pRootNode = createCreateStreamStmt(pCxt, yymsp[-9].minor.yy345, &yymsp[-8].minor.yy269, yymsp[-5].minor.yy348, yymsp[-7].minor.yy348, yymsp[-3].minor.yy860, yymsp[-2].minor.yy348, yymsp[0].minor.yy348, yymsp[-4].minor.yy860); } +#line 6704 "sql.c" break; case 355: /* cmd ::= DROP STREAM exists_opt stream_name */ +#line 654 "sql.y" { pCxt->pRootNode = createDropStreamStmt(pCxt, yymsp[-1].minor.yy345, &yymsp[0].minor.yy269); } +#line 6709 "sql.c" break; case 356: /* cmd ::= PAUSE STREAM exists_opt stream_name */ +#line 655 "sql.y" { pCxt->pRootNode = createPauseStreamStmt(pCxt, yymsp[-1].minor.yy345, &yymsp[0].minor.yy269); } +#line 6714 "sql.c" break; case 357: /* cmd ::= RESUME STREAM exists_opt ignore_opt stream_name */ +#line 656 "sql.y" { pCxt->pRootNode = createResumeStreamStmt(pCxt, yymsp[-2].minor.yy345, yymsp[-1].minor.yy345, &yymsp[0].minor.yy269); } +#line 6719 "sql.c" break; case 364: /* stream_options ::= stream_options TRIGGER AT_ONCE */ case 365: /* stream_options ::= stream_options TRIGGER WINDOW_CLOSE */ yytestcase(yyruleno==365); +#line 670 "sql.y" { yylhsminor.yy348 = setStreamOptions(pCxt, yymsp[-2].minor.yy348, SOPT_TRIGGER_TYPE_SET, &yymsp[0].minor.yy0, NULL); } +#line 6725 "sql.c" yymsp[-2].minor.yy348 = yylhsminor.yy348; break; case 366: /* stream_options ::= stream_options TRIGGER MAX_DELAY duration_literal */ +#line 672 "sql.y" { yylhsminor.yy348 = setStreamOptions(pCxt, yymsp[-3].minor.yy348, SOPT_TRIGGER_TYPE_SET, &yymsp[-1].minor.yy0, releaseRawExprNode(pCxt, yymsp[0].minor.yy348)); } +#line 6731 "sql.c" yymsp[-3].minor.yy348 = yylhsminor.yy348; break; case 367: /* stream_options ::= stream_options WATERMARK duration_literal */ +#line 673 "sql.y" { yylhsminor.yy348 = setStreamOptions(pCxt, yymsp[-2].minor.yy348, SOPT_WATERMARK_SET, NULL, releaseRawExprNode(pCxt, yymsp[0].minor.yy348)); } +#line 6737 "sql.c" yymsp[-2].minor.yy348 = yylhsminor.yy348; break; case 368: /* stream_options ::= stream_options IGNORE EXPIRED NK_INTEGER */ +#line 674 "sql.y" { yylhsminor.yy348 = setStreamOptions(pCxt, yymsp[-3].minor.yy348, SOPT_IGNORE_EXPIRED_SET, &yymsp[0].minor.yy0, NULL); } +#line 6743 "sql.c" yymsp[-3].minor.yy348 = yylhsminor.yy348; break; case 369: /* stream_options ::= stream_options FILL_HISTORY NK_INTEGER */ +#line 675 "sql.y" { yylhsminor.yy348 = setStreamOptions(pCxt, yymsp[-2].minor.yy348, SOPT_FILL_HISTORY_SET, &yymsp[0].minor.yy0, NULL); } +#line 6749 "sql.c" yymsp[-2].minor.yy348 = yylhsminor.yy348; break; case 370: /* stream_options ::= stream_options DELETE_MARK duration_literal */ +#line 676 "sql.y" { yylhsminor.yy348 = setStreamOptions(pCxt, yymsp[-2].minor.yy348, SOPT_DELETE_MARK_SET, NULL, releaseRawExprNode(pCxt, yymsp[0].minor.yy348)); } +#line 6755 "sql.c" yymsp[-2].minor.yy348 = yylhsminor.yy348; break; case 371: /* stream_options ::= stream_options IGNORE UPDATE NK_INTEGER */ +#line 677 "sql.y" { yylhsminor.yy348 = setStreamOptions(pCxt, yymsp[-3].minor.yy348, SOPT_IGNORE_UPDATE_SET, &yymsp[0].minor.yy0, NULL); } +#line 6761 "sql.c" yymsp[-3].minor.yy348 = yylhsminor.yy348; break; case 373: /* subtable_opt ::= SUBTABLE NK_LP expression NK_RP */ case 571: /* sliding_opt ::= SLIDING NK_LP duration_literal NK_RP */ yytestcase(yyruleno==571); case 592: /* every_opt ::= EVERY NK_LP duration_literal NK_RP */ yytestcase(yyruleno==592); +#line 680 "sql.y" { yymsp[-3].minor.yy348 = releaseRawExprNode(pCxt, yymsp[-1].minor.yy348); } +#line 6769 "sql.c" break; case 376: /* cmd ::= KILL CONNECTION NK_INTEGER */ +#line 688 "sql.y" { pCxt->pRootNode = createKillStmt(pCxt, QUERY_NODE_KILL_CONNECTION_STMT, &yymsp[0].minor.yy0); } +#line 6774 "sql.c" break; case 377: /* cmd ::= KILL QUERY NK_STRING */ +#line 689 "sql.y" { pCxt->pRootNode = createKillQueryStmt(pCxt, &yymsp[0].minor.yy0); } +#line 6779 "sql.c" break; case 378: /* cmd ::= KILL TRANSACTION NK_INTEGER */ +#line 690 "sql.y" { pCxt->pRootNode = createKillStmt(pCxt, QUERY_NODE_KILL_TRANSACTION_STMT, &yymsp[0].minor.yy0); } +#line 6784 "sql.c" break; case 379: /* cmd ::= BALANCE VGROUP */ +#line 693 "sql.y" { pCxt->pRootNode = createBalanceVgroupStmt(pCxt); } +#line 6789 "sql.c" break; case 380: /* cmd ::= BALANCE VGROUP LEADER on_vgroup_id */ +#line 694 "sql.y" { pCxt->pRootNode = createBalanceVgroupLeaderStmt(pCxt, &yymsp[0].minor.yy269); } +#line 6794 "sql.c" break; case 381: /* cmd ::= MERGE VGROUP NK_INTEGER NK_INTEGER */ +#line 695 "sql.y" { pCxt->pRootNode = createMergeVgroupStmt(pCxt, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy0); } +#line 6799 "sql.c" break; case 382: /* cmd ::= REDISTRIBUTE VGROUP NK_INTEGER dnode_list */ +#line 696 "sql.y" { pCxt->pRootNode = createRedistributeVgroupStmt(pCxt, &yymsp[-1].minor.yy0, yymsp[0].minor.yy860); } +#line 6804 "sql.c" break; case 383: /* cmd ::= SPLIT VGROUP NK_INTEGER */ +#line 697 "sql.y" { pCxt->pRootNode = createSplitVgroupStmt(pCxt, &yymsp[0].minor.yy0); } +#line 6809 "sql.c" break; case 386: /* dnode_list ::= DNODE NK_INTEGER */ +#line 706 "sql.y" { yymsp[-1].minor.yy860 = createNodeList(pCxt, createValueNode(pCxt, TSDB_DATA_TYPE_BIGINT, &yymsp[0].minor.yy0)); } +#line 6814 "sql.c" break; case 388: /* cmd ::= DELETE FROM full_table_name where_clause_opt */ +#line 713 "sql.y" { pCxt->pRootNode = createDeleteStmt(pCxt, yymsp[-1].minor.yy348, yymsp[0].minor.yy348); } +#line 6819 "sql.c" break; case 391: /* insert_query ::= INSERT INTO full_table_name NK_LP col_name_list NK_RP query_or_subquery */ +#line 722 "sql.y" { yymsp[-6].minor.yy348 = createInsertStmt(pCxt, yymsp[-4].minor.yy348, yymsp[-2].minor.yy860, yymsp[0].minor.yy348); } +#line 6824 "sql.c" break; case 392: /* insert_query ::= INSERT INTO full_table_name query_or_subquery */ +#line 723 "sql.y" { yymsp[-3].minor.yy348 = createInsertStmt(pCxt, yymsp[-1].minor.yy348, NULL, yymsp[0].minor.yy348); } +#line 6829 "sql.c" break; case 393: /* literal ::= NK_INTEGER */ +#line 726 "sql.y" { yylhsminor.yy348 = createRawExprNode(pCxt, &yymsp[0].minor.yy0, createValueNode(pCxt, TSDB_DATA_TYPE_UBIGINT, &yymsp[0].minor.yy0)); } +#line 6834 "sql.c" yymsp[0].minor.yy348 = yylhsminor.yy348; break; case 394: /* literal ::= NK_FLOAT */ +#line 727 "sql.y" { yylhsminor.yy348 = createRawExprNode(pCxt, &yymsp[0].minor.yy0, createValueNode(pCxt, TSDB_DATA_TYPE_DOUBLE, &yymsp[0].minor.yy0)); } +#line 6840 "sql.c" yymsp[0].minor.yy348 = yylhsminor.yy348; break; case 395: /* literal ::= NK_STRING */ +#line 728 "sql.y" { yylhsminor.yy348 = createRawExprNode(pCxt, &yymsp[0].minor.yy0, createValueNode(pCxt, TSDB_DATA_TYPE_BINARY, &yymsp[0].minor.yy0)); } +#line 6846 "sql.c" yymsp[0].minor.yy348 = yylhsminor.yy348; break; case 396: /* literal ::= NK_BOOL */ +#line 729 "sql.y" { yylhsminor.yy348 = createRawExprNode(pCxt, &yymsp[0].minor.yy0, createValueNode(pCxt, TSDB_DATA_TYPE_BOOL, &yymsp[0].minor.yy0)); } +#line 6852 "sql.c" yymsp[0].minor.yy348 = yylhsminor.yy348; break; case 397: /* literal ::= TIMESTAMP NK_STRING */ +#line 730 "sql.y" { yylhsminor.yy348 = createRawExprNodeExt(pCxt, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy0, createValueNode(pCxt, TSDB_DATA_TYPE_TIMESTAMP, &yymsp[0].minor.yy0)); } +#line 6858 "sql.c" yymsp[-1].minor.yy348 = yylhsminor.yy348; break; case 398: /* literal ::= duration_literal */ case 408: /* signed_literal ::= signed */ yytestcase(yyruleno==408); case 429: /* expr_or_subquery ::= expression */ yytestcase(yyruleno==429); case 430: /* expression ::= literal */ yytestcase(yyruleno==430); - case 431: /* expression ::= pseudo_column */ yytestcase(yyruleno==431); case 432: /* expression ::= column_reference */ yytestcase(yyruleno==432); case 433: /* expression ::= function_expression */ yytestcase(yyruleno==433); case 434: /* expression ::= case_when_expression */ yytestcase(yyruleno==434); @@ -5923,61 +6878,87 @@ static YYACTIONTYPE yy_reduce( case 595: /* query_simple ::= union_query_expression */ yytestcase(yyruleno==595); case 598: /* query_simple_or_subquery ::= query_simple */ yytestcase(yyruleno==598); case 600: /* query_or_subquery ::= query_expression */ yytestcase(yyruleno==600); +#line 731 "sql.y" { yylhsminor.yy348 = yymsp[0].minor.yy348; } +#line 6883 "sql.c" yymsp[0].minor.yy348 = yylhsminor.yy348; break; case 399: /* literal ::= NULL */ +#line 732 "sql.y" { yylhsminor.yy348 = createRawExprNode(pCxt, &yymsp[0].minor.yy0, createValueNode(pCxt, TSDB_DATA_TYPE_NULL, &yymsp[0].minor.yy0)); } +#line 6889 "sql.c" yymsp[0].minor.yy348 = yylhsminor.yy348; break; case 400: /* literal ::= NK_QUESTION */ +#line 733 "sql.y" { yylhsminor.yy348 = createRawExprNode(pCxt, &yymsp[0].minor.yy0, createPlaceholderValueNode(pCxt, &yymsp[0].minor.yy0)); } +#line 6895 "sql.c" yymsp[0].minor.yy348 = yylhsminor.yy348; break; case 401: /* duration_literal ::= NK_VARIABLE */ +#line 735 "sql.y" { yylhsminor.yy348 = createRawExprNode(pCxt, &yymsp[0].minor.yy0, createDurationValueNode(pCxt, &yymsp[0].minor.yy0)); } +#line 6901 "sql.c" yymsp[0].minor.yy348 = yylhsminor.yy348; break; case 402: /* signed ::= NK_INTEGER */ +#line 737 "sql.y" { yylhsminor.yy348 = createValueNode(pCxt, TSDB_DATA_TYPE_UBIGINT, &yymsp[0].minor.yy0); } +#line 6907 "sql.c" yymsp[0].minor.yy348 = yylhsminor.yy348; break; case 403: /* signed ::= NK_PLUS NK_INTEGER */ +#line 738 "sql.y" { yymsp[-1].minor.yy348 = createValueNode(pCxt, TSDB_DATA_TYPE_UBIGINT, &yymsp[0].minor.yy0); } +#line 6913 "sql.c" break; case 404: /* signed ::= NK_MINUS NK_INTEGER */ +#line 739 "sql.y" { SToken t = yymsp[-1].minor.yy0; t.n = (yymsp[0].minor.yy0.z + yymsp[0].minor.yy0.n) - yymsp[-1].minor.yy0.z; yylhsminor.yy348 = createValueNode(pCxt, TSDB_DATA_TYPE_BIGINT, &t); } +#line 6922 "sql.c" yymsp[-1].minor.yy348 = yylhsminor.yy348; break; case 405: /* signed ::= NK_FLOAT */ +#line 744 "sql.y" { yylhsminor.yy348 = createValueNode(pCxt, TSDB_DATA_TYPE_DOUBLE, &yymsp[0].minor.yy0); } +#line 6928 "sql.c" yymsp[0].minor.yy348 = yylhsminor.yy348; break; case 406: /* signed ::= NK_PLUS NK_FLOAT */ +#line 745 "sql.y" { yymsp[-1].minor.yy348 = createValueNode(pCxt, TSDB_DATA_TYPE_DOUBLE, &yymsp[0].minor.yy0); } +#line 6934 "sql.c" break; case 407: /* signed ::= NK_MINUS NK_FLOAT */ +#line 746 "sql.y" { SToken t = yymsp[-1].minor.yy0; t.n = (yymsp[0].minor.yy0.z + yymsp[0].minor.yy0.n) - yymsp[-1].minor.yy0.z; yylhsminor.yy348 = createValueNode(pCxt, TSDB_DATA_TYPE_DOUBLE, &t); } +#line 6943 "sql.c" yymsp[-1].minor.yy348 = yylhsminor.yy348; break; case 409: /* signed_literal ::= NK_STRING */ +#line 753 "sql.y" { yylhsminor.yy348 = createValueNode(pCxt, TSDB_DATA_TYPE_BINARY, &yymsp[0].minor.yy0); } +#line 6949 "sql.c" yymsp[0].minor.yy348 = yylhsminor.yy348; break; case 410: /* signed_literal ::= NK_BOOL */ +#line 754 "sql.y" { yylhsminor.yy348 = createValueNode(pCxt, TSDB_DATA_TYPE_BOOL, &yymsp[0].minor.yy0); } +#line 6955 "sql.c" yymsp[0].minor.yy348 = yylhsminor.yy348; break; case 411: /* signed_literal ::= TIMESTAMP NK_STRING */ +#line 755 "sql.y" { yymsp[-1].minor.yy348 = createValueNode(pCxt, TSDB_DATA_TYPE_TIMESTAMP, &yymsp[0].minor.yy0); } +#line 6961 "sql.c" break; case 412: /* signed_literal ::= duration_literal */ case 414: /* signed_literal ::= literal_func */ yytestcase(yyruleno==414); @@ -5987,106 +6968,144 @@ static YYACTIONTYPE yy_reduce( case 599: /* query_simple_or_subquery ::= subquery */ yytestcase(yyruleno==599); case 601: /* query_or_subquery ::= subquery */ yytestcase(yyruleno==601); case 614: /* search_condition ::= common_expression */ yytestcase(yyruleno==614); +#line 756 "sql.y" { yylhsminor.yy348 = releaseRawExprNode(pCxt, yymsp[0].minor.yy348); } +#line 6973 "sql.c" yymsp[0].minor.yy348 = yylhsminor.yy348; break; case 413: /* signed_literal ::= NULL */ +#line 757 "sql.y" { yylhsminor.yy348 = createValueNode(pCxt, TSDB_DATA_TYPE_NULL, &yymsp[0].minor.yy0); } +#line 6979 "sql.c" yymsp[0].minor.yy348 = yylhsminor.yy348; break; case 415: /* signed_literal ::= NK_QUESTION */ +#line 759 "sql.y" { yylhsminor.yy348 = createPlaceholderValueNode(pCxt, &yymsp[0].minor.yy0); } +#line 6985 "sql.c" + yymsp[0].minor.yy348 = yylhsminor.yy348; + break; + case 431: /* expression ::= pseudo_column */ +#line 816 "sql.y" +{ yylhsminor.yy348 = yymsp[0].minor.yy348; setRawExprNodeIsPseudoColumn(pCxt, yylhsminor.yy348, true); } +#line 6991 "sql.c" yymsp[0].minor.yy348 = yylhsminor.yy348; break; case 435: /* expression ::= NK_LP expression NK_RP */ case 519: /* boolean_primary ::= NK_LP boolean_value_expression NK_RP */ yytestcase(yyruleno==519); case 613: /* subquery ::= NK_LP subquery NK_RP */ yytestcase(yyruleno==613); +#line 820 "sql.y" { yylhsminor.yy348 = createRawExprNodeExt(pCxt, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0, releaseRawExprNode(pCxt, yymsp[-1].minor.yy348)); } +#line 6999 "sql.c" yymsp[-2].minor.yy348 = yylhsminor.yy348; break; case 436: /* expression ::= NK_PLUS expr_or_subquery */ +#line 821 "sql.y" { SToken t = getTokenFromRawExprNode(pCxt, yymsp[0].minor.yy348); yylhsminor.yy348 = createRawExprNodeExt(pCxt, &yymsp[-1].minor.yy0, &t, releaseRawExprNode(pCxt, yymsp[0].minor.yy348)); } +#line 7008 "sql.c" yymsp[-1].minor.yy348 = yylhsminor.yy348; break; case 437: /* expression ::= NK_MINUS expr_or_subquery */ +#line 825 "sql.y" { SToken t = getTokenFromRawExprNode(pCxt, yymsp[0].minor.yy348); yylhsminor.yy348 = createRawExprNodeExt(pCxt, &yymsp[-1].minor.yy0, &t, createOperatorNode(pCxt, OP_TYPE_MINUS, releaseRawExprNode(pCxt, yymsp[0].minor.yy348), NULL)); } +#line 7017 "sql.c" yymsp[-1].minor.yy348 = yylhsminor.yy348; break; case 438: /* expression ::= expr_or_subquery NK_PLUS expr_or_subquery */ +#line 829 "sql.y" { SToken s = getTokenFromRawExprNode(pCxt, yymsp[-2].minor.yy348); SToken e = getTokenFromRawExprNode(pCxt, yymsp[0].minor.yy348); yylhsminor.yy348 = createRawExprNodeExt(pCxt, &s, &e, createOperatorNode(pCxt, OP_TYPE_ADD, releaseRawExprNode(pCxt, yymsp[-2].minor.yy348), releaseRawExprNode(pCxt, yymsp[0].minor.yy348))); } +#line 7027 "sql.c" yymsp[-2].minor.yy348 = yylhsminor.yy348; break; case 439: /* expression ::= expr_or_subquery NK_MINUS expr_or_subquery */ +#line 834 "sql.y" { SToken s = getTokenFromRawExprNode(pCxt, yymsp[-2].minor.yy348); SToken e = getTokenFromRawExprNode(pCxt, yymsp[0].minor.yy348); yylhsminor.yy348 = createRawExprNodeExt(pCxt, &s, &e, createOperatorNode(pCxt, OP_TYPE_SUB, releaseRawExprNode(pCxt, yymsp[-2].minor.yy348), releaseRawExprNode(pCxt, yymsp[0].minor.yy348))); } +#line 7037 "sql.c" yymsp[-2].minor.yy348 = yylhsminor.yy348; break; case 440: /* expression ::= expr_or_subquery NK_STAR expr_or_subquery */ +#line 839 "sql.y" { SToken s = getTokenFromRawExprNode(pCxt, yymsp[-2].minor.yy348); SToken e = getTokenFromRawExprNode(pCxt, yymsp[0].minor.yy348); yylhsminor.yy348 = createRawExprNodeExt(pCxt, &s, &e, createOperatorNode(pCxt, OP_TYPE_MULTI, releaseRawExprNode(pCxt, yymsp[-2].minor.yy348), releaseRawExprNode(pCxt, yymsp[0].minor.yy348))); } +#line 7047 "sql.c" yymsp[-2].minor.yy348 = yylhsminor.yy348; break; case 441: /* expression ::= expr_or_subquery NK_SLASH expr_or_subquery */ +#line 844 "sql.y" { SToken s = getTokenFromRawExprNode(pCxt, yymsp[-2].minor.yy348); SToken e = getTokenFromRawExprNode(pCxt, yymsp[0].minor.yy348); yylhsminor.yy348 = createRawExprNodeExt(pCxt, &s, &e, createOperatorNode(pCxt, OP_TYPE_DIV, releaseRawExprNode(pCxt, yymsp[-2].minor.yy348), releaseRawExprNode(pCxt, yymsp[0].minor.yy348))); } +#line 7057 "sql.c" yymsp[-2].minor.yy348 = yylhsminor.yy348; break; case 442: /* expression ::= expr_or_subquery NK_REM expr_or_subquery */ +#line 849 "sql.y" { SToken s = getTokenFromRawExprNode(pCxt, yymsp[-2].minor.yy348); SToken e = getTokenFromRawExprNode(pCxt, yymsp[0].minor.yy348); yylhsminor.yy348 = createRawExprNodeExt(pCxt, &s, &e, createOperatorNode(pCxt, OP_TYPE_REM, releaseRawExprNode(pCxt, yymsp[-2].minor.yy348), releaseRawExprNode(pCxt, yymsp[0].minor.yy348))); } +#line 7067 "sql.c" yymsp[-2].minor.yy348 = yylhsminor.yy348; break; case 443: /* expression ::= column_reference NK_ARROW NK_STRING */ +#line 854 "sql.y" { SToken s = getTokenFromRawExprNode(pCxt, yymsp[-2].minor.yy348); yylhsminor.yy348 = createRawExprNodeExt(pCxt, &s, &yymsp[0].minor.yy0, createOperatorNode(pCxt, OP_TYPE_JSON_GET_VALUE, releaseRawExprNode(pCxt, yymsp[-2].minor.yy348), createValueNode(pCxt, TSDB_DATA_TYPE_BINARY, &yymsp[0].minor.yy0))); } +#line 7076 "sql.c" yymsp[-2].minor.yy348 = yylhsminor.yy348; break; case 444: /* expression ::= expr_or_subquery NK_BITAND expr_or_subquery */ +#line 858 "sql.y" { SToken s = getTokenFromRawExprNode(pCxt, yymsp[-2].minor.yy348); SToken e = getTokenFromRawExprNode(pCxt, yymsp[0].minor.yy348); yylhsminor.yy348 = createRawExprNodeExt(pCxt, &s, &e, createOperatorNode(pCxt, OP_TYPE_BIT_AND, releaseRawExprNode(pCxt, yymsp[-2].minor.yy348), releaseRawExprNode(pCxt, yymsp[0].minor.yy348))); } +#line 7086 "sql.c" yymsp[-2].minor.yy348 = yylhsminor.yy348; break; case 445: /* expression ::= expr_or_subquery NK_BITOR expr_or_subquery */ +#line 863 "sql.y" { SToken s = getTokenFromRawExprNode(pCxt, yymsp[-2].minor.yy348); SToken e = getTokenFromRawExprNode(pCxt, yymsp[0].minor.yy348); yylhsminor.yy348 = createRawExprNodeExt(pCxt, &s, &e, createOperatorNode(pCxt, OP_TYPE_BIT_OR, releaseRawExprNode(pCxt, yymsp[-2].minor.yy348), releaseRawExprNode(pCxt, yymsp[0].minor.yy348))); } +#line 7096 "sql.c" yymsp[-2].minor.yy348 = yylhsminor.yy348; break; case 448: /* column_reference ::= column_name */ +#line 874 "sql.y" { yylhsminor.yy348 = createRawExprNode(pCxt, &yymsp[0].minor.yy269, createColumnNode(pCxt, NULL, &yymsp[0].minor.yy269)); } +#line 7102 "sql.c" yymsp[0].minor.yy348 = yylhsminor.yy348; break; case 449: /* column_reference ::= table_name NK_DOT column_name */ +#line 875 "sql.y" { yylhsminor.yy348 = createRawExprNodeExt(pCxt, &yymsp[-2].minor.yy269, &yymsp[0].minor.yy269, createColumnNode(pCxt, &yymsp[-2].minor.yy269, &yymsp[0].minor.yy269)); } +#line 7108 "sql.c" yymsp[-2].minor.yy348 = yylhsminor.yy348; break; case 450: /* pseudo_column ::= ROWTS */ @@ -6101,191 +7120,278 @@ static YYACTIONTYPE yy_reduce( case 460: /* pseudo_column ::= ISFILLED */ yytestcase(yyruleno==460); case 461: /* pseudo_column ::= QTAGS */ yytestcase(yyruleno==461); case 467: /* literal_func ::= NOW */ yytestcase(yyruleno==467); +#line 877 "sql.y" { yylhsminor.yy348 = createRawExprNode(pCxt, &yymsp[0].minor.yy0, createFunctionNode(pCxt, &yymsp[0].minor.yy0, NULL)); } +#line 7125 "sql.c" yymsp[0].minor.yy348 = yylhsminor.yy348; break; case 452: /* pseudo_column ::= table_name NK_DOT TBNAME */ +#line 879 "sql.y" { yylhsminor.yy348 = createRawExprNodeExt(pCxt, &yymsp[-2].minor.yy269, &yymsp[0].minor.yy0, createFunctionNode(pCxt, &yymsp[0].minor.yy0, createNodeList(pCxt, createValueNode(pCxt, TSDB_DATA_TYPE_BINARY, &yymsp[-2].minor.yy269)))); } +#line 7131 "sql.c" yymsp[-2].minor.yy348 = yylhsminor.yy348; break; case 462: /* function_expression ::= function_name NK_LP expression_list NK_RP */ case 463: /* function_expression ::= star_func NK_LP star_func_para_list NK_RP */ yytestcase(yyruleno==463); +#line 890 "sql.y" { yylhsminor.yy348 = createRawExprNodeExt(pCxt, &yymsp[-3].minor.yy269, &yymsp[0].minor.yy0, createFunctionNode(pCxt, &yymsp[-3].minor.yy269, yymsp[-1].minor.yy860)); } +#line 7138 "sql.c" yymsp[-3].minor.yy348 = yylhsminor.yy348; break; case 464: /* function_expression ::= CAST NK_LP expr_or_subquery AS type_name NK_RP */ +#line 893 "sql.y" { yylhsminor.yy348 = createRawExprNodeExt(pCxt, &yymsp[-5].minor.yy0, &yymsp[0].minor.yy0, createCastFunctionNode(pCxt, releaseRawExprNode(pCxt, yymsp[-3].minor.yy348), yymsp[-1].minor.yy720)); } +#line 7144 "sql.c" yymsp[-5].minor.yy348 = yylhsminor.yy348; break; case 466: /* literal_func ::= noarg_func NK_LP NK_RP */ +#line 896 "sql.y" { yylhsminor.yy348 = createRawExprNodeExt(pCxt, &yymsp[-2].minor.yy269, &yymsp[0].minor.yy0, createFunctionNode(pCxt, &yymsp[-2].minor.yy269, NULL)); } +#line 7150 "sql.c" yymsp[-2].minor.yy348 = yylhsminor.yy348; break; case 481: /* star_func_para_list ::= NK_STAR */ +#line 920 "sql.y" { yylhsminor.yy860 = createNodeList(pCxt, createColumnNode(pCxt, NULL, &yymsp[0].minor.yy0)); } +#line 7156 "sql.c" yymsp[0].minor.yy860 = yylhsminor.yy860; break; case 486: /* star_func_para ::= table_name NK_DOT NK_STAR */ case 554: /* select_item ::= table_name NK_DOT NK_STAR */ yytestcase(yyruleno==554); +#line 929 "sql.y" { yylhsminor.yy348 = createColumnNode(pCxt, &yymsp[-2].minor.yy269, &yymsp[0].minor.yy0); } +#line 7163 "sql.c" yymsp[-2].minor.yy348 = yylhsminor.yy348; break; case 487: /* case_when_expression ::= CASE when_then_list case_when_else_opt END */ +#line 932 "sql.y" { yylhsminor.yy348 = createRawExprNodeExt(pCxt, &yymsp[-3].minor.yy0, &yymsp[0].minor.yy0, createCaseWhenNode(pCxt, NULL, yymsp[-2].minor.yy860, yymsp[-1].minor.yy348)); } +#line 7169 "sql.c" yymsp[-3].minor.yy348 = yylhsminor.yy348; break; case 488: /* case_when_expression ::= CASE common_expression when_then_list case_when_else_opt END */ +#line 934 "sql.y" { yylhsminor.yy348 = createRawExprNodeExt(pCxt, &yymsp[-4].minor.yy0, &yymsp[0].minor.yy0, createCaseWhenNode(pCxt, releaseRawExprNode(pCxt, yymsp[-3].minor.yy348), yymsp[-2].minor.yy860, yymsp[-1].minor.yy348)); } +#line 7175 "sql.c" yymsp[-4].minor.yy348 = yylhsminor.yy348; break; case 491: /* when_then_expr ::= WHEN common_expression THEN common_expression */ +#line 941 "sql.y" { yymsp[-3].minor.yy348 = createWhenThenNode(pCxt, releaseRawExprNode(pCxt, yymsp[-2].minor.yy348), releaseRawExprNode(pCxt, yymsp[0].minor.yy348)); } +#line 7181 "sql.c" break; case 493: /* case_when_else_opt ::= ELSE common_expression */ +#line 944 "sql.y" { yymsp[-1].minor.yy348 = releaseRawExprNode(pCxt, yymsp[0].minor.yy348); } +#line 7186 "sql.c" break; case 494: /* predicate ::= expr_or_subquery compare_op expr_or_subquery */ case 499: /* predicate ::= expr_or_subquery in_op in_predicate_value */ yytestcase(yyruleno==499); +#line 947 "sql.y" { SToken s = getTokenFromRawExprNode(pCxt, yymsp[-2].minor.yy348); SToken e = getTokenFromRawExprNode(pCxt, yymsp[0].minor.yy348); yylhsminor.yy348 = createRawExprNodeExt(pCxt, &s, &e, createOperatorNode(pCxt, yymsp[-1].minor.yy696, releaseRawExprNode(pCxt, yymsp[-2].minor.yy348), releaseRawExprNode(pCxt, yymsp[0].minor.yy348))); } +#line 7196 "sql.c" yymsp[-2].minor.yy348 = yylhsminor.yy348; break; case 495: /* predicate ::= expr_or_subquery BETWEEN expr_or_subquery AND expr_or_subquery */ +#line 954 "sql.y" { SToken s = getTokenFromRawExprNode(pCxt, yymsp[-4].minor.yy348); SToken e = getTokenFromRawExprNode(pCxt, yymsp[0].minor.yy348); yylhsminor.yy348 = createRawExprNodeExt(pCxt, &s, &e, createBetweenAnd(pCxt, releaseRawExprNode(pCxt, yymsp[-4].minor.yy348), releaseRawExprNode(pCxt, yymsp[-2].minor.yy348), releaseRawExprNode(pCxt, yymsp[0].minor.yy348))); } +#line 7206 "sql.c" yymsp[-4].minor.yy348 = yylhsminor.yy348; break; case 496: /* predicate ::= expr_or_subquery NOT BETWEEN expr_or_subquery AND expr_or_subquery */ +#line 960 "sql.y" { SToken s = getTokenFromRawExprNode(pCxt, yymsp[-5].minor.yy348); SToken e = getTokenFromRawExprNode(pCxt, yymsp[0].minor.yy348); yylhsminor.yy348 = createRawExprNodeExt(pCxt, &s, &e, createNotBetweenAnd(pCxt, releaseRawExprNode(pCxt, yymsp[-5].minor.yy348), releaseRawExprNode(pCxt, yymsp[-2].minor.yy348), releaseRawExprNode(pCxt, yymsp[0].minor.yy348))); } +#line 7216 "sql.c" yymsp[-5].minor.yy348 = yylhsminor.yy348; break; case 497: /* predicate ::= expr_or_subquery IS NULL */ +#line 965 "sql.y" { SToken s = getTokenFromRawExprNode(pCxt, yymsp[-2].minor.yy348); yylhsminor.yy348 = createRawExprNodeExt(pCxt, &s, &yymsp[0].minor.yy0, createOperatorNode(pCxt, OP_TYPE_IS_NULL, releaseRawExprNode(pCxt, yymsp[-2].minor.yy348), NULL)); } +#line 7225 "sql.c" yymsp[-2].minor.yy348 = yylhsminor.yy348; break; case 498: /* predicate ::= expr_or_subquery IS NOT NULL */ +#line 969 "sql.y" { SToken s = getTokenFromRawExprNode(pCxt, yymsp[-3].minor.yy348); yylhsminor.yy348 = createRawExprNodeExt(pCxt, &s, &yymsp[0].minor.yy0, createOperatorNode(pCxt, OP_TYPE_IS_NOT_NULL, releaseRawExprNode(pCxt, yymsp[-3].minor.yy348), NULL)); } +#line 7234 "sql.c" yymsp[-3].minor.yy348 = yylhsminor.yy348; break; case 500: /* compare_op ::= NK_LT */ +#line 981 "sql.y" { yymsp[0].minor.yy696 = OP_TYPE_LOWER_THAN; } +#line 7240 "sql.c" break; case 501: /* compare_op ::= NK_GT */ +#line 982 "sql.y" { yymsp[0].minor.yy696 = OP_TYPE_GREATER_THAN; } +#line 7245 "sql.c" break; case 502: /* compare_op ::= NK_LE */ +#line 983 "sql.y" { yymsp[0].minor.yy696 = OP_TYPE_LOWER_EQUAL; } +#line 7250 "sql.c" break; case 503: /* compare_op ::= NK_GE */ +#line 984 "sql.y" { yymsp[0].minor.yy696 = OP_TYPE_GREATER_EQUAL; } +#line 7255 "sql.c" break; case 504: /* compare_op ::= NK_NE */ +#line 985 "sql.y" { yymsp[0].minor.yy696 = OP_TYPE_NOT_EQUAL; } +#line 7260 "sql.c" break; case 505: /* compare_op ::= NK_EQ */ +#line 986 "sql.y" { yymsp[0].minor.yy696 = OP_TYPE_EQUAL; } +#line 7265 "sql.c" break; case 506: /* compare_op ::= LIKE */ +#line 987 "sql.y" { yymsp[0].minor.yy696 = OP_TYPE_LIKE; } +#line 7270 "sql.c" break; case 507: /* compare_op ::= NOT LIKE */ +#line 988 "sql.y" { yymsp[-1].minor.yy696 = OP_TYPE_NOT_LIKE; } +#line 7275 "sql.c" break; case 508: /* compare_op ::= MATCH */ +#line 989 "sql.y" { yymsp[0].minor.yy696 = OP_TYPE_MATCH; } +#line 7280 "sql.c" break; case 509: /* compare_op ::= NMATCH */ +#line 990 "sql.y" { yymsp[0].minor.yy696 = OP_TYPE_NMATCH; } +#line 7285 "sql.c" break; case 510: /* compare_op ::= CONTAINS */ +#line 991 "sql.y" { yymsp[0].minor.yy696 = OP_TYPE_JSON_CONTAINS; } +#line 7290 "sql.c" break; case 511: /* in_op ::= IN */ +#line 995 "sql.y" { yymsp[0].minor.yy696 = OP_TYPE_IN; } +#line 7295 "sql.c" break; case 512: /* in_op ::= NOT IN */ +#line 996 "sql.y" { yymsp[-1].minor.yy696 = OP_TYPE_NOT_IN; } +#line 7300 "sql.c" break; case 513: /* in_predicate_value ::= NK_LP literal_list NK_RP */ +#line 998 "sql.y" { yylhsminor.yy348 = createRawExprNodeExt(pCxt, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0, createNodeListNode(pCxt, yymsp[-1].minor.yy860)); } +#line 7305 "sql.c" yymsp[-2].minor.yy348 = yylhsminor.yy348; break; case 515: /* boolean_value_expression ::= NOT boolean_primary */ +#line 1002 "sql.y" { SToken e = getTokenFromRawExprNode(pCxt, yymsp[0].minor.yy348); yylhsminor.yy348 = createRawExprNodeExt(pCxt, &yymsp[-1].minor.yy0, &e, createLogicConditionNode(pCxt, LOGIC_COND_TYPE_NOT, releaseRawExprNode(pCxt, yymsp[0].minor.yy348), NULL)); } +#line 7314 "sql.c" yymsp[-1].minor.yy348 = yylhsminor.yy348; break; case 516: /* boolean_value_expression ::= boolean_value_expression OR boolean_value_expression */ +#line 1007 "sql.y" { SToken s = getTokenFromRawExprNode(pCxt, yymsp[-2].minor.yy348); SToken e = getTokenFromRawExprNode(pCxt, yymsp[0].minor.yy348); yylhsminor.yy348 = createRawExprNodeExt(pCxt, &s, &e, createLogicConditionNode(pCxt, LOGIC_COND_TYPE_OR, releaseRawExprNode(pCxt, yymsp[-2].minor.yy348), releaseRawExprNode(pCxt, yymsp[0].minor.yy348))); } +#line 7324 "sql.c" yymsp[-2].minor.yy348 = yylhsminor.yy348; break; case 517: /* boolean_value_expression ::= boolean_value_expression AND boolean_value_expression */ +#line 1013 "sql.y" { SToken s = getTokenFromRawExprNode(pCxt, yymsp[-2].minor.yy348); SToken e = getTokenFromRawExprNode(pCxt, yymsp[0].minor.yy348); yylhsminor.yy348 = createRawExprNodeExt(pCxt, &s, &e, createLogicConditionNode(pCxt, LOGIC_COND_TYPE_AND, releaseRawExprNode(pCxt, yymsp[-2].minor.yy348), releaseRawExprNode(pCxt, yymsp[0].minor.yy348))); } +#line 7334 "sql.c" yymsp[-2].minor.yy348 = yylhsminor.yy348; break; case 525: /* table_reference_list ::= table_reference_list NK_COMMA table_reference */ +#line 1031 "sql.y" { yylhsminor.yy348 = createJoinTableNode(pCxt, JOIN_TYPE_INNER, yymsp[-2].minor.yy348, yymsp[0].minor.yy348, NULL); } +#line 7340 "sql.c" yymsp[-2].minor.yy348 = yylhsminor.yy348; break; case 528: /* table_primary ::= table_name alias_opt */ +#line 1037 "sql.y" { yylhsminor.yy348 = createRealTableNode(pCxt, NULL, &yymsp[-1].minor.yy269, &yymsp[0].minor.yy269); } +#line 7346 "sql.c" yymsp[-1].minor.yy348 = yylhsminor.yy348; break; case 529: /* table_primary ::= db_name NK_DOT table_name alias_opt */ +#line 1038 "sql.y" { yylhsminor.yy348 = createRealTableNode(pCxt, &yymsp[-3].minor.yy269, &yymsp[-1].minor.yy269, &yymsp[0].minor.yy269); } +#line 7352 "sql.c" yymsp[-3].minor.yy348 = yylhsminor.yy348; break; case 530: /* table_primary ::= subquery alias_opt */ +#line 1039 "sql.y" { yylhsminor.yy348 = createTempTableNode(pCxt, releaseRawExprNode(pCxt, yymsp[-1].minor.yy348), &yymsp[0].minor.yy269); } +#line 7358 "sql.c" yymsp[-1].minor.yy348 = yylhsminor.yy348; break; case 532: /* alias_opt ::= */ +#line 1044 "sql.y" { yymsp[1].minor.yy269 = nil_token; } +#line 7364 "sql.c" break; case 534: /* alias_opt ::= AS table_alias */ +#line 1046 "sql.y" { yymsp[-1].minor.yy269 = yymsp[0].minor.yy269; } +#line 7369 "sql.c" break; case 535: /* parenthesized_joined_table ::= NK_LP joined_table NK_RP */ case 536: /* parenthesized_joined_table ::= NK_LP parenthesized_joined_table NK_RP */ yytestcase(yyruleno==536); +#line 1048 "sql.y" { yymsp[-2].minor.yy348 = yymsp[-1].minor.yy348; } +#line 7375 "sql.c" break; case 537: /* joined_table ::= table_reference join_type JOIN table_reference ON search_condition */ +#line 1053 "sql.y" { yylhsminor.yy348 = createJoinTableNode(pCxt, yymsp[-4].minor.yy184, yymsp[-5].minor.yy348, yymsp[-2].minor.yy348, yymsp[0].minor.yy348); } +#line 7380 "sql.c" yymsp[-5].minor.yy348 = yylhsminor.yy348; break; case 538: /* join_type ::= */ +#line 1057 "sql.y" { yymsp[1].minor.yy184 = JOIN_TYPE_INNER; } +#line 7386 "sql.c" break; case 539: /* join_type ::= INNER */ +#line 1058 "sql.y" { yymsp[0].minor.yy184 = JOIN_TYPE_INNER; } +#line 7391 "sql.c" break; case 540: /* query_specification ::= SELECT hint_list set_quantifier_opt tag_mode_opt select_list from_clause_opt where_clause_opt partition_by_clause_opt range_opt every_opt fill_opt twindow_clause_opt group_by_clause_opt having_clause_opt */ +#line 1064 "sql.y" { yymsp[-13].minor.yy348 = createSelectStmt(pCxt, yymsp[-11].minor.yy345, yymsp[-9].minor.yy860, yymsp[-8].minor.yy348, yymsp[-12].minor.yy860); yymsp[-13].minor.yy348 = setSelectStmtTagMode(pCxt, yymsp[-13].minor.yy348, yymsp[-10].minor.yy345); @@ -6298,145 +7404,224 @@ static YYACTIONTYPE yy_reduce( yymsp[-13].minor.yy348 = addEveryClause(pCxt, yymsp[-13].minor.yy348, yymsp[-4].minor.yy348); yymsp[-13].minor.yy348 = addFillClause(pCxt, yymsp[-13].minor.yy348, yymsp[-3].minor.yy348); } +#line 7407 "sql.c" break; case 541: /* hint_list ::= */ +#line 1079 "sql.y" { yymsp[1].minor.yy860 = createHintNodeList(pCxt, NULL); } +#line 7412 "sql.c" break; case 542: /* hint_list ::= NK_HINT */ +#line 1080 "sql.y" { yylhsminor.yy860 = createHintNodeList(pCxt, &yymsp[0].minor.yy0); } +#line 7417 "sql.c" yymsp[0].minor.yy860 = yylhsminor.yy860; break; case 547: /* set_quantifier_opt ::= ALL */ +#line 1091 "sql.y" { yymsp[0].minor.yy345 = false; } +#line 7423 "sql.c" break; case 550: /* select_item ::= NK_STAR */ +#line 1098 "sql.y" { yylhsminor.yy348 = createColumnNode(pCxt, NULL, &yymsp[0].minor.yy0); } +#line 7428 "sql.c" yymsp[0].minor.yy348 = yylhsminor.yy348; break; case 552: /* select_item ::= common_expression column_alias */ case 562: /* partition_item ::= expr_or_subquery column_alias */ yytestcase(yyruleno==562); +#line 1100 "sql.y" { yylhsminor.yy348 = setProjectionAlias(pCxt, releaseRawExprNode(pCxt, yymsp[-1].minor.yy348), &yymsp[0].minor.yy269); } +#line 7435 "sql.c" yymsp[-1].minor.yy348 = yylhsminor.yy348; break; case 553: /* select_item ::= common_expression AS column_alias */ case 563: /* partition_item ::= expr_or_subquery AS column_alias */ yytestcase(yyruleno==563); +#line 1101 "sql.y" { yylhsminor.yy348 = setProjectionAlias(pCxt, releaseRawExprNode(pCxt, yymsp[-2].minor.yy348), &yymsp[0].minor.yy269); } +#line 7442 "sql.c" yymsp[-2].minor.yy348 = yylhsminor.yy348; break; case 558: /* partition_by_clause_opt ::= PARTITION BY partition_list */ case 583: /* group_by_clause_opt ::= GROUP BY group_by_list */ yytestcase(yyruleno==583); case 603: /* order_by_clause_opt ::= ORDER BY sort_specification_list */ yytestcase(yyruleno==603); +#line 1110 "sql.y" { yymsp[-2].minor.yy860 = yymsp[0].minor.yy860; } +#line 7450 "sql.c" break; case 565: /* twindow_clause_opt ::= SESSION NK_LP column_reference NK_COMMA duration_literal NK_RP */ +#line 1123 "sql.y" { yymsp[-5].minor.yy348 = createSessionWindowNode(pCxt, releaseRawExprNode(pCxt, yymsp[-3].minor.yy348), releaseRawExprNode(pCxt, yymsp[-1].minor.yy348)); } +#line 7455 "sql.c" break; case 566: /* twindow_clause_opt ::= STATE_WINDOW NK_LP expr_or_subquery NK_RP */ +#line 1124 "sql.y" { yymsp[-3].minor.yy348 = createStateWindowNode(pCxt, releaseRawExprNode(pCxt, yymsp[-1].minor.yy348)); } +#line 7460 "sql.c" break; case 567: /* twindow_clause_opt ::= INTERVAL NK_LP duration_literal NK_RP sliding_opt fill_opt */ +#line 1126 "sql.y" { yymsp[-5].minor.yy348 = createIntervalWindowNode(pCxt, releaseRawExprNode(pCxt, yymsp[-3].minor.yy348), NULL, yymsp[-1].minor.yy348, yymsp[0].minor.yy348); } +#line 7465 "sql.c" break; case 568: /* twindow_clause_opt ::= INTERVAL NK_LP duration_literal NK_COMMA duration_literal NK_RP sliding_opt fill_opt */ +#line 1129 "sql.y" { yymsp[-7].minor.yy348 = createIntervalWindowNode(pCxt, releaseRawExprNode(pCxt, yymsp[-5].minor.yy348), releaseRawExprNode(pCxt, yymsp[-3].minor.yy348), yymsp[-1].minor.yy348, yymsp[0].minor.yy348); } +#line 7470 "sql.c" break; case 569: /* twindow_clause_opt ::= EVENT_WINDOW START WITH search_condition END WITH search_condition */ +#line 1131 "sql.y" { yymsp[-6].minor.yy348 = createEventWindowNode(pCxt, yymsp[-3].minor.yy348, yymsp[0].minor.yy348); } +#line 7475 "sql.c" break; case 573: /* fill_opt ::= FILL NK_LP fill_mode NK_RP */ +#line 1137 "sql.y" { yymsp[-3].minor.yy348 = createFillNode(pCxt, yymsp[-1].minor.yy758, NULL); } +#line 7480 "sql.c" break; case 574: /* fill_opt ::= FILL NK_LP VALUE NK_COMMA expression_list NK_RP */ +#line 1138 "sql.y" { yymsp[-5].minor.yy348 = createFillNode(pCxt, FILL_MODE_VALUE, createNodeListNode(pCxt, yymsp[-1].minor.yy860)); } +#line 7485 "sql.c" break; case 575: /* fill_opt ::= FILL NK_LP VALUE_F NK_COMMA expression_list NK_RP */ +#line 1139 "sql.y" { yymsp[-5].minor.yy348 = createFillNode(pCxt, FILL_MODE_VALUE_F, createNodeListNode(pCxt, yymsp[-1].minor.yy860)); } +#line 7490 "sql.c" break; case 576: /* fill_mode ::= NONE */ +#line 1143 "sql.y" { yymsp[0].minor.yy758 = FILL_MODE_NONE; } +#line 7495 "sql.c" break; case 577: /* fill_mode ::= PREV */ +#line 1144 "sql.y" { yymsp[0].minor.yy758 = FILL_MODE_PREV; } +#line 7500 "sql.c" break; case 578: /* fill_mode ::= NULL */ +#line 1145 "sql.y" { yymsp[0].minor.yy758 = FILL_MODE_NULL; } +#line 7505 "sql.c" break; case 579: /* fill_mode ::= NULL_F */ +#line 1146 "sql.y" { yymsp[0].minor.yy758 = FILL_MODE_NULL_F; } +#line 7510 "sql.c" break; case 580: /* fill_mode ::= LINEAR */ +#line 1147 "sql.y" { yymsp[0].minor.yy758 = FILL_MODE_LINEAR; } +#line 7515 "sql.c" break; case 581: /* fill_mode ::= NEXT */ +#line 1148 "sql.y" { yymsp[0].minor.yy758 = FILL_MODE_NEXT; } +#line 7520 "sql.c" break; case 584: /* group_by_list ::= expr_or_subquery */ +#line 1157 "sql.y" { yylhsminor.yy860 = createNodeList(pCxt, createGroupingSetNode(pCxt, releaseRawExprNode(pCxt, yymsp[0].minor.yy348))); } +#line 7525 "sql.c" yymsp[0].minor.yy860 = yylhsminor.yy860; break; case 585: /* group_by_list ::= group_by_list NK_COMMA expr_or_subquery */ +#line 1158 "sql.y" { yylhsminor.yy860 = addNodeToList(pCxt, yymsp[-2].minor.yy860, createGroupingSetNode(pCxt, releaseRawExprNode(pCxt, yymsp[0].minor.yy348))); } +#line 7531 "sql.c" yymsp[-2].minor.yy860 = yylhsminor.yy860; break; case 589: /* range_opt ::= RANGE NK_LP expr_or_subquery NK_COMMA expr_or_subquery NK_RP */ +#line 1165 "sql.y" { yymsp[-5].minor.yy348 = createInterpTimeRange(pCxt, releaseRawExprNode(pCxt, yymsp[-3].minor.yy348), releaseRawExprNode(pCxt, yymsp[-1].minor.yy348)); } +#line 7537 "sql.c" break; case 590: /* range_opt ::= RANGE NK_LP expr_or_subquery NK_RP */ +#line 1167 "sql.y" { yymsp[-3].minor.yy348 = createInterpTimePoint(pCxt, releaseRawExprNode(pCxt, yymsp[-1].minor.yy348)); } +#line 7542 "sql.c" break; case 593: /* query_expression ::= query_simple order_by_clause_opt slimit_clause_opt limit_clause_opt */ +#line 1174 "sql.y" { yylhsminor.yy348 = addOrderByClause(pCxt, yymsp[-3].minor.yy348, yymsp[-2].minor.yy860); yylhsminor.yy348 = addSlimitClause(pCxt, yylhsminor.yy348, yymsp[-1].minor.yy348); yylhsminor.yy348 = addLimitClause(pCxt, yylhsminor.yy348, yymsp[0].minor.yy348); } +#line 7551 "sql.c" yymsp[-3].minor.yy348 = yylhsminor.yy348; break; case 596: /* union_query_expression ::= query_simple_or_subquery UNION ALL query_simple_or_subquery */ +#line 1184 "sql.y" { yylhsminor.yy348 = createSetOperator(pCxt, SET_OP_TYPE_UNION_ALL, yymsp[-3].minor.yy348, yymsp[0].minor.yy348); } +#line 7557 "sql.c" yymsp[-3].minor.yy348 = yylhsminor.yy348; break; case 597: /* union_query_expression ::= query_simple_or_subquery UNION query_simple_or_subquery */ +#line 1186 "sql.y" { yylhsminor.yy348 = createSetOperator(pCxt, SET_OP_TYPE_UNION, yymsp[-2].minor.yy348, yymsp[0].minor.yy348); } +#line 7563 "sql.c" yymsp[-2].minor.yy348 = yylhsminor.yy348; break; case 605: /* slimit_clause_opt ::= SLIMIT NK_INTEGER */ case 609: /* limit_clause_opt ::= LIMIT NK_INTEGER */ yytestcase(yyruleno==609); +#line 1200 "sql.y" { yymsp[-1].minor.yy348 = createLimitNode(pCxt, &yymsp[0].minor.yy0, NULL); } +#line 7570 "sql.c" break; case 606: /* slimit_clause_opt ::= SLIMIT NK_INTEGER SOFFSET NK_INTEGER */ case 610: /* limit_clause_opt ::= LIMIT NK_INTEGER OFFSET NK_INTEGER */ yytestcase(yyruleno==610); +#line 1201 "sql.y" { yymsp[-3].minor.yy348 = createLimitNode(pCxt, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0); } +#line 7576 "sql.c" break; case 607: /* slimit_clause_opt ::= SLIMIT NK_INTEGER NK_COMMA NK_INTEGER */ case 611: /* limit_clause_opt ::= LIMIT NK_INTEGER NK_COMMA NK_INTEGER */ yytestcase(yyruleno==611); +#line 1202 "sql.y" { yymsp[-3].minor.yy348 = createLimitNode(pCxt, &yymsp[0].minor.yy0, &yymsp[-2].minor.yy0); } +#line 7582 "sql.c" break; case 612: /* subquery ::= NK_LP query_expression NK_RP */ +#line 1210 "sql.y" { yylhsminor.yy348 = createRawExprNodeExt(pCxt, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0, yymsp[-1].minor.yy348); } +#line 7587 "sql.c" yymsp[-2].minor.yy348 = yylhsminor.yy348; break; case 617: /* sort_specification ::= expr_or_subquery ordering_specification_opt null_ordering_opt */ +#line 1224 "sql.y" { yylhsminor.yy348 = createOrderByExprNode(pCxt, releaseRawExprNode(pCxt, yymsp[-2].minor.yy348), yymsp[-1].minor.yy870, yymsp[0].minor.yy841); } +#line 7593 "sql.c" yymsp[-2].minor.yy348 = yylhsminor.yy348; break; case 618: /* ordering_specification_opt ::= */ +#line 1228 "sql.y" { yymsp[1].minor.yy870 = ORDER_ASC; } +#line 7599 "sql.c" break; case 619: /* ordering_specification_opt ::= ASC */ +#line 1229 "sql.y" { yymsp[0].minor.yy870 = ORDER_ASC; } +#line 7604 "sql.c" break; case 620: /* ordering_specification_opt ::= DESC */ +#line 1230 "sql.y" { yymsp[0].minor.yy870 = ORDER_DESC; } +#line 7609 "sql.c" break; case 621: /* null_ordering_opt ::= */ +#line 1234 "sql.y" { yymsp[1].minor.yy841 = NULL_ORDER_DEFAULT; } +#line 7614 "sql.c" break; case 622: /* null_ordering_opt ::= NULLS FIRST */ +#line 1235 "sql.y" { yymsp[-1].minor.yy841 = NULL_ORDER_FIRST; } +#line 7619 "sql.c" break; case 623: /* null_ordering_opt ::= NULLS LAST */ +#line 1236 "sql.y" { yymsp[-1].minor.yy841 = NULL_ORDER_LAST; } +#line 7624 "sql.c" break; default: break; @@ -6498,6 +7683,7 @@ static void yy_syntax_error( ParseCTX_FETCH #define TOKEN yyminor /************ Begin %syntax_error code ****************************************/ +#line 29 "sql.y" if (TSDB_CODE_SUCCESS == pCxt->errCode) { if(TOKEN.z) { @@ -6508,6 +7694,7 @@ static void yy_syntax_error( } else if (TSDB_CODE_PAR_DB_NOT_SPECIFIED == pCxt->errCode && TK_NK_FLOAT == TOKEN.type) { pCxt->errCode = generateSyntaxErrMsg(&pCxt->msgBuf, TSDB_CODE_PAR_SYNTAX_ERROR, TOKEN.z); } +#line 7697 "sql.c" /************ End %syntax_error code ******************************************/ ParseARG_STORE /* Suppress warning about unused %extra_argument variable */ ParseCTX_STORE @@ -6593,12 +7780,56 @@ void Parse( } #endif - do{ + while(1){ /* Exit by "break" */ + assert( yypParser->yytos>=yypParser->yystack ); assert( yyact==yypParser->yytos->stateno ); yyact = yy_find_shift_action((YYCODETYPE)yymajor,yyact); if( yyact >= YY_MIN_REDUCE ){ - yyact = yy_reduce(yypParser,yyact-YY_MIN_REDUCE,yymajor, - yyminor ParseCTX_PARAM); + unsigned int yyruleno = yyact - YY_MIN_REDUCE; /* Reduce by this rule */ +#ifndef NDEBUG + assert( yyruleno<(int)(sizeof(yyRuleName)/sizeof(yyRuleName[0])) ); + if( yyTraceFILE ){ + int yysize = yyRuleInfoNRhs[yyruleno]; + if( yysize ){ + fprintf(yyTraceFILE, "%sReduce %d [%s]%s, pop back to state %d.\n", + yyTracePrompt, + yyruleno, yyRuleName[yyruleno], + yyrulenoyytos[yysize].stateno); + }else{ + fprintf(yyTraceFILE, "%sReduce %d [%s]%s.\n", + yyTracePrompt, yyruleno, yyRuleName[yyruleno], + yyrulenoyytos - yypParser->yystack)>yypParser->yyhwm ){ + yypParser->yyhwm++; + assert( yypParser->yyhwm == + (int)(yypParser->yytos - yypParser->yystack)); + } +#endif +#if YYSTACKDEPTH>0 + if( yypParser->yytos>=yypParser->yystackEnd ){ + yyStackOverflow(yypParser); + break; + } +#else + if( yypParser->yytos>=&yypParser->yystack[yypParser->yystksz-1] ){ + if( yyGrowStack(yypParser) ){ + yyStackOverflow(yypParser); + break; + } + } +#endif + } + yyact = yy_reduce(yypParser,yyruleno,yymajor,yyminor ParseCTX_PARAM); }else if( yyact <= YY_MAX_SHIFTREDUCE ){ yy_shift(yypParser,yyact,(YYCODETYPE)yymajor,yyminor); #ifndef YYNOERRORRECOVERY @@ -6654,14 +7885,13 @@ void Parse( yy_destructor(yypParser, (YYCODETYPE)yymajor, &yyminorunion); yymajor = YYNOCODE; }else{ - while( yypParser->yytos >= yypParser->yystack - && (yyact = yy_find_reduce_action( - yypParser->yytos->stateno, - YYERRORSYMBOL)) > YY_MAX_SHIFTREDUCE - ){ + while( yypParser->yytos > yypParser->yystack ){ + yyact = yy_find_reduce_action(yypParser->yytos->stateno, + YYERRORSYMBOL); + if( yyact<=YY_MAX_SHIFTREDUCE ) break; yy_pop_parser_stack(yypParser); } - if( yypParser->yytos < yypParser->yystack || yymajor==0 ){ + if( yypParser->yytos <= yypParser->yystack || yymajor==0 ){ yy_destructor(yypParser,(YYCODETYPE)yymajor,&yyminorunion); yy_parse_failed(yypParser); #ifndef YYNOERRORRECOVERY @@ -6711,7 +7941,7 @@ void Parse( break; #endif } - }while( yypParser->yytos>yypParser->yystack ); + } #ifndef NDEBUG if( yyTraceFILE ){ yyStackEntry *i; diff --git a/tests/develop-test/2-query/pseudo_column.py b/tests/develop-test/2-query/pseudo_column.py new file mode 100644 index 0000000000..1d94df4cff --- /dev/null +++ b/tests/develop-test/2-query/pseudo_column.py @@ -0,0 +1,97 @@ +import sys +from util.log import * +from util.cases import * +from util.sql import * +from util.dnodes import tdDnodes +from math import inf + +class TDTestCase: + def caseDescription(self): + ''' + case1: [TS-3904/TS-3005] pseudo column test case + ''' + return + + def init(self, conn, logSql, replicaVer=1): + tdLog.debug("start to execute %s" % __file__) + tdSql.init(conn.cursor(), True) + self._conn = conn + + def restartTaosd(self, index=1, dbname="db"): + tdDnodes.stop(index) + tdDnodes.startWithoutSleep(index) + tdSql.execute(f"use pseudo_col") + + def run(self): + print("running {}".format(__file__)) + tdSql.execute("drop database if exists pseudo_col") + tdSql.execute("create database if not exists pseudo_col") + tdSql.execute('use pseudo_col') + tdSql.execute('create table st(ts timestamp, f int) tags (t int)') + tdSql.execute("insert into ct1 using st tags(1) values('2023-10-10 14:10:00', 1)('2023-10-10 14:10:01', 11)") + tdSql.execute("insert into ct2 using st tags(2) values('2023-10-10 14:10:02', 2)('2023-10-10 14:10:03', 22)") + + tdSql.query('select tbname from (select tbname from st) order by tbname') + tdSql.checkCols(1) + tdSql.checkRows(4) + tdSql.checkData(0, 0, 'ct1') + tdSql.checkData(1, 0, 'ct1') + tdSql.checkData(2, 0, 'ct2') + tdSql.checkData(2, 0, 'ct2') + + tdSql.query('select `tbname` from (select tbname from st) order by tbname') + tdSql.checkCols(1) + tdSql.checkRows(4) + tdSql.checkData(0, 0, 'ct1') + tdSql.checkData(1, 0, 'ct1') + tdSql.checkData(2, 0, 'ct2') + tdSql.checkData(2, 0, 'ct2') + + tdSql.query('select `tbname` from (select tbname from st) order by tbname') + tdSql.checkCols(1) + tdSql.checkRows(4) + tdSql.checkData(0, 0, 'ct1') + tdSql.checkData(1, 0, 'ct1') + tdSql.checkData(2, 0, 'ct2') + tdSql.checkData(2, 0, 'ct2') + + tdSql.query('select tbname from (select st.tbname from st) order by tbname') + tdSql.checkCols(1) + tdSql.checkRows(4) + tdSql.checkData(0, 0, 'ct1') + tdSql.checkData(1, 0, 'ct1') + tdSql.checkData(2, 0, 'ct2') + tdSql.checkData(2, 0, 'ct2') + + tdSql.query('select * from (select tbname, avg(f) from st partition by tbname) a partition by a.tbname order by a.tbname'); + tdSql.checkRows(2) + tdSql.checkCols(2) + tdSql.checkData(0, 0, 'ct1'); + tdSql.checkData(0, 1, 6.0); + tdSql.checkData(1, 0, 'ct2'); + tdSql.checkData(1, 1, 12.0); + + tdSql.error('select tbname from (select * from st)') + tdSql.error('select st.tbname from (select st.tbname from st)') + tdSql.error('select `st.tbname` from (select st.tbname from st) order by tbname') + + tdSql.query('select _wstart, _wend, _wduration, c from (select _wstart, _wend, _wduration, count(*) as c from st interval(1s)) order by _wstart') + tdSql.checkCols(4) + tdSql.checkRows(4) + tdSql.checkData(0, 1, '2023-10-10 14:10:01') + tdSql.checkData(0, 3, 1) + + tdSql.error('select _wstart, _wend, _wduration, c from (select count(*) as c from st) order by _wstart') + + tdSql.query("select _irowts, if2 from (select _irowts, interp(f) as if2 from st range('2023-10-10 14:10:00', '2023-10-10 14:10:10') every(1s) fill(value, 8))") + tdSql.checkRows(11) + tdSql.checkData(9, 1, 8); + tdSql.execute('drop database pseudo_col') + + tdSql.error("select _irowts, if2 from (select interp(f) as if2 from st range('2023-10-10 14:10:00', '2023-10-10 14:10:10') every(1s) fill(value, 8))") + def stop(self): + tdSql.close() + tdLog.success("%s successfully executed" % __file__) + +tdCases.addWindows(__file__, TDTestCase()) +tdCases.addLinux(__file__, TDTestCase()) diff --git a/tests/parallel_test/cases.task b/tests/parallel_test/cases.task index 85cb8306cb..71f38270b9 100644 --- a/tests/parallel_test/cases.task +++ b/tests/parallel_test/cases.task @@ -1270,6 +1270,7 @@ #develop test ,,n,develop-test,python3 ./test.py -f 2-query/table_count_scan.py +,,n,develop-test,python3 ./test.py -f 2-query/pseudo_column.py ,,n,develop-test,python3 ./test.py -f 2-query/ts-range.py ,,n,develop-test,python3 ./test.py -f 2-query/tag_scan.py ,,n,develop-test,python3 ./test.py -f 2-query/show_create_db.py