From a0d3fa46c255dca3dcf1c2f522e068b94871e7b6 Mon Sep 17 00:00:00 2001 From: Haojun Liao Date: Wed, 10 Nov 2021 23:20:01 +0800 Subject: [PATCH] [td-10564] refactor code and fix bug in parse sql. --- include/libs/function/function.h | 3 +- source/libs/parser/inc/astGenerator.h | 38 +- source/libs/parser/inc/sql.y | 6 +- source/libs/parser/src/astGenerator.c | 60 +- source/libs/parser/src/astValidate.c | 32 +- source/libs/parser/src/parser.c | 18 +- source/libs/parser/src/queryInfoUtil.c | 2 +- source/libs/parser/src/sql.c | 1215 +++++++++++---------- source/libs/parser/test/parserTests.cpp | 54 +- source/libs/parser/test/plannerTest.cpp | 32 +- source/libs/parser/test/tokenizerTest.cpp | 6 +- src/client/src/tscSQLParser.c | 30 +- src/query/inc/qSqlparser.h | 10 +- src/query/src/qSqlParser.c | 15 +- 14 files changed, 779 insertions(+), 742 deletions(-) diff --git a/include/libs/function/function.h b/include/libs/function/function.h index f7d1fb9e45..92d8c972f5 100644 --- a/include/libs/function/function.h +++ b/include/libs/function/function.h @@ -235,11 +235,12 @@ typedef struct SMultiFunctionsDesc { bool hasFilter; bool onlyTagQuery; bool orderProjectQuery; - bool stateWindow; bool globalMerge; bool multigroupResult; bool blockDistribution; + bool stateWindow; bool timewindow; + bool sessionWindow; bool topbotQuery; bool interpQuery; bool distinct; diff --git a/source/libs/parser/inc/astGenerator.h b/source/libs/parser/inc/astGenerator.h index 829112baf3..863c307f34 100644 --- a/source/libs/parser/inc/astGenerator.h +++ b/source/libs/parser/inc/astGenerator.h @@ -37,9 +37,14 @@ enum SQL_NODE_TYPE { SQL_NODE_EXPR = 4, }; -enum SQL_NODE_FROM_TYPE { - SQL_NODE_FROM_SUBQUERY = 1, - SQL_NODE_FROM_TABLELIST = 2, +enum SQL_FROM_NODE_TYPE { + SQL_FROM_NODE_SUBQUERY = 1, + SQL_FROM_NODE_TABLES = 2, +}; + +enum SQL_UNION_TYPE { + SQL_TYPE_UNIONALL = 1, + SQL_TYPE_UNION = 2, }; extern char tTokenTypeSwitcher[13]; @@ -79,8 +84,8 @@ typedef struct SWindowStateVal { struct SRelationInfo; typedef struct SSqlNode { - struct SArray *pSelNodeList; // select clause struct SRelationInfo *from; // from clause SArray + struct SArray *pSelNodeList; // select clause struct tSqlExpr *pWhere; // where clause [optional] SArray *pGroupby; // groupby clause, only for tags[optional], SArray SArray *pSortOrder; // orderby [optional], SArray @@ -95,18 +100,23 @@ typedef struct SSqlNode { struct tSqlExpr *pHaving; // having clause [optional] } SSqlNode; -typedef struct SRelElementPair { +typedef struct SSubclause { + int32_t unionType; + SArray *node; +} SSubclause; + +typedef struct SRelElement { union { - SToken tableName; - SArray *pSubquery; + SToken tableName; + SSubclause *pSubquery; }; SToken aliasName; -} SRelElementPair; +} SRelElement; typedef struct SRelationInfo { int32_t type; // nested query|table name list - SArray *list; // SArray + SArray *list; // SArray } SRelationInfo; typedef struct SCreatedTableInfo { @@ -216,7 +226,7 @@ typedef struct SMiscInfo { typedef struct SSqlInfo { int32_t type; bool valid; - SArray *list; // todo refactor + SSubclause sub; char msg[256]; SArray *funcs; union { @@ -257,7 +267,7 @@ SArray *tListItemAppendToken(SArray *pList, SToken *pAliasToken, uint8_t sortOrd SRelationInfo *setTableNameList(SRelationInfo *pRelationInfo, SToken *pName, SToken *pAlias); void * destroyRelationInfo(SRelationInfo *pFromInfo); -SRelationInfo *addSubquery(SRelationInfo *pRelationInfo, SArray *pSub, SToken *pAlias); +SRelationInfo *addSubquery(SRelationInfo *pRelationInfo, SSubclause *pSub, SToken *pAlias); // sql expr leaf node tSqlExpr *tSqlExprCreateIdValue(SToken *pToken, int32_t optrType); @@ -285,13 +295,13 @@ SAlterTableInfo * tSetAlterTableInfo(SToken *pTableName, SArray *pCols, SArray * SCreatedTableInfo createNewChildTableInfo(SToken *pTableName, SArray *pTagNames, SArray *pTagVals, SToken *pToken, SToken *igExists); -void destroyAllSqlNode(SArray *pSqlNode); +void destroyAllSqlNode(struct SSubclause *pSqlNode); void destroySqlNode(SSqlNode *pSql); void freeCreateTableInfo(void* p); SSqlInfo *setSqlInfo(SSqlInfo *pInfo, void *pSqlExprInfo, SToken *pTableName, int32_t type); -SArray *setSubclause(SArray *pList, void *pSqlNode); -SArray *appendSelectClause(SArray *pList, void *pSubclause); +SSubclause* setSubclause(SSubclause* sub, void *pSqlNode); +SSubclause* appendSelectClause(SSubclause *sub, int32_t unionType, void *pSubclause); void setCreatedTableName(SSqlInfo *pInfo, SToken *pTableNameToken, SToken *pIfNotExists); void* destroyCreateTableSql(SCreateTableSql* pCreate); diff --git a/source/libs/parser/inc/sql.y b/source/libs/parser/inc/sql.y index a7577c4e4b..04fb3beb54 100644 --- a/source/libs/parser/inc/sql.y +++ b/source/libs/parser/inc/sql.y @@ -487,11 +487,11 @@ select(A) ::= SELECT(T) selcollist(W) from(X) where_opt(Y) interval_option(K) sl select(A) ::= LP select(B) RP. {A = B;} -%type union {SArray*} +%type union {SSubclause*} %destructor union {destroyAllSqlNode($$);} union(Y) ::= select(X). { Y = setSubclause(NULL, X); } -union(Y) ::= union(Z) UNION ALL select(X). { Y = appendSelectClause(Z, X); } - +union(Y) ::= union(Z) UNION ALL select(X). { Y = appendSelectClause(Z, SQL_TYPE_UNIONALL, X); } +union(Y) ::= union(Z) UNION select(X). { Y = appendSelectClause(Z, SQL_TYPE_UNION, X); } cmd ::= union(X). { setSqlInfo(pInfo, X, NULL, TSDB_SQL_SELECT); } // Support for the SQL exprssion without from & where subclauses, e.g., diff --git a/source/libs/parser/src/astGenerator.c b/source/libs/parser/src/astGenerator.c index c574f75d07..53d05c87b3 100644 --- a/source/libs/parser/src/astGenerator.c +++ b/source/libs/parser/src/astGenerator.c @@ -72,11 +72,11 @@ SArray *tListItemAppendToken(SArray *pList, SToken *pAliasToken, uint8_t sortOrd SRelationInfo *setTableNameList(SRelationInfo *pRelationInfo, SToken *pName, SToken *pAlias) { if (pRelationInfo == NULL) { pRelationInfo = calloc(1, sizeof(SRelationInfo)); - pRelationInfo->list = taosArrayInit(4, sizeof(SRelElementPair)); + pRelationInfo->list = taosArrayInit(4, sizeof(SRelElement)); } - pRelationInfo->type = SQL_NODE_FROM_TABLELIST; - SRelElementPair p = {.tableName = *pName}; + pRelationInfo->type = SQL_FROM_NODE_TABLES; + SRelElement p = {.tableName = *pName}; if (pAlias != NULL) { p.aliasName = *pAlias; } else { @@ -92,12 +92,12 @@ void *destroyRelationInfo(SRelationInfo *pRelationInfo) { return NULL; } - if (pRelationInfo->type == SQL_NODE_FROM_TABLELIST) { + if (pRelationInfo->type == SQL_FROM_NODE_TABLES) { taosArrayDestroy(pRelationInfo->list); } else { size_t size = taosArrayGetSize(pRelationInfo->list); for(int32_t i = 0; i < size; ++i) { - SArray* pa = taosArrayGetP(pRelationInfo->list, i); + SSubclause* pa = taosArrayGetP(pRelationInfo->list, i); destroyAllSqlNode(pa); } taosArrayDestroy(pRelationInfo->list); @@ -107,15 +107,15 @@ void *destroyRelationInfo(SRelationInfo *pRelationInfo) { return NULL; } -SRelationInfo *addSubquery(SRelationInfo *pRelationInfo, SArray *pSub, SToken *pAlias) { +SRelationInfo *addSubquery(SRelationInfo *pRelationInfo, SSubclause *pSub, SToken *pAlias) { if (pRelationInfo == NULL) { pRelationInfo = calloc(1, sizeof(SRelationInfo)); - pRelationInfo->list = taosArrayInit(4, sizeof(SRelElementPair)); + pRelationInfo->list = taosArrayInit(4, sizeof(SRelElement)); } - pRelationInfo->type = SQL_NODE_FROM_SUBQUERY; + pRelationInfo->type = SQL_FROM_NODE_SUBQUERY; - SRelElementPair p = {.pSubquery = pSub}; + SRelElement p = {.pSubquery = pSub}; if (pAlias != NULL) { p.aliasName = *pAlias; } else { @@ -641,18 +641,18 @@ SCreatedTableInfo createNewChildTableInfo(SToken *pTableName, SArray *pTagNames, return info; } -void destroyAllSqlNode(SArray *pList) { - if (pList == NULL) { +void destroyAllSqlNode(struct SSubclause *pSub) { + if (pSub->node == NULL) { return; } - size_t size = taosArrayGetSize(pList); + size_t size = taosArrayGetSize(pSub->node); for(int32_t i = 0; i < size; ++i) { - SSqlNode *pNode = taosArrayGetP(pList, i); + SSqlNode *pNode = taosArrayGetP(pSub->node, i); destroySqlNode(pNode); } - taosArrayDestroy(pList); + taosArrayDestroy(pSub->node); } static void freeItem(void *pItem) { @@ -698,7 +698,8 @@ SSqlInfo* setSqlInfo(SSqlInfo *pInfo, void *pSqlExprInfo, SToken *pTableName, in pInfo->type = type; if (type == TSDB_SQL_SELECT) { - pInfo->list = (SArray*) pSqlExprInfo; + pInfo->sub = *(SSubclause*) pSqlExprInfo; + tfree(pSqlExprInfo); } else { pInfo->pCreateTableInfo = pSqlExprInfo; } @@ -710,18 +711,25 @@ SSqlInfo* setSqlInfo(SSqlInfo *pInfo, void *pSqlExprInfo, SToken *pTableName, in return pInfo; } -SArray* setSubclause(SArray* pList, void *pSqlNode) { - if (pList == NULL) { - pList = taosArrayInit(1, POINTER_BYTES); +SSubclause* setSubclause(SSubclause* pSub, void *pSqlNode) { + if (pSub == NULL) { + pSub = malloc(sizeof(SSubclause)); + + pSub->unionType = SQL_TYPE_UNIONALL; + pSub->node = taosArrayInit(1, POINTER_BYTES); } - taosArrayPush(pList, &pSqlNode); - return pList; + taosArrayPush(pSub->node, &pSqlNode); + return pSub; } -SArray* appendSelectClause(SArray *pList, void *pSubclause) { - taosArrayPush(pList, &pSubclause); - return pList; +SSubclause* appendSelectClause(SSubclause *pSub, int32_t type, void *pSubclause) { + taosArrayPush(pSub->node, &pSubclause); + if (type == SQL_TYPE_UNION) { + pSub->unionType = type; + } + + return pSub; } void setCreatedTableName(SSqlInfo *pInfo, SToken *pTableNameToken, SToken *pIfNotExists) { @@ -776,7 +784,7 @@ void destroySqlInfo(SSqlInfo *pInfo) { taosArrayDestroy(pInfo->funcs); if (pInfo->type == TSDB_SQL_SELECT) { - destroyAllSqlNode(pInfo->list); + destroyAllSqlNode(&pInfo->sub); } else if (pInfo->type == TSDB_SQL_CREATE_TABLE) { pInfo->pCreateTableInfo = destroyCreateTableSql(pInfo->pCreateTableInfo); } else if (pInfo->type == TSDB_SQL_ALTER_TABLE) { @@ -785,7 +793,7 @@ void destroySqlInfo(SSqlInfo *pInfo) { tfree(pInfo->pAlterInfo->tagData.data); tfree(pInfo->pAlterInfo); } else if (pInfo->type == TSDB_SQL_COMPACT_VNODE) { - tSqlExprListDestroy(pInfo->list); + tSqlExprListDestroy(pInfo->sub.node); } else { if (pInfo->pMiscInfo != NULL) { taosArrayDestroy(pInfo->pMiscInfo->a); @@ -935,7 +943,7 @@ void setAlterUserSql(SSqlInfo *pInfo, int16_t type, SToken *pName, SToken* pPwd, void setCompactVnodeSql(SSqlInfo *pInfo, int32_t type, SArray *pParam) { pInfo->type = type; - pInfo->list = pParam; + pInfo->sub.node = pParam; } void setDefaultCreateDbOption(SCreateDbInfo *pDBInfo) { diff --git a/source/libs/parser/src/astValidate.c b/source/libs/parser/src/astValidate.c index 46821a6e2b..8e0f59b07e 100644 --- a/source/libs/parser/src/astValidate.c +++ b/source/libs/parser/src/astValidate.c @@ -268,11 +268,11 @@ void destroyQueryInfo(SQueryStmtInfo* pQueryInfo) { } static int32_t doValidateSubquery(SSqlNode* pSqlNode, int32_t index, SQueryStmtInfo* pQueryInfo, SMsgBuf* pMsgBuf) { - SRelElementPair* subInfo = taosArrayGet(pSqlNode->from->list, index); + SRelElement* subInfo = taosArrayGet(pSqlNode->from->list, index); // union all is not support currently - SSqlNode* p = taosArrayGetP(subInfo->pSubquery, 0); - if (taosArrayGetSize(subInfo->pSubquery) >= 2) { + SSqlNode* p = taosArrayGetP(subInfo->pSubquery->node, 0); + if (taosArrayGetSize(subInfo->pSubquery->node) >= 2) { return buildInvalidOperationMsg(pMsgBuf, "not support union in subquery"); } @@ -804,6 +804,7 @@ int32_t validateSessionNode(SQueryStmtInfo *pQueryInfo, SSessionWindowVal* pSess SSchema* pSchema = getOneColumnSchema(pTableMeta, index.columnIndex); pQueryInfo->sessionWindow.col = createColumn(pTableMetaInfo->pTableMeta->uid, pTableMetaInfo->aliasName, index.type, pSchema); + pQueryInfo->info.sessionWindow = true; return TSDB_CODE_SUCCESS; } @@ -1401,13 +1402,13 @@ int32_t validateSqlNode(SSqlNode* pSqlNode, SQueryStmtInfo* pQueryInfo, SMsgBuf* // return doLocalQueryProcess(pCmd, pQueryInfo, pSqlNode); } - if (pSqlNode->from->type == SQL_NODE_FROM_SUBQUERY) { + if (pSqlNode->from->type == SQL_FROM_NODE_SUBQUERY) { pQueryInfo->numOfTables = 0; // parse the subquery in the first place int32_t numOfSub = (int32_t)taosArrayGetSize(pSqlNode->from->list); for (int32_t i = 0; i < numOfSub; ++i) { - SRelElementPair* subInfo = taosArrayGet(pSqlNode->from->list, i); + SRelElement* subInfo = taosArrayGet(pSqlNode->from->list, i); code = doValidateSubquery(pSqlNode, i, pQueryInfo, pMsgBuf); if (code != TSDB_CODE_SUCCESS) { return code; @@ -1574,7 +1575,8 @@ int32_t checkForInvalidExpr(SQueryStmtInfo* pQueryInfo, SMsgBuf* pMsgBuf) { const char* msg5 = "scalar function can not be used in time window query"; const char* msg6 = "not support distinct mixed with join"; const char* msg7 = "not support distinct mixed with groupby"; - const char* msg8 = "_block_dist not support subquery, only support stable/table"; + const char* msg8 = "block_dist not support subquery, only support stable/table"; + const char* msg9 = "time window aggregate can not be mixed up with group by column"; if (pQueryInfo->info.topbotQuery) { @@ -1656,6 +1658,15 @@ int32_t checkForInvalidExpr(SQueryStmtInfo* pQueryInfo, SMsgBuf* pMsgBuf) { * nested subquery not support block_dist query * select block_dist() from (select * from table_name) */ + + /* + * 8. invalid sql: + * select count(*) from table_name [interval(10s)|session(ts, 10s)|state_window(col_name)] group by col_name + */ + if ((pQueryInfo->info.timewindow || pQueryInfo->info.stateWindow || pQueryInfo->info.sessionWindow) && + pQueryInfo->info.groupbyColumn) { + return buildInvalidOperationMsg(pMsgBuf, msg9); + } } static int32_t resColId = 5000; @@ -3790,7 +3801,7 @@ int32_t qParserValidateSqlNode(struct SCatalog* pCatalog, SSqlInfo* pInfo, SQuer tscTrace("0x%"PRIx64" start to parse the %dth subclause, total:%"PRIzu, pSql->self, i, size); - if (size > 1 && pSqlNode->from && pSqlNode->from->type == SQL_NODE_FROM_SUBQUERY) { + if (size > 1 && pSqlNode->from && pSqlNode->from->type == SQL_FROM_NODE_SUBQUERY) { return setInvalidOperatorMsg(pMsgBuf, msg1); } @@ -3895,9 +3906,9 @@ int32_t qParserValidateSqlNode(struct SCatalog* pCatalog, SSqlInfo* pInfo, SQuer SMsgBuf buf = {.buf = msgBuf, .len = msgBufLen}; - size_t len = taosArrayGetSize(pInfo->list); + size_t len = taosArrayGetSize(pInfo->sub.node); for(int32_t i = 0; i < len; ++i) { - SSqlNode* p = taosArrayGetP(pInfo->list, i); + SSqlNode* p = taosArrayGetP(pInfo->sub.node, i); code = evaluateSqlNode(p, pTableMeta->tableInfo.precision, &buf); if (code != TSDB_CODE_SUCCESS) { return code; @@ -3905,7 +3916,7 @@ int32_t qParserValidateSqlNode(struct SCatalog* pCatalog, SSqlInfo* pInfo, SQuer } for(int32_t i = 0; i < len; ++i) { - SSqlNode* p = taosArrayGetP(pInfo->list, i); + SSqlNode* p = taosArrayGetP(pInfo->sub.node, i); validateSqlNode(p, pQueryInfo, &buf); } @@ -3916,6 +3927,5 @@ int32_t qParserValidateSqlNode(struct SCatalog* pCatalog, SSqlInfo* pInfo, SQuer return code; } - // convert the sqlnode into queryinfo return code; } diff --git a/source/libs/parser/src/parser.c b/source/libs/parser/src/parser.c index 0585dc8905..29561f7f54 100644 --- a/source/libs/parser/src/parser.c +++ b/source/libs/parser/src/parser.c @@ -82,12 +82,12 @@ static int32_t getTableNameFromSubquery(SSqlNode* pSqlNode, SArray* tableNameLis int32_t numOfSub = (int32_t)taosArrayGetSize(pSqlNode->from->list); for (int32_t j = 0; j < numOfSub; ++j) { - SRelElementPair* sub = taosArrayGet(pSqlNode->from->list, j); + SRelElement* sub = taosArrayGet(pSqlNode->from->list, j); - int32_t num = (int32_t)taosArrayGetSize(sub->pSubquery); + int32_t num = (int32_t)taosArrayGetSize(sub->pSubquery->node); for (int32_t i = 0; i < num; ++i) { - SSqlNode* p = taosArrayGetP(sub->pSubquery, i); - if (p->from->type == SQL_NODE_FROM_TABLELIST) { + SSqlNode* p = taosArrayGetP(sub->pSubquery->node, i); + if (p->from->type == SQL_FROM_NODE_TABLES) { int32_t code = getTableNameFromSqlNode(p, tableNameList, pMsgBuf); if (code != TSDB_CODE_SUCCESS) { return code; @@ -105,10 +105,10 @@ int32_t getTableNameFromSqlNode(SSqlNode* pSqlNode, SArray* tableNameList, SMsgB const char* msg1 = "invalid table name"; int32_t numOfTables = (int32_t) taosArrayGetSize(pSqlNode->from->list); - assert(pSqlNode->from->type == SQL_NODE_FROM_TABLELIST); + assert(pSqlNode->from->type == SQL_FROM_NODE_TABLES); for(int32_t j = 0; j < numOfTables; ++j) { - SRelElementPair* item = taosArrayGet(pSqlNode->from->list, j); + SRelElement* item = taosArrayGet(pSqlNode->from->list, j); SToken* t = &item->tableName; if (t->type == TK_INTEGER || t->type == TK_FLOAT || t->type == TK_STRING) { @@ -138,15 +138,15 @@ int32_t qParserExtractRequestedMetaInfo(const SSqlInfo* pSqlInfo, SMetaReq* pMet pMetaInfo->pTableName = taosArrayInit(4, sizeof(SName)); pMetaInfo->pUdf = taosArrayInit(4, POINTER_BYTES); - size_t size = taosArrayGetSize(pSqlInfo->list); + size_t size = taosArrayGetSize(pSqlInfo->sub.node); for (int32_t i = 0; i < size; ++i) { - SSqlNode* pSqlNode = taosArrayGetP(pSqlInfo->list, i); + SSqlNode* pSqlNode = taosArrayGetP(pSqlInfo->sub.node, i); if (pSqlNode->from == NULL) { return buildInvalidOperationMsg(&msgBuf, "invalid from clause"); } // load the table meta in the FROM clause - if (pSqlNode->from->type == SQL_NODE_FROM_TABLELIST) { + if (pSqlNode->from->type == SQL_FROM_NODE_TABLES) { code = getTableNameFromSqlNode(pSqlNode, pMetaInfo->pTableName, &msgBuf); if (code != TSDB_CODE_SUCCESS) { return code; diff --git a/source/libs/parser/src/queryInfoUtil.c b/source/libs/parser/src/queryInfoUtil.c index 91017ec631..04922ce5ad 100644 --- a/source/libs/parser/src/queryInfoUtil.c +++ b/source/libs/parser/src/queryInfoUtil.c @@ -182,7 +182,7 @@ void updateExprInfo(SExprInfo* pExprInfo, int16_t functionId, int32_t colId, int SExprInfo* getExprInfo(SQueryStmtInfo* pQueryInfo, int32_t index) { assert(pQueryInfo != NULL && pQueryInfo->exprList && index >= 0); - return taosArrayGetP(getCurrentExprList(pQueryInfo->exprList), index); + return taosArrayGetP(getCurrentExprList(pQueryInfo), index); } void destroyExprInfo(SExprInfo* pExprInfo) { diff --git a/source/libs/parser/src/sql.c b/source/libs/parser/src/sql.c index 2b12be2a17..7158708989 100644 --- a/source/libs/parser/src/sql.c +++ b/source/libs/parser/src/sql.c @@ -34,7 +34,6 @@ #include "tmsgtype.h" #include "ttoken.h" #include "ttokendef.h" -//#include "tutil.h" #include "tvariant.h" /**************** End of %include directives **********************************/ /* These constants specify the various numeric values for terminal symbols @@ -120,6 +119,7 @@ typedef union { SSessionWindowVal yy511; tSqlExpr* yy526; int64_t yy531; + SSubclause* yy551; } YYMINORTYPE; #ifndef YYSTACKDEPTH #define YYSTACKDEPTH 100 @@ -130,16 +130,16 @@ typedef union { #define ParseARG_STORE yypParser->pInfo = pInfo #define YYFALLBACK 1 #define YYNSTATE 368 -#define YYNRULE 294 +#define YYNRULE 295 #define YYNTOKEN 197 #define YY_MAX_SHIFT 367 -#define YY_MIN_SHIFTREDUCE 576 -#define YY_MAX_SHIFTREDUCE 869 -#define YY_ERROR_ACTION 870 -#define YY_ACCEPT_ACTION 871 -#define YY_NO_ACTION 872 -#define YY_MIN_REDUCE 873 -#define YY_MAX_REDUCE 1166 +#define YY_MIN_SHIFTREDUCE 577 +#define YY_MAX_SHIFTREDUCE 871 +#define YY_ERROR_ACTION 872 +#define YY_ACCEPT_ACTION 873 +#define YY_NO_ACTION 874 +#define YY_MIN_REDUCE 875 +#define YY_MAX_REDUCE 1169 /************* End control #defines *******************************************/ /* Define the yytestcase() macro to be a no-op if is not already defined @@ -205,86 +205,86 @@ typedef union { ** yy_default[] Default action for each state. ** *********** Begin parsing tables **********************************************/ -#define YY_ACTTAB_COUNT (773) +#define YY_ACTTAB_COUNT (776) static const YYACTIONTYPE yy_action[] = { - /* 0 */ 23, 628, 366, 235, 1051, 208, 241, 712, 211, 629, - /* 10 */ 1029, 871, 367, 59, 60, 173, 63, 64, 1042, 1142, - /* 20 */ 255, 53, 52, 51, 628, 62, 324, 67, 65, 68, - /* 30 */ 66, 157, 629, 286, 238, 58, 57, 344, 343, 56, - /* 40 */ 55, 54, 59, 60, 247, 63, 64, 252, 1029, 255, - /* 50 */ 53, 52, 51, 664, 62, 324, 67, 65, 68, 66, - /* 60 */ 999, 1042, 997, 998, 58, 57, 752, 1000, 56, 55, - /* 70 */ 54, 1001, 1048, 1002, 1003, 58, 57, 277, 1015, 56, - /* 80 */ 55, 54, 59, 60, 164, 63, 64, 38, 82, 255, - /* 90 */ 53, 52, 51, 88, 62, 324, 67, 65, 68, 66, - /* 100 */ 284, 283, 249, 322, 58, 57, 1029, 211, 56, 55, - /* 110 */ 54, 38, 59, 61, 806, 63, 64, 1042, 1143, 255, - /* 120 */ 53, 52, 51, 628, 62, 324, 67, 65, 68, 66, - /* 130 */ 45, 629, 237, 239, 58, 57, 1026, 164, 56, 55, - /* 140 */ 54, 60, 1023, 63, 64, 771, 772, 255, 53, 52, - /* 150 */ 51, 756, 62, 324, 67, 65, 68, 66, 164, 1090, - /* 160 */ 1025, 296, 58, 57, 322, 100, 56, 55, 54, 577, - /* 170 */ 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, - /* 180 */ 588, 589, 590, 155, 354, 236, 63, 64, 209, 248, - /* 190 */ 255, 53, 52, 51, 628, 62, 324, 67, 65, 68, - /* 200 */ 66, 1017, 629, 164, 1028, 58, 57, 362, 960, 56, - /* 210 */ 55, 54, 1089, 44, 320, 361, 360, 319, 318, 317, - /* 220 */ 359, 316, 315, 314, 358, 313, 357, 356, 154, 152, - /* 230 */ 151, 298, 24, 93, 991, 979, 980, 981, 982, 983, - /* 240 */ 984, 985, 986, 987, 988, 989, 990, 992, 993, 214, - /* 250 */ 749, 254, 821, 922, 125, 810, 222, 813, 215, 816, - /* 260 */ 192, 97, 139, 138, 137, 221, 354, 254, 821, 329, - /* 270 */ 88, 810, 251, 813, 269, 816, 9, 29, 94, 67, - /* 280 */ 65, 68, 66, 273, 272, 233, 234, 58, 57, 325, - /* 290 */ 81, 56, 55, 54, 1012, 1013, 35, 1016, 812, 216, - /* 300 */ 815, 233, 234, 258, 5, 41, 182, 45, 56, 55, - /* 310 */ 54, 181, 106, 111, 102, 110, 38, 263, 736, 38, - /* 320 */ 932, 733, 217, 734, 1014, 735, 95, 192, 256, 276, - /* 330 */ 309, 80, 211, 38, 69, 123, 117, 128, 229, 811, - /* 340 */ 83, 814, 127, 1143, 133, 136, 126, 202, 200, 198, - /* 350 */ 69, 260, 261, 130, 197, 143, 142, 141, 140, 38, - /* 360 */ 44, 245, 361, 360, 246, 1026, 788, 359, 1026, 822, - /* 370 */ 817, 358, 38, 357, 356, 38, 818, 38, 333, 259, - /* 380 */ 38, 257, 1026, 332, 331, 822, 817, 1137, 211, 365, - /* 390 */ 364, 148, 818, 265, 38, 262, 38, 339, 338, 1143, - /* 400 */ 264, 264, 264, 14, 334, 85, 76, 96, 1026, 923, - /* 410 */ 86, 178, 179, 1027, 3, 193, 192, 335, 278, 819, - /* 420 */ 336, 1026, 340, 787, 1026, 341, 1026, 1, 180, 1026, - /* 430 */ 768, 73, 39, 326, 778, 737, 738, 99, 779, 342, - /* 440 */ 722, 346, 280, 1026, 159, 1026, 77, 280, 70, 301, - /* 450 */ 724, 303, 26, 723, 39, 34, 808, 844, 823, 253, - /* 460 */ 820, 627, 1136, 39, 70, 98, 79, 70, 16, 1100, - /* 470 */ 15, 25, 25, 74, 116, 25, 115, 18, 741, 17, - /* 480 */ 742, 6, 739, 20, 740, 19, 1135, 122, 304, 121, - /* 490 */ 22, 231, 21, 232, 809, 135, 134, 212, 711, 213, - /* 500 */ 274, 218, 210, 219, 220, 224, 225, 1162, 226, 223, - /* 510 */ 207, 1154, 1099, 243, 1096, 1095, 244, 345, 156, 48, - /* 520 */ 1082, 1081, 174, 1050, 1061, 153, 1058, 1043, 1059, 281, - /* 530 */ 1024, 1063, 310, 285, 240, 158, 287, 825, 163, 292, - /* 540 */ 165, 175, 1022, 1040, 176, 167, 177, 937, 306, 767, - /* 550 */ 307, 308, 311, 166, 312, 289, 46, 205, 42, 323, - /* 560 */ 931, 330, 1161, 113, 78, 75, 299, 1160, 50, 1157, - /* 570 */ 183, 297, 168, 295, 337, 1153, 293, 119, 1152, 1149, - /* 580 */ 184, 957, 291, 43, 40, 47, 206, 919, 129, 917, - /* 590 */ 131, 132, 915, 914, 266, 195, 196, 288, 911, 910, - /* 600 */ 909, 908, 907, 906, 905, 199, 201, 902, 900, 898, - /* 610 */ 896, 203, 893, 204, 889, 355, 49, 124, 279, 84, - /* 620 */ 347, 89, 290, 1083, 348, 349, 350, 351, 352, 353, - /* 630 */ 230, 363, 250, 869, 267, 268, 305, 868, 270, 271, - /* 640 */ 867, 850, 227, 849, 280, 275, 228, 107, 936, 935, - /* 650 */ 10, 108, 300, 744, 282, 87, 30, 90, 769, 913, - /* 660 */ 912, 160, 904, 187, 191, 144, 958, 185, 186, 188, - /* 670 */ 189, 145, 146, 190, 903, 2, 780, 995, 147, 161, - /* 680 */ 169, 170, 959, 171, 172, 33, 895, 894, 774, 162, - /* 690 */ 4, 1005, 91, 242, 776, 92, 294, 31, 11, 32, - /* 700 */ 13, 12, 27, 302, 28, 99, 101, 642, 36, 103, - /* 710 */ 104, 37, 105, 677, 675, 674, 673, 671, 670, 669, - /* 720 */ 666, 321, 109, 632, 7, 826, 824, 8, 328, 327, - /* 730 */ 112, 114, 71, 72, 118, 714, 39, 120, 713, 710, - /* 740 */ 658, 656, 648, 654, 650, 652, 646, 644, 680, 679, - /* 750 */ 678, 676, 672, 668, 667, 194, 630, 594, 873, 872, - /* 760 */ 872, 872, 872, 872, 872, 872, 872, 872, 872, 872, - /* 770 */ 872, 149, 150, + /* 0 */ 23, 629, 366, 236, 1054, 209, 242, 713, 212, 630, + /* 10 */ 1031, 873, 367, 59, 60, 174, 63, 64, 1044, 1145, + /* 20 */ 256, 53, 52, 51, 629, 62, 324, 67, 65, 68, + /* 30 */ 66, 158, 630, 286, 239, 58, 57, 344, 343, 56, + /* 40 */ 55, 54, 59, 60, 248, 63, 64, 253, 1031, 256, + /* 50 */ 53, 52, 51, 665, 62, 324, 67, 65, 68, 66, + /* 60 */ 1001, 1044, 999, 1000, 58, 57, 210, 1002, 56, 55, + /* 70 */ 54, 1003, 1051, 1004, 1005, 58, 57, 278, 216, 56, + /* 80 */ 55, 54, 59, 60, 165, 63, 64, 38, 83, 256, + /* 90 */ 53, 52, 51, 89, 62, 324, 67, 65, 68, 66, + /* 100 */ 284, 283, 250, 754, 58, 57, 1031, 212, 56, 55, + /* 110 */ 54, 38, 59, 61, 808, 63, 64, 1044, 1146, 256, + /* 120 */ 53, 52, 51, 629, 62, 324, 67, 65, 68, 66, + /* 130 */ 45, 630, 238, 240, 58, 57, 1028, 165, 56, 55, + /* 140 */ 54, 60, 1025, 63, 64, 773, 774, 256, 53, 52, + /* 150 */ 51, 96, 62, 324, 67, 65, 68, 66, 165, 1093, + /* 160 */ 1027, 296, 58, 57, 89, 84, 56, 55, 54, 578, + /* 170 */ 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, + /* 180 */ 589, 590, 591, 156, 322, 237, 63, 64, 758, 249, + /* 190 */ 256, 53, 52, 51, 629, 62, 324, 67, 65, 68, + /* 200 */ 66, 45, 630, 88, 1017, 58, 57, 362, 962, 56, + /* 210 */ 55, 54, 1092, 44, 320, 361, 360, 319, 318, 317, + /* 220 */ 359, 316, 315, 314, 358, 313, 357, 356, 155, 153, + /* 230 */ 152, 298, 24, 94, 993, 981, 982, 983, 984, 985, + /* 240 */ 986, 987, 988, 989, 990, 991, 992, 994, 995, 215, + /* 250 */ 751, 255, 823, 924, 126, 812, 223, 815, 354, 818, + /* 260 */ 193, 98, 140, 139, 138, 222, 354, 255, 823, 329, + /* 270 */ 89, 812, 252, 815, 270, 818, 9, 29, 217, 67, + /* 280 */ 65, 68, 66, 274, 273, 234, 235, 58, 57, 325, + /* 290 */ 322, 56, 55, 54, 1014, 1015, 35, 1018, 814, 218, + /* 300 */ 817, 234, 235, 259, 5, 41, 183, 45, 56, 55, + /* 310 */ 54, 182, 107, 112, 103, 111, 38, 264, 737, 38, + /* 320 */ 934, 734, 742, 735, 743, 736, 165, 193, 257, 277, + /* 330 */ 309, 81, 212, 38, 69, 124, 118, 129, 230, 813, + /* 340 */ 1140, 816, 128, 1146, 134, 137, 127, 203, 201, 199, + /* 350 */ 69, 261, 262, 131, 198, 144, 143, 142, 141, 38, + /* 360 */ 44, 246, 361, 360, 247, 1028, 101, 359, 1028, 824, + /* 370 */ 819, 358, 38, 357, 356, 38, 820, 38, 333, 260, + /* 380 */ 38, 258, 1028, 332, 331, 824, 819, 790, 212, 365, + /* 390 */ 364, 149, 820, 266, 38, 263, 38, 339, 338, 1146, + /* 400 */ 265, 95, 1019, 14, 334, 265, 82, 97, 1028, 86, + /* 410 */ 77, 179, 265, 3, 194, 87, 180, 335, 326, 821, + /* 420 */ 336, 1028, 340, 1029, 1028, 341, 1028, 925, 279, 1028, + /* 430 */ 74, 1, 181, 770, 193, 738, 739, 100, 34, 342, + /* 440 */ 1016, 346, 39, 1028, 789, 1028, 73, 160, 780, 781, + /* 450 */ 78, 723, 73, 301, 725, 303, 724, 810, 254, 846, + /* 460 */ 822, 825, 70, 26, 628, 39, 80, 39, 70, 99, + /* 470 */ 70, 304, 75, 25, 16, 25, 15, 1139, 25, 117, + /* 480 */ 6, 116, 18, 1138, 17, 740, 20, 741, 19, 123, + /* 490 */ 232, 122, 22, 233, 21, 811, 136, 135, 712, 213, + /* 500 */ 275, 214, 219, 211, 220, 221, 225, 1030, 226, 227, + /* 510 */ 224, 208, 1165, 1157, 1103, 1046, 1102, 244, 1099, 1098, + /* 520 */ 245, 345, 827, 157, 48, 1053, 1064, 1085, 1061, 1062, + /* 530 */ 1045, 1084, 281, 1066, 1026, 154, 159, 164, 292, 175, + /* 540 */ 176, 1024, 33, 285, 177, 168, 178, 939, 769, 306, + /* 550 */ 307, 308, 311, 312, 1042, 46, 206, 42, 323, 933, + /* 560 */ 330, 1164, 114, 241, 79, 1163, 287, 1160, 289, 76, + /* 570 */ 166, 299, 184, 337, 167, 1156, 50, 120, 1155, 297, + /* 580 */ 1152, 185, 295, 959, 43, 40, 47, 207, 921, 130, + /* 590 */ 919, 132, 133, 917, 916, 267, 293, 196, 197, 913, + /* 600 */ 912, 911, 910, 291, 909, 908, 907, 200, 202, 904, + /* 610 */ 902, 900, 898, 204, 895, 205, 288, 891, 49, 310, + /* 620 */ 280, 85, 90, 290, 355, 1086, 348, 125, 347, 349, + /* 630 */ 350, 351, 231, 352, 251, 305, 353, 363, 871, 269, + /* 640 */ 870, 268, 271, 228, 229, 108, 938, 937, 109, 272, + /* 650 */ 869, 852, 276, 851, 73, 10, 915, 300, 282, 914, + /* 660 */ 745, 145, 188, 146, 187, 960, 186, 189, 190, 192, + /* 670 */ 191, 906, 905, 961, 147, 997, 2, 30, 148, 897, + /* 680 */ 896, 91, 171, 169, 172, 170, 173, 1007, 771, 4, + /* 690 */ 161, 163, 782, 162, 243, 776, 92, 31, 778, 93, + /* 700 */ 294, 11, 12, 32, 13, 27, 302, 28, 100, 102, + /* 710 */ 105, 36, 104, 643, 37, 106, 678, 676, 675, 674, + /* 720 */ 672, 671, 670, 667, 633, 321, 110, 7, 327, 328, + /* 730 */ 828, 39, 826, 8, 113, 71, 115, 72, 715, 714, + /* 740 */ 119, 711, 659, 121, 657, 649, 655, 651, 653, 647, + /* 750 */ 645, 681, 680, 679, 677, 673, 669, 668, 195, 631, + /* 760 */ 595, 875, 874, 874, 874, 874, 874, 874, 874, 874, + /* 770 */ 874, 874, 874, 874, 150, 151, }; static const YYCODETYPE yy_lookahead[] = { /* 0 */ 267, 1, 200, 201, 200, 267, 246, 5, 267, 9, @@ -293,78 +293,78 @@ static const YYCODETYPE yy_lookahead[] = { /* 30 */ 30, 200, 9, 272, 264, 35, 36, 35, 36, 39, /* 40 */ 40, 41, 13, 14, 246, 16, 17, 207, 250, 20, /* 50 */ 21, 22, 23, 5, 25, 26, 27, 28, 29, 30, - /* 60 */ 224, 248, 226, 227, 35, 36, 39, 231, 39, 40, - /* 70 */ 41, 235, 268, 237, 238, 35, 36, 264, 0, 39, + /* 60 */ 224, 248, 226, 227, 35, 36, 267, 231, 39, 40, + /* 70 */ 41, 235, 268, 237, 238, 35, 36, 264, 267, 39, /* 80 */ 40, 41, 13, 14, 200, 16, 17, 200, 88, 20, /* 90 */ 21, 22, 23, 84, 25, 26, 27, 28, 29, 30, - /* 100 */ 269, 270, 246, 86, 35, 36, 250, 267, 39, 40, + /* 100 */ 269, 270, 246, 39, 35, 36, 250, 267, 39, 40, /* 110 */ 41, 200, 13, 14, 85, 16, 17, 248, 278, 20, /* 120 */ 21, 22, 23, 1, 25, 26, 27, 28, 29, 30, /* 130 */ 121, 9, 245, 264, 35, 36, 249, 200, 39, 40, /* 140 */ 41, 14, 200, 16, 17, 127, 128, 20, 21, 22, - /* 150 */ 23, 124, 25, 26, 27, 28, 29, 30, 200, 275, - /* 160 */ 249, 277, 35, 36, 86, 208, 39, 40, 41, 47, + /* 150 */ 23, 251, 25, 26, 27, 28, 29, 30, 200, 275, + /* 160 */ 249, 277, 35, 36, 84, 265, 39, 40, 41, 47, /* 170 */ 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - /* 180 */ 58, 59, 60, 61, 92, 63, 16, 17, 267, 247, + /* 180 */ 58, 59, 60, 61, 86, 63, 16, 17, 124, 247, /* 190 */ 20, 21, 22, 23, 1, 25, 26, 27, 28, 29, - /* 200 */ 30, 244, 9, 200, 250, 35, 36, 222, 223, 39, + /* 200 */ 30, 121, 9, 123, 0, 35, 36, 222, 223, 39, /* 210 */ 40, 41, 275, 100, 101, 102, 103, 104, 105, 106, /* 220 */ 107, 108, 109, 110, 111, 112, 113, 114, 64, 65, /* 230 */ 66, 273, 46, 275, 224, 225, 226, 227, 228, 229, /* 240 */ 230, 231, 232, 233, 234, 235, 236, 237, 238, 63, - /* 250 */ 99, 1, 2, 206, 80, 5, 70, 7, 267, 9, + /* 250 */ 99, 1, 2, 206, 80, 5, 70, 7, 92, 9, /* 260 */ 213, 208, 76, 77, 78, 79, 92, 1, 2, 83, - /* 270 */ 84, 5, 207, 7, 144, 9, 125, 84, 275, 27, + /* 270 */ 84, 5, 207, 7, 144, 9, 125, 84, 267, 27, /* 280 */ 28, 29, 30, 153, 154, 35, 36, 35, 36, 39, - /* 290 */ 208, 39, 40, 41, 241, 242, 243, 244, 5, 267, + /* 290 */ 86, 39, 40, 41, 241, 242, 243, 244, 5, 267, /* 300 */ 7, 35, 36, 70, 64, 65, 66, 121, 39, 40, /* 310 */ 41, 71, 72, 73, 74, 75, 200, 70, 2, 200, - /* 320 */ 206, 5, 267, 7, 242, 9, 251, 213, 207, 143, + /* 320 */ 206, 5, 5, 7, 7, 9, 200, 213, 207, 143, /* 330 */ 90, 145, 267, 200, 84, 64, 65, 66, 152, 5, - /* 340 */ 265, 7, 71, 278, 73, 74, 75, 64, 65, 66, + /* 340 */ 267, 7, 71, 278, 73, 74, 75, 64, 65, 66, /* 350 */ 84, 35, 36, 82, 71, 72, 73, 74, 75, 200, - /* 360 */ 100, 245, 102, 103, 245, 249, 78, 107, 249, 119, + /* 360 */ 100, 245, 102, 103, 245, 249, 208, 107, 249, 119, /* 370 */ 120, 111, 200, 113, 114, 200, 126, 200, 245, 146, - /* 380 */ 200, 148, 249, 150, 151, 119, 120, 267, 267, 67, + /* 380 */ 200, 148, 249, 150, 151, 119, 120, 78, 267, 67, /* 390 */ 68, 69, 126, 146, 200, 148, 200, 150, 151, 278, - /* 400 */ 200, 200, 200, 84, 245, 85, 99, 88, 249, 206, - /* 410 */ 85, 211, 211, 211, 204, 205, 213, 245, 85, 126, - /* 420 */ 245, 249, 245, 135, 249, 245, 249, 209, 210, 249, - /* 430 */ 85, 99, 99, 15, 85, 119, 120, 118, 85, 245, - /* 440 */ 85, 245, 122, 249, 99, 249, 139, 122, 99, 85, - /* 450 */ 85, 85, 99, 85, 99, 84, 1, 85, 85, 62, - /* 460 */ 126, 85, 267, 99, 99, 99, 84, 99, 147, 240, - /* 470 */ 149, 99, 99, 141, 147, 99, 149, 147, 5, 149, - /* 480 */ 7, 84, 5, 147, 7, 149, 267, 147, 117, 149, - /* 490 */ 147, 267, 149, 267, 39, 80, 81, 267, 116, 267, + /* 400 */ 200, 275, 244, 84, 245, 200, 208, 88, 249, 85, + /* 410 */ 99, 211, 200, 204, 205, 85, 211, 245, 15, 126, + /* 420 */ 245, 249, 245, 211, 249, 245, 249, 206, 85, 249, + /* 430 */ 99, 209, 210, 85, 213, 119, 120, 118, 84, 245, + /* 440 */ 242, 245, 99, 249, 135, 249, 122, 99, 85, 85, + /* 450 */ 139, 85, 122, 85, 85, 85, 85, 1, 62, 85, + /* 460 */ 126, 85, 99, 99, 85, 99, 84, 99, 99, 99, + /* 470 */ 99, 117, 141, 99, 147, 99, 149, 267, 99, 147, + /* 480 */ 84, 149, 147, 267, 149, 5, 147, 7, 149, 147, + /* 490 */ 267, 149, 147, 267, 149, 39, 80, 81, 116, 267, /* 500 */ 200, 267, 267, 267, 267, 267, 267, 250, 267, 267, - /* 510 */ 267, 250, 240, 240, 240, 240, 240, 240, 200, 266, - /* 520 */ 276, 276, 252, 200, 200, 62, 200, 248, 200, 248, - /* 530 */ 248, 200, 91, 271, 271, 200, 271, 119, 200, 200, - /* 540 */ 262, 200, 200, 263, 200, 260, 200, 200, 200, 126, - /* 550 */ 200, 200, 200, 261, 200, 271, 200, 200, 200, 200, - /* 560 */ 200, 200, 200, 200, 138, 140, 133, 200, 137, 200, - /* 570 */ 200, 136, 259, 131, 200, 200, 130, 200, 200, 200, - /* 580 */ 200, 200, 129, 200, 200, 200, 200, 200, 200, 200, - /* 590 */ 200, 200, 200, 200, 200, 200, 200, 132, 200, 200, - /* 600 */ 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, - /* 610 */ 200, 200, 200, 200, 200, 115, 142, 98, 202, 202, - /* 620 */ 97, 202, 202, 202, 53, 94, 96, 57, 95, 93, - /* 630 */ 202, 86, 202, 5, 155, 5, 202, 5, 155, 5, - /* 640 */ 5, 102, 202, 101, 122, 144, 202, 208, 212, 212, - /* 650 */ 84, 208, 117, 85, 99, 123, 84, 99, 85, 202, - /* 660 */ 202, 84, 202, 215, 214, 203, 221, 220, 219, 218, - /* 670 */ 216, 203, 203, 217, 202, 209, 85, 239, 203, 84, - /* 680 */ 258, 257, 223, 256, 255, 253, 202, 202, 85, 99, - /* 690 */ 204, 239, 84, 1, 85, 84, 84, 99, 134, 99, - /* 700 */ 84, 134, 84, 117, 84, 118, 80, 5, 89, 88, - /* 710 */ 72, 89, 88, 9, 5, 5, 5, 5, 5, 5, - /* 720 */ 5, 15, 80, 87, 84, 119, 85, 84, 61, 26, - /* 730 */ 149, 149, 16, 16, 149, 5, 99, 149, 5, 85, - /* 740 */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, - /* 750 */ 5, 5, 5, 5, 5, 99, 87, 62, 0, 279, - /* 760 */ 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, - /* 770 */ 279, 21, 21, 279, 279, 279, 279, 279, 279, 279, + /* 510 */ 267, 267, 250, 250, 240, 248, 240, 240, 240, 240, + /* 520 */ 240, 240, 119, 200, 266, 200, 200, 276, 200, 200, + /* 530 */ 248, 276, 248, 200, 248, 62, 200, 200, 200, 252, + /* 540 */ 200, 200, 253, 271, 200, 260, 200, 200, 126, 200, + /* 550 */ 200, 200, 200, 200, 263, 200, 200, 200, 200, 200, + /* 560 */ 200, 200, 200, 271, 138, 200, 271, 200, 271, 140, + /* 570 */ 262, 133, 200, 200, 261, 200, 137, 200, 200, 136, + /* 580 */ 200, 200, 131, 200, 200, 200, 200, 200, 200, 200, + /* 590 */ 200, 200, 200, 200, 200, 200, 130, 200, 200, 200, + /* 600 */ 200, 200, 200, 129, 200, 200, 200, 200, 200, 200, + /* 610 */ 200, 200, 200, 200, 200, 200, 132, 200, 142, 91, + /* 620 */ 202, 202, 202, 202, 115, 202, 53, 98, 97, 94, + /* 630 */ 96, 57, 202, 95, 202, 202, 93, 86, 5, 5, + /* 640 */ 5, 155, 155, 202, 202, 208, 212, 212, 208, 5, + /* 650 */ 5, 102, 144, 101, 122, 84, 202, 117, 99, 202, + /* 660 */ 85, 203, 215, 203, 219, 221, 220, 218, 216, 214, + /* 670 */ 217, 202, 202, 223, 203, 239, 209, 84, 203, 202, + /* 680 */ 202, 99, 257, 259, 256, 258, 255, 239, 85, 204, + /* 690 */ 84, 99, 85, 84, 1, 85, 84, 99, 85, 84, + /* 700 */ 84, 134, 134, 99, 84, 84, 117, 84, 118, 80, + /* 710 */ 72, 89, 88, 5, 89, 88, 9, 5, 5, 5, + /* 720 */ 5, 5, 5, 5, 87, 15, 80, 84, 26, 61, + /* 730 */ 119, 99, 85, 84, 149, 16, 149, 16, 5, 5, + /* 740 */ 149, 85, 5, 149, 5, 5, 5, 5, 5, 5, + /* 750 */ 5, 5, 5, 5, 5, 5, 5, 5, 99, 87, + /* 760 */ 62, 0, 279, 279, 279, 279, 279, 279, 279, 279, + /* 770 */ 279, 279, 279, 279, 21, 21, 279, 279, 279, 279, /* 780 */ 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, /* 790 */ 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, /* 800 */ 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, @@ -384,113 +384,114 @@ static const YYCODETYPE yy_lookahead[] = { /* 940 */ 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, /* 950 */ 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, /* 960 */ 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, + /* 970 */ 279, 279, 279, }; #define YY_SHIFT_COUNT (367) #define YY_SHIFT_MIN (0) -#define YY_SHIFT_MAX (758) +#define YY_SHIFT_MAX (761) static const unsigned short int yy_shift_ofst[] = { - /* 0 */ 186, 113, 113, 260, 260, 17, 250, 266, 266, 193, + /* 0 */ 186, 113, 113, 260, 260, 98, 250, 266, 266, 193, /* 10 */ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, /* 20 */ 23, 23, 23, 0, 122, 266, 316, 316, 316, 9, - /* 30 */ 9, 23, 23, 18, 23, 78, 23, 23, 23, 23, - /* 40 */ 174, 17, 92, 92, 48, 773, 773, 773, 266, 266, + /* 30 */ 9, 23, 23, 18, 23, 204, 23, 23, 23, 23, + /* 40 */ 174, 98, 166, 166, 48, 776, 776, 776, 266, 266, /* 50 */ 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, /* 60 */ 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, - /* 70 */ 316, 316, 316, 2, 2, 2, 2, 2, 2, 2, - /* 80 */ 23, 23, 23, 27, 23, 23, 23, 9, 9, 23, - /* 90 */ 23, 23, 23, 288, 288, 151, 9, 23, 23, 23, + /* 70 */ 316, 316, 316, 80, 2, 2, 2, 2, 2, 2, + /* 80 */ 2, 23, 23, 23, 64, 23, 23, 23, 9, 9, + /* 90 */ 23, 23, 23, 23, 309, 309, 151, 9, 23, 23, /* 100 */ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, /* 110 */ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, /* 120 */ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, /* 130 */ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, /* 140 */ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, - /* 150 */ 23, 23, 23, 23, 23, 23, 463, 463, 463, 423, - /* 160 */ 423, 423, 423, 463, 463, 426, 425, 433, 431, 435, - /* 170 */ 442, 446, 453, 465, 474, 463, 463, 463, 441, 441, - /* 180 */ 500, 17, 17, 463, 463, 519, 523, 571, 531, 530, - /* 190 */ 570, 533, 536, 500, 48, 463, 463, 545, 545, 463, - /* 200 */ 545, 463, 545, 463, 463, 773, 773, 29, 69, 69, - /* 210 */ 99, 69, 127, 170, 240, 252, 252, 252, 252, 252, - /* 220 */ 252, 271, 283, 40, 40, 40, 40, 233, 247, 130, - /* 230 */ 319, 269, 269, 293, 334, 322, 164, 333, 320, 325, - /* 240 */ 345, 349, 353, 332, 307, 355, 364, 365, 366, 368, - /* 250 */ 371, 372, 373, 455, 397, 418, 376, 321, 327, 330, - /* 260 */ 473, 477, 336, 340, 382, 343, 415, 628, 479, 630, - /* 270 */ 632, 483, 634, 635, 539, 542, 501, 522, 535, 566, - /* 280 */ 532, 568, 572, 555, 558, 573, 577, 591, 595, 603, - /* 290 */ 590, 608, 609, 611, 692, 612, 598, 564, 600, 567, - /* 300 */ 616, 535, 618, 586, 620, 587, 626, 619, 621, 638, - /* 310 */ 702, 622, 624, 704, 709, 710, 711, 712, 713, 714, - /* 320 */ 715, 636, 706, 642, 640, 641, 606, 643, 703, 667, - /* 330 */ 716, 581, 582, 637, 637, 637, 637, 717, 585, 588, - /* 340 */ 637, 637, 637, 730, 733, 654, 637, 735, 736, 737, - /* 350 */ 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, - /* 360 */ 748, 749, 656, 669, 750, 751, 695, 758, + /* 150 */ 23, 23, 23, 23, 23, 23, 23, 473, 473, 473, + /* 160 */ 422, 422, 422, 422, 473, 473, 426, 429, 438, 439, + /* 170 */ 443, 451, 466, 474, 484, 476, 473, 473, 473, 528, + /* 180 */ 528, 509, 98, 98, 473, 473, 529, 531, 573, 535, + /* 190 */ 534, 574, 538, 543, 509, 48, 473, 473, 551, 551, + /* 200 */ 473, 551, 473, 551, 473, 473, 776, 776, 29, 69, + /* 210 */ 69, 99, 69, 127, 170, 240, 252, 252, 252, 252, + /* 220 */ 252, 252, 271, 283, 40, 40, 40, 40, 233, 247, + /* 230 */ 130, 319, 269, 269, 293, 334, 322, 164, 343, 324, + /* 240 */ 330, 348, 363, 364, 331, 311, 366, 368, 369, 370, + /* 250 */ 371, 354, 374, 376, 456, 396, 403, 379, 327, 332, + /* 260 */ 335, 317, 480, 339, 342, 382, 345, 416, 633, 486, + /* 270 */ 634, 635, 487, 644, 645, 549, 552, 508, 532, 540, + /* 280 */ 571, 575, 593, 559, 582, 603, 606, 607, 609, 610, + /* 290 */ 592, 612, 613, 615, 693, 616, 598, 567, 604, 568, + /* 300 */ 620, 540, 621, 589, 623, 590, 629, 622, 624, 638, + /* 310 */ 708, 625, 627, 707, 712, 713, 714, 715, 716, 717, + /* 320 */ 718, 637, 710, 646, 643, 647, 611, 649, 702, 668, + /* 330 */ 719, 585, 587, 632, 632, 632, 632, 721, 591, 594, + /* 340 */ 632, 632, 632, 733, 734, 656, 632, 737, 739, 740, + /* 350 */ 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, + /* 360 */ 751, 752, 659, 672, 753, 754, 698, 761, }; -#define YY_REDUCE_COUNT (206) +#define YY_REDUCE_COUNT (207) #define YY_REDUCE_MIN (-267) -#define YY_REDUCE_MAX (486) +#define YY_REDUCE_MAX (485) static const short yy_reduce_ofst[] = { /* 0 */ -187, 10, 10, -164, -164, 53, -160, 65, 121, -169, /* 10 */ -113, -116, -42, 116, 119, 133, 159, 172, 175, 177, /* 20 */ 180, 194, 196, -196, -198, -259, -240, -202, -144, -230, - /* 30 */ -131, -63, 3, -239, -58, -43, 200, 201, 202, -89, - /* 40 */ 47, 82, 114, 203, -15, 75, 218, 210, -267, -262, - /* 50 */ -79, -9, 32, 55, 120, 195, 219, 224, 226, 230, - /* 60 */ 232, 234, 235, 236, 237, 238, 239, 241, 242, 243, - /* 70 */ -46, 257, 261, 229, 272, 273, 274, 275, 276, 277, - /* 80 */ 300, 318, 323, 253, 324, 326, 328, 279, 281, 331, - /* 90 */ 335, 338, 339, 244, 245, 270, 282, 341, 342, 344, - /* 100 */ 346, 347, 348, 350, 351, 352, 354, 356, 357, 358, - /* 110 */ 359, 360, 361, 362, 363, 367, 369, 370, 374, 375, - /* 120 */ 377, 378, 379, 380, 381, 383, 384, 385, 386, 387, - /* 130 */ 388, 389, 390, 391, 392, 393, 394, 395, 396, 398, - /* 140 */ 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, - /* 150 */ 409, 410, 411, 412, 413, 414, 416, 417, 419, 262, - /* 160 */ 263, 265, 284, 420, 421, 280, 278, 292, 285, 313, - /* 170 */ 422, 424, 427, 429, 432, 428, 430, 434, 436, 437, - /* 180 */ 438, 439, 443, 440, 444, 445, 447, 449, 448, 451, - /* 190 */ 454, 456, 450, 452, 459, 457, 458, 462, 468, 460, - /* 200 */ 469, 472, 475, 484, 485, 466, 486, + /* 30 */ -131, -63, 126, -239, -58, 158, 200, 205, 212, -89, + /* 40 */ 47, 198, 114, 221, -15, -100, 222, 209, -267, -262, + /* 50 */ -201, -189, 11, 32, 73, 210, 216, 223, 226, 232, + /* 60 */ 234, 235, 236, 237, 238, 239, 241, 242, 243, 244, + /* 70 */ 257, 262, 263, 267, 274, 276, 277, 278, 279, 280, + /* 80 */ 281, 300, 323, 325, 258, 326, 328, 329, 282, 284, + /* 90 */ 333, 336, 337, 338, 251, 255, 287, 286, 340, 341, + /* 100 */ 344, 346, 347, 349, 350, 351, 352, 353, 355, 356, + /* 110 */ 357, 358, 359, 360, 361, 362, 365, 367, 372, 373, + /* 120 */ 375, 377, 378, 380, 381, 383, 384, 385, 386, 387, + /* 130 */ 388, 389, 390, 391, 392, 393, 394, 395, 397, 398, + /* 140 */ 399, 400, 401, 402, 404, 405, 406, 407, 408, 409, + /* 150 */ 410, 411, 412, 413, 414, 415, 417, 418, 419, 420, + /* 160 */ 272, 292, 295, 297, 421, 423, 291, 308, 313, 285, + /* 170 */ 424, 427, 425, 428, 431, 289, 430, 432, 433, 434, + /* 180 */ 435, 436, 437, 440, 441, 442, 444, 446, 445, 447, + /* 190 */ 449, 452, 453, 455, 448, 450, 454, 457, 458, 460, + /* 200 */ 469, 471, 470, 475, 477, 478, 467, 485, }; static const YYACTIONTYPE yy_default[] = { - /* 0 */ 870, 994, 933, 1004, 920, 930, 1145, 1145, 1145, 870, - /* 10 */ 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, - /* 20 */ 870, 870, 870, 1052, 890, 1145, 870, 870, 870, 870, - /* 30 */ 870, 870, 870, 1067, 870, 930, 870, 870, 870, 870, - /* 40 */ 940, 930, 940, 940, 870, 1047, 978, 996, 870, 870, - /* 50 */ 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, - /* 60 */ 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, - /* 70 */ 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, - /* 80 */ 870, 870, 870, 1054, 1060, 1057, 870, 870, 870, 1062, - /* 90 */ 870, 870, 870, 1086, 1086, 1045, 870, 870, 870, 870, - /* 100 */ 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, - /* 110 */ 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, - /* 120 */ 870, 870, 870, 870, 870, 870, 870, 870, 870, 918, - /* 130 */ 870, 916, 870, 870, 870, 870, 870, 870, 870, 870, - /* 140 */ 870, 870, 870, 870, 870, 870, 870, 870, 901, 870, - /* 150 */ 870, 870, 870, 870, 870, 888, 892, 892, 892, 870, - /* 160 */ 870, 870, 870, 892, 892, 1093, 1097, 1079, 1091, 1087, - /* 170 */ 1074, 1072, 1070, 1078, 1101, 892, 892, 892, 938, 938, - /* 180 */ 934, 930, 930, 892, 892, 956, 954, 952, 944, 950, - /* 190 */ 946, 948, 942, 921, 870, 892, 892, 928, 928, 892, - /* 200 */ 928, 892, 928, 892, 892, 978, 996, 870, 1102, 1092, - /* 210 */ 870, 1144, 1132, 1131, 870, 1140, 1139, 1138, 1130, 1129, - /* 220 */ 1128, 870, 870, 1124, 1127, 1126, 1125, 870, 870, 870, - /* 230 */ 870, 1134, 1133, 870, 870, 870, 870, 870, 870, 870, - /* 240 */ 870, 870, 870, 1098, 1094, 870, 870, 870, 870, 870, - /* 250 */ 870, 870, 870, 870, 1104, 870, 870, 870, 870, 870, - /* 260 */ 870, 870, 870, 870, 1006, 870, 870, 870, 870, 870, - /* 270 */ 870, 870, 870, 870, 870, 870, 870, 1044, 870, 870, - /* 280 */ 870, 870, 870, 1056, 1055, 870, 870, 870, 870, 870, - /* 290 */ 870, 870, 870, 870, 870, 870, 1088, 870, 1080, 870, - /* 300 */ 870, 1018, 870, 870, 870, 870, 870, 870, 870, 870, - /* 310 */ 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, - /* 320 */ 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, - /* 330 */ 870, 870, 870, 1163, 1158, 1159, 1156, 870, 870, 870, - /* 340 */ 1155, 1150, 1151, 870, 870, 870, 1148, 870, 870, 870, - /* 350 */ 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, - /* 360 */ 870, 870, 962, 870, 899, 897, 870, 870, + /* 0 */ 872, 996, 935, 1006, 922, 932, 1148, 1148, 1148, 872, + /* 10 */ 872, 872, 872, 872, 872, 872, 872, 872, 872, 872, + /* 20 */ 872, 872, 872, 1055, 892, 1148, 872, 872, 872, 872, + /* 30 */ 872, 872, 872, 1070, 872, 932, 872, 872, 872, 872, + /* 40 */ 942, 932, 942, 942, 872, 1050, 980, 998, 872, 872, + /* 50 */ 872, 872, 872, 872, 872, 872, 872, 872, 872, 872, + /* 60 */ 872, 872, 872, 872, 872, 872, 872, 872, 872, 872, + /* 70 */ 872, 872, 872, 872, 872, 872, 872, 872, 872, 872, + /* 80 */ 872, 872, 872, 872, 1057, 1063, 1060, 872, 872, 872, + /* 90 */ 1065, 872, 872, 872, 1089, 1089, 1048, 872, 872, 872, + /* 100 */ 872, 872, 872, 872, 872, 872, 872, 872, 872, 872, + /* 110 */ 872, 872, 872, 872, 872, 872, 872, 872, 872, 872, + /* 120 */ 872, 872, 872, 872, 872, 872, 872, 872, 872, 872, + /* 130 */ 920, 872, 918, 872, 872, 872, 872, 872, 872, 872, + /* 140 */ 872, 872, 872, 872, 872, 872, 872, 872, 872, 903, + /* 150 */ 872, 872, 872, 872, 872, 872, 890, 894, 894, 894, + /* 160 */ 872, 872, 872, 872, 894, 894, 1096, 1100, 1082, 1094, + /* 170 */ 1090, 1077, 1075, 1073, 1081, 1104, 894, 894, 894, 940, + /* 180 */ 940, 936, 932, 932, 894, 894, 958, 956, 954, 946, + /* 190 */ 952, 948, 950, 944, 923, 872, 894, 894, 930, 930, + /* 200 */ 894, 930, 894, 930, 894, 894, 980, 998, 872, 1105, + /* 210 */ 1095, 872, 1147, 1135, 1134, 872, 1143, 1142, 1141, 1133, + /* 220 */ 1132, 1131, 872, 872, 1127, 1130, 1129, 1128, 872, 872, + /* 230 */ 872, 872, 1137, 1136, 872, 872, 872, 872, 872, 872, + /* 240 */ 872, 872, 872, 872, 1101, 1097, 872, 872, 872, 872, + /* 250 */ 872, 872, 872, 872, 872, 1107, 872, 872, 872, 872, + /* 260 */ 872, 872, 872, 872, 872, 1008, 872, 872, 872, 872, + /* 270 */ 872, 872, 872, 872, 872, 872, 872, 872, 1047, 872, + /* 280 */ 872, 872, 872, 1059, 1058, 872, 872, 872, 872, 872, + /* 290 */ 872, 872, 872, 872, 872, 872, 1091, 872, 1083, 872, + /* 300 */ 872, 1020, 872, 872, 872, 872, 872, 872, 872, 872, + /* 310 */ 872, 872, 872, 872, 872, 872, 872, 872, 872, 872, + /* 320 */ 872, 872, 872, 872, 872, 872, 872, 872, 872, 872, + /* 330 */ 872, 872, 872, 1166, 1161, 1162, 1159, 872, 872, 872, + /* 340 */ 1158, 1153, 1154, 872, 872, 872, 1151, 872, 872, 872, + /* 350 */ 872, 872, 872, 872, 872, 872, 872, 872, 872, 872, + /* 360 */ 872, 872, 964, 872, 901, 899, 872, 872, }; /********** End of lemon-generated parsing tables *****************************/ @@ -1250,129 +1251,130 @@ static const char *const yyRuleName[] = { /* 168 */ "select ::= LP select RP", /* 169 */ "union ::= select", /* 170 */ "union ::= union UNION ALL select", - /* 171 */ "cmd ::= union", - /* 172 */ "select ::= SELECT selcollist", - /* 173 */ "sclp ::= selcollist COMMA", - /* 174 */ "sclp ::=", - /* 175 */ "selcollist ::= sclp distinct expr as", - /* 176 */ "selcollist ::= sclp STAR", - /* 177 */ "as ::= AS ids", - /* 178 */ "as ::= ids", - /* 179 */ "as ::=", - /* 180 */ "distinct ::= DISTINCT", - /* 181 */ "distinct ::=", - /* 182 */ "from ::= FROM tablelist", - /* 183 */ "from ::= FROM sub", - /* 184 */ "sub ::= LP union RP", - /* 185 */ "sub ::= LP union RP ids", - /* 186 */ "sub ::= sub COMMA LP union RP ids", - /* 187 */ "tablelist ::= ids cpxName", - /* 188 */ "tablelist ::= ids cpxName ids", - /* 189 */ "tablelist ::= tablelist COMMA ids cpxName", - /* 190 */ "tablelist ::= tablelist COMMA ids cpxName ids", - /* 191 */ "tmvar ::= VARIABLE", - /* 192 */ "interval_option ::= intervalKey LP tmvar RP", - /* 193 */ "interval_option ::= intervalKey LP tmvar COMMA tmvar RP", - /* 194 */ "interval_option ::=", - /* 195 */ "intervalKey ::= INTERVAL", - /* 196 */ "intervalKey ::= EVERY", - /* 197 */ "session_option ::=", - /* 198 */ "session_option ::= SESSION LP ids cpxName COMMA tmvar RP", - /* 199 */ "windowstate_option ::=", - /* 200 */ "windowstate_option ::= STATE_WINDOW LP ids RP", - /* 201 */ "fill_opt ::=", - /* 202 */ "fill_opt ::= FILL LP ID COMMA tagitemlist RP", - /* 203 */ "fill_opt ::= FILL LP ID RP", - /* 204 */ "sliding_opt ::= SLIDING LP tmvar RP", - /* 205 */ "sliding_opt ::=", - /* 206 */ "orderby_opt ::=", - /* 207 */ "orderby_opt ::= ORDER BY sortlist", - /* 208 */ "sortlist ::= sortlist COMMA item sortorder", - /* 209 */ "sortlist ::= item sortorder", - /* 210 */ "item ::= ids cpxName", - /* 211 */ "sortorder ::= ASC", - /* 212 */ "sortorder ::= DESC", - /* 213 */ "sortorder ::=", - /* 214 */ "groupby_opt ::=", - /* 215 */ "groupby_opt ::= GROUP BY grouplist", - /* 216 */ "grouplist ::= grouplist COMMA item", - /* 217 */ "grouplist ::= item", - /* 218 */ "having_opt ::=", - /* 219 */ "having_opt ::= HAVING expr", - /* 220 */ "limit_opt ::=", - /* 221 */ "limit_opt ::= LIMIT signed", - /* 222 */ "limit_opt ::= LIMIT signed OFFSET signed", - /* 223 */ "limit_opt ::= LIMIT signed COMMA signed", - /* 224 */ "slimit_opt ::=", - /* 225 */ "slimit_opt ::= SLIMIT signed", - /* 226 */ "slimit_opt ::= SLIMIT signed SOFFSET signed", - /* 227 */ "slimit_opt ::= SLIMIT signed COMMA signed", - /* 228 */ "where_opt ::=", - /* 229 */ "where_opt ::= WHERE expr", - /* 230 */ "expr ::= LP expr RP", - /* 231 */ "expr ::= ID", - /* 232 */ "expr ::= ID DOT ID", - /* 233 */ "expr ::= ID DOT STAR", - /* 234 */ "expr ::= INTEGER", - /* 235 */ "expr ::= MINUS INTEGER", - /* 236 */ "expr ::= PLUS INTEGER", - /* 237 */ "expr ::= FLOAT", - /* 238 */ "expr ::= MINUS FLOAT", - /* 239 */ "expr ::= PLUS FLOAT", - /* 240 */ "expr ::= STRING", - /* 241 */ "expr ::= NOW", - /* 242 */ "expr ::= VARIABLE", - /* 243 */ "expr ::= PLUS VARIABLE", - /* 244 */ "expr ::= MINUS VARIABLE", - /* 245 */ "expr ::= BOOL", - /* 246 */ "expr ::= NULL", - /* 247 */ "expr ::= ID LP exprlist RP", - /* 248 */ "expr ::= ID LP STAR RP", - /* 249 */ "expr ::= expr IS NULL", - /* 250 */ "expr ::= expr IS NOT NULL", - /* 251 */ "expr ::= expr LT expr", - /* 252 */ "expr ::= expr GT expr", - /* 253 */ "expr ::= expr LE expr", - /* 254 */ "expr ::= expr GE expr", - /* 255 */ "expr ::= expr NE expr", - /* 256 */ "expr ::= expr EQ expr", - /* 257 */ "expr ::= expr BETWEEN expr AND expr", - /* 258 */ "expr ::= expr AND expr", - /* 259 */ "expr ::= expr OR expr", - /* 260 */ "expr ::= expr PLUS expr", - /* 261 */ "expr ::= expr MINUS expr", - /* 262 */ "expr ::= expr STAR expr", - /* 263 */ "expr ::= expr SLASH expr", - /* 264 */ "expr ::= expr REM expr", - /* 265 */ "expr ::= expr LIKE expr", - /* 266 */ "expr ::= expr MATCH expr", - /* 267 */ "expr ::= expr NMATCH expr", - /* 268 */ "expr ::= expr IN LP exprlist RP", - /* 269 */ "exprlist ::= exprlist COMMA expritem", - /* 270 */ "exprlist ::= expritem", - /* 271 */ "expritem ::= expr", - /* 272 */ "expritem ::=", - /* 273 */ "cmd ::= RESET QUERY CACHE", - /* 274 */ "cmd ::= SYNCDB ids REPLICA", - /* 275 */ "cmd ::= ALTER TABLE ids cpxName ADD COLUMN columnlist", - /* 276 */ "cmd ::= ALTER TABLE ids cpxName DROP COLUMN ids", - /* 277 */ "cmd ::= ALTER TABLE ids cpxName MODIFY COLUMN columnlist", - /* 278 */ "cmd ::= ALTER TABLE ids cpxName ADD TAG columnlist", - /* 279 */ "cmd ::= ALTER TABLE ids cpxName DROP TAG ids", - /* 280 */ "cmd ::= ALTER TABLE ids cpxName CHANGE TAG ids ids", - /* 281 */ "cmd ::= ALTER TABLE ids cpxName SET TAG ids EQ tagitem", - /* 282 */ "cmd ::= ALTER TABLE ids cpxName MODIFY TAG columnlist", - /* 283 */ "cmd ::= ALTER STABLE ids cpxName ADD COLUMN columnlist", - /* 284 */ "cmd ::= ALTER STABLE ids cpxName DROP COLUMN ids", - /* 285 */ "cmd ::= ALTER STABLE ids cpxName MODIFY COLUMN columnlist", - /* 286 */ "cmd ::= ALTER STABLE ids cpxName ADD TAG columnlist", - /* 287 */ "cmd ::= ALTER STABLE ids cpxName DROP TAG ids", - /* 288 */ "cmd ::= ALTER STABLE ids cpxName CHANGE TAG ids ids", - /* 289 */ "cmd ::= ALTER STABLE ids cpxName SET TAG ids EQ tagitem", - /* 290 */ "cmd ::= ALTER STABLE ids cpxName MODIFY TAG columnlist", - /* 291 */ "cmd ::= KILL CONNECTION INTEGER", - /* 292 */ "cmd ::= KILL STREAM INTEGER COLON INTEGER", - /* 293 */ "cmd ::= KILL QUERY INTEGER COLON INTEGER", + /* 171 */ "union ::= union UNION select", + /* 172 */ "cmd ::= union", + /* 173 */ "select ::= SELECT selcollist", + /* 174 */ "sclp ::= selcollist COMMA", + /* 175 */ "sclp ::=", + /* 176 */ "selcollist ::= sclp distinct expr as", + /* 177 */ "selcollist ::= sclp STAR", + /* 178 */ "as ::= AS ids", + /* 179 */ "as ::= ids", + /* 180 */ "as ::=", + /* 181 */ "distinct ::= DISTINCT", + /* 182 */ "distinct ::=", + /* 183 */ "from ::= FROM tablelist", + /* 184 */ "from ::= FROM sub", + /* 185 */ "sub ::= LP union RP", + /* 186 */ "sub ::= LP union RP ids", + /* 187 */ "sub ::= sub COMMA LP union RP ids", + /* 188 */ "tablelist ::= ids cpxName", + /* 189 */ "tablelist ::= ids cpxName ids", + /* 190 */ "tablelist ::= tablelist COMMA ids cpxName", + /* 191 */ "tablelist ::= tablelist COMMA ids cpxName ids", + /* 192 */ "tmvar ::= VARIABLE", + /* 193 */ "interval_option ::= intervalKey LP tmvar RP", + /* 194 */ "interval_option ::= intervalKey LP tmvar COMMA tmvar RP", + /* 195 */ "interval_option ::=", + /* 196 */ "intervalKey ::= INTERVAL", + /* 197 */ "intervalKey ::= EVERY", + /* 198 */ "session_option ::=", + /* 199 */ "session_option ::= SESSION LP ids cpxName COMMA tmvar RP", + /* 200 */ "windowstate_option ::=", + /* 201 */ "windowstate_option ::= STATE_WINDOW LP ids RP", + /* 202 */ "fill_opt ::=", + /* 203 */ "fill_opt ::= FILL LP ID COMMA tagitemlist RP", + /* 204 */ "fill_opt ::= FILL LP ID RP", + /* 205 */ "sliding_opt ::= SLIDING LP tmvar RP", + /* 206 */ "sliding_opt ::=", + /* 207 */ "orderby_opt ::=", + /* 208 */ "orderby_opt ::= ORDER BY sortlist", + /* 209 */ "sortlist ::= sortlist COMMA item sortorder", + /* 210 */ "sortlist ::= item sortorder", + /* 211 */ "item ::= ids cpxName", + /* 212 */ "sortorder ::= ASC", + /* 213 */ "sortorder ::= DESC", + /* 214 */ "sortorder ::=", + /* 215 */ "groupby_opt ::=", + /* 216 */ "groupby_opt ::= GROUP BY grouplist", + /* 217 */ "grouplist ::= grouplist COMMA item", + /* 218 */ "grouplist ::= item", + /* 219 */ "having_opt ::=", + /* 220 */ "having_opt ::= HAVING expr", + /* 221 */ "limit_opt ::=", + /* 222 */ "limit_opt ::= LIMIT signed", + /* 223 */ "limit_opt ::= LIMIT signed OFFSET signed", + /* 224 */ "limit_opt ::= LIMIT signed COMMA signed", + /* 225 */ "slimit_opt ::=", + /* 226 */ "slimit_opt ::= SLIMIT signed", + /* 227 */ "slimit_opt ::= SLIMIT signed SOFFSET signed", + /* 228 */ "slimit_opt ::= SLIMIT signed COMMA signed", + /* 229 */ "where_opt ::=", + /* 230 */ "where_opt ::= WHERE expr", + /* 231 */ "expr ::= LP expr RP", + /* 232 */ "expr ::= ID", + /* 233 */ "expr ::= ID DOT ID", + /* 234 */ "expr ::= ID DOT STAR", + /* 235 */ "expr ::= INTEGER", + /* 236 */ "expr ::= MINUS INTEGER", + /* 237 */ "expr ::= PLUS INTEGER", + /* 238 */ "expr ::= FLOAT", + /* 239 */ "expr ::= MINUS FLOAT", + /* 240 */ "expr ::= PLUS FLOAT", + /* 241 */ "expr ::= STRING", + /* 242 */ "expr ::= NOW", + /* 243 */ "expr ::= VARIABLE", + /* 244 */ "expr ::= PLUS VARIABLE", + /* 245 */ "expr ::= MINUS VARIABLE", + /* 246 */ "expr ::= BOOL", + /* 247 */ "expr ::= NULL", + /* 248 */ "expr ::= ID LP exprlist RP", + /* 249 */ "expr ::= ID LP STAR RP", + /* 250 */ "expr ::= expr IS NULL", + /* 251 */ "expr ::= expr IS NOT NULL", + /* 252 */ "expr ::= expr LT expr", + /* 253 */ "expr ::= expr GT expr", + /* 254 */ "expr ::= expr LE expr", + /* 255 */ "expr ::= expr GE expr", + /* 256 */ "expr ::= expr NE expr", + /* 257 */ "expr ::= expr EQ expr", + /* 258 */ "expr ::= expr BETWEEN expr AND expr", + /* 259 */ "expr ::= expr AND expr", + /* 260 */ "expr ::= expr OR expr", + /* 261 */ "expr ::= expr PLUS expr", + /* 262 */ "expr ::= expr MINUS expr", + /* 263 */ "expr ::= expr STAR expr", + /* 264 */ "expr ::= expr SLASH expr", + /* 265 */ "expr ::= expr REM expr", + /* 266 */ "expr ::= expr LIKE expr", + /* 267 */ "expr ::= expr MATCH expr", + /* 268 */ "expr ::= expr NMATCH expr", + /* 269 */ "expr ::= expr IN LP exprlist RP", + /* 270 */ "exprlist ::= exprlist COMMA expritem", + /* 271 */ "exprlist ::= expritem", + /* 272 */ "expritem ::= expr", + /* 273 */ "expritem ::=", + /* 274 */ "cmd ::= RESET QUERY CACHE", + /* 275 */ "cmd ::= SYNCDB ids REPLICA", + /* 276 */ "cmd ::= ALTER TABLE ids cpxName ADD COLUMN columnlist", + /* 277 */ "cmd ::= ALTER TABLE ids cpxName DROP COLUMN ids", + /* 278 */ "cmd ::= ALTER TABLE ids cpxName MODIFY COLUMN columnlist", + /* 279 */ "cmd ::= ALTER TABLE ids cpxName ADD TAG columnlist", + /* 280 */ "cmd ::= ALTER TABLE ids cpxName DROP TAG ids", + /* 281 */ "cmd ::= ALTER TABLE ids cpxName CHANGE TAG ids ids", + /* 282 */ "cmd ::= ALTER TABLE ids cpxName SET TAG ids EQ tagitem", + /* 283 */ "cmd ::= ALTER TABLE ids cpxName MODIFY TAG columnlist", + /* 284 */ "cmd ::= ALTER STABLE ids cpxName ADD COLUMN columnlist", + /* 285 */ "cmd ::= ALTER STABLE ids cpxName DROP COLUMN ids", + /* 286 */ "cmd ::= ALTER STABLE ids cpxName MODIFY COLUMN columnlist", + /* 287 */ "cmd ::= ALTER STABLE ids cpxName ADD TAG columnlist", + /* 288 */ "cmd ::= ALTER STABLE ids cpxName DROP TAG ids", + /* 289 */ "cmd ::= ALTER STABLE ids cpxName CHANGE TAG ids ids", + /* 290 */ "cmd ::= ALTER STABLE ids cpxName SET TAG ids EQ tagitem", + /* 291 */ "cmd ::= ALTER STABLE ids cpxName MODIFY TAG columnlist", + /* 292 */ "cmd ::= KILL CONNECTION INTEGER", + /* 293 */ "cmd ::= KILL STREAM INTEGER COLON INTEGER", + /* 294 */ "cmd ::= KILL QUERY INTEGER COLON INTEGER", }; #endif /* NDEBUG */ @@ -1541,7 +1543,7 @@ tSqlExprDestroy((yypminor->yy526)); break; case 264: /* union */ { -destroyAllSqlNode((yypminor->yy135)); +destroyAllSqlNode((yypminor->yy551)); } break; case 274: /* sortitem */ @@ -2011,129 +2013,130 @@ static const struct { { 248, -3 }, /* (168) select ::= LP select RP */ { 264, -1 }, /* (169) union ::= select */ { 264, -4 }, /* (170) union ::= union UNION ALL select */ - { 199, -1 }, /* (171) cmd ::= union */ - { 248, -2 }, /* (172) select ::= SELECT selcollist */ - { 265, -2 }, /* (173) sclp ::= selcollist COMMA */ - { 265, 0 }, /* (174) sclp ::= */ - { 251, -4 }, /* (175) selcollist ::= sclp distinct expr as */ - { 251, -2 }, /* (176) selcollist ::= sclp STAR */ - { 268, -2 }, /* (177) as ::= AS ids */ - { 268, -1 }, /* (178) as ::= ids */ - { 268, 0 }, /* (179) as ::= */ - { 266, -1 }, /* (180) distinct ::= DISTINCT */ - { 266, 0 }, /* (181) distinct ::= */ - { 252, -2 }, /* (182) from ::= FROM tablelist */ - { 252, -2 }, /* (183) from ::= FROM sub */ - { 270, -3 }, /* (184) sub ::= LP union RP */ - { 270, -4 }, /* (185) sub ::= LP union RP ids */ - { 270, -6 }, /* (186) sub ::= sub COMMA LP union RP ids */ - { 269, -2 }, /* (187) tablelist ::= ids cpxName */ - { 269, -3 }, /* (188) tablelist ::= ids cpxName ids */ - { 269, -4 }, /* (189) tablelist ::= tablelist COMMA ids cpxName */ - { 269, -5 }, /* (190) tablelist ::= tablelist COMMA ids cpxName ids */ - { 271, -1 }, /* (191) tmvar ::= VARIABLE */ - { 254, -4 }, /* (192) interval_option ::= intervalKey LP tmvar RP */ - { 254, -6 }, /* (193) interval_option ::= intervalKey LP tmvar COMMA tmvar RP */ - { 254, 0 }, /* (194) interval_option ::= */ - { 272, -1 }, /* (195) intervalKey ::= INTERVAL */ - { 272, -1 }, /* (196) intervalKey ::= EVERY */ - { 256, 0 }, /* (197) session_option ::= */ - { 256, -7 }, /* (198) session_option ::= SESSION LP ids cpxName COMMA tmvar RP */ - { 257, 0 }, /* (199) windowstate_option ::= */ - { 257, -4 }, /* (200) windowstate_option ::= STATE_WINDOW LP ids RP */ - { 258, 0 }, /* (201) fill_opt ::= */ - { 258, -6 }, /* (202) fill_opt ::= FILL LP ID COMMA tagitemlist RP */ - { 258, -4 }, /* (203) fill_opt ::= FILL LP ID RP */ - { 255, -4 }, /* (204) sliding_opt ::= SLIDING LP tmvar RP */ - { 255, 0 }, /* (205) sliding_opt ::= */ - { 261, 0 }, /* (206) orderby_opt ::= */ - { 261, -3 }, /* (207) orderby_opt ::= ORDER BY sortlist */ - { 273, -4 }, /* (208) sortlist ::= sortlist COMMA item sortorder */ - { 273, -2 }, /* (209) sortlist ::= item sortorder */ - { 275, -2 }, /* (210) item ::= ids cpxName */ - { 276, -1 }, /* (211) sortorder ::= ASC */ - { 276, -1 }, /* (212) sortorder ::= DESC */ - { 276, 0 }, /* (213) sortorder ::= */ - { 259, 0 }, /* (214) groupby_opt ::= */ - { 259, -3 }, /* (215) groupby_opt ::= GROUP BY grouplist */ - { 277, -3 }, /* (216) grouplist ::= grouplist COMMA item */ - { 277, -1 }, /* (217) grouplist ::= item */ - { 260, 0 }, /* (218) having_opt ::= */ - { 260, -2 }, /* (219) having_opt ::= HAVING expr */ - { 263, 0 }, /* (220) limit_opt ::= */ - { 263, -2 }, /* (221) limit_opt ::= LIMIT signed */ - { 263, -4 }, /* (222) limit_opt ::= LIMIT signed OFFSET signed */ - { 263, -4 }, /* (223) limit_opt ::= LIMIT signed COMMA signed */ - { 262, 0 }, /* (224) slimit_opt ::= */ - { 262, -2 }, /* (225) slimit_opt ::= SLIMIT signed */ - { 262, -4 }, /* (226) slimit_opt ::= SLIMIT signed SOFFSET signed */ - { 262, -4 }, /* (227) slimit_opt ::= SLIMIT signed COMMA signed */ - { 253, 0 }, /* (228) where_opt ::= */ - { 253, -2 }, /* (229) where_opt ::= WHERE expr */ - { 267, -3 }, /* (230) expr ::= LP expr RP */ - { 267, -1 }, /* (231) expr ::= ID */ - { 267, -3 }, /* (232) expr ::= ID DOT ID */ - { 267, -3 }, /* (233) expr ::= ID DOT STAR */ - { 267, -1 }, /* (234) expr ::= INTEGER */ - { 267, -2 }, /* (235) expr ::= MINUS INTEGER */ - { 267, -2 }, /* (236) expr ::= PLUS INTEGER */ - { 267, -1 }, /* (237) expr ::= FLOAT */ - { 267, -2 }, /* (238) expr ::= MINUS FLOAT */ - { 267, -2 }, /* (239) expr ::= PLUS FLOAT */ - { 267, -1 }, /* (240) expr ::= STRING */ - { 267, -1 }, /* (241) expr ::= NOW */ - { 267, -1 }, /* (242) expr ::= VARIABLE */ - { 267, -2 }, /* (243) expr ::= PLUS VARIABLE */ - { 267, -2 }, /* (244) expr ::= MINUS VARIABLE */ - { 267, -1 }, /* (245) expr ::= BOOL */ - { 267, -1 }, /* (246) expr ::= NULL */ - { 267, -4 }, /* (247) expr ::= ID LP exprlist RP */ - { 267, -4 }, /* (248) expr ::= ID LP STAR RP */ - { 267, -3 }, /* (249) expr ::= expr IS NULL */ - { 267, -4 }, /* (250) expr ::= expr IS NOT NULL */ - { 267, -3 }, /* (251) expr ::= expr LT expr */ - { 267, -3 }, /* (252) expr ::= expr GT expr */ - { 267, -3 }, /* (253) expr ::= expr LE expr */ - { 267, -3 }, /* (254) expr ::= expr GE expr */ - { 267, -3 }, /* (255) expr ::= expr NE expr */ - { 267, -3 }, /* (256) expr ::= expr EQ expr */ - { 267, -5 }, /* (257) expr ::= expr BETWEEN expr AND expr */ - { 267, -3 }, /* (258) expr ::= expr AND expr */ - { 267, -3 }, /* (259) expr ::= expr OR expr */ - { 267, -3 }, /* (260) expr ::= expr PLUS expr */ - { 267, -3 }, /* (261) expr ::= expr MINUS expr */ - { 267, -3 }, /* (262) expr ::= expr STAR expr */ - { 267, -3 }, /* (263) expr ::= expr SLASH expr */ - { 267, -3 }, /* (264) expr ::= expr REM expr */ - { 267, -3 }, /* (265) expr ::= expr LIKE expr */ - { 267, -3 }, /* (266) expr ::= expr MATCH expr */ - { 267, -3 }, /* (267) expr ::= expr NMATCH expr */ - { 267, -5 }, /* (268) expr ::= expr IN LP exprlist RP */ - { 207, -3 }, /* (269) exprlist ::= exprlist COMMA expritem */ - { 207, -1 }, /* (270) exprlist ::= expritem */ - { 278, -1 }, /* (271) expritem ::= expr */ - { 278, 0 }, /* (272) expritem ::= */ - { 199, -3 }, /* (273) cmd ::= RESET QUERY CACHE */ - { 199, -3 }, /* (274) cmd ::= SYNCDB ids REPLICA */ - { 199, -7 }, /* (275) cmd ::= ALTER TABLE ids cpxName ADD COLUMN columnlist */ - { 199, -7 }, /* (276) cmd ::= ALTER TABLE ids cpxName DROP COLUMN ids */ - { 199, -7 }, /* (277) cmd ::= ALTER TABLE ids cpxName MODIFY COLUMN columnlist */ - { 199, -7 }, /* (278) cmd ::= ALTER TABLE ids cpxName ADD TAG columnlist */ - { 199, -7 }, /* (279) cmd ::= ALTER TABLE ids cpxName DROP TAG ids */ - { 199, -8 }, /* (280) cmd ::= ALTER TABLE ids cpxName CHANGE TAG ids ids */ - { 199, -9 }, /* (281) cmd ::= ALTER TABLE ids cpxName SET TAG ids EQ tagitem */ - { 199, -7 }, /* (282) cmd ::= ALTER TABLE ids cpxName MODIFY TAG columnlist */ - { 199, -7 }, /* (283) cmd ::= ALTER STABLE ids cpxName ADD COLUMN columnlist */ - { 199, -7 }, /* (284) cmd ::= ALTER STABLE ids cpxName DROP COLUMN ids */ - { 199, -7 }, /* (285) cmd ::= ALTER STABLE ids cpxName MODIFY COLUMN columnlist */ - { 199, -7 }, /* (286) cmd ::= ALTER STABLE ids cpxName ADD TAG columnlist */ - { 199, -7 }, /* (287) cmd ::= ALTER STABLE ids cpxName DROP TAG ids */ - { 199, -8 }, /* (288) cmd ::= ALTER STABLE ids cpxName CHANGE TAG ids ids */ - { 199, -9 }, /* (289) cmd ::= ALTER STABLE ids cpxName SET TAG ids EQ tagitem */ - { 199, -7 }, /* (290) cmd ::= ALTER STABLE ids cpxName MODIFY TAG columnlist */ - { 199, -3 }, /* (291) cmd ::= KILL CONNECTION INTEGER */ - { 199, -5 }, /* (292) cmd ::= KILL STREAM INTEGER COLON INTEGER */ - { 199, -5 }, /* (293) cmd ::= KILL QUERY INTEGER COLON INTEGER */ + { 264, -3 }, /* (171) union ::= union UNION select */ + { 199, -1 }, /* (172) cmd ::= union */ + { 248, -2 }, /* (173) select ::= SELECT selcollist */ + { 265, -2 }, /* (174) sclp ::= selcollist COMMA */ + { 265, 0 }, /* (175) sclp ::= */ + { 251, -4 }, /* (176) selcollist ::= sclp distinct expr as */ + { 251, -2 }, /* (177) selcollist ::= sclp STAR */ + { 268, -2 }, /* (178) as ::= AS ids */ + { 268, -1 }, /* (179) as ::= ids */ + { 268, 0 }, /* (180) as ::= */ + { 266, -1 }, /* (181) distinct ::= DISTINCT */ + { 266, 0 }, /* (182) distinct ::= */ + { 252, -2 }, /* (183) from ::= FROM tablelist */ + { 252, -2 }, /* (184) from ::= FROM sub */ + { 270, -3 }, /* (185) sub ::= LP union RP */ + { 270, -4 }, /* (186) sub ::= LP union RP ids */ + { 270, -6 }, /* (187) sub ::= sub COMMA LP union RP ids */ + { 269, -2 }, /* (188) tablelist ::= ids cpxName */ + { 269, -3 }, /* (189) tablelist ::= ids cpxName ids */ + { 269, -4 }, /* (190) tablelist ::= tablelist COMMA ids cpxName */ + { 269, -5 }, /* (191) tablelist ::= tablelist COMMA ids cpxName ids */ + { 271, -1 }, /* (192) tmvar ::= VARIABLE */ + { 254, -4 }, /* (193) interval_option ::= intervalKey LP tmvar RP */ + { 254, -6 }, /* (194) interval_option ::= intervalKey LP tmvar COMMA tmvar RP */ + { 254, 0 }, /* (195) interval_option ::= */ + { 272, -1 }, /* (196) intervalKey ::= INTERVAL */ + { 272, -1 }, /* (197) intervalKey ::= EVERY */ + { 256, 0 }, /* (198) session_option ::= */ + { 256, -7 }, /* (199) session_option ::= SESSION LP ids cpxName COMMA tmvar RP */ + { 257, 0 }, /* (200) windowstate_option ::= */ + { 257, -4 }, /* (201) windowstate_option ::= STATE_WINDOW LP ids RP */ + { 258, 0 }, /* (202) fill_opt ::= */ + { 258, -6 }, /* (203) fill_opt ::= FILL LP ID COMMA tagitemlist RP */ + { 258, -4 }, /* (204) fill_opt ::= FILL LP ID RP */ + { 255, -4 }, /* (205) sliding_opt ::= SLIDING LP tmvar RP */ + { 255, 0 }, /* (206) sliding_opt ::= */ + { 261, 0 }, /* (207) orderby_opt ::= */ + { 261, -3 }, /* (208) orderby_opt ::= ORDER BY sortlist */ + { 273, -4 }, /* (209) sortlist ::= sortlist COMMA item sortorder */ + { 273, -2 }, /* (210) sortlist ::= item sortorder */ + { 275, -2 }, /* (211) item ::= ids cpxName */ + { 276, -1 }, /* (212) sortorder ::= ASC */ + { 276, -1 }, /* (213) sortorder ::= DESC */ + { 276, 0 }, /* (214) sortorder ::= */ + { 259, 0 }, /* (215) groupby_opt ::= */ + { 259, -3 }, /* (216) groupby_opt ::= GROUP BY grouplist */ + { 277, -3 }, /* (217) grouplist ::= grouplist COMMA item */ + { 277, -1 }, /* (218) grouplist ::= item */ + { 260, 0 }, /* (219) having_opt ::= */ + { 260, -2 }, /* (220) having_opt ::= HAVING expr */ + { 263, 0 }, /* (221) limit_opt ::= */ + { 263, -2 }, /* (222) limit_opt ::= LIMIT signed */ + { 263, -4 }, /* (223) limit_opt ::= LIMIT signed OFFSET signed */ + { 263, -4 }, /* (224) limit_opt ::= LIMIT signed COMMA signed */ + { 262, 0 }, /* (225) slimit_opt ::= */ + { 262, -2 }, /* (226) slimit_opt ::= SLIMIT signed */ + { 262, -4 }, /* (227) slimit_opt ::= SLIMIT signed SOFFSET signed */ + { 262, -4 }, /* (228) slimit_opt ::= SLIMIT signed COMMA signed */ + { 253, 0 }, /* (229) where_opt ::= */ + { 253, -2 }, /* (230) where_opt ::= WHERE expr */ + { 267, -3 }, /* (231) expr ::= LP expr RP */ + { 267, -1 }, /* (232) expr ::= ID */ + { 267, -3 }, /* (233) expr ::= ID DOT ID */ + { 267, -3 }, /* (234) expr ::= ID DOT STAR */ + { 267, -1 }, /* (235) expr ::= INTEGER */ + { 267, -2 }, /* (236) expr ::= MINUS INTEGER */ + { 267, -2 }, /* (237) expr ::= PLUS INTEGER */ + { 267, -1 }, /* (238) expr ::= FLOAT */ + { 267, -2 }, /* (239) expr ::= MINUS FLOAT */ + { 267, -2 }, /* (240) expr ::= PLUS FLOAT */ + { 267, -1 }, /* (241) expr ::= STRING */ + { 267, -1 }, /* (242) expr ::= NOW */ + { 267, -1 }, /* (243) expr ::= VARIABLE */ + { 267, -2 }, /* (244) expr ::= PLUS VARIABLE */ + { 267, -2 }, /* (245) expr ::= MINUS VARIABLE */ + { 267, -1 }, /* (246) expr ::= BOOL */ + { 267, -1 }, /* (247) expr ::= NULL */ + { 267, -4 }, /* (248) expr ::= ID LP exprlist RP */ + { 267, -4 }, /* (249) expr ::= ID LP STAR RP */ + { 267, -3 }, /* (250) expr ::= expr IS NULL */ + { 267, -4 }, /* (251) expr ::= expr IS NOT NULL */ + { 267, -3 }, /* (252) expr ::= expr LT expr */ + { 267, -3 }, /* (253) expr ::= expr GT expr */ + { 267, -3 }, /* (254) expr ::= expr LE expr */ + { 267, -3 }, /* (255) expr ::= expr GE expr */ + { 267, -3 }, /* (256) expr ::= expr NE expr */ + { 267, -3 }, /* (257) expr ::= expr EQ expr */ + { 267, -5 }, /* (258) expr ::= expr BETWEEN expr AND expr */ + { 267, -3 }, /* (259) expr ::= expr AND expr */ + { 267, -3 }, /* (260) expr ::= expr OR expr */ + { 267, -3 }, /* (261) expr ::= expr PLUS expr */ + { 267, -3 }, /* (262) expr ::= expr MINUS expr */ + { 267, -3 }, /* (263) expr ::= expr STAR expr */ + { 267, -3 }, /* (264) expr ::= expr SLASH expr */ + { 267, -3 }, /* (265) expr ::= expr REM expr */ + { 267, -3 }, /* (266) expr ::= expr LIKE expr */ + { 267, -3 }, /* (267) expr ::= expr MATCH expr */ + { 267, -3 }, /* (268) expr ::= expr NMATCH expr */ + { 267, -5 }, /* (269) expr ::= expr IN LP exprlist RP */ + { 207, -3 }, /* (270) exprlist ::= exprlist COMMA expritem */ + { 207, -1 }, /* (271) exprlist ::= expritem */ + { 278, -1 }, /* (272) expritem ::= expr */ + { 278, 0 }, /* (273) expritem ::= */ + { 199, -3 }, /* (274) cmd ::= RESET QUERY CACHE */ + { 199, -3 }, /* (275) cmd ::= SYNCDB ids REPLICA */ + { 199, -7 }, /* (276) cmd ::= ALTER TABLE ids cpxName ADD COLUMN columnlist */ + { 199, -7 }, /* (277) cmd ::= ALTER TABLE ids cpxName DROP COLUMN ids */ + { 199, -7 }, /* (278) cmd ::= ALTER TABLE ids cpxName MODIFY COLUMN columnlist */ + { 199, -7 }, /* (279) cmd ::= ALTER TABLE ids cpxName ADD TAG columnlist */ + { 199, -7 }, /* (280) cmd ::= ALTER TABLE ids cpxName DROP TAG ids */ + { 199, -8 }, /* (281) cmd ::= ALTER TABLE ids cpxName CHANGE TAG ids ids */ + { 199, -9 }, /* (282) cmd ::= ALTER TABLE ids cpxName SET TAG ids EQ tagitem */ + { 199, -7 }, /* (283) cmd ::= ALTER TABLE ids cpxName MODIFY TAG columnlist */ + { 199, -7 }, /* (284) cmd ::= ALTER STABLE ids cpxName ADD COLUMN columnlist */ + { 199, -7 }, /* (285) cmd ::= ALTER STABLE ids cpxName DROP COLUMN ids */ + { 199, -7 }, /* (286) cmd ::= ALTER STABLE ids cpxName MODIFY COLUMN columnlist */ + { 199, -7 }, /* (287) cmd ::= ALTER STABLE ids cpxName ADD TAG columnlist */ + { 199, -7 }, /* (288) cmd ::= ALTER STABLE ids cpxName DROP TAG ids */ + { 199, -8 }, /* (289) cmd ::= ALTER STABLE ids cpxName CHANGE TAG ids ids */ + { 199, -9 }, /* (290) cmd ::= ALTER STABLE ids cpxName SET TAG ids EQ tagitem */ + { 199, -7 }, /* (291) cmd ::= ALTER STABLE ids cpxName MODIFY TAG columnlist */ + { 199, -3 }, /* (292) cmd ::= KILL CONNECTION INTEGER */ + { 199, -5 }, /* (293) cmd ::= KILL STREAM INTEGER COLON INTEGER */ + { 199, -5 }, /* (294) cmd ::= KILL QUERY INTEGER COLON INTEGER */ }; static void yy_accept(yyParser*); /* Forward Declaration */ @@ -2414,7 +2417,7 @@ static void yy_reduce( break; case 55: /* ifexists ::= */ case 57: /* ifnotexists ::= */ yytestcase(yyruleno==57); - case 181: /* distinct ::= */ yytestcase(yyruleno==181); + case 182: /* distinct ::= */ yytestcase(yyruleno==182); { yymsp[1].minor.yy0.n = 0;} break; case 56: /* ifnotexists ::= IF NOT EXISTS */ @@ -2754,140 +2757,144 @@ static void yy_reduce( {yymsp[-2].minor.yy488 = yymsp[-1].minor.yy488;} break; case 169: /* union ::= select */ -{ yylhsminor.yy135 = setSubclause(NULL, yymsp[0].minor.yy488); } - yymsp[0].minor.yy135 = yylhsminor.yy135; +{ yylhsminor.yy551 = setSubclause(NULL, yymsp[0].minor.yy488); } + yymsp[0].minor.yy551 = yylhsminor.yy551; break; case 170: /* union ::= union UNION ALL select */ -{ yylhsminor.yy135 = appendSelectClause(yymsp[-3].minor.yy135, yymsp[0].minor.yy488); } - yymsp[-3].minor.yy135 = yylhsminor.yy135; +{ yylhsminor.yy551 = appendSelectClause(yymsp[-3].minor.yy551, SQL_TYPE_UNIONALL, yymsp[0].minor.yy488); } + yymsp[-3].minor.yy551 = yylhsminor.yy551; + break; + case 171: /* union ::= union UNION select */ +{ yylhsminor.yy551 = appendSelectClause(yymsp[-2].minor.yy551, SQL_TYPE_UNION, yymsp[0].minor.yy488); } + yymsp[-2].minor.yy551 = yylhsminor.yy551; break; - case 171: /* cmd ::= union */ -{ setSqlInfo(pInfo, yymsp[0].minor.yy135, NULL, TSDB_SQL_SELECT); } + case 172: /* cmd ::= union */ +{ setSqlInfo(pInfo, yymsp[0].minor.yy551, NULL, TSDB_SQL_SELECT); } break; - case 172: /* select ::= SELECT selcollist */ + case 173: /* select ::= SELECT selcollist */ { yylhsminor.yy488 = tSetQuerySqlNode(&yymsp[-1].minor.yy0, yymsp[0].minor.yy135, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); } yymsp[-1].minor.yy488 = yylhsminor.yy488; break; - case 173: /* sclp ::= selcollist COMMA */ + case 174: /* sclp ::= selcollist COMMA */ {yylhsminor.yy135 = yymsp[-1].minor.yy135;} yymsp[-1].minor.yy135 = yylhsminor.yy135; break; - case 174: /* sclp ::= */ - case 206: /* orderby_opt ::= */ yytestcase(yyruleno==206); + case 175: /* sclp ::= */ + case 207: /* orderby_opt ::= */ yytestcase(yyruleno==207); {yymsp[1].minor.yy135 = 0;} break; - case 175: /* selcollist ::= sclp distinct expr as */ + case 176: /* selcollist ::= sclp distinct expr as */ { yylhsminor.yy135 = tSqlExprListAppend(yymsp[-3].minor.yy135, yymsp[-1].minor.yy526, yymsp[-2].minor.yy0.n? &yymsp[-2].minor.yy0:0, yymsp[0].minor.yy0.n?&yymsp[0].minor.yy0:0); } yymsp[-3].minor.yy135 = yylhsminor.yy135; break; - case 176: /* selcollist ::= sclp STAR */ + case 177: /* selcollist ::= sclp STAR */ { tSqlExpr *pNode = tSqlExprCreateIdValue(NULL, TK_ALL); yylhsminor.yy135 = tSqlExprListAppend(yymsp[-1].minor.yy135, pNode, 0, 0); } yymsp[-1].minor.yy135 = yylhsminor.yy135; break; - case 177: /* as ::= AS ids */ + case 178: /* as ::= AS ids */ { yymsp[-1].minor.yy0 = yymsp[0].minor.yy0; } break; - case 178: /* as ::= ids */ + case 179: /* as ::= ids */ { yylhsminor.yy0 = yymsp[0].minor.yy0; } yymsp[0].minor.yy0 = yylhsminor.yy0; break; - case 179: /* as ::= */ + case 180: /* as ::= */ { yymsp[1].minor.yy0.n = 0; } break; - case 180: /* distinct ::= DISTINCT */ + case 181: /* distinct ::= DISTINCT */ { yylhsminor.yy0 = yymsp[0].minor.yy0; } yymsp[0].minor.yy0 = yylhsminor.yy0; break; - case 182: /* from ::= FROM tablelist */ - case 183: /* from ::= FROM sub */ yytestcase(yyruleno==183); + case 183: /* from ::= FROM tablelist */ + case 184: /* from ::= FROM sub */ yytestcase(yyruleno==184); {yymsp[-1].minor.yy460 = yymsp[0].minor.yy460;} break; - case 184: /* sub ::= LP union RP */ -{yymsp[-2].minor.yy460 = addSubquery(NULL, yymsp[-1].minor.yy135, NULL);} + case 185: /* sub ::= LP union RP */ +{yymsp[-2].minor.yy460 = addSubquery(NULL, yymsp[-1].minor.yy551, NULL);} break; - case 185: /* sub ::= LP union RP ids */ -{yymsp[-3].minor.yy460 = addSubquery(NULL, yymsp[-2].minor.yy135, &yymsp[0].minor.yy0);} + case 186: /* sub ::= LP union RP ids */ +{yymsp[-3].minor.yy460 = addSubquery(NULL, yymsp[-2].minor.yy551, &yymsp[0].minor.yy0);} break; - case 186: /* sub ::= sub COMMA LP union RP ids */ -{yylhsminor.yy460 = addSubquery(yymsp[-5].minor.yy460, yymsp[-2].minor.yy135, &yymsp[0].minor.yy0);} + case 187: /* sub ::= sub COMMA LP union RP ids */ +{yylhsminor.yy460 = addSubquery(yymsp[-5].minor.yy460, yymsp[-2].minor.yy551, &yymsp[0].minor.yy0);} yymsp[-5].minor.yy460 = yylhsminor.yy460; break; - case 187: /* tablelist ::= ids cpxName */ + case 188: /* tablelist ::= ids cpxName */ { yymsp[-1].minor.yy0.n += yymsp[0].minor.yy0.n; yylhsminor.yy460 = setTableNameList(NULL, &yymsp[-1].minor.yy0, NULL); } yymsp[-1].minor.yy460 = yylhsminor.yy460; break; - case 188: /* tablelist ::= ids cpxName ids */ + case 189: /* tablelist ::= ids cpxName ids */ { yymsp[-2].minor.yy0.n += yymsp[-1].minor.yy0.n; yylhsminor.yy460 = setTableNameList(NULL, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0); } yymsp[-2].minor.yy460 = yylhsminor.yy460; break; - case 189: /* tablelist ::= tablelist COMMA ids cpxName */ + case 190: /* tablelist ::= tablelist COMMA ids cpxName */ { yymsp[-1].minor.yy0.n += yymsp[0].minor.yy0.n; yylhsminor.yy460 = setTableNameList(yymsp[-3].minor.yy460, &yymsp[-1].minor.yy0, NULL); } yymsp[-3].minor.yy460 = yylhsminor.yy460; break; - case 190: /* tablelist ::= tablelist COMMA ids cpxName ids */ + case 191: /* tablelist ::= tablelist COMMA ids cpxName ids */ { yymsp[-2].minor.yy0.n += yymsp[-1].minor.yy0.n; yylhsminor.yy460 = setTableNameList(yymsp[-4].minor.yy460, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0); } yymsp[-4].minor.yy460 = yylhsminor.yy460; break; - case 191: /* tmvar ::= VARIABLE */ + case 192: /* tmvar ::= VARIABLE */ {yylhsminor.yy0 = yymsp[0].minor.yy0;} yymsp[0].minor.yy0 = yylhsminor.yy0; break; - case 192: /* interval_option ::= intervalKey LP tmvar RP */ + case 193: /* interval_option ::= intervalKey LP tmvar RP */ {yylhsminor.yy160.interval = yymsp[-1].minor.yy0; yylhsminor.yy160.offset.n = 0; yylhsminor.yy160.token = yymsp[-3].minor.yy262;} yymsp[-3].minor.yy160 = yylhsminor.yy160; break; - case 193: /* interval_option ::= intervalKey LP tmvar COMMA tmvar RP */ + case 194: /* interval_option ::= intervalKey LP tmvar COMMA tmvar RP */ {yylhsminor.yy160.interval = yymsp[-3].minor.yy0; yylhsminor.yy160.offset = yymsp[-1].minor.yy0; yylhsminor.yy160.token = yymsp[-5].minor.yy262;} yymsp[-5].minor.yy160 = yylhsminor.yy160; break; - case 194: /* interval_option ::= */ + case 195: /* interval_option ::= */ {memset(&yymsp[1].minor.yy160, 0, sizeof(yymsp[1].minor.yy160));} break; - case 195: /* intervalKey ::= INTERVAL */ + case 196: /* intervalKey ::= INTERVAL */ {yymsp[0].minor.yy262 = TK_INTERVAL;} break; - case 196: /* intervalKey ::= EVERY */ + case 197: /* intervalKey ::= EVERY */ {yymsp[0].minor.yy262 = TK_EVERY; } break; - case 197: /* session_option ::= */ + case 198: /* session_option ::= */ {yymsp[1].minor.yy511.col.n = 0; yymsp[1].minor.yy511.gap.n = 0;} break; - case 198: /* session_option ::= SESSION LP ids cpxName COMMA tmvar RP */ + case 199: /* session_option ::= SESSION LP ids cpxName COMMA tmvar RP */ { yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n; yymsp[-6].minor.yy511.col = yymsp[-4].minor.yy0; yymsp[-6].minor.yy511.gap = yymsp[-1].minor.yy0; } break; - case 199: /* windowstate_option ::= */ + case 200: /* windowstate_option ::= */ { yymsp[1].minor.yy258.col.n = 0; yymsp[1].minor.yy258.col.z = NULL;} break; - case 200: /* windowstate_option ::= STATE_WINDOW LP ids RP */ + case 201: /* windowstate_option ::= STATE_WINDOW LP ids RP */ { yymsp[-3].minor.yy258.col = yymsp[-1].minor.yy0; } break; - case 201: /* fill_opt ::= */ + case 202: /* fill_opt ::= */ { yymsp[1].minor.yy135 = 0; } break; - case 202: /* fill_opt ::= FILL LP ID COMMA tagitemlist RP */ + case 203: /* fill_opt ::= FILL LP ID COMMA tagitemlist RP */ { SVariant A = {0}; toTSDBType(yymsp[-3].minor.yy0.type); @@ -2897,34 +2904,34 @@ static void yy_reduce( yymsp[-5].minor.yy135 = yymsp[-1].minor.yy135; } break; - case 203: /* fill_opt ::= FILL LP ID RP */ + case 204: /* fill_opt ::= FILL LP ID RP */ { toTSDBType(yymsp[-1].minor.yy0.type); yymsp[-3].minor.yy135 = tListItemAppendToken(NULL, &yymsp[-1].minor.yy0, -1); } break; - case 204: /* sliding_opt ::= SLIDING LP tmvar RP */ + case 205: /* sliding_opt ::= SLIDING LP tmvar RP */ {yymsp[-3].minor.yy0 = yymsp[-1].minor.yy0; } break; - case 205: /* sliding_opt ::= */ + case 206: /* sliding_opt ::= */ {yymsp[1].minor.yy0.n = 0; yymsp[1].minor.yy0.z = NULL; yymsp[1].minor.yy0.type = 0; } break; - case 207: /* orderby_opt ::= ORDER BY sortlist */ + case 208: /* orderby_opt ::= ORDER BY sortlist */ {yymsp[-2].minor.yy135 = yymsp[0].minor.yy135;} break; - case 208: /* sortlist ::= sortlist COMMA item sortorder */ + case 209: /* sortlist ::= sortlist COMMA item sortorder */ { yylhsminor.yy135 = tListItemAppend(yymsp[-3].minor.yy135, &yymsp[-1].minor.yy191, yymsp[0].minor.yy130); } yymsp[-3].minor.yy135 = yylhsminor.yy135; break; - case 209: /* sortlist ::= item sortorder */ + case 210: /* sortlist ::= item sortorder */ { yylhsminor.yy135 = tListItemAppend(NULL, &yymsp[-1].minor.yy191, yymsp[0].minor.yy130); } yymsp[-1].minor.yy135 = yylhsminor.yy135; break; - case 210: /* item ::= ids cpxName */ + case 211: /* item ::= ids cpxName */ { toTSDBType(yymsp[-1].minor.yy0.type); yymsp[-1].minor.yy0.n += yymsp[0].minor.yy0.n; @@ -2933,260 +2940,258 @@ static void yy_reduce( } yymsp[-1].minor.yy191 = yylhsminor.yy191; break; - case 211: /* sortorder ::= ASC */ + case 212: /* sortorder ::= ASC */ { yymsp[0].minor.yy130 = TSDB_ORDER_ASC; } break; - case 212: /* sortorder ::= DESC */ + case 213: /* sortorder ::= DESC */ { yymsp[0].minor.yy130 = TSDB_ORDER_DESC;} break; - case 213: /* sortorder ::= */ + case 214: /* sortorder ::= */ { yymsp[1].minor.yy130 = TSDB_ORDER_ASC; } break; - case 214: /* groupby_opt ::= */ + case 215: /* groupby_opt ::= */ { yymsp[1].minor.yy135 = 0;} break; - case 215: /* groupby_opt ::= GROUP BY grouplist */ + case 216: /* groupby_opt ::= GROUP BY grouplist */ { yymsp[-2].minor.yy135 = yymsp[0].minor.yy135;} break; - case 216: /* grouplist ::= grouplist COMMA item */ + case 217: /* grouplist ::= grouplist COMMA item */ { yylhsminor.yy135 = tListItemAppend(yymsp[-2].minor.yy135, &yymsp[0].minor.yy191, -1); } yymsp[-2].minor.yy135 = yylhsminor.yy135; break; - case 217: /* grouplist ::= item */ + case 218: /* grouplist ::= item */ { yylhsminor.yy135 = tListItemAppend(NULL, &yymsp[0].minor.yy191, -1); } yymsp[0].minor.yy135 = yylhsminor.yy135; break; - case 218: /* having_opt ::= */ - case 228: /* where_opt ::= */ yytestcase(yyruleno==228); - case 272: /* expritem ::= */ yytestcase(yyruleno==272); + case 219: /* having_opt ::= */ + case 229: /* where_opt ::= */ yytestcase(yyruleno==229); + case 273: /* expritem ::= */ yytestcase(yyruleno==273); {yymsp[1].minor.yy526 = 0;} break; - case 219: /* having_opt ::= HAVING expr */ - case 229: /* where_opt ::= WHERE expr */ yytestcase(yyruleno==229); + case 220: /* having_opt ::= HAVING expr */ + case 230: /* where_opt ::= WHERE expr */ yytestcase(yyruleno==230); {yymsp[-1].minor.yy526 = yymsp[0].minor.yy526;} break; - case 220: /* limit_opt ::= */ - case 224: /* slimit_opt ::= */ yytestcase(yyruleno==224); + case 221: /* limit_opt ::= */ + case 225: /* slimit_opt ::= */ yytestcase(yyruleno==225); {yymsp[1].minor.yy247.limit = -1; yymsp[1].minor.yy247.offset = 0;} break; - case 221: /* limit_opt ::= LIMIT signed */ - case 225: /* slimit_opt ::= SLIMIT signed */ yytestcase(yyruleno==225); + case 222: /* limit_opt ::= LIMIT signed */ + case 226: /* slimit_opt ::= SLIMIT signed */ yytestcase(yyruleno==226); {yymsp[-1].minor.yy247.limit = yymsp[0].minor.yy531; yymsp[-1].minor.yy247.offset = 0;} break; - case 222: /* limit_opt ::= LIMIT signed OFFSET signed */ + case 223: /* limit_opt ::= LIMIT signed OFFSET signed */ { yymsp[-3].minor.yy247.limit = yymsp[-2].minor.yy531; yymsp[-3].minor.yy247.offset = yymsp[0].minor.yy531;} break; - case 223: /* limit_opt ::= LIMIT signed COMMA signed */ + case 224: /* limit_opt ::= LIMIT signed COMMA signed */ { yymsp[-3].minor.yy247.limit = yymsp[0].minor.yy531; yymsp[-3].minor.yy247.offset = yymsp[-2].minor.yy531;} break; - case 226: /* slimit_opt ::= SLIMIT signed SOFFSET signed */ + case 227: /* slimit_opt ::= SLIMIT signed SOFFSET signed */ {yymsp[-3].minor.yy247.limit = yymsp[-2].minor.yy531; yymsp[-3].minor.yy247.offset = yymsp[0].minor.yy531;} break; - case 227: /* slimit_opt ::= SLIMIT signed COMMA signed */ + case 228: /* slimit_opt ::= SLIMIT signed COMMA signed */ {yymsp[-3].minor.yy247.limit = yymsp[0].minor.yy531; yymsp[-3].minor.yy247.offset = yymsp[-2].minor.yy531;} break; - case 230: /* expr ::= LP expr RP */ + case 231: /* expr ::= LP expr RP */ {yylhsminor.yy526 = yymsp[-1].minor.yy526; yylhsminor.yy526->exprToken.z = yymsp[-2].minor.yy0.z; yylhsminor.yy526->exprToken.n = (yymsp[0].minor.yy0.z - yymsp[-2].minor.yy0.z + 1);} yymsp[-2].minor.yy526 = yylhsminor.yy526; break; - case 231: /* expr ::= ID */ + case 232: /* expr ::= ID */ { yylhsminor.yy526 = tSqlExprCreateIdValue(&yymsp[0].minor.yy0, TK_ID);} yymsp[0].minor.yy526 = yylhsminor.yy526; break; - case 232: /* expr ::= ID DOT ID */ + case 233: /* expr ::= ID DOT ID */ { yymsp[-2].minor.yy0.n += (1+yymsp[0].minor.yy0.n); yylhsminor.yy526 = tSqlExprCreateIdValue(&yymsp[-2].minor.yy0, TK_ID);} yymsp[-2].minor.yy526 = yylhsminor.yy526; break; - case 233: /* expr ::= ID DOT STAR */ + case 234: /* expr ::= ID DOT STAR */ { yymsp[-2].minor.yy0.n += (1+yymsp[0].minor.yy0.n); yylhsminor.yy526 = tSqlExprCreateIdValue(&yymsp[-2].minor.yy0, TK_ALL);} yymsp[-2].minor.yy526 = yylhsminor.yy526; break; - case 234: /* expr ::= INTEGER */ + case 235: /* expr ::= INTEGER */ { yylhsminor.yy526 = tSqlExprCreateIdValue(&yymsp[0].minor.yy0, TK_INTEGER);} yymsp[0].minor.yy526 = yylhsminor.yy526; break; - case 235: /* expr ::= MINUS INTEGER */ - case 236: /* expr ::= PLUS INTEGER */ yytestcase(yyruleno==236); + case 236: /* expr ::= MINUS INTEGER */ + case 237: /* expr ::= PLUS INTEGER */ yytestcase(yyruleno==237); { yymsp[-1].minor.yy0.n += yymsp[0].minor.yy0.n; yymsp[-1].minor.yy0.type = TK_INTEGER; yylhsminor.yy526 = tSqlExprCreateIdValue(&yymsp[-1].minor.yy0, TK_INTEGER);} yymsp[-1].minor.yy526 = yylhsminor.yy526; break; - case 237: /* expr ::= FLOAT */ + case 238: /* expr ::= FLOAT */ { yylhsminor.yy526 = tSqlExprCreateIdValue(&yymsp[0].minor.yy0, TK_FLOAT);} yymsp[0].minor.yy526 = yylhsminor.yy526; break; - case 238: /* expr ::= MINUS FLOAT */ - case 239: /* expr ::= PLUS FLOAT */ yytestcase(yyruleno==239); + case 239: /* expr ::= MINUS FLOAT */ + case 240: /* expr ::= PLUS FLOAT */ yytestcase(yyruleno==240); { yymsp[-1].minor.yy0.n += yymsp[0].minor.yy0.n; yymsp[-1].minor.yy0.type = TK_FLOAT; yylhsminor.yy526 = tSqlExprCreateIdValue(&yymsp[-1].minor.yy0, TK_FLOAT);} yymsp[-1].minor.yy526 = yylhsminor.yy526; break; - case 240: /* expr ::= STRING */ + case 241: /* expr ::= STRING */ { yylhsminor.yy526 = tSqlExprCreateIdValue(&yymsp[0].minor.yy0, TK_STRING);} yymsp[0].minor.yy526 = yylhsminor.yy526; break; - case 241: /* expr ::= NOW */ + case 242: /* expr ::= NOW */ { yylhsminor.yy526 = tSqlExprCreateIdValue(&yymsp[0].minor.yy0, TK_NOW); } yymsp[0].minor.yy526 = yylhsminor.yy526; break; - case 242: /* expr ::= VARIABLE */ + case 243: /* expr ::= VARIABLE */ { yylhsminor.yy526 = tSqlExprCreateIdValue(&yymsp[0].minor.yy0, TK_VARIABLE);} yymsp[0].minor.yy526 = yylhsminor.yy526; break; - case 243: /* expr ::= PLUS VARIABLE */ - case 244: /* expr ::= MINUS VARIABLE */ yytestcase(yyruleno==244); + case 244: /* expr ::= PLUS VARIABLE */ + case 245: /* expr ::= MINUS VARIABLE */ yytestcase(yyruleno==245); { yymsp[-1].minor.yy0.n += yymsp[0].minor.yy0.n; yymsp[-1].minor.yy0.type = TK_VARIABLE; yylhsminor.yy526 = tSqlExprCreateIdValue(&yymsp[-1].minor.yy0, TK_VARIABLE);} yymsp[-1].minor.yy526 = yylhsminor.yy526; break; - case 245: /* expr ::= BOOL */ + case 246: /* expr ::= BOOL */ { yylhsminor.yy526 = tSqlExprCreateIdValue(&yymsp[0].minor.yy0, TK_BOOL);} yymsp[0].minor.yy526 = yylhsminor.yy526; break; - case 246: /* expr ::= NULL */ + case 247: /* expr ::= NULL */ { yylhsminor.yy526 = tSqlExprCreateIdValue(&yymsp[0].minor.yy0, TK_NULL);} yymsp[0].minor.yy526 = yylhsminor.yy526; break; - case 247: /* expr ::= ID LP exprlist RP */ + case 248: /* expr ::= ID LP exprlist RP */ { tRecordFuncName(pInfo->funcs, &yymsp[-3].minor.yy0); yylhsminor.yy526 = tSqlExprCreateFunction(yymsp[-1].minor.yy135, &yymsp[-3].minor.yy0, &yymsp[0].minor.yy0, yymsp[-3].minor.yy0.type); } yymsp[-3].minor.yy526 = yylhsminor.yy526; break; - case 248: /* expr ::= ID LP STAR RP */ + case 249: /* expr ::= ID LP STAR RP */ { tRecordFuncName(pInfo->funcs, &yymsp[-3].minor.yy0); yylhsminor.yy526 = tSqlExprCreateFunction(NULL, &yymsp[-3].minor.yy0, &yymsp[0].minor.yy0, yymsp[-3].minor.yy0.type); } yymsp[-3].minor.yy526 = yylhsminor.yy526; break; - case 249: /* expr ::= expr IS NULL */ + case 250: /* expr ::= expr IS NULL */ {yylhsminor.yy526 = tSqlExprCreate(yymsp[-2].minor.yy526, NULL, TK_ISNULL);} yymsp[-2].minor.yy526 = yylhsminor.yy526; break; - case 250: /* expr ::= expr IS NOT NULL */ + case 251: /* expr ::= expr IS NOT NULL */ {yylhsminor.yy526 = tSqlExprCreate(yymsp[-3].minor.yy526, NULL, TK_NOTNULL);} yymsp[-3].minor.yy526 = yylhsminor.yy526; break; - case 251: /* expr ::= expr LT expr */ + case 252: /* expr ::= expr LT expr */ {yylhsminor.yy526 = tSqlExprCreate(yymsp[-2].minor.yy526, yymsp[0].minor.yy526, TK_LT);} yymsp[-2].minor.yy526 = yylhsminor.yy526; break; - case 252: /* expr ::= expr GT expr */ + case 253: /* expr ::= expr GT expr */ {yylhsminor.yy526 = tSqlExprCreate(yymsp[-2].minor.yy526, yymsp[0].minor.yy526, TK_GT);} yymsp[-2].minor.yy526 = yylhsminor.yy526; break; - case 253: /* expr ::= expr LE expr */ + case 254: /* expr ::= expr LE expr */ {yylhsminor.yy526 = tSqlExprCreate(yymsp[-2].minor.yy526, yymsp[0].minor.yy526, TK_LE);} yymsp[-2].minor.yy526 = yylhsminor.yy526; break; - case 254: /* expr ::= expr GE expr */ + case 255: /* expr ::= expr GE expr */ {yylhsminor.yy526 = tSqlExprCreate(yymsp[-2].minor.yy526, yymsp[0].minor.yy526, TK_GE);} yymsp[-2].minor.yy526 = yylhsminor.yy526; break; - case 255: /* expr ::= expr NE expr */ + case 256: /* expr ::= expr NE expr */ {yylhsminor.yy526 = tSqlExprCreate(yymsp[-2].minor.yy526, yymsp[0].minor.yy526, TK_NE);} yymsp[-2].minor.yy526 = yylhsminor.yy526; break; - case 256: /* expr ::= expr EQ expr */ + case 257: /* expr ::= expr EQ expr */ {yylhsminor.yy526 = tSqlExprCreate(yymsp[-2].minor.yy526, yymsp[0].minor.yy526, TK_EQ);} yymsp[-2].minor.yy526 = yylhsminor.yy526; break; - case 257: /* expr ::= expr BETWEEN expr AND expr */ + case 258: /* expr ::= expr BETWEEN expr AND expr */ { tSqlExpr* X2 = tSqlExprClone(yymsp[-4].minor.yy526); yylhsminor.yy526 = tSqlExprCreate(tSqlExprCreate(yymsp[-4].minor.yy526, yymsp[-2].minor.yy526, TK_GE), tSqlExprCreate(X2, yymsp[0].minor.yy526, TK_LE), TK_AND);} yymsp[-4].minor.yy526 = yylhsminor.yy526; break; - case 258: /* expr ::= expr AND expr */ + case 259: /* expr ::= expr AND expr */ {yylhsminor.yy526 = tSqlExprCreate(yymsp[-2].minor.yy526, yymsp[0].minor.yy526, TK_AND);} yymsp[-2].minor.yy526 = yylhsminor.yy526; break; - case 259: /* expr ::= expr OR expr */ + case 260: /* expr ::= expr OR expr */ {yylhsminor.yy526 = tSqlExprCreate(yymsp[-2].minor.yy526, yymsp[0].minor.yy526, TK_OR); } yymsp[-2].minor.yy526 = yylhsminor.yy526; break; - case 260: /* expr ::= expr PLUS expr */ + case 261: /* expr ::= expr PLUS expr */ {yylhsminor.yy526 = tSqlExprCreate(yymsp[-2].minor.yy526, yymsp[0].minor.yy526, TK_PLUS); } yymsp[-2].minor.yy526 = yylhsminor.yy526; break; - case 261: /* expr ::= expr MINUS expr */ + case 262: /* expr ::= expr MINUS expr */ {yylhsminor.yy526 = tSqlExprCreate(yymsp[-2].minor.yy526, yymsp[0].minor.yy526, TK_MINUS); } yymsp[-2].minor.yy526 = yylhsminor.yy526; break; - case 262: /* expr ::= expr STAR expr */ + case 263: /* expr ::= expr STAR expr */ {yylhsminor.yy526 = tSqlExprCreate(yymsp[-2].minor.yy526, yymsp[0].minor.yy526, TK_STAR); } yymsp[-2].minor.yy526 = yylhsminor.yy526; break; - case 263: /* expr ::= expr SLASH expr */ + case 264: /* expr ::= expr SLASH expr */ {yylhsminor.yy526 = tSqlExprCreate(yymsp[-2].minor.yy526, yymsp[0].minor.yy526, TK_DIVIDE);} yymsp[-2].minor.yy526 = yylhsminor.yy526; break; - case 264: /* expr ::= expr REM expr */ + case 265: /* expr ::= expr REM expr */ {yylhsminor.yy526 = tSqlExprCreate(yymsp[-2].minor.yy526, yymsp[0].minor.yy526, TK_REM); } yymsp[-2].minor.yy526 = yylhsminor.yy526; break; - case 265: /* expr ::= expr LIKE expr */ + case 266: /* expr ::= expr LIKE expr */ {yylhsminor.yy526 = tSqlExprCreate(yymsp[-2].minor.yy526, yymsp[0].minor.yy526, TK_LIKE); } yymsp[-2].minor.yy526 = yylhsminor.yy526; break; - case 266: /* expr ::= expr MATCH expr */ + case 267: /* expr ::= expr MATCH expr */ {yylhsminor.yy526 = tSqlExprCreate(yymsp[-2].minor.yy526, yymsp[0].minor.yy526, TK_MATCH); } yymsp[-2].minor.yy526 = yylhsminor.yy526; break; - case 267: /* expr ::= expr NMATCH expr */ + case 268: /* expr ::= expr NMATCH expr */ {yylhsminor.yy526 = tSqlExprCreate(yymsp[-2].minor.yy526, yymsp[0].minor.yy526, TK_NMATCH); } yymsp[-2].minor.yy526 = yylhsminor.yy526; break; - case 268: /* expr ::= expr IN LP exprlist RP */ + case 269: /* expr ::= expr IN LP exprlist RP */ {yylhsminor.yy526 = tSqlExprCreate(yymsp[-4].minor.yy526, (tSqlExpr*)yymsp[-1].minor.yy135, TK_IN); } yymsp[-4].minor.yy526 = yylhsminor.yy526; break; - case 269: /* exprlist ::= exprlist COMMA expritem */ + case 270: /* exprlist ::= exprlist COMMA expritem */ {yylhsminor.yy135 = tSqlExprListAppend(yymsp[-2].minor.yy135,yymsp[0].minor.yy526,0, 0);} yymsp[-2].minor.yy135 = yylhsminor.yy135; break; - case 270: /* exprlist ::= expritem */ + case 271: /* exprlist ::= expritem */ {yylhsminor.yy135 = tSqlExprListAppend(0,yymsp[0].minor.yy526,0, 0);} yymsp[0].minor.yy135 = yylhsminor.yy135; break; - case 271: /* expritem ::= expr */ + case 272: /* expritem ::= expr */ {yylhsminor.yy526 = yymsp[0].minor.yy526;} yymsp[0].minor.yy526 = yylhsminor.yy526; break; - case 273: /* cmd ::= RESET QUERY CACHE */ + case 274: /* cmd ::= RESET QUERY CACHE */ { setDCLSqlElems(pInfo, TSDB_SQL_RESET_CACHE, 0);} break; - case 274: /* cmd ::= SYNCDB ids REPLICA */ + case 275: /* cmd ::= SYNCDB ids REPLICA */ { setDCLSqlElems(pInfo, TSDB_SQL_SYNC_DB_REPLICA, 1, &yymsp[-1].minor.yy0);} break; - case 275: /* cmd ::= ALTER TABLE ids cpxName ADD COLUMN columnlist */ + case 276: /* cmd ::= ALTER TABLE ids cpxName ADD COLUMN columnlist */ { yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n; SAlterTableInfo* pAlterTable = tSetAlterTableInfo(&yymsp[-4].minor.yy0, yymsp[0].minor.yy135, NULL, TSDB_ALTER_TABLE_ADD_COLUMN, -1); setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE); } break; - case 276: /* cmd ::= ALTER TABLE ids cpxName DROP COLUMN ids */ + case 277: /* cmd ::= ALTER TABLE ids cpxName DROP COLUMN ids */ { yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n; - toTSDBType(yymsp[0].minor.yy0.type); SArray* K = tListItemAppendToken(NULL, &yymsp[0].minor.yy0, -1); - SAlterTableInfo* pAlterTable = tSetAlterTableInfo(&yymsp[-4].minor.yy0, NULL, K, TSDB_ALTER_TABLE_DROP_COLUMN, -1); setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE); } break; - case 277: /* cmd ::= ALTER TABLE ids cpxName MODIFY COLUMN columnlist */ + case 278: /* cmd ::= ALTER TABLE ids cpxName MODIFY COLUMN columnlist */ { yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n; SAlterTableInfo* pAlterTable = tSetAlterTableInfo(&yymsp[-4].minor.yy0, yymsp[0].minor.yy135, NULL, TSDB_ALTER_TABLE_CHANGE_COLUMN, -1); setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE); } break; - case 278: /* cmd ::= ALTER TABLE ids cpxName ADD TAG columnlist */ + case 279: /* cmd ::= ALTER TABLE ids cpxName ADD TAG columnlist */ { yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n; SAlterTableInfo* pAlterTable = tSetAlterTableInfo(&yymsp[-4].minor.yy0, yymsp[0].minor.yy135, NULL, TSDB_ALTER_TABLE_ADD_TAG_COLUMN, -1); setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE); } break; - case 279: /* cmd ::= ALTER TABLE ids cpxName DROP TAG ids */ + case 280: /* cmd ::= ALTER TABLE ids cpxName DROP TAG ids */ { yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n; @@ -3197,7 +3202,7 @@ static void yy_reduce( setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE); } break; - case 280: /* cmd ::= ALTER TABLE ids cpxName CHANGE TAG ids ids */ + case 281: /* cmd ::= ALTER TABLE ids cpxName CHANGE TAG ids ids */ { yymsp[-5].minor.yy0.n += yymsp[-4].minor.yy0.n; @@ -3211,7 +3216,7 @@ static void yy_reduce( setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE); } break; - case 281: /* cmd ::= ALTER TABLE ids cpxName SET TAG ids EQ tagitem */ + case 282: /* cmd ::= ALTER TABLE ids cpxName SET TAG ids EQ tagitem */ { yymsp[-6].minor.yy0.n += yymsp[-5].minor.yy0.n; @@ -3223,21 +3228,21 @@ static void yy_reduce( setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE); } break; - case 282: /* cmd ::= ALTER TABLE ids cpxName MODIFY TAG columnlist */ + case 283: /* cmd ::= ALTER TABLE ids cpxName MODIFY TAG columnlist */ { yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n; SAlterTableInfo* pAlterTable = tSetAlterTableInfo(&yymsp[-4].minor.yy0, yymsp[0].minor.yy135, NULL, TSDB_ALTER_TABLE_MODIFY_TAG_COLUMN, -1); setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE); } break; - case 283: /* cmd ::= ALTER STABLE ids cpxName ADD COLUMN columnlist */ + case 284: /* cmd ::= ALTER STABLE ids cpxName ADD COLUMN columnlist */ { yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n; SAlterTableInfo* pAlterTable = tSetAlterTableInfo(&yymsp[-4].minor.yy0, yymsp[0].minor.yy135, NULL, TSDB_ALTER_TABLE_ADD_COLUMN, TSDB_SUPER_TABLE); setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE); } break; - case 284: /* cmd ::= ALTER STABLE ids cpxName DROP COLUMN ids */ + case 285: /* cmd ::= ALTER STABLE ids cpxName DROP COLUMN ids */ { yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n; @@ -3248,21 +3253,21 @@ static void yy_reduce( setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE); } break; - case 285: /* cmd ::= ALTER STABLE ids cpxName MODIFY COLUMN columnlist */ + case 286: /* cmd ::= ALTER STABLE ids cpxName MODIFY COLUMN columnlist */ { yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n; SAlterTableInfo* pAlterTable = tSetAlterTableInfo(&yymsp[-4].minor.yy0, yymsp[0].minor.yy135, NULL, TSDB_ALTER_TABLE_CHANGE_COLUMN, TSDB_SUPER_TABLE); setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE); } break; - case 286: /* cmd ::= ALTER STABLE ids cpxName ADD TAG columnlist */ + case 287: /* cmd ::= ALTER STABLE ids cpxName ADD TAG columnlist */ { yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n; SAlterTableInfo* pAlterTable = tSetAlterTableInfo(&yymsp[-4].minor.yy0, yymsp[0].minor.yy135, NULL, TSDB_ALTER_TABLE_ADD_TAG_COLUMN, TSDB_SUPER_TABLE); setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE); } break; - case 287: /* cmd ::= ALTER STABLE ids cpxName DROP TAG ids */ + case 288: /* cmd ::= ALTER STABLE ids cpxName DROP TAG ids */ { yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n; @@ -3273,7 +3278,7 @@ static void yy_reduce( setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE); } break; - case 288: /* cmd ::= ALTER STABLE ids cpxName CHANGE TAG ids ids */ + case 289: /* cmd ::= ALTER STABLE ids cpxName CHANGE TAG ids ids */ { yymsp[-5].minor.yy0.n += yymsp[-4].minor.yy0.n; @@ -3287,7 +3292,7 @@ static void yy_reduce( setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE); } break; - case 289: /* cmd ::= ALTER STABLE ids cpxName SET TAG ids EQ tagitem */ + case 290: /* cmd ::= ALTER STABLE ids cpxName SET TAG ids EQ tagitem */ { yymsp[-6].minor.yy0.n += yymsp[-5].minor.yy0.n; @@ -3299,20 +3304,20 @@ static void yy_reduce( setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE); } break; - case 290: /* cmd ::= ALTER STABLE ids cpxName MODIFY TAG columnlist */ + case 291: /* cmd ::= ALTER STABLE ids cpxName MODIFY TAG columnlist */ { yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n; SAlterTableInfo* pAlterTable = tSetAlterTableInfo(&yymsp[-4].minor.yy0, yymsp[0].minor.yy135, NULL, TSDB_ALTER_TABLE_MODIFY_TAG_COLUMN, TSDB_SUPER_TABLE); setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE); } break; - case 291: /* cmd ::= KILL CONNECTION INTEGER */ + case 292: /* cmd ::= KILL CONNECTION INTEGER */ {setKillSql(pInfo, TSDB_SQL_KILL_CONNECTION, &yymsp[0].minor.yy0);} break; - case 292: /* cmd ::= KILL STREAM INTEGER COLON INTEGER */ + case 293: /* cmd ::= KILL STREAM INTEGER COLON INTEGER */ {yymsp[-2].minor.yy0.n += (yymsp[-1].minor.yy0.n + yymsp[0].minor.yy0.n); setKillSql(pInfo, TSDB_SQL_KILL_STREAM, &yymsp[-2].minor.yy0);} break; - case 293: /* cmd ::= KILL QUERY INTEGER COLON INTEGER */ + case 294: /* cmd ::= KILL QUERY INTEGER COLON INTEGER */ {yymsp[-2].minor.yy0.n += (yymsp[-1].minor.yy0.n + yymsp[0].minor.yy0.n); setKillSql(pInfo, TSDB_SQL_KILL_QUERY, &yymsp[-2].minor.yy0);} break; default: diff --git a/source/libs/parser/test/parserTests.cpp b/source/libs/parser/test/parserTests.cpp index 932613301b..6e491cedb0 100644 --- a/source/libs/parser/test/parserTests.cpp +++ b/source/libs/parser/test/parserTests.cpp @@ -75,7 +75,7 @@ void sqlCheck(const char* sql, bool valid) { buf.len = 128; buf.buf = msg; - SSqlNode* pNode = (SSqlNode*)taosArrayGetP(((SArray*)info1.list), 0); + SSqlNode* pNode = (SSqlNode*)taosArrayGetP(((SArray*)info1.sub.node), 0); int32_t code = evaluateSqlNode(pNode, TSDB_TIME_PRECISION_NANO, &buf); ASSERT_EQ(code, 0); @@ -87,7 +87,7 @@ void sqlCheck(const char* sql, bool valid) { SQueryStmtInfo* pQueryInfo = createQueryInfo(); setTableMetaInfo(pQueryInfo, &req); - SSqlNode* pSqlNode = (SSqlNode*)taosArrayGetP(info1.list, 0); + SSqlNode* pSqlNode = (SSqlNode*)taosArrayGetP(info1.sub.node, 0); ret = validateSqlNode(pSqlNode, pQueryInfo, &buf); if (valid) { @@ -112,7 +112,7 @@ TEST(testCase, validateAST_test) { buf.len = 128; buf.buf = msg; - SSqlNode* pNode = (SSqlNode*)taosArrayGetP(((SArray*)info1.list), 0); + SSqlNode* pNode = (SSqlNode*)taosArrayGetP(((SArray*)info1.sub.node), 0); int32_t code = evaluateSqlNode(pNode, TSDB_TIME_PRECISION_NANO, &buf); ASSERT_EQ(code, 0); @@ -124,7 +124,7 @@ TEST(testCase, validateAST_test) { SQueryStmtInfo* pQueryInfo = createQueryInfo(); setTableMetaInfo(pQueryInfo, &req); - SSqlNode* pSqlNode = (SSqlNode*)taosArrayGetP(info1.list, 0); + SSqlNode* pSqlNode = (SSqlNode*)taosArrayGetP(info1.sub.node, 0); ret = validateSqlNode(pSqlNode, pQueryInfo, &buf); SArray* pExprList = pQueryInfo->exprList[0]; @@ -170,7 +170,7 @@ TEST(testCase, function_Test) { buf.len = 128; buf.buf = msg; - SSqlNode* pNode = (SSqlNode*)taosArrayGetP(((SArray*)info1.list), 0); + SSqlNode* pNode = (SSqlNode*)taosArrayGetP(((SArray*)info1.sub.node), 0); int32_t code = evaluateSqlNode(pNode, TSDB_TIME_PRECISION_NANO, &buf); ASSERT_EQ(code, 0); @@ -182,7 +182,7 @@ TEST(testCase, function_Test) { SQueryStmtInfo* pQueryInfo = createQueryInfo(); setTableMetaInfo(pQueryInfo, &req); - SSqlNode* pSqlNode = (SSqlNode*)taosArrayGetP(info1.list, 0); + SSqlNode* pSqlNode = (SSqlNode*)taosArrayGetP(info1.sub.node, 0); ret = validateSqlNode(pSqlNode, pQueryInfo, &buf); SArray* pExprList = pQueryInfo->exprList[0]; @@ -216,7 +216,7 @@ TEST(testCase, function_Test2) { buf.len = 128; buf.buf = msg; - SSqlNode* pNode = (SSqlNode*)taosArrayGetP(((SArray*)info1.list), 0); + SSqlNode* pNode = (SSqlNode*)taosArrayGetP(((SArray*)info1.sub.node), 0); int32_t code = evaluateSqlNode(pNode, TSDB_TIME_PRECISION_NANO, &buf); ASSERT_EQ(code, 0); @@ -228,7 +228,7 @@ TEST(testCase, function_Test2) { SQueryStmtInfo* pQueryInfo = createQueryInfo(); setTableMetaInfo(pQueryInfo, &req); - SSqlNode* pSqlNode = (SSqlNode*)taosArrayGetP(info1.list, 0); + SSqlNode* pSqlNode = (SSqlNode*)taosArrayGetP(info1.sub.node, 0); ret = validateSqlNode(pSqlNode, pQueryInfo, &buf); SArray* pExprList = pQueryInfo->exprList[0]; @@ -262,7 +262,7 @@ TEST(testCase, function_Test3) { buf.len = 128; buf.buf = msg; - SSqlNode* pNode = (SSqlNode*)taosArrayGetP(((SArray*)info1.list), 0); + SSqlNode* pNode = (SSqlNode*)taosArrayGetP(((SArray*)info1.sub.node), 0); int32_t code = evaluateSqlNode(pNode, TSDB_TIME_PRECISION_NANO, &buf); ASSERT_EQ(code, 0); @@ -274,7 +274,7 @@ TEST(testCase, function_Test3) { SQueryStmtInfo* pQueryInfo = createQueryInfo(); setTableMetaInfo(pQueryInfo, &req); - SSqlNode* pSqlNode = (SSqlNode*)taosArrayGetP(info1.list, 0); + SSqlNode* pSqlNode = (SSqlNode*)taosArrayGetP(info1.sub.node, 0); ret = validateSqlNode(pSqlNode, pQueryInfo, &buf); SArray* pExprList = pQueryInfo->exprList[0]; @@ -307,7 +307,7 @@ TEST(testCase, function_Test4) { buf.len = 128; buf.buf = msg; - SSqlNode* pNode = (SSqlNode*)taosArrayGetP(((SArray*)info1.list), 0); + SSqlNode* pNode = (SSqlNode*)taosArrayGetP(((SArray*)info1.sub.node), 0); int32_t code = evaluateSqlNode(pNode, TSDB_TIME_PRECISION_NANO, &buf); ASSERT_EQ(code, 0); @@ -319,7 +319,7 @@ TEST(testCase, function_Test4) { SQueryStmtInfo* pQueryInfo = createQueryInfo(); setTableMetaInfo(pQueryInfo, &req); - SSqlNode* pSqlNode = (SSqlNode*)taosArrayGetP(info1.list, 0); + SSqlNode* pSqlNode = (SSqlNode*)taosArrayGetP(info1.sub.node, 0); ret = validateSqlNode(pSqlNode, pQueryInfo, &buf); SArray* pExprList = pQueryInfo->exprList[0]; @@ -355,7 +355,7 @@ TEST(testCase, function_Test5) { buf.len = 128; buf.buf = msg; - SSqlNode* pNode = (SSqlNode*)taosArrayGetP(((SArray*)info1.list), 0); + SSqlNode* pNode = (SSqlNode*)taosArrayGetP(((SArray*)info1.sub.node), 0); int32_t code = evaluateSqlNode(pNode, TSDB_TIME_PRECISION_NANO, &buf); ASSERT_EQ(code, 0); @@ -367,7 +367,7 @@ TEST(testCase, function_Test5) { SQueryStmtInfo* pQueryInfo = createQueryInfo(); setTableMetaInfo(pQueryInfo, &req); - SSqlNode* pSqlNode = (SSqlNode*)taosArrayGetP(info1.list, 0); + SSqlNode* pSqlNode = (SSqlNode*)taosArrayGetP(info1.sub.node, 0); ret = validateSqlNode(pSqlNode, pQueryInfo, &buf); ASSERT_EQ(ret, 0); @@ -410,6 +410,8 @@ TEST(testCase, function_Test10) { sqlCheck("select length(length(length(a))) from `t.1abc`", true); sqlCheck("select count() from `t.1abc`", false); sqlCheck("select block_dist() from `t.1abc`", true); + sqlCheck("select block_dist(a) from `t.1abc`", false); + sqlCheck("select count(*) from `t.1abc` interval(1s) group by a", false); } TEST(testCase, function_Test6) { @@ -422,7 +424,7 @@ TEST(testCase, function_Test6) { buf.len = 128; buf.buf = msg; - SSqlNode* pNode = (SSqlNode*)taosArrayGetP(((SArray*)info1.list), 0); + SSqlNode* pNode = (SSqlNode*)taosArrayGetP(((SArray*)info1.sub.node), 0); int32_t code = evaluateSqlNode(pNode, TSDB_TIME_PRECISION_NANO, &buf); ASSERT_EQ(code, 0); @@ -434,7 +436,7 @@ TEST(testCase, function_Test6) { SQueryStmtInfo* pQueryInfo = createQueryInfo(); setTableMetaInfo(pQueryInfo, &req); - SSqlNode* pSqlNode = (SSqlNode*)taosArrayGetP(info1.list, 0); + SSqlNode* pSqlNode = (SSqlNode*)taosArrayGetP(info1.sub.node, 0); ret = validateSqlNode(pSqlNode, pQueryInfo, &buf); ASSERT_EQ(ret, 0); @@ -492,7 +494,7 @@ TEST(testCase, function_Test6) { buf.len = 128; buf.buf = msg; - SSqlNode* pNode = (SSqlNode*) taosArrayGetP(((SArray*)info1.list), 0); + SSqlNode* pNode = (SSqlNode*) taosArrayGetP(((SArray*)info1.sub.node), 0); int32_t code = evaluateSqlNode(pNode, TSDB_TIME_PRECISION_NANO, &buf); ASSERT_EQ(code, 0); @@ -504,7 +506,7 @@ TEST(testCase, function_Test6) { SQueryStmtInfo* pQueryInfo = createQueryInfo(); setTableMetaInfo(pQueryInfo, &req); - SSqlNode* pSqlNode = (SSqlNode*)taosArrayGetP(info1.list, 0); + SSqlNode* pSqlNode = (SSqlNode*)taosArrayGetP(info1.sub.node, 0); ret = validateSqlNode(pSqlNode, pQueryInfo, &buf); ASSERT_EQ(ret, 0); @@ -551,7 +553,7 @@ TEST(testCase, function_Test6) { buf.len = 128; buf.buf = msg; - SSqlNode* pNode = (SSqlNode*) taosArrayGetP(((SArray*)info1.list), 0); + SSqlNode* pNode = (SSqlNode*) taosArrayGetP(((SArray*)info1.sub.node), 0); int32_t code = evaluateSqlNode(pNode, TSDB_TIME_PRECISION_NANO, &buf); ASSERT_EQ(code, 0); @@ -563,7 +565,7 @@ TEST(testCase, function_Test6) { SQueryStmtInfo* pQueryInfo = createQueryInfo(); setTableMetaInfo(pQueryInfo, &req); - SSqlNode* pSqlNode = (SSqlNode*)taosArrayGetP(info1.list, 0); + SSqlNode* pSqlNode = (SSqlNode*)taosArrayGetP(info1.sub.node, 0); ret = validateSqlNode(pSqlNode, pQueryInfo, &buf); ASSERT_EQ(ret, 0); @@ -601,7 +603,7 @@ TEST(testCase, function_Test6) { info1 = doGenerateAST("select sum(length(a)+length(b)) from `t.1abc` interval(10s, 1s)"); ASSERT_EQ(info1.valid, true); - pNode = (SSqlNode*) taosArrayGetP(((SArray*)info1.list), 0); + pNode = (SSqlNode*) taosArrayGetP(((SArray*)info1.sub.node), 0); code = evaluateSqlNode(pNode, TSDB_TIME_PRECISION_NANO, &buf); ASSERT_EQ(code, 0); @@ -612,7 +614,7 @@ TEST(testCase, function_Test6) { pQueryInfo = createQueryInfo(); setTableMetaInfo(pQueryInfo, &req); - pSqlNode = (SSqlNode*)taosArrayGetP(info1.list, 0); + pSqlNode = (SSqlNode*)taosArrayGetP(info1.sub.node, 0); ret = validateSqlNode(pSqlNode, pQueryInfo, &buf); ASSERT_EQ(ret, 0); @@ -630,7 +632,7 @@ TEST(testCase, function_Test6) { SSqlInfo info1 = doGenerateAST("select count(k) from `t.1abc` interval(10s, 1s)"); ASSERT_EQ(info1.valid, true); - SSqlNode* pNode = (SSqlNode*) taosArrayGetP(((SArray*)info1.list), 0); + SSqlNode* pNode = (SSqlNode*) taosArrayGetP(((SArray*)info1.sub.node), 0); int32_t code = evaluateSqlNode(pNode, TSDB_TIME_PRECISION_NANO, &buf); ASSERT_EQ(code, 0); @@ -642,7 +644,7 @@ TEST(testCase, function_Test6) { SQueryStmtInfo* pQueryInfo = createQueryInfo(); setTableMetaInfo(pQueryInfo, &req); - SSqlNode* pSqlNode = (SSqlNode*)taosArrayGetP(info1.list, 0); + SSqlNode* pSqlNode = (SSqlNode*)taosArrayGetP(info1.sub.node, 0); ret = validateSqlNode(pSqlNode, pQueryInfo, &buf); ASSERT_NE(ret, 0); @@ -653,7 +655,7 @@ TEST(testCase, function_Test6) { info1 = doGenerateAST("select top(a*b, ABC) from `t.1abc` interval(10s, 1s)"); ASSERT_EQ(info1.valid, true); - pNode = (SSqlNode*) taosArrayGetP(((SArray*)info1.list), 0); + pNode = (SSqlNode*) taosArrayGetP(((SArray*)info1.sub.node), 0); code = evaluateSqlNode(pNode, TSDB_TIME_PRECISION_NANO, &buf); ASSERT_EQ(code, 0); @@ -664,7 +666,7 @@ TEST(testCase, function_Test6) { pQueryInfo = createQueryInfo(); setTableMetaInfo(pQueryInfo, &req); - pSqlNode = (SSqlNode*)taosArrayGetP(info1.list, 0); + pSqlNode = (SSqlNode*)taosArrayGetP(info1.sub.node, 0); ret = validateSqlNode(pSqlNode, pQueryInfo, &buf); ASSERT_NE(ret, 0); diff --git a/source/libs/parser/test/plannerTest.cpp b/source/libs/parser/test/plannerTest.cpp index ded7d73e85..ee2c01dc48 100644 --- a/source/libs/parser/test/plannerTest.cpp +++ b/source/libs/parser/test/plannerTest.cpp @@ -75,7 +75,7 @@ void generateLogicplan(const char* sql) { buf.len = 128; buf.buf = msg; - SSqlNode* pNode = (SSqlNode*) taosArrayGetP(((SArray*)info1.list), 0); + SSqlNode* pNode = (SSqlNode*) taosArrayGetP(((SArray*)info1.sub.node), 0); int32_t code = evaluateSqlNode(pNode, TSDB_TIME_PRECISION_NANO, &buf); ASSERT_EQ(code, 0); @@ -87,7 +87,7 @@ void generateLogicplan(const char* sql) { SQueryStmtInfo* pQueryInfo = createQueryInfo(); setTableMetaInfo(pQueryInfo, &req); - SSqlNode* pSqlNode = (SSqlNode*)taosArrayGetP(info1.list, 0); + SSqlNode* pSqlNode = (SSqlNode*)taosArrayGetP(info1.sub.node, 0); ret = validateSqlNode(pSqlNode, pQueryInfo, &buf); ASSERT_EQ(ret, 0); @@ -115,7 +115,7 @@ TEST(testCase, planner_test) { buf.len = 128; buf.buf = msg; - SSqlNode* pNode = (SSqlNode*) taosArrayGetP(((SArray*)info1.list), 0); + SSqlNode* pNode = (SSqlNode*) taosArrayGetP(((SArray*)info1.sub.node), 0); int32_t code = evaluateSqlNode(pNode, TSDB_TIME_PRECISION_NANO, &buf); ASSERT_EQ(code, 0); @@ -127,7 +127,7 @@ TEST(testCase, planner_test) { SQueryStmtInfo* pQueryInfo = createQueryInfo(); setTableMetaInfo(pQueryInfo, &req); - SSqlNode* pSqlNode = (SSqlNode*)taosArrayGetP(info1.list, 0); + SSqlNode* pSqlNode = (SSqlNode*)taosArrayGetP(info1.sub.node, 0); ret = validateSqlNode(pSqlNode, pQueryInfo, &buf); ASSERT_EQ(ret, 0); @@ -165,18 +165,18 @@ TEST(testCase, planner_test) { } TEST(testCase, displayPlan) { -// generateLogicplan("select count(*) from `t.1abc`"); -// generateLogicplan("select count(*)+ 22 from `t.1abc`"); -// generateLogicplan("select count(*)+ 22 from `t.1abc` interval(1h, 20s) sliding(10m) limit 20,30"); -// generateLogicplan("select count(*) from `t.1abc` group by a"); -// generateLogicplan("select count(A+B) from `t.1abc` group by a"); -// generateLogicplan("select count(length(a)+b) from `t.1abc` group by a"); -// generateLogicplan("select count(*) from `t.1abc` interval(10s, 5s) sliding(7s)"); -// generateLogicplan("select count(*),sum(a),avg(b),min(a+b)+99 from `t.1abc`"); -// generateLogicplan("select count(*), min(a) + 99 from `t.1abc`"); -// generateLogicplan("select count(length(count(*) + 22)) from `t.1abc`"); -// generateLogicplan("select concat(concat(a,b), concat(a,b)) from `t.1abc` limit 20"); -// generateLogicplan("select count(*), first(a), last(b) from `t.1abc` state_window(a)"); + generateLogicplan("select count(*) from `t.1abc`"); + generateLogicplan("select count(*)+ 22 from `t.1abc`"); + generateLogicplan("select count(*)+ 22 from `t.1abc` interval(1h, 20s) sliding(10m) limit 20,30"); + generateLogicplan("select count(*) from `t.1abc` group by a"); + generateLogicplan("select count(A+B) from `t.1abc` group by a"); + generateLogicplan("select count(length(a)+b) from `t.1abc` group by a"); + generateLogicplan("select count(*) from `t.1abc` interval(10s, 5s) sliding(7s)"); + generateLogicplan("select count(*),sum(a),avg(b),min(a+b)+99 from `t.1abc`"); + generateLogicplan("select count(*), min(a) + 99 from `t.1abc`"); + generateLogicplan("select count(length(count(*) + 22)) from `t.1abc`"); + generateLogicplan("select concat(concat(a,b), concat(a,b)) from `t.1abc` limit 20"); + generateLogicplan("select count(*), first(a), last(b) from `t.1abc` state_window(a)"); generateLogicplan("select count(*), first(a), last(b) from `t.1abc` session(ts, 20s)"); // order by + group by column + limit offset + fill diff --git a/source/libs/parser/test/tokenizerTest.cpp b/source/libs/parser/test/tokenizerTest.cpp index 7d6f55692d..07ba46427f 100644 --- a/source/libs/parser/test/tokenizerTest.cpp +++ b/source/libs/parser/test/tokenizerTest.cpp @@ -680,12 +680,12 @@ TEST(testCase, generateAST_test) { msgBuf.buf = msg; msgBuf.len = 128; - SSqlNode* pNode = (SSqlNode*) taosArrayGetP(((SArray*)info1.list), 0); + SSqlNode* pNode = (SSqlNode*) taosArrayGetP(((SArray*)info1.sub.node), 0); int32_t code = evaluateSqlNode(pNode, TSDB_TIME_PRECISION_NANO, &msgBuf); ASSERT_EQ(code, 0); SSqlInfo info2 = doGenerateAST("select * from abc where tsself, i, size); - if (size > 1 && pSqlNode->from && pSqlNode->from->type == SQL_NODE_FROM_SUBQUERY) { + if (size > 1 && pSqlNode->from && pSqlNode->from->type == SQL_FROM_NODE_SUBQUERY) { return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg1); } @@ -7981,11 +7981,11 @@ int32_t doCheckForStream(SSqlObj* pSql, SSqlInfo* pInfo) { return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg6); } - if (pFromInfo->type == SQL_NODE_FROM_SUBQUERY){ + if (pFromInfo->type == SQL_FROM_NODE_SUBQUERY){ return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg9); } - SRelElementPair* p1 = taosArrayGet(pFromInfo->list, 0); + SRelElement* p1 = taosArrayGet(pFromInfo->list, 0); SStrToken srcToken = {.z = p1->tableName.z, .n = p1->tableName.n, .type = TK_STRING}; if (tscValidateName(&srcToken) != TSDB_CODE_SUCCESS) { return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg1); @@ -8415,10 +8415,10 @@ static int32_t getTableNameFromSqlNode(SSqlNode* pSqlNode, SArray* tableNameList const char* msg1 = "invalid table name"; int32_t numOfTables = (int32_t) taosArrayGetSize(pSqlNode->from->list); - assert(pSqlNode->from->type == SQL_NODE_FROM_TABLELIST); + assert(pSqlNode->from->type == SQL_FROM_NODE_TABLES); for(int32_t j = 0; j < numOfTables; ++j) { - SRelElementPair* item = taosArrayGet(pSqlNode->from->list, j); + SRelElement* item = taosArrayGet(pSqlNode->from->list, j); SStrToken* t = &item->tableName; if (t->type == TK_INTEGER || t->type == TK_FLOAT) { @@ -8446,12 +8446,12 @@ static int32_t getTableNameFromSubquery(SSqlNode* pSqlNode, SArray* tableNameLis int32_t numOfSub = (int32_t) taosArrayGetSize(pSqlNode->from->list); for(int32_t j = 0; j < numOfSub; ++j) { - SRelElementPair* sub = taosArrayGet(pSqlNode->from->list, j); + SRelElement* sub = taosArrayGet(pSqlNode->from->list, j); int32_t num = (int32_t)taosArrayGetSize(sub->pSubquery); for (int32_t i = 0; i < num; ++i) { SSqlNode* p = taosArrayGetP(sub->pSubquery, i); - if (p->from->type == SQL_NODE_FROM_TABLELIST) { + if (p->from->type == SQL_FROM_NODE_TABLES) { int32_t code = getTableNameFromSqlNode(p, tableNameList, msgBuf, pSql); if (code != TSDB_CODE_SUCCESS) { return code; @@ -8520,7 +8520,7 @@ int32_t loadAllTableMeta(SSqlObj* pSql, struct SSqlInfo* pInfo) { } // load the table meta in the from clause - if (pSqlNode->from->type == SQL_NODE_FROM_TABLELIST) { + if (pSqlNode->from->type == SQL_FROM_NODE_TABLES) { code = getTableNameFromSqlNode(pSqlNode, tableNameList, tscGetErrorMsgPayload(pCmd), pSql); if (code != TSDB_CODE_SUCCESS) { goto _end; @@ -8678,7 +8678,7 @@ static int32_t doLoadAllTableMeta(SSqlObj* pSql, SQueryInfo* pQueryInfo, SSqlNod tscAddEmptyMetaInfo(pQueryInfo); } - SRelElementPair *item = taosArrayGet(pSqlNode->from->list, i); + SRelElement *item = taosArrayGet(pSqlNode->from->list, i); SStrToken *oriName = &item->tableName; if (oriName->type == TK_INTEGER || oriName->type == TK_FLOAT) { @@ -8786,7 +8786,7 @@ static STableMeta* extractTempTableMetaFromSubquery(SQueryInfo* pUpstream) { } static int32_t doValidateSubquery(SSqlNode* pSqlNode, int32_t index, SSqlObj* pSql, SQueryInfo* pQueryInfo, char* msgBuf) { - SRelElementPair* subInfo = taosArrayGet(pSqlNode->from->list, index); + SRelElement* subInfo = taosArrayGet(pSqlNode->from->list, index); // union all is not support currently SSqlNode* p = taosArrayGetP(subInfo->pSubquery, 0); @@ -8890,7 +8890,7 @@ int32_t validateSqlNode(SSqlObj* pSql, SSqlNode* pSqlNode, SQueryInfo* pQueryInf return doLocalQueryProcess(pCmd, pQueryInfo, pSqlNode); } - if (pSqlNode->from->type == SQL_NODE_FROM_SUBQUERY) { + if (pSqlNode->from->type == SQL_FROM_NODE_SUBQUERY) { clearAllTableMetaInfo(pQueryInfo, false, pSql->self); pQueryInfo->numOfTables = 0; @@ -8898,9 +8898,9 @@ int32_t validateSqlNode(SSqlObj* pSql, SSqlNode* pSqlNode, SQueryInfo* pQueryInf int32_t numOfSub = (int32_t)taosArrayGetSize(pSqlNode->from->list); for (int32_t i = 0; i < numOfSub; ++i) { // check if there is 3 level select - SRelElementPair* subInfo = taosArrayGet(pSqlNode->from->list, i); + SRelElement* subInfo = taosArrayGet(pSqlNode->from->list, i); SSqlNode* p = taosArrayGetP(subInfo->pSubquery, 0); - if (p->from->type == SQL_NODE_FROM_SUBQUERY) { + if (p->from->type == SQL_FROM_NODE_SUBQUERY) { return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg9); } @@ -9379,8 +9379,8 @@ bool hasNormalColumnFilter(SQueryInfo* pQueryInfo) { void normalizeSqlNode(SSqlNode* pSqlNode, const char* dbName) { assert(pSqlNode != NULL); - if (pSqlNode->from->type == SQL_NODE_FROM_TABLELIST) { -// SRelElementPair *item = taosArrayGet(pSqlNode->from->list, 0); + if (pSqlNode->from->type == SQL_FROM_NODE_TABLES) { +// SRelElement *item = taosArrayGet(pSqlNode->from->list, 0); // item->TableName.name; } diff --git a/src/query/inc/qSqlparser.h b/src/query/inc/qSqlparser.h index 445380f40a..0c60319f39 100644 --- a/src/query/inc/qSqlparser.h +++ b/src/query/inc/qSqlparser.h @@ -40,8 +40,8 @@ enum SQL_NODE_TYPE { }; enum SQL_NODE_FROM_TYPE { - SQL_NODE_FROM_SUBQUERY = 1, - SQL_NODE_FROM_TABLELIST = 2, + SQL_FROM_NODE_SUBQUERY = 1, + SQL_FROM_NODE_TABLES = 2, }; enum SQL_EXPR_FLAG { @@ -113,18 +113,18 @@ typedef struct SSqlNode { struct tSqlExpr *pHaving; // having clause [optional] } SSqlNode; -typedef struct SRelElementPair { +typedef struct SRelElement { union { SStrToken tableName; SArray *pSubquery; }; SStrToken aliasName; -} SRelElementPair; +} SRelElement; typedef struct SRelationInfo { int32_t type; // nested query|table name list - SArray *list; // SArray + SArray *list; // SArray } SRelationInfo; typedef struct SCreatedTableInfo { diff --git a/src/query/src/qSqlParser.c b/src/query/src/qSqlParser.c index c6c5690b2c..cca7bc6148 100644 --- a/src/query/src/qSqlParser.c +++ b/src/query/src/qSqlParser.c @@ -556,11 +556,11 @@ SArray *tVariantListInsert(SArray *pList, tVariant *pVar, uint8_t sortOrder, int SRelationInfo *setTableNameList(SRelationInfo* pRelationInfo, SStrToken *pName, SStrToken* pAlias) { if (pRelationInfo == NULL) { pRelationInfo = calloc(1, sizeof(SRelationInfo)); - pRelationInfo->list = taosArrayInit(4, sizeof(SRelElementPair)); + pRelationInfo->list = taosArrayInit(4, sizeof(SRelElement)); } - pRelationInfo->type = SQL_NODE_FROM_TABLELIST; - SRelElementPair p = {.tableName = *pName}; + pRelationInfo->type = SQL_FROM_NODE_TABLES; + SRelElement p = {.tableName = *pName}; if (pAlias != NULL) { p.aliasName = *pAlias; } else { @@ -576,7 +576,7 @@ void* destroyRelationInfo(SRelationInfo* pRelationInfo) { return NULL; } - if (pRelationInfo->type == SQL_NODE_FROM_TABLELIST) { + if (pRelationInfo->type == SQL_FROM_NODE_TABLES) { taosArrayDestroy(pRelationInfo->list); } else { size_t size = taosArrayGetSize(pRelationInfo->list); @@ -594,12 +594,12 @@ void* destroyRelationInfo(SRelationInfo* pRelationInfo) { SRelationInfo* addSubqueryElem(SRelationInfo* pRelationInfo, SArray* pSub, SStrToken* pAlias) { if (pRelationInfo == NULL) { pRelationInfo = calloc(1, sizeof(SRelationInfo)); - pRelationInfo->list = taosArrayInit(4, sizeof(SRelElementPair)); + pRelationInfo->list = taosArrayInit(4, sizeof(SRelElement)); } - pRelationInfo->type = SQL_NODE_FROM_SUBQUERY; + pRelationInfo->type = SQL_FROM_NODE_SUBQUERY; - SRelElementPair p = {.pSubquery = pSub}; + SRelElement p = {.pSubquery = pSub}; if (pAlias != NULL) { p.aliasName = *pAlias; } else { @@ -972,6 +972,7 @@ void SqlInfoDestroy(SSqlInfo *pInfo) { SArray* setSubclause(SArray* pList, void *pSqlNode) { if (pList == NULL) { + pList = taosArrayInit(1, POINTER_BYTES); } -- GitLab