diff --git a/src/client/inc/tsclient.h b/src/client/inc/tsclient.h index c1b6b0c2b9a0f1c23b8afecbce61451c9ff68488..68cd2747e9ee39ce21de87964cf26ad19d14af66 100644 --- a/src/client/inc/tsclient.h +++ b/src/client/inc/tsclient.h @@ -223,6 +223,8 @@ typedef struct SQueryInfo { int32_t udColumnId; // current user-defined constant output field column id, monotonically decreases from TSDB_UD_COLUMN_INDEX int16_t resColumnId; // result column id + bool distinctTag; // distinct tag or not + } SQueryInfo; typedef struct { diff --git a/src/client/src/tscLocalMerge.c b/src/client/src/tscLocalMerge.c index d1ccc1fbb060e8d697f19d6f18d96ffa445ad2ee..97426b2dd11706f75c36aa6b7a55736220275bf6 100644 --- a/src/client/src/tscLocalMerge.c +++ b/src/client/src/tscLocalMerge.c @@ -1101,7 +1101,7 @@ static int64_t getNumOfResultLocal(SQueryInfo *pQueryInfo, SQLFunctionCtx *pCtx) * the number of output result is decided by main output */ int32_t functionId = pCtx[j].functionId; - if (functionId == TSDB_FUNC_TS || functionId == TSDB_FUNC_TAG || functionId == TSDB_FUNC_TAGPRJ) { + if (functionId == TSDB_FUNC_TS || functionId == TSDB_FUNC_TAG) { continue; } @@ -1183,7 +1183,7 @@ bool needToMerge(SQueryInfo *pQueryInfo, SLocalMerger *pLocalMerge, tFilePage *t int16_t functionId = pLocalMerge->pCtx[0].functionId; // todo opt performance - if ((/*functionId == TSDB_FUNC_PRJ || */functionId == TSDB_FUNC_ARITHM) || (tscIsProjectionQueryOnSTable(pQueryInfo, 0))) { // column projection query + if ((/*functionId == TSDB_FUNC_PRJ || */functionId == TSDB_FUNC_ARITHM) || (tscIsProjectionQueryOnSTable(pQueryInfo, 0) && pQueryInfo->distinctTag == false)) { // column projection query ret = 1; // disable merge procedure } else { tOrderDescriptor *pDesc = pLocalMerge->pDesc; diff --git a/src/client/src/tscSQLParser.c b/src/client/src/tscSQLParser.c index 226de59f460e7a94e8a5f02f23f63225b12cd8ea..f9eedff7eb0d94644fdded08747fa4eadbe37b99 100644 --- a/src/client/src/tscSQLParser.c +++ b/src/client/src/tscSQLParser.c @@ -1505,23 +1505,39 @@ static void addPrimaryTsColIntoResult(SQueryInfo* pQueryInfo) { pQueryInfo->type |= TSDB_QUERY_TYPE_PROJECTION_QUERY; } +bool isValidDistinctSql(SQueryInfo* pQueryInfo) { + if (pQueryInfo == NULL) { + return false; + } + if ((pQueryInfo->type & TSDB_QUERY_TYPE_STABLE_QUERY) != TSDB_QUERY_TYPE_STABLE_QUERY) { + return false; + } + if (tscQueryTags(pQueryInfo) && tscSqlExprNumOfExprs(pQueryInfo) == 1){ + return true; + } + return false; +} int32_t parseSelectClause(SSqlCmd* pCmd, int32_t clauseIndex, tSQLExprList* pSelection, bool isSTable, bool joinQuery, bool intervalQuery) { assert(pSelection != NULL && pCmd != NULL); const char* msg2 = "functions can not be mixed up"; const char* msg3 = "not support query expression"; const char* msg5 = "invalid function name"; + const char* msg6 = "only support distinct one tag"; SQueryInfo* pQueryInfo = tscGetQueryInfoDetail(pCmd, clauseIndex); if (pQueryInfo->colList == NULL) { pQueryInfo->colList = taosArrayInit(4, POINTER_BYTES); } - + bool hasDistinct = false; for (int32_t i = 0; i < pSelection->nExpr; ++i) { int32_t outputIndex = (int32_t)tscSqlExprNumOfExprs(pQueryInfo); tSqlExprItem* pItem = &pSelection->a[i]; - + + if (hasDistinct == false) { + hasDistinct = (pItem->distinct == true); + } // project on all fields int32_t optr = pItem->pNode->nSQLOptr; @@ -1555,6 +1571,13 @@ int32_t parseSelectClause(SSqlCmd* pCmd, int32_t clauseIndex, tSQLExprList* pSel } } + if (hasDistinct == true) { + if (!isValidDistinctSql(pQueryInfo)) { + return invalidSqlErrMsg(tscGetErrorMsgPayload(pCmd), msg6); + } + pQueryInfo->distinctTag = true; + } + // there is only one user-defined column in the final result field, add the timestamp column. size_t numOfSrcCols = taosArrayGetSize(pQueryInfo->colList); if (numOfSrcCols <= 0 && !tscQueryTags(pQueryInfo)) { @@ -4657,6 +4680,12 @@ int32_t parseOrderbyClause(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, SQuerySQL* pQu setDefaultOrderInfo(pQueryInfo); STableMetaInfo* pTableMetaInfo = tscGetMetaInfo(pQueryInfo, 0); + + if (pQueryInfo->distinctTag == true) { + pQueryInfo->order.order = TSDB_ORDER_ASC; + pQueryInfo->order.orderColId = 0; + return TSDB_CODE_SUCCESS; + } if (pQuerySql->pSortOrder == NULL) { return TSDB_CODE_SUCCESS; } diff --git a/src/client/src/tscSubquery.c b/src/client/src/tscSubquery.c index aacdf9103e0f127137b164f948bca3363c4fa7a1..806fca96d1eec4c1196fa7d9da5aaffbf6c55a2c 100644 --- a/src/client/src/tscSubquery.c +++ b/src/client/src/tscSubquery.c @@ -582,13 +582,14 @@ void freeJoinSubqueryObj(SSqlObj* pSql) { pSql->subState.numOfSub = 0; } -static void quitAllSubquery(SSqlObj* pSqlSub, SSqlObj* pSqlObj, SJoinSupporter* pSupporter) { +static int32_t quitAllSubquery(SSqlObj* pSqlSub, SSqlObj* pSqlObj, SJoinSupporter* pSupporter) { if (subAndCheckDone(pSqlSub, pSqlObj, pSupporter->subqueryIndex)) { tscError("%p all subquery return and query failed, global code:%s", pSqlObj, tstrerror(pSqlObj->res.code)); freeJoinSubqueryObj(pSqlObj); - return; + return 0; } + return 1; //tscDestroyJoinSupporter(pSupporter); } @@ -835,7 +836,9 @@ static void tidTagRetrieveCallback(void* param, TAOS_RES* tres, int32_t numOfRow if (pParentSql->res.code != TSDB_CODE_SUCCESS) { tscError("%p abort query due to other subquery failure. code:%d, global code:%d", pSql, numOfRows, pParentSql->res.code); - quitAllSubquery(pSql, pParentSql, pSupporter); + if (quitAllSubquery(pSql, pParentSql, pSupporter)) { + return; + } tscAsyncResultOnError(pParentSql); @@ -850,7 +853,9 @@ static void tidTagRetrieveCallback(void* param, TAOS_RES* tres, int32_t numOfRow tscError("%p sub query failed, code:%s, index:%d", pSql, tstrerror(numOfRows), pSupporter->subqueryIndex); pParentSql->res.code = numOfRows; - quitAllSubquery(pSql, pParentSql, pSupporter); + if (quitAllSubquery(pSql, pParentSql, pSupporter)) { + return; + } tscAsyncResultOnError(pParentSql); return; @@ -867,7 +872,9 @@ static void tidTagRetrieveCallback(void* param, TAOS_RES* tres, int32_t numOfRow tscError("%p failed to malloc memory", pSql); pParentSql->res.code = TAOS_SYSTEM_ERROR(errno); - quitAllSubquery(pSql, pParentSql, pSupporter); + if (quitAllSubquery(pSql, pParentSql, pSupporter)) { + return; + } tscAsyncResultOnError(pParentSql); return; @@ -985,7 +992,9 @@ static void tsCompRetrieveCallback(void* param, TAOS_RES* tres, int32_t numOfRow if (pParentSql->res.code != TSDB_CODE_SUCCESS) { tscError("%p abort query due to other subquery failure. code:%d, global code:%d", pSql, numOfRows, pParentSql->res.code); - quitAllSubquery(pSql, pParentSql, pSupporter); + if (quitAllSubquery(pSql, pParentSql, pSupporter)){ + return; + } tscAsyncResultOnError(pParentSql); @@ -999,7 +1008,9 @@ static void tsCompRetrieveCallback(void* param, TAOS_RES* tres, int32_t numOfRow tscError("%p sub query failed, code:%s, index:%d", pSql, tstrerror(numOfRows), pSupporter->subqueryIndex); pParentSql->res.code = numOfRows; - quitAllSubquery(pSql, pParentSql, pSupporter); + if (quitAllSubquery(pSql, pParentSql, pSupporter)){ + return; + } tscAsyncResultOnError(pParentSql); return; @@ -1014,7 +1025,9 @@ static void tsCompRetrieveCallback(void* param, TAOS_RES* tres, int32_t numOfRow pParentSql->res.code = TAOS_SYSTEM_ERROR(errno); - quitAllSubquery(pSql, pParentSql, pSupporter); + if (quitAllSubquery(pSql, pParentSql, pSupporter)) { + return; + } tscAsyncResultOnError(pParentSql); @@ -1032,7 +1045,9 @@ static void tsCompRetrieveCallback(void* param, TAOS_RES* tres, int32_t numOfRow pParentSql->res.code = TAOS_SYSTEM_ERROR(errno); - quitAllSubquery(pSql, pParentSql, pSupporter); + if (quitAllSubquery(pSql, pParentSql, pSupporter)){ + return; + } tscAsyncResultOnError(pParentSql); @@ -1129,8 +1144,10 @@ static void joinRetrieveFinalResCallback(void* param, TAOS_RES* tres, int numOfR if (pParentSql->res.code != TSDB_CODE_SUCCESS) { tscError("%p abort query due to other subquery failure. code:%d, global code:%d", pSql, numOfRows, pParentSql->res.code); - quitAllSubquery(pSql, pParentSql, pSupporter); - + if (quitAllSubquery(pSql, pParentSql, pSupporter)) { + return; + } + tscAsyncResultOnError(pParentSql); return; @@ -1472,7 +1489,9 @@ void tscJoinQueryCallback(void* param, TAOS_RES* tres, int code) { // retrieve actual query results from vnode during the second stage join subquery if (pParentSql->res.code != TSDB_CODE_SUCCESS) { tscError("%p abort query due to other subquery failure. code:%d, global code:%d", pSql, code, pParentSql->res.code); - quitAllSubquery(pSql, pParentSql, pSupporter); + if (quitAllSubquery(pSql, pParentSql, pSupporter)) { + return; + } tscAsyncResultOnError(pParentSql); @@ -1486,7 +1505,10 @@ void tscJoinQueryCallback(void* param, TAOS_RES* tres, int code) { tscError("%p abort query, code:%s, global code:%s", pSql, tstrerror(code), tstrerror(pParentSql->res.code)); pParentSql->res.code = code; - quitAllSubquery(pSql, pParentSql, pSupporter); + if (quitAllSubquery(pSql, pParentSql, pSupporter)) { + return; + } + tscAsyncResultOnError(pParentSql); return; diff --git a/src/inc/ttokendef.h b/src/inc/ttokendef.h index dde74f4eb1c5ad9640a20fd21b1109441a53d87b..031857df094384bfbc433dea33e00668b0885c03 100644 --- a/src/inc/ttokendef.h +++ b/src/inc/ttokendef.h @@ -16,6 +16,7 @@ #ifndef TDENGINE_TTOKENDEF_H #define TDENGINE_TTOKENDEF_H + #define TK_ID 1 #define TK_BOOL 2 #define TK_TINYINT 3 @@ -127,104 +128,104 @@ #define TK_SELECT 109 #define TK_UNION 110 #define TK_ALL 111 -#define TK_FROM 112 -#define TK_VARIABLE 113 -#define TK_INTERVAL 114 -#define TK_FILL 115 -#define TK_SLIDING 116 -#define TK_ORDER 117 -#define TK_BY 118 -#define TK_ASC 119 -#define TK_DESC 120 -#define TK_GROUP 121 -#define TK_HAVING 122 -#define TK_LIMIT 123 -#define TK_OFFSET 124 -#define TK_SLIMIT 125 -#define TK_SOFFSET 126 -#define TK_WHERE 127 -#define TK_NOW 128 -#define TK_RESET 129 -#define TK_QUERY 130 -#define TK_ADD 131 -#define TK_COLUMN 132 -#define TK_TAG 133 -#define TK_CHANGE 134 -#define TK_SET 135 -#define TK_KILL 136 -#define TK_CONNECTION 137 -#define TK_STREAM 138 -#define TK_COLON 139 -#define TK_ABORT 140 -#define TK_AFTER 141 -#define TK_ATTACH 142 -#define TK_BEFORE 143 -#define TK_BEGIN 144 -#define TK_CASCADE 145 -#define TK_CLUSTER 146 -#define TK_CONFLICT 147 -#define TK_COPY 148 -#define TK_DEFERRED 149 -#define TK_DELIMITERS 150 -#define TK_DETACH 151 -#define TK_EACH 152 -#define TK_END 153 -#define TK_EXPLAIN 154 -#define TK_FAIL 155 -#define TK_FOR 156 -#define TK_IGNORE 157 -#define TK_IMMEDIATE 158 -#define TK_INITIALLY 159 -#define TK_INSTEAD 160 -#define TK_MATCH 161 -#define TK_KEY 162 -#define TK_OF 163 -#define TK_RAISE 164 -#define TK_REPLACE 165 -#define TK_RESTRICT 166 -#define TK_ROW 167 -#define TK_STATEMENT 168 -#define TK_TRIGGER 169 -#define TK_VIEW 170 -#define TK_COUNT 171 -#define TK_SUM 172 -#define TK_AVG 173 -#define TK_MIN 174 -#define TK_MAX 175 -#define TK_FIRST 176 -#define TK_LAST 177 -#define TK_TOP 178 -#define TK_BOTTOM 179 -#define TK_STDDEV 180 -#define TK_PERCENTILE 181 -#define TK_APERCENTILE 182 -#define TK_LEASTSQUARES 183 -#define TK_HISTOGRAM 184 -#define TK_DIFF 185 -#define TK_SPREAD 186 -#define TK_TWA 187 -#define TK_INTERP 188 -#define TK_LAST_ROW 189 -#define TK_RATE 190 -#define TK_IRATE 191 -#define TK_SUM_RATE 192 -#define TK_SUM_IRATE 193 -#define TK_AVG_RATE 194 -#define TK_AVG_IRATE 195 -#define TK_TBID 196 -#define TK_SEMI 197 -#define TK_NONE 198 -#define TK_PREV 199 -#define TK_LINEAR 200 -#define TK_IMPORT 201 -#define TK_METRIC 202 -#define TK_TBNAME 203 -#define TK_JOIN 204 -#define TK_METRICS 205 -#define TK_INSERT 206 -#define TK_INTO 207 -#define TK_VALUES 208 - +#define TK_DISTINCT 112 +#define TK_FROM 113 +#define TK_VARIABLE 114 +#define TK_INTERVAL 115 +#define TK_FILL 116 +#define TK_SLIDING 117 +#define TK_ORDER 118 +#define TK_BY 119 +#define TK_ASC 120 +#define TK_DESC 121 +#define TK_GROUP 122 +#define TK_HAVING 123 +#define TK_LIMIT 124 +#define TK_OFFSET 125 +#define TK_SLIMIT 126 +#define TK_SOFFSET 127 +#define TK_WHERE 128 +#define TK_NOW 129 +#define TK_RESET 130 +#define TK_QUERY 131 +#define TK_ADD 132 +#define TK_COLUMN 133 +#define TK_TAG 134 +#define TK_CHANGE 135 +#define TK_SET 136 +#define TK_KILL 137 +#define TK_CONNECTION 138 +#define TK_STREAM 139 +#define TK_COLON 140 +#define TK_ABORT 141 +#define TK_AFTER 142 +#define TK_ATTACH 143 +#define TK_BEFORE 144 +#define TK_BEGIN 145 +#define TK_CASCADE 146 +#define TK_CLUSTER 147 +#define TK_CONFLICT 148 +#define TK_COPY 149 +#define TK_DEFERRED 150 +#define TK_DELIMITERS 151 +#define TK_DETACH 152 +#define TK_EACH 153 +#define TK_END 154 +#define TK_EXPLAIN 155 +#define TK_FAIL 156 +#define TK_FOR 157 +#define TK_IGNORE 158 +#define TK_IMMEDIATE 159 +#define TK_INITIALLY 160 +#define TK_INSTEAD 161 +#define TK_MATCH 162 +#define TK_KEY 163 +#define TK_OF 164 +#define TK_RAISE 165 +#define TK_REPLACE 166 +#define TK_RESTRICT 167 +#define TK_ROW 168 +#define TK_STATEMENT 169 +#define TK_TRIGGER 170 +#define TK_VIEW 171 +#define TK_COUNT 172 +#define TK_SUM 173 +#define TK_AVG 174 +#define TK_MIN 175 +#define TK_MAX 176 +#define TK_FIRST 177 +#define TK_LAST 178 +#define TK_TOP 179 +#define TK_BOTTOM 180 +#define TK_STDDEV 181 +#define TK_PERCENTILE 182 +#define TK_APERCENTILE 183 +#define TK_LEASTSQUARES 184 +#define TK_HISTOGRAM 185 +#define TK_DIFF 186 +#define TK_SPREAD 187 +#define TK_TWA 188 +#define TK_INTERP 189 +#define TK_LAST_ROW 190 +#define TK_RATE 191 +#define TK_IRATE 192 +#define TK_SUM_RATE 193 +#define TK_SUM_IRATE 194 +#define TK_AVG_RATE 195 +#define TK_AVG_IRATE 196 +#define TK_TBID 197 +#define TK_SEMI 198 +#define TK_NONE 199 +#define TK_PREV 200 +#define TK_LINEAR 201 +#define TK_IMPORT 202 +#define TK_METRIC 203 +#define TK_TBNAME 204 +#define TK_JOIN 205 +#define TK_METRICS 206 +#define TK_INSERT 207 +#define TK_INTO 208 +#define TK_VALUES 209 #define TK_SPACE 300 diff --git a/src/query/inc/qSqlparser.h b/src/query/inc/qSqlparser.h index c225ebd44a3138231dd260491c8a738389d2bb04..77647813d688183edc343c349969c15c26edfb4d 100644 --- a/src/query/inc/qSqlparser.h +++ b/src/query/inc/qSqlparser.h @@ -200,6 +200,7 @@ typedef struct tSQLExpr { typedef struct tSqlExprItem { tSQLExpr *pNode; // The list of expressions char * aliasName; // alias name, null-terminated string + bool distinct; } tSqlExprItem; // todo refactor by using SArray @@ -232,7 +233,7 @@ tSQLExpr *tSqlExprCreate(tSQLExpr *pLeft, tSQLExpr *pRight, int32_t optrType); void tSqlExprDestroy(tSQLExpr *pExpr); -tSQLExprList *tSqlExprListAppend(tSQLExprList *pList, tSQLExpr *pNode, SStrToken *pToken); +tSQLExprList *tSqlExprListAppend(tSQLExprList *pList, tSQLExpr *pNode, SStrToken *pDistinct, SStrToken *pToken); void tSqlExprListDestroy(tSQLExprList *pList); diff --git a/src/query/inc/sql.y b/src/query/inc/sql.y index 2a4a91ac3a9c877c8b03db4d49d4bba7243fcadd..cd02d4fb002a1810f1b792b64aa8ff522f696796 100644 --- a/src/query/inc/sql.y +++ b/src/query/inc/sql.y @@ -161,7 +161,7 @@ cmd ::= ALTER DNODE ids(X) ids(Y). { setDCLSQLElems(pInfo, TSDB_SQL cmd ::= ALTER DNODE ids(X) ids(Y) ids(Z). { setDCLSQLElems(pInfo, TSDB_SQL_CFG_DNODE, 3, &X, &Y, &Z); } cmd ::= ALTER LOCAL ids(X). { setDCLSQLElems(pInfo, TSDB_SQL_CFG_LOCAL, 1, &X); } cmd ::= ALTER LOCAL ids(X) ids(Y). { setDCLSQLElems(pInfo, TSDB_SQL_CFG_LOCAL, 2, &X, &Y); } -cmd ::= ALTER DATABASE ids(X) alter_db_optr(Y). { SStrToken t = {0}; setCreateDBSQL(pInfo, TSDB_SQL_ALTER_DB, &X, &Y, &t);} +cmd ::= ALTER DATABASE ids(X) alter_db_optr(Y). { SStrToken t = {0}; setCreateDbInfo(pInfo, TSDB_SQL_ALTER_DB, &X, &Y, &t);} cmd ::= ALTER ACCOUNT ids(X) acct_optr(Z). { setCreateAcctSql(pInfo, TSDB_SQL_ALTER_ACCT, &X, NULL, &Z);} cmd ::= ALTER ACCOUNT ids(X) PASS ids(Y) acct_optr(Z). { setCreateAcctSql(pInfo, TSDB_SQL_ALTER_ACCT, &X, &Y, &Z);} @@ -186,7 +186,7 @@ ifnotexists(X) ::= . { X.n = 0;} cmd ::= CREATE DNODE ids(X). { setDCLSQLElems(pInfo, TSDB_SQL_CREATE_DNODE, 1, &X);} cmd ::= CREATE ACCOUNT ids(X) PASS ids(Y) acct_optr(Z). { setCreateAcctSql(pInfo, TSDB_SQL_CREATE_ACCT, &X, &Y, &Z);} -cmd ::= CREATE DATABASE ifnotexists(Z) ids(X) db_optr(Y). { setCreateDBSQL(pInfo, TSDB_SQL_CREATE_DB, &X, &Y, &Z);} +cmd ::= CREATE DATABASE ifnotexists(Z) ids(X) db_optr(Y). { setCreateDbInfo(pInfo, TSDB_SQL_CREATE_DB, &X, &Y, &Z);} cmd ::= CREATE USER ids(X) PASS ids(Y). { setCreateUserSql(pInfo, &X, &Y);} pps(Y) ::= . { Y.n = 0; } @@ -457,13 +457,13 @@ select(A) ::= SELECT(T) selcollist(W). { %destructor sclp {tSqlExprListDestroy($$);} sclp(A) ::= selcollist(X) COMMA. {A = X;} sclp(A) ::= . {A = 0;} -selcollist(A) ::= sclp(P) expr(X) as(Y). { - A = tSqlExprListAppend(P, X, Y.n?&Y:0); +selcollist(A) ::= sclp(P) distinct(Z) expr(X) as(Y). { + A = tSqlExprListAppend(P, X, Z.n? &Z:0, Y.n?&Y:0); } selcollist(A) ::= sclp(P) STAR. { tSQLExpr *pNode = tSqlExprIdValueCreate(NULL, TK_ALL); - A = tSqlExprListAppend(P, pNode, 0); + A = tSqlExprListAppend(P, pNode, 0, 0); } // An option "AS " phrase that can follow one of the expressions that @@ -474,6 +474,10 @@ as(X) ::= AS ids(Y). { X = Y; } as(X) ::= ids(Y). { X = Y; } as(X) ::= . { X.n = 0; } +%type distinct {SStrToken} +distinct(X) ::= DISTINCT(Y). { X = Y; } +distinct(X) ::= . { X.n = 0;} + // A complete FROM clause. %type from {SArray*} // current not support query from no-table @@ -681,8 +685,8 @@ expr(A) ::= expr(X) IN LP exprlist(Y) RP. {A = tSqlExprCreate(X, (tSQLExpr*)Y, %type expritem {tSQLExpr*} %destructor expritem {tSqlExprDestroy($$);} -exprlist(A) ::= exprlist(X) COMMA expritem(Y). {A = tSqlExprListAppend(X,Y,0);} -exprlist(A) ::= expritem(X). {A = tSqlExprListAppend(0,X,0);} +exprlist(A) ::= exprlist(X) COMMA expritem(Y). {A = tSqlExprListAppend(X,Y,0, 0);} +exprlist(A) ::= expritem(X). {A = tSqlExprListAppend(0,X,0, 0);} expritem(A) ::= expr(X). {A = X;} expritem(A) ::= . {A = 0;} diff --git a/src/query/src/qParserImpl.c b/src/query/src/qParserImpl.c index 6dff55075545d87ff8357b2ce5ab271f7ae5cd65..d0839b3dc4faf18535a1cef58315f5c420128cf1 100644 --- a/src/query/src/qParserImpl.c +++ b/src/query/src/qParserImpl.c @@ -71,7 +71,7 @@ abort_parse: return sqlInfo; } -tSQLExprList *tSqlExprListAppend(tSQLExprList *pList, tSQLExpr *pNode, SStrToken *pToken) { +tSQLExprList *tSqlExprListAppend(tSQLExprList *pList, tSQLExpr *pNode, SStrToken *pDistinct, SStrToken *pToken) { if (pList == NULL) { pList = calloc(1, sizeof(tSQLExprList)); } @@ -97,6 +97,7 @@ tSQLExprList *tSqlExprListAppend(tSQLExprList *pList, tSQLExpr *pNode, SStrToken strdequote(pItem->aliasName); } + pItem->distinct = (pDistinct != NULL); } return pList; } diff --git a/src/query/src/qTokenizer.c b/src/query/src/qTokenizer.c index 48d2f5d505557355b851f6a107d6b225729ee64f..b55f813b5b1225d0b8e05b87e11b0d19ed2ce200 100644 --- a/src/query/src/qTokenizer.c +++ b/src/query/src/qTokenizer.c @@ -240,6 +240,7 @@ static SKeyword keywordTable[] = { {"AVG_RATE", TK_AVG_RATE}, {"AVG_IRATE", TK_AVG_IRATE}, {"CACHELAST", TK_CACHELAST}, + {"DISTINCT", TK_DISTINCT}, }; static const char isIdChar[] = { diff --git a/src/query/src/sql.c b/src/query/src/sql.c index cc5d6c0b4a57ea37a208ef5eebc045fde60efc6f..0f945d0230f70943fddc19373ef8b872a127c5b5 100644 --- a/src/query/src/sql.c +++ b/src/query/src/sql.c @@ -97,27 +97,27 @@ #endif /************* Begin control #defines *****************************************/ #define YYCODETYPE unsigned short int -#define YYNOCODE 280 +#define YYNOCODE 282 #define YYACTIONTYPE unsigned short int #define ParseTOKENTYPE SStrToken typedef union { int yyinit; ParseTOKENTYPE yy0; - SQuerySQL* yy30; - SCreateTableSQL* yy38; - SCreatedTableInfo yy78; - SLimitVal yy126; - int yy130; - SArray* yy135; - SSubclauseInfo* yy153; - SIntervalVal yy160; - TAOS_FIELD yy181; - SCreateDbInfo yy256; - tSQLExprList* yy266; - SCreateAcctInfo yy277; - tVariant yy308; - tSQLExpr* yy316; - int64_t yy531; + SCreatedTableInfo yy42; + SCreateAcctInfo yy47; + SQuerySQL* yy114; + TAOS_FIELD yy179; + SLimitVal yy204; + SSubclauseInfo* yy219; + int yy222; + SArray* yy247; + SCreateDbInfo yy262; + tSQLExpr* yy326; + SCreateTableSQL* yy358; + tVariant yy378; + int64_t yy403; + SIntervalVal yy430; + tSQLExprList* yy522; } YYMINORTYPE; #ifndef YYSTACKDEPTH #define YYSTACKDEPTH 100 @@ -127,17 +127,17 @@ typedef union { #define ParseARG_FETCH SSqlInfo* pInfo = yypParser->pInfo #define ParseARG_STORE yypParser->pInfo = pInfo #define YYFALLBACK 1 -#define YYNSTATE 282 -#define YYNRULE 248 -#define YYNTOKEN 209 -#define YY_MAX_SHIFT 281 -#define YY_MIN_SHIFTREDUCE 461 -#define YY_MAX_SHIFTREDUCE 708 -#define YY_ERROR_ACTION 709 -#define YY_ACCEPT_ACTION 710 -#define YY_NO_ACTION 711 -#define YY_MIN_REDUCE 712 -#define YY_MAX_REDUCE 959 +#define YYNSTATE 283 +#define YYNRULE 250 +#define YYNTOKEN 210 +#define YY_MAX_SHIFT 282 +#define YY_MIN_SHIFTREDUCE 463 +#define YY_MAX_SHIFTREDUCE 712 +#define YY_ERROR_ACTION 713 +#define YY_ACCEPT_ACTION 714 +#define YY_NO_ACTION 715 +#define YY_MIN_REDUCE 716 +#define YY_MAX_REDUCE 965 /************* End control #defines *******************************************/ /* Define the yytestcase() macro to be a no-op if is not already defined @@ -203,243 +203,241 @@ typedef union { ** yy_default[] Default action for each state. ** *********** Begin parsing tables **********************************************/ -#define YY_ACTTAB_COUNT (622) +#define YY_ACTTAB_COUNT (615) static const YYACTIONTYPE yy_action[] = { - /* 0 */ 158, 505, 158, 710, 281, 857, 15, 578, 182, 506, - /* 10 */ 941, 185, 942, 41, 42, 157, 43, 44, 26, 179, - /* 20 */ 190, 35, 505, 505, 231, 47, 45, 49, 46, 868, - /* 30 */ 506, 506, 846, 40, 39, 256, 255, 38, 37, 36, - /* 40 */ 41, 42, 162, 43, 44, 857, 951, 190, 35, 178, - /* 50 */ 279, 231, 47, 45, 49, 46, 180, 195, 843, 214, - /* 60 */ 40, 39, 938, 61, 38, 37, 36, 462, 463, 464, - /* 70 */ 465, 466, 467, 468, 469, 470, 471, 472, 473, 280, - /* 80 */ 198, 846, 204, 41, 42, 865, 43, 44, 246, 266, - /* 90 */ 190, 35, 158, 834, 231, 47, 45, 49, 46, 122, - /* 100 */ 122, 184, 942, 40, 39, 122, 62, 38, 37, 36, - /* 110 */ 20, 244, 274, 273, 243, 242, 241, 272, 240, 271, - /* 120 */ 270, 269, 239, 268, 267, 38, 37, 36, 813, 657, - /* 130 */ 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, - /* 140 */ 811, 812, 814, 815, 42, 200, 43, 44, 253, 252, - /* 150 */ 190, 35, 937, 275, 231, 47, 45, 49, 46, 228, - /* 160 */ 895, 66, 226, 40, 39, 115, 894, 38, 37, 36, - /* 170 */ 26, 43, 44, 32, 26, 190, 35, 846, 207, 231, - /* 180 */ 47, 45, 49, 46, 26, 211, 210, 754, 40, 39, - /* 190 */ 146, 845, 38, 37, 36, 189, 670, 117, 835, 661, - /* 200 */ 71, 664, 26, 667, 763, 189, 670, 146, 193, 661, - /* 210 */ 843, 664, 194, 667, 843, 189, 670, 16, 26, 661, - /* 220 */ 936, 664, 249, 667, 843, 10, 21, 186, 187, 70, - /* 230 */ 132, 230, 837, 166, 32, 196, 69, 186, 187, 167, - /* 240 */ 250, 615, 843, 122, 102, 101, 165, 186, 187, 174, - /* 250 */ 20, 26, 274, 273, 219, 905, 254, 272, 843, 271, - /* 260 */ 270, 269, 607, 268, 267, 832, 833, 25, 836, 819, - /* 270 */ 216, 90, 817, 818, 21, 246, 266, 820, 68, 822, - /* 280 */ 823, 821, 32, 824, 825, 47, 45, 49, 46, 258, - /* 290 */ 33, 843, 199, 40, 39, 48, 26, 38, 37, 36, - /* 300 */ 197, 217, 213, 248, 67, 48, 27, 669, 659, 173, - /* 310 */ 278, 277, 109, 755, 232, 48, 146, 669, 599, 638, - /* 320 */ 639, 596, 668, 597, 844, 598, 612, 669, 175, 40, - /* 330 */ 39, 22, 668, 38, 37, 36, 842, 160, 625, 88, - /* 340 */ 92, 188, 668, 119, 660, 82, 97, 100, 91, 201, - /* 350 */ 202, 99, 98, 629, 94, 3, 136, 161, 52, 152, - /* 360 */ 148, 29, 77, 73, 76, 150, 105, 104, 103, 630, - /* 370 */ 689, 671, 53, 56, 18, 17, 17, 663, 163, 666, - /* 380 */ 662, 588, 665, 4, 81, 80, 27, 234, 589, 164, - /* 390 */ 57, 54, 27, 52, 12, 11, 87, 86, 59, 603, - /* 400 */ 577, 604, 14, 13, 601, 170, 602, 673, 114, 112, - /* 410 */ 171, 169, 156, 168, 159, 859, 904, 191, 901, 116, - /* 420 */ 900, 192, 257, 867, 600, 872, 874, 887, 118, 886, - /* 430 */ 133, 134, 32, 131, 135, 765, 238, 154, 30, 247, - /* 440 */ 762, 956, 78, 955, 953, 137, 251, 950, 84, 113, - /* 450 */ 949, 947, 138, 783, 31, 28, 155, 752, 93, 750, - /* 460 */ 215, 95, 96, 748, 624, 58, 747, 203, 147, 745, - /* 470 */ 744, 743, 742, 220, 741, 55, 149, 50, 181, 229, - /* 480 */ 224, 856, 227, 124, 151, 738, 736, 734, 732, 730, - /* 490 */ 225, 223, 221, 153, 34, 218, 89, 63, 64, 259, - /* 500 */ 260, 888, 261, 262, 264, 263, 265, 276, 708, 205, - /* 510 */ 206, 707, 208, 209, 706, 176, 236, 237, 694, 177, - /* 520 */ 172, 212, 74, 216, 65, 609, 746, 60, 233, 106, - /* 530 */ 6, 183, 740, 141, 107, 140, 784, 139, 142, 144, - /* 540 */ 143, 145, 739, 1, 108, 841, 731, 2, 626, 129, - /* 550 */ 127, 125, 123, 126, 128, 120, 222, 130, 631, 121, - /* 560 */ 23, 7, 8, 672, 24, 5, 9, 674, 19, 72, - /* 570 */ 235, 546, 542, 70, 540, 539, 538, 535, 509, 245, - /* 580 */ 79, 75, 27, 83, 51, 580, 579, 576, 530, 528, - /* 590 */ 520, 526, 522, 85, 524, 518, 516, 548, 547, 545, - /* 600 */ 544, 543, 541, 537, 536, 52, 507, 477, 475, 110, - /* 610 */ 712, 711, 711, 711, 711, 711, 711, 711, 711, 711, - /* 620 */ 711, 111, + /* 0 */ 872, 507, 159, 714, 282, 159, 15, 580, 183, 508, + /* 10 */ 663, 186, 948, 41, 42, 947, 43, 44, 26, 158, + /* 20 */ 191, 35, 507, 507, 232, 47, 45, 49, 46, 163, + /* 30 */ 508, 508, 850, 40, 39, 257, 256, 38, 37, 36, + /* 40 */ 41, 42, 118, 43, 44, 861, 664, 191, 35, 179, + /* 50 */ 280, 232, 47, 45, 49, 46, 181, 869, 847, 215, + /* 60 */ 40, 39, 957, 123, 38, 37, 36, 464, 465, 466, + /* 70 */ 467, 468, 469, 470, 471, 472, 473, 474, 475, 281, + /* 80 */ 91, 196, 205, 41, 42, 267, 43, 44, 839, 247, + /* 90 */ 191, 35, 159, 944, 232, 47, 45, 49, 46, 123, + /* 100 */ 220, 185, 948, 40, 39, 850, 62, 38, 37, 36, + /* 110 */ 20, 245, 275, 274, 244, 243, 242, 273, 241, 272, + /* 120 */ 271, 270, 240, 269, 268, 901, 267, 227, 817, 661, + /* 130 */ 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, + /* 140 */ 815, 816, 818, 819, 42, 208, 43, 44, 642, 643, + /* 150 */ 191, 35, 212, 211, 232, 47, 45, 49, 46, 229, + /* 160 */ 861, 67, 21, 40, 39, 247, 276, 38, 37, 36, + /* 170 */ 32, 43, 44, 197, 180, 191, 35, 849, 70, 232, + /* 180 */ 47, 45, 49, 46, 16, 38, 37, 36, 40, 39, + /* 190 */ 850, 123, 38, 37, 36, 190, 674, 72, 26, 665, + /* 200 */ 167, 668, 667, 671, 670, 61, 168, 836, 837, 25, + /* 210 */ 840, 103, 102, 166, 190, 674, 758, 199, 665, 147, + /* 220 */ 668, 767, 671, 20, 147, 275, 274, 187, 188, 841, + /* 230 */ 273, 231, 272, 271, 270, 838, 269, 268, 846, 198, + /* 240 */ 823, 21, 249, 821, 822, 943, 187, 188, 824, 32, + /* 250 */ 826, 827, 825, 900, 828, 829, 123, 3, 137, 47, + /* 260 */ 45, 49, 46, 29, 78, 74, 77, 40, 39, 617, + /* 270 */ 214, 38, 37, 36, 233, 601, 759, 174, 598, 147, + /* 280 */ 599, 26, 600, 201, 89, 93, 254, 253, 26, 942, + /* 290 */ 83, 98, 101, 92, 26, 48, 153, 149, 26, 95, + /* 300 */ 175, 26, 151, 106, 105, 104, 202, 203, 673, 26, + /* 310 */ 69, 40, 39, 200, 48, 38, 37, 36, 68, 194, + /* 320 */ 10, 847, 63, 672, 71, 133, 195, 673, 847, 279, + /* 330 */ 278, 110, 250, 666, 847, 669, 251, 614, 847, 255, + /* 340 */ 116, 847, 672, 22, 621, 848, 609, 259, 32, 847, + /* 350 */ 218, 629, 633, 634, 217, 27, 120, 52, 18, 693, + /* 360 */ 675, 189, 53, 176, 17, 17, 590, 677, 56, 235, + /* 370 */ 591, 27, 100, 99, 27, 52, 82, 81, 12, 11, + /* 380 */ 161, 602, 54, 59, 162, 579, 57, 88, 87, 14, + /* 390 */ 13, 605, 603, 606, 604, 115, 113, 164, 165, 171, + /* 400 */ 911, 172, 170, 4, 157, 169, 160, 910, 192, 907, + /* 410 */ 906, 193, 258, 117, 871, 33, 878, 880, 119, 863, + /* 420 */ 893, 892, 134, 135, 132, 136, 769, 32, 239, 155, + /* 430 */ 30, 248, 766, 216, 962, 79, 961, 114, 959, 138, + /* 440 */ 252, 956, 85, 955, 628, 953, 221, 139, 182, 225, + /* 450 */ 787, 31, 28, 58, 156, 756, 94, 860, 55, 50, + /* 460 */ 754, 96, 230, 124, 228, 125, 97, 752, 126, 127, + /* 470 */ 226, 128, 224, 222, 751, 34, 204, 148, 90, 749, + /* 480 */ 260, 261, 262, 748, 747, 746, 745, 263, 150, 152, + /* 490 */ 742, 740, 264, 738, 736, 734, 265, 154, 266, 219, + /* 500 */ 64, 65, 894, 277, 712, 206, 207, 177, 237, 238, + /* 510 */ 711, 178, 173, 209, 75, 210, 710, 698, 217, 213, + /* 520 */ 750, 611, 107, 60, 744, 234, 142, 141, 788, 140, + /* 530 */ 143, 144, 146, 145, 1, 108, 743, 2, 109, 735, + /* 540 */ 66, 6, 184, 630, 845, 121, 223, 131, 129, 130, + /* 550 */ 635, 122, 5, 23, 7, 8, 24, 676, 9, 19, + /* 560 */ 678, 71, 73, 236, 548, 544, 542, 541, 540, 537, + /* 570 */ 511, 246, 76, 27, 51, 582, 80, 84, 581, 578, + /* 580 */ 532, 86, 530, 522, 528, 524, 526, 520, 518, 550, + /* 590 */ 549, 547, 546, 545, 543, 539, 538, 52, 509, 479, + /* 600 */ 477, 716, 715, 715, 715, 715, 715, 715, 715, 715, + /* 610 */ 715, 715, 715, 111, 112, }; static const YYCODETYPE yy_lookahead[] = { - /* 0 */ 268, 1, 268, 210, 211, 252, 268, 5, 230, 9, - /* 10 */ 278, 277, 278, 13, 14, 268, 16, 17, 213, 266, - /* 20 */ 20, 21, 1, 1, 24, 25, 26, 27, 28, 213, - /* 30 */ 9, 9, 254, 33, 34, 33, 34, 37, 38, 39, - /* 40 */ 13, 14, 268, 16, 17, 252, 254, 20, 21, 212, - /* 50 */ 213, 24, 25, 26, 27, 28, 251, 230, 253, 266, - /* 60 */ 33, 34, 268, 218, 37, 38, 39, 45, 46, 47, + /* 0 */ 214, 1, 270, 211, 212, 270, 270, 5, 231, 9, + /* 10 */ 1, 279, 280, 13, 14, 280, 16, 17, 214, 270, + /* 20 */ 20, 21, 1, 1, 24, 25, 26, 27, 28, 270, + /* 30 */ 9, 9, 255, 33, 34, 33, 34, 37, 38, 39, + /* 40 */ 13, 14, 214, 16, 17, 253, 37, 20, 21, 213, + /* 50 */ 214, 24, 25, 26, 27, 28, 252, 271, 254, 267, + /* 60 */ 33, 34, 255, 214, 37, 38, 39, 45, 46, 47, /* 70 */ 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - /* 80 */ 66, 254, 60, 13, 14, 269, 16, 17, 77, 79, - /* 90 */ 20, 21, 268, 248, 24, 25, 26, 27, 28, 213, - /* 100 */ 213, 277, 278, 33, 34, 213, 106, 37, 38, 39, + /* 80 */ 74, 231, 60, 13, 14, 79, 16, 17, 0, 77, + /* 90 */ 20, 21, 270, 270, 24, 25, 26, 27, 28, 214, + /* 100 */ 272, 279, 280, 33, 34, 255, 106, 37, 38, 39, /* 110 */ 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, - /* 120 */ 96, 97, 98, 99, 100, 37, 38, 39, 229, 102, - /* 130 */ 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - /* 140 */ 241, 242, 243, 244, 14, 131, 16, 17, 134, 135, - /* 150 */ 20, 21, 268, 230, 24, 25, 26, 27, 28, 272, - /* 160 */ 274, 274, 276, 33, 34, 101, 274, 37, 38, 39, - /* 170 */ 213, 16, 17, 109, 213, 20, 21, 254, 130, 24, - /* 180 */ 25, 26, 27, 28, 213, 137, 138, 217, 33, 34, - /* 190 */ 220, 254, 37, 38, 39, 1, 2, 213, 0, 5, - /* 200 */ 218, 7, 213, 9, 217, 1, 2, 220, 251, 5, - /* 210 */ 253, 7, 251, 9, 253, 1, 2, 44, 213, 5, - /* 220 */ 268, 7, 251, 9, 253, 101, 101, 33, 34, 105, - /* 230 */ 106, 37, 250, 60, 109, 66, 218, 33, 34, 66, - /* 240 */ 251, 37, 253, 213, 71, 72, 73, 33, 34, 268, - /* 250 */ 86, 213, 88, 89, 270, 246, 251, 93, 253, 95, - /* 260 */ 96, 97, 102, 99, 100, 247, 248, 249, 250, 229, - /* 270 */ 110, 74, 232, 233, 101, 77, 79, 237, 255, 239, - /* 280 */ 240, 241, 109, 243, 244, 25, 26, 27, 28, 251, - /* 290 */ 267, 253, 213, 33, 34, 101, 213, 37, 38, 39, - /* 300 */ 131, 102, 129, 134, 274, 101, 107, 113, 1, 136, - /* 310 */ 63, 64, 65, 217, 15, 101, 220, 113, 2, 119, - /* 320 */ 120, 5, 128, 7, 245, 9, 107, 113, 268, 33, - /* 330 */ 34, 112, 128, 37, 38, 39, 253, 268, 102, 61, - /* 340 */ 62, 59, 128, 107, 37, 67, 68, 69, 70, 33, - /* 350 */ 34, 74, 75, 102, 76, 61, 62, 268, 107, 61, - /* 360 */ 62, 67, 68, 69, 70, 67, 68, 69, 70, 102, - /* 370 */ 102, 102, 107, 107, 107, 107, 107, 5, 268, 7, - /* 380 */ 5, 102, 7, 101, 132, 133, 107, 102, 102, 268, - /* 390 */ 124, 126, 107, 107, 132, 133, 132, 133, 101, 5, - /* 400 */ 103, 7, 132, 133, 5, 268, 7, 108, 61, 62, - /* 410 */ 268, 268, 268, 268, 268, 252, 246, 246, 246, 213, - /* 420 */ 246, 246, 246, 213, 108, 213, 213, 275, 213, 275, - /* 430 */ 213, 213, 109, 256, 213, 213, 213, 213, 213, 213, - /* 440 */ 213, 213, 213, 213, 213, 213, 213, 213, 213, 59, - /* 450 */ 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, - /* 460 */ 252, 213, 213, 213, 113, 123, 213, 213, 213, 213, - /* 470 */ 213, 213, 213, 271, 213, 125, 213, 122, 271, 117, - /* 480 */ 271, 265, 121, 263, 213, 213, 213, 213, 213, 213, - /* 490 */ 116, 115, 114, 213, 127, 214, 85, 214, 214, 84, - /* 500 */ 49, 214, 81, 83, 82, 53, 80, 77, 5, 139, - /* 510 */ 5, 5, 139, 5, 5, 214, 214, 214, 87, 214, - /* 520 */ 214, 130, 218, 110, 107, 102, 214, 111, 104, 215, - /* 530 */ 101, 1, 214, 222, 215, 226, 228, 227, 225, 224, - /* 540 */ 223, 221, 214, 219, 215, 252, 214, 216, 102, 258, - /* 550 */ 260, 262, 264, 261, 259, 101, 101, 257, 102, 101, - /* 560 */ 107, 118, 118, 102, 107, 101, 101, 108, 101, 74, - /* 570 */ 104, 9, 5, 105, 5, 5, 5, 5, 78, 15, - /* 580 */ 133, 74, 107, 133, 16, 5, 5, 102, 5, 5, - /* 590 */ 5, 5, 5, 133, 5, 5, 5, 5, 5, 5, - /* 600 */ 5, 5, 5, 5, 5, 107, 78, 59, 58, 21, - /* 610 */ 0, 279, 279, 279, 279, 279, 279, 279, 279, 279, - /* 620 */ 279, 21, 279, 279, 279, 279, 279, 279, 279, 279, - /* 630 */ 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, - /* 640 */ 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, - /* 650 */ 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, - /* 660 */ 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, - /* 670 */ 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, - /* 680 */ 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, - /* 690 */ 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, - /* 700 */ 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, - /* 710 */ 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, - /* 720 */ 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, - /* 730 */ 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, - /* 740 */ 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, - /* 750 */ 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, - /* 760 */ 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, - /* 770 */ 279, 279, 279, 279, 279, 279, 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, - /* 810 */ 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, - /* 820 */ 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, - /* 830 */ 279, + /* 120 */ 96, 97, 98, 99, 100, 276, 79, 278, 230, 102, + /* 130 */ 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, + /* 140 */ 242, 243, 244, 245, 14, 131, 16, 17, 120, 121, + /* 150 */ 20, 21, 138, 139, 24, 25, 26, 27, 28, 274, + /* 160 */ 253, 276, 101, 33, 34, 77, 231, 37, 38, 39, + /* 170 */ 109, 16, 17, 66, 267, 20, 21, 255, 219, 24, + /* 180 */ 25, 26, 27, 28, 44, 37, 38, 39, 33, 34, + /* 190 */ 255, 214, 37, 38, 39, 1, 2, 219, 214, 5, + /* 200 */ 60, 7, 5, 9, 7, 219, 66, 248, 249, 250, + /* 210 */ 251, 71, 72, 73, 1, 2, 218, 66, 5, 221, + /* 220 */ 7, 218, 9, 86, 221, 88, 89, 33, 34, 251, + /* 230 */ 93, 37, 95, 96, 97, 249, 99, 100, 254, 132, + /* 240 */ 230, 101, 135, 233, 234, 270, 33, 34, 238, 109, + /* 250 */ 240, 241, 242, 276, 244, 245, 214, 61, 62, 25, + /* 260 */ 26, 27, 28, 67, 68, 69, 70, 33, 34, 37, + /* 270 */ 130, 37, 38, 39, 15, 2, 218, 137, 5, 221, + /* 280 */ 7, 214, 9, 132, 61, 62, 135, 136, 214, 270, + /* 290 */ 67, 68, 69, 70, 214, 101, 61, 62, 214, 76, + /* 300 */ 270, 214, 67, 68, 69, 70, 33, 34, 114, 214, + /* 310 */ 256, 33, 34, 214, 101, 37, 38, 39, 276, 252, + /* 320 */ 101, 254, 268, 129, 105, 106, 252, 114, 254, 63, + /* 330 */ 64, 65, 252, 5, 254, 7, 252, 107, 254, 252, + /* 340 */ 101, 254, 129, 113, 112, 246, 102, 252, 109, 254, + /* 350 */ 102, 102, 102, 102, 110, 107, 107, 107, 107, 102, + /* 360 */ 102, 59, 107, 270, 107, 107, 102, 108, 107, 102, + /* 370 */ 102, 107, 74, 75, 107, 107, 133, 134, 133, 134, + /* 380 */ 270, 108, 127, 101, 270, 103, 125, 133, 134, 133, + /* 390 */ 134, 5, 5, 7, 7, 61, 62, 270, 270, 270, + /* 400 */ 247, 270, 270, 101, 270, 270, 270, 247, 247, 247, + /* 410 */ 247, 247, 247, 214, 214, 269, 214, 214, 214, 253, + /* 420 */ 277, 277, 214, 214, 257, 214, 214, 109, 214, 214, + /* 430 */ 214, 214, 214, 253, 214, 214, 214, 59, 214, 214, + /* 440 */ 214, 214, 214, 214, 114, 214, 273, 214, 273, 273, + /* 450 */ 214, 214, 214, 124, 214, 214, 214, 266, 126, 123, + /* 460 */ 214, 214, 118, 265, 122, 264, 214, 214, 263, 262, + /* 470 */ 117, 261, 116, 115, 214, 128, 214, 214, 85, 214, + /* 480 */ 84, 49, 81, 214, 214, 214, 214, 83, 214, 214, + /* 490 */ 214, 214, 53, 214, 214, 214, 82, 214, 80, 215, + /* 500 */ 215, 215, 215, 77, 5, 140, 5, 215, 215, 215, + /* 510 */ 5, 215, 215, 140, 219, 5, 5, 87, 110, 131, + /* 520 */ 215, 102, 216, 111, 215, 104, 223, 227, 229, 228, + /* 530 */ 226, 224, 222, 225, 220, 216, 215, 217, 216, 215, + /* 540 */ 107, 101, 1, 102, 253, 101, 101, 258, 260, 259, + /* 550 */ 102, 101, 101, 107, 119, 119, 107, 102, 101, 101, + /* 560 */ 108, 105, 74, 104, 9, 5, 5, 5, 5, 5, + /* 570 */ 78, 15, 74, 107, 16, 5, 134, 134, 5, 102, + /* 580 */ 5, 134, 5, 5, 5, 5, 5, 5, 5, 5, + /* 590 */ 5, 5, 5, 5, 5, 5, 5, 107, 78, 59, + /* 600 */ 58, 0, 281, 281, 281, 281, 281, 281, 281, 281, + /* 610 */ 281, 281, 281, 21, 21, 281, 281, 281, 281, 281, + /* 620 */ 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, + /* 630 */ 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, + /* 640 */ 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, + /* 650 */ 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, + /* 660 */ 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, + /* 670 */ 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, + /* 680 */ 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, + /* 690 */ 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, + /* 700 */ 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, + /* 710 */ 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, + /* 720 */ 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, + /* 730 */ 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, + /* 740 */ 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, + /* 750 */ 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, + /* 760 */ 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, + /* 770 */ 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, + /* 780 */ 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, + /* 790 */ 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, + /* 800 */ 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, + /* 810 */ 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, + /* 820 */ 281, 281, 281, 281, 281, }; -#define YY_SHIFT_COUNT (281) +#define YY_SHIFT_COUNT (282) #define YY_SHIFT_MIN (0) -#define YY_SHIFT_MAX (610) +#define YY_SHIFT_MAX (601) static const unsigned short int yy_shift_ofst[] = { - /* 0 */ 173, 24, 164, 11, 194, 214, 21, 21, 21, 21, - /* 10 */ 21, 21, 21, 21, 21, 0, 22, 214, 316, 316, - /* 20 */ 316, 125, 21, 21, 21, 198, 21, 21, 197, 11, - /* 30 */ 10, 10, 622, 204, 214, 214, 214, 214, 214, 214, - /* 40 */ 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, - /* 50 */ 214, 316, 316, 2, 2, 2, 2, 2, 2, 2, - /* 60 */ 64, 21, 21, 21, 21, 21, 200, 200, 219, 21, + /* 0 */ 140, 24, 137, 12, 194, 213, 21, 21, 21, 21, + /* 10 */ 21, 21, 21, 21, 21, 0, 22, 213, 273, 273, + /* 20 */ 273, 61, 21, 21, 21, 88, 21, 21, 6, 12, + /* 30 */ 47, 47, 615, 213, 213, 213, 213, 213, 213, 213, + /* 40 */ 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, + /* 50 */ 213, 273, 273, 2, 2, 2, 2, 2, 2, 2, + /* 60 */ 239, 21, 21, 232, 21, 21, 21, 28, 28, 230, /* 70 */ 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, /* 80 */ 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, /* 90 */ 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, /* 100 */ 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, - /* 110 */ 21, 21, 21, 21, 21, 323, 390, 390, 390, 351, - /* 120 */ 351, 351, 390, 342, 350, 355, 362, 361, 374, 376, - /* 130 */ 378, 367, 323, 390, 390, 390, 11, 390, 390, 411, - /* 140 */ 415, 451, 421, 420, 452, 422, 426, 390, 430, 390, - /* 150 */ 430, 390, 430, 390, 622, 622, 27, 70, 70, 70, - /* 160 */ 130, 155, 260, 260, 260, 278, 294, 298, 296, 296, - /* 170 */ 296, 296, 14, 48, 88, 88, 124, 169, 247, 160, - /* 180 */ 199, 236, 251, 267, 268, 269, 372, 375, 307, 282, - /* 190 */ 299, 265, 266, 279, 285, 286, 252, 262, 264, 297, - /* 200 */ 270, 394, 399, 277, 347, 503, 370, 505, 506, 373, - /* 210 */ 508, 509, 431, 391, 413, 423, 416, 424, 429, 417, - /* 220 */ 446, 454, 530, 455, 456, 458, 453, 443, 457, 444, - /* 230 */ 461, 464, 459, 465, 424, 467, 466, 468, 495, 562, - /* 240 */ 567, 569, 570, 571, 572, 500, 564, 507, 447, 475, - /* 250 */ 475, 568, 450, 460, 475, 580, 581, 485, 475, 583, - /* 260 */ 584, 585, 586, 587, 589, 590, 591, 592, 593, 594, - /* 270 */ 595, 596, 597, 598, 599, 498, 528, 588, 600, 548, - /* 280 */ 550, 610, + /* 110 */ 21, 21, 21, 21, 21, 21, 318, 378, 378, 378, + /* 120 */ 330, 330, 330, 378, 329, 332, 336, 344, 342, 353, + /* 130 */ 356, 358, 347, 318, 378, 378, 378, 12, 378, 378, + /* 140 */ 393, 396, 432, 401, 404, 439, 414, 418, 378, 426, + /* 150 */ 378, 426, 378, 426, 378, 615, 615, 27, 70, 70, + /* 160 */ 70, 130, 155, 234, 234, 234, 223, 196, 235, 278, + /* 170 */ 278, 278, 278, 151, 14, 148, 148, 219, 107, 266, + /* 180 */ 244, 248, 249, 250, 251, 257, 258, 197, 328, 9, + /* 190 */ 302, 259, 255, 261, 264, 267, 268, 243, 245, 254, + /* 200 */ 282, 256, 386, 387, 298, 334, 499, 365, 501, 505, + /* 210 */ 373, 510, 511, 430, 388, 408, 419, 412, 421, 440, + /* 220 */ 433, 441, 444, 541, 445, 448, 450, 446, 435, 449, + /* 230 */ 436, 455, 451, 452, 457, 421, 458, 459, 456, 488, + /* 240 */ 555, 560, 561, 562, 563, 564, 492, 556, 498, 442, + /* 250 */ 466, 466, 558, 443, 447, 466, 570, 573, 477, 466, + /* 260 */ 575, 577, 578, 579, 580, 581, 582, 583, 584, 585, + /* 270 */ 586, 587, 588, 589, 590, 591, 490, 520, 592, 593, + /* 280 */ 540, 542, 601, }; -#define YY_REDUCE_COUNT (155) +#define YY_REDUCE_COUNT (156) #define YY_REDUCE_MIN (-268) -#define YY_REDUCE_MAX (332) +#define YY_REDUCE_MAX (324) static const short yy_reduce_ofst[] = { - /* 0 */ -207, -101, 40, 18, -266, -176, -195, -114, -113, -43, - /* 10 */ -39, -29, -11, 5, 38, -184, -163, -268, -222, -173, - /* 20 */ -77, -247, -16, -108, 30, -18, 79, 83, -30, -155, - /* 30 */ -13, 96, 23, -262, -253, -226, -206, -116, -48, -19, - /* 40 */ 60, 69, 89, 110, 121, 137, 142, 143, 144, 145, - /* 50 */ 146, -208, -63, 9, 170, 171, 172, 174, 175, 176, - /* 60 */ 163, 206, 210, 212, 213, 215, 152, 154, 177, 217, - /* 70 */ 218, 221, 222, 223, 224, 225, 226, 227, 228, 229, - /* 80 */ 230, 231, 232, 233, 234, 235, 237, 238, 239, 240, - /* 90 */ 241, 242, 243, 244, 245, 246, 248, 249, 250, 253, - /* 100 */ 254, 255, 256, 257, 258, 259, 261, 263, 271, 272, - /* 110 */ 273, 274, 275, 276, 280, 208, 281, 283, 284, 202, - /* 120 */ 207, 209, 287, 216, 288, 220, 289, 292, 290, 295, - /* 130 */ 291, 300, 293, 301, 302, 303, 304, 305, 306, 308, - /* 140 */ 310, 309, 311, 313, 317, 315, 320, 312, 314, 318, - /* 150 */ 319, 328, 329, 332, 324, 331, + /* 0 */ -208, -102, 10, -41, -268, -178, -196, -151, -115, 67, + /* 10 */ 74, 80, 84, 87, 95, -214, -164, -265, -223, -150, + /* 20 */ -65, -93, -172, -23, 42, -22, 99, -16, -2, -14, + /* 30 */ 3, 58, 54, -264, -251, -241, -177, -25, 19, 30, + /* 40 */ 93, 110, 114, 127, 128, 129, 131, 132, 134, 135, + /* 50 */ 136, -193, -78, 153, 160, 161, 162, 163, 164, 165, + /* 60 */ 166, 199, 200, 146, 202, 203, 204, 143, 144, 167, + /* 70 */ 208, 209, 211, 212, 214, 215, 216, 217, 218, 220, + /* 80 */ 221, 222, 224, 225, 226, 227, 228, 229, 231, 233, + /* 90 */ 236, 237, 238, 240, 241, 242, 246, 247, 252, 253, + /* 100 */ 260, 262, 263, 265, 269, 270, 271, 272, 274, 275, + /* 110 */ 276, 277, 279, 280, 281, 283, 180, 284, 285, 286, + /* 120 */ 173, 175, 176, 287, 191, 198, 201, 205, 207, 210, + /* 130 */ 288, 290, 289, 291, 292, 293, 294, 295, 296, 297, + /* 140 */ 299, 301, 300, 303, 304, 307, 308, 310, 305, 306, + /* 150 */ 309, 319, 321, 322, 324, 314, 320, }; static const YYACTIONTYPE yy_default[] = { - /* 0 */ 709, 764, 753, 761, 944, 944, 709, 709, 709, 709, - /* 10 */ 709, 709, 709, 709, 709, 869, 727, 944, 709, 709, - /* 20 */ 709, 709, 709, 709, 709, 761, 709, 709, 766, 761, - /* 30 */ 766, 766, 864, 709, 709, 709, 709, 709, 709, 709, - /* 40 */ 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, - /* 50 */ 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, - /* 60 */ 709, 709, 709, 871, 873, 709, 891, 891, 862, 709, - /* 70 */ 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, - /* 80 */ 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, - /* 90 */ 709, 709, 709, 751, 709, 749, 709, 709, 709, 709, - /* 100 */ 709, 709, 709, 709, 709, 709, 709, 709, 709, 737, - /* 110 */ 709, 709, 709, 709, 709, 709, 729, 729, 729, 709, - /* 120 */ 709, 709, 729, 898, 902, 896, 884, 892, 883, 879, - /* 130 */ 878, 906, 709, 729, 729, 729, 761, 729, 729, 782, - /* 140 */ 780, 778, 770, 776, 772, 774, 768, 729, 759, 729, - /* 150 */ 759, 729, 759, 729, 800, 816, 709, 907, 943, 897, - /* 160 */ 933, 932, 939, 931, 930, 709, 709, 709, 926, 927, - /* 170 */ 929, 928, 709, 709, 935, 934, 709, 709, 709, 709, - /* 180 */ 709, 709, 709, 709, 709, 709, 709, 709, 709, 909, - /* 190 */ 709, 903, 899, 709, 709, 709, 709, 709, 709, 826, - /* 200 */ 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, - /* 210 */ 709, 709, 709, 709, 861, 709, 709, 709, 709, 870, - /* 220 */ 709, 709, 709, 709, 709, 709, 893, 709, 885, 709, - /* 230 */ 709, 709, 709, 709, 838, 709, 709, 709, 709, 709, - /* 240 */ 709, 709, 709, 709, 709, 709, 709, 709, 709, 954, - /* 250 */ 952, 709, 709, 709, 948, 709, 709, 709, 946, 709, - /* 260 */ 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, - /* 270 */ 709, 709, 709, 709, 709, 785, 709, 735, 733, 709, - /* 280 */ 725, 709, + /* 0 */ 713, 768, 757, 765, 950, 950, 713, 713, 713, 713, + /* 10 */ 713, 713, 713, 713, 713, 873, 731, 950, 713, 713, + /* 20 */ 713, 713, 713, 713, 713, 765, 713, 713, 770, 765, + /* 30 */ 770, 770, 868, 713, 713, 713, 713, 713, 713, 713, + /* 40 */ 713, 713, 713, 713, 713, 713, 713, 713, 713, 713, + /* 50 */ 713, 713, 713, 713, 713, 713, 713, 713, 713, 713, + /* 60 */ 713, 713, 713, 875, 877, 879, 713, 897, 897, 866, + /* 70 */ 713, 713, 713, 713, 713, 713, 713, 713, 713, 713, + /* 80 */ 713, 713, 713, 713, 713, 713, 713, 713, 713, 713, + /* 90 */ 713, 713, 713, 713, 755, 713, 753, 713, 713, 713, + /* 100 */ 713, 713, 713, 713, 713, 713, 713, 713, 713, 713, + /* 110 */ 741, 713, 713, 713, 713, 713, 713, 733, 733, 733, + /* 120 */ 713, 713, 713, 733, 904, 908, 902, 890, 898, 889, + /* 130 */ 885, 884, 912, 713, 733, 733, 733, 765, 733, 733, + /* 140 */ 786, 784, 782, 774, 780, 776, 778, 772, 733, 763, + /* 150 */ 733, 763, 733, 763, 733, 804, 820, 713, 913, 949, + /* 160 */ 903, 939, 938, 945, 937, 936, 713, 713, 713, 932, + /* 170 */ 933, 935, 934, 713, 713, 941, 940, 713, 713, 713, + /* 180 */ 713, 713, 713, 713, 713, 713, 713, 713, 713, 713, + /* 190 */ 915, 713, 909, 905, 713, 713, 713, 713, 713, 713, + /* 200 */ 830, 713, 713, 713, 713, 713, 713, 713, 713, 713, + /* 210 */ 713, 713, 713, 713, 713, 865, 713, 713, 713, 713, + /* 220 */ 876, 713, 713, 713, 713, 713, 713, 899, 713, 891, + /* 230 */ 713, 713, 713, 713, 713, 842, 713, 713, 713, 713, + /* 240 */ 713, 713, 713, 713, 713, 713, 713, 713, 713, 713, + /* 250 */ 960, 958, 713, 713, 713, 954, 713, 713, 713, 952, + /* 260 */ 713, 713, 713, 713, 713, 713, 713, 713, 713, 713, + /* 270 */ 713, 713, 713, 713, 713, 713, 789, 713, 739, 737, + /* 280 */ 713, 729, 713, }; /********** End of lemon-generated parsing tables *****************************/ @@ -571,6 +569,7 @@ static const YYCODETYPE yyFallback[] = { 0, /* SELECT => nothing */ 0, /* UNION => nothing */ 1, /* ALL => ID */ + 0, /* DISTINCT => nothing */ 0, /* FROM => nothing */ 0, /* VARIABLE => nothing */ 0, /* INTERVAL => nothing */ @@ -866,173 +865,175 @@ static const char *const yyTokenName[] = { /* 109 */ "SELECT", /* 110 */ "UNION", /* 111 */ "ALL", - /* 112 */ "FROM", - /* 113 */ "VARIABLE", - /* 114 */ "INTERVAL", - /* 115 */ "FILL", - /* 116 */ "SLIDING", - /* 117 */ "ORDER", - /* 118 */ "BY", - /* 119 */ "ASC", - /* 120 */ "DESC", - /* 121 */ "GROUP", - /* 122 */ "HAVING", - /* 123 */ "LIMIT", - /* 124 */ "OFFSET", - /* 125 */ "SLIMIT", - /* 126 */ "SOFFSET", - /* 127 */ "WHERE", - /* 128 */ "NOW", - /* 129 */ "RESET", - /* 130 */ "QUERY", - /* 131 */ "ADD", - /* 132 */ "COLUMN", - /* 133 */ "TAG", - /* 134 */ "CHANGE", - /* 135 */ "SET", - /* 136 */ "KILL", - /* 137 */ "CONNECTION", - /* 138 */ "STREAM", - /* 139 */ "COLON", - /* 140 */ "ABORT", - /* 141 */ "AFTER", - /* 142 */ "ATTACH", - /* 143 */ "BEFORE", - /* 144 */ "BEGIN", - /* 145 */ "CASCADE", - /* 146 */ "CLUSTER", - /* 147 */ "CONFLICT", - /* 148 */ "COPY", - /* 149 */ "DEFERRED", - /* 150 */ "DELIMITERS", - /* 151 */ "DETACH", - /* 152 */ "EACH", - /* 153 */ "END", - /* 154 */ "EXPLAIN", - /* 155 */ "FAIL", - /* 156 */ "FOR", - /* 157 */ "IGNORE", - /* 158 */ "IMMEDIATE", - /* 159 */ "INITIALLY", - /* 160 */ "INSTEAD", - /* 161 */ "MATCH", - /* 162 */ "KEY", - /* 163 */ "OF", - /* 164 */ "RAISE", - /* 165 */ "REPLACE", - /* 166 */ "RESTRICT", - /* 167 */ "ROW", - /* 168 */ "STATEMENT", - /* 169 */ "TRIGGER", - /* 170 */ "VIEW", - /* 171 */ "COUNT", - /* 172 */ "SUM", - /* 173 */ "AVG", - /* 174 */ "MIN", - /* 175 */ "MAX", - /* 176 */ "FIRST", - /* 177 */ "LAST", - /* 178 */ "TOP", - /* 179 */ "BOTTOM", - /* 180 */ "STDDEV", - /* 181 */ "PERCENTILE", - /* 182 */ "APERCENTILE", - /* 183 */ "LEASTSQUARES", - /* 184 */ "HISTOGRAM", - /* 185 */ "DIFF", - /* 186 */ "SPREAD", - /* 187 */ "TWA", - /* 188 */ "INTERP", - /* 189 */ "LAST_ROW", - /* 190 */ "RATE", - /* 191 */ "IRATE", - /* 192 */ "SUM_RATE", - /* 193 */ "SUM_IRATE", - /* 194 */ "AVG_RATE", - /* 195 */ "AVG_IRATE", - /* 196 */ "TBID", - /* 197 */ "SEMI", - /* 198 */ "NONE", - /* 199 */ "PREV", - /* 200 */ "LINEAR", - /* 201 */ "IMPORT", - /* 202 */ "METRIC", - /* 203 */ "TBNAME", - /* 204 */ "JOIN", - /* 205 */ "METRICS", - /* 206 */ "INSERT", - /* 207 */ "INTO", - /* 208 */ "VALUES", - /* 209 */ "error", - /* 210 */ "program", - /* 211 */ "cmd", - /* 212 */ "dbPrefix", - /* 213 */ "ids", - /* 214 */ "cpxName", - /* 215 */ "ifexists", - /* 216 */ "alter_db_optr", - /* 217 */ "acct_optr", - /* 218 */ "ifnotexists", - /* 219 */ "db_optr", - /* 220 */ "pps", - /* 221 */ "tseries", - /* 222 */ "dbs", - /* 223 */ "streams", - /* 224 */ "storage", - /* 225 */ "qtime", - /* 226 */ "users", - /* 227 */ "conns", - /* 228 */ "state", - /* 229 */ "keep", - /* 230 */ "tagitemlist", - /* 231 */ "cache", - /* 232 */ "replica", - /* 233 */ "quorum", - /* 234 */ "days", - /* 235 */ "minrows", - /* 236 */ "maxrows", - /* 237 */ "blocks", - /* 238 */ "ctime", - /* 239 */ "wal", - /* 240 */ "fsync", - /* 241 */ "comp", - /* 242 */ "prec", - /* 243 */ "update", - /* 244 */ "cachelast", - /* 245 */ "typename", - /* 246 */ "signed", - /* 247 */ "create_table_args", - /* 248 */ "create_stable_args", - /* 249 */ "create_table_list", - /* 250 */ "create_from_stable", - /* 251 */ "columnlist", - /* 252 */ "select", - /* 253 */ "column", - /* 254 */ "tagitem", - /* 255 */ "selcollist", - /* 256 */ "from", - /* 257 */ "where_opt", - /* 258 */ "interval_opt", - /* 259 */ "fill_opt", - /* 260 */ "sliding_opt", - /* 261 */ "groupby_opt", - /* 262 */ "orderby_opt", - /* 263 */ "having_opt", - /* 264 */ "slimit_opt", - /* 265 */ "limit_opt", - /* 266 */ "union", - /* 267 */ "sclp", - /* 268 */ "expr", - /* 269 */ "as", - /* 270 */ "tablelist", - /* 271 */ "tmvar", - /* 272 */ "sortlist", - /* 273 */ "sortitem", - /* 274 */ "item", - /* 275 */ "sortorder", - /* 276 */ "grouplist", - /* 277 */ "exprlist", - /* 278 */ "expritem", + /* 112 */ "DISTINCT", + /* 113 */ "FROM", + /* 114 */ "VARIABLE", + /* 115 */ "INTERVAL", + /* 116 */ "FILL", + /* 117 */ "SLIDING", + /* 118 */ "ORDER", + /* 119 */ "BY", + /* 120 */ "ASC", + /* 121 */ "DESC", + /* 122 */ "GROUP", + /* 123 */ "HAVING", + /* 124 */ "LIMIT", + /* 125 */ "OFFSET", + /* 126 */ "SLIMIT", + /* 127 */ "SOFFSET", + /* 128 */ "WHERE", + /* 129 */ "NOW", + /* 130 */ "RESET", + /* 131 */ "QUERY", + /* 132 */ "ADD", + /* 133 */ "COLUMN", + /* 134 */ "TAG", + /* 135 */ "CHANGE", + /* 136 */ "SET", + /* 137 */ "KILL", + /* 138 */ "CONNECTION", + /* 139 */ "STREAM", + /* 140 */ "COLON", + /* 141 */ "ABORT", + /* 142 */ "AFTER", + /* 143 */ "ATTACH", + /* 144 */ "BEFORE", + /* 145 */ "BEGIN", + /* 146 */ "CASCADE", + /* 147 */ "CLUSTER", + /* 148 */ "CONFLICT", + /* 149 */ "COPY", + /* 150 */ "DEFERRED", + /* 151 */ "DELIMITERS", + /* 152 */ "DETACH", + /* 153 */ "EACH", + /* 154 */ "END", + /* 155 */ "EXPLAIN", + /* 156 */ "FAIL", + /* 157 */ "FOR", + /* 158 */ "IGNORE", + /* 159 */ "IMMEDIATE", + /* 160 */ "INITIALLY", + /* 161 */ "INSTEAD", + /* 162 */ "MATCH", + /* 163 */ "KEY", + /* 164 */ "OF", + /* 165 */ "RAISE", + /* 166 */ "REPLACE", + /* 167 */ "RESTRICT", + /* 168 */ "ROW", + /* 169 */ "STATEMENT", + /* 170 */ "TRIGGER", + /* 171 */ "VIEW", + /* 172 */ "COUNT", + /* 173 */ "SUM", + /* 174 */ "AVG", + /* 175 */ "MIN", + /* 176 */ "MAX", + /* 177 */ "FIRST", + /* 178 */ "LAST", + /* 179 */ "TOP", + /* 180 */ "BOTTOM", + /* 181 */ "STDDEV", + /* 182 */ "PERCENTILE", + /* 183 */ "APERCENTILE", + /* 184 */ "LEASTSQUARES", + /* 185 */ "HISTOGRAM", + /* 186 */ "DIFF", + /* 187 */ "SPREAD", + /* 188 */ "TWA", + /* 189 */ "INTERP", + /* 190 */ "LAST_ROW", + /* 191 */ "RATE", + /* 192 */ "IRATE", + /* 193 */ "SUM_RATE", + /* 194 */ "SUM_IRATE", + /* 195 */ "AVG_RATE", + /* 196 */ "AVG_IRATE", + /* 197 */ "TBID", + /* 198 */ "SEMI", + /* 199 */ "NONE", + /* 200 */ "PREV", + /* 201 */ "LINEAR", + /* 202 */ "IMPORT", + /* 203 */ "METRIC", + /* 204 */ "TBNAME", + /* 205 */ "JOIN", + /* 206 */ "METRICS", + /* 207 */ "INSERT", + /* 208 */ "INTO", + /* 209 */ "VALUES", + /* 210 */ "error", + /* 211 */ "program", + /* 212 */ "cmd", + /* 213 */ "dbPrefix", + /* 214 */ "ids", + /* 215 */ "cpxName", + /* 216 */ "ifexists", + /* 217 */ "alter_db_optr", + /* 218 */ "acct_optr", + /* 219 */ "ifnotexists", + /* 220 */ "db_optr", + /* 221 */ "pps", + /* 222 */ "tseries", + /* 223 */ "dbs", + /* 224 */ "streams", + /* 225 */ "storage", + /* 226 */ "qtime", + /* 227 */ "users", + /* 228 */ "conns", + /* 229 */ "state", + /* 230 */ "keep", + /* 231 */ "tagitemlist", + /* 232 */ "cache", + /* 233 */ "replica", + /* 234 */ "quorum", + /* 235 */ "days", + /* 236 */ "minrows", + /* 237 */ "maxrows", + /* 238 */ "blocks", + /* 239 */ "ctime", + /* 240 */ "wal", + /* 241 */ "fsync", + /* 242 */ "comp", + /* 243 */ "prec", + /* 244 */ "update", + /* 245 */ "cachelast", + /* 246 */ "typename", + /* 247 */ "signed", + /* 248 */ "create_table_args", + /* 249 */ "create_stable_args", + /* 250 */ "create_table_list", + /* 251 */ "create_from_stable", + /* 252 */ "columnlist", + /* 253 */ "select", + /* 254 */ "column", + /* 255 */ "tagitem", + /* 256 */ "selcollist", + /* 257 */ "from", + /* 258 */ "where_opt", + /* 259 */ "interval_opt", + /* 260 */ "fill_opt", + /* 261 */ "sliding_opt", + /* 262 */ "groupby_opt", + /* 263 */ "orderby_opt", + /* 264 */ "having_opt", + /* 265 */ "slimit_opt", + /* 266 */ "limit_opt", + /* 267 */ "union", + /* 268 */ "sclp", + /* 269 */ "distinct", + /* 270 */ "expr", + /* 271 */ "as", + /* 272 */ "tablelist", + /* 273 */ "tmvar", + /* 274 */ "sortlist", + /* 275 */ "sortitem", + /* 276 */ "item", + /* 277 */ "sortorder", + /* 278 */ "grouplist", + /* 279 */ "exprlist", + /* 280 */ "expritem", }; #endif /* defined(YYCOVERAGE) || !defined(NDEBUG) */ @@ -1193,101 +1194,103 @@ static const char *const yyRuleName[] = { /* 150 */ "select ::= SELECT selcollist", /* 151 */ "sclp ::= selcollist COMMA", /* 152 */ "sclp ::=", - /* 153 */ "selcollist ::= sclp expr as", + /* 153 */ "selcollist ::= sclp distinct expr as", /* 154 */ "selcollist ::= sclp STAR", /* 155 */ "as ::= AS ids", /* 156 */ "as ::= ids", /* 157 */ "as ::=", - /* 158 */ "from ::= FROM tablelist", - /* 159 */ "tablelist ::= ids cpxName", - /* 160 */ "tablelist ::= ids cpxName ids", - /* 161 */ "tablelist ::= tablelist COMMA ids cpxName", - /* 162 */ "tablelist ::= tablelist COMMA ids cpxName ids", - /* 163 */ "tmvar ::= VARIABLE", - /* 164 */ "interval_opt ::= INTERVAL LP tmvar RP", - /* 165 */ "interval_opt ::= INTERVAL LP tmvar COMMA tmvar RP", - /* 166 */ "interval_opt ::=", - /* 167 */ "fill_opt ::=", - /* 168 */ "fill_opt ::= FILL LP ID COMMA tagitemlist RP", - /* 169 */ "fill_opt ::= FILL LP ID RP", - /* 170 */ "sliding_opt ::= SLIDING LP tmvar RP", - /* 171 */ "sliding_opt ::=", - /* 172 */ "orderby_opt ::=", - /* 173 */ "orderby_opt ::= ORDER BY sortlist", - /* 174 */ "sortlist ::= sortlist COMMA item sortorder", - /* 175 */ "sortlist ::= item sortorder", - /* 176 */ "item ::= ids cpxName", - /* 177 */ "sortorder ::= ASC", - /* 178 */ "sortorder ::= DESC", - /* 179 */ "sortorder ::=", - /* 180 */ "groupby_opt ::=", - /* 181 */ "groupby_opt ::= GROUP BY grouplist", - /* 182 */ "grouplist ::= grouplist COMMA item", - /* 183 */ "grouplist ::= item", - /* 184 */ "having_opt ::=", - /* 185 */ "having_opt ::= HAVING expr", - /* 186 */ "limit_opt ::=", - /* 187 */ "limit_opt ::= LIMIT signed", - /* 188 */ "limit_opt ::= LIMIT signed OFFSET signed", - /* 189 */ "limit_opt ::= LIMIT signed COMMA signed", - /* 190 */ "slimit_opt ::=", - /* 191 */ "slimit_opt ::= SLIMIT signed", - /* 192 */ "slimit_opt ::= SLIMIT signed SOFFSET signed", - /* 193 */ "slimit_opt ::= SLIMIT signed COMMA signed", - /* 194 */ "where_opt ::=", - /* 195 */ "where_opt ::= WHERE expr", - /* 196 */ "expr ::= LP expr RP", - /* 197 */ "expr ::= ID", - /* 198 */ "expr ::= ID DOT ID", - /* 199 */ "expr ::= ID DOT STAR", - /* 200 */ "expr ::= INTEGER", - /* 201 */ "expr ::= MINUS INTEGER", - /* 202 */ "expr ::= PLUS INTEGER", - /* 203 */ "expr ::= FLOAT", - /* 204 */ "expr ::= MINUS FLOAT", - /* 205 */ "expr ::= PLUS FLOAT", - /* 206 */ "expr ::= STRING", - /* 207 */ "expr ::= NOW", - /* 208 */ "expr ::= VARIABLE", - /* 209 */ "expr ::= BOOL", - /* 210 */ "expr ::= ID LP exprlist RP", - /* 211 */ "expr ::= ID LP STAR RP", - /* 212 */ "expr ::= expr IS NULL", - /* 213 */ "expr ::= expr IS NOT NULL", - /* 214 */ "expr ::= expr LT expr", - /* 215 */ "expr ::= expr GT expr", - /* 216 */ "expr ::= expr LE expr", - /* 217 */ "expr ::= expr GE expr", - /* 218 */ "expr ::= expr NE expr", - /* 219 */ "expr ::= expr EQ expr", - /* 220 */ "expr ::= expr AND expr", - /* 221 */ "expr ::= expr OR expr", - /* 222 */ "expr ::= expr PLUS expr", - /* 223 */ "expr ::= expr MINUS expr", - /* 224 */ "expr ::= expr STAR expr", - /* 225 */ "expr ::= expr SLASH expr", - /* 226 */ "expr ::= expr REM expr", - /* 227 */ "expr ::= expr LIKE expr", - /* 228 */ "expr ::= expr IN LP exprlist RP", - /* 229 */ "exprlist ::= exprlist COMMA expritem", - /* 230 */ "exprlist ::= expritem", - /* 231 */ "expritem ::= expr", - /* 232 */ "expritem ::=", - /* 233 */ "cmd ::= RESET QUERY CACHE", - /* 234 */ "cmd ::= ALTER TABLE ids cpxName ADD COLUMN columnlist", - /* 235 */ "cmd ::= ALTER TABLE ids cpxName DROP COLUMN ids", - /* 236 */ "cmd ::= ALTER TABLE ids cpxName ADD TAG columnlist", - /* 237 */ "cmd ::= ALTER TABLE ids cpxName DROP TAG ids", - /* 238 */ "cmd ::= ALTER TABLE ids cpxName CHANGE TAG ids ids", - /* 239 */ "cmd ::= ALTER TABLE ids cpxName SET TAG ids EQ tagitem", - /* 240 */ "cmd ::= ALTER STABLE ids cpxName ADD COLUMN columnlist", - /* 241 */ "cmd ::= ALTER STABLE ids cpxName DROP COLUMN ids", - /* 242 */ "cmd ::= ALTER STABLE ids cpxName ADD TAG columnlist", - /* 243 */ "cmd ::= ALTER STABLE ids cpxName DROP TAG ids", - /* 244 */ "cmd ::= ALTER STABLE ids cpxName CHANGE TAG ids ids", - /* 245 */ "cmd ::= KILL CONNECTION INTEGER", - /* 246 */ "cmd ::= KILL STREAM INTEGER COLON INTEGER", - /* 247 */ "cmd ::= KILL QUERY INTEGER COLON INTEGER", + /* 158 */ "distinct ::= DISTINCT", + /* 159 */ "distinct ::=", + /* 160 */ "from ::= FROM tablelist", + /* 161 */ "tablelist ::= ids cpxName", + /* 162 */ "tablelist ::= ids cpxName ids", + /* 163 */ "tablelist ::= tablelist COMMA ids cpxName", + /* 164 */ "tablelist ::= tablelist COMMA ids cpxName ids", + /* 165 */ "tmvar ::= VARIABLE", + /* 166 */ "interval_opt ::= INTERVAL LP tmvar RP", + /* 167 */ "interval_opt ::= INTERVAL LP tmvar COMMA tmvar RP", + /* 168 */ "interval_opt ::=", + /* 169 */ "fill_opt ::=", + /* 170 */ "fill_opt ::= FILL LP ID COMMA tagitemlist RP", + /* 171 */ "fill_opt ::= FILL LP ID RP", + /* 172 */ "sliding_opt ::= SLIDING LP tmvar RP", + /* 173 */ "sliding_opt ::=", + /* 174 */ "orderby_opt ::=", + /* 175 */ "orderby_opt ::= ORDER BY sortlist", + /* 176 */ "sortlist ::= sortlist COMMA item sortorder", + /* 177 */ "sortlist ::= item sortorder", + /* 178 */ "item ::= ids cpxName", + /* 179 */ "sortorder ::= ASC", + /* 180 */ "sortorder ::= DESC", + /* 181 */ "sortorder ::=", + /* 182 */ "groupby_opt ::=", + /* 183 */ "groupby_opt ::= GROUP BY grouplist", + /* 184 */ "grouplist ::= grouplist COMMA item", + /* 185 */ "grouplist ::= item", + /* 186 */ "having_opt ::=", + /* 187 */ "having_opt ::= HAVING expr", + /* 188 */ "limit_opt ::=", + /* 189 */ "limit_opt ::= LIMIT signed", + /* 190 */ "limit_opt ::= LIMIT signed OFFSET signed", + /* 191 */ "limit_opt ::= LIMIT signed COMMA signed", + /* 192 */ "slimit_opt ::=", + /* 193 */ "slimit_opt ::= SLIMIT signed", + /* 194 */ "slimit_opt ::= SLIMIT signed SOFFSET signed", + /* 195 */ "slimit_opt ::= SLIMIT signed COMMA signed", + /* 196 */ "where_opt ::=", + /* 197 */ "where_opt ::= WHERE expr", + /* 198 */ "expr ::= LP expr RP", + /* 199 */ "expr ::= ID", + /* 200 */ "expr ::= ID DOT ID", + /* 201 */ "expr ::= ID DOT STAR", + /* 202 */ "expr ::= INTEGER", + /* 203 */ "expr ::= MINUS INTEGER", + /* 204 */ "expr ::= PLUS INTEGER", + /* 205 */ "expr ::= FLOAT", + /* 206 */ "expr ::= MINUS FLOAT", + /* 207 */ "expr ::= PLUS FLOAT", + /* 208 */ "expr ::= STRING", + /* 209 */ "expr ::= NOW", + /* 210 */ "expr ::= VARIABLE", + /* 211 */ "expr ::= BOOL", + /* 212 */ "expr ::= ID LP exprlist RP", + /* 213 */ "expr ::= ID LP STAR RP", + /* 214 */ "expr ::= expr IS NULL", + /* 215 */ "expr ::= expr IS NOT NULL", + /* 216 */ "expr ::= expr LT expr", + /* 217 */ "expr ::= expr GT expr", + /* 218 */ "expr ::= expr LE expr", + /* 219 */ "expr ::= expr GE expr", + /* 220 */ "expr ::= expr NE expr", + /* 221 */ "expr ::= expr EQ expr", + /* 222 */ "expr ::= expr AND expr", + /* 223 */ "expr ::= expr OR expr", + /* 224 */ "expr ::= expr PLUS expr", + /* 225 */ "expr ::= expr MINUS expr", + /* 226 */ "expr ::= expr STAR expr", + /* 227 */ "expr ::= expr SLASH expr", + /* 228 */ "expr ::= expr REM expr", + /* 229 */ "expr ::= expr LIKE expr", + /* 230 */ "expr ::= expr IN LP exprlist RP", + /* 231 */ "exprlist ::= exprlist COMMA expritem", + /* 232 */ "exprlist ::= expritem", + /* 233 */ "expritem ::= expr", + /* 234 */ "expritem ::=", + /* 235 */ "cmd ::= RESET QUERY CACHE", + /* 236 */ "cmd ::= ALTER TABLE ids cpxName ADD COLUMN columnlist", + /* 237 */ "cmd ::= ALTER TABLE ids cpxName DROP COLUMN ids", + /* 238 */ "cmd ::= ALTER TABLE ids cpxName ADD TAG columnlist", + /* 239 */ "cmd ::= ALTER TABLE ids cpxName DROP TAG ids", + /* 240 */ "cmd ::= ALTER TABLE ids cpxName CHANGE TAG ids ids", + /* 241 */ "cmd ::= ALTER TABLE ids cpxName SET TAG ids EQ tagitem", + /* 242 */ "cmd ::= ALTER STABLE ids cpxName ADD COLUMN columnlist", + /* 243 */ "cmd ::= ALTER STABLE ids cpxName DROP COLUMN ids", + /* 244 */ "cmd ::= ALTER STABLE ids cpxName ADD TAG columnlist", + /* 245 */ "cmd ::= ALTER STABLE ids cpxName DROP TAG ids", + /* 246 */ "cmd ::= ALTER STABLE ids cpxName CHANGE TAG ids ids", + /* 247 */ "cmd ::= KILL CONNECTION INTEGER", + /* 248 */ "cmd ::= KILL STREAM INTEGER COLON INTEGER", + /* 249 */ "cmd ::= KILL QUERY INTEGER COLON INTEGER", }; #endif /* NDEBUG */ @@ -1408,51 +1411,51 @@ static void yy_destructor( ** inside the C code. */ /********* Begin destructor definitions ***************************************/ - case 229: /* keep */ - case 230: /* tagitemlist */ - case 251: /* columnlist */ - case 259: /* fill_opt */ - case 261: /* groupby_opt */ - case 262: /* orderby_opt */ - case 272: /* sortlist */ - case 276: /* grouplist */ + case 230: /* keep */ + case 231: /* tagitemlist */ + case 252: /* columnlist */ + case 260: /* fill_opt */ + case 262: /* groupby_opt */ + case 263: /* orderby_opt */ + case 274: /* sortlist */ + case 278: /* grouplist */ { -taosArrayDestroy((yypminor->yy135)); +taosArrayDestroy((yypminor->yy247)); } break; - case 249: /* create_table_list */ + case 250: /* create_table_list */ { -destroyCreateTableSql((yypminor->yy38)); +destroyCreateTableSql((yypminor->yy358)); } break; - case 252: /* select */ + case 253: /* select */ { -doDestroyQuerySql((yypminor->yy30)); +doDestroyQuerySql((yypminor->yy114)); } break; - case 255: /* selcollist */ - case 267: /* sclp */ - case 277: /* exprlist */ + case 256: /* selcollist */ + case 268: /* sclp */ + case 279: /* exprlist */ { -tSqlExprListDestroy((yypminor->yy266)); +tSqlExprListDestroy((yypminor->yy522)); } break; - case 257: /* where_opt */ - case 263: /* having_opt */ - case 268: /* expr */ - case 278: /* expritem */ + case 258: /* where_opt */ + case 264: /* having_opt */ + case 270: /* expr */ + case 280: /* expritem */ { -tSqlExprDestroy((yypminor->yy316)); +tSqlExprDestroy((yypminor->yy326)); } break; - case 266: /* union */ + case 267: /* union */ { -destroyAllSelectClause((yypminor->yy153)); +destroyAllSelectClause((yypminor->yy219)); } break; - case 273: /* sortitem */ + case 275: /* sortitem */ { -tVariantDestroy(&(yypminor->yy308)); +tVariantDestroy(&(yypminor->yy378)); } break; /********* End destructor definitions *****************************************/ @@ -1746,254 +1749,256 @@ static const struct { YYCODETYPE lhs; /* Symbol on the left-hand side of the rule */ signed char nrhs; /* Negative of the number of RHS symbols in the rule */ } yyRuleInfo[] = { - { 210, -1 }, /* (0) program ::= cmd */ - { 211, -2 }, /* (1) cmd ::= SHOW DATABASES */ - { 211, -2 }, /* (2) cmd ::= SHOW MNODES */ - { 211, -2 }, /* (3) cmd ::= SHOW DNODES */ - { 211, -2 }, /* (4) cmd ::= SHOW ACCOUNTS */ - { 211, -2 }, /* (5) cmd ::= SHOW USERS */ - { 211, -2 }, /* (6) cmd ::= SHOW MODULES */ - { 211, -2 }, /* (7) cmd ::= SHOW QUERIES */ - { 211, -2 }, /* (8) cmd ::= SHOW CONNECTIONS */ - { 211, -2 }, /* (9) cmd ::= SHOW STREAMS */ - { 211, -2 }, /* (10) cmd ::= SHOW VARIABLES */ - { 211, -2 }, /* (11) cmd ::= SHOW SCORES */ - { 211, -2 }, /* (12) cmd ::= SHOW GRANTS */ - { 211, -2 }, /* (13) cmd ::= SHOW VNODES */ - { 211, -3 }, /* (14) cmd ::= SHOW VNODES IPTOKEN */ - { 212, 0 }, /* (15) dbPrefix ::= */ - { 212, -2 }, /* (16) dbPrefix ::= ids DOT */ - { 214, 0 }, /* (17) cpxName ::= */ - { 214, -2 }, /* (18) cpxName ::= DOT ids */ - { 211, -5 }, /* (19) cmd ::= SHOW CREATE TABLE ids cpxName */ - { 211, -4 }, /* (20) cmd ::= SHOW CREATE DATABASE ids */ - { 211, -3 }, /* (21) cmd ::= SHOW dbPrefix TABLES */ - { 211, -5 }, /* (22) cmd ::= SHOW dbPrefix TABLES LIKE ids */ - { 211, -3 }, /* (23) cmd ::= SHOW dbPrefix STABLES */ - { 211, -5 }, /* (24) cmd ::= SHOW dbPrefix STABLES LIKE ids */ - { 211, -3 }, /* (25) cmd ::= SHOW dbPrefix VGROUPS */ - { 211, -4 }, /* (26) cmd ::= SHOW dbPrefix VGROUPS ids */ - { 211, -5 }, /* (27) cmd ::= DROP TABLE ifexists ids cpxName */ - { 211, -5 }, /* (28) cmd ::= DROP STABLE ifexists ids cpxName */ - { 211, -4 }, /* (29) cmd ::= DROP DATABASE ifexists ids */ - { 211, -3 }, /* (30) cmd ::= DROP DNODE ids */ - { 211, -3 }, /* (31) cmd ::= DROP USER ids */ - { 211, -3 }, /* (32) cmd ::= DROP ACCOUNT ids */ - { 211, -2 }, /* (33) cmd ::= USE ids */ - { 211, -3 }, /* (34) cmd ::= DESCRIBE ids cpxName */ - { 211, -5 }, /* (35) cmd ::= ALTER USER ids PASS ids */ - { 211, -5 }, /* (36) cmd ::= ALTER USER ids PRIVILEGE ids */ - { 211, -4 }, /* (37) cmd ::= ALTER DNODE ids ids */ - { 211, -5 }, /* (38) cmd ::= ALTER DNODE ids ids ids */ - { 211, -3 }, /* (39) cmd ::= ALTER LOCAL ids */ - { 211, -4 }, /* (40) cmd ::= ALTER LOCAL ids ids */ - { 211, -4 }, /* (41) cmd ::= ALTER DATABASE ids alter_db_optr */ - { 211, -4 }, /* (42) cmd ::= ALTER ACCOUNT ids acct_optr */ - { 211, -6 }, /* (43) cmd ::= ALTER ACCOUNT ids PASS ids acct_optr */ - { 213, -1 }, /* (44) ids ::= ID */ - { 213, -1 }, /* (45) ids ::= STRING */ - { 215, -2 }, /* (46) ifexists ::= IF EXISTS */ - { 215, 0 }, /* (47) ifexists ::= */ - { 218, -3 }, /* (48) ifnotexists ::= IF NOT EXISTS */ - { 218, 0 }, /* (49) ifnotexists ::= */ - { 211, -3 }, /* (50) cmd ::= CREATE DNODE ids */ - { 211, -6 }, /* (51) cmd ::= CREATE ACCOUNT ids PASS ids acct_optr */ - { 211, -5 }, /* (52) cmd ::= CREATE DATABASE ifnotexists ids db_optr */ - { 211, -5 }, /* (53) cmd ::= CREATE USER ids PASS ids */ - { 220, 0 }, /* (54) pps ::= */ - { 220, -2 }, /* (55) pps ::= PPS INTEGER */ - { 221, 0 }, /* (56) tseries ::= */ - { 221, -2 }, /* (57) tseries ::= TSERIES INTEGER */ - { 222, 0 }, /* (58) dbs ::= */ - { 222, -2 }, /* (59) dbs ::= DBS INTEGER */ - { 223, 0 }, /* (60) streams ::= */ - { 223, -2 }, /* (61) streams ::= STREAMS INTEGER */ - { 224, 0 }, /* (62) storage ::= */ - { 224, -2 }, /* (63) storage ::= STORAGE INTEGER */ - { 225, 0 }, /* (64) qtime ::= */ - { 225, -2 }, /* (65) qtime ::= QTIME INTEGER */ - { 226, 0 }, /* (66) users ::= */ - { 226, -2 }, /* (67) users ::= USERS INTEGER */ - { 227, 0 }, /* (68) conns ::= */ - { 227, -2 }, /* (69) conns ::= CONNS INTEGER */ - { 228, 0 }, /* (70) state ::= */ - { 228, -2 }, /* (71) state ::= STATE ids */ - { 217, -9 }, /* (72) acct_optr ::= pps tseries storage streams qtime dbs users conns state */ - { 229, -2 }, /* (73) keep ::= KEEP tagitemlist */ - { 231, -2 }, /* (74) cache ::= CACHE INTEGER */ - { 232, -2 }, /* (75) replica ::= REPLICA INTEGER */ - { 233, -2 }, /* (76) quorum ::= QUORUM INTEGER */ - { 234, -2 }, /* (77) days ::= DAYS INTEGER */ - { 235, -2 }, /* (78) minrows ::= MINROWS INTEGER */ - { 236, -2 }, /* (79) maxrows ::= MAXROWS INTEGER */ - { 237, -2 }, /* (80) blocks ::= BLOCKS INTEGER */ - { 238, -2 }, /* (81) ctime ::= CTIME INTEGER */ - { 239, -2 }, /* (82) wal ::= WAL INTEGER */ - { 240, -2 }, /* (83) fsync ::= FSYNC INTEGER */ - { 241, -2 }, /* (84) comp ::= COMP INTEGER */ - { 242, -2 }, /* (85) prec ::= PRECISION STRING */ - { 243, -2 }, /* (86) update ::= UPDATE INTEGER */ - { 244, -2 }, /* (87) cachelast ::= CACHELAST INTEGER */ - { 219, 0 }, /* (88) db_optr ::= */ - { 219, -2 }, /* (89) db_optr ::= db_optr cache */ - { 219, -2 }, /* (90) db_optr ::= db_optr replica */ - { 219, -2 }, /* (91) db_optr ::= db_optr quorum */ - { 219, -2 }, /* (92) db_optr ::= db_optr days */ - { 219, -2 }, /* (93) db_optr ::= db_optr minrows */ - { 219, -2 }, /* (94) db_optr ::= db_optr maxrows */ - { 219, -2 }, /* (95) db_optr ::= db_optr blocks */ - { 219, -2 }, /* (96) db_optr ::= db_optr ctime */ - { 219, -2 }, /* (97) db_optr ::= db_optr wal */ - { 219, -2 }, /* (98) db_optr ::= db_optr fsync */ - { 219, -2 }, /* (99) db_optr ::= db_optr comp */ - { 219, -2 }, /* (100) db_optr ::= db_optr prec */ - { 219, -2 }, /* (101) db_optr ::= db_optr keep */ - { 219, -2 }, /* (102) db_optr ::= db_optr update */ - { 219, -2 }, /* (103) db_optr ::= db_optr cachelast */ - { 216, 0 }, /* (104) alter_db_optr ::= */ - { 216, -2 }, /* (105) alter_db_optr ::= alter_db_optr replica */ - { 216, -2 }, /* (106) alter_db_optr ::= alter_db_optr quorum */ - { 216, -2 }, /* (107) alter_db_optr ::= alter_db_optr keep */ - { 216, -2 }, /* (108) alter_db_optr ::= alter_db_optr blocks */ - { 216, -2 }, /* (109) alter_db_optr ::= alter_db_optr comp */ - { 216, -2 }, /* (110) alter_db_optr ::= alter_db_optr wal */ - { 216, -2 }, /* (111) alter_db_optr ::= alter_db_optr fsync */ - { 216, -2 }, /* (112) alter_db_optr ::= alter_db_optr update */ - { 216, -2 }, /* (113) alter_db_optr ::= alter_db_optr cachelast */ - { 245, -1 }, /* (114) typename ::= ids */ - { 245, -4 }, /* (115) typename ::= ids LP signed RP */ - { 245, -2 }, /* (116) typename ::= ids UNSIGNED */ - { 246, -1 }, /* (117) signed ::= INTEGER */ - { 246, -2 }, /* (118) signed ::= PLUS INTEGER */ - { 246, -2 }, /* (119) signed ::= MINUS INTEGER */ - { 211, -3 }, /* (120) cmd ::= CREATE TABLE create_table_args */ - { 211, -3 }, /* (121) cmd ::= CREATE TABLE create_stable_args */ - { 211, -3 }, /* (122) cmd ::= CREATE STABLE create_stable_args */ - { 211, -3 }, /* (123) cmd ::= CREATE TABLE create_table_list */ - { 249, -1 }, /* (124) create_table_list ::= create_from_stable */ - { 249, -2 }, /* (125) create_table_list ::= create_table_list create_from_stable */ - { 247, -6 }, /* (126) create_table_args ::= ifnotexists ids cpxName LP columnlist RP */ - { 248, -10 }, /* (127) create_stable_args ::= ifnotexists ids cpxName LP columnlist RP TAGS LP columnlist RP */ - { 250, -10 }, /* (128) create_from_stable ::= ifnotexists ids cpxName USING ids cpxName TAGS LP tagitemlist RP */ - { 247, -5 }, /* (129) create_table_args ::= ifnotexists ids cpxName AS select */ - { 251, -3 }, /* (130) columnlist ::= columnlist COMMA column */ - { 251, -1 }, /* (131) columnlist ::= column */ - { 253, -2 }, /* (132) column ::= ids typename */ - { 230, -3 }, /* (133) tagitemlist ::= tagitemlist COMMA tagitem */ - { 230, -1 }, /* (134) tagitemlist ::= tagitem */ - { 254, -1 }, /* (135) tagitem ::= INTEGER */ - { 254, -1 }, /* (136) tagitem ::= FLOAT */ - { 254, -1 }, /* (137) tagitem ::= STRING */ - { 254, -1 }, /* (138) tagitem ::= BOOL */ - { 254, -1 }, /* (139) tagitem ::= NULL */ - { 254, -2 }, /* (140) tagitem ::= MINUS INTEGER */ - { 254, -2 }, /* (141) tagitem ::= MINUS FLOAT */ - { 254, -2 }, /* (142) tagitem ::= PLUS INTEGER */ - { 254, -2 }, /* (143) tagitem ::= PLUS FLOAT */ - { 252, -12 }, /* (144) select ::= SELECT selcollist from where_opt interval_opt fill_opt sliding_opt groupby_opt orderby_opt having_opt slimit_opt limit_opt */ - { 266, -1 }, /* (145) union ::= select */ - { 266, -3 }, /* (146) union ::= LP union RP */ - { 266, -4 }, /* (147) union ::= union UNION ALL select */ - { 266, -6 }, /* (148) union ::= union UNION ALL LP select RP */ - { 211, -1 }, /* (149) cmd ::= union */ - { 252, -2 }, /* (150) select ::= SELECT selcollist */ - { 267, -2 }, /* (151) sclp ::= selcollist COMMA */ - { 267, 0 }, /* (152) sclp ::= */ - { 255, -3 }, /* (153) selcollist ::= sclp expr as */ - { 255, -2 }, /* (154) selcollist ::= sclp STAR */ - { 269, -2 }, /* (155) as ::= AS ids */ - { 269, -1 }, /* (156) as ::= ids */ - { 269, 0 }, /* (157) as ::= */ - { 256, -2 }, /* (158) from ::= FROM tablelist */ - { 270, -2 }, /* (159) tablelist ::= ids cpxName */ - { 270, -3 }, /* (160) tablelist ::= ids cpxName ids */ - { 270, -4 }, /* (161) tablelist ::= tablelist COMMA ids cpxName */ - { 270, -5 }, /* (162) tablelist ::= tablelist COMMA ids cpxName ids */ - { 271, -1 }, /* (163) tmvar ::= VARIABLE */ - { 258, -4 }, /* (164) interval_opt ::= INTERVAL LP tmvar RP */ - { 258, -6 }, /* (165) interval_opt ::= INTERVAL LP tmvar COMMA tmvar RP */ - { 258, 0 }, /* (166) interval_opt ::= */ - { 259, 0 }, /* (167) fill_opt ::= */ - { 259, -6 }, /* (168) fill_opt ::= FILL LP ID COMMA tagitemlist RP */ - { 259, -4 }, /* (169) fill_opt ::= FILL LP ID RP */ - { 260, -4 }, /* (170) sliding_opt ::= SLIDING LP tmvar RP */ - { 260, 0 }, /* (171) sliding_opt ::= */ - { 262, 0 }, /* (172) orderby_opt ::= */ - { 262, -3 }, /* (173) orderby_opt ::= ORDER BY sortlist */ - { 272, -4 }, /* (174) sortlist ::= sortlist COMMA item sortorder */ - { 272, -2 }, /* (175) sortlist ::= item sortorder */ - { 274, -2 }, /* (176) item ::= ids cpxName */ - { 275, -1 }, /* (177) sortorder ::= ASC */ - { 275, -1 }, /* (178) sortorder ::= DESC */ - { 275, 0 }, /* (179) sortorder ::= */ - { 261, 0 }, /* (180) groupby_opt ::= */ - { 261, -3 }, /* (181) groupby_opt ::= GROUP BY grouplist */ - { 276, -3 }, /* (182) grouplist ::= grouplist COMMA item */ - { 276, -1 }, /* (183) grouplist ::= item */ - { 263, 0 }, /* (184) having_opt ::= */ - { 263, -2 }, /* (185) having_opt ::= HAVING expr */ - { 265, 0 }, /* (186) limit_opt ::= */ - { 265, -2 }, /* (187) limit_opt ::= LIMIT signed */ - { 265, -4 }, /* (188) limit_opt ::= LIMIT signed OFFSET signed */ - { 265, -4 }, /* (189) limit_opt ::= LIMIT signed COMMA signed */ - { 264, 0 }, /* (190) slimit_opt ::= */ - { 264, -2 }, /* (191) slimit_opt ::= SLIMIT signed */ - { 264, -4 }, /* (192) slimit_opt ::= SLIMIT signed SOFFSET signed */ - { 264, -4 }, /* (193) slimit_opt ::= SLIMIT signed COMMA signed */ - { 257, 0 }, /* (194) where_opt ::= */ - { 257, -2 }, /* (195) where_opt ::= WHERE expr */ - { 268, -3 }, /* (196) expr ::= LP expr RP */ - { 268, -1 }, /* (197) expr ::= ID */ - { 268, -3 }, /* (198) expr ::= ID DOT ID */ - { 268, -3 }, /* (199) expr ::= ID DOT STAR */ - { 268, -1 }, /* (200) expr ::= INTEGER */ - { 268, -2 }, /* (201) expr ::= MINUS INTEGER */ - { 268, -2 }, /* (202) expr ::= PLUS INTEGER */ - { 268, -1 }, /* (203) expr ::= FLOAT */ - { 268, -2 }, /* (204) expr ::= MINUS FLOAT */ - { 268, -2 }, /* (205) expr ::= PLUS FLOAT */ - { 268, -1 }, /* (206) expr ::= STRING */ - { 268, -1 }, /* (207) expr ::= NOW */ - { 268, -1 }, /* (208) expr ::= VARIABLE */ - { 268, -1 }, /* (209) expr ::= BOOL */ - { 268, -4 }, /* (210) expr ::= ID LP exprlist RP */ - { 268, -4 }, /* (211) expr ::= ID LP STAR RP */ - { 268, -3 }, /* (212) expr ::= expr IS NULL */ - { 268, -4 }, /* (213) expr ::= expr IS NOT NULL */ - { 268, -3 }, /* (214) expr ::= expr LT expr */ - { 268, -3 }, /* (215) expr ::= expr GT expr */ - { 268, -3 }, /* (216) expr ::= expr LE expr */ - { 268, -3 }, /* (217) expr ::= expr GE expr */ - { 268, -3 }, /* (218) expr ::= expr NE expr */ - { 268, -3 }, /* (219) expr ::= expr EQ expr */ - { 268, -3 }, /* (220) expr ::= expr AND expr */ - { 268, -3 }, /* (221) expr ::= expr OR expr */ - { 268, -3 }, /* (222) expr ::= expr PLUS expr */ - { 268, -3 }, /* (223) expr ::= expr MINUS expr */ - { 268, -3 }, /* (224) expr ::= expr STAR expr */ - { 268, -3 }, /* (225) expr ::= expr SLASH expr */ - { 268, -3 }, /* (226) expr ::= expr REM expr */ - { 268, -3 }, /* (227) expr ::= expr LIKE expr */ - { 268, -5 }, /* (228) expr ::= expr IN LP exprlist RP */ - { 277, -3 }, /* (229) exprlist ::= exprlist COMMA expritem */ - { 277, -1 }, /* (230) exprlist ::= expritem */ - { 278, -1 }, /* (231) expritem ::= expr */ - { 278, 0 }, /* (232) expritem ::= */ - { 211, -3 }, /* (233) cmd ::= RESET QUERY CACHE */ - { 211, -7 }, /* (234) cmd ::= ALTER TABLE ids cpxName ADD COLUMN columnlist */ - { 211, -7 }, /* (235) cmd ::= ALTER TABLE ids cpxName DROP COLUMN ids */ - { 211, -7 }, /* (236) cmd ::= ALTER TABLE ids cpxName ADD TAG columnlist */ - { 211, -7 }, /* (237) cmd ::= ALTER TABLE ids cpxName DROP TAG ids */ - { 211, -8 }, /* (238) cmd ::= ALTER TABLE ids cpxName CHANGE TAG ids ids */ - { 211, -9 }, /* (239) cmd ::= ALTER TABLE ids cpxName SET TAG ids EQ tagitem */ - { 211, -7 }, /* (240) cmd ::= ALTER STABLE ids cpxName ADD COLUMN columnlist */ - { 211, -7 }, /* (241) cmd ::= ALTER STABLE ids cpxName DROP COLUMN ids */ - { 211, -7 }, /* (242) cmd ::= ALTER STABLE ids cpxName ADD TAG columnlist */ - { 211, -7 }, /* (243) cmd ::= ALTER STABLE ids cpxName DROP TAG ids */ - { 211, -8 }, /* (244) cmd ::= ALTER STABLE ids cpxName CHANGE TAG ids ids */ - { 211, -3 }, /* (245) cmd ::= KILL CONNECTION INTEGER */ - { 211, -5 }, /* (246) cmd ::= KILL STREAM INTEGER COLON INTEGER */ - { 211, -5 }, /* (247) cmd ::= KILL QUERY INTEGER COLON INTEGER */ + { 211, -1 }, /* (0) program ::= cmd */ + { 212, -2 }, /* (1) cmd ::= SHOW DATABASES */ + { 212, -2 }, /* (2) cmd ::= SHOW MNODES */ + { 212, -2 }, /* (3) cmd ::= SHOW DNODES */ + { 212, -2 }, /* (4) cmd ::= SHOW ACCOUNTS */ + { 212, -2 }, /* (5) cmd ::= SHOW USERS */ + { 212, -2 }, /* (6) cmd ::= SHOW MODULES */ + { 212, -2 }, /* (7) cmd ::= SHOW QUERIES */ + { 212, -2 }, /* (8) cmd ::= SHOW CONNECTIONS */ + { 212, -2 }, /* (9) cmd ::= SHOW STREAMS */ + { 212, -2 }, /* (10) cmd ::= SHOW VARIABLES */ + { 212, -2 }, /* (11) cmd ::= SHOW SCORES */ + { 212, -2 }, /* (12) cmd ::= SHOW GRANTS */ + { 212, -2 }, /* (13) cmd ::= SHOW VNODES */ + { 212, -3 }, /* (14) cmd ::= SHOW VNODES IPTOKEN */ + { 213, 0 }, /* (15) dbPrefix ::= */ + { 213, -2 }, /* (16) dbPrefix ::= ids DOT */ + { 215, 0 }, /* (17) cpxName ::= */ + { 215, -2 }, /* (18) cpxName ::= DOT ids */ + { 212, -5 }, /* (19) cmd ::= SHOW CREATE TABLE ids cpxName */ + { 212, -4 }, /* (20) cmd ::= SHOW CREATE DATABASE ids */ + { 212, -3 }, /* (21) cmd ::= SHOW dbPrefix TABLES */ + { 212, -5 }, /* (22) cmd ::= SHOW dbPrefix TABLES LIKE ids */ + { 212, -3 }, /* (23) cmd ::= SHOW dbPrefix STABLES */ + { 212, -5 }, /* (24) cmd ::= SHOW dbPrefix STABLES LIKE ids */ + { 212, -3 }, /* (25) cmd ::= SHOW dbPrefix VGROUPS */ + { 212, -4 }, /* (26) cmd ::= SHOW dbPrefix VGROUPS ids */ + { 212, -5 }, /* (27) cmd ::= DROP TABLE ifexists ids cpxName */ + { 212, -5 }, /* (28) cmd ::= DROP STABLE ifexists ids cpxName */ + { 212, -4 }, /* (29) cmd ::= DROP DATABASE ifexists ids */ + { 212, -3 }, /* (30) cmd ::= DROP DNODE ids */ + { 212, -3 }, /* (31) cmd ::= DROP USER ids */ + { 212, -3 }, /* (32) cmd ::= DROP ACCOUNT ids */ + { 212, -2 }, /* (33) cmd ::= USE ids */ + { 212, -3 }, /* (34) cmd ::= DESCRIBE ids cpxName */ + { 212, -5 }, /* (35) cmd ::= ALTER USER ids PASS ids */ + { 212, -5 }, /* (36) cmd ::= ALTER USER ids PRIVILEGE ids */ + { 212, -4 }, /* (37) cmd ::= ALTER DNODE ids ids */ + { 212, -5 }, /* (38) cmd ::= ALTER DNODE ids ids ids */ + { 212, -3 }, /* (39) cmd ::= ALTER LOCAL ids */ + { 212, -4 }, /* (40) cmd ::= ALTER LOCAL ids ids */ + { 212, -4 }, /* (41) cmd ::= ALTER DATABASE ids alter_db_optr */ + { 212, -4 }, /* (42) cmd ::= ALTER ACCOUNT ids acct_optr */ + { 212, -6 }, /* (43) cmd ::= ALTER ACCOUNT ids PASS ids acct_optr */ + { 214, -1 }, /* (44) ids ::= ID */ + { 214, -1 }, /* (45) ids ::= STRING */ + { 216, -2 }, /* (46) ifexists ::= IF EXISTS */ + { 216, 0 }, /* (47) ifexists ::= */ + { 219, -3 }, /* (48) ifnotexists ::= IF NOT EXISTS */ + { 219, 0 }, /* (49) ifnotexists ::= */ + { 212, -3 }, /* (50) cmd ::= CREATE DNODE ids */ + { 212, -6 }, /* (51) cmd ::= CREATE ACCOUNT ids PASS ids acct_optr */ + { 212, -5 }, /* (52) cmd ::= CREATE DATABASE ifnotexists ids db_optr */ + { 212, -5 }, /* (53) cmd ::= CREATE USER ids PASS ids */ + { 221, 0 }, /* (54) pps ::= */ + { 221, -2 }, /* (55) pps ::= PPS INTEGER */ + { 222, 0 }, /* (56) tseries ::= */ + { 222, -2 }, /* (57) tseries ::= TSERIES INTEGER */ + { 223, 0 }, /* (58) dbs ::= */ + { 223, -2 }, /* (59) dbs ::= DBS INTEGER */ + { 224, 0 }, /* (60) streams ::= */ + { 224, -2 }, /* (61) streams ::= STREAMS INTEGER */ + { 225, 0 }, /* (62) storage ::= */ + { 225, -2 }, /* (63) storage ::= STORAGE INTEGER */ + { 226, 0 }, /* (64) qtime ::= */ + { 226, -2 }, /* (65) qtime ::= QTIME INTEGER */ + { 227, 0 }, /* (66) users ::= */ + { 227, -2 }, /* (67) users ::= USERS INTEGER */ + { 228, 0 }, /* (68) conns ::= */ + { 228, -2 }, /* (69) conns ::= CONNS INTEGER */ + { 229, 0 }, /* (70) state ::= */ + { 229, -2 }, /* (71) state ::= STATE ids */ + { 218, -9 }, /* (72) acct_optr ::= pps tseries storage streams qtime dbs users conns state */ + { 230, -2 }, /* (73) keep ::= KEEP tagitemlist */ + { 232, -2 }, /* (74) cache ::= CACHE INTEGER */ + { 233, -2 }, /* (75) replica ::= REPLICA INTEGER */ + { 234, -2 }, /* (76) quorum ::= QUORUM INTEGER */ + { 235, -2 }, /* (77) days ::= DAYS INTEGER */ + { 236, -2 }, /* (78) minrows ::= MINROWS INTEGER */ + { 237, -2 }, /* (79) maxrows ::= MAXROWS INTEGER */ + { 238, -2 }, /* (80) blocks ::= BLOCKS INTEGER */ + { 239, -2 }, /* (81) ctime ::= CTIME INTEGER */ + { 240, -2 }, /* (82) wal ::= WAL INTEGER */ + { 241, -2 }, /* (83) fsync ::= FSYNC INTEGER */ + { 242, -2 }, /* (84) comp ::= COMP INTEGER */ + { 243, -2 }, /* (85) prec ::= PRECISION STRING */ + { 244, -2 }, /* (86) update ::= UPDATE INTEGER */ + { 245, -2 }, /* (87) cachelast ::= CACHELAST INTEGER */ + { 220, 0 }, /* (88) db_optr ::= */ + { 220, -2 }, /* (89) db_optr ::= db_optr cache */ + { 220, -2 }, /* (90) db_optr ::= db_optr replica */ + { 220, -2 }, /* (91) db_optr ::= db_optr quorum */ + { 220, -2 }, /* (92) db_optr ::= db_optr days */ + { 220, -2 }, /* (93) db_optr ::= db_optr minrows */ + { 220, -2 }, /* (94) db_optr ::= db_optr maxrows */ + { 220, -2 }, /* (95) db_optr ::= db_optr blocks */ + { 220, -2 }, /* (96) db_optr ::= db_optr ctime */ + { 220, -2 }, /* (97) db_optr ::= db_optr wal */ + { 220, -2 }, /* (98) db_optr ::= db_optr fsync */ + { 220, -2 }, /* (99) db_optr ::= db_optr comp */ + { 220, -2 }, /* (100) db_optr ::= db_optr prec */ + { 220, -2 }, /* (101) db_optr ::= db_optr keep */ + { 220, -2 }, /* (102) db_optr ::= db_optr update */ + { 220, -2 }, /* (103) db_optr ::= db_optr cachelast */ + { 217, 0 }, /* (104) alter_db_optr ::= */ + { 217, -2 }, /* (105) alter_db_optr ::= alter_db_optr replica */ + { 217, -2 }, /* (106) alter_db_optr ::= alter_db_optr quorum */ + { 217, -2 }, /* (107) alter_db_optr ::= alter_db_optr keep */ + { 217, -2 }, /* (108) alter_db_optr ::= alter_db_optr blocks */ + { 217, -2 }, /* (109) alter_db_optr ::= alter_db_optr comp */ + { 217, -2 }, /* (110) alter_db_optr ::= alter_db_optr wal */ + { 217, -2 }, /* (111) alter_db_optr ::= alter_db_optr fsync */ + { 217, -2 }, /* (112) alter_db_optr ::= alter_db_optr update */ + { 217, -2 }, /* (113) alter_db_optr ::= alter_db_optr cachelast */ + { 246, -1 }, /* (114) typename ::= ids */ + { 246, -4 }, /* (115) typename ::= ids LP signed RP */ + { 246, -2 }, /* (116) typename ::= ids UNSIGNED */ + { 247, -1 }, /* (117) signed ::= INTEGER */ + { 247, -2 }, /* (118) signed ::= PLUS INTEGER */ + { 247, -2 }, /* (119) signed ::= MINUS INTEGER */ + { 212, -3 }, /* (120) cmd ::= CREATE TABLE create_table_args */ + { 212, -3 }, /* (121) cmd ::= CREATE TABLE create_stable_args */ + { 212, -3 }, /* (122) cmd ::= CREATE STABLE create_stable_args */ + { 212, -3 }, /* (123) cmd ::= CREATE TABLE create_table_list */ + { 250, -1 }, /* (124) create_table_list ::= create_from_stable */ + { 250, -2 }, /* (125) create_table_list ::= create_table_list create_from_stable */ + { 248, -6 }, /* (126) create_table_args ::= ifnotexists ids cpxName LP columnlist RP */ + { 249, -10 }, /* (127) create_stable_args ::= ifnotexists ids cpxName LP columnlist RP TAGS LP columnlist RP */ + { 251, -10 }, /* (128) create_from_stable ::= ifnotexists ids cpxName USING ids cpxName TAGS LP tagitemlist RP */ + { 248, -5 }, /* (129) create_table_args ::= ifnotexists ids cpxName AS select */ + { 252, -3 }, /* (130) columnlist ::= columnlist COMMA column */ + { 252, -1 }, /* (131) columnlist ::= column */ + { 254, -2 }, /* (132) column ::= ids typename */ + { 231, -3 }, /* (133) tagitemlist ::= tagitemlist COMMA tagitem */ + { 231, -1 }, /* (134) tagitemlist ::= tagitem */ + { 255, -1 }, /* (135) tagitem ::= INTEGER */ + { 255, -1 }, /* (136) tagitem ::= FLOAT */ + { 255, -1 }, /* (137) tagitem ::= STRING */ + { 255, -1 }, /* (138) tagitem ::= BOOL */ + { 255, -1 }, /* (139) tagitem ::= NULL */ + { 255, -2 }, /* (140) tagitem ::= MINUS INTEGER */ + { 255, -2 }, /* (141) tagitem ::= MINUS FLOAT */ + { 255, -2 }, /* (142) tagitem ::= PLUS INTEGER */ + { 255, -2 }, /* (143) tagitem ::= PLUS FLOAT */ + { 253, -12 }, /* (144) select ::= SELECT selcollist from where_opt interval_opt fill_opt sliding_opt groupby_opt orderby_opt having_opt slimit_opt limit_opt */ + { 267, -1 }, /* (145) union ::= select */ + { 267, -3 }, /* (146) union ::= LP union RP */ + { 267, -4 }, /* (147) union ::= union UNION ALL select */ + { 267, -6 }, /* (148) union ::= union UNION ALL LP select RP */ + { 212, -1 }, /* (149) cmd ::= union */ + { 253, -2 }, /* (150) select ::= SELECT selcollist */ + { 268, -2 }, /* (151) sclp ::= selcollist COMMA */ + { 268, 0 }, /* (152) sclp ::= */ + { 256, -4 }, /* (153) selcollist ::= sclp distinct expr as */ + { 256, -2 }, /* (154) selcollist ::= sclp STAR */ + { 271, -2 }, /* (155) as ::= AS ids */ + { 271, -1 }, /* (156) as ::= ids */ + { 271, 0 }, /* (157) as ::= */ + { 269, -1 }, /* (158) distinct ::= DISTINCT */ + { 269, 0 }, /* (159) distinct ::= */ + { 257, -2 }, /* (160) from ::= FROM tablelist */ + { 272, -2 }, /* (161) tablelist ::= ids cpxName */ + { 272, -3 }, /* (162) tablelist ::= ids cpxName ids */ + { 272, -4 }, /* (163) tablelist ::= tablelist COMMA ids cpxName */ + { 272, -5 }, /* (164) tablelist ::= tablelist COMMA ids cpxName ids */ + { 273, -1 }, /* (165) tmvar ::= VARIABLE */ + { 259, -4 }, /* (166) interval_opt ::= INTERVAL LP tmvar RP */ + { 259, -6 }, /* (167) interval_opt ::= INTERVAL LP tmvar COMMA tmvar RP */ + { 259, 0 }, /* (168) interval_opt ::= */ + { 260, 0 }, /* (169) fill_opt ::= */ + { 260, -6 }, /* (170) fill_opt ::= FILL LP ID COMMA tagitemlist RP */ + { 260, -4 }, /* (171) fill_opt ::= FILL LP ID RP */ + { 261, -4 }, /* (172) sliding_opt ::= SLIDING LP tmvar RP */ + { 261, 0 }, /* (173) sliding_opt ::= */ + { 263, 0 }, /* (174) orderby_opt ::= */ + { 263, -3 }, /* (175) orderby_opt ::= ORDER BY sortlist */ + { 274, -4 }, /* (176) sortlist ::= sortlist COMMA item sortorder */ + { 274, -2 }, /* (177) sortlist ::= item sortorder */ + { 276, -2 }, /* (178) item ::= ids cpxName */ + { 277, -1 }, /* (179) sortorder ::= ASC */ + { 277, -1 }, /* (180) sortorder ::= DESC */ + { 277, 0 }, /* (181) sortorder ::= */ + { 262, 0 }, /* (182) groupby_opt ::= */ + { 262, -3 }, /* (183) groupby_opt ::= GROUP BY grouplist */ + { 278, -3 }, /* (184) grouplist ::= grouplist COMMA item */ + { 278, -1 }, /* (185) grouplist ::= item */ + { 264, 0 }, /* (186) having_opt ::= */ + { 264, -2 }, /* (187) having_opt ::= HAVING expr */ + { 266, 0 }, /* (188) limit_opt ::= */ + { 266, -2 }, /* (189) limit_opt ::= LIMIT signed */ + { 266, -4 }, /* (190) limit_opt ::= LIMIT signed OFFSET signed */ + { 266, -4 }, /* (191) limit_opt ::= LIMIT signed COMMA signed */ + { 265, 0 }, /* (192) slimit_opt ::= */ + { 265, -2 }, /* (193) slimit_opt ::= SLIMIT signed */ + { 265, -4 }, /* (194) slimit_opt ::= SLIMIT signed SOFFSET signed */ + { 265, -4 }, /* (195) slimit_opt ::= SLIMIT signed COMMA signed */ + { 258, 0 }, /* (196) where_opt ::= */ + { 258, -2 }, /* (197) where_opt ::= WHERE expr */ + { 270, -3 }, /* (198) expr ::= LP expr RP */ + { 270, -1 }, /* (199) expr ::= ID */ + { 270, -3 }, /* (200) expr ::= ID DOT ID */ + { 270, -3 }, /* (201) expr ::= ID DOT STAR */ + { 270, -1 }, /* (202) expr ::= INTEGER */ + { 270, -2 }, /* (203) expr ::= MINUS INTEGER */ + { 270, -2 }, /* (204) expr ::= PLUS INTEGER */ + { 270, -1 }, /* (205) expr ::= FLOAT */ + { 270, -2 }, /* (206) expr ::= MINUS FLOAT */ + { 270, -2 }, /* (207) expr ::= PLUS FLOAT */ + { 270, -1 }, /* (208) expr ::= STRING */ + { 270, -1 }, /* (209) expr ::= NOW */ + { 270, -1 }, /* (210) expr ::= VARIABLE */ + { 270, -1 }, /* (211) expr ::= BOOL */ + { 270, -4 }, /* (212) expr ::= ID LP exprlist RP */ + { 270, -4 }, /* (213) expr ::= ID LP STAR RP */ + { 270, -3 }, /* (214) expr ::= expr IS NULL */ + { 270, -4 }, /* (215) expr ::= expr IS NOT NULL */ + { 270, -3 }, /* (216) expr ::= expr LT expr */ + { 270, -3 }, /* (217) expr ::= expr GT expr */ + { 270, -3 }, /* (218) expr ::= expr LE expr */ + { 270, -3 }, /* (219) expr ::= expr GE expr */ + { 270, -3 }, /* (220) expr ::= expr NE expr */ + { 270, -3 }, /* (221) expr ::= expr EQ expr */ + { 270, -3 }, /* (222) expr ::= expr AND expr */ + { 270, -3 }, /* (223) expr ::= expr OR expr */ + { 270, -3 }, /* (224) expr ::= expr PLUS expr */ + { 270, -3 }, /* (225) expr ::= expr MINUS expr */ + { 270, -3 }, /* (226) expr ::= expr STAR expr */ + { 270, -3 }, /* (227) expr ::= expr SLASH expr */ + { 270, -3 }, /* (228) expr ::= expr REM expr */ + { 270, -3 }, /* (229) expr ::= expr LIKE expr */ + { 270, -5 }, /* (230) expr ::= expr IN LP exprlist RP */ + { 279, -3 }, /* (231) exprlist ::= exprlist COMMA expritem */ + { 279, -1 }, /* (232) exprlist ::= expritem */ + { 280, -1 }, /* (233) expritem ::= expr */ + { 280, 0 }, /* (234) expritem ::= */ + { 212, -3 }, /* (235) cmd ::= RESET QUERY CACHE */ + { 212, -7 }, /* (236) cmd ::= ALTER TABLE ids cpxName ADD COLUMN columnlist */ + { 212, -7 }, /* (237) cmd ::= ALTER TABLE ids cpxName DROP COLUMN ids */ + { 212, -7 }, /* (238) cmd ::= ALTER TABLE ids cpxName ADD TAG columnlist */ + { 212, -7 }, /* (239) cmd ::= ALTER TABLE ids cpxName DROP TAG ids */ + { 212, -8 }, /* (240) cmd ::= ALTER TABLE ids cpxName CHANGE TAG ids ids */ + { 212, -9 }, /* (241) cmd ::= ALTER TABLE ids cpxName SET TAG ids EQ tagitem */ + { 212, -7 }, /* (242) cmd ::= ALTER STABLE ids cpxName ADD COLUMN columnlist */ + { 212, -7 }, /* (243) cmd ::= ALTER STABLE ids cpxName DROP COLUMN ids */ + { 212, -7 }, /* (244) cmd ::= ALTER STABLE ids cpxName ADD TAG columnlist */ + { 212, -7 }, /* (245) cmd ::= ALTER STABLE ids cpxName DROP TAG ids */ + { 212, -8 }, /* (246) cmd ::= ALTER STABLE ids cpxName CHANGE TAG ids ids */ + { 212, -3 }, /* (247) cmd ::= KILL CONNECTION INTEGER */ + { 212, -5 }, /* (248) cmd ::= KILL STREAM INTEGER COLON INTEGER */ + { 212, -5 }, /* (249) cmd ::= KILL QUERY INTEGER COLON INTEGER */ }; static void yy_accept(yyParser*); /* Forward Declaration */ @@ -2233,14 +2238,13 @@ static void yy_reduce( { setDCLSQLElems(pInfo, TSDB_SQL_CFG_LOCAL, 2, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy0); } break; case 41: /* cmd ::= ALTER DATABASE ids alter_db_optr */ -{ SStrToken t = {0}; - setCreateDbInfo(pInfo, TSDB_SQL_ALTER_DB, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy256, &t);} +{ SStrToken t = {0}; setCreateDbInfo(pInfo, TSDB_SQL_ALTER_DB, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy262, &t);} break; case 42: /* cmd ::= ALTER ACCOUNT ids acct_optr */ -{ setCreateAcctSql(pInfo, TSDB_SQL_ALTER_ACCT, &yymsp[-1].minor.yy0, NULL, &yymsp[0].minor.yy277);} +{ setCreateAcctSql(pInfo, TSDB_SQL_ALTER_ACCT, &yymsp[-1].minor.yy0, NULL, &yymsp[0].minor.yy47);} break; case 43: /* cmd ::= ALTER ACCOUNT ids PASS ids acct_optr */ -{ setCreateAcctSql(pInfo, TSDB_SQL_ALTER_ACCT, &yymsp[-3].minor.yy0, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy277);} +{ setCreateAcctSql(pInfo, TSDB_SQL_ALTER_ACCT, &yymsp[-3].minor.yy0, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy47);} break; case 44: /* ids ::= ID */ case 45: /* ids ::= STRING */ yytestcase(yyruleno==45); @@ -2252,6 +2256,7 @@ static void yy_reduce( break; case 47: /* ifexists ::= */ case 49: /* ifnotexists ::= */ yytestcase(yyruleno==49); + case 159: /* distinct ::= */ yytestcase(yyruleno==159); { yymsp[1].minor.yy0.n = 0;} break; case 48: /* ifnotexists ::= IF NOT EXISTS */ @@ -2261,11 +2266,10 @@ static void yy_reduce( { setDCLSQLElems(pInfo, TSDB_SQL_CREATE_DNODE, 1, &yymsp[0].minor.yy0);} break; case 51: /* cmd ::= CREATE ACCOUNT ids PASS ids acct_optr */ -{ setCreateAcctSql(pInfo, TSDB_SQL_CREATE_ACCT, &yymsp[-3].minor.yy0, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy277);} +{ setCreateAcctSql(pInfo, TSDB_SQL_CREATE_ACCT, &yymsp[-3].minor.yy0, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy47);} break; case 52: /* cmd ::= CREATE DATABASE ifnotexists ids db_optr */ -{ - setCreateDbInfo(pInfo, TSDB_SQL_CREATE_DB, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy256, &yymsp[-2].minor.yy0);} +{ setCreateDbInfo(pInfo, TSDB_SQL_CREATE_DB, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy262, &yymsp[-2].minor.yy0);} break; case 53: /* cmd ::= CREATE USER ids PASS ids */ { setCreateUserSql(pInfo, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0);} @@ -2294,20 +2298,20 @@ static void yy_reduce( break; case 72: /* acct_optr ::= pps tseries storage streams qtime dbs users conns state */ { - yylhsminor.yy277.maxUsers = (yymsp[-2].minor.yy0.n>0)?atoi(yymsp[-2].minor.yy0.z):-1; - yylhsminor.yy277.maxDbs = (yymsp[-3].minor.yy0.n>0)?atoi(yymsp[-3].minor.yy0.z):-1; - yylhsminor.yy277.maxTimeSeries = (yymsp[-7].minor.yy0.n>0)?atoi(yymsp[-7].minor.yy0.z):-1; - yylhsminor.yy277.maxStreams = (yymsp[-5].minor.yy0.n>0)?atoi(yymsp[-5].minor.yy0.z):-1; - yylhsminor.yy277.maxPointsPerSecond = (yymsp[-8].minor.yy0.n>0)?atoi(yymsp[-8].minor.yy0.z):-1; - yylhsminor.yy277.maxStorage = (yymsp[-6].minor.yy0.n>0)?strtoll(yymsp[-6].minor.yy0.z, NULL, 10):-1; - yylhsminor.yy277.maxQueryTime = (yymsp[-4].minor.yy0.n>0)?strtoll(yymsp[-4].minor.yy0.z, NULL, 10):-1; - yylhsminor.yy277.maxConnections = (yymsp[-1].minor.yy0.n>0)?atoi(yymsp[-1].minor.yy0.z):-1; - yylhsminor.yy277.stat = yymsp[0].minor.yy0; -} - yymsp[-8].minor.yy277 = yylhsminor.yy277; + yylhsminor.yy47.maxUsers = (yymsp[-2].minor.yy0.n>0)?atoi(yymsp[-2].minor.yy0.z):-1; + yylhsminor.yy47.maxDbs = (yymsp[-3].minor.yy0.n>0)?atoi(yymsp[-3].minor.yy0.z):-1; + yylhsminor.yy47.maxTimeSeries = (yymsp[-7].minor.yy0.n>0)?atoi(yymsp[-7].minor.yy0.z):-1; + yylhsminor.yy47.maxStreams = (yymsp[-5].minor.yy0.n>0)?atoi(yymsp[-5].minor.yy0.z):-1; + yylhsminor.yy47.maxPointsPerSecond = (yymsp[-8].minor.yy0.n>0)?atoi(yymsp[-8].minor.yy0.z):-1; + yylhsminor.yy47.maxStorage = (yymsp[-6].minor.yy0.n>0)?strtoll(yymsp[-6].minor.yy0.z, NULL, 10):-1; + yylhsminor.yy47.maxQueryTime = (yymsp[-4].minor.yy0.n>0)?strtoll(yymsp[-4].minor.yy0.z, NULL, 10):-1; + yylhsminor.yy47.maxConnections = (yymsp[-1].minor.yy0.n>0)?atoi(yymsp[-1].minor.yy0.z):-1; + yylhsminor.yy47.stat = yymsp[0].minor.yy0; +} + yymsp[-8].minor.yy47 = yylhsminor.yy47; break; case 73: /* keep ::= KEEP tagitemlist */ -{ yymsp[-1].minor.yy135 = yymsp[0].minor.yy135; } +{ yymsp[-1].minor.yy247 = yymsp[0].minor.yy247; } break; case 74: /* cache ::= CACHE INTEGER */ case 75: /* replica ::= REPLICA INTEGER */ yytestcase(yyruleno==75); @@ -2326,208 +2330,208 @@ static void yy_reduce( { yymsp[-1].minor.yy0 = yymsp[0].minor.yy0; } break; case 88: /* db_optr ::= */ -{setDefaultCreateDbOption(&yymsp[1].minor.yy256);} +{setDefaultCreateDbOption(&yymsp[1].minor.yy262);} break; case 89: /* db_optr ::= db_optr cache */ -{ yylhsminor.yy256 = yymsp[-1].minor.yy256; yylhsminor.yy256.cacheBlockSize = strtol(yymsp[0].minor.yy0.z, NULL, 10); } - yymsp[-1].minor.yy256 = yylhsminor.yy256; +{ yylhsminor.yy262 = yymsp[-1].minor.yy262; yylhsminor.yy262.cacheBlockSize = strtol(yymsp[0].minor.yy0.z, NULL, 10); } + yymsp[-1].minor.yy262 = yylhsminor.yy262; break; case 90: /* db_optr ::= db_optr replica */ case 105: /* alter_db_optr ::= alter_db_optr replica */ yytestcase(yyruleno==105); -{ yylhsminor.yy256 = yymsp[-1].minor.yy256; yylhsminor.yy256.replica = strtol(yymsp[0].minor.yy0.z, NULL, 10); } - yymsp[-1].minor.yy256 = yylhsminor.yy256; +{ yylhsminor.yy262 = yymsp[-1].minor.yy262; yylhsminor.yy262.replica = strtol(yymsp[0].minor.yy0.z, NULL, 10); } + yymsp[-1].minor.yy262 = yylhsminor.yy262; break; case 91: /* db_optr ::= db_optr quorum */ case 106: /* alter_db_optr ::= alter_db_optr quorum */ yytestcase(yyruleno==106); -{ yylhsminor.yy256 = yymsp[-1].minor.yy256; yylhsminor.yy256.quorum = strtol(yymsp[0].minor.yy0.z, NULL, 10); } - yymsp[-1].minor.yy256 = yylhsminor.yy256; +{ yylhsminor.yy262 = yymsp[-1].minor.yy262; yylhsminor.yy262.quorum = strtol(yymsp[0].minor.yy0.z, NULL, 10); } + yymsp[-1].minor.yy262 = yylhsminor.yy262; break; case 92: /* db_optr ::= db_optr days */ -{ yylhsminor.yy256 = yymsp[-1].minor.yy256; yylhsminor.yy256.daysPerFile = strtol(yymsp[0].minor.yy0.z, NULL, 10); } - yymsp[-1].minor.yy256 = yylhsminor.yy256; +{ yylhsminor.yy262 = yymsp[-1].minor.yy262; yylhsminor.yy262.daysPerFile = strtol(yymsp[0].minor.yy0.z, NULL, 10); } + yymsp[-1].minor.yy262 = yylhsminor.yy262; break; case 93: /* db_optr ::= db_optr minrows */ -{ yylhsminor.yy256 = yymsp[-1].minor.yy256; yylhsminor.yy256.minRowsPerBlock = strtod(yymsp[0].minor.yy0.z, NULL); } - yymsp[-1].minor.yy256 = yylhsminor.yy256; +{ yylhsminor.yy262 = yymsp[-1].minor.yy262; yylhsminor.yy262.minRowsPerBlock = strtod(yymsp[0].minor.yy0.z, NULL); } + yymsp[-1].minor.yy262 = yylhsminor.yy262; break; case 94: /* db_optr ::= db_optr maxrows */ -{ yylhsminor.yy256 = yymsp[-1].minor.yy256; yylhsminor.yy256.maxRowsPerBlock = strtod(yymsp[0].minor.yy0.z, NULL); } - yymsp[-1].minor.yy256 = yylhsminor.yy256; +{ yylhsminor.yy262 = yymsp[-1].minor.yy262; yylhsminor.yy262.maxRowsPerBlock = strtod(yymsp[0].minor.yy0.z, NULL); } + yymsp[-1].minor.yy262 = yylhsminor.yy262; break; case 95: /* db_optr ::= db_optr blocks */ case 108: /* alter_db_optr ::= alter_db_optr blocks */ yytestcase(yyruleno==108); -{ yylhsminor.yy256 = yymsp[-1].minor.yy256; yylhsminor.yy256.numOfBlocks = strtol(yymsp[0].minor.yy0.z, NULL, 10); } - yymsp[-1].minor.yy256 = yylhsminor.yy256; +{ yylhsminor.yy262 = yymsp[-1].minor.yy262; yylhsminor.yy262.numOfBlocks = strtol(yymsp[0].minor.yy0.z, NULL, 10); } + yymsp[-1].minor.yy262 = yylhsminor.yy262; break; case 96: /* db_optr ::= db_optr ctime */ -{ yylhsminor.yy256 = yymsp[-1].minor.yy256; yylhsminor.yy256.commitTime = strtol(yymsp[0].minor.yy0.z, NULL, 10); } - yymsp[-1].minor.yy256 = yylhsminor.yy256; +{ yylhsminor.yy262 = yymsp[-1].minor.yy262; yylhsminor.yy262.commitTime = strtol(yymsp[0].minor.yy0.z, NULL, 10); } + yymsp[-1].minor.yy262 = yylhsminor.yy262; break; case 97: /* db_optr ::= db_optr wal */ case 110: /* alter_db_optr ::= alter_db_optr wal */ yytestcase(yyruleno==110); -{ yylhsminor.yy256 = yymsp[-1].minor.yy256; yylhsminor.yy256.walLevel = strtol(yymsp[0].minor.yy0.z, NULL, 10); } - yymsp[-1].minor.yy256 = yylhsminor.yy256; +{ yylhsminor.yy262 = yymsp[-1].minor.yy262; yylhsminor.yy262.walLevel = strtol(yymsp[0].minor.yy0.z, NULL, 10); } + yymsp[-1].minor.yy262 = yylhsminor.yy262; break; case 98: /* db_optr ::= db_optr fsync */ case 111: /* alter_db_optr ::= alter_db_optr fsync */ yytestcase(yyruleno==111); -{ yylhsminor.yy256 = yymsp[-1].minor.yy256; yylhsminor.yy256.fsyncPeriod = strtol(yymsp[0].minor.yy0.z, NULL, 10); } - yymsp[-1].minor.yy256 = yylhsminor.yy256; +{ yylhsminor.yy262 = yymsp[-1].minor.yy262; yylhsminor.yy262.fsyncPeriod = strtol(yymsp[0].minor.yy0.z, NULL, 10); } + yymsp[-1].minor.yy262 = yylhsminor.yy262; break; case 99: /* db_optr ::= db_optr comp */ case 109: /* alter_db_optr ::= alter_db_optr comp */ yytestcase(yyruleno==109); -{ yylhsminor.yy256 = yymsp[-1].minor.yy256; yylhsminor.yy256.compressionLevel = strtol(yymsp[0].minor.yy0.z, NULL, 10); } - yymsp[-1].minor.yy256 = yylhsminor.yy256; +{ yylhsminor.yy262 = yymsp[-1].minor.yy262; yylhsminor.yy262.compressionLevel = strtol(yymsp[0].minor.yy0.z, NULL, 10); } + yymsp[-1].minor.yy262 = yylhsminor.yy262; break; case 100: /* db_optr ::= db_optr prec */ -{ yylhsminor.yy256 = yymsp[-1].minor.yy256; yylhsminor.yy256.precision = yymsp[0].minor.yy0; } - yymsp[-1].minor.yy256 = yylhsminor.yy256; +{ yylhsminor.yy262 = yymsp[-1].minor.yy262; yylhsminor.yy262.precision = yymsp[0].minor.yy0; } + yymsp[-1].minor.yy262 = yylhsminor.yy262; break; case 101: /* db_optr ::= db_optr keep */ case 107: /* alter_db_optr ::= alter_db_optr keep */ yytestcase(yyruleno==107); -{ yylhsminor.yy256 = yymsp[-1].minor.yy256; yylhsminor.yy256.keep = yymsp[0].minor.yy135; } - yymsp[-1].minor.yy256 = yylhsminor.yy256; +{ yylhsminor.yy262 = yymsp[-1].minor.yy262; yylhsminor.yy262.keep = yymsp[0].minor.yy247; } + yymsp[-1].minor.yy262 = yylhsminor.yy262; break; case 102: /* db_optr ::= db_optr update */ case 112: /* alter_db_optr ::= alter_db_optr update */ yytestcase(yyruleno==112); -{ yylhsminor.yy256 = yymsp[-1].minor.yy256; yylhsminor.yy256.update = strtol(yymsp[0].minor.yy0.z, NULL, 10); } - yymsp[-1].minor.yy256 = yylhsminor.yy256; +{ yylhsminor.yy262 = yymsp[-1].minor.yy262; yylhsminor.yy262.update = strtol(yymsp[0].minor.yy0.z, NULL, 10); } + yymsp[-1].minor.yy262 = yylhsminor.yy262; break; case 103: /* db_optr ::= db_optr cachelast */ case 113: /* alter_db_optr ::= alter_db_optr cachelast */ yytestcase(yyruleno==113); -{ yylhsminor.yy256 = yymsp[-1].minor.yy256; yylhsminor.yy256.cachelast = strtol(yymsp[0].minor.yy0.z, NULL, 10); } - yymsp[-1].minor.yy256 = yylhsminor.yy256; +{ yylhsminor.yy262 = yymsp[-1].minor.yy262; yylhsminor.yy262.cachelast = strtol(yymsp[0].minor.yy0.z, NULL, 10); } + yymsp[-1].minor.yy262 = yylhsminor.yy262; break; case 104: /* alter_db_optr ::= */ -{ setDefaultCreateDbOption(&yymsp[1].minor.yy256);} +{ setDefaultCreateDbOption(&yymsp[1].minor.yy262);} break; case 114: /* typename ::= ids */ { yymsp[0].minor.yy0.type = 0; - tSqlSetColumnType (&yylhsminor.yy181, &yymsp[0].minor.yy0); + tSqlSetColumnType (&yylhsminor.yy179, &yymsp[0].minor.yy0); } - yymsp[0].minor.yy181 = yylhsminor.yy181; + yymsp[0].minor.yy179 = yylhsminor.yy179; break; case 115: /* typename ::= ids LP signed RP */ { - if (yymsp[-1].minor.yy531 <= 0) { + if (yymsp[-1].minor.yy403 <= 0) { yymsp[-3].minor.yy0.type = 0; - tSqlSetColumnType(&yylhsminor.yy181, &yymsp[-3].minor.yy0); + tSqlSetColumnType(&yylhsminor.yy179, &yymsp[-3].minor.yy0); } else { - yymsp[-3].minor.yy0.type = -yymsp[-1].minor.yy531; // negative value of name length - tSqlSetColumnType(&yylhsminor.yy181, &yymsp[-3].minor.yy0); + yymsp[-3].minor.yy0.type = -yymsp[-1].minor.yy403; // negative value of name length + tSqlSetColumnType(&yylhsminor.yy179, &yymsp[-3].minor.yy0); } } - yymsp[-3].minor.yy181 = yylhsminor.yy181; + yymsp[-3].minor.yy179 = yylhsminor.yy179; break; case 116: /* typename ::= ids UNSIGNED */ { yymsp[-1].minor.yy0.type = 0; yymsp[-1].minor.yy0.n = ((yymsp[0].minor.yy0.z + yymsp[0].minor.yy0.n) - yymsp[-1].minor.yy0.z); - tSqlSetColumnType (&yylhsminor.yy181, &yymsp[-1].minor.yy0); + tSqlSetColumnType (&yylhsminor.yy179, &yymsp[-1].minor.yy0); } - yymsp[-1].minor.yy181 = yylhsminor.yy181; + yymsp[-1].minor.yy179 = yylhsminor.yy179; break; case 117: /* signed ::= INTEGER */ -{ yylhsminor.yy531 = strtol(yymsp[0].minor.yy0.z, NULL, 10); } - yymsp[0].minor.yy531 = yylhsminor.yy531; +{ yylhsminor.yy403 = strtol(yymsp[0].minor.yy0.z, NULL, 10); } + yymsp[0].minor.yy403 = yylhsminor.yy403; break; case 118: /* signed ::= PLUS INTEGER */ -{ yymsp[-1].minor.yy531 = strtol(yymsp[0].minor.yy0.z, NULL, 10); } +{ yymsp[-1].minor.yy403 = strtol(yymsp[0].minor.yy0.z, NULL, 10); } break; case 119: /* signed ::= MINUS INTEGER */ -{ yymsp[-1].minor.yy531 = -strtol(yymsp[0].minor.yy0.z, NULL, 10);} +{ yymsp[-1].minor.yy403 = -strtol(yymsp[0].minor.yy0.z, NULL, 10);} break; case 123: /* cmd ::= CREATE TABLE create_table_list */ -{ pInfo->type = TSDB_SQL_CREATE_TABLE; pInfo->pCreateTableInfo = yymsp[0].minor.yy38;} +{ pInfo->type = TSDB_SQL_CREATE_TABLE; pInfo->pCreateTableInfo = yymsp[0].minor.yy358;} break; case 124: /* create_table_list ::= create_from_stable */ { SCreateTableSQL* pCreateTable = calloc(1, sizeof(SCreateTableSQL)); pCreateTable->childTableInfo = taosArrayInit(4, sizeof(SCreatedTableInfo)); - taosArrayPush(pCreateTable->childTableInfo, &yymsp[0].minor.yy78); + taosArrayPush(pCreateTable->childTableInfo, &yymsp[0].minor.yy42); pCreateTable->type = TSQL_CREATE_TABLE_FROM_STABLE; - yylhsminor.yy38 = pCreateTable; + yylhsminor.yy358 = pCreateTable; } - yymsp[0].minor.yy38 = yylhsminor.yy38; + yymsp[0].minor.yy358 = yylhsminor.yy358; break; case 125: /* create_table_list ::= create_table_list create_from_stable */ { - taosArrayPush(yymsp[-1].minor.yy38->childTableInfo, &yymsp[0].minor.yy78); - yylhsminor.yy38 = yymsp[-1].minor.yy38; + taosArrayPush(yymsp[-1].minor.yy358->childTableInfo, &yymsp[0].minor.yy42); + yylhsminor.yy358 = yymsp[-1].minor.yy358; } - yymsp[-1].minor.yy38 = yylhsminor.yy38; + yymsp[-1].minor.yy358 = yylhsminor.yy358; break; case 126: /* create_table_args ::= ifnotexists ids cpxName LP columnlist RP */ { - yylhsminor.yy38 = tSetCreateSqlElems(yymsp[-1].minor.yy135, NULL, NULL, TSQL_CREATE_TABLE); - setSqlInfo(pInfo, yylhsminor.yy38, NULL, TSDB_SQL_CREATE_TABLE); + yylhsminor.yy358 = tSetCreateSqlElems(yymsp[-1].minor.yy247, NULL, NULL, TSQL_CREATE_TABLE); + setSqlInfo(pInfo, yylhsminor.yy358, NULL, TSDB_SQL_CREATE_TABLE); yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n; setCreatedTableName(pInfo, &yymsp[-4].minor.yy0, &yymsp[-5].minor.yy0); } - yymsp[-5].minor.yy38 = yylhsminor.yy38; + yymsp[-5].minor.yy358 = yylhsminor.yy358; break; case 127: /* create_stable_args ::= ifnotexists ids cpxName LP columnlist RP TAGS LP columnlist RP */ { - yylhsminor.yy38 = tSetCreateSqlElems(yymsp[-5].minor.yy135, yymsp[-1].minor.yy135, NULL, TSQL_CREATE_STABLE); - setSqlInfo(pInfo, yylhsminor.yy38, NULL, TSDB_SQL_CREATE_TABLE); + yylhsminor.yy358 = tSetCreateSqlElems(yymsp[-5].minor.yy247, yymsp[-1].minor.yy247, NULL, TSQL_CREATE_STABLE); + setSqlInfo(pInfo, yylhsminor.yy358, NULL, TSDB_SQL_CREATE_TABLE); yymsp[-8].minor.yy0.n += yymsp[-7].minor.yy0.n; setCreatedTableName(pInfo, &yymsp[-8].minor.yy0, &yymsp[-9].minor.yy0); } - yymsp[-9].minor.yy38 = yylhsminor.yy38; + yymsp[-9].minor.yy358 = yylhsminor.yy358; break; case 128: /* create_from_stable ::= ifnotexists ids cpxName USING ids cpxName TAGS LP tagitemlist RP */ { yymsp[-5].minor.yy0.n += yymsp[-4].minor.yy0.n; yymsp[-8].minor.yy0.n += yymsp[-7].minor.yy0.n; - yylhsminor.yy78 = createNewChildTableInfo(&yymsp[-5].minor.yy0, yymsp[-1].minor.yy135, &yymsp[-8].minor.yy0, &yymsp[-9].minor.yy0); + yylhsminor.yy42 = createNewChildTableInfo(&yymsp[-5].minor.yy0, yymsp[-1].minor.yy247, &yymsp[-8].minor.yy0, &yymsp[-9].minor.yy0); } - yymsp[-9].minor.yy78 = yylhsminor.yy78; + yymsp[-9].minor.yy42 = yylhsminor.yy42; break; case 129: /* create_table_args ::= ifnotexists ids cpxName AS select */ { - yylhsminor.yy38 = tSetCreateSqlElems(NULL, NULL, yymsp[0].minor.yy30, TSQL_CREATE_STREAM); - setSqlInfo(pInfo, yylhsminor.yy38, NULL, TSDB_SQL_CREATE_TABLE); + yylhsminor.yy358 = tSetCreateSqlElems(NULL, NULL, yymsp[0].minor.yy114, TSQL_CREATE_STREAM); + setSqlInfo(pInfo, yylhsminor.yy358, NULL, TSDB_SQL_CREATE_TABLE); yymsp[-3].minor.yy0.n += yymsp[-2].minor.yy0.n; setCreatedTableName(pInfo, &yymsp[-3].minor.yy0, &yymsp[-4].minor.yy0); } - yymsp[-4].minor.yy38 = yylhsminor.yy38; + yymsp[-4].minor.yy358 = yylhsminor.yy358; break; case 130: /* columnlist ::= columnlist COMMA column */ -{taosArrayPush(yymsp[-2].minor.yy135, &yymsp[0].minor.yy181); yylhsminor.yy135 = yymsp[-2].minor.yy135; } - yymsp[-2].minor.yy135 = yylhsminor.yy135; +{taosArrayPush(yymsp[-2].minor.yy247, &yymsp[0].minor.yy179); yylhsminor.yy247 = yymsp[-2].minor.yy247; } + yymsp[-2].minor.yy247 = yylhsminor.yy247; break; case 131: /* columnlist ::= column */ -{yylhsminor.yy135 = taosArrayInit(4, sizeof(TAOS_FIELD)); taosArrayPush(yylhsminor.yy135, &yymsp[0].minor.yy181);} - yymsp[0].minor.yy135 = yylhsminor.yy135; +{yylhsminor.yy247 = taosArrayInit(4, sizeof(TAOS_FIELD)); taosArrayPush(yylhsminor.yy247, &yymsp[0].minor.yy179);} + yymsp[0].minor.yy247 = yylhsminor.yy247; break; case 132: /* column ::= ids typename */ { - tSqlSetColumnInfo(&yylhsminor.yy181, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy181); + tSqlSetColumnInfo(&yylhsminor.yy179, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy179); } - yymsp[-1].minor.yy181 = yylhsminor.yy181; + yymsp[-1].minor.yy179 = yylhsminor.yy179; break; case 133: /* tagitemlist ::= tagitemlist COMMA tagitem */ -{ yylhsminor.yy135 = tVariantListAppend(yymsp[-2].minor.yy135, &yymsp[0].minor.yy308, -1); } - yymsp[-2].minor.yy135 = yylhsminor.yy135; +{ yylhsminor.yy247 = tVariantListAppend(yymsp[-2].minor.yy247, &yymsp[0].minor.yy378, -1); } + yymsp[-2].minor.yy247 = yylhsminor.yy247; break; case 134: /* tagitemlist ::= tagitem */ -{ yylhsminor.yy135 = tVariantListAppend(NULL, &yymsp[0].minor.yy308, -1); } - yymsp[0].minor.yy135 = yylhsminor.yy135; +{ yylhsminor.yy247 = tVariantListAppend(NULL, &yymsp[0].minor.yy378, -1); } + yymsp[0].minor.yy247 = yylhsminor.yy247; break; case 135: /* tagitem ::= INTEGER */ case 136: /* tagitem ::= FLOAT */ yytestcase(yyruleno==136); case 137: /* tagitem ::= STRING */ yytestcase(yyruleno==137); case 138: /* tagitem ::= BOOL */ yytestcase(yyruleno==138); -{ toTSDBType(yymsp[0].minor.yy0.type); tVariantCreate(&yylhsminor.yy308, &yymsp[0].minor.yy0); } - yymsp[0].minor.yy308 = yylhsminor.yy308; +{ toTSDBType(yymsp[0].minor.yy0.type); tVariantCreate(&yylhsminor.yy378, &yymsp[0].minor.yy0); } + yymsp[0].minor.yy378 = yylhsminor.yy378; break; case 139: /* tagitem ::= NULL */ -{ yymsp[0].minor.yy0.type = 0; tVariantCreate(&yylhsminor.yy308, &yymsp[0].minor.yy0); } - yymsp[0].minor.yy308 = yylhsminor.yy308; +{ yymsp[0].minor.yy0.type = 0; tVariantCreate(&yylhsminor.yy378, &yymsp[0].minor.yy0); } + yymsp[0].minor.yy378 = yylhsminor.yy378; break; case 140: /* tagitem ::= MINUS INTEGER */ case 141: /* tagitem ::= MINUS FLOAT */ yytestcase(yyruleno==141); @@ -2537,59 +2541,59 @@ static void yy_reduce( yymsp[-1].minor.yy0.n += yymsp[0].minor.yy0.n; yymsp[-1].minor.yy0.type = yymsp[0].minor.yy0.type; toTSDBType(yymsp[-1].minor.yy0.type); - tVariantCreate(&yylhsminor.yy308, &yymsp[-1].minor.yy0); + tVariantCreate(&yylhsminor.yy378, &yymsp[-1].minor.yy0); } - yymsp[-1].minor.yy308 = yylhsminor.yy308; + yymsp[-1].minor.yy378 = yylhsminor.yy378; break; case 144: /* select ::= SELECT selcollist from where_opt interval_opt fill_opt sliding_opt groupby_opt orderby_opt having_opt slimit_opt limit_opt */ { - yylhsminor.yy30 = tSetQuerySqlElems(&yymsp[-11].minor.yy0, yymsp[-10].minor.yy266, yymsp[-9].minor.yy135, yymsp[-8].minor.yy316, yymsp[-4].minor.yy135, yymsp[-3].minor.yy135, &yymsp[-7].minor.yy160, &yymsp[-5].minor.yy0, yymsp[-6].minor.yy135, &yymsp[0].minor.yy126, &yymsp[-1].minor.yy126); + yylhsminor.yy114 = tSetQuerySqlElems(&yymsp[-11].minor.yy0, yymsp[-10].minor.yy522, yymsp[-9].minor.yy247, yymsp[-8].minor.yy326, yymsp[-4].minor.yy247, yymsp[-3].minor.yy247, &yymsp[-7].minor.yy430, &yymsp[-5].minor.yy0, yymsp[-6].minor.yy247, &yymsp[0].minor.yy204, &yymsp[-1].minor.yy204); } - yymsp[-11].minor.yy30 = yylhsminor.yy30; + yymsp[-11].minor.yy114 = yylhsminor.yy114; break; case 145: /* union ::= select */ -{ yylhsminor.yy153 = setSubclause(NULL, yymsp[0].minor.yy30); } - yymsp[0].minor.yy153 = yylhsminor.yy153; +{ yylhsminor.yy219 = setSubclause(NULL, yymsp[0].minor.yy114); } + yymsp[0].minor.yy219 = yylhsminor.yy219; break; case 146: /* union ::= LP union RP */ -{ yymsp[-2].minor.yy153 = yymsp[-1].minor.yy153; } +{ yymsp[-2].minor.yy219 = yymsp[-1].minor.yy219; } break; case 147: /* union ::= union UNION ALL select */ -{ yylhsminor.yy153 = appendSelectClause(yymsp[-3].minor.yy153, yymsp[0].minor.yy30); } - yymsp[-3].minor.yy153 = yylhsminor.yy153; +{ yylhsminor.yy219 = appendSelectClause(yymsp[-3].minor.yy219, yymsp[0].minor.yy114); } + yymsp[-3].minor.yy219 = yylhsminor.yy219; break; case 148: /* union ::= union UNION ALL LP select RP */ -{ yylhsminor.yy153 = appendSelectClause(yymsp[-5].minor.yy153, yymsp[-1].minor.yy30); } - yymsp[-5].minor.yy153 = yylhsminor.yy153; +{ yylhsminor.yy219 = appendSelectClause(yymsp[-5].minor.yy219, yymsp[-1].minor.yy114); } + yymsp[-5].minor.yy219 = yylhsminor.yy219; break; case 149: /* cmd ::= union */ -{ setSqlInfo(pInfo, yymsp[0].minor.yy153, NULL, TSDB_SQL_SELECT); } +{ setSqlInfo(pInfo, yymsp[0].minor.yy219, NULL, TSDB_SQL_SELECT); } break; case 150: /* select ::= SELECT selcollist */ { - yylhsminor.yy30 = tSetQuerySqlElems(&yymsp[-1].minor.yy0, yymsp[0].minor.yy266, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); + yylhsminor.yy114 = tSetQuerySqlElems(&yymsp[-1].minor.yy0, yymsp[0].minor.yy522, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); } - yymsp[-1].minor.yy30 = yylhsminor.yy30; + yymsp[-1].minor.yy114 = yylhsminor.yy114; break; case 151: /* sclp ::= selcollist COMMA */ -{yylhsminor.yy266 = yymsp[-1].minor.yy266;} - yymsp[-1].minor.yy266 = yylhsminor.yy266; +{yylhsminor.yy522 = yymsp[-1].minor.yy522;} + yymsp[-1].minor.yy522 = yylhsminor.yy522; break; case 152: /* sclp ::= */ -{yymsp[1].minor.yy266 = 0;} +{yymsp[1].minor.yy522 = 0;} break; - case 153: /* selcollist ::= sclp expr as */ + case 153: /* selcollist ::= sclp distinct expr as */ { - yylhsminor.yy266 = tSqlExprListAppend(yymsp[-2].minor.yy266, yymsp[-1].minor.yy316, yymsp[0].minor.yy0.n?&yymsp[0].minor.yy0:0); + yylhsminor.yy522 = tSqlExprListAppend(yymsp[-3].minor.yy522, yymsp[-1].minor.yy326, yymsp[-2].minor.yy0.n? &yymsp[-2].minor.yy0:0, yymsp[0].minor.yy0.n?&yymsp[0].minor.yy0:0); } - yymsp[-2].minor.yy266 = yylhsminor.yy266; + yymsp[-3].minor.yy522 = yylhsminor.yy522; break; case 154: /* selcollist ::= sclp STAR */ { tSQLExpr *pNode = tSqlExprIdValueCreate(NULL, TK_ALL); - yylhsminor.yy266 = tSqlExprListAppend(yymsp[-1].minor.yy266, pNode, 0); + yylhsminor.yy522 = tSqlExprListAppend(yymsp[-1].minor.yy522, pNode, 0, 0); } - yymsp[-1].minor.yy266 = yylhsminor.yy266; + yymsp[-1].minor.yy522 = yylhsminor.yy522; break; case 155: /* as ::= AS ids */ { yymsp[-1].minor.yy0 = yymsp[0].minor.yy0; } @@ -2601,317 +2605,321 @@ static void yy_reduce( case 157: /* as ::= */ { yymsp[1].minor.yy0.n = 0; } break; - case 158: /* from ::= FROM tablelist */ -{yymsp[-1].minor.yy135 = yymsp[0].minor.yy135;} + case 158: /* distinct ::= DISTINCT */ +{ yylhsminor.yy0 = yymsp[0].minor.yy0; } + yymsp[0].minor.yy0 = yylhsminor.yy0; + break; + case 160: /* from ::= FROM tablelist */ +{yymsp[-1].minor.yy247 = yymsp[0].minor.yy247;} break; - case 159: /* tablelist ::= ids cpxName */ + case 161: /* tablelist ::= ids cpxName */ { toTSDBType(yymsp[-1].minor.yy0.type); yymsp[-1].minor.yy0.n += yymsp[0].minor.yy0.n; - yylhsminor.yy135 = tVariantListAppendToken(NULL, &yymsp[-1].minor.yy0, -1); - yylhsminor.yy135 = tVariantListAppendToken(yylhsminor.yy135, &yymsp[-1].minor.yy0, -1); // table alias name + yylhsminor.yy247 = tVariantListAppendToken(NULL, &yymsp[-1].minor.yy0, -1); + yylhsminor.yy247 = tVariantListAppendToken(yylhsminor.yy247, &yymsp[-1].minor.yy0, -1); // table alias name } - yymsp[-1].minor.yy135 = yylhsminor.yy135; + yymsp[-1].minor.yy247 = yylhsminor.yy247; break; - case 160: /* tablelist ::= ids cpxName ids */ + case 162: /* tablelist ::= ids cpxName ids */ { toTSDBType(yymsp[-2].minor.yy0.type); toTSDBType(yymsp[0].minor.yy0.type); yymsp[-2].minor.yy0.n += yymsp[-1].minor.yy0.n; - yylhsminor.yy135 = tVariantListAppendToken(NULL, &yymsp[-2].minor.yy0, -1); - yylhsminor.yy135 = tVariantListAppendToken(yylhsminor.yy135, &yymsp[0].minor.yy0, -1); + yylhsminor.yy247 = tVariantListAppendToken(NULL, &yymsp[-2].minor.yy0, -1); + yylhsminor.yy247 = tVariantListAppendToken(yylhsminor.yy247, &yymsp[0].minor.yy0, -1); } - yymsp[-2].minor.yy135 = yylhsminor.yy135; + yymsp[-2].minor.yy247 = yylhsminor.yy247; break; - case 161: /* tablelist ::= tablelist COMMA ids cpxName */ + case 163: /* tablelist ::= tablelist COMMA ids cpxName */ { toTSDBType(yymsp[-1].minor.yy0.type); yymsp[-1].minor.yy0.n += yymsp[0].minor.yy0.n; - yylhsminor.yy135 = tVariantListAppendToken(yymsp[-3].minor.yy135, &yymsp[-1].minor.yy0, -1); - yylhsminor.yy135 = tVariantListAppendToken(yylhsminor.yy135, &yymsp[-1].minor.yy0, -1); + yylhsminor.yy247 = tVariantListAppendToken(yymsp[-3].minor.yy247, &yymsp[-1].minor.yy0, -1); + yylhsminor.yy247 = tVariantListAppendToken(yylhsminor.yy247, &yymsp[-1].minor.yy0, -1); } - yymsp[-3].minor.yy135 = yylhsminor.yy135; + yymsp[-3].minor.yy247 = yylhsminor.yy247; break; - case 162: /* tablelist ::= tablelist COMMA ids cpxName ids */ + case 164: /* tablelist ::= tablelist COMMA ids cpxName ids */ { toTSDBType(yymsp[-2].minor.yy0.type); toTSDBType(yymsp[0].minor.yy0.type); yymsp[-2].minor.yy0.n += yymsp[-1].minor.yy0.n; - yylhsminor.yy135 = tVariantListAppendToken(yymsp[-4].minor.yy135, &yymsp[-2].minor.yy0, -1); - yylhsminor.yy135 = tVariantListAppendToken(yylhsminor.yy135, &yymsp[0].minor.yy0, -1); + yylhsminor.yy247 = tVariantListAppendToken(yymsp[-4].minor.yy247, &yymsp[-2].minor.yy0, -1); + yylhsminor.yy247 = tVariantListAppendToken(yylhsminor.yy247, &yymsp[0].minor.yy0, -1); } - yymsp[-4].minor.yy135 = yylhsminor.yy135; + yymsp[-4].minor.yy247 = yylhsminor.yy247; break; - case 163: /* tmvar ::= VARIABLE */ + case 165: /* tmvar ::= VARIABLE */ {yylhsminor.yy0 = yymsp[0].minor.yy0;} yymsp[0].minor.yy0 = yylhsminor.yy0; break; - case 164: /* interval_opt ::= INTERVAL LP tmvar RP */ -{yymsp[-3].minor.yy160.interval = yymsp[-1].minor.yy0; yymsp[-3].minor.yy160.offset.n = 0; yymsp[-3].minor.yy160.offset.z = NULL; yymsp[-3].minor.yy160.offset.type = 0;} + case 166: /* interval_opt ::= INTERVAL LP tmvar RP */ +{yymsp[-3].minor.yy430.interval = yymsp[-1].minor.yy0; yymsp[-3].minor.yy430.offset.n = 0; yymsp[-3].minor.yy430.offset.z = NULL; yymsp[-3].minor.yy430.offset.type = 0;} break; - case 165: /* interval_opt ::= INTERVAL LP tmvar COMMA tmvar RP */ -{yymsp[-5].minor.yy160.interval = yymsp[-3].minor.yy0; yymsp[-5].minor.yy160.offset = yymsp[-1].minor.yy0;} + case 167: /* interval_opt ::= INTERVAL LP tmvar COMMA tmvar RP */ +{yymsp[-5].minor.yy430.interval = yymsp[-3].minor.yy0; yymsp[-5].minor.yy430.offset = yymsp[-1].minor.yy0;} break; - case 166: /* interval_opt ::= */ -{memset(&yymsp[1].minor.yy160, 0, sizeof(yymsp[1].minor.yy160));} + case 168: /* interval_opt ::= */ +{memset(&yymsp[1].minor.yy430, 0, sizeof(yymsp[1].minor.yy430));} break; - case 167: /* fill_opt ::= */ -{yymsp[1].minor.yy135 = 0; } + case 169: /* fill_opt ::= */ +{yymsp[1].minor.yy247 = 0; } break; - case 168: /* fill_opt ::= FILL LP ID COMMA tagitemlist RP */ + case 170: /* fill_opt ::= FILL LP ID COMMA tagitemlist RP */ { tVariant A = {0}; toTSDBType(yymsp[-3].minor.yy0.type); tVariantCreate(&A, &yymsp[-3].minor.yy0); - tVariantListInsert(yymsp[-1].minor.yy135, &A, -1, 0); - yymsp[-5].minor.yy135 = yymsp[-1].minor.yy135; + tVariantListInsert(yymsp[-1].minor.yy247, &A, -1, 0); + yymsp[-5].minor.yy247 = yymsp[-1].minor.yy247; } break; - case 169: /* fill_opt ::= FILL LP ID RP */ + case 171: /* fill_opt ::= FILL LP ID RP */ { toTSDBType(yymsp[-1].minor.yy0.type); - yymsp[-3].minor.yy135 = tVariantListAppendToken(NULL, &yymsp[-1].minor.yy0, -1); + yymsp[-3].minor.yy247 = tVariantListAppendToken(NULL, &yymsp[-1].minor.yy0, -1); } break; - case 170: /* sliding_opt ::= SLIDING LP tmvar RP */ + case 172: /* sliding_opt ::= SLIDING LP tmvar RP */ {yymsp[-3].minor.yy0 = yymsp[-1].minor.yy0; } break; - case 171: /* sliding_opt ::= */ + case 173: /* sliding_opt ::= */ {yymsp[1].minor.yy0.n = 0; yymsp[1].minor.yy0.z = NULL; yymsp[1].minor.yy0.type = 0; } break; - case 172: /* orderby_opt ::= */ -{yymsp[1].minor.yy135 = 0;} + case 174: /* orderby_opt ::= */ +{yymsp[1].minor.yy247 = 0;} break; - case 173: /* orderby_opt ::= ORDER BY sortlist */ -{yymsp[-2].minor.yy135 = yymsp[0].minor.yy135;} + case 175: /* orderby_opt ::= ORDER BY sortlist */ +{yymsp[-2].minor.yy247 = yymsp[0].minor.yy247;} break; - case 174: /* sortlist ::= sortlist COMMA item sortorder */ + case 176: /* sortlist ::= sortlist COMMA item sortorder */ { - yylhsminor.yy135 = tVariantListAppend(yymsp[-3].minor.yy135, &yymsp[-1].minor.yy308, yymsp[0].minor.yy130); + yylhsminor.yy247 = tVariantListAppend(yymsp[-3].minor.yy247, &yymsp[-1].minor.yy378, yymsp[0].minor.yy222); } - yymsp[-3].minor.yy135 = yylhsminor.yy135; + yymsp[-3].minor.yy247 = yylhsminor.yy247; break; - case 175: /* sortlist ::= item sortorder */ + case 177: /* sortlist ::= item sortorder */ { - yylhsminor.yy135 = tVariantListAppend(NULL, &yymsp[-1].minor.yy308, yymsp[0].minor.yy130); + yylhsminor.yy247 = tVariantListAppend(NULL, &yymsp[-1].minor.yy378, yymsp[0].minor.yy222); } - yymsp[-1].minor.yy135 = yylhsminor.yy135; + yymsp[-1].minor.yy247 = yylhsminor.yy247; break; - case 176: /* item ::= ids cpxName */ + case 178: /* item ::= ids cpxName */ { toTSDBType(yymsp[-1].minor.yy0.type); yymsp[-1].minor.yy0.n += yymsp[0].minor.yy0.n; - tVariantCreate(&yylhsminor.yy308, &yymsp[-1].minor.yy0); + tVariantCreate(&yylhsminor.yy378, &yymsp[-1].minor.yy0); } - yymsp[-1].minor.yy308 = yylhsminor.yy308; + yymsp[-1].minor.yy378 = yylhsminor.yy378; break; - case 177: /* sortorder ::= ASC */ -{ yymsp[0].minor.yy130 = TSDB_ORDER_ASC; } + case 179: /* sortorder ::= ASC */ +{ yymsp[0].minor.yy222 = TSDB_ORDER_ASC; } break; - case 178: /* sortorder ::= DESC */ -{ yymsp[0].minor.yy130 = TSDB_ORDER_DESC;} + case 180: /* sortorder ::= DESC */ +{ yymsp[0].minor.yy222 = TSDB_ORDER_DESC;} break; - case 179: /* sortorder ::= */ -{ yymsp[1].minor.yy130 = TSDB_ORDER_ASC; } + case 181: /* sortorder ::= */ +{ yymsp[1].minor.yy222 = TSDB_ORDER_ASC; } break; - case 180: /* groupby_opt ::= */ -{ yymsp[1].minor.yy135 = 0;} + case 182: /* groupby_opt ::= */ +{ yymsp[1].minor.yy247 = 0;} break; - case 181: /* groupby_opt ::= GROUP BY grouplist */ -{ yymsp[-2].minor.yy135 = yymsp[0].minor.yy135;} + case 183: /* groupby_opt ::= GROUP BY grouplist */ +{ yymsp[-2].minor.yy247 = yymsp[0].minor.yy247;} break; - case 182: /* grouplist ::= grouplist COMMA item */ + case 184: /* grouplist ::= grouplist COMMA item */ { - yylhsminor.yy135 = tVariantListAppend(yymsp[-2].minor.yy135, &yymsp[0].minor.yy308, -1); + yylhsminor.yy247 = tVariantListAppend(yymsp[-2].minor.yy247, &yymsp[0].minor.yy378, -1); } - yymsp[-2].minor.yy135 = yylhsminor.yy135; + yymsp[-2].minor.yy247 = yylhsminor.yy247; break; - case 183: /* grouplist ::= item */ + case 185: /* grouplist ::= item */ { - yylhsminor.yy135 = tVariantListAppend(NULL, &yymsp[0].minor.yy308, -1); + yylhsminor.yy247 = tVariantListAppend(NULL, &yymsp[0].minor.yy378, -1); } - yymsp[0].minor.yy135 = yylhsminor.yy135; + yymsp[0].minor.yy247 = yylhsminor.yy247; break; - case 184: /* having_opt ::= */ - case 194: /* where_opt ::= */ yytestcase(yyruleno==194); - case 232: /* expritem ::= */ yytestcase(yyruleno==232); -{yymsp[1].minor.yy316 = 0;} + case 186: /* having_opt ::= */ + case 196: /* where_opt ::= */ yytestcase(yyruleno==196); + case 234: /* expritem ::= */ yytestcase(yyruleno==234); +{yymsp[1].minor.yy326 = 0;} break; - case 185: /* having_opt ::= HAVING expr */ - case 195: /* where_opt ::= WHERE expr */ yytestcase(yyruleno==195); -{yymsp[-1].minor.yy316 = yymsp[0].minor.yy316;} + case 187: /* having_opt ::= HAVING expr */ + case 197: /* where_opt ::= WHERE expr */ yytestcase(yyruleno==197); +{yymsp[-1].minor.yy326 = yymsp[0].minor.yy326;} break; - case 186: /* limit_opt ::= */ - case 190: /* slimit_opt ::= */ yytestcase(yyruleno==190); -{yymsp[1].minor.yy126.limit = -1; yymsp[1].minor.yy126.offset = 0;} + case 188: /* limit_opt ::= */ + case 192: /* slimit_opt ::= */ yytestcase(yyruleno==192); +{yymsp[1].minor.yy204.limit = -1; yymsp[1].minor.yy204.offset = 0;} break; - case 187: /* limit_opt ::= LIMIT signed */ - case 191: /* slimit_opt ::= SLIMIT signed */ yytestcase(yyruleno==191); -{yymsp[-1].minor.yy126.limit = yymsp[0].minor.yy531; yymsp[-1].minor.yy126.offset = 0;} + case 189: /* limit_opt ::= LIMIT signed */ + case 193: /* slimit_opt ::= SLIMIT signed */ yytestcase(yyruleno==193); +{yymsp[-1].minor.yy204.limit = yymsp[0].minor.yy403; yymsp[-1].minor.yy204.offset = 0;} break; - case 188: /* limit_opt ::= LIMIT signed OFFSET signed */ -{ yymsp[-3].minor.yy126.limit = yymsp[-2].minor.yy531; yymsp[-3].minor.yy126.offset = yymsp[0].minor.yy531;} + case 190: /* limit_opt ::= LIMIT signed OFFSET signed */ +{ yymsp[-3].minor.yy204.limit = yymsp[-2].minor.yy403; yymsp[-3].minor.yy204.offset = yymsp[0].minor.yy403;} break; - case 189: /* limit_opt ::= LIMIT signed COMMA signed */ -{ yymsp[-3].minor.yy126.limit = yymsp[0].minor.yy531; yymsp[-3].minor.yy126.offset = yymsp[-2].minor.yy531;} + case 191: /* limit_opt ::= LIMIT signed COMMA signed */ +{ yymsp[-3].minor.yy204.limit = yymsp[0].minor.yy403; yymsp[-3].minor.yy204.offset = yymsp[-2].minor.yy403;} break; - case 192: /* slimit_opt ::= SLIMIT signed SOFFSET signed */ -{yymsp[-3].minor.yy126.limit = yymsp[-2].minor.yy531; yymsp[-3].minor.yy126.offset = yymsp[0].minor.yy531;} + case 194: /* slimit_opt ::= SLIMIT signed SOFFSET signed */ +{yymsp[-3].minor.yy204.limit = yymsp[-2].minor.yy403; yymsp[-3].minor.yy204.offset = yymsp[0].minor.yy403;} break; - case 193: /* slimit_opt ::= SLIMIT signed COMMA signed */ -{yymsp[-3].minor.yy126.limit = yymsp[0].minor.yy531; yymsp[-3].minor.yy126.offset = yymsp[-2].minor.yy531;} + case 195: /* slimit_opt ::= SLIMIT signed COMMA signed */ +{yymsp[-3].minor.yy204.limit = yymsp[0].minor.yy403; yymsp[-3].minor.yy204.offset = yymsp[-2].minor.yy403;} break; - case 196: /* expr ::= LP expr RP */ -{yylhsminor.yy316 = yymsp[-1].minor.yy316; yylhsminor.yy316->token.z = yymsp[-2].minor.yy0.z; yylhsminor.yy316->token.n = (yymsp[0].minor.yy0.z - yymsp[-2].minor.yy0.z + 1);} - yymsp[-2].minor.yy316 = yylhsminor.yy316; + case 198: /* expr ::= LP expr RP */ +{yylhsminor.yy326 = yymsp[-1].minor.yy326; yylhsminor.yy326->token.z = yymsp[-2].minor.yy0.z; yylhsminor.yy326->token.n = (yymsp[0].minor.yy0.z - yymsp[-2].minor.yy0.z + 1);} + yymsp[-2].minor.yy326 = yylhsminor.yy326; break; - case 197: /* expr ::= ID */ -{ yylhsminor.yy316 = tSqlExprIdValueCreate(&yymsp[0].minor.yy0, TK_ID);} - yymsp[0].minor.yy316 = yylhsminor.yy316; + case 199: /* expr ::= ID */ +{ yylhsminor.yy326 = tSqlExprIdValueCreate(&yymsp[0].minor.yy0, TK_ID);} + yymsp[0].minor.yy326 = yylhsminor.yy326; break; - case 198: /* expr ::= ID DOT ID */ -{ yymsp[-2].minor.yy0.n += (1+yymsp[0].minor.yy0.n); yylhsminor.yy316 = tSqlExprIdValueCreate(&yymsp[-2].minor.yy0, TK_ID);} - yymsp[-2].minor.yy316 = yylhsminor.yy316; + case 200: /* expr ::= ID DOT ID */ +{ yymsp[-2].minor.yy0.n += (1+yymsp[0].minor.yy0.n); yylhsminor.yy326 = tSqlExprIdValueCreate(&yymsp[-2].minor.yy0, TK_ID);} + yymsp[-2].minor.yy326 = yylhsminor.yy326; break; - case 199: /* expr ::= ID DOT STAR */ -{ yymsp[-2].minor.yy0.n += (1+yymsp[0].minor.yy0.n); yylhsminor.yy316 = tSqlExprIdValueCreate(&yymsp[-2].minor.yy0, TK_ALL);} - yymsp[-2].minor.yy316 = yylhsminor.yy316; + case 201: /* expr ::= ID DOT STAR */ +{ yymsp[-2].minor.yy0.n += (1+yymsp[0].minor.yy0.n); yylhsminor.yy326 = tSqlExprIdValueCreate(&yymsp[-2].minor.yy0, TK_ALL);} + yymsp[-2].minor.yy326 = yylhsminor.yy326; break; - case 200: /* expr ::= INTEGER */ -{ yylhsminor.yy316 = tSqlExprIdValueCreate(&yymsp[0].minor.yy0, TK_INTEGER);} - yymsp[0].minor.yy316 = yylhsminor.yy316; + case 202: /* expr ::= INTEGER */ +{ yylhsminor.yy326 = tSqlExprIdValueCreate(&yymsp[0].minor.yy0, TK_INTEGER);} + yymsp[0].minor.yy326 = yylhsminor.yy326; break; - case 201: /* expr ::= MINUS INTEGER */ - case 202: /* expr ::= PLUS INTEGER */ yytestcase(yyruleno==202); -{ yymsp[-1].minor.yy0.n += yymsp[0].minor.yy0.n; yymsp[-1].minor.yy0.type = TK_INTEGER; yylhsminor.yy316 = tSqlExprIdValueCreate(&yymsp[-1].minor.yy0, TK_INTEGER);} - yymsp[-1].minor.yy316 = yylhsminor.yy316; + case 203: /* expr ::= MINUS INTEGER */ + case 204: /* expr ::= PLUS INTEGER */ yytestcase(yyruleno==204); +{ yymsp[-1].minor.yy0.n += yymsp[0].minor.yy0.n; yymsp[-1].minor.yy0.type = TK_INTEGER; yylhsminor.yy326 = tSqlExprIdValueCreate(&yymsp[-1].minor.yy0, TK_INTEGER);} + yymsp[-1].minor.yy326 = yylhsminor.yy326; break; - case 203: /* expr ::= FLOAT */ -{ yylhsminor.yy316 = tSqlExprIdValueCreate(&yymsp[0].minor.yy0, TK_FLOAT);} - yymsp[0].minor.yy316 = yylhsminor.yy316; + case 205: /* expr ::= FLOAT */ +{ yylhsminor.yy326 = tSqlExprIdValueCreate(&yymsp[0].minor.yy0, TK_FLOAT);} + yymsp[0].minor.yy326 = yylhsminor.yy326; break; - case 204: /* expr ::= MINUS FLOAT */ - case 205: /* expr ::= PLUS FLOAT */ yytestcase(yyruleno==205); -{ yymsp[-1].minor.yy0.n += yymsp[0].minor.yy0.n; yymsp[-1].minor.yy0.type = TK_FLOAT; yylhsminor.yy316 = tSqlExprIdValueCreate(&yymsp[-1].minor.yy0, TK_FLOAT);} - yymsp[-1].minor.yy316 = yylhsminor.yy316; + case 206: /* expr ::= MINUS FLOAT */ + case 207: /* expr ::= PLUS FLOAT */ yytestcase(yyruleno==207); +{ yymsp[-1].minor.yy0.n += yymsp[0].minor.yy0.n; yymsp[-1].minor.yy0.type = TK_FLOAT; yylhsminor.yy326 = tSqlExprIdValueCreate(&yymsp[-1].minor.yy0, TK_FLOAT);} + yymsp[-1].minor.yy326 = yylhsminor.yy326; break; - case 206: /* expr ::= STRING */ -{ yylhsminor.yy316 = tSqlExprIdValueCreate(&yymsp[0].minor.yy0, TK_STRING);} - yymsp[0].minor.yy316 = yylhsminor.yy316; + case 208: /* expr ::= STRING */ +{ yylhsminor.yy326 = tSqlExprIdValueCreate(&yymsp[0].minor.yy0, TK_STRING);} + yymsp[0].minor.yy326 = yylhsminor.yy326; break; - case 207: /* expr ::= NOW */ -{ yylhsminor.yy316 = tSqlExprIdValueCreate(&yymsp[0].minor.yy0, TK_NOW); } - yymsp[0].minor.yy316 = yylhsminor.yy316; + case 209: /* expr ::= NOW */ +{ yylhsminor.yy326 = tSqlExprIdValueCreate(&yymsp[0].minor.yy0, TK_NOW); } + yymsp[0].minor.yy326 = yylhsminor.yy326; break; - case 208: /* expr ::= VARIABLE */ -{ yylhsminor.yy316 = tSqlExprIdValueCreate(&yymsp[0].minor.yy0, TK_VARIABLE);} - yymsp[0].minor.yy316 = yylhsminor.yy316; + case 210: /* expr ::= VARIABLE */ +{ yylhsminor.yy326 = tSqlExprIdValueCreate(&yymsp[0].minor.yy0, TK_VARIABLE);} + yymsp[0].minor.yy326 = yylhsminor.yy326; break; - case 209: /* expr ::= BOOL */ -{ yylhsminor.yy316 = tSqlExprIdValueCreate(&yymsp[0].minor.yy0, TK_BOOL);} - yymsp[0].minor.yy316 = yylhsminor.yy316; + case 211: /* expr ::= BOOL */ +{ yylhsminor.yy326 = tSqlExprIdValueCreate(&yymsp[0].minor.yy0, TK_BOOL);} + yymsp[0].minor.yy326 = yylhsminor.yy326; break; - case 210: /* expr ::= ID LP exprlist RP */ -{ yylhsminor.yy316 = tSqlExprCreateFunction(yymsp[-1].minor.yy266, &yymsp[-3].minor.yy0, &yymsp[0].minor.yy0, yymsp[-3].minor.yy0.type); } - yymsp[-3].minor.yy316 = yylhsminor.yy316; + case 212: /* expr ::= ID LP exprlist RP */ +{ yylhsminor.yy326 = tSqlExprCreateFunction(yymsp[-1].minor.yy522, &yymsp[-3].minor.yy0, &yymsp[0].minor.yy0, yymsp[-3].minor.yy0.type); } + yymsp[-3].minor.yy326 = yylhsminor.yy326; break; - case 211: /* expr ::= ID LP STAR RP */ -{ yylhsminor.yy316 = tSqlExprCreateFunction(NULL, &yymsp[-3].minor.yy0, &yymsp[0].minor.yy0, yymsp[-3].minor.yy0.type); } - yymsp[-3].minor.yy316 = yylhsminor.yy316; + case 213: /* expr ::= ID LP STAR RP */ +{ yylhsminor.yy326 = tSqlExprCreateFunction(NULL, &yymsp[-3].minor.yy0, &yymsp[0].minor.yy0, yymsp[-3].minor.yy0.type); } + yymsp[-3].minor.yy326 = yylhsminor.yy326; break; - case 212: /* expr ::= expr IS NULL */ -{yylhsminor.yy316 = tSqlExprCreate(yymsp[-2].minor.yy316, NULL, TK_ISNULL);} - yymsp[-2].minor.yy316 = yylhsminor.yy316; + case 214: /* expr ::= expr IS NULL */ +{yylhsminor.yy326 = tSqlExprCreate(yymsp[-2].minor.yy326, NULL, TK_ISNULL);} + yymsp[-2].minor.yy326 = yylhsminor.yy326; break; - case 213: /* expr ::= expr IS NOT NULL */ -{yylhsminor.yy316 = tSqlExprCreate(yymsp[-3].minor.yy316, NULL, TK_NOTNULL);} - yymsp[-3].minor.yy316 = yylhsminor.yy316; + case 215: /* expr ::= expr IS NOT NULL */ +{yylhsminor.yy326 = tSqlExprCreate(yymsp[-3].minor.yy326, NULL, TK_NOTNULL);} + yymsp[-3].minor.yy326 = yylhsminor.yy326; break; - case 214: /* expr ::= expr LT expr */ -{yylhsminor.yy316 = tSqlExprCreate(yymsp[-2].minor.yy316, yymsp[0].minor.yy316, TK_LT);} - yymsp[-2].minor.yy316 = yylhsminor.yy316; + case 216: /* expr ::= expr LT expr */ +{yylhsminor.yy326 = tSqlExprCreate(yymsp[-2].minor.yy326, yymsp[0].minor.yy326, TK_LT);} + yymsp[-2].minor.yy326 = yylhsminor.yy326; break; - case 215: /* expr ::= expr GT expr */ -{yylhsminor.yy316 = tSqlExprCreate(yymsp[-2].minor.yy316, yymsp[0].minor.yy316, TK_GT);} - yymsp[-2].minor.yy316 = yylhsminor.yy316; + case 217: /* expr ::= expr GT expr */ +{yylhsminor.yy326 = tSqlExprCreate(yymsp[-2].minor.yy326, yymsp[0].minor.yy326, TK_GT);} + yymsp[-2].minor.yy326 = yylhsminor.yy326; break; - case 216: /* expr ::= expr LE expr */ -{yylhsminor.yy316 = tSqlExprCreate(yymsp[-2].minor.yy316, yymsp[0].minor.yy316, TK_LE);} - yymsp[-2].minor.yy316 = yylhsminor.yy316; + case 218: /* expr ::= expr LE expr */ +{yylhsminor.yy326 = tSqlExprCreate(yymsp[-2].minor.yy326, yymsp[0].minor.yy326, TK_LE);} + yymsp[-2].minor.yy326 = yylhsminor.yy326; break; - case 217: /* expr ::= expr GE expr */ -{yylhsminor.yy316 = tSqlExprCreate(yymsp[-2].minor.yy316, yymsp[0].minor.yy316, TK_GE);} - yymsp[-2].minor.yy316 = yylhsminor.yy316; + case 219: /* expr ::= expr GE expr */ +{yylhsminor.yy326 = tSqlExprCreate(yymsp[-2].minor.yy326, yymsp[0].minor.yy326, TK_GE);} + yymsp[-2].minor.yy326 = yylhsminor.yy326; break; - case 218: /* expr ::= expr NE expr */ -{yylhsminor.yy316 = tSqlExprCreate(yymsp[-2].minor.yy316, yymsp[0].minor.yy316, TK_NE);} - yymsp[-2].minor.yy316 = yylhsminor.yy316; + case 220: /* expr ::= expr NE expr */ +{yylhsminor.yy326 = tSqlExprCreate(yymsp[-2].minor.yy326, yymsp[0].minor.yy326, TK_NE);} + yymsp[-2].minor.yy326 = yylhsminor.yy326; break; - case 219: /* expr ::= expr EQ expr */ -{yylhsminor.yy316 = tSqlExprCreate(yymsp[-2].minor.yy316, yymsp[0].minor.yy316, TK_EQ);} - yymsp[-2].minor.yy316 = yylhsminor.yy316; + case 221: /* expr ::= expr EQ expr */ +{yylhsminor.yy326 = tSqlExprCreate(yymsp[-2].minor.yy326, yymsp[0].minor.yy326, TK_EQ);} + yymsp[-2].minor.yy326 = yylhsminor.yy326; break; - case 220: /* expr ::= expr AND expr */ -{yylhsminor.yy316 = tSqlExprCreate(yymsp[-2].minor.yy316, yymsp[0].minor.yy316, TK_AND);} - yymsp[-2].minor.yy316 = yylhsminor.yy316; + case 222: /* expr ::= expr AND expr */ +{yylhsminor.yy326 = tSqlExprCreate(yymsp[-2].minor.yy326, yymsp[0].minor.yy326, TK_AND);} + yymsp[-2].minor.yy326 = yylhsminor.yy326; break; - case 221: /* expr ::= expr OR expr */ -{yylhsminor.yy316 = tSqlExprCreate(yymsp[-2].minor.yy316, yymsp[0].minor.yy316, TK_OR); } - yymsp[-2].minor.yy316 = yylhsminor.yy316; + case 223: /* expr ::= expr OR expr */ +{yylhsminor.yy326 = tSqlExprCreate(yymsp[-2].minor.yy326, yymsp[0].minor.yy326, TK_OR); } + yymsp[-2].minor.yy326 = yylhsminor.yy326; break; - case 222: /* expr ::= expr PLUS expr */ -{yylhsminor.yy316 = tSqlExprCreate(yymsp[-2].minor.yy316, yymsp[0].minor.yy316, TK_PLUS); } - yymsp[-2].minor.yy316 = yylhsminor.yy316; + case 224: /* expr ::= expr PLUS expr */ +{yylhsminor.yy326 = tSqlExprCreate(yymsp[-2].minor.yy326, yymsp[0].minor.yy326, TK_PLUS); } + yymsp[-2].minor.yy326 = yylhsminor.yy326; break; - case 223: /* expr ::= expr MINUS expr */ -{yylhsminor.yy316 = tSqlExprCreate(yymsp[-2].minor.yy316, yymsp[0].minor.yy316, TK_MINUS); } - yymsp[-2].minor.yy316 = yylhsminor.yy316; + case 225: /* expr ::= expr MINUS expr */ +{yylhsminor.yy326 = tSqlExprCreate(yymsp[-2].minor.yy326, yymsp[0].minor.yy326, TK_MINUS); } + yymsp[-2].minor.yy326 = yylhsminor.yy326; break; - case 224: /* expr ::= expr STAR expr */ -{yylhsminor.yy316 = tSqlExprCreate(yymsp[-2].minor.yy316, yymsp[0].minor.yy316, TK_STAR); } - yymsp[-2].minor.yy316 = yylhsminor.yy316; + case 226: /* expr ::= expr STAR expr */ +{yylhsminor.yy326 = tSqlExprCreate(yymsp[-2].minor.yy326, yymsp[0].minor.yy326, TK_STAR); } + yymsp[-2].minor.yy326 = yylhsminor.yy326; break; - case 225: /* expr ::= expr SLASH expr */ -{yylhsminor.yy316 = tSqlExprCreate(yymsp[-2].minor.yy316, yymsp[0].minor.yy316, TK_DIVIDE);} - yymsp[-2].minor.yy316 = yylhsminor.yy316; + case 227: /* expr ::= expr SLASH expr */ +{yylhsminor.yy326 = tSqlExprCreate(yymsp[-2].minor.yy326, yymsp[0].minor.yy326, TK_DIVIDE);} + yymsp[-2].minor.yy326 = yylhsminor.yy326; break; - case 226: /* expr ::= expr REM expr */ -{yylhsminor.yy316 = tSqlExprCreate(yymsp[-2].minor.yy316, yymsp[0].minor.yy316, TK_REM); } - yymsp[-2].minor.yy316 = yylhsminor.yy316; + case 228: /* expr ::= expr REM expr */ +{yylhsminor.yy326 = tSqlExprCreate(yymsp[-2].minor.yy326, yymsp[0].minor.yy326, TK_REM); } + yymsp[-2].minor.yy326 = yylhsminor.yy326; break; - case 227: /* expr ::= expr LIKE expr */ -{yylhsminor.yy316 = tSqlExprCreate(yymsp[-2].minor.yy316, yymsp[0].minor.yy316, TK_LIKE); } - yymsp[-2].minor.yy316 = yylhsminor.yy316; + case 229: /* expr ::= expr LIKE expr */ +{yylhsminor.yy326 = tSqlExprCreate(yymsp[-2].minor.yy326, yymsp[0].minor.yy326, TK_LIKE); } + yymsp[-2].minor.yy326 = yylhsminor.yy326; break; - case 228: /* expr ::= expr IN LP exprlist RP */ -{yylhsminor.yy316 = tSqlExprCreate(yymsp[-4].minor.yy316, (tSQLExpr*)yymsp[-1].minor.yy266, TK_IN); } - yymsp[-4].minor.yy316 = yylhsminor.yy316; + case 230: /* expr ::= expr IN LP exprlist RP */ +{yylhsminor.yy326 = tSqlExprCreate(yymsp[-4].minor.yy326, (tSQLExpr*)yymsp[-1].minor.yy522, TK_IN); } + yymsp[-4].minor.yy326 = yylhsminor.yy326; break; - case 229: /* exprlist ::= exprlist COMMA expritem */ -{yylhsminor.yy266 = tSqlExprListAppend(yymsp[-2].minor.yy266,yymsp[0].minor.yy316,0);} - yymsp[-2].minor.yy266 = yylhsminor.yy266; + case 231: /* exprlist ::= exprlist COMMA expritem */ +{yylhsminor.yy522 = tSqlExprListAppend(yymsp[-2].minor.yy522,yymsp[0].minor.yy326,0, 0);} + yymsp[-2].minor.yy522 = yylhsminor.yy522; break; - case 230: /* exprlist ::= expritem */ -{yylhsminor.yy266 = tSqlExprListAppend(0,yymsp[0].minor.yy316,0);} - yymsp[0].minor.yy266 = yylhsminor.yy266; + case 232: /* exprlist ::= expritem */ +{yylhsminor.yy522 = tSqlExprListAppend(0,yymsp[0].minor.yy326,0, 0);} + yymsp[0].minor.yy522 = yylhsminor.yy522; break; - case 231: /* expritem ::= expr */ -{yylhsminor.yy316 = yymsp[0].minor.yy316;} - yymsp[0].minor.yy316 = yylhsminor.yy316; + case 233: /* expritem ::= expr */ +{yylhsminor.yy326 = yymsp[0].minor.yy326;} + yymsp[0].minor.yy326 = yylhsminor.yy326; break; - case 233: /* cmd ::= RESET QUERY CACHE */ + case 235: /* cmd ::= RESET QUERY CACHE */ { setDCLSQLElems(pInfo, TSDB_SQL_RESET_CACHE, 0);} break; - case 234: /* cmd ::= ALTER TABLE ids cpxName ADD COLUMN columnlist */ + case 236: /* cmd ::= ALTER TABLE ids cpxName ADD COLUMN columnlist */ { yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n; - SAlterTableInfo* pAlterTable = tAlterTableSqlElems(&yymsp[-4].minor.yy0, yymsp[0].minor.yy135, NULL, TSDB_ALTER_TABLE_ADD_COLUMN, -1); + SAlterTableInfo* pAlterTable = tAlterTableSqlElems(&yymsp[-4].minor.yy0, yymsp[0].minor.yy247, NULL, TSDB_ALTER_TABLE_ADD_COLUMN, -1); setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE); } break; - case 235: /* cmd ::= ALTER TABLE ids cpxName DROP COLUMN ids */ + case 237: /* cmd ::= ALTER TABLE ids cpxName DROP COLUMN ids */ { yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n; @@ -2922,14 +2930,14 @@ static void yy_reduce( setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE); } break; - case 236: /* cmd ::= ALTER TABLE ids cpxName ADD TAG columnlist */ + case 238: /* cmd ::= ALTER TABLE ids cpxName ADD TAG columnlist */ { yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n; - SAlterTableInfo* pAlterTable = tAlterTableSqlElems(&yymsp[-4].minor.yy0, yymsp[0].minor.yy135, NULL, TSDB_ALTER_TABLE_ADD_TAG_COLUMN, -1); + SAlterTableInfo* pAlterTable = tAlterTableSqlElems(&yymsp[-4].minor.yy0, yymsp[0].minor.yy247, NULL, TSDB_ALTER_TABLE_ADD_TAG_COLUMN, -1); setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE); } break; - case 237: /* cmd ::= ALTER TABLE ids cpxName DROP TAG ids */ + case 239: /* cmd ::= ALTER TABLE ids cpxName DROP TAG ids */ { yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n; @@ -2940,7 +2948,7 @@ static void yy_reduce( setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE); } break; - case 238: /* cmd ::= ALTER TABLE ids cpxName CHANGE TAG ids ids */ + case 240: /* cmd ::= ALTER TABLE ids cpxName CHANGE TAG ids ids */ { yymsp[-5].minor.yy0.n += yymsp[-4].minor.yy0.n; @@ -2954,26 +2962,26 @@ static void yy_reduce( setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE); } break; - case 239: /* cmd ::= ALTER TABLE ids cpxName SET TAG ids EQ tagitem */ + case 241: /* cmd ::= ALTER TABLE ids cpxName SET TAG ids EQ tagitem */ { yymsp[-6].minor.yy0.n += yymsp[-5].minor.yy0.n; toTSDBType(yymsp[-2].minor.yy0.type); SArray* A = tVariantListAppendToken(NULL, &yymsp[-2].minor.yy0, -1); - A = tVariantListAppend(A, &yymsp[0].minor.yy308, -1); + A = tVariantListAppend(A, &yymsp[0].minor.yy378, -1); SAlterTableInfo* pAlterTable = tAlterTableSqlElems(&yymsp[-6].minor.yy0, NULL, A, TSDB_ALTER_TABLE_UPDATE_TAG_VAL, -1); setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE); } break; - case 240: /* cmd ::= ALTER STABLE ids cpxName ADD COLUMN columnlist */ + case 242: /* cmd ::= ALTER STABLE ids cpxName ADD COLUMN columnlist */ { yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n; - SAlterTableInfo* pAlterTable = tAlterTableSqlElems(&yymsp[-4].minor.yy0, yymsp[0].minor.yy135, NULL, TSDB_ALTER_TABLE_ADD_COLUMN, TSDB_SUPER_TABLE); + SAlterTableInfo* pAlterTable = tAlterTableSqlElems(&yymsp[-4].minor.yy0, yymsp[0].minor.yy247, NULL, TSDB_ALTER_TABLE_ADD_COLUMN, TSDB_SUPER_TABLE); setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE); } break; - case 241: /* cmd ::= ALTER STABLE ids cpxName DROP COLUMN ids */ + case 243: /* cmd ::= ALTER STABLE ids cpxName DROP COLUMN ids */ { yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n; @@ -2984,14 +2992,14 @@ static void yy_reduce( setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE); } break; - case 242: /* cmd ::= ALTER STABLE ids cpxName ADD TAG columnlist */ + case 244: /* cmd ::= ALTER STABLE ids cpxName ADD TAG columnlist */ { yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n; - SAlterTableInfo* pAlterTable = tAlterTableSqlElems(&yymsp[-4].minor.yy0, yymsp[0].minor.yy135, NULL, TSDB_ALTER_TABLE_ADD_TAG_COLUMN, TSDB_SUPER_TABLE); + SAlterTableInfo* pAlterTable = tAlterTableSqlElems(&yymsp[-4].minor.yy0, yymsp[0].minor.yy247, NULL, TSDB_ALTER_TABLE_ADD_TAG_COLUMN, TSDB_SUPER_TABLE); setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE); } break; - case 243: /* cmd ::= ALTER STABLE ids cpxName DROP TAG ids */ + case 245: /* cmd ::= ALTER STABLE ids cpxName DROP TAG ids */ { yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n; @@ -3002,7 +3010,7 @@ static void yy_reduce( setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE); } break; - case 244: /* cmd ::= ALTER STABLE ids cpxName CHANGE TAG ids ids */ + case 246: /* cmd ::= ALTER STABLE ids cpxName CHANGE TAG ids ids */ { yymsp[-5].minor.yy0.n += yymsp[-4].minor.yy0.n; @@ -3016,13 +3024,13 @@ static void yy_reduce( setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE); } break; - case 245: /* cmd ::= KILL CONNECTION INTEGER */ + case 247: /* cmd ::= KILL CONNECTION INTEGER */ {setKillSql(pInfo, TSDB_SQL_KILL_CONNECTION, &yymsp[0].minor.yy0);} break; - case 246: /* cmd ::= KILL STREAM INTEGER COLON INTEGER */ + case 248: /* 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 247: /* cmd ::= KILL QUERY INTEGER COLON INTEGER */ + case 249: /* 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/tests/script/general/parser/select_distinct_tag.sim b/tests/script/general/parser/select_distinct_tag.sim new file mode 100644 index 0000000000000000000000000000000000000000..7ea9dc444fb3befc4409a0bc0c74a3710838ebaa --- /dev/null +++ b/tests/script/general/parser/select_distinct_tag.sim @@ -0,0 +1,61 @@ +system sh/stop_dnodes.sh + +system sh/deploy.sh -n dnode1 -i 1 +system sh/cfg.sh -n dnode1 -c walLevel -v 0 +system sh/cfg.sh -n dnode1 -c maxtablesPerVnode -v 5 +system sh/exec.sh -n dnode1 -s start +sleep 100 +sql connect + +$dbPrefix = sav_db +$tbPrefix = sav_tb +$stbPrefix = sav_stb +$tbNum = 20 +$rowNum = 10 +$totalNum = $tbNum * $rowNum +$ts0 = 1537146000000 +$delta = 600000 +print ========== alter.sim +$i = 0 +$db = $dbPrefix +$stb = $stbPrefix + +sql drop database if exists $db +sql create database $db +sql use $db +print ====== create tables +sql create table $stb (ts timestamp, c1 int, c2 bigint, c3 float, c4 double, c5 smallint, c6 tinyint, c7 bool, c8 binary(10), c9 nchar(10)) tags(t1 int, t2 int) + +$i = 0 +$ts = $ts0 +while $i < $tbNum + $tb = $tbPrefix . $i + sql create table $tb using $stb tags( $i , 0 ) + $i = $i + 1 +endw + +print ====== table created + +#### select distinct tag +sql select distinct t1 from $stb +if $rows != $tbNum then + return -1 +endi + +#### select distinct tag +sql select distinct t2 from $stb +if $rows != 1 then + print $rows + return -1 +endi + +#### unsupport sql +sql_error select distinct t1, t2 from &stb + +sql drop database $db +sql show databases +if $rows != 0 then + return -1 +endi + +system sh/exec.sh -n dnode1 -s stop -x SIGINT diff --git a/tests/script/jenkins/basic.txt b/tests/script/jenkins/basic.txt index 90d01b7215cc559a3c543c5b46c80e1518a3acdb..b5f608f3d33da7a34c9eb3b62457fe3a6eebdb70 100644 --- a/tests/script/jenkins/basic.txt +++ b/tests/script/jenkins/basic.txt @@ -159,6 +159,7 @@ cd ../../../debug; make ./test.sh -f general/parser/union.sim ./test.sh -f general/parser/topbot.sim ./test.sh -f general/parser/function.sim +./test.sh -f general/parser/select_distinct_tag.sim ./test.sh -f general/stable/disk.sim ./test.sh -f general/stable/dnode3.sim