diff --git a/Jenkinsfile2 b/Jenkinsfile2 index 6549f714a1cb13877b751a8e948e24691fbf45f0..c270b6c4c06573880c639333ebcae803ded1d2e6 100644 --- a/Jenkinsfile2 +++ b/Jenkinsfile2 @@ -240,12 +240,12 @@ def pre_test_win(){ } bat ''' cd %WIN_INTERNAL_ROOT% - git pull + git pull origin ''' + env.CHANGE_TARGET + ''' ''' bat ''' cd %WIN_COMMUNITY_ROOT% git remote prune origin - git pull + git pull origin ''' + env.CHANGE_TARGET + ''' ''' bat ''' cd %WIN_INTERNAL_ROOT% diff --git a/docs/examples/java/src/main/java/com/taos/example/highvolume/MockDataSource.java b/docs/examples/java/src/main/java/com/taos/example/highvolume/MockDataSource.java index 6fe83f002ebcb9d82e026e9a32886fd22bfefbe9..f0ebc53b4b9a588ac4a23461553dd5c9f1a9f00b 100644 --- a/docs/examples/java/src/main/java/com/taos/example/highvolume/MockDataSource.java +++ b/docs/examples/java/src/main/java/com/taos/example/highvolume/MockDataSource.java @@ -16,7 +16,7 @@ class MockDataSource implements Iterator { private int currentTbId = -1; // mock values - String[] location = {"LosAngeles", "SanDiego", "Hollywood", "Compton", "San Francisco"}; + String[] location = {"California.LosAngeles", "California.SanDiego", "California.SanJose", "California.Campbell", "California.SanFrancisco"}; float[] current = {8.8f, 10.7f, 9.9f, 8.9f, 9.4f}; int[] voltage = {119, 116, 111, 113, 118}; float[] phase = {0.32f, 0.34f, 0.33f, 0.329f, 0.141f}; @@ -50,4 +50,4 @@ class MockDataSource implements Iterator { return sb.toString(); } -} \ No newline at end of file +} diff --git a/docs/examples/python/highvolume_faster_queue.py b/docs/examples/python/highvolume_faster_queue.py index 14aebc67eee5a0701081f2f5da605184568c3a89..171fbfa362fa3cdda75484f62e5509c358a2ac98 100644 --- a/docs/examples/python/highvolume_faster_queue.py +++ b/docs/examples/python/highvolume_faster_queue.py @@ -42,7 +42,7 @@ def get_connection(): # ANCHOR: MockDataSource class MockDataSource: - location = ["LosAngeles", "SanDiego", "Hollywood", "Compton", "San Francisco"] + location = ["California.LosAngeles", "California.SanDiego", "California.SanJose", "California.Campbell", "California.SanFrancisco"] current = [8.8, 10.7, 9.9, 8.9, 9.4] voltage = [119, 116, 111, 113, 118] phase = [0.32, 0.34, 0.33, 0.329, 0.141] diff --git a/docs/examples/python/mockdatasource.py b/docs/examples/python/mockdatasource.py index 852860aec0adc8f9b043c9dcd5deb0bf00239201..1c516a800e007934f8e6815f82024a53fea70073 100644 --- a/docs/examples/python/mockdatasource.py +++ b/docs/examples/python/mockdatasource.py @@ -3,11 +3,11 @@ import time class MockDataSource: samples = [ - "8.8,119,0.32,LosAngeles,0", - "10.7,116,0.34,SanDiego,1", - "9.9,111,0.33,Hollywood,2", - "8.9,113,0.329,Compton,3", - "9.4,118,0.141,San Francisco,4" + "8.8,119,0.32,California.LosAngeles,0", + "10.7,116,0.34,California.SanDiego,1", + "9.9,111,0.33,California.SanJose,2", + "8.9,113,0.329,California.Campbell,3", + "9.4,118,0.141,California.SanFrancisco,4" ] def __init__(self, tb_name_prefix, table_count): diff --git a/docs/examples/rust/nativeexample/Cargo.toml b/docs/examples/rust/nativeexample/Cargo.toml index 64fd10a3e915a39c321b56b6f38be51417d8d18e..8365fc0c3e343a0fb95f60d9a781d3cf13c7c8b4 100644 --- a/docs/examples/rust/nativeexample/Cargo.toml +++ b/docs/examples/rust/nativeexample/Cargo.toml @@ -6,5 +6,5 @@ edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] libtaos = { version = "0.4.3" } -tokio = { version = "*", features = ["rt", "macros", "rt-multi-thread"] } -bstr = { version = "*" } +tokio = { version = "1", features = ["rt", "macros", "rt-multi-thread"] } +bstr = { version = "0.2" } diff --git a/docs/zh/05-get-started/index.md b/docs/zh/05-get-started/index.md index 272a231ed714305ce27525229333f8049e1ff450..145e34a01a7f794088d7b0b33556bb99ec3605d6 100644 --- a/docs/zh/05-get-started/index.md +++ b/docs/zh/05-get-started/index.md @@ -132,7 +132,7 @@ Query OK, 2 row(s) in set (0.003128s) taosBenchmark ``` -该命令将在数据库 test 下面自动创建一张超级表 meters,该超级表下有 1 万张表,表名为 "d0" 到 "d9999",每张表有 1 万条记录,每条记录有 (ts, current, voltage, phase) 四个字段,时间戳从 "2017-07-14 10:40:00 000" 到 "2017-07-14 10:40:09 999",每张表带有标签 location 和 groupId,groupId 被设置为 1 到 10, location 被设置为 "San Francisco" 或者 "Los Angeles"等城市名称。 +该命令将在数据库 test 下面自动创建一张超级表 meters,该超级表下有 1 万张表,表名为 "d0" 到 "d9999",每张表有 1 万条记录,每条记录有 (ts, current, voltage, phase) 四个字段,时间戳从 "2017-07-14 10:40:00 000" 到 "2017-07-14 10:40:09 999",每张表带有标签 location 和 groupId,groupId 被设置为 1 到 10, location 被设置为 "California.SanFrancisco" 或者 "California.LosAngeles"等城市名称。 这条命令很快完成 1 亿条记录的插入。具体时间取决于硬件性能,即使在一台普通的 PC 服务器往往也仅需十几秒。 @@ -154,10 +154,10 @@ taos> select count(*) from test.meters; taos> select avg(current), max(voltage), min(phase) from test.meters; ``` -查询 location="San Francisco" 的记录总条数: +查询 location="California.SanFrancisco" 的记录总条数: ```sql -taos> select count(*) from test.meters where location="San Francisco"; +taos> select count(*) from test.meters where location="California.SanFrancisco"; ``` 查询 groupId=10 的所有记录的平均值、最大值、最小值等: diff --git a/src/client/inc/tsclient.h b/src/client/inc/tsclient.h index 3c0a1a6a00e01d56050a0db8c5b45cf9734c398a..9062d6368472fbebf2a38afbbbf8e07e7a15ebf0 100644 --- a/src/client/inc/tsclient.h +++ b/src/client/inc/tsclient.h @@ -336,6 +336,7 @@ typedef struct STscObj { char user[TSDB_USER_LEN]; char pass[TSDB_PASS_LEN]; char acctId[TSDB_ACCT_ID_LEN]; + char tags[TSDB_TAGS_LEN]; char db[TSDB_ACCT_ID_LEN + TSDB_DB_NAME_LEN]; char sversion[TSDB_VERSION_LEN]; char clusterId[TSDB_CLUSTER_ID_LEN]; diff --git a/src/client/src/tscAsync.c b/src/client/src/tscAsync.c index 9049fb3a97d62385c4d3494b0063652924587074..f2630165f21f5e92f5e82f8b2c45f3321d97f8d6 100644 --- a/src/client/src/tscAsync.c +++ b/src/client/src/tscAsync.c @@ -37,6 +37,320 @@ static void tscAsyncQueryRowsForNextVnode(void *param, TAOS_RES *tres, int numOf */ static void tscAsyncFetchRowsProxy(void *param, TAOS_RES *tres, int numOfRows); +// like select * from st1 , st2 where ... format +static inline int32_t likeBlanksCommaBlans(char * str) { + char *p = str; + int32_t cnt1 = 0; // ' ' count + int32_t cnt2 = 0; // ',' count + + while (*p != 0) { + if(*p == ' ') + cnt1++; + else if(*p == ',') + cnt2++; + else + return cnt2 == 0 ? 0 : cnt1 + cnt2; + p++; + } + + return 0; +} + + +// return tbname start , put tbname end to args pe +static char *searchTBName(char *from_end, char **pend) { + char *p = from_end; + // remove pre blanks + while(*p == ' ') { + ++p; + } + char *tbname = p; + + if(*p == 0) + return NULL; + + // goto next blank + while(1) { + p++; + + if(*p == ' ') { + // if following not have , this is end + + // format like select * from stb1 , stb2 , stb3 where ... + int32_t len = likeBlanksCommaBlans(p); + if(len > 0) { + p += len; + continue; + } + + // tbname is end + if(pend) + *pend = p; + + return tbname; + } else if(*p == ';' || *p == 0) { + // sql end flag '\0' or ';' end + if(pend) + *pend = p; + + return tbname; + } + } + + return NULL; +} + +// return names min pointer +static inline char *searchEndPart(char *tbname_end) { + char* names[] = { + " group ", + " order ", + " interval(", + " interval (", + " session(", + " session (", + " state_window(", + " state_window (", + " slimit ", + " slimit(", + " limit ", + " limit(", + " sliding ", + " fill(", + " fill (" + " >>", + ";" + }; + + int32_t count = sizeof(names)/sizeof(char *); + char * p = NULL; + for(int32_t i = 0; i < count; i++) { + char * p1 = strstr(tbname_end, names[i]); + if (p1) { + if (p == NULL || p1 < p) + p = p1; + } + } + + if(p == NULL) { + // move string end + p = tbname_end + strlen(tbname_end); + } + + return p; +} + +// get brackets context and set context to pend +static inline char *bracketsString(char *select, char **pend){ + char *p = select; + int32_t cnt = 0; + while (*p) { + if(*p == '(') { + // left bracket + cnt++; + } else if(*p == ')') { + // right bracket + cnt--; + } + + if(cnt < 0) { + // this is end + if(pend) + *pend = p; + // copy str to new + int len = p - 1 - select; + if(len == 0) + return NULL; + len += 1; // string end + char *str = (char *)malloc(len); + strncpy(str, select, len); + str[len] = 0; + + return str; + } + ++p; + } + + return NULL; +} + +// +// return new malloc buffer, NULL is need not insert or failed tags example is 'tags=3' +// sql part : +// select * from st where age=1 order by ts; +// ------------- --- ----------- ----------- +// select part tbname part condition part end part +// +static inline char *insertTags(char *sql, char *tags) { + char *p = sql; + // remove pre blanks + while(*p == ' ') { + ++p; + } + + // filter not query sql + if(strncmp(p, "select ", 7) != 0) { + return NULL; + } + + // specail check + char *from = strstr(p, " from "); + char *block = strstr(p, " _block_dist() "); + if (from == NULL || block != NULL) { + return NULL; + } + + char *select = strstr(p + 7, "select "); // sub select sql + char *union_all = strstr(p + 7, " union all "); + + // need append tags filter + int32_t bufLen = strlen(sql) + 1 + TSDB_TAGS_LEN; + char *buf = malloc(bufLen); + memset(buf, 0, bufLen); + + // case1 if have sub select, tags only append to sub select sql + if(select && union_all) { + // union all like select * from t1 union all select * from t2 union all select * from .... + size_t len = strlen(sql) + 10; + // part1 + char *part1 = (char *)malloc(len); + memset(part1, 0, len); + strncpy(part1, p, union_all - p); + char *p1 = insertTags(part1, tags); + free(part1); + if(p1 == NULL) { + free(buf); + return NULL; + } + + // part2 + char *part2 = union_all + sizeof(" union all ") - 1; + char *p2 = insertTags(part2, tags); + if(p2 == NULL) { + free(buf); + free(p1); + return NULL; + } + + // combine p1 + union all + p2 + len = strlen(p1) + strlen(p2) + 32; + char *all = (char *)malloc(len); + strcpy(all, p1); + strcat(all, " union all "); + strcat(all, p2); + + free(p1); + free(p2); + free(buf); + + return all; + } + else if(select) { + char *part1_end = select - 1; + char *part2 = NULL; + char *part3_start = 0; + char *sub_sql = bracketsString(select, &part3_start); + if (sub_sql == NULL) { + // unknown format, can not insert tags + tscError("TAGS found sub select sql but can not parse brackets format. select=%s sql=%s", select, sql); + free(buf); + return NULL; + } + + // nest call + part2 = insertTags(sub_sql, tags); + free(sub_sql); + if (part2 == NULL) { + // unknown format, can not insert tags + tscError("TAGS insertTags sub select sql failed. subsql=%s sql=%s", sub_sql, sql); + free(buf); + return NULL; + } + + // new string is part1 + part2 + part 3 + strncpy(buf, p, part1_end - p + 1); + strcat(buf, part2); + strcat(buf, part3_start); + + // return ok 1 + // like select * from (select * from st where age>1) where age == 2; + // after-> select * from (select * from st where (tags=3) and (age>1) ) where age == 2; + return buf; + } + + char *tbname_end = NULL; + char *tbname = searchTBName(from + sizeof(" from ") - 1, &tbname_end); + if(tbname == NULL || tbname_end == NULL) { + // unexpect string format + free(buf); + return NULL; + } + + // condition part + char *where = strstr(tbname_end, " where "); + char *end_part = searchEndPart(tbname_end); + if(end_part == NULL) { + // invalid sql + free(buf); + return NULL; + } + + // case2 no condition part + if(where == NULL) { + strncpy(buf, p, end_part - p); + strcat(buf, " where "); + strcat(buf, tags); + strcat(buf, end_part); + + // return ok 2 + // like select * from st order by ts; + // after-> select * from st where tags=3 order by ts; + return buf; + } + + // case3 found condition part + char *cond_part = where + sizeof("where "); + strncpy(buf, p, cond_part - p); // where before part(include where ) + strcat(buf, "("); + int32_t cond_len = end_part - cond_part; + // cat cond part + strncat(buf, cond_part, cond_len); + strcat(buf, ") and ("); + // cat tags part + strcat(buf, tags); + strcat(buf, ")"); + // cat end part + strcat(buf, end_part); + + // return ok 3 + // like select * from st where age=1 order by ts; + // after-> select * from st where (age=1) and (tags=3) order by ts; + return buf; +} + +// if return true success, false is not append privilege sql +bool appendTagsFilter(SSqlObj* pSql) { + // valid tags + STscObj * pTscObj = pSql->pTscObj; + if(pTscObj->tags[0] == 0) { + tscDebug("TAGS 0x%" PRIx64 " tags empty. user=%s", pSql->self, pTscObj->user); + return false; + } + + char * p = insertTags(pSql->sqlstr, pTscObj->tags); + if(p == NULL) { + return false; + } + + // replace new + char * old = pSql->sqlstr; + pSql->sqlstr = p; + tscDebug("TAGS 0x%" PRIx64 " replace sqlstr ok. old=%s new=%s tags=%s", pSql->self, old, p, pTscObj->tags); + free(old); + + return true; +} + void doAsyncQuery(STscObj* pObj, SSqlObj* pSql, __async_cb_func_t fp, void* param, const char* sqlstr, size_t sqlLen) { SSqlCmd* pCmd = &pSql->cmd; @@ -63,6 +377,8 @@ void doAsyncQuery(STscObj* pObj, SSqlObj* pSql, __async_cb_func_t fp, void* para strntolower(pSql->sqlstr, sqlstr, (int32_t)sqlLen); + appendTagsFilter(pSql); + tscDebugL("0x%"PRIx64" SQL: %s", pSql->self, pSql->sqlstr); pCmd->resColumnId = TSDB_RES_COL_ID; diff --git a/src/client/src/tscParseLineProtocol.c b/src/client/src/tscParseLineProtocol.c index a5673378f5646479ab53d638e5ff74dee9a4c879..559a488b8a6c2e0828c76688df07fa2093392284 100644 --- a/src/client/src/tscParseLineProtocol.c +++ b/src/client/src/tscParseLineProtocol.c @@ -97,9 +97,9 @@ static int32_t getFieldBytesFromSmlKv(TAOS_SML_KV* kv, int32_t* bytes, uint64_t // } // free(ucs); // *bytes = bytesNeeded + VARSTR_HEADER_SIZE; - *bytes = kv->length * TSDB_NCHAR_SIZE + VARSTR_HEADER_SIZE; + *bytes = (kv->length == 0 ? 1 : kv->length) * TSDB_NCHAR_SIZE + VARSTR_HEADER_SIZE; } else if (kv->type == TSDB_DATA_TYPE_BINARY) { - *bytes = kv->length + VARSTR_HEADER_SIZE; + *bytes = (kv->length == 0 ? 1 : kv->length) + VARSTR_HEADER_SIZE; } } return 0; @@ -2608,7 +2608,7 @@ int32_t tscParseLine(const char* sql, TAOS_SML_DATA_POINT* smlData, SSmlLinesInf return ret; } tscDebug("SML:0x%"PRIx64" Parse fields finished, num of fields:%d", info->id, smlData->fieldNum); - if (smlData->fieldNum == 0) { + if (smlData->fieldNum <= 1) { tscDebug("SML:0x%"PRIx64" Parse fields error, no field in line", info->id); taosHashCleanup(keyHashTable); return TSDB_CODE_TSC_LINE_SYNTAX_ERROR; diff --git a/src/client/src/tscPrepare.c b/src/client/src/tscPrepare.c index 665efa4c6dbca0437540ee1dd9875267bc2d8b72..8e4c417fbfe759bc383191b9d7a9b49f41978435 100644 --- a/src/client/src/tscPrepare.c +++ b/src/client/src/tscPrepare.c @@ -1261,8 +1261,6 @@ static void insertBatchClean(STscStmt* pStmt) { taosHashClear(pCmd->insertParam.pTableBlockHashList); tscFreeSqlResult(pSql); tscFreeSubobj(pSql); - tfree(pSql->pSubs); - pSql->subState.numOfSub = 0; } static int insertBatchStmtExecute(STscStmt* pStmt) { diff --git a/src/client/src/tscSQLParser.c b/src/client/src/tscSQLParser.c index 193676cd93303f035cda24a2d944e85fbff91ee1..17c70125eebb2ef4c2f7a4c62d9ff2e022b5889c 100644 --- a/src/client/src/tscSQLParser.c +++ b/src/client/src/tscSQLParser.c @@ -862,6 +862,7 @@ int32_t tscValidateSqlInfo(SSqlObj* pSql, struct SSqlInfo* pInfo) { const char* msg3 = "name too long"; const char* msg5 = "invalid user rights"; const char* msg7 = "not support options"; + const char* msg8 = "tags filter length must over 3 bytes."; pCmd->command = pInfo->type; @@ -900,7 +901,11 @@ int32_t tscValidateSqlInfo(SSqlObj* pSql, struct SSqlInfo* pInfo) { } else { return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg5); } - } else { + } else if (pUser->type == TSDB_ALTER_USER_TAGS) { + SStrToken* pTags = &pUser->tags; + if(pTags->n < 4) + return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg8); + } else { return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg7); } } @@ -10471,6 +10476,7 @@ int32_t validateSqlNode(SSqlObj* pSql, SSqlNode* pSqlNode, SQueryInfo* pQueryInf const char* msg7 = "derivative/twa/rate/irate/diff/tail/stateCount/stateDuration requires timestamp column exists in subquery"; const char* msg8 = "condition missing for join query"; const char* msg9 = "not support 3 level select"; + const char* msg10 = "limit user forbid query normal or child table, you can query from stable."; int32_t code = TSDB_CODE_SUCCESS; SSqlCmd* pCmd = &pSql->cmd; @@ -10655,6 +10661,11 @@ int32_t validateSqlNode(SSqlObj* pSql, SSqlNode* pSqlNode, SQueryInfo* pQueryInf bool isSTable = UTIL_TABLE_IS_SUPER_TABLE(pTableMetaInfo); + // if have tags, only support query on super table + if( !isSTable && pSql->pTscObj->tags[0] !=0) { + return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg10); + } + int32_t type = isSTable? TSDB_QUERY_TYPE_STABLE_QUERY:TSDB_QUERY_TYPE_TABLE_QUERY; TSDB_QUERY_SET_TYPE(pQueryInfo->type, type); diff --git a/src/client/src/tscServer.c b/src/client/src/tscServer.c index 92a6f6e149306a7449c823311aaa92061974d39d..2818d1014424c442454d4664859d3d90ab58ebdd 100644 --- a/src/client/src/tscServer.c +++ b/src/client/src/tscServer.c @@ -330,7 +330,7 @@ void checkBrokenQueries(STscObj *pTscObj) { SSqlObj *pSql = pTscObj->sqlList; while (pSql) { // avoid sqlobj may not be correctly removed from sql list - if (pSql->sqlstr == NULL) { + if (pSql->sqlstr == NULL || pSql->signature != pSql) { pSql = pSql->next; continue; } @@ -1475,11 +1475,15 @@ int32_t tscBuildUserMsg(SSqlObj *pSql, SSqlInfo *pInfo) { pAlterMsg->privilege = (char)pCmd->count; } else if (pUser->type == TSDB_ALTER_USER_PASSWD) { strncpy(pAlterMsg->pass, pUser->passwd.z, pUser->passwd.n); + } else if (pUser->type == TSDB_ALTER_USER_TAGS) { + // copy tags + strncpy(pAlterMsg->tags, pUser->tags.z, pUser->tags.n); } else { // create user password info strncpy(pAlterMsg->pass, pUser->passwd.z, pUser->passwd.n); + strncpy(pAlterMsg->tags, pUser->tags.z, pUser->tags.n); } - if (pUser->type == TSDB_ALTER_USER_PASSWD || pUser->type == TSDB_ALTER_USER_PRIVILEGES) { + if (pUser->type == TSDB_ALTER_USER_PASSWD || pUser->type == TSDB_ALTER_USER_PRIVILEGES || pUser->type == TSDB_ALTER_USER_TAGS) { pCmd->msgType = TSDB_MSG_TYPE_CM_ALTER_USER; } else { pCmd->msgType = TSDB_MSG_TYPE_CM_CREATE_USER; @@ -2866,7 +2870,11 @@ int tscProcessConnectRsp(SSqlObj *pSql) { pObj->writeAuth = pConnect->writeAuth; pObj->superAuth = pConnect->superAuth; pObj->connId = htonl(pConnect->connId); - tstrncpy(pObj->clusterId, pConnect->clusterId, sizeof(pObj->clusterId)); + tstrncpy(pObj->clusterId, pConnect->clusterId, sizeof(pObj->clusterId)); + if (pConnect->tags[0] != 0) { + strcpy(pObj->tags, pConnect->tags); + tscInfo("TAGS client received . user=%s tags=%s", pObj->user, pObj->tags); + } createHbObj(pObj); @@ -3392,7 +3400,6 @@ int tscRenewTableMeta(SSqlObj *pSql) { pthread_mutex_lock(&rootSql->mtxSubs); tscFreeSubobj(rootSql); pthread_mutex_unlock(&rootSql->mtxSubs); - tfree(rootSql->pSubs); tscResetSqlCmd(&rootSql->cmd, true, rootSql->self); code = getMultiTableMetaFromMnode(rootSql, pNameList, vgroupList, NULL, tscTableMetaCallBack, true); diff --git a/src/client/src/tscStream.c b/src/client/src/tscStream.c index 65d00cd653edb5565c5c01e25227f74b5dfd860c..d5cce9d756d0ec138f10cf4badd374c30fa0b364 100644 --- a/src/client/src/tscStream.c +++ b/src/client/src/tscStream.c @@ -232,8 +232,6 @@ static void tscProcessStreamQueryCallback(void *param, TAOS_RES *tres, int numOf tscFreeSqlResult(pStream->pSql); tscFreeSubobj(pStream->pSql); - tfree(pStream->pSql->pSubs); - pStream->pSql->subState.numOfSub = 0; pTableMetaInfo->vgroupList = tscVgroupInfoClear(pTableMetaInfo->vgroupList); tscSetRetryTimer(pStream, pStream->pSql, retryDelay); @@ -610,8 +608,6 @@ static void tscProcessStreamRetrieveResult(void *param, TAOS_RES *res, int numOf tscFreeSqlResult(pSql); tscFreeSubobj(pSql); - tfree(pSql->pSubs); - pSql->subState.numOfSub = 0; pTableMetaInfo->vgroupList = tscVgroupInfoClear(pTableMetaInfo->vgroupList); tscSetNextLaunchTimer(pStream, pSql); } diff --git a/src/client/src/tscSubquery.c b/src/client/src/tscSubquery.c index 1805c22a9d77181fd5d5e2b3f31a25186741ac74..a8c2eea195992c4a6e66cbfd49bf9e36f2cf4c8c 100644 --- a/src/client/src/tscSubquery.c +++ b/src/client/src/tscSubquery.c @@ -695,6 +695,12 @@ static int32_t tscLaunchRealSubqueries(SSqlObj* pSql) { } void freeJoinSubqueryObj(SSqlObj* pSql) { + if (pSql->subState.numOfSub == 0) { + return; + } + + pthread_mutex_lock(&pSql->subState.mutex); + for (int32_t i = 0; i < pSql->subState.numOfSub; ++i) { SSqlObj* pSub = pSql->pSubs[i]; if (pSub == NULL) { @@ -707,13 +713,13 @@ void freeJoinSubqueryObj(SSqlObj* pSql) { taos_free_result(pSub); pSql->pSubs[i] = NULL; } - - if (pSql->subState.states) { - pthread_mutex_destroy(&pSql->subState.mutex); - } tfree(pSql->subState.states); pSql->subState.numOfSub = 0; + + pthread_mutex_unlock(&pSql->subState.mutex); + + pthread_mutex_destroy(&pSql->subState.mutex); } static int32_t quitAllSubquery(SSqlObj* pSqlSub, SSqlObj* pSqlObj, SJoinSupporter* pSupporter) { @@ -901,7 +907,6 @@ bool tscReparseSql(SSqlObj *sql, int32_t code){ } tscFreeSubobj(sql); - tfree(sql->pSubs); sql->res.code = TSDB_CODE_SUCCESS; sql->retry++; @@ -2180,7 +2185,6 @@ void tscHandleMasterJoinQuery(SSqlObj* pSql) { assert((pQueryInfo->type & TSDB_QUERY_TYPE_SUBQUERY) == 0); int32_t code = TSDB_CODE_SUCCESS; - pSql->subState.numOfSub = pQueryInfo->numOfTables; if (pSql->subState.states == NULL) { pSql->subState.states = calloc(pSql->subState.numOfSub, sizeof(*pSql->subState.states)); @@ -2192,6 +2196,8 @@ void tscHandleMasterJoinQuery(SSqlObj* pSql) { pthread_mutex_init(&pSql->subState.mutex, NULL); } + pSql->subState.numOfSub = pQueryInfo->numOfTables; + memset(pSql->subState.states, 0, sizeof(*pSql->subState.states) * pSql->subState.numOfSub); tscDebug("0x%"PRIx64" reset all sub states to 0, start subquery, total:%d", pSql->self, pQueryInfo->numOfTables); @@ -2251,7 +2257,12 @@ void tscHandleMasterJoinQuery(SSqlObj* pSql) { } void doCleanupSubqueries(SSqlObj *pSql, int32_t numOfSubs) { - assert(numOfSubs <= pSql->subState.numOfSub && numOfSubs >= 0); + pthread_mutex_lock(&pSql->subState.mutex); + if (numOfSubs > pSql->subState.numOfSub || numOfSubs <= 0 || pSql->subState.numOfSub <= 0) { + pthread_mutex_unlock(&pSql->subState.mutex); + return; + } + for(int32_t i = 0; i < numOfSubs; ++i) { SSqlObj* pSub = pSql->pSubs[i]; @@ -2261,6 +2272,7 @@ void doCleanupSubqueries(SSqlObj *pSql, int32_t numOfSubs) { taos_free_result(pSub); } + pthread_mutex_unlock(&pSql->subState.mutex); } void tscLockByThread(int64_t *lockedBy) { @@ -2365,8 +2377,10 @@ void tscFirstRoundRetrieveCallback(void* param, TAOS_RES* tres, int numOfRows) { if (code != TSDB_CODE_SUCCESS) { tscFreeFirstRoundSup(¶m); taos_free_result(pSql); + pthread_mutex_lock(&pParent->subState.mutex); pParent->subState.numOfSub = 0; tfree(pParent->pSubs); + pthread_mutex_unlock(&pParent->subState.mutex); pParent->res.code = code; tscAsyncResultOnError(pParent); return; @@ -2469,9 +2483,11 @@ void tscFirstRoundRetrieveCallback(void* param, TAOS_RES* tres, int numOfRows) { tscFreeFirstRoundSup(¶m); taos_free_result(pSql); + pthread_mutex_lock(&pParent->subState.mutex); pParent->subState.numOfSub = 0; tfree(pParent->pSubs); - + pthread_mutex_unlock(&pParent->subState.mutex); + if (resRows == 0) { pParent->cmd.command = TSDB_SQL_RETRIEVE_EMPTY_RESULT; (*pParent->fp)(pParent->param, pParent, 0); @@ -2493,8 +2509,10 @@ void tscFirstRoundCallback(void* param, TAOS_RES* tres, int code) { tscFreeFirstRoundSup(¶m); taos_free_result(pSql); + pthread_mutex_lock(&parent->subState.mutex); parent->subState.numOfSub = 0; tfree(parent->pSubs); + pthread_mutex_unlock(&parent->subState.mutex); parent->res.code = c; tscAsyncResultOnError(parent); return; @@ -3014,7 +3032,6 @@ void tscHandleSubqueryError(SRetrieveSupport *trsupport, SSqlObj *pSql, int numO } tscFreeSubobj(userSql); - tfree(userSql->pSubs); userSql->res.code = TSDB_CODE_SUCCESS; userSql->retry++; @@ -3382,7 +3399,9 @@ static bool needRetryInsert(SSqlObj* pParentObj, int32_t numOfSub) { } static void doFreeInsertSupporter(SSqlObj* pSqlObj) { - assert(pSqlObj != NULL && pSqlObj->subState.numOfSub > 0); + if (pSqlObj == NULL || pSqlObj->subState.numOfSub <= 0) { + return; + } for(int32_t i = 0; i < pSqlObj->subState.numOfSub; ++i) { SSqlObj* pSql = pSqlObj->pSubs[i]; diff --git a/src/client/src/tscUtil.c b/src/client/src/tscUtil.c index a841945baced4d285acf1a460e8efc64f59cc6f1..b0f9e67349b7b693bee6048c4e1797fcd10d10c9 100644 --- a/src/client/src/tscUtil.c +++ b/src/client/src/tscUtil.c @@ -1682,6 +1682,8 @@ void tscFreeSubobj(SSqlObj* pSql) { return; } + pthread_mutex_lock(&pSql->subState.mutex); + tscDebug("0x%"PRIx64" start to free sub SqlObj, numOfSub:%d", pSql->self, pSql->subState.numOfSub); for(int32_t i = 0; i < pSql->subState.numOfSub; ++i) { @@ -1695,12 +1697,14 @@ void tscFreeSubobj(SSqlObj* pSql) { pSql->pSubs[i] = NULL; } - if (pSql->subState.states) { - pthread_mutex_destroy(&pSql->subState.mutex); - } - tfree(pSql->subState.states); pSql->subState.numOfSub = 0; + + tfree(pSql->pSubs); + + pthread_mutex_unlock(&pSql->subState.mutex); + + pthread_mutex_destroy(&pSql->subState.mutex); } /** @@ -1768,9 +1772,6 @@ void tscFreeSqlObj(SSqlObj* pSql) { pSql->fp = NULL; tfree(pSql->sqlstr); tfree(pSql->pBuf); - - tfree(pSql->pSubs); - pSql->subState.numOfSub = 0; pSql->self = 0; tscFreeSqlResult(pSql); @@ -4268,10 +4269,7 @@ static void tscSubqueryCompleteCallback(void* param, TAOS_RES* tres, int code) { } tscFreeSubobj(pParentSql); - tfree(pParentSql->pSubs); - tscFreeSubobj(rootObj); - tfree(rootObj->pSubs); rootObj->res.code = TSDB_CODE_SUCCESS; rootObj->retry++; @@ -4314,19 +4312,9 @@ static void tscSubqueryCompleteCallback(void* param, TAOS_RES* tres, int code) { int32_t doInitSubState(SSqlObj* pSql, int32_t numOfSubqueries) { //bug fix. Above doInitSubState level, the loop invocation with the same SSqlObj will be fail. //assert(pSql->subState.numOfSub == 0 && pSql->pSubs == NULL && pSql->subState.states == NULL); - if(pSql->pSubs) { - free(pSql->pSubs); - pSql->pSubs = NULL; - } - - if(pSql->subState.states) { - free(pSql->subState.states); - pSql->subState.states = NULL; - } - - pSql->subState.numOfSub = numOfSubqueries; + tscFreeSubobj(pSql); - pSql->pSubs = calloc(pSql->subState.numOfSub, POINTER_BYTES); + pSql->pSubs = calloc(numOfSubqueries, POINTER_BYTES); pSql->subState.states = calloc(pSql->subState.numOfSub, sizeof(int8_t)); int32_t code = pthread_mutex_init(&pSql->subState.mutex, NULL); @@ -4334,6 +4322,8 @@ int32_t doInitSubState(SSqlObj* pSql, int32_t numOfSubqueries) { return TSDB_CODE_TSC_OUT_OF_MEMORY; } + pSql->subState.numOfSub = numOfSubqueries; + return TSDB_CODE_SUCCESS; } @@ -4439,6 +4429,7 @@ void executeQuery(SSqlObj* pSql, SQueryInfo* pQueryInfo) { return; _error: + for(int32_t i = 0; i < numOfInit; ++i) { SSqlObj* p = pSql->pSubs[i]; tscFreeSqlObj(p); @@ -4723,16 +4714,7 @@ void tscTryQueryNextClause(SSqlObj* pSql, __async_cb_func_t fp) { pRes->final = finalBk; pRes->numOfTotal = num; - pthread_mutex_lock(&pSql->subState.mutex); - for(int32_t i = 0; i < pSql->subState.numOfSub; ++i) { - taos_free_result(pSql->pSubs[i]); - } - - tfree(pSql->pSubs); - tfree(pSql->subState.states); - pSql->subState.numOfSub = 0; - pthread_mutex_unlock(&pSql->subState.mutex); - pthread_mutex_destroy(&pSql->subState.mutex); + tscFreeSubobj(pSql); pSql->fp = fp; diff --git a/src/inc/taosdef.h b/src/inc/taosdef.h index 5f9b8b8192a4e396d9254e67a90fe4910c5c3cc8..ade0c83ef76f167e6e0bd52d41b117a5e32a9b1d 100644 --- a/src/inc/taosdef.h +++ b/src/inc/taosdef.h @@ -89,6 +89,9 @@ extern const int32_t TYPE_BYTES[16]; #define TSDB_PASS_LEN 16 #define SHELL_MAX_PASSWORD_LEN 20 +// user set query tags max len +#define TSDB_TAGS_LEN 256 + #define TSDB_TRUE 1 #define TSDB_FALSE 0 #define TSDB_OK 0 diff --git a/src/inc/taosmsg.h b/src/inc/taosmsg.h index 280747afed543eaddf2ed657c6067f4aad31a321..f2aed524de4328236297aee1e85100c8825bb485 100644 --- a/src/inc/taosmsg.h +++ b/src/inc/taosmsg.h @@ -185,6 +185,7 @@ enum _mgmt_table { #define TSDB_ALTER_USER_PASSWD 0x1 #define TSDB_ALTER_USER_PRIVILEGES 0x2 +#define TSDB_ALTER_USER_TAGS 0x4 #define TSDB_KILL_MSG_LEN 30 @@ -362,6 +363,7 @@ typedef struct { char acctId[TSDB_ACCT_ID_LEN]; char serverVersion[TSDB_VERSION_LEN]; char clusterId[TSDB_CLUSTER_ID_LEN]; + char tags[TSDB_TAGS_LEN]; int8_t writeAuth; int8_t superAuth; int8_t reserved1; @@ -400,6 +402,7 @@ typedef struct { int8_t extend; char user[TSDB_USER_LEN]; char pass[TSDB_PASS_LEN]; + char tags[TSDB_TAGS_LEN]; int8_t privilege; int8_t flag; } SCreateUserMsg, SAlterUserMsg; diff --git a/src/inc/ttokendef.h b/src/inc/ttokendef.h index ce21a2c65adef9fbac772f2f7c3e3151e06bbcdc..cba93ba5836337f2e0089055e1e57309c23ce8b2 100644 --- a/src/inc/ttokendef.h +++ b/src/inc/ttokendef.h @@ -100,42 +100,42 @@ #define TK_ALTER 82 #define TK_PASS 83 #define TK_PRIVILEGE 84 -#define TK_LOCAL 85 -#define TK_COMPACT 86 -#define TK_LP 87 -#define TK_RP 88 -#define TK_IF 89 -#define TK_EXISTS 90 -#define TK_AS 91 -#define TK_OUTPUTTYPE 92 -#define TK_AGGREGATE 93 -#define TK_BUFSIZE 94 -#define TK_PPS 95 -#define TK_TSERIES 96 -#define TK_DBS 97 -#define TK_STORAGE 98 -#define TK_QTIME 99 -#define TK_CONNS 100 -#define TK_STATE 101 -#define TK_COMMA 102 -#define TK_KEEP 103 -#define TK_CACHE 104 -#define TK_REPLICA 105 -#define TK_QUORUM 106 -#define TK_DAYS 107 -#define TK_MINROWS 108 -#define TK_MAXROWS 109 -#define TK_BLOCKS 110 -#define TK_CTIME 111 -#define TK_WAL 112 -#define TK_FSYNC 113 -#define TK_COMP 114 -#define TK_PRECISION 115 -#define TK_UPDATE 116 -#define TK_CACHELAST 117 -#define TK_PARTITIONS 118 -#define TK_UNSIGNED 119 -#define TK_TAGS 120 +#define TK_TAGS 85 +#define TK_LOCAL 86 +#define TK_COMPACT 87 +#define TK_LP 88 +#define TK_RP 89 +#define TK_IF 90 +#define TK_EXISTS 91 +#define TK_AS 92 +#define TK_OUTPUTTYPE 93 +#define TK_AGGREGATE 94 +#define TK_BUFSIZE 95 +#define TK_PPS 96 +#define TK_TSERIES 97 +#define TK_DBS 98 +#define TK_STORAGE 99 +#define TK_QTIME 100 +#define TK_CONNS 101 +#define TK_STATE 102 +#define TK_COMMA 103 +#define TK_KEEP 104 +#define TK_CACHE 105 +#define TK_REPLICA 106 +#define TK_QUORUM 107 +#define TK_DAYS 108 +#define TK_MINROWS 109 +#define TK_MAXROWS 110 +#define TK_BLOCKS 111 +#define TK_CTIME 112 +#define TK_WAL 113 +#define TK_FSYNC 114 +#define TK_COMP 115 +#define TK_PRECISION 116 +#define TK_UPDATE 117 +#define TK_CACHELAST 118 +#define TK_PARTITIONS 119 +#define TK_UNSIGNED 120 #define TK_USING 121 #define TK_TO 122 #define TK_SPLIT 123 @@ -222,6 +222,7 @@ #define TK_VALUES 204 #define TK_FILE 205 + #define TK_SPACE 300 #define TK_COMMENT 301 #define TK_ILLEGAL 302 diff --git a/src/kit/shell/src/shellAuto.c b/src/kit/shell/src/shellAuto.c index 8622b201a6fe6666476f0ac9916aebc169b78923..cff639f88546fdd80f7536e564fab8223f5d082b 100644 --- a/src/kit/shell/src/shellAuto.c +++ b/src/kit/shell/src/shellAuto.c @@ -74,6 +74,7 @@ SWords shellCommands[] = { {"alter local tmrDebugFlag 143;", 0, 0, NULL}, {"alter topic", 0, 0, NULL}, {"alter user pass", 0, 0, NULL}, + {"alter user tags", 0, 0, NULL}, {"alter user privilege read", 0, 0, NULL}, {"alter user privilege write", 0, 0, NULL}, {"create table using tags(", 0, 0, NULL}, @@ -82,7 +83,7 @@ SWords shellCommands[] = { {"create dnode ", 0, 0, NULL}, {"create topic", 0, 0, NULL}, {"create function ", 0, 0, NULL}, - {"create user pass", 0, 0, NULL}, + {"create user pass tags", 0, 0, NULL}, {"compact vnode in", 0, 0, NULL}, {"describe ", 0, 0, NULL}, #ifdef TD_ENTERPRISE @@ -124,7 +125,7 @@ SWords shellCommands[] = { {"show variables;", 0, 0, NULL}, {"show vgroups;", 0, 0, NULL}, {"insert into values(", 0, 0, NULL}, - {"insert into using tags(", 0, 0, NULL}, + {"insert into using tags( ) values(", 0, 0, NULL}, {"use ", 0, 0, NULL}, {"quit", 0, 0, NULL} }; @@ -359,7 +360,8 @@ void showHelp() { alter local resetlog; \n\ alter local DebugFlag 143; \n\ alter topic \n\ - alter user pass\n\ + alter user pass ;\n\ + alter user tags ;\n\ alter user privilege read ;\n\ alter user privilege write ;\n\ ----- C ----- \n\ @@ -370,6 +372,7 @@ void showHelp() { create topic \n\ create function \n\ create user pass ;\n\ + create user pass tags ;\n\ compact vnode in (vgid,vgid,vgid);\n\ ----- D ----- \n\ describe ;\n\ diff --git a/src/kit/taos-tools b/src/kit/taos-tools index 7d5c1c016d2022d152a6aaa38589f2fbaa0d25a4..e7270c90fd1888842a45d47700040d3f86ebaf5f 160000 --- a/src/kit/taos-tools +++ b/src/kit/taos-tools @@ -1 +1 @@ -Subproject commit 7d5c1c016d2022d152a6aaa38589f2fbaa0d25a4 +Subproject commit e7270c90fd1888842a45d47700040d3f86ebaf5f diff --git a/src/mnode/inc/mnodeDef.h b/src/mnode/inc/mnodeDef.h index 5acc8dd85eb7fe8cd3f4b17f47e06161e39a6dc4..4bbbbb7d86a55aa97ec61935157d914e5a08e973 100644 --- a/src/mnode/inc/mnodeDef.h +++ b/src/mnode/inc/mnodeDef.h @@ -202,6 +202,20 @@ typedef struct SDbObj { pthread_mutex_t mutex; } SDbObj; +// old tags +typedef struct SUserObjOld { + char user[TSDB_USER_LEN]; + char pass[TSDB_KEY_LEN]; + char acct[TSDB_USER_LEN]; + int64_t createdTime; + int8_t superAuth; + int8_t writeAuth; + int8_t reserved[10]; + int8_t updateEnd[4]; + int32_t refCount; + struct SAcctObj * pAcct; +} SUserObjOld; + typedef struct SUserObj { char user[TSDB_USER_LEN]; char pass[TSDB_KEY_LEN]; @@ -210,6 +224,7 @@ typedef struct SUserObj { int8_t superAuth; int8_t writeAuth; int8_t reserved[10]; + char tags[TSDB_TAGS_LEN]; int8_t updateEnd[4]; int32_t refCount; struct SAcctObj * pAcct; diff --git a/src/mnode/inc/mnodeUser.h b/src/mnode/inc/mnodeUser.h index b8f08051203e229e5fee17982ab5a47de20c41a9..9ced4f33beb66ff15ad8f675889eaf67c826fcbe 100644 --- a/src/mnode/inc/mnodeUser.h +++ b/src/mnode/inc/mnodeUser.h @@ -30,7 +30,7 @@ void mnodeIncUserRef(SUserObj *pUser); void mnodeDecUserRef(SUserObj *pUser); SUserObj *mnodeGetUserFromConn(void *pConn); char * mnodeGetUserFromMsg(void *pMnodeMsg); -int32_t mnodeCreateUser(SAcctObj *pAcct, char *name, char *pass, void *pMsg); +int32_t mnodeCreateUser(SAcctObj *pAcct, char *name, char *pass, char* tags, void *pMsg); void mnodeDropAllUsers(SAcctObj *pAcct); int32_t mnodeCompactUsers(); diff --git a/src/mnode/src/mnodeShow.c b/src/mnode/src/mnodeShow.c index 169cd10b7e0bda62eb75c38e8ec241e6b9a76c40..b64f5dc5ea4dd4677b0b5faa6118072a4d529a46 100644 --- a/src/mnode/src/mnodeShow.c +++ b/src/mnode/src/mnodeShow.c @@ -343,6 +343,9 @@ static int32_t mnodeProcessConnectMsg(SMnodeMsg *pMsg) { memcpy(pConnectRsp->serverVersion, version, TSDB_VERSION_LEN); pConnectRsp->writeAuth = pUser->writeAuth; pConnectRsp->superAuth = pUser->superAuth; + strcpy(pConnectRsp->tags, pUser->tags); + if(pUser->tags[0]) + mInfo("TAGS server response to client. user=%s tags=%s", pUser->user, pUser->tags); mnodeGetMnodeEpSetForShell(&pConnectRsp->epSet, false); diff --git a/src/mnode/src/mnodeUser.c b/src/mnode/src/mnodeUser.c index b3e3ba6cd9698b08aceb86841bd858a7c6f05220..6d6ccb933e414fd8d07c5282753685603a7e1be2 100644 --- a/src/mnode/src/mnodeUser.c +++ b/src/mnode/src/mnodeUser.c @@ -132,9 +132,9 @@ static int32_t mnodeUserActionRestored() { if (numOfRows <= 0 && dnodeIsFirstDeploy()) { mInfo("dnode first deploy, create root user"); SAcctObj *pAcct = mnodeGetAcct(TSDB_DEFAULT_USER); - mnodeCreateUser(pAcct, TSDB_DEFAULT_USER, TSDB_DEFAULT_PASS, NULL); - mnodeCreateUser(pAcct, "monitor", tsInternalPass, NULL); - mnodeCreateUser(pAcct, "_"TSDB_DEFAULT_USER, tsInternalPass, NULL); + mnodeCreateUser(pAcct, TSDB_DEFAULT_USER, TSDB_DEFAULT_PASS, NULL, NULL); + mnodeCreateUser(pAcct, "monitor", tsInternalPass, NULL, NULL); + mnodeCreateUser(pAcct, "_"TSDB_DEFAULT_USER, tsInternalPass, NULL, NULL); mnodeDecAcctRef(pAcct); } @@ -229,7 +229,7 @@ static int32_t mnodeUpdateUser(SUserObj *pUser, void *pMsg) { return code; } -int32_t mnodeCreateUser(SAcctObj *pAcct, char *name, char *pass, void *pMsg) { +int32_t mnodeCreateUser(SAcctObj *pAcct, char *name, char *pass, char *tags, void *pMsg) { int32_t code = acctCheck(pAcct, ACCT_GRANT_USER); if (code != TSDB_CODE_SUCCESS) { return code; @@ -259,6 +259,10 @@ int32_t mnodeCreateUser(SAcctObj *pAcct, char *name, char *pass, void *pMsg) { tstrncpy(pUser->user, name, TSDB_USER_LEN); taosEncryptPass((uint8_t*) pass, strlen(pass), pUser->pass); strcpy(pUser->acct, pAcct->user); + if (tags) { + strcpy(pUser->tags, tags); + } + pUser->createdTime = taosGetTimestampMs(); pUser->superAuth = 0; pUser->writeAuth = 1; @@ -336,6 +340,14 @@ static int32_t mnodeGetUserMeta(STableMetaMsg *pMeta, SShowObj *pShow, void *pCo pSchema[cols].bytes = htons(pShow->bytes[cols]); cols++; + // tags + pShow->bytes[cols] = TSDB_USER_LEN + VARSTR_HEADER_SIZE; + pSchema[cols].type = TSDB_DATA_TYPE_BINARY; + strcpy(pSchema[cols].name, "tags"); + pSchema[cols].bytes = htons(pShow->bytes[cols]); + cols++; + + pMeta->numOfColumns = htons(cols); strcpy(pMeta->tableFname, "show users"); pShow->numOfColumns = cols; @@ -417,6 +429,11 @@ static int32_t mnodeRetrieveUsers(SShowObj *pShow, char *data, int32_t rows, voi STR_WITH_MAXSIZE_TO_VARSTR(pWrite, pUser->acct, pShow->bytes[cols]); cols++; + // tags + pWrite = data + pShow->offset[cols] * rows + pShow->bytes[cols] * numOfRows; + STR_WITH_MAXSIZE_TO_VARSTR(pWrite, pUser->tags, pShow->bytes[cols]); + cols++; + numOfRows++; mnodeDecUserRef(pUser); } @@ -450,7 +467,7 @@ static int32_t mnodeProcessCreateUserMsg(SMnodeMsg *pMsg) { if (pOperUser->superAuth) { SCreateUserMsg *pCreate = pMsg->rpcMsg.pCont; - return mnodeCreateUser(pOperUser->pAcct, pCreate->user, pCreate->pass, pMsg); + return mnodeCreateUser(pOperUser->pAcct, pCreate->user, pCreate->pass, pCreate->tags, pMsg); } else { mError("user:%s, no rights to create user", pOperUser->user); return TSDB_CODE_MND_NO_RIGHTS; @@ -536,6 +553,36 @@ static int32_t mnodeProcessAlterUserMsg(SMnodeMsg *pMsg) { mError("user:%s, no rights to alter user", pOperUser->user); code = TSDB_CODE_MND_NO_RIGHTS; } + // ALTER TAGS + } else if ((pAlter->flag & TSDB_ALTER_USER_TAGS) != 0) { + // check has right + bool hasRight = false; + if (strcmp(pUser->user, TSDB_DEFAULT_USER) == 0) { + hasRight = false; + } else if (strcmp(pUser->user, pUser->acct) == 0) { + hasRight = false; + } else if (strcmp(pOperUser->user, TSDB_DEFAULT_USER) == 0) { + hasRight = true; + } else if (strcmp(pUser->user, pOperUser->user) == 0) { + hasRight = false; + } else if (pOperUser->superAuth) { + if (strcmp(pUser->user, TSDB_DEFAULT_USER) == 0) { + hasRight = false; + } else if (strcmp(pOperUser->acct, pUser->acct) != 0) { + hasRight = false; + } else { + hasRight = true; + } + } + + // set tags new values + if (hasRight) { + strcpy(pUser->tags, pAlter->tags); + code = mnodeUpdateUser(pUser, pMsg); + } else { + mError("user:%s, no rights to alter user tags", pOperUser->user); + code = TSDB_CODE_MND_NO_RIGHTS; + } } else { mError("user:%s, no rights to alter user", pOperUser->user); code = TSDB_CODE_MND_NO_RIGHTS; diff --git a/src/query/inc/qSqlparser.h b/src/query/inc/qSqlparser.h index 2a75d4d9923ef53d4b8f3eb5a91e8e3596ca1b08..84acd1d06007b4410f145be1c144e7facc3c8762 100644 --- a/src/query/inc/qSqlparser.h +++ b/src/query/inc/qSqlparser.h @@ -235,6 +235,7 @@ typedef struct SShowInfo { typedef struct SUserInfo { SStrToken user; SStrToken passwd; + SStrToken tags; // format like tag1,tag2,tag3 ... splite with ',' SStrToken privilege; int16_t type; } SUserInfo; @@ -358,9 +359,9 @@ void setShowOptions(SSqlInfo *pInfo, int32_t type, SStrToken* prefix, SStrToken* void setCreateDbInfo(SSqlInfo *pInfo, int32_t type, SStrToken *pToken, SCreateDbInfo *pDB, SStrToken *pIgExists); void setCreateAcctSql(SSqlInfo *pInfo, int32_t type, SStrToken *pName, SStrToken *pPwd, SCreateAcctInfo *pAcctInfo); -void setCreateUserSql(SSqlInfo *pInfo, SStrToken *pName, SStrToken *pPasswd); +void setCreateUserSql(SSqlInfo *pInfo, SStrToken *pName, SStrToken *pPasswd, SStrToken *pTags); void setKillSql(SSqlInfo *pInfo, int32_t type, SStrToken *ip); -void setAlterUserSql(SSqlInfo *pInfo, int16_t type, SStrToken *pName, SStrToken* pPwd, SStrToken *pPrivilege); +void setAlterUserSql(SSqlInfo *pInfo, int16_t type, SStrToken *pName, SStrToken* pPwd, SStrToken *pPrivilege, SStrToken *pTags); void setCompactVnodeSql(SSqlInfo *pInfo, int32_t type, SArray *pParam); diff --git a/src/query/inc/sql.y b/src/query/inc/sql.y index e55875f2706ef4b9794ce54c205e07907bc5d3f7..64b22009c34a13c973f3a24fd36e8d992d8d145c 100644 --- a/src/query/inc/sql.y +++ b/src/query/inc/sql.y @@ -161,8 +161,9 @@ cmd ::= DESC ids(X) cpxName(Y). { setDCLSqlElems(pInfo, TSDB_SQL_DESCRIBE_TABLE, 1, &X); } /////////////////////////////////THE ALTER STATEMENT//////////////////////////////////////// -cmd ::= ALTER USER ids(X) PASS ids(Y). { setAlterUserSql(pInfo, TSDB_ALTER_USER_PASSWD, &X, &Y, NULL); } -cmd ::= ALTER USER ids(X) PRIVILEGE ids(Y). { setAlterUserSql(pInfo, TSDB_ALTER_USER_PRIVILEGES, &X, NULL, &Y);} +cmd ::= ALTER USER ids(X) PASS ids(Y). { setAlterUserSql(pInfo, TSDB_ALTER_USER_PASSWD, &X, &Y, NULL, NULL);} +cmd ::= ALTER USER ids(X) PRIVILEGE ids(Y). { setAlterUserSql(pInfo, TSDB_ALTER_USER_PRIVILEGES, &X, NULL, &Y, NULL);} +cmd ::= ALTER USER ids(X) TAGS ids(Y). { setAlterUserSql(pInfo, TSDB_ALTER_USER_TAGS, &X, NULL, NULL, &Y);} cmd ::= ALTER DNODE ids(X) ids(Y). { setDCLSqlElems(pInfo, TSDB_SQL_CFG_DNODE, 2, &X, &Y); } 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); } @@ -201,7 +202,8 @@ cmd ::= CREATE DATABASE ifnotexists(Z) ids(X) db_optr(Y). { setCreateDbInfo(pIn cmd ::= CREATE TOPIC ifnotexists(Z) ids(X) topic_optr(Y). { setCreateDbInfo(pInfo, TSDB_SQL_CREATE_DB, &X, &Y, &Z);} cmd ::= CREATE FUNCTION ids(X) AS ids(Y) OUTPUTTYPE typename(Z) bufsize(B). { setCreateFuncInfo(pInfo, TSDB_SQL_CREATE_FUNCTION, &X, &Y, &Z, &B, 1);} cmd ::= CREATE AGGREGATE FUNCTION ids(X) AS ids(Y) OUTPUTTYPE typename(Z) bufsize(B). { setCreateFuncInfo(pInfo, TSDB_SQL_CREATE_FUNCTION, &X, &Y, &Z, &B, 2);} -cmd ::= CREATE USER ids(X) PASS ids(Y). { setCreateUserSql(pInfo, &X, &Y);} +cmd ::= CREATE USER ids(X) PASS ids(Y). { setCreateUserSql(pInfo, &X, &Y, NULL);} +cmd ::= CREATE USER ids(X) PASS ids(Y) TAGS ids(Z). { setCreateUserSql(pInfo, &X, &Y, &Z);} bufsize(Y) ::= . { Y.n = 0; } bufsize(Y) ::= BUFSIZE INTEGER(X). { Y = X; } diff --git a/src/query/src/qExecutor.c b/src/query/src/qExecutor.c index 6ba582138c2aecbad0c0dde95177b67a4a0d72fb..7ff2ff790fe5e1d98f147fb4e4f0e2ea7e13b43b 100644 --- a/src/query/src/qExecutor.c +++ b/src/query/src/qExecutor.c @@ -9946,7 +9946,7 @@ SQInfo* createQInfoImpl(SQueryTableMsg* pQueryMsg, SGroupbyExpr* pGroupbyExpr, S pTableqinfo->pGroupList = taosArrayInit(numOfGroups, POINTER_BYTES); pTableqinfo->numOfTables = pTableGroupInfo->numOfTables; - pTableqinfo->map = taosHashInit(pTableGroupInfo->numOfTables, taosGetDefaultHashFunction(TSDB_DATA_TYPE_INT), true, HASH_NO_LOCK); + pTableqinfo->map = taosHashInit(pTableGroupInfo->numOfTables, taosGetDefaultHashFunction(TSDB_DATA_TYPE_INT), true, HASH_ENTRY_LOCK); } pQInfo->pBuf = calloc(pTableGroupInfo->numOfTables, sizeof(STableQueryInfo)); @@ -10146,10 +10146,13 @@ static void doDestroyTableQueryInfo(STableGroupInfo* pTableqinfoGroupInfo) { } taosArrayDestroy(&pTableqinfoGroupInfo->pGroupList); - taosHashCleanup(pTableqinfoGroupInfo->map); + + SHashObj *pmap = pTableqinfoGroupInfo->map; + if (pmap == atomic_val_compare_exchange_ptr(&pTableqinfoGroupInfo->map, pmap, NULL)) { + taosHashCleanup(pmap); + } pTableqinfoGroupInfo->pGroupList = NULL; - pTableqinfoGroupInfo->map = NULL; pTableqinfoGroupInfo->numOfTables = 0; } diff --git a/src/query/src/qFilter.c b/src/query/src/qFilter.c index 0d9fdb814a5af9df0901cf0c6d61e2a12554cfea..3387956730383141491e37323b316fd0b2ee215c 100644 --- a/src/query/src/qFilter.c +++ b/src/query/src/qFilter.c @@ -2787,6 +2787,10 @@ int32_t filterRmUnitByRange(SFilterInfo *info, SDataStatis *pDataStatis, int32_t info->blkUnitRes[k] = -1; rmUnit = 1; continue; + } else { + // when there are values and nulls in this block, no unit can produce all true + // or all false. so no unit can be removed + continue; } } diff --git a/src/query/src/qSqlParser.c b/src/query/src/qSqlParser.c index fe459ee460bbbcc0072f647b88f9a9ef51117a2a..e8981f3ab59479aea464fdef287cf11aeffbfffd 100644 --- a/src/query/src/qSqlParser.c +++ b/src/query/src/qSqlParser.c @@ -1473,7 +1473,19 @@ void setCompactVnodeSql(SSqlInfo *pInfo, int32_t type, SArray *pParam) { pInfo->list = pParam; } -void setCreateUserSql(SSqlInfo *pInfo, SStrToken *pName, SStrToken *pPasswd) { +bool removeSingleQuota(SStrToken* pStr) { + char * p1 = pStr->z; + char * p2 = pStr->z + pStr->n - 1; + if (pStr->n > 2 && *p1 == '\'' && *p2 == '\'') { + pStr->z ++; + pStr->n -= 2; + return true; + } + + return false; +} + +void setCreateUserSql(SSqlInfo *pInfo, SStrToken *pName, SStrToken *pPasswd, SStrToken *pTags) { pInfo->type = TSDB_SQL_CREATE_USER; if (pInfo->pMiscInfo == NULL) { pInfo->pMiscInfo = calloc(1, sizeof(SMiscInfo)); @@ -1483,9 +1495,14 @@ void setCreateUserSql(SSqlInfo *pInfo, SStrToken *pName, SStrToken *pPasswd) { pInfo->pMiscInfo->user.user = *pName; pInfo->pMiscInfo->user.passwd = *pPasswd; + // set tags if have + if (pTags) { + pInfo->pMiscInfo->user.tags = *pTags; + removeSingleQuota(&pInfo->pMiscInfo->user.tags); + } } -void setAlterUserSql(SSqlInfo *pInfo, int16_t type, SStrToken *pName, SStrToken* pPwd, SStrToken *pPrivilege) { +void setAlterUserSql(SSqlInfo *pInfo, int16_t type, SStrToken *pName, SStrToken* pPwd, SStrToken *pPrivilege, SStrToken *pTags) { pInfo->type = TSDB_SQL_ALTER_USER; if (pInfo->pMiscInfo == NULL) { pInfo->pMiscInfo = calloc(1, sizeof(SMiscInfo)); @@ -1508,6 +1525,14 @@ void setAlterUserSql(SSqlInfo *pInfo, int16_t type, SStrToken *pName, SStrToken* } else { pUser->privilege.type = TSDB_DATA_TYPE_NULL; } + + // tags + if (pTags != NULL) { + pUser->tags = *pTags; + removeSingleQuota(&pUser->tags); + } else { + pUser->tags.type = TSDB_DATA_TYPE_NULL; + } } void setKillSql(SSqlInfo *pInfo, int32_t type, SStrToken *id) { diff --git a/src/query/src/sql.c b/src/query/src/sql.c index c21482853ec6098d787932f9631c97a6dd54eaf7..2ae20c7ae52cd6ce9bafcdebbef97cc578f53116 100644 --- a/src/query/src/sql.c +++ b/src/query/src/sql.c @@ -130,17 +130,17 @@ typedef union { #define ParseARG_FETCH SSqlInfo* pInfo = yypParser->pInfo #define ParseARG_STORE yypParser->pInfo = pInfo #define YYFALLBACK 1 -#define YYNSTATE 414 -#define YYNRULE 327 +#define YYNSTATE 417 +#define YYNRULE 329 #define YYNTOKEN 206 -#define YY_MAX_SHIFT 413 -#define YY_MIN_SHIFTREDUCE 643 -#define YY_MAX_SHIFTREDUCE 969 -#define YY_ERROR_ACTION 970 -#define YY_ACCEPT_ACTION 971 -#define YY_NO_ACTION 972 -#define YY_MIN_REDUCE 973 -#define YY_MAX_REDUCE 1299 +#define YY_MAX_SHIFT 416 +#define YY_MIN_SHIFTREDUCE 647 +#define YY_MAX_SHIFTREDUCE 975 +#define YY_ERROR_ACTION 976 +#define YY_ACCEPT_ACTION 977 +#define YY_NO_ACTION 978 +#define YY_MIN_REDUCE 979 +#define YY_MAX_REDUCE 1307 /************* End control #defines *******************************************/ /* Define the yytestcase() macro to be a no-op if is not already defined @@ -206,198 +206,197 @@ typedef union { ** yy_default[] Default action for each state. ** *********** Begin parsing tables **********************************************/ -#define YY_ACTTAB_COUNT (935) +#define YY_ACTTAB_COUNT (930) static const YYACTIONTYPE yy_action[] = { - /* 0 */ 228, 694, 290, 173, 1208, 65, 1209, 330, 694, 695, - /* 10 */ 1272, 267, 1274, 195, 43, 44, 695, 47, 48, 412, - /* 20 */ 258, 280, 32, 31, 30, 1131, 65, 46, 363, 51, + /* 0 */ 230, 699, 1139, 175, 1216, 65, 1217, 332, 699, 700, + /* 10 */ 1280, 270, 1282, 1164, 43, 44, 700, 47, 48, 415, + /* 20 */ 261, 283, 32, 31, 30, 736, 65, 46, 366, 51, /* 30 */ 49, 52, 50, 37, 36, 35, 34, 33, 42, 41, - /* 40 */ 265, 110, 40, 39, 38, 43, 44, 1132, 47, 48, - /* 50 */ 260, 778, 280, 32, 31, 30, 96, 1129, 46, 363, + /* 40 */ 268, 24, 40, 39, 38, 43, 44, 1140, 47, 48, + /* 50 */ 263, 1280, 283, 32, 31, 30, 314, 1137, 46, 366, /* 60 */ 51, 49, 52, 50, 37, 36, 35, 34, 33, 42, - /* 70 */ 41, 270, 1147, 40, 39, 38, 311, 310, 1129, 43, - /* 80 */ 44, 730, 47, 48, 388, 387, 280, 32, 31, 30, - /* 90 */ 261, 95, 46, 363, 51, 49, 52, 50, 37, 36, - /* 100 */ 35, 34, 33, 42, 41, 24, 226, 40, 39, 38, - /* 110 */ 43, 44, 13, 47, 48, 1272, 1272, 280, 32, 31, - /* 120 */ 30, 1122, 64, 46, 363, 51, 49, 52, 50, 37, - /* 130 */ 36, 35, 34, 33, 42, 41, 272, 82, 40, 39, - /* 140 */ 38, 43, 45, 1132, 47, 48, 114, 93, 280, 32, - /* 150 */ 31, 30, 359, 892, 46, 363, 51, 49, 52, 50, - /* 160 */ 37, 36, 35, 34, 33, 42, 41, 296, 273, 40, - /* 170 */ 39, 38, 44, 227, 47, 48, 300, 299, 280, 32, - /* 180 */ 31, 30, 83, 1272, 46, 363, 51, 49, 52, 50, - /* 190 */ 37, 36, 35, 34, 33, 42, 41, 694, 140, 40, - /* 200 */ 39, 38, 47, 48, 274, 695, 280, 32, 31, 30, - /* 210 */ 398, 1132, 46, 363, 51, 49, 52, 50, 37, 36, - /* 220 */ 35, 34, 33, 42, 41, 852, 853, 40, 39, 38, - /* 230 */ 398, 73, 357, 405, 404, 356, 355, 354, 403, 353, - /* 240 */ 352, 351, 402, 350, 401, 400, 644, 645, 646, 647, - /* 250 */ 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, - /* 260 */ 167, 101, 259, 1090, 1078, 1079, 1080, 1081, 1082, 1083, - /* 270 */ 1084, 1085, 1086, 1087, 1088, 1089, 1091, 1092, 25, 840, - /* 280 */ 252, 908, 362, 843, 896, 85, 899, 188, 902, 138, - /* 290 */ 132, 143, 166, 164, 163, 242, 142, 312, 148, 151, - /* 300 */ 141, 74, 244, 290, 277, 361, 320, 145, 154, 153, - /* 310 */ 152, 243, 316, 317, 196, 371, 101, 256, 257, 1156, - /* 320 */ 1262, 365, 279, 252, 908, 1147, 29, 896, 86, 899, - /* 330 */ 1272, 902, 51, 49, 52, 50, 37, 36, 35, 34, - /* 340 */ 33, 42, 41, 262, 6, 40, 39, 38, 65, 112, - /* 350 */ 806, 694, 232, 803, 115, 804, 74, 805, 313, 695, - /* 360 */ 256, 257, 1272, 5, 68, 199, 53, 1294, 224, 29, - /* 370 */ 198, 121, 126, 117, 125, 411, 409, 671, 1272, 303, - /* 380 */ 1275, 91, 1111, 1112, 61, 1115, 285, 286, 253, 346, - /* 390 */ 1116, 1153, 293, 271, 1114, 334, 107, 283, 106, 263, - /* 400 */ 1129, 1021, 1219, 909, 903, 905, 289, 89, 209, 53, - /* 410 */ 898, 276, 901, 37, 36, 35, 34, 33, 42, 41, - /* 420 */ 233, 234, 40, 39, 38, 219, 217, 215, 904, 281, - /* 430 */ 1272, 1272, 214, 158, 157, 156, 155, 57, 73, 777, - /* 440 */ 405, 404, 971, 413, 98, 403, 909, 903, 905, 402, - /* 450 */ 65, 401, 400, 1098, 65, 1096, 1097, 42, 41, 65, - /* 460 */ 1099, 40, 39, 38, 1100, 65, 1101, 1102, 65, 65, - /* 470 */ 65, 904, 807, 287, 65, 228, 897, 284, 900, 282, - /* 480 */ 872, 374, 373, 359, 307, 1272, 291, 1275, 288, 290, - /* 490 */ 383, 382, 361, 228, 1147, 375, 40, 39, 38, 376, - /* 500 */ 364, 824, 1129, 1272, 377, 1275, 1129, 92, 245, 333, - /* 510 */ 378, 1129, 304, 384, 385, 386, 65, 1129, 1272, 390, - /* 520 */ 1129, 1129, 1129, 246, 247, 290, 1129, 248, 249, 1258, - /* 530 */ 368, 906, 1257, 1272, 1272, 1256, 1130, 1272, 1272, 1272, - /* 540 */ 871, 1113, 1272, 254, 255, 1272, 230, 231, 235, 229, - /* 550 */ 236, 237, 239, 1272, 1272, 240, 1272, 1272, 1272, 1272, - /* 560 */ 1272, 1272, 1272, 241, 238, 1272, 821, 225, 1128, 1206, - /* 570 */ 109, 1207, 108, 1272, 1272, 1031, 1022, 1272, 406, 1059, - /* 580 */ 1, 197, 209, 209, 3, 210, 305, 99, 849, 828, - /* 590 */ 315, 314, 859, 860, 788, 10, 338, 907, 790, 340, - /* 600 */ 66, 789, 175, 60, 278, 943, 77, 54, 66, 910, - /* 610 */ 66, 367, 77, 113, 693, 77, 15, 1286, 14, 9, - /* 620 */ 131, 1218, 130, 9, 17, 268, 16, 307, 9, 813, - /* 630 */ 811, 814, 812, 19, 366, 18, 341, 1215, 913, 380, - /* 640 */ 379, 137, 21, 136, 20, 895, 150, 149, 191, 1214, - /* 650 */ 269, 389, 169, 26, 301, 171, 172, 1127, 1155, 1166, - /* 660 */ 1163, 1164, 1148, 308, 1168, 174, 179, 326, 1198, 1123, - /* 670 */ 1197, 1196, 1195, 190, 192, 165, 1121, 193, 194, 1299, - /* 680 */ 407, 1036, 343, 344, 345, 348, 349, 75, 839, 222, - /* 690 */ 71, 360, 1030, 372, 1293, 128, 27, 319, 1292, 1289, - /* 700 */ 200, 381, 1285, 134, 1284, 1281, 201, 264, 321, 323, - /* 710 */ 1056, 72, 67, 87, 1145, 180, 76, 84, 223, 335, - /* 720 */ 28, 1018, 329, 331, 144, 327, 182, 1016, 146, 147, - /* 730 */ 185, 1014, 1013, 292, 212, 181, 213, 1010, 1009, 1008, - /* 740 */ 1007, 1006, 1005, 1004, 216, 218, 996, 220, 993, 221, - /* 750 */ 989, 325, 322, 168, 318, 90, 306, 1125, 97, 94, - /* 760 */ 102, 324, 347, 399, 139, 391, 392, 393, 88, 395, - /* 770 */ 275, 342, 394, 396, 397, 170, 968, 295, 967, 250, - /* 780 */ 294, 251, 1035, 122, 123, 1034, 298, 1012, 297, 966, - /* 790 */ 949, 948, 302, 11, 307, 816, 337, 309, 100, 204, - /* 800 */ 159, 203, 1057, 202, 206, 205, 208, 1011, 207, 160, - /* 810 */ 1003, 2, 161, 1094, 336, 1002, 183, 162, 995, 1058, - /* 820 */ 189, 187, 184, 186, 59, 4, 994, 58, 103, 848, - /* 830 */ 80, 846, 1104, 842, 845, 841, 81, 178, 850, 176, - /* 840 */ 266, 861, 177, 22, 855, 104, 69, 857, 105, 328, - /* 850 */ 366, 332, 23, 70, 111, 12, 55, 339, 116, 114, - /* 860 */ 119, 56, 62, 708, 743, 741, 740, 118, 739, 63, - /* 870 */ 120, 737, 736, 735, 732, 358, 698, 124, 7, 940, - /* 880 */ 938, 912, 941, 911, 939, 8, 370, 127, 914, 78, - /* 890 */ 369, 66, 129, 810, 79, 133, 780, 779, 135, 776, - /* 900 */ 724, 722, 714, 720, 809, 716, 718, 712, 710, 746, - /* 910 */ 745, 744, 742, 738, 734, 733, 211, 696, 661, 973, - /* 920 */ 670, 408, 668, 972, 972, 972, 972, 972, 972, 972, - /* 930 */ 972, 972, 972, 972, 410, + /* 70 */ 41, 273, 228, 40, 39, 38, 313, 312, 1137, 275, + /* 80 */ 43, 44, 1280, 47, 48, 1161, 1140, 283, 32, 31, + /* 90 */ 30, 362, 95, 46, 366, 51, 49, 52, 50, 37, + /* 100 */ 36, 35, 34, 33, 42, 41, 229, 1270, 40, 39, + /* 110 */ 38, 43, 44, 401, 47, 48, 1280, 1280, 283, 32, + /* 120 */ 31, 30, 1122, 64, 46, 366, 51, 49, 52, 50, + /* 130 */ 37, 36, 35, 34, 33, 42, 41, 1302, 234, 40, + /* 140 */ 39, 38, 277, 43, 45, 784, 47, 48, 1280, 1140, + /* 150 */ 283, 32, 31, 30, 65, 898, 46, 366, 51, 49, + /* 160 */ 52, 50, 37, 36, 35, 34, 33, 42, 41, 858, + /* 170 */ 859, 40, 39, 38, 44, 298, 47, 48, 391, 390, + /* 180 */ 283, 32, 31, 30, 302, 301, 46, 366, 51, 49, + /* 190 */ 52, 50, 37, 36, 35, 34, 33, 42, 41, 699, + /* 200 */ 141, 40, 39, 38, 47, 48, 1136, 700, 283, 32, + /* 210 */ 31, 30, 362, 401, 46, 366, 51, 49, 52, 50, + /* 220 */ 37, 36, 35, 34, 33, 42, 41, 371, 190, 40, + /* 230 */ 39, 38, 73, 360, 408, 407, 359, 358, 357, 406, + /* 240 */ 356, 355, 354, 405, 353, 404, 403, 322, 648, 649, + /* 250 */ 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, + /* 260 */ 660, 661, 169, 101, 262, 1098, 1086, 1087, 1088, 1089, + /* 270 */ 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1099, 1100, + /* 280 */ 25, 51, 49, 52, 50, 37, 36, 35, 34, 33, + /* 290 */ 42, 41, 115, 699, 40, 39, 38, 244, 235, 254, + /* 300 */ 914, 700, 74, 902, 246, 905, 281, 908, 1280, 1028, + /* 310 */ 156, 155, 154, 245, 1155, 112, 211, 236, 374, 101, + /* 320 */ 37, 36, 35, 34, 33, 42, 41, 1280, 1124, 40, + /* 330 */ 39, 38, 264, 977, 416, 919, 258, 259, 254, 914, + /* 340 */ 368, 1214, 902, 1215, 905, 29, 908, 901, 1119, 1120, + /* 350 */ 61, 1123, 5, 68, 201, 40, 39, 38, 74, 200, + /* 360 */ 122, 127, 118, 126, 247, 812, 336, 107, 809, 106, + /* 370 */ 810, 904, 811, 907, 1280, 258, 259, 409, 1067, 349, + /* 380 */ 57, 305, 280, 91, 29, 1155, 53, 42, 41, 286, + /* 390 */ 255, 40, 39, 38, 295, 248, 292, 139, 133, 144, + /* 400 */ 1294, 288, 289, 306, 143, 1280, 149, 153, 142, 315, + /* 410 */ 221, 219, 217, 82, 65, 279, 146, 216, 160, 159, + /* 420 */ 158, 157, 915, 909, 911, 53, 73, 365, 408, 407, + /* 430 */ 65, 846, 284, 406, 903, 849, 906, 405, 1130, 404, + /* 440 */ 403, 1106, 1155, 1104, 1105, 1227, 226, 910, 1107, 65, + /* 450 */ 364, 830, 1108, 65, 1109, 1110, 1280, 83, 1283, 274, + /* 460 */ 265, 915, 909, 911, 318, 319, 1137, 282, 65, 287, + /* 470 */ 65, 285, 65, 377, 376, 378, 294, 13, 291, 230, + /* 480 */ 386, 385, 1137, 65, 65, 276, 910, 813, 290, 1280, + /* 490 */ 6, 1283, 912, 827, 379, 1226, 230, 249, 380, 250, + /* 500 */ 271, 1137, 152, 151, 150, 1137, 1280, 1280, 1283, 1280, + /* 510 */ 114, 93, 109, 381, 108, 387, 1223, 388, 1, 199, + /* 520 */ 1137, 10, 1137, 251, 1137, 414, 412, 675, 389, 393, + /* 530 */ 168, 166, 165, 1280, 1266, 1137, 1137, 1265, 1264, 834, + /* 540 */ 256, 92, 257, 293, 1280, 878, 232, 1280, 1280, 233, + /* 550 */ 1280, 266, 1280, 237, 197, 913, 1280, 231, 238, 1280, + /* 560 */ 239, 241, 242, 1280, 243, 98, 240, 1280, 1280, 227, + /* 570 */ 1280, 1280, 1280, 293, 1280, 1121, 1280, 293, 293, 1280, + /* 580 */ 1038, 110, 99, 307, 198, 1029, 855, 211, 367, 1138, + /* 590 */ 3, 212, 211, 317, 316, 865, 96, 66, 866, 364, + /* 600 */ 177, 85, 1222, 794, 309, 877, 370, 272, 340, 77, + /* 610 */ 796, 342, 54, 795, 949, 343, 335, 66, 60, 193, + /* 620 */ 916, 309, 66, 698, 77, 113, 89, 77, 9, 369, + /* 630 */ 819, 15, 820, 14, 9, 392, 132, 9, 131, 17, + /* 640 */ 817, 16, 818, 86, 383, 382, 19, 171, 18, 138, + /* 650 */ 303, 137, 173, 21, 174, 20, 1135, 1163, 783, 26, + /* 660 */ 1174, 1171, 1172, 1156, 310, 1176, 176, 181, 328, 194, + /* 670 */ 1206, 1205, 1204, 1203, 192, 1131, 1129, 195, 196, 1044, + /* 680 */ 345, 346, 347, 348, 351, 1307, 167, 352, 75, 224, + /* 690 */ 71, 410, 363, 1037, 845, 375, 1301, 129, 1300, 1297, + /* 700 */ 202, 27, 321, 87, 1153, 384, 267, 323, 325, 1293, + /* 710 */ 135, 1292, 1289, 203, 1064, 84, 72, 67, 337, 76, + /* 720 */ 225, 1025, 145, 183, 1023, 147, 148, 1021, 28, 1020, + /* 730 */ 333, 331, 1019, 186, 184, 260, 214, 215, 1016, 329, + /* 740 */ 182, 1015, 1014, 327, 1013, 1012, 1011, 324, 1010, 218, + /* 750 */ 220, 1002, 222, 999, 223, 995, 320, 94, 170, 350, + /* 760 */ 90, 308, 402, 1133, 140, 97, 394, 102, 326, 395, + /* 770 */ 396, 397, 398, 399, 88, 400, 278, 172, 344, 974, + /* 780 */ 296, 297, 973, 300, 299, 252, 253, 972, 955, 954, + /* 790 */ 123, 1042, 1041, 124, 309, 304, 339, 11, 100, 822, + /* 800 */ 311, 1018, 58, 1017, 1009, 210, 205, 1065, 206, 204, + /* 810 */ 207, 208, 161, 209, 162, 2, 163, 164, 1008, 103, + /* 820 */ 1102, 185, 338, 1066, 1001, 1000, 854, 59, 187, 188, + /* 830 */ 189, 191, 4, 80, 852, 848, 847, 1112, 81, 180, + /* 840 */ 856, 851, 178, 269, 867, 179, 69, 861, 104, 369, + /* 850 */ 863, 105, 330, 334, 111, 70, 12, 22, 23, 55, + /* 860 */ 341, 56, 114, 117, 116, 62, 120, 714, 749, 747, + /* 870 */ 746, 745, 743, 119, 742, 741, 63, 121, 738, 703, + /* 880 */ 125, 946, 7, 944, 361, 918, 947, 917, 945, 920, + /* 890 */ 8, 372, 373, 78, 128, 130, 66, 79, 134, 786, + /* 900 */ 136, 785, 782, 730, 728, 720, 726, 722, 724, 718, + /* 910 */ 816, 716, 815, 752, 751, 750, 748, 744, 740, 739, + /* 920 */ 213, 665, 979, 701, 674, 672, 978, 411, 978, 413, }; static const YYCODETYPE yy_lookahead[] = { - /* 0 */ 280, 1, 209, 209, 288, 209, 290, 291, 1, 9, - /* 10 */ 290, 1, 292, 220, 14, 15, 9, 17, 18, 209, - /* 20 */ 210, 21, 22, 23, 24, 262, 209, 27, 28, 29, + /* 0 */ 280, 1, 262, 209, 288, 209, 290, 291, 1, 9, + /* 10 */ 290, 1, 292, 209, 14, 15, 9, 17, 18, 209, + /* 20 */ 210, 21, 22, 23, 24, 5, 209, 27, 28, 29, /* 30 */ 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - /* 40 */ 255, 263, 42, 43, 44, 14, 15, 262, 17, 18, - /* 50 */ 254, 5, 21, 22, 23, 24, 278, 261, 27, 28, + /* 40 */ 255, 280, 42, 43, 44, 14, 15, 262, 17, 18, + /* 50 */ 254, 290, 21, 22, 23, 24, 285, 261, 27, 28, /* 60 */ 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - /* 70 */ 39, 254, 259, 42, 43, 44, 282, 283, 261, 14, - /* 80 */ 15, 5, 17, 18, 38, 39, 21, 22, 23, 24, - /* 90 */ 277, 91, 27, 28, 29, 30, 31, 32, 33, 34, - /* 100 */ 35, 36, 37, 38, 39, 280, 280, 42, 43, 44, - /* 110 */ 14, 15, 87, 17, 18, 290, 290, 21, 22, 23, - /* 120 */ 24, 209, 91, 27, 28, 29, 30, 31, 32, 33, - /* 130 */ 34, 35, 36, 37, 38, 39, 255, 102, 42, 43, - /* 140 */ 44, 14, 15, 262, 17, 18, 121, 122, 21, 22, - /* 150 */ 23, 24, 89, 88, 27, 28, 29, 30, 31, 32, - /* 160 */ 33, 34, 35, 36, 37, 38, 39, 151, 256, 42, - /* 170 */ 43, 44, 15, 280, 17, 18, 160, 161, 21, 22, - /* 180 */ 23, 24, 147, 290, 27, 28, 29, 30, 31, 32, - /* 190 */ 33, 34, 35, 36, 37, 38, 39, 1, 83, 42, - /* 200 */ 43, 44, 17, 18, 255, 9, 21, 22, 23, 24, - /* 210 */ 95, 262, 27, 28, 29, 30, 31, 32, 33, 34, - /* 220 */ 35, 36, 37, 38, 39, 133, 134, 42, 43, 44, - /* 230 */ 95, 103, 104, 105, 106, 107, 108, 109, 110, 111, - /* 240 */ 112, 113, 114, 115, 116, 117, 50, 51, 52, 53, - /* 250 */ 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, - /* 260 */ 64, 87, 66, 233, 234, 235, 236, 237, 238, 239, - /* 270 */ 240, 241, 242, 243, 244, 245, 246, 247, 49, 5, - /* 280 */ 1, 2, 25, 9, 5, 102, 7, 267, 9, 67, - /* 290 */ 68, 69, 67, 68, 69, 66, 74, 285, 76, 77, - /* 300 */ 78, 127, 73, 209, 216, 48, 286, 85, 79, 80, - /* 310 */ 81, 82, 38, 39, 220, 86, 87, 38, 39, 209, - /* 320 */ 280, 42, 65, 1, 2, 259, 47, 5, 145, 7, - /* 330 */ 290, 9, 29, 30, 31, 32, 33, 34, 35, 36, - /* 340 */ 37, 38, 39, 277, 87, 42, 43, 44, 209, 217, - /* 350 */ 2, 1, 280, 5, 217, 7, 127, 9, 285, 9, - /* 360 */ 38, 39, 290, 67, 68, 69, 87, 262, 280, 47, - /* 370 */ 74, 75, 76, 77, 78, 70, 71, 72, 290, 150, - /* 380 */ 292, 152, 250, 251, 252, 253, 38, 39, 159, 93, - /* 390 */ 253, 281, 163, 254, 0, 287, 288, 73, 290, 125, - /* 400 */ 261, 215, 249, 124, 125, 126, 73, 87, 222, 87, - /* 410 */ 5, 216, 7, 33, 34, 35, 36, 37, 38, 39, - /* 420 */ 280, 280, 42, 43, 44, 67, 68, 69, 149, 216, - /* 430 */ 290, 290, 74, 75, 76, 77, 78, 87, 103, 119, - /* 440 */ 105, 106, 207, 208, 88, 110, 124, 125, 126, 114, - /* 450 */ 209, 116, 117, 233, 209, 235, 236, 38, 39, 209, - /* 460 */ 240, 42, 43, 44, 244, 209, 246, 247, 209, 209, - /* 470 */ 209, 149, 124, 125, 209, 280, 5, 153, 7, 155, - /* 480 */ 81, 157, 158, 89, 128, 290, 153, 292, 155, 209, - /* 490 */ 157, 158, 48, 280, 259, 254, 42, 43, 44, 254, - /* 500 */ 220, 42, 261, 290, 254, 292, 261, 217, 280, 65, - /* 510 */ 254, 261, 277, 254, 254, 254, 209, 261, 290, 254, - /* 520 */ 261, 261, 261, 280, 280, 209, 261, 280, 280, 280, - /* 530 */ 16, 126, 280, 290, 290, 280, 220, 290, 290, 290, - /* 540 */ 141, 251, 290, 280, 280, 290, 280, 280, 280, 280, - /* 550 */ 280, 280, 280, 290, 290, 280, 290, 290, 290, 290, - /* 560 */ 290, 290, 290, 280, 280, 290, 102, 280, 261, 288, - /* 570 */ 288, 290, 290, 290, 290, 215, 215, 290, 231, 232, - /* 580 */ 218, 219, 222, 222, 213, 214, 88, 88, 88, 130, - /* 590 */ 38, 39, 88, 88, 88, 131, 88, 126, 88, 88, - /* 600 */ 102, 88, 102, 87, 1, 88, 102, 102, 102, 88, - /* 610 */ 102, 25, 102, 102, 88, 102, 154, 262, 156, 102, - /* 620 */ 154, 249, 156, 102, 154, 249, 156, 128, 102, 5, - /* 630 */ 5, 7, 7, 154, 48, 156, 120, 249, 124, 38, - /* 640 */ 39, 154, 154, 156, 156, 42, 83, 84, 257, 249, - /* 650 */ 249, 249, 209, 279, 209, 209, 209, 209, 209, 209, - /* 660 */ 209, 209, 259, 259, 209, 209, 209, 209, 289, 259, - /* 670 */ 289, 289, 289, 264, 209, 65, 209, 209, 209, 265, - /* 680 */ 89, 209, 209, 209, 209, 209, 209, 209, 126, 209, - /* 690 */ 209, 209, 209, 209, 209, 209, 148, 284, 209, 209, - /* 700 */ 209, 209, 209, 209, 209, 209, 209, 284, 284, 284, - /* 710 */ 209, 209, 209, 144, 276, 275, 209, 146, 209, 139, - /* 720 */ 143, 209, 137, 142, 209, 136, 273, 209, 209, 209, - /* 730 */ 270, 209, 209, 209, 209, 274, 209, 209, 209, 209, - /* 740 */ 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, - /* 750 */ 209, 135, 138, 211, 132, 212, 211, 211, 211, 123, - /* 760 */ 211, 211, 94, 118, 101, 100, 56, 97, 211, 60, - /* 770 */ 211, 211, 99, 98, 96, 131, 5, 5, 5, 211, - /* 780 */ 162, 211, 221, 217, 217, 221, 5, 211, 162, 5, - /* 790 */ 105, 104, 151, 87, 128, 88, 120, 102, 129, 224, - /* 800 */ 212, 228, 230, 229, 225, 227, 223, 211, 226, 212, - /* 810 */ 211, 218, 212, 248, 258, 211, 272, 212, 211, 232, - /* 820 */ 265, 268, 271, 269, 266, 213, 211, 87, 102, 88, - /* 830 */ 102, 126, 248, 5, 126, 5, 87, 102, 88, 87, - /* 840 */ 1, 88, 87, 140, 88, 87, 102, 88, 87, 87, - /* 850 */ 48, 1, 140, 102, 91, 87, 87, 120, 83, 121, - /* 860 */ 75, 87, 92, 5, 9, 5, 5, 91, 5, 92, - /* 870 */ 91, 5, 5, 5, 5, 16, 90, 83, 87, 9, - /* 880 */ 9, 88, 9, 88, 9, 87, 64, 156, 124, 17, - /* 890 */ 28, 102, 156, 126, 17, 156, 5, 5, 156, 88, - /* 900 */ 5, 5, 5, 5, 126, 5, 5, 5, 5, 5, - /* 910 */ 5, 5, 5, 5, 5, 5, 102, 90, 65, 0, - /* 920 */ 9, 22, 9, 293, 293, 293, 293, 293, 293, 293, - /* 930 */ 293, 293, 293, 293, 22, 293, 293, 293, 293, 293, + /* 70 */ 39, 254, 280, 42, 43, 44, 282, 283, 261, 255, + /* 80 */ 14, 15, 290, 17, 18, 281, 262, 21, 22, 23, + /* 90 */ 24, 90, 92, 27, 28, 29, 30, 31, 32, 33, + /* 100 */ 34, 35, 36, 37, 38, 39, 280, 280, 42, 43, + /* 110 */ 44, 14, 15, 96, 17, 18, 290, 290, 21, 22, + /* 120 */ 23, 24, 0, 92, 27, 28, 29, 30, 31, 32, + /* 130 */ 33, 34, 35, 36, 37, 38, 39, 262, 280, 42, + /* 140 */ 43, 44, 255, 14, 15, 5, 17, 18, 290, 262, + /* 150 */ 21, 22, 23, 24, 209, 89, 27, 28, 29, 30, + /* 160 */ 31, 32, 33, 34, 35, 36, 37, 38, 39, 133, + /* 170 */ 134, 42, 43, 44, 15, 151, 17, 18, 38, 39, + /* 180 */ 21, 22, 23, 24, 160, 161, 27, 28, 29, 30, + /* 190 */ 31, 32, 33, 34, 35, 36, 37, 38, 39, 1, + /* 200 */ 83, 42, 43, 44, 17, 18, 261, 9, 21, 22, + /* 210 */ 23, 24, 90, 96, 27, 28, 29, 30, 31, 32, + /* 220 */ 33, 34, 35, 36, 37, 38, 39, 16, 267, 42, + /* 230 */ 43, 44, 104, 105, 106, 107, 108, 109, 110, 111, + /* 240 */ 112, 113, 114, 115, 116, 117, 118, 286, 50, 51, + /* 250 */ 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, + /* 260 */ 62, 63, 64, 88, 66, 233, 234, 235, 236, 237, + /* 270 */ 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, + /* 280 */ 49, 29, 30, 31, 32, 33, 34, 35, 36, 37, + /* 290 */ 38, 39, 217, 1, 42, 43, 44, 66, 280, 1, + /* 300 */ 2, 9, 127, 5, 73, 7, 1, 9, 290, 215, + /* 310 */ 79, 80, 81, 82, 259, 217, 222, 280, 87, 88, + /* 320 */ 33, 34, 35, 36, 37, 38, 39, 290, 253, 42, + /* 330 */ 43, 44, 277, 207, 208, 124, 38, 39, 1, 2, + /* 340 */ 42, 288, 5, 290, 7, 47, 9, 42, 250, 251, + /* 350 */ 252, 253, 67, 68, 69, 42, 43, 44, 127, 74, + /* 360 */ 75, 76, 77, 78, 280, 2, 287, 288, 5, 290, + /* 370 */ 7, 5, 9, 7, 290, 38, 39, 231, 232, 94, + /* 380 */ 88, 150, 216, 152, 47, 259, 88, 38, 39, 73, + /* 390 */ 159, 42, 43, 44, 163, 280, 73, 67, 68, 69, + /* 400 */ 262, 38, 39, 277, 74, 290, 76, 77, 78, 285, + /* 410 */ 67, 68, 69, 103, 209, 216, 86, 74, 75, 76, + /* 420 */ 77, 78, 124, 125, 126, 88, 104, 25, 106, 107, + /* 430 */ 209, 5, 216, 111, 5, 9, 7, 115, 209, 117, + /* 440 */ 118, 233, 259, 235, 236, 249, 280, 149, 240, 209, + /* 450 */ 48, 42, 244, 209, 246, 247, 290, 147, 292, 254, + /* 460 */ 277, 124, 125, 126, 38, 39, 261, 65, 209, 153, + /* 470 */ 209, 155, 209, 157, 158, 254, 153, 88, 155, 280, + /* 480 */ 157, 158, 261, 209, 209, 256, 149, 124, 125, 290, + /* 490 */ 88, 292, 126, 103, 254, 249, 280, 280, 254, 280, + /* 500 */ 249, 261, 83, 84, 85, 261, 290, 290, 292, 290, + /* 510 */ 121, 122, 288, 254, 290, 254, 249, 254, 218, 219, + /* 520 */ 261, 131, 261, 280, 261, 70, 71, 72, 254, 254, + /* 530 */ 67, 68, 69, 290, 280, 261, 261, 280, 280, 130, + /* 540 */ 280, 217, 280, 209, 290, 81, 280, 290, 290, 280, + /* 550 */ 290, 125, 290, 280, 220, 126, 290, 280, 280, 290, + /* 560 */ 280, 280, 280, 290, 280, 89, 280, 290, 290, 280, + /* 570 */ 290, 290, 290, 209, 290, 251, 290, 209, 209, 290, + /* 580 */ 215, 263, 89, 89, 220, 215, 89, 222, 220, 220, + /* 590 */ 213, 214, 222, 38, 39, 89, 278, 103, 89, 48, + /* 600 */ 103, 103, 249, 89, 128, 141, 25, 249, 89, 103, + /* 610 */ 89, 89, 103, 89, 89, 85, 65, 103, 88, 257, + /* 620 */ 89, 128, 103, 89, 103, 103, 88, 103, 103, 48, + /* 630 */ 5, 154, 7, 156, 103, 249, 154, 103, 156, 154, + /* 640 */ 5, 156, 7, 145, 38, 39, 154, 209, 156, 154, + /* 650 */ 209, 156, 209, 154, 209, 156, 209, 209, 120, 279, + /* 660 */ 209, 209, 209, 259, 259, 209, 209, 209, 209, 209, + /* 670 */ 289, 289, 289, 289, 264, 259, 209, 209, 209, 209, + /* 680 */ 209, 209, 209, 209, 209, 265, 65, 209, 209, 209, + /* 690 */ 209, 90, 209, 209, 126, 209, 209, 209, 209, 209, + /* 700 */ 209, 148, 284, 144, 276, 209, 284, 284, 284, 209, + /* 710 */ 209, 209, 209, 209, 209, 146, 209, 209, 139, 209, + /* 720 */ 209, 209, 209, 274, 209, 209, 209, 209, 143, 209, + /* 730 */ 142, 137, 209, 271, 273, 209, 209, 209, 209, 136, + /* 740 */ 275, 209, 209, 135, 209, 209, 209, 138, 209, 209, + /* 750 */ 209, 209, 209, 209, 209, 209, 132, 123, 211, 95, + /* 760 */ 212, 211, 119, 211, 102, 211, 101, 211, 211, 56, + /* 770 */ 98, 100, 60, 99, 211, 97, 211, 131, 211, 5, + /* 780 */ 162, 5, 5, 5, 162, 211, 211, 5, 106, 105, + /* 790 */ 217, 221, 221, 217, 128, 151, 85, 88, 129, 89, + /* 800 */ 103, 211, 88, 211, 211, 223, 228, 230, 224, 229, + /* 810 */ 227, 225, 212, 226, 212, 218, 212, 212, 211, 103, + /* 820 */ 248, 272, 258, 232, 211, 211, 89, 266, 270, 269, + /* 830 */ 268, 265, 213, 103, 126, 5, 5, 248, 88, 103, + /* 840 */ 89, 126, 88, 1, 89, 88, 103, 89, 88, 48, + /* 850 */ 89, 88, 88, 1, 92, 103, 88, 140, 140, 88, + /* 860 */ 85, 88, 121, 83, 85, 93, 75, 5, 9, 5, + /* 870 */ 5, 5, 5, 92, 5, 5, 93, 92, 5, 91, + /* 880 */ 83, 9, 88, 9, 16, 89, 9, 89, 9, 124, + /* 890 */ 88, 28, 64, 17, 156, 156, 103, 17, 156, 5, + /* 900 */ 156, 5, 89, 5, 5, 5, 5, 5, 5, 5, + /* 910 */ 126, 5, 126, 5, 5, 5, 5, 5, 5, 5, + /* 920 */ 103, 65, 0, 91, 9, 9, 293, 22, 293, 22, + /* 930 */ 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, /* 940 */ 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, /* 950 */ 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, /* 960 */ 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, @@ -417,127 +416,126 @@ static const YYCODETYPE yy_lookahead[] = { /* 1100 */ 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, /* 1110 */ 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, /* 1120 */ 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, - /* 1130 */ 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, - /* 1140 */ 293, + /* 1130 */ 293, 293, 293, 293, 293, 293, }; -#define YY_SHIFT_COUNT (413) +#define YY_SHIFT_COUNT (416) #define YY_SHIFT_MIN (0) -#define YY_SHIFT_MAX (919) +#define YY_SHIFT_MAX (922) static const unsigned short int yy_shift_ofst[] = { - /* 0 */ 229, 128, 128, 335, 335, 63, 279, 322, 322, 322, - /* 10 */ 350, 7, 7, 7, 7, 7, 7, 7, 7, 7, - /* 20 */ 7, 7, 10, 10, 0, 196, 322, 322, 322, 322, - /* 30 */ 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, - /* 40 */ 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, - /* 50 */ 322, 322, 322, 322, 348, 348, 348, 174, 174, 92, - /* 60 */ 7, 394, 7, 7, 7, 7, 7, 115, 63, 10, - /* 70 */ 10, 135, 135, 76, 935, 935, 935, 348, 348, 348, - /* 80 */ 274, 274, 46, 46, 46, 46, 46, 46, 25, 46, - /* 90 */ 7, 7, 7, 7, 7, 7, 459, 7, 7, 7, - /* 100 */ 174, 174, 7, 7, 7, 7, 399, 399, 399, 399, - /* 110 */ 464, 174, 7, 7, 7, 7, 7, 7, 7, 7, + /* 0 */ 231, 128, 128, 322, 322, 1, 298, 337, 337, 337, + /* 10 */ 292, 7, 7, 7, 7, 7, 7, 7, 7, 7, + /* 20 */ 7, 7, 10, 10, 0, 198, 337, 337, 337, 337, + /* 30 */ 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, + /* 40 */ 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, + /* 50 */ 337, 337, 337, 337, 363, 363, 363, 175, 175, 36, + /* 60 */ 7, 122, 7, 7, 7, 7, 7, 117, 1, 10, + /* 70 */ 10, 17, 17, 20, 930, 930, 930, 363, 363, 363, + /* 80 */ 426, 426, 140, 140, 140, 140, 140, 140, 389, 140, + /* 90 */ 7, 7, 7, 7, 7, 7, 409, 7, 7, 7, + /* 100 */ 175, 175, 7, 7, 7, 7, 464, 464, 464, 464, + /* 110 */ 390, 175, 7, 7, 7, 7, 7, 7, 7, 7, /* 120 */ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, /* 130 */ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, /* 140 */ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, /* 150 */ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, - /* 160 */ 7, 7, 7, 7, 7, 7, 7, 7, 548, 610, - /* 170 */ 591, 610, 610, 610, 610, 562, 562, 562, 562, 610, - /* 180 */ 569, 571, 580, 577, 581, 585, 589, 616, 614, 622, - /* 190 */ 548, 636, 610, 610, 610, 668, 668, 645, 63, 63, - /* 200 */ 610, 610, 663, 665, 710, 670, 673, 709, 675, 678, - /* 210 */ 645, 76, 610, 610, 591, 591, 610, 591, 610, 591, - /* 220 */ 610, 610, 935, 935, 31, 65, 96, 96, 96, 127, - /* 230 */ 157, 185, 303, 303, 303, 303, 303, 303, 380, 380, - /* 240 */ 380, 380, 296, 222, 358, 419, 419, 419, 419, 419, - /* 250 */ 324, 333, 257, 16, 454, 454, 405, 471, 305, 225, - /* 260 */ 498, 356, 499, 552, 500, 504, 505, 444, 35, 183, - /* 270 */ 506, 508, 510, 511, 513, 516, 517, 521, 586, 603, - /* 280 */ 514, 526, 462, 466, 470, 624, 625, 601, 479, 487, - /* 290 */ 320, 488, 563, 644, 771, 618, 772, 773, 626, 781, - /* 300 */ 784, 685, 687, 641, 666, 676, 706, 669, 707, 740, - /* 310 */ 695, 726, 741, 728, 705, 708, 828, 830, 749, 750, - /* 320 */ 752, 753, 755, 756, 735, 758, 759, 761, 839, 762, - /* 330 */ 744, 703, 802, 850, 751, 712, 763, 768, 676, 769, - /* 340 */ 737, 774, 738, 775, 770, 776, 785, 858, 777, 779, - /* 350 */ 855, 860, 861, 863, 866, 867, 868, 869, 786, 859, - /* 360 */ 794, 870, 871, 791, 793, 795, 873, 875, 764, 798, - /* 370 */ 862, 822, 872, 731, 736, 789, 789, 789, 789, 767, - /* 380 */ 778, 877, 739, 742, 789, 789, 789, 891, 892, 811, - /* 390 */ 789, 895, 896, 897, 898, 900, 901, 902, 903, 904, - /* 400 */ 905, 906, 907, 908, 909, 910, 814, 827, 911, 899, - /* 410 */ 913, 912, 853, 919, + /* 160 */ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, + /* 170 */ 553, 621, 601, 621, 621, 621, 621, 568, 568, 568, + /* 180 */ 568, 621, 559, 569, 579, 585, 588, 594, 603, 608, + /* 190 */ 609, 624, 553, 634, 621, 621, 621, 664, 664, 643, + /* 200 */ 1, 1, 621, 621, 662, 665, 713, 672, 671, 712, + /* 210 */ 674, 678, 643, 20, 621, 621, 601, 601, 621, 601, + /* 220 */ 621, 601, 621, 621, 930, 930, 31, 66, 97, 97, + /* 230 */ 97, 129, 159, 187, 252, 252, 252, 252, 252, 252, + /* 240 */ 287, 287, 287, 287, 285, 330, 343, 349, 349, 349, + /* 250 */ 349, 349, 316, 323, 402, 24, 313, 313, 366, 429, + /* 260 */ 419, 455, 463, 494, 476, 493, 555, 497, 506, 509, + /* 270 */ 551, 310, 498, 514, 519, 521, 522, 524, 530, 525, + /* 280 */ 531, 581, 305, 211, 534, 477, 482, 485, 625, 635, + /* 290 */ 606, 492, 495, 538, 499, 646, 774, 618, 776, 777, + /* 300 */ 622, 778, 782, 682, 684, 644, 666, 711, 709, 669, + /* 310 */ 710, 714, 697, 716, 737, 730, 708, 715, 830, 831, + /* 320 */ 750, 751, 754, 755, 757, 758, 736, 760, 761, 763, + /* 330 */ 842, 764, 743, 717, 801, 852, 752, 718, 762, 768, + /* 340 */ 711, 771, 775, 773, 741, 779, 780, 772, 781, 791, + /* 350 */ 862, 783, 785, 859, 864, 865, 866, 867, 869, 870, + /* 360 */ 873, 788, 868, 797, 872, 874, 794, 796, 798, 877, + /* 370 */ 879, 765, 802, 863, 828, 876, 738, 739, 793, 793, + /* 380 */ 793, 793, 784, 786, 880, 742, 744, 793, 793, 793, + /* 390 */ 894, 896, 813, 793, 898, 899, 900, 901, 902, 903, + /* 400 */ 904, 906, 908, 909, 910, 911, 912, 913, 914, 817, + /* 410 */ 832, 915, 905, 916, 907, 856, 922, }; -#define YY_REDUCE_COUNT (223) +#define YY_REDUCE_COUNT (225) #define YY_REDUCE_MIN (-284) -#define YY_REDUCE_MAX (615) +#define YY_REDUCE_MAX (619) static const short yy_reduce_ofst[] = { - /* 0 */ 235, 30, 30, 220, 220, 132, 88, 195, 213, -280, - /* 10 */ -206, -204, -183, 139, 241, 245, 250, 256, 259, 260, - /* 20 */ 261, 265, -284, 108, 110, -190, -175, -174, -107, 40, - /* 30 */ 72, 140, 141, 228, 243, 244, 247, 248, 249, 252, - /* 40 */ 255, 263, 264, 266, 267, 268, 269, 270, 271, 272, - /* 50 */ 275, 283, 284, 287, -215, -119, -51, -187, 66, 20, - /* 60 */ -88, 137, -207, 94, 280, 316, 307, 186, 290, 281, - /* 70 */ 282, 360, 361, 347, -222, 362, 371, -237, 105, 355, - /* 80 */ 12, 73, 153, 372, 376, 388, 400, 401, 391, 402, - /* 90 */ 443, 445, 446, 447, 448, 449, 374, 450, 451, 452, - /* 100 */ 403, 404, 455, 456, 457, 458, 379, 381, 382, 383, - /* 110 */ 409, 410, 465, 467, 468, 469, 472, 473, 474, 475, - /* 120 */ 476, 477, 478, 480, 481, 482, 483, 484, 485, 486, - /* 130 */ 489, 490, 491, 492, 493, 494, 495, 496, 497, 501, - /* 140 */ 502, 503, 507, 509, 512, 515, 518, 519, 520, 522, - /* 150 */ 523, 524, 525, 527, 528, 529, 530, 531, 532, 533, - /* 160 */ 534, 535, 536, 537, 538, 539, 540, 541, 414, 542, - /* 170 */ 543, 545, 546, 547, 549, 413, 423, 424, 425, 550, - /* 180 */ 438, 440, 461, 453, 544, 551, 460, 554, 553, 558, - /* 190 */ 555, 556, 557, 559, 560, 561, 564, 565, 566, 567, - /* 200 */ 568, 570, 572, 574, 573, 575, 578, 579, 582, 583, - /* 210 */ 584, 587, 576, 596, 588, 597, 599, 600, 604, 605, - /* 220 */ 607, 615, 593, 612, + /* 0 */ 126, 32, 32, 208, 208, 98, 166, 199, 216, -280, + /* 10 */ -206, -204, -183, 205, 221, 240, 244, 259, 261, 263, + /* 20 */ 274, 275, -284, 79, -196, -190, -239, -208, -174, -173, + /* 30 */ -142, 18, 37, 84, 115, 217, 219, 243, 254, 257, + /* 40 */ 258, 260, 262, 266, 269, 273, 277, 278, 280, 281, + /* 50 */ 282, 284, 286, 289, -215, -176, -113, 55, 183, -39, + /* 60 */ 229, 75, 334, 364, 368, 369, -55, 94, 324, 53, + /* 70 */ 224, 365, 370, 146, 318, 300, 377, -260, -125, 138, + /* 80 */ -229, 124, 196, 246, 251, 267, 353, 358, 362, 386, + /* 90 */ 438, 441, 443, 445, 447, 448, 380, 451, 452, 453, + /* 100 */ 404, 405, 456, 457, 458, 459, 381, 382, 383, 384, + /* 110 */ 410, 416, 460, 467, 468, 469, 470, 471, 472, 473, + /* 120 */ 474, 475, 478, 479, 480, 481, 483, 484, 486, 487, + /* 130 */ 488, 489, 490, 491, 496, 500, 501, 502, 503, 504, + /* 140 */ 505, 507, 508, 510, 511, 512, 513, 515, 516, 517, + /* 150 */ 518, 520, 523, 526, 527, 528, 529, 532, 533, 535, + /* 160 */ 536, 537, 539, 540, 541, 542, 543, 544, 545, 546, + /* 170 */ 420, 547, 548, 550, 552, 554, 556, 418, 422, 423, + /* 180 */ 424, 557, 428, 465, 449, 461, 549, 462, 558, 560, + /* 190 */ 562, 561, 566, 564, 563, 565, 567, 570, 571, 572, + /* 200 */ 573, 576, 574, 575, 577, 580, 578, 584, 583, 586, + /* 210 */ 587, 582, 589, 591, 590, 592, 600, 602, 593, 604, + /* 220 */ 607, 605, 613, 614, 597, 619, }; static const YYACTIONTYPE yy_default[] = { - /* 0 */ 970, 1093, 1032, 1103, 1019, 1029, 1277, 1277, 1277, 1277, - /* 10 */ 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, - /* 20 */ 970, 970, 970, 970, 1157, 990, 970, 970, 970, 970, - /* 30 */ 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, - /* 40 */ 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, - /* 50 */ 970, 970, 970, 970, 970, 970, 970, 970, 970, 1181, - /* 60 */ 970, 1029, 970, 970, 970, 970, 970, 1039, 1029, 970, - /* 70 */ 970, 1039, 1039, 970, 1152, 1077, 1095, 970, 970, 970, - /* 80 */ 970, 970, 970, 970, 970, 970, 970, 970, 1124, 970, - /* 90 */ 970, 970, 970, 970, 970, 970, 1159, 1165, 1162, 970, - /* 100 */ 970, 970, 1167, 970, 970, 970, 1203, 1203, 1203, 1203, - /* 110 */ 1150, 970, 970, 970, 970, 970, 970, 970, 970, 970, - /* 120 */ 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, - /* 130 */ 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, - /* 140 */ 970, 970, 970, 970, 1017, 970, 1015, 970, 970, 970, - /* 150 */ 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, - /* 160 */ 970, 970, 970, 970, 970, 970, 970, 988, 1220, 992, - /* 170 */ 1027, 992, 992, 992, 992, 970, 970, 970, 970, 992, - /* 180 */ 1212, 1216, 1193, 1210, 1204, 1188, 1186, 1184, 1192, 1177, - /* 190 */ 1220, 1126, 992, 992, 992, 1037, 1037, 1033, 1029, 1029, - /* 200 */ 992, 992, 1055, 1053, 1051, 1043, 1049, 1045, 1047, 1041, - /* 210 */ 1020, 970, 992, 992, 1027, 1027, 992, 1027, 992, 1027, - /* 220 */ 992, 992, 1077, 1095, 1276, 970, 1221, 1211, 1276, 970, - /* 230 */ 1253, 1252, 1267, 1266, 1265, 1251, 1250, 1249, 1245, 1248, - /* 240 */ 1247, 1246, 970, 970, 970, 1264, 1263, 1261, 1260, 1259, - /* 250 */ 970, 970, 1223, 970, 1255, 1254, 970, 970, 970, 970, - /* 260 */ 970, 970, 970, 1174, 970, 970, 970, 1199, 1217, 1213, - /* 270 */ 970, 970, 970, 970, 970, 970, 970, 970, 1224, 970, - /* 280 */ 970, 970, 970, 970, 970, 970, 970, 1138, 970, 970, - /* 290 */ 1105, 970, 970, 970, 970, 970, 970, 970, 970, 970, - /* 300 */ 970, 970, 970, 970, 1149, 970, 970, 970, 970, 970, - /* 310 */ 1161, 1160, 970, 970, 970, 970, 970, 970, 970, 970, - /* 320 */ 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, - /* 330 */ 1205, 970, 1200, 970, 1194, 970, 970, 970, 1117, 970, - /* 340 */ 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, - /* 350 */ 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, - /* 360 */ 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, - /* 370 */ 970, 970, 970, 970, 970, 1295, 1290, 1291, 1288, 970, - /* 380 */ 970, 970, 970, 970, 1287, 1282, 1283, 970, 970, 970, - /* 390 */ 1280, 970, 970, 970, 970, 970, 970, 970, 970, 970, - /* 400 */ 970, 970, 970, 970, 970, 970, 1061, 970, 970, 999, - /* 410 */ 970, 997, 970, 970, + /* 0 */ 976, 1101, 1039, 1111, 1026, 1036, 1285, 1285, 1285, 1285, + /* 10 */ 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, + /* 20 */ 976, 976, 976, 976, 1165, 996, 976, 976, 976, 976, + /* 30 */ 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, + /* 40 */ 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, + /* 50 */ 976, 976, 976, 976, 976, 976, 976, 976, 976, 1189, + /* 60 */ 976, 1036, 976, 976, 976, 976, 976, 1047, 1036, 976, + /* 70 */ 976, 1047, 1047, 976, 1160, 1085, 1103, 976, 976, 976, + /* 80 */ 976, 976, 976, 976, 976, 976, 976, 976, 1132, 976, + /* 90 */ 976, 976, 976, 976, 976, 976, 1167, 1173, 1170, 976, + /* 100 */ 976, 976, 1175, 976, 976, 976, 1211, 1211, 1211, 1211, + /* 110 */ 1158, 976, 976, 976, 976, 976, 976, 976, 976, 976, + /* 120 */ 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, + /* 130 */ 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, + /* 140 */ 976, 976, 976, 976, 976, 1024, 976, 1022, 976, 976, + /* 150 */ 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, + /* 160 */ 976, 976, 976, 976, 976, 976, 976, 976, 976, 994, + /* 170 */ 1228, 998, 1034, 998, 998, 998, 998, 976, 976, 976, + /* 180 */ 976, 998, 1220, 1224, 1201, 1218, 1212, 1196, 1194, 1192, + /* 190 */ 1200, 1185, 1228, 1134, 998, 998, 998, 1045, 1045, 1040, + /* 200 */ 1036, 1036, 998, 998, 1063, 1061, 1059, 1051, 1057, 1053, + /* 210 */ 1055, 1049, 1027, 976, 998, 998, 1034, 1034, 998, 1034, + /* 220 */ 998, 1034, 998, 998, 1085, 1103, 1284, 976, 1229, 1219, + /* 230 */ 1284, 976, 1261, 1260, 1275, 1274, 1273, 1259, 1258, 1257, + /* 240 */ 1253, 1256, 1255, 1254, 976, 976, 976, 1272, 1271, 1269, + /* 250 */ 1268, 1267, 976, 976, 1231, 976, 1263, 1262, 976, 976, + /* 260 */ 976, 976, 976, 976, 976, 976, 1182, 976, 976, 976, + /* 270 */ 1207, 1225, 1221, 976, 976, 976, 976, 976, 976, 976, + /* 280 */ 976, 1232, 976, 976, 976, 976, 976, 976, 976, 976, + /* 290 */ 1146, 976, 976, 1113, 976, 976, 976, 976, 976, 976, + /* 300 */ 976, 976, 976, 976, 976, 976, 1157, 976, 976, 976, + /* 310 */ 976, 976, 1169, 1168, 976, 976, 976, 976, 976, 976, + /* 320 */ 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, + /* 330 */ 976, 976, 1213, 976, 1208, 976, 1202, 976, 976, 976, + /* 340 */ 1125, 976, 976, 976, 976, 1043, 976, 976, 976, 976, + /* 350 */ 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, + /* 360 */ 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, + /* 370 */ 976, 976, 976, 976, 976, 976, 976, 976, 1303, 1298, + /* 380 */ 1299, 1296, 976, 976, 976, 976, 976, 1295, 1290, 1291, + /* 390 */ 976, 976, 976, 1288, 976, 976, 976, 976, 976, 976, + /* 400 */ 976, 976, 976, 976, 976, 976, 976, 976, 976, 1069, + /* 410 */ 976, 976, 1005, 976, 1003, 976, 976, }; /********** End of lemon-generated parsing tables *****************************/ @@ -642,6 +640,7 @@ static const YYCODETYPE yyFallback[] = { 0, /* ALTER => nothing */ 0, /* PASS => nothing */ 0, /* PRIVILEGE => nothing */ + 0, /* TAGS => nothing */ 0, /* LOCAL => nothing */ 0, /* COMPACT => nothing */ 0, /* LP => nothing */ @@ -677,7 +676,6 @@ static const YYCODETYPE yyFallback[] = { 0, /* CACHELAST => nothing */ 0, /* PARTITIONS => nothing */ 0, /* UNSIGNED => nothing */ - 0, /* TAGS => nothing */ 0, /* USING => nothing */ 0, /* TO => nothing */ 0, /* SPLIT => nothing */ @@ -934,42 +932,42 @@ static const char *const yyTokenName[] = { /* 82 */ "ALTER", /* 83 */ "PASS", /* 84 */ "PRIVILEGE", - /* 85 */ "LOCAL", - /* 86 */ "COMPACT", - /* 87 */ "LP", - /* 88 */ "RP", - /* 89 */ "IF", - /* 90 */ "EXISTS", - /* 91 */ "AS", - /* 92 */ "OUTPUTTYPE", - /* 93 */ "AGGREGATE", - /* 94 */ "BUFSIZE", - /* 95 */ "PPS", - /* 96 */ "TSERIES", - /* 97 */ "DBS", - /* 98 */ "STORAGE", - /* 99 */ "QTIME", - /* 100 */ "CONNS", - /* 101 */ "STATE", - /* 102 */ "COMMA", - /* 103 */ "KEEP", - /* 104 */ "CACHE", - /* 105 */ "REPLICA", - /* 106 */ "QUORUM", - /* 107 */ "DAYS", - /* 108 */ "MINROWS", - /* 109 */ "MAXROWS", - /* 110 */ "BLOCKS", - /* 111 */ "CTIME", - /* 112 */ "WAL", - /* 113 */ "FSYNC", - /* 114 */ "COMP", - /* 115 */ "PRECISION", - /* 116 */ "UPDATE", - /* 117 */ "CACHELAST", - /* 118 */ "PARTITIONS", - /* 119 */ "UNSIGNED", - /* 120 */ "TAGS", + /* 85 */ "TAGS", + /* 86 */ "LOCAL", + /* 87 */ "COMPACT", + /* 88 */ "LP", + /* 89 */ "RP", + /* 90 */ "IF", + /* 91 */ "EXISTS", + /* 92 */ "AS", + /* 93 */ "OUTPUTTYPE", + /* 94 */ "AGGREGATE", + /* 95 */ "BUFSIZE", + /* 96 */ "PPS", + /* 97 */ "TSERIES", + /* 98 */ "DBS", + /* 99 */ "STORAGE", + /* 100 */ "QTIME", + /* 101 */ "CONNS", + /* 102 */ "STATE", + /* 103 */ "COMMA", + /* 104 */ "KEEP", + /* 105 */ "CACHE", + /* 106 */ "REPLICA", + /* 107 */ "QUORUM", + /* 108 */ "DAYS", + /* 109 */ "MINROWS", + /* 110 */ "MAXROWS", + /* 111 */ "BLOCKS", + /* 112 */ "CTIME", + /* 113 */ "WAL", + /* 114 */ "FSYNC", + /* 115 */ "COMP", + /* 116 */ "PRECISION", + /* 117 */ "UPDATE", + /* 118 */ "CACHELAST", + /* 119 */ "PARTITIONS", + /* 120 */ "UNSIGNED", /* 121 */ "USING", /* 122 */ "TO", /* 123 */ "SPLIT", @@ -1191,291 +1189,293 @@ static const char *const yyRuleName[] = { /* 39 */ "cmd ::= DESC ids cpxName", /* 40 */ "cmd ::= ALTER USER ids PASS ids", /* 41 */ "cmd ::= ALTER USER ids PRIVILEGE ids", - /* 42 */ "cmd ::= ALTER DNODE ids ids", - /* 43 */ "cmd ::= ALTER DNODE ids ids ids", - /* 44 */ "cmd ::= ALTER LOCAL ids", - /* 45 */ "cmd ::= ALTER LOCAL ids ids", - /* 46 */ "cmd ::= ALTER DATABASE ids alter_db_optr", - /* 47 */ "cmd ::= ALTER TOPIC ids alter_topic_optr", - /* 48 */ "cmd ::= ALTER ACCOUNT ids acct_optr", - /* 49 */ "cmd ::= ALTER ACCOUNT ids PASS ids acct_optr", - /* 50 */ "cmd ::= COMPACT VNODES IN LP exprlist RP", - /* 51 */ "ids ::= ID", - /* 52 */ "ids ::= STRING", - /* 53 */ "ifexists ::= IF EXISTS", - /* 54 */ "ifexists ::=", - /* 55 */ "ifnotexists ::= IF NOT EXISTS", - /* 56 */ "ifnotexists ::=", - /* 57 */ "cmd ::= CREATE DNODE ids", - /* 58 */ "cmd ::= CREATE ACCOUNT ids PASS ids acct_optr", - /* 59 */ "cmd ::= CREATE DATABASE ifnotexists ids db_optr", - /* 60 */ "cmd ::= CREATE TOPIC ifnotexists ids topic_optr", - /* 61 */ "cmd ::= CREATE FUNCTION ids AS ids OUTPUTTYPE typename bufsize", - /* 62 */ "cmd ::= CREATE AGGREGATE FUNCTION ids AS ids OUTPUTTYPE typename bufsize", - /* 63 */ "cmd ::= CREATE USER ids PASS ids", - /* 64 */ "bufsize ::=", - /* 65 */ "bufsize ::= BUFSIZE INTEGER", - /* 66 */ "pps ::=", - /* 67 */ "pps ::= PPS INTEGER", - /* 68 */ "tseries ::=", - /* 69 */ "tseries ::= TSERIES INTEGER", - /* 70 */ "dbs ::=", - /* 71 */ "dbs ::= DBS INTEGER", - /* 72 */ "streams ::=", - /* 73 */ "streams ::= STREAMS INTEGER", - /* 74 */ "storage ::=", - /* 75 */ "storage ::= STORAGE INTEGER", - /* 76 */ "qtime ::=", - /* 77 */ "qtime ::= QTIME INTEGER", - /* 78 */ "users ::=", - /* 79 */ "users ::= USERS INTEGER", - /* 80 */ "conns ::=", - /* 81 */ "conns ::= CONNS INTEGER", - /* 82 */ "state ::=", - /* 83 */ "state ::= STATE ids", - /* 84 */ "acct_optr ::= pps tseries storage streams qtime dbs users conns state", - /* 85 */ "intitemlist ::= intitemlist COMMA intitem", - /* 86 */ "intitemlist ::= intitem", - /* 87 */ "intitem ::= INTEGER", - /* 88 */ "keep ::= KEEP intitemlist", - /* 89 */ "cache ::= CACHE INTEGER", - /* 90 */ "replica ::= REPLICA INTEGER", - /* 91 */ "quorum ::= QUORUM INTEGER", - /* 92 */ "days ::= DAYS INTEGER", - /* 93 */ "minrows ::= MINROWS INTEGER", - /* 94 */ "maxrows ::= MAXROWS INTEGER", - /* 95 */ "blocks ::= BLOCKS INTEGER", - /* 96 */ "ctime ::= CTIME INTEGER", - /* 97 */ "wal ::= WAL INTEGER", - /* 98 */ "fsync ::= FSYNC INTEGER", - /* 99 */ "comp ::= COMP INTEGER", - /* 100 */ "prec ::= PRECISION STRING", - /* 101 */ "update ::= UPDATE INTEGER", - /* 102 */ "cachelast ::= CACHELAST INTEGER", - /* 103 */ "partitions ::= PARTITIONS INTEGER", - /* 104 */ "db_optr ::=", - /* 105 */ "db_optr ::= db_optr cache", - /* 106 */ "db_optr ::= db_optr replica", - /* 107 */ "db_optr ::= db_optr quorum", - /* 108 */ "db_optr ::= db_optr days", - /* 109 */ "db_optr ::= db_optr minrows", - /* 110 */ "db_optr ::= db_optr maxrows", - /* 111 */ "db_optr ::= db_optr blocks", - /* 112 */ "db_optr ::= db_optr ctime", - /* 113 */ "db_optr ::= db_optr wal", - /* 114 */ "db_optr ::= db_optr fsync", - /* 115 */ "db_optr ::= db_optr comp", - /* 116 */ "db_optr ::= db_optr prec", - /* 117 */ "db_optr ::= db_optr keep", - /* 118 */ "db_optr ::= db_optr update", - /* 119 */ "db_optr ::= db_optr cachelast", - /* 120 */ "topic_optr ::= db_optr", - /* 121 */ "topic_optr ::= topic_optr partitions", - /* 122 */ "alter_db_optr ::=", - /* 123 */ "alter_db_optr ::= alter_db_optr replica", - /* 124 */ "alter_db_optr ::= alter_db_optr quorum", - /* 125 */ "alter_db_optr ::= alter_db_optr keep", - /* 126 */ "alter_db_optr ::= alter_db_optr blocks", - /* 127 */ "alter_db_optr ::= alter_db_optr comp", - /* 128 */ "alter_db_optr ::= alter_db_optr update", - /* 129 */ "alter_db_optr ::= alter_db_optr cachelast", - /* 130 */ "alter_topic_optr ::= alter_db_optr", - /* 131 */ "alter_topic_optr ::= alter_topic_optr partitions", - /* 132 */ "typename ::= ids", - /* 133 */ "typename ::= ids LP signed RP", - /* 134 */ "typename ::= ids UNSIGNED", - /* 135 */ "signed ::= INTEGER", - /* 136 */ "signed ::= PLUS INTEGER", - /* 137 */ "signed ::= MINUS INTEGER", - /* 138 */ "cmd ::= CREATE TABLE create_table_args", - /* 139 */ "cmd ::= CREATE TABLE create_stable_args", - /* 140 */ "cmd ::= CREATE STABLE create_stable_args", - /* 141 */ "cmd ::= CREATE TABLE create_table_list", - /* 142 */ "create_table_list ::= create_from_stable", - /* 143 */ "create_table_list ::= create_table_list create_from_stable", - /* 144 */ "create_table_args ::= ifnotexists ids cpxName LP columnlist RP", - /* 145 */ "create_stable_args ::= ifnotexists ids cpxName LP columnlist RP TAGS LP columnlist RP", - /* 146 */ "create_from_stable ::= ifnotexists ids cpxName USING ids cpxName TAGS LP tagitemlist RP", - /* 147 */ "create_from_stable ::= ifnotexists ids cpxName USING ids cpxName LP tagNamelist RP TAGS LP tagitemlist RP", - /* 148 */ "tagNamelist ::= tagNamelist COMMA ids", - /* 149 */ "tagNamelist ::= ids", - /* 150 */ "create_table_args ::= ifnotexists ids cpxName to_opt split_opt AS select", - /* 151 */ "to_opt ::=", - /* 152 */ "to_opt ::= TO ids cpxName", - /* 153 */ "split_opt ::=", - /* 154 */ "split_opt ::= SPLIT ids", - /* 155 */ "columnlist ::= columnlist COMMA column", - /* 156 */ "columnlist ::= column", - /* 157 */ "column ::= ids typename", - /* 158 */ "tagitemlist ::= tagitemlist COMMA tagitem", - /* 159 */ "tagitemlist ::= tagitem", - /* 160 */ "tagitem ::= INTEGER", - /* 161 */ "tagitem ::= FLOAT", - /* 162 */ "tagitem ::= STRING", - /* 163 */ "tagitem ::= BOOL", - /* 164 */ "tagitem ::= NULL", - /* 165 */ "tagitem ::= NOW", - /* 166 */ "tagitem ::= NOW PLUS VARIABLE", - /* 167 */ "tagitem ::= NOW MINUS VARIABLE", - /* 168 */ "tagitem ::= MINUS INTEGER", - /* 169 */ "tagitem ::= MINUS FLOAT", - /* 170 */ "tagitem ::= PLUS INTEGER", - /* 171 */ "tagitem ::= PLUS FLOAT", - /* 172 */ "select ::= SELECT selcollist from where_opt range_option interval_option sliding_opt session_option windowstate_option fill_opt groupby_opt having_opt orderby_opt slimit_opt limit_opt", - /* 173 */ "select ::= LP select RP", - /* 174 */ "union ::= select", - /* 175 */ "union ::= union UNION ALL select", - /* 176 */ "cmd ::= union", - /* 177 */ "select ::= SELECT selcollist", - /* 178 */ "sclp ::= selcollist COMMA", - /* 179 */ "sclp ::=", - /* 180 */ "selcollist ::= sclp distinct expr as", - /* 181 */ "selcollist ::= sclp STAR", - /* 182 */ "as ::= AS ids", - /* 183 */ "as ::= ids", - /* 184 */ "as ::=", - /* 185 */ "distinct ::= DISTINCT", - /* 186 */ "distinct ::=", - /* 187 */ "from ::= FROM tablelist", - /* 188 */ "from ::= FROM sub", - /* 189 */ "sub ::= LP union RP", - /* 190 */ "sub ::= LP union RP ids", - /* 191 */ "sub ::= sub COMMA LP union RP ids", - /* 192 */ "tablelist ::= ids cpxName", - /* 193 */ "tablelist ::= ids cpxName ids", - /* 194 */ "tablelist ::= tablelist COMMA ids cpxName", - /* 195 */ "tablelist ::= tablelist COMMA ids cpxName ids", - /* 196 */ "tmvar ::= VARIABLE", - /* 197 */ "timestamp ::= INTEGER", - /* 198 */ "timestamp ::= MINUS INTEGER", - /* 199 */ "timestamp ::= PLUS INTEGER", - /* 200 */ "timestamp ::= STRING", - /* 201 */ "timestamp ::= NOW", - /* 202 */ "timestamp ::= NOW PLUS VARIABLE", - /* 203 */ "timestamp ::= NOW MINUS VARIABLE", - /* 204 */ "range_option ::=", - /* 205 */ "range_option ::= RANGE LP timestamp COMMA timestamp RP", - /* 206 */ "interval_option ::= intervalKey LP tmvar RP", - /* 207 */ "interval_option ::= intervalKey LP tmvar COMMA tmvar RP", - /* 208 */ "interval_option ::=", - /* 209 */ "intervalKey ::= INTERVAL", - /* 210 */ "intervalKey ::= EVERY", - /* 211 */ "session_option ::=", - /* 212 */ "session_option ::= SESSION LP ids cpxName COMMA tmvar RP", - /* 213 */ "windowstate_option ::=", - /* 214 */ "windowstate_option ::= STATE_WINDOW LP ids RP", - /* 215 */ "fill_opt ::=", - /* 216 */ "fill_opt ::= FILL LP ID COMMA tagitemlist RP", - /* 217 */ "fill_opt ::= FILL LP ID RP", - /* 218 */ "sliding_opt ::= SLIDING LP tmvar RP", - /* 219 */ "sliding_opt ::=", - /* 220 */ "orderby_opt ::=", - /* 221 */ "orderby_opt ::= ORDER BY sortlist", - /* 222 */ "sortlist ::= sortlist COMMA item sortorder", - /* 223 */ "sortlist ::= sortlist COMMA arrow sortorder", - /* 224 */ "sortlist ::= item sortorder", - /* 225 */ "sortlist ::= arrow sortorder", - /* 226 */ "item ::= ID", - /* 227 */ "item ::= ID DOT ID", - /* 228 */ "sortorder ::= ASC", - /* 229 */ "sortorder ::= DESC", - /* 230 */ "sortorder ::=", - /* 231 */ "groupby_opt ::=", - /* 232 */ "groupby_opt ::= GROUP BY grouplist", - /* 233 */ "grouplist ::= grouplist COMMA item", - /* 234 */ "grouplist ::= grouplist COMMA arrow", - /* 235 */ "grouplist ::= item", - /* 236 */ "grouplist ::= arrow", - /* 237 */ "having_opt ::=", - /* 238 */ "having_opt ::= HAVING expr", - /* 239 */ "limit_opt ::=", - /* 240 */ "limit_opt ::= LIMIT signed", - /* 241 */ "limit_opt ::= LIMIT signed OFFSET signed", - /* 242 */ "limit_opt ::= LIMIT signed COMMA signed", - /* 243 */ "slimit_opt ::=", - /* 244 */ "slimit_opt ::= SLIMIT signed", - /* 245 */ "slimit_opt ::= SLIMIT signed SOFFSET signed", - /* 246 */ "slimit_opt ::= SLIMIT signed COMMA signed", - /* 247 */ "where_opt ::=", - /* 248 */ "where_opt ::= WHERE expr", - /* 249 */ "expr ::= LP expr RP", - /* 250 */ "expr ::= ID", - /* 251 */ "expr ::= ID DOT ID", - /* 252 */ "expr ::= ID DOT STAR", - /* 253 */ "expr ::= INTEGER", - /* 254 */ "expr ::= MINUS INTEGER", - /* 255 */ "expr ::= PLUS INTEGER", - /* 256 */ "expr ::= FLOAT", - /* 257 */ "expr ::= MINUS FLOAT", - /* 258 */ "expr ::= PLUS FLOAT", - /* 259 */ "expr ::= STRING", - /* 260 */ "expr ::= NOW", - /* 261 */ "expr ::= TODAY", - /* 262 */ "expr ::= VARIABLE", - /* 263 */ "expr ::= PLUS VARIABLE", - /* 264 */ "expr ::= MINUS VARIABLE", - /* 265 */ "expr ::= BOOL", - /* 266 */ "expr ::= NULL", - /* 267 */ "expr ::= ID LP exprlist RP", - /* 268 */ "expr ::= ID LP STAR RP", - /* 269 */ "expr ::= ID LP expr AS typename RP", - /* 270 */ "expr ::= expr IS NULL", - /* 271 */ "expr ::= expr IS NOT NULL", - /* 272 */ "expr ::= expr LT expr", - /* 273 */ "expr ::= expr GT expr", - /* 274 */ "expr ::= expr LE expr", - /* 275 */ "expr ::= expr GE expr", - /* 276 */ "expr ::= expr NE expr", - /* 277 */ "expr ::= expr EQ expr", - /* 278 */ "expr ::= expr BETWEEN expr AND expr", - /* 279 */ "expr ::= expr AND expr", - /* 280 */ "expr ::= expr OR expr", - /* 281 */ "expr ::= expr PLUS expr", - /* 282 */ "expr ::= expr MINUS expr", - /* 283 */ "expr ::= expr STAR expr", - /* 284 */ "expr ::= expr SLASH expr", - /* 285 */ "expr ::= expr REM expr", - /* 286 */ "expr ::= expr BITAND expr", - /* 287 */ "expr ::= expr BITOR expr", - /* 288 */ "expr ::= expr BITXOR expr", - /* 289 */ "expr ::= BITNOT expr", - /* 290 */ "expr ::= expr LSHIFT expr", - /* 291 */ "expr ::= expr RSHIFT expr", - /* 292 */ "expr ::= expr LIKE expr", - /* 293 */ "expr ::= expr MATCH expr", - /* 294 */ "expr ::= expr NMATCH expr", - /* 295 */ "expr ::= ID CONTAINS STRING", - /* 296 */ "expr ::= ID DOT ID CONTAINS STRING", - /* 297 */ "arrow ::= ID ARROW STRING", - /* 298 */ "arrow ::= ID DOT ID ARROW STRING", - /* 299 */ "expr ::= arrow", - /* 300 */ "expr ::= expr IN LP exprlist RP", - /* 301 */ "exprlist ::= exprlist COMMA expritem", - /* 302 */ "exprlist ::= expritem", - /* 303 */ "expritem ::= expr", - /* 304 */ "expritem ::=", - /* 305 */ "cmd ::= RESET QUERY CACHE", - /* 306 */ "cmd ::= SYNCDB ids REPLICA", - /* 307 */ "cmd ::= ALTER TABLE ids cpxName ADD COLUMN columnlist", - /* 308 */ "cmd ::= ALTER TABLE ids cpxName DROP COLUMN ids", - /* 309 */ "cmd ::= ALTER TABLE ids cpxName MODIFY COLUMN columnlist", - /* 310 */ "cmd ::= ALTER TABLE ids cpxName ADD TAG columnlist", - /* 311 */ "cmd ::= ALTER TABLE ids cpxName DROP TAG ids", - /* 312 */ "cmd ::= ALTER TABLE ids cpxName CHANGE TAG ids ids", - /* 313 */ "cmd ::= ALTER TABLE ids cpxName SET TAG ids EQ tagitem", - /* 314 */ "cmd ::= ALTER TABLE ids cpxName MODIFY TAG columnlist", - /* 315 */ "cmd ::= ALTER STABLE ids cpxName ADD COLUMN columnlist", - /* 316 */ "cmd ::= ALTER STABLE ids cpxName DROP COLUMN ids", - /* 317 */ "cmd ::= ALTER STABLE ids cpxName MODIFY COLUMN columnlist", - /* 318 */ "cmd ::= ALTER STABLE ids cpxName ADD TAG columnlist", - /* 319 */ "cmd ::= ALTER STABLE ids cpxName DROP TAG ids", - /* 320 */ "cmd ::= ALTER STABLE ids cpxName CHANGE TAG ids ids", - /* 321 */ "cmd ::= ALTER STABLE ids cpxName SET TAG ids EQ tagitem", - /* 322 */ "cmd ::= ALTER STABLE ids cpxName MODIFY TAG columnlist", - /* 323 */ "cmd ::= KILL CONNECTION INTEGER", - /* 324 */ "cmd ::= KILL STREAM INTEGER COLON INTEGER", - /* 325 */ "cmd ::= KILL QUERY INTEGER COLON INTEGER", - /* 326 */ "cmd ::= DELETE FROM ifexists ids cpxName where_opt", + /* 42 */ "cmd ::= ALTER USER ids TAGS ids", + /* 43 */ "cmd ::= ALTER DNODE ids ids", + /* 44 */ "cmd ::= ALTER DNODE ids ids ids", + /* 45 */ "cmd ::= ALTER LOCAL ids", + /* 46 */ "cmd ::= ALTER LOCAL ids ids", + /* 47 */ "cmd ::= ALTER DATABASE ids alter_db_optr", + /* 48 */ "cmd ::= ALTER TOPIC ids alter_topic_optr", + /* 49 */ "cmd ::= ALTER ACCOUNT ids acct_optr", + /* 50 */ "cmd ::= ALTER ACCOUNT ids PASS ids acct_optr", + /* 51 */ "cmd ::= COMPACT VNODES IN LP exprlist RP", + /* 52 */ "ids ::= ID", + /* 53 */ "ids ::= STRING", + /* 54 */ "ifexists ::= IF EXISTS", + /* 55 */ "ifexists ::=", + /* 56 */ "ifnotexists ::= IF NOT EXISTS", + /* 57 */ "ifnotexists ::=", + /* 58 */ "cmd ::= CREATE DNODE ids", + /* 59 */ "cmd ::= CREATE ACCOUNT ids PASS ids acct_optr", + /* 60 */ "cmd ::= CREATE DATABASE ifnotexists ids db_optr", + /* 61 */ "cmd ::= CREATE TOPIC ifnotexists ids topic_optr", + /* 62 */ "cmd ::= CREATE FUNCTION ids AS ids OUTPUTTYPE typename bufsize", + /* 63 */ "cmd ::= CREATE AGGREGATE FUNCTION ids AS ids OUTPUTTYPE typename bufsize", + /* 64 */ "cmd ::= CREATE USER ids PASS ids", + /* 65 */ "cmd ::= CREATE USER ids PASS ids TAGS ids", + /* 66 */ "bufsize ::=", + /* 67 */ "bufsize ::= BUFSIZE INTEGER", + /* 68 */ "pps ::=", + /* 69 */ "pps ::= PPS INTEGER", + /* 70 */ "tseries ::=", + /* 71 */ "tseries ::= TSERIES INTEGER", + /* 72 */ "dbs ::=", + /* 73 */ "dbs ::= DBS INTEGER", + /* 74 */ "streams ::=", + /* 75 */ "streams ::= STREAMS INTEGER", + /* 76 */ "storage ::=", + /* 77 */ "storage ::= STORAGE INTEGER", + /* 78 */ "qtime ::=", + /* 79 */ "qtime ::= QTIME INTEGER", + /* 80 */ "users ::=", + /* 81 */ "users ::= USERS INTEGER", + /* 82 */ "conns ::=", + /* 83 */ "conns ::= CONNS INTEGER", + /* 84 */ "state ::=", + /* 85 */ "state ::= STATE ids", + /* 86 */ "acct_optr ::= pps tseries storage streams qtime dbs users conns state", + /* 87 */ "intitemlist ::= intitemlist COMMA intitem", + /* 88 */ "intitemlist ::= intitem", + /* 89 */ "intitem ::= INTEGER", + /* 90 */ "keep ::= KEEP intitemlist", + /* 91 */ "cache ::= CACHE INTEGER", + /* 92 */ "replica ::= REPLICA INTEGER", + /* 93 */ "quorum ::= QUORUM INTEGER", + /* 94 */ "days ::= DAYS INTEGER", + /* 95 */ "minrows ::= MINROWS INTEGER", + /* 96 */ "maxrows ::= MAXROWS INTEGER", + /* 97 */ "blocks ::= BLOCKS INTEGER", + /* 98 */ "ctime ::= CTIME INTEGER", + /* 99 */ "wal ::= WAL INTEGER", + /* 100 */ "fsync ::= FSYNC INTEGER", + /* 101 */ "comp ::= COMP INTEGER", + /* 102 */ "prec ::= PRECISION STRING", + /* 103 */ "update ::= UPDATE INTEGER", + /* 104 */ "cachelast ::= CACHELAST INTEGER", + /* 105 */ "partitions ::= PARTITIONS INTEGER", + /* 106 */ "db_optr ::=", + /* 107 */ "db_optr ::= db_optr cache", + /* 108 */ "db_optr ::= db_optr replica", + /* 109 */ "db_optr ::= db_optr quorum", + /* 110 */ "db_optr ::= db_optr days", + /* 111 */ "db_optr ::= db_optr minrows", + /* 112 */ "db_optr ::= db_optr maxrows", + /* 113 */ "db_optr ::= db_optr blocks", + /* 114 */ "db_optr ::= db_optr ctime", + /* 115 */ "db_optr ::= db_optr wal", + /* 116 */ "db_optr ::= db_optr fsync", + /* 117 */ "db_optr ::= db_optr comp", + /* 118 */ "db_optr ::= db_optr prec", + /* 119 */ "db_optr ::= db_optr keep", + /* 120 */ "db_optr ::= db_optr update", + /* 121 */ "db_optr ::= db_optr cachelast", + /* 122 */ "topic_optr ::= db_optr", + /* 123 */ "topic_optr ::= topic_optr partitions", + /* 124 */ "alter_db_optr ::=", + /* 125 */ "alter_db_optr ::= alter_db_optr replica", + /* 126 */ "alter_db_optr ::= alter_db_optr quorum", + /* 127 */ "alter_db_optr ::= alter_db_optr keep", + /* 128 */ "alter_db_optr ::= alter_db_optr blocks", + /* 129 */ "alter_db_optr ::= alter_db_optr comp", + /* 130 */ "alter_db_optr ::= alter_db_optr update", + /* 131 */ "alter_db_optr ::= alter_db_optr cachelast", + /* 132 */ "alter_topic_optr ::= alter_db_optr", + /* 133 */ "alter_topic_optr ::= alter_topic_optr partitions", + /* 134 */ "typename ::= ids", + /* 135 */ "typename ::= ids LP signed RP", + /* 136 */ "typename ::= ids UNSIGNED", + /* 137 */ "signed ::= INTEGER", + /* 138 */ "signed ::= PLUS INTEGER", + /* 139 */ "signed ::= MINUS INTEGER", + /* 140 */ "cmd ::= CREATE TABLE create_table_args", + /* 141 */ "cmd ::= CREATE TABLE create_stable_args", + /* 142 */ "cmd ::= CREATE STABLE create_stable_args", + /* 143 */ "cmd ::= CREATE TABLE create_table_list", + /* 144 */ "create_table_list ::= create_from_stable", + /* 145 */ "create_table_list ::= create_table_list create_from_stable", + /* 146 */ "create_table_args ::= ifnotexists ids cpxName LP columnlist RP", + /* 147 */ "create_stable_args ::= ifnotexists ids cpxName LP columnlist RP TAGS LP columnlist RP", + /* 148 */ "create_from_stable ::= ifnotexists ids cpxName USING ids cpxName TAGS LP tagitemlist RP", + /* 149 */ "create_from_stable ::= ifnotexists ids cpxName USING ids cpxName LP tagNamelist RP TAGS LP tagitemlist RP", + /* 150 */ "tagNamelist ::= tagNamelist COMMA ids", + /* 151 */ "tagNamelist ::= ids", + /* 152 */ "create_table_args ::= ifnotexists ids cpxName to_opt split_opt AS select", + /* 153 */ "to_opt ::=", + /* 154 */ "to_opt ::= TO ids cpxName", + /* 155 */ "split_opt ::=", + /* 156 */ "split_opt ::= SPLIT ids", + /* 157 */ "columnlist ::= columnlist COMMA column", + /* 158 */ "columnlist ::= column", + /* 159 */ "column ::= ids typename", + /* 160 */ "tagitemlist ::= tagitemlist COMMA tagitem", + /* 161 */ "tagitemlist ::= tagitem", + /* 162 */ "tagitem ::= INTEGER", + /* 163 */ "tagitem ::= FLOAT", + /* 164 */ "tagitem ::= STRING", + /* 165 */ "tagitem ::= BOOL", + /* 166 */ "tagitem ::= NULL", + /* 167 */ "tagitem ::= NOW", + /* 168 */ "tagitem ::= NOW PLUS VARIABLE", + /* 169 */ "tagitem ::= NOW MINUS VARIABLE", + /* 170 */ "tagitem ::= MINUS INTEGER", + /* 171 */ "tagitem ::= MINUS FLOAT", + /* 172 */ "tagitem ::= PLUS INTEGER", + /* 173 */ "tagitem ::= PLUS FLOAT", + /* 174 */ "select ::= SELECT selcollist from where_opt range_option interval_option sliding_opt session_option windowstate_option fill_opt groupby_opt having_opt orderby_opt slimit_opt limit_opt", + /* 175 */ "select ::= LP select RP", + /* 176 */ "union ::= select", + /* 177 */ "union ::= union UNION ALL select", + /* 178 */ "cmd ::= union", + /* 179 */ "select ::= SELECT selcollist", + /* 180 */ "sclp ::= selcollist COMMA", + /* 181 */ "sclp ::=", + /* 182 */ "selcollist ::= sclp distinct expr as", + /* 183 */ "selcollist ::= sclp STAR", + /* 184 */ "as ::= AS ids", + /* 185 */ "as ::= ids", + /* 186 */ "as ::=", + /* 187 */ "distinct ::= DISTINCT", + /* 188 */ "distinct ::=", + /* 189 */ "from ::= FROM tablelist", + /* 190 */ "from ::= FROM sub", + /* 191 */ "sub ::= LP union RP", + /* 192 */ "sub ::= LP union RP ids", + /* 193 */ "sub ::= sub COMMA LP union RP ids", + /* 194 */ "tablelist ::= ids cpxName", + /* 195 */ "tablelist ::= ids cpxName ids", + /* 196 */ "tablelist ::= tablelist COMMA ids cpxName", + /* 197 */ "tablelist ::= tablelist COMMA ids cpxName ids", + /* 198 */ "tmvar ::= VARIABLE", + /* 199 */ "timestamp ::= INTEGER", + /* 200 */ "timestamp ::= MINUS INTEGER", + /* 201 */ "timestamp ::= PLUS INTEGER", + /* 202 */ "timestamp ::= STRING", + /* 203 */ "timestamp ::= NOW", + /* 204 */ "timestamp ::= NOW PLUS VARIABLE", + /* 205 */ "timestamp ::= NOW MINUS VARIABLE", + /* 206 */ "range_option ::=", + /* 207 */ "range_option ::= RANGE LP timestamp COMMA timestamp RP", + /* 208 */ "interval_option ::= intervalKey LP tmvar RP", + /* 209 */ "interval_option ::= intervalKey LP tmvar COMMA tmvar RP", + /* 210 */ "interval_option ::=", + /* 211 */ "intervalKey ::= INTERVAL", + /* 212 */ "intervalKey ::= EVERY", + /* 213 */ "session_option ::=", + /* 214 */ "session_option ::= SESSION LP ids cpxName COMMA tmvar RP", + /* 215 */ "windowstate_option ::=", + /* 216 */ "windowstate_option ::= STATE_WINDOW LP ids RP", + /* 217 */ "fill_opt ::=", + /* 218 */ "fill_opt ::= FILL LP ID COMMA tagitemlist RP", + /* 219 */ "fill_opt ::= FILL LP ID RP", + /* 220 */ "sliding_opt ::= SLIDING LP tmvar RP", + /* 221 */ "sliding_opt ::=", + /* 222 */ "orderby_opt ::=", + /* 223 */ "orderby_opt ::= ORDER BY sortlist", + /* 224 */ "sortlist ::= sortlist COMMA item sortorder", + /* 225 */ "sortlist ::= sortlist COMMA arrow sortorder", + /* 226 */ "sortlist ::= item sortorder", + /* 227 */ "sortlist ::= arrow sortorder", + /* 228 */ "item ::= ID", + /* 229 */ "item ::= ID DOT ID", + /* 230 */ "sortorder ::= ASC", + /* 231 */ "sortorder ::= DESC", + /* 232 */ "sortorder ::=", + /* 233 */ "groupby_opt ::=", + /* 234 */ "groupby_opt ::= GROUP BY grouplist", + /* 235 */ "grouplist ::= grouplist COMMA item", + /* 236 */ "grouplist ::= grouplist COMMA arrow", + /* 237 */ "grouplist ::= item", + /* 238 */ "grouplist ::= arrow", + /* 239 */ "having_opt ::=", + /* 240 */ "having_opt ::= HAVING expr", + /* 241 */ "limit_opt ::=", + /* 242 */ "limit_opt ::= LIMIT signed", + /* 243 */ "limit_opt ::= LIMIT signed OFFSET signed", + /* 244 */ "limit_opt ::= LIMIT signed COMMA signed", + /* 245 */ "slimit_opt ::=", + /* 246 */ "slimit_opt ::= SLIMIT signed", + /* 247 */ "slimit_opt ::= SLIMIT signed SOFFSET signed", + /* 248 */ "slimit_opt ::= SLIMIT signed COMMA signed", + /* 249 */ "where_opt ::=", + /* 250 */ "where_opt ::= WHERE expr", + /* 251 */ "expr ::= LP expr RP", + /* 252 */ "expr ::= ID", + /* 253 */ "expr ::= ID DOT ID", + /* 254 */ "expr ::= ID DOT STAR", + /* 255 */ "expr ::= INTEGER", + /* 256 */ "expr ::= MINUS INTEGER", + /* 257 */ "expr ::= PLUS INTEGER", + /* 258 */ "expr ::= FLOAT", + /* 259 */ "expr ::= MINUS FLOAT", + /* 260 */ "expr ::= PLUS FLOAT", + /* 261 */ "expr ::= STRING", + /* 262 */ "expr ::= NOW", + /* 263 */ "expr ::= TODAY", + /* 264 */ "expr ::= VARIABLE", + /* 265 */ "expr ::= PLUS VARIABLE", + /* 266 */ "expr ::= MINUS VARIABLE", + /* 267 */ "expr ::= BOOL", + /* 268 */ "expr ::= NULL", + /* 269 */ "expr ::= ID LP exprlist RP", + /* 270 */ "expr ::= ID LP STAR RP", + /* 271 */ "expr ::= ID LP expr AS typename RP", + /* 272 */ "expr ::= expr IS NULL", + /* 273 */ "expr ::= expr IS NOT NULL", + /* 274 */ "expr ::= expr LT expr", + /* 275 */ "expr ::= expr GT expr", + /* 276 */ "expr ::= expr LE expr", + /* 277 */ "expr ::= expr GE expr", + /* 278 */ "expr ::= expr NE expr", + /* 279 */ "expr ::= expr EQ expr", + /* 280 */ "expr ::= expr BETWEEN expr AND expr", + /* 281 */ "expr ::= expr AND expr", + /* 282 */ "expr ::= expr OR expr", + /* 283 */ "expr ::= expr PLUS expr", + /* 284 */ "expr ::= expr MINUS expr", + /* 285 */ "expr ::= expr STAR expr", + /* 286 */ "expr ::= expr SLASH expr", + /* 287 */ "expr ::= expr REM expr", + /* 288 */ "expr ::= expr BITAND expr", + /* 289 */ "expr ::= expr BITOR expr", + /* 290 */ "expr ::= expr BITXOR expr", + /* 291 */ "expr ::= BITNOT expr", + /* 292 */ "expr ::= expr LSHIFT expr", + /* 293 */ "expr ::= expr RSHIFT expr", + /* 294 */ "expr ::= expr LIKE expr", + /* 295 */ "expr ::= expr MATCH expr", + /* 296 */ "expr ::= expr NMATCH expr", + /* 297 */ "expr ::= ID CONTAINS STRING", + /* 298 */ "expr ::= ID DOT ID CONTAINS STRING", + /* 299 */ "arrow ::= ID ARROW STRING", + /* 300 */ "arrow ::= ID DOT ID ARROW STRING", + /* 301 */ "expr ::= arrow", + /* 302 */ "expr ::= expr IN LP exprlist RP", + /* 303 */ "exprlist ::= exprlist COMMA expritem", + /* 304 */ "exprlist ::= expritem", + /* 305 */ "expritem ::= expr", + /* 306 */ "expritem ::=", + /* 307 */ "cmd ::= RESET QUERY CACHE", + /* 308 */ "cmd ::= SYNCDB ids REPLICA", + /* 309 */ "cmd ::= ALTER TABLE ids cpxName ADD COLUMN columnlist", + /* 310 */ "cmd ::= ALTER TABLE ids cpxName DROP COLUMN ids", + /* 311 */ "cmd ::= ALTER TABLE ids cpxName MODIFY COLUMN columnlist", + /* 312 */ "cmd ::= ALTER TABLE ids cpxName ADD TAG columnlist", + /* 313 */ "cmd ::= ALTER TABLE ids cpxName DROP TAG ids", + /* 314 */ "cmd ::= ALTER TABLE ids cpxName CHANGE TAG ids ids", + /* 315 */ "cmd ::= ALTER TABLE ids cpxName SET TAG ids EQ tagitem", + /* 316 */ "cmd ::= ALTER TABLE ids cpxName MODIFY TAG columnlist", + /* 317 */ "cmd ::= ALTER STABLE ids cpxName ADD COLUMN columnlist", + /* 318 */ "cmd ::= ALTER STABLE ids cpxName DROP COLUMN ids", + /* 319 */ "cmd ::= ALTER STABLE ids cpxName MODIFY COLUMN columnlist", + /* 320 */ "cmd ::= ALTER STABLE ids cpxName ADD TAG columnlist", + /* 321 */ "cmd ::= ALTER STABLE ids cpxName DROP TAG ids", + /* 322 */ "cmd ::= ALTER STABLE ids cpxName CHANGE TAG ids ids", + /* 323 */ "cmd ::= ALTER STABLE ids cpxName SET TAG ids EQ tagitem", + /* 324 */ "cmd ::= ALTER STABLE ids cpxName MODIFY TAG columnlist", + /* 325 */ "cmd ::= KILL CONNECTION INTEGER", + /* 326 */ "cmd ::= KILL STREAM INTEGER COLON INTEGER", + /* 327 */ "cmd ::= KILL QUERY INTEGER COLON INTEGER", + /* 328 */ "cmd ::= DELETE FROM ifexists ids cpxName where_opt", }; #endif /* NDEBUG */ @@ -1982,291 +1982,293 @@ static const struct { { 208, -3 }, /* (39) cmd ::= DESC ids cpxName */ { 208, -5 }, /* (40) cmd ::= ALTER USER ids PASS ids */ { 208, -5 }, /* (41) cmd ::= ALTER USER ids PRIVILEGE ids */ - { 208, -4 }, /* (42) cmd ::= ALTER DNODE ids ids */ - { 208, -5 }, /* (43) cmd ::= ALTER DNODE ids ids ids */ - { 208, -3 }, /* (44) cmd ::= ALTER LOCAL ids */ - { 208, -4 }, /* (45) cmd ::= ALTER LOCAL ids ids */ - { 208, -4 }, /* (46) cmd ::= ALTER DATABASE ids alter_db_optr */ - { 208, -4 }, /* (47) cmd ::= ALTER TOPIC ids alter_topic_optr */ - { 208, -4 }, /* (48) cmd ::= ALTER ACCOUNT ids acct_optr */ - { 208, -6 }, /* (49) cmd ::= ALTER ACCOUNT ids PASS ids acct_optr */ - { 208, -6 }, /* (50) cmd ::= COMPACT VNODES IN LP exprlist RP */ - { 209, -1 }, /* (51) ids ::= ID */ - { 209, -1 }, /* (52) ids ::= STRING */ - { 212, -2 }, /* (53) ifexists ::= IF EXISTS */ - { 212, 0 }, /* (54) ifexists ::= */ - { 217, -3 }, /* (55) ifnotexists ::= IF NOT EXISTS */ - { 217, 0 }, /* (56) ifnotexists ::= */ - { 208, -3 }, /* (57) cmd ::= CREATE DNODE ids */ - { 208, -6 }, /* (58) cmd ::= CREATE ACCOUNT ids PASS ids acct_optr */ - { 208, -5 }, /* (59) cmd ::= CREATE DATABASE ifnotexists ids db_optr */ - { 208, -5 }, /* (60) cmd ::= CREATE TOPIC ifnotexists ids topic_optr */ - { 208, -8 }, /* (61) cmd ::= CREATE FUNCTION ids AS ids OUTPUTTYPE typename bufsize */ - { 208, -9 }, /* (62) cmd ::= CREATE AGGREGATE FUNCTION ids AS ids OUTPUTTYPE typename bufsize */ - { 208, -5 }, /* (63) cmd ::= CREATE USER ids PASS ids */ - { 221, 0 }, /* (64) bufsize ::= */ - { 221, -2 }, /* (65) bufsize ::= BUFSIZE INTEGER */ - { 222, 0 }, /* (66) pps ::= */ - { 222, -2 }, /* (67) pps ::= PPS INTEGER */ - { 223, 0 }, /* (68) tseries ::= */ - { 223, -2 }, /* (69) tseries ::= TSERIES INTEGER */ - { 224, 0 }, /* (70) dbs ::= */ - { 224, -2 }, /* (71) dbs ::= DBS INTEGER */ - { 225, 0 }, /* (72) streams ::= */ - { 225, -2 }, /* (73) streams ::= STREAMS INTEGER */ - { 226, 0 }, /* (74) storage ::= */ - { 226, -2 }, /* (75) storage ::= STORAGE INTEGER */ - { 227, 0 }, /* (76) qtime ::= */ - { 227, -2 }, /* (77) qtime ::= QTIME INTEGER */ - { 228, 0 }, /* (78) users ::= */ - { 228, -2 }, /* (79) users ::= USERS INTEGER */ - { 229, 0 }, /* (80) conns ::= */ - { 229, -2 }, /* (81) conns ::= CONNS INTEGER */ - { 230, 0 }, /* (82) state ::= */ - { 230, -2 }, /* (83) state ::= STATE ids */ - { 215, -9 }, /* (84) acct_optr ::= pps tseries storage streams qtime dbs users conns state */ - { 231, -3 }, /* (85) intitemlist ::= intitemlist COMMA intitem */ - { 231, -1 }, /* (86) intitemlist ::= intitem */ - { 232, -1 }, /* (87) intitem ::= INTEGER */ - { 233, -2 }, /* (88) keep ::= KEEP intitemlist */ - { 234, -2 }, /* (89) cache ::= CACHE INTEGER */ - { 235, -2 }, /* (90) replica ::= REPLICA INTEGER */ - { 236, -2 }, /* (91) quorum ::= QUORUM INTEGER */ - { 237, -2 }, /* (92) days ::= DAYS INTEGER */ - { 238, -2 }, /* (93) minrows ::= MINROWS INTEGER */ - { 239, -2 }, /* (94) maxrows ::= MAXROWS INTEGER */ - { 240, -2 }, /* (95) blocks ::= BLOCKS INTEGER */ - { 241, -2 }, /* (96) ctime ::= CTIME INTEGER */ - { 242, -2 }, /* (97) wal ::= WAL INTEGER */ - { 243, -2 }, /* (98) fsync ::= FSYNC INTEGER */ - { 244, -2 }, /* (99) comp ::= COMP INTEGER */ - { 245, -2 }, /* (100) prec ::= PRECISION STRING */ - { 246, -2 }, /* (101) update ::= UPDATE INTEGER */ - { 247, -2 }, /* (102) cachelast ::= CACHELAST INTEGER */ - { 248, -2 }, /* (103) partitions ::= PARTITIONS INTEGER */ - { 218, 0 }, /* (104) db_optr ::= */ - { 218, -2 }, /* (105) db_optr ::= db_optr cache */ - { 218, -2 }, /* (106) db_optr ::= db_optr replica */ - { 218, -2 }, /* (107) db_optr ::= db_optr quorum */ - { 218, -2 }, /* (108) db_optr ::= db_optr days */ - { 218, -2 }, /* (109) db_optr ::= db_optr minrows */ - { 218, -2 }, /* (110) db_optr ::= db_optr maxrows */ - { 218, -2 }, /* (111) db_optr ::= db_optr blocks */ - { 218, -2 }, /* (112) db_optr ::= db_optr ctime */ - { 218, -2 }, /* (113) db_optr ::= db_optr wal */ - { 218, -2 }, /* (114) db_optr ::= db_optr fsync */ - { 218, -2 }, /* (115) db_optr ::= db_optr comp */ - { 218, -2 }, /* (116) db_optr ::= db_optr prec */ - { 218, -2 }, /* (117) db_optr ::= db_optr keep */ - { 218, -2 }, /* (118) db_optr ::= db_optr update */ - { 218, -2 }, /* (119) db_optr ::= db_optr cachelast */ - { 219, -1 }, /* (120) topic_optr ::= db_optr */ - { 219, -2 }, /* (121) topic_optr ::= topic_optr partitions */ - { 213, 0 }, /* (122) alter_db_optr ::= */ - { 213, -2 }, /* (123) alter_db_optr ::= alter_db_optr replica */ - { 213, -2 }, /* (124) alter_db_optr ::= alter_db_optr quorum */ - { 213, -2 }, /* (125) alter_db_optr ::= alter_db_optr keep */ - { 213, -2 }, /* (126) alter_db_optr ::= alter_db_optr blocks */ - { 213, -2 }, /* (127) alter_db_optr ::= alter_db_optr comp */ - { 213, -2 }, /* (128) alter_db_optr ::= alter_db_optr update */ - { 213, -2 }, /* (129) alter_db_optr ::= alter_db_optr cachelast */ - { 214, -1 }, /* (130) alter_topic_optr ::= alter_db_optr */ - { 214, -2 }, /* (131) alter_topic_optr ::= alter_topic_optr partitions */ - { 220, -1 }, /* (132) typename ::= ids */ - { 220, -4 }, /* (133) typename ::= ids LP signed RP */ - { 220, -2 }, /* (134) typename ::= ids UNSIGNED */ - { 249, -1 }, /* (135) signed ::= INTEGER */ - { 249, -2 }, /* (136) signed ::= PLUS INTEGER */ - { 249, -2 }, /* (137) signed ::= MINUS INTEGER */ - { 208, -3 }, /* (138) cmd ::= CREATE TABLE create_table_args */ - { 208, -3 }, /* (139) cmd ::= CREATE TABLE create_stable_args */ - { 208, -3 }, /* (140) cmd ::= CREATE STABLE create_stable_args */ - { 208, -3 }, /* (141) cmd ::= CREATE TABLE create_table_list */ - { 252, -1 }, /* (142) create_table_list ::= create_from_stable */ - { 252, -2 }, /* (143) create_table_list ::= create_table_list create_from_stable */ - { 250, -6 }, /* (144) create_table_args ::= ifnotexists ids cpxName LP columnlist RP */ - { 251, -10 }, /* (145) create_stable_args ::= ifnotexists ids cpxName LP columnlist RP TAGS LP columnlist RP */ - { 253, -10 }, /* (146) create_from_stable ::= ifnotexists ids cpxName USING ids cpxName TAGS LP tagitemlist RP */ - { 253, -13 }, /* (147) create_from_stable ::= ifnotexists ids cpxName USING ids cpxName LP tagNamelist RP TAGS LP tagitemlist RP */ - { 256, -3 }, /* (148) tagNamelist ::= tagNamelist COMMA ids */ - { 256, -1 }, /* (149) tagNamelist ::= ids */ - { 250, -7 }, /* (150) create_table_args ::= ifnotexists ids cpxName to_opt split_opt AS select */ - { 257, 0 }, /* (151) to_opt ::= */ - { 257, -3 }, /* (152) to_opt ::= TO ids cpxName */ - { 258, 0 }, /* (153) split_opt ::= */ - { 258, -2 }, /* (154) split_opt ::= SPLIT ids */ - { 254, -3 }, /* (155) columnlist ::= columnlist COMMA column */ - { 254, -1 }, /* (156) columnlist ::= column */ - { 261, -2 }, /* (157) column ::= ids typename */ - { 255, -3 }, /* (158) tagitemlist ::= tagitemlist COMMA tagitem */ - { 255, -1 }, /* (159) tagitemlist ::= tagitem */ - { 262, -1 }, /* (160) tagitem ::= INTEGER */ - { 262, -1 }, /* (161) tagitem ::= FLOAT */ - { 262, -1 }, /* (162) tagitem ::= STRING */ - { 262, -1 }, /* (163) tagitem ::= BOOL */ - { 262, -1 }, /* (164) tagitem ::= NULL */ - { 262, -1 }, /* (165) tagitem ::= NOW */ - { 262, -3 }, /* (166) tagitem ::= NOW PLUS VARIABLE */ - { 262, -3 }, /* (167) tagitem ::= NOW MINUS VARIABLE */ - { 262, -2 }, /* (168) tagitem ::= MINUS INTEGER */ - { 262, -2 }, /* (169) tagitem ::= MINUS FLOAT */ - { 262, -2 }, /* (170) tagitem ::= PLUS INTEGER */ - { 262, -2 }, /* (171) tagitem ::= PLUS FLOAT */ - { 259, -15 }, /* (172) select ::= SELECT selcollist from where_opt range_option interval_option sliding_opt session_option windowstate_option fill_opt groupby_opt having_opt orderby_opt slimit_opt limit_opt */ - { 259, -3 }, /* (173) select ::= LP select RP */ - { 277, -1 }, /* (174) union ::= select */ - { 277, -4 }, /* (175) union ::= union UNION ALL select */ - { 208, -1 }, /* (176) cmd ::= union */ - { 259, -2 }, /* (177) select ::= SELECT selcollist */ - { 278, -2 }, /* (178) sclp ::= selcollist COMMA */ - { 278, 0 }, /* (179) sclp ::= */ - { 263, -4 }, /* (180) selcollist ::= sclp distinct expr as */ - { 263, -2 }, /* (181) selcollist ::= sclp STAR */ - { 281, -2 }, /* (182) as ::= AS ids */ - { 281, -1 }, /* (183) as ::= ids */ - { 281, 0 }, /* (184) as ::= */ - { 279, -1 }, /* (185) distinct ::= DISTINCT */ - { 279, 0 }, /* (186) distinct ::= */ - { 264, -2 }, /* (187) from ::= FROM tablelist */ - { 264, -2 }, /* (188) from ::= FROM sub */ - { 283, -3 }, /* (189) sub ::= LP union RP */ - { 283, -4 }, /* (190) sub ::= LP union RP ids */ - { 283, -6 }, /* (191) sub ::= sub COMMA LP union RP ids */ - { 282, -2 }, /* (192) tablelist ::= ids cpxName */ - { 282, -3 }, /* (193) tablelist ::= ids cpxName ids */ - { 282, -4 }, /* (194) tablelist ::= tablelist COMMA ids cpxName */ - { 282, -5 }, /* (195) tablelist ::= tablelist COMMA ids cpxName ids */ - { 284, -1 }, /* (196) tmvar ::= VARIABLE */ - { 285, -1 }, /* (197) timestamp ::= INTEGER */ - { 285, -2 }, /* (198) timestamp ::= MINUS INTEGER */ - { 285, -2 }, /* (199) timestamp ::= PLUS INTEGER */ - { 285, -1 }, /* (200) timestamp ::= STRING */ - { 285, -1 }, /* (201) timestamp ::= NOW */ - { 285, -3 }, /* (202) timestamp ::= NOW PLUS VARIABLE */ - { 285, -3 }, /* (203) timestamp ::= NOW MINUS VARIABLE */ - { 266, 0 }, /* (204) range_option ::= */ - { 266, -6 }, /* (205) range_option ::= RANGE LP timestamp COMMA timestamp RP */ - { 267, -4 }, /* (206) interval_option ::= intervalKey LP tmvar RP */ - { 267, -6 }, /* (207) interval_option ::= intervalKey LP tmvar COMMA tmvar RP */ - { 267, 0 }, /* (208) interval_option ::= */ - { 286, -1 }, /* (209) intervalKey ::= INTERVAL */ - { 286, -1 }, /* (210) intervalKey ::= EVERY */ - { 269, 0 }, /* (211) session_option ::= */ - { 269, -7 }, /* (212) session_option ::= SESSION LP ids cpxName COMMA tmvar RP */ - { 270, 0 }, /* (213) windowstate_option ::= */ - { 270, -4 }, /* (214) windowstate_option ::= STATE_WINDOW LP ids RP */ - { 271, 0 }, /* (215) fill_opt ::= */ - { 271, -6 }, /* (216) fill_opt ::= FILL LP ID COMMA tagitemlist RP */ - { 271, -4 }, /* (217) fill_opt ::= FILL LP ID RP */ - { 268, -4 }, /* (218) sliding_opt ::= SLIDING LP tmvar RP */ - { 268, 0 }, /* (219) sliding_opt ::= */ - { 274, 0 }, /* (220) orderby_opt ::= */ - { 274, -3 }, /* (221) orderby_opt ::= ORDER BY sortlist */ - { 287, -4 }, /* (222) sortlist ::= sortlist COMMA item sortorder */ - { 287, -4 }, /* (223) sortlist ::= sortlist COMMA arrow sortorder */ - { 287, -2 }, /* (224) sortlist ::= item sortorder */ - { 287, -2 }, /* (225) sortlist ::= arrow sortorder */ - { 288, -1 }, /* (226) item ::= ID */ - { 288, -3 }, /* (227) item ::= ID DOT ID */ - { 289, -1 }, /* (228) sortorder ::= ASC */ - { 289, -1 }, /* (229) sortorder ::= DESC */ - { 289, 0 }, /* (230) sortorder ::= */ - { 272, 0 }, /* (231) groupby_opt ::= */ - { 272, -3 }, /* (232) groupby_opt ::= GROUP BY grouplist */ - { 291, -3 }, /* (233) grouplist ::= grouplist COMMA item */ - { 291, -3 }, /* (234) grouplist ::= grouplist COMMA arrow */ - { 291, -1 }, /* (235) grouplist ::= item */ - { 291, -1 }, /* (236) grouplist ::= arrow */ - { 273, 0 }, /* (237) having_opt ::= */ - { 273, -2 }, /* (238) having_opt ::= HAVING expr */ - { 276, 0 }, /* (239) limit_opt ::= */ - { 276, -2 }, /* (240) limit_opt ::= LIMIT signed */ - { 276, -4 }, /* (241) limit_opt ::= LIMIT signed OFFSET signed */ - { 276, -4 }, /* (242) limit_opt ::= LIMIT signed COMMA signed */ - { 275, 0 }, /* (243) slimit_opt ::= */ - { 275, -2 }, /* (244) slimit_opt ::= SLIMIT signed */ - { 275, -4 }, /* (245) slimit_opt ::= SLIMIT signed SOFFSET signed */ - { 275, -4 }, /* (246) slimit_opt ::= SLIMIT signed COMMA signed */ - { 265, 0 }, /* (247) where_opt ::= */ - { 265, -2 }, /* (248) where_opt ::= WHERE expr */ - { 280, -3 }, /* (249) expr ::= LP expr RP */ - { 280, -1 }, /* (250) expr ::= ID */ - { 280, -3 }, /* (251) expr ::= ID DOT ID */ - { 280, -3 }, /* (252) expr ::= ID DOT STAR */ - { 280, -1 }, /* (253) expr ::= INTEGER */ - { 280, -2 }, /* (254) expr ::= MINUS INTEGER */ - { 280, -2 }, /* (255) expr ::= PLUS INTEGER */ - { 280, -1 }, /* (256) expr ::= FLOAT */ - { 280, -2 }, /* (257) expr ::= MINUS FLOAT */ - { 280, -2 }, /* (258) expr ::= PLUS FLOAT */ - { 280, -1 }, /* (259) expr ::= STRING */ - { 280, -1 }, /* (260) expr ::= NOW */ - { 280, -1 }, /* (261) expr ::= TODAY */ - { 280, -1 }, /* (262) expr ::= VARIABLE */ - { 280, -2 }, /* (263) expr ::= PLUS VARIABLE */ - { 280, -2 }, /* (264) expr ::= MINUS VARIABLE */ - { 280, -1 }, /* (265) expr ::= BOOL */ - { 280, -1 }, /* (266) expr ::= NULL */ - { 280, -4 }, /* (267) expr ::= ID LP exprlist RP */ - { 280, -4 }, /* (268) expr ::= ID LP STAR RP */ - { 280, -6 }, /* (269) expr ::= ID LP expr AS typename RP */ - { 280, -3 }, /* (270) expr ::= expr IS NULL */ - { 280, -4 }, /* (271) expr ::= expr IS NOT NULL */ - { 280, -3 }, /* (272) expr ::= expr LT expr */ - { 280, -3 }, /* (273) expr ::= expr GT expr */ - { 280, -3 }, /* (274) expr ::= expr LE expr */ - { 280, -3 }, /* (275) expr ::= expr GE expr */ - { 280, -3 }, /* (276) expr ::= expr NE expr */ - { 280, -3 }, /* (277) expr ::= expr EQ expr */ - { 280, -5 }, /* (278) expr ::= expr BETWEEN expr AND expr */ - { 280, -3 }, /* (279) expr ::= expr AND expr */ - { 280, -3 }, /* (280) expr ::= expr OR expr */ - { 280, -3 }, /* (281) expr ::= expr PLUS expr */ - { 280, -3 }, /* (282) expr ::= expr MINUS expr */ - { 280, -3 }, /* (283) expr ::= expr STAR expr */ - { 280, -3 }, /* (284) expr ::= expr SLASH expr */ - { 280, -3 }, /* (285) expr ::= expr REM expr */ - { 280, -3 }, /* (286) expr ::= expr BITAND expr */ - { 280, -3 }, /* (287) expr ::= expr BITOR expr */ - { 280, -3 }, /* (288) expr ::= expr BITXOR expr */ - { 280, -2 }, /* (289) expr ::= BITNOT expr */ - { 280, -3 }, /* (290) expr ::= expr LSHIFT expr */ - { 280, -3 }, /* (291) expr ::= expr RSHIFT expr */ - { 280, -3 }, /* (292) expr ::= expr LIKE expr */ - { 280, -3 }, /* (293) expr ::= expr MATCH expr */ - { 280, -3 }, /* (294) expr ::= expr NMATCH expr */ - { 280, -3 }, /* (295) expr ::= ID CONTAINS STRING */ - { 280, -5 }, /* (296) expr ::= ID DOT ID CONTAINS STRING */ - { 290, -3 }, /* (297) arrow ::= ID ARROW STRING */ - { 290, -5 }, /* (298) arrow ::= ID DOT ID ARROW STRING */ - { 280, -1 }, /* (299) expr ::= arrow */ - { 280, -5 }, /* (300) expr ::= expr IN LP exprlist RP */ - { 216, -3 }, /* (301) exprlist ::= exprlist COMMA expritem */ - { 216, -1 }, /* (302) exprlist ::= expritem */ - { 292, -1 }, /* (303) expritem ::= expr */ - { 292, 0 }, /* (304) expritem ::= */ - { 208, -3 }, /* (305) cmd ::= RESET QUERY CACHE */ - { 208, -3 }, /* (306) cmd ::= SYNCDB ids REPLICA */ - { 208, -7 }, /* (307) cmd ::= ALTER TABLE ids cpxName ADD COLUMN columnlist */ - { 208, -7 }, /* (308) cmd ::= ALTER TABLE ids cpxName DROP COLUMN ids */ - { 208, -7 }, /* (309) cmd ::= ALTER TABLE ids cpxName MODIFY COLUMN columnlist */ - { 208, -7 }, /* (310) cmd ::= ALTER TABLE ids cpxName ADD TAG columnlist */ - { 208, -7 }, /* (311) cmd ::= ALTER TABLE ids cpxName DROP TAG ids */ - { 208, -8 }, /* (312) cmd ::= ALTER TABLE ids cpxName CHANGE TAG ids ids */ - { 208, -9 }, /* (313) cmd ::= ALTER TABLE ids cpxName SET TAG ids EQ tagitem */ - { 208, -7 }, /* (314) cmd ::= ALTER TABLE ids cpxName MODIFY TAG columnlist */ - { 208, -7 }, /* (315) cmd ::= ALTER STABLE ids cpxName ADD COLUMN columnlist */ - { 208, -7 }, /* (316) cmd ::= ALTER STABLE ids cpxName DROP COLUMN ids */ - { 208, -7 }, /* (317) cmd ::= ALTER STABLE ids cpxName MODIFY COLUMN columnlist */ - { 208, -7 }, /* (318) cmd ::= ALTER STABLE ids cpxName ADD TAG columnlist */ - { 208, -7 }, /* (319) cmd ::= ALTER STABLE ids cpxName DROP TAG ids */ - { 208, -8 }, /* (320) cmd ::= ALTER STABLE ids cpxName CHANGE TAG ids ids */ - { 208, -9 }, /* (321) cmd ::= ALTER STABLE ids cpxName SET TAG ids EQ tagitem */ - { 208, -7 }, /* (322) cmd ::= ALTER STABLE ids cpxName MODIFY TAG columnlist */ - { 208, -3 }, /* (323) cmd ::= KILL CONNECTION INTEGER */ - { 208, -5 }, /* (324) cmd ::= KILL STREAM INTEGER COLON INTEGER */ - { 208, -5 }, /* (325) cmd ::= KILL QUERY INTEGER COLON INTEGER */ - { 208, -6 }, /* (326) cmd ::= DELETE FROM ifexists ids cpxName where_opt */ + { 208, -5 }, /* (42) cmd ::= ALTER USER ids TAGS ids */ + { 208, -4 }, /* (43) cmd ::= ALTER DNODE ids ids */ + { 208, -5 }, /* (44) cmd ::= ALTER DNODE ids ids ids */ + { 208, -3 }, /* (45) cmd ::= ALTER LOCAL ids */ + { 208, -4 }, /* (46) cmd ::= ALTER LOCAL ids ids */ + { 208, -4 }, /* (47) cmd ::= ALTER DATABASE ids alter_db_optr */ + { 208, -4 }, /* (48) cmd ::= ALTER TOPIC ids alter_topic_optr */ + { 208, -4 }, /* (49) cmd ::= ALTER ACCOUNT ids acct_optr */ + { 208, -6 }, /* (50) cmd ::= ALTER ACCOUNT ids PASS ids acct_optr */ + { 208, -6 }, /* (51) cmd ::= COMPACT VNODES IN LP exprlist RP */ + { 209, -1 }, /* (52) ids ::= ID */ + { 209, -1 }, /* (53) ids ::= STRING */ + { 212, -2 }, /* (54) ifexists ::= IF EXISTS */ + { 212, 0 }, /* (55) ifexists ::= */ + { 217, -3 }, /* (56) ifnotexists ::= IF NOT EXISTS */ + { 217, 0 }, /* (57) ifnotexists ::= */ + { 208, -3 }, /* (58) cmd ::= CREATE DNODE ids */ + { 208, -6 }, /* (59) cmd ::= CREATE ACCOUNT ids PASS ids acct_optr */ + { 208, -5 }, /* (60) cmd ::= CREATE DATABASE ifnotexists ids db_optr */ + { 208, -5 }, /* (61) cmd ::= CREATE TOPIC ifnotexists ids topic_optr */ + { 208, -8 }, /* (62) cmd ::= CREATE FUNCTION ids AS ids OUTPUTTYPE typename bufsize */ + { 208, -9 }, /* (63) cmd ::= CREATE AGGREGATE FUNCTION ids AS ids OUTPUTTYPE typename bufsize */ + { 208, -5 }, /* (64) cmd ::= CREATE USER ids PASS ids */ + { 208, -7 }, /* (65) cmd ::= CREATE USER ids PASS ids TAGS ids */ + { 221, 0 }, /* (66) bufsize ::= */ + { 221, -2 }, /* (67) bufsize ::= BUFSIZE INTEGER */ + { 222, 0 }, /* (68) pps ::= */ + { 222, -2 }, /* (69) pps ::= PPS INTEGER */ + { 223, 0 }, /* (70) tseries ::= */ + { 223, -2 }, /* (71) tseries ::= TSERIES INTEGER */ + { 224, 0 }, /* (72) dbs ::= */ + { 224, -2 }, /* (73) dbs ::= DBS INTEGER */ + { 225, 0 }, /* (74) streams ::= */ + { 225, -2 }, /* (75) streams ::= STREAMS INTEGER */ + { 226, 0 }, /* (76) storage ::= */ + { 226, -2 }, /* (77) storage ::= STORAGE INTEGER */ + { 227, 0 }, /* (78) qtime ::= */ + { 227, -2 }, /* (79) qtime ::= QTIME INTEGER */ + { 228, 0 }, /* (80) users ::= */ + { 228, -2 }, /* (81) users ::= USERS INTEGER */ + { 229, 0 }, /* (82) conns ::= */ + { 229, -2 }, /* (83) conns ::= CONNS INTEGER */ + { 230, 0 }, /* (84) state ::= */ + { 230, -2 }, /* (85) state ::= STATE ids */ + { 215, -9 }, /* (86) acct_optr ::= pps tseries storage streams qtime dbs users conns state */ + { 231, -3 }, /* (87) intitemlist ::= intitemlist COMMA intitem */ + { 231, -1 }, /* (88) intitemlist ::= intitem */ + { 232, -1 }, /* (89) intitem ::= INTEGER */ + { 233, -2 }, /* (90) keep ::= KEEP intitemlist */ + { 234, -2 }, /* (91) cache ::= CACHE INTEGER */ + { 235, -2 }, /* (92) replica ::= REPLICA INTEGER */ + { 236, -2 }, /* (93) quorum ::= QUORUM INTEGER */ + { 237, -2 }, /* (94) days ::= DAYS INTEGER */ + { 238, -2 }, /* (95) minrows ::= MINROWS INTEGER */ + { 239, -2 }, /* (96) maxrows ::= MAXROWS INTEGER */ + { 240, -2 }, /* (97) blocks ::= BLOCKS INTEGER */ + { 241, -2 }, /* (98) ctime ::= CTIME INTEGER */ + { 242, -2 }, /* (99) wal ::= WAL INTEGER */ + { 243, -2 }, /* (100) fsync ::= FSYNC INTEGER */ + { 244, -2 }, /* (101) comp ::= COMP INTEGER */ + { 245, -2 }, /* (102) prec ::= PRECISION STRING */ + { 246, -2 }, /* (103) update ::= UPDATE INTEGER */ + { 247, -2 }, /* (104) cachelast ::= CACHELAST INTEGER */ + { 248, -2 }, /* (105) partitions ::= PARTITIONS INTEGER */ + { 218, 0 }, /* (106) db_optr ::= */ + { 218, -2 }, /* (107) db_optr ::= db_optr cache */ + { 218, -2 }, /* (108) db_optr ::= db_optr replica */ + { 218, -2 }, /* (109) db_optr ::= db_optr quorum */ + { 218, -2 }, /* (110) db_optr ::= db_optr days */ + { 218, -2 }, /* (111) db_optr ::= db_optr minrows */ + { 218, -2 }, /* (112) db_optr ::= db_optr maxrows */ + { 218, -2 }, /* (113) db_optr ::= db_optr blocks */ + { 218, -2 }, /* (114) db_optr ::= db_optr ctime */ + { 218, -2 }, /* (115) db_optr ::= db_optr wal */ + { 218, -2 }, /* (116) db_optr ::= db_optr fsync */ + { 218, -2 }, /* (117) db_optr ::= db_optr comp */ + { 218, -2 }, /* (118) db_optr ::= db_optr prec */ + { 218, -2 }, /* (119) db_optr ::= db_optr keep */ + { 218, -2 }, /* (120) db_optr ::= db_optr update */ + { 218, -2 }, /* (121) db_optr ::= db_optr cachelast */ + { 219, -1 }, /* (122) topic_optr ::= db_optr */ + { 219, -2 }, /* (123) topic_optr ::= topic_optr partitions */ + { 213, 0 }, /* (124) alter_db_optr ::= */ + { 213, -2 }, /* (125) alter_db_optr ::= alter_db_optr replica */ + { 213, -2 }, /* (126) alter_db_optr ::= alter_db_optr quorum */ + { 213, -2 }, /* (127) alter_db_optr ::= alter_db_optr keep */ + { 213, -2 }, /* (128) alter_db_optr ::= alter_db_optr blocks */ + { 213, -2 }, /* (129) alter_db_optr ::= alter_db_optr comp */ + { 213, -2 }, /* (130) alter_db_optr ::= alter_db_optr update */ + { 213, -2 }, /* (131) alter_db_optr ::= alter_db_optr cachelast */ + { 214, -1 }, /* (132) alter_topic_optr ::= alter_db_optr */ + { 214, -2 }, /* (133) alter_topic_optr ::= alter_topic_optr partitions */ + { 220, -1 }, /* (134) typename ::= ids */ + { 220, -4 }, /* (135) typename ::= ids LP signed RP */ + { 220, -2 }, /* (136) typename ::= ids UNSIGNED */ + { 249, -1 }, /* (137) signed ::= INTEGER */ + { 249, -2 }, /* (138) signed ::= PLUS INTEGER */ + { 249, -2 }, /* (139) signed ::= MINUS INTEGER */ + { 208, -3 }, /* (140) cmd ::= CREATE TABLE create_table_args */ + { 208, -3 }, /* (141) cmd ::= CREATE TABLE create_stable_args */ + { 208, -3 }, /* (142) cmd ::= CREATE STABLE create_stable_args */ + { 208, -3 }, /* (143) cmd ::= CREATE TABLE create_table_list */ + { 252, -1 }, /* (144) create_table_list ::= create_from_stable */ + { 252, -2 }, /* (145) create_table_list ::= create_table_list create_from_stable */ + { 250, -6 }, /* (146) create_table_args ::= ifnotexists ids cpxName LP columnlist RP */ + { 251, -10 }, /* (147) create_stable_args ::= ifnotexists ids cpxName LP columnlist RP TAGS LP columnlist RP */ + { 253, -10 }, /* (148) create_from_stable ::= ifnotexists ids cpxName USING ids cpxName TAGS LP tagitemlist RP */ + { 253, -13 }, /* (149) create_from_stable ::= ifnotexists ids cpxName USING ids cpxName LP tagNamelist RP TAGS LP tagitemlist RP */ + { 256, -3 }, /* (150) tagNamelist ::= tagNamelist COMMA ids */ + { 256, -1 }, /* (151) tagNamelist ::= ids */ + { 250, -7 }, /* (152) create_table_args ::= ifnotexists ids cpxName to_opt split_opt AS select */ + { 257, 0 }, /* (153) to_opt ::= */ + { 257, -3 }, /* (154) to_opt ::= TO ids cpxName */ + { 258, 0 }, /* (155) split_opt ::= */ + { 258, -2 }, /* (156) split_opt ::= SPLIT ids */ + { 254, -3 }, /* (157) columnlist ::= columnlist COMMA column */ + { 254, -1 }, /* (158) columnlist ::= column */ + { 261, -2 }, /* (159) column ::= ids typename */ + { 255, -3 }, /* (160) tagitemlist ::= tagitemlist COMMA tagitem */ + { 255, -1 }, /* (161) tagitemlist ::= tagitem */ + { 262, -1 }, /* (162) tagitem ::= INTEGER */ + { 262, -1 }, /* (163) tagitem ::= FLOAT */ + { 262, -1 }, /* (164) tagitem ::= STRING */ + { 262, -1 }, /* (165) tagitem ::= BOOL */ + { 262, -1 }, /* (166) tagitem ::= NULL */ + { 262, -1 }, /* (167) tagitem ::= NOW */ + { 262, -3 }, /* (168) tagitem ::= NOW PLUS VARIABLE */ + { 262, -3 }, /* (169) tagitem ::= NOW MINUS VARIABLE */ + { 262, -2 }, /* (170) tagitem ::= MINUS INTEGER */ + { 262, -2 }, /* (171) tagitem ::= MINUS FLOAT */ + { 262, -2 }, /* (172) tagitem ::= PLUS INTEGER */ + { 262, -2 }, /* (173) tagitem ::= PLUS FLOAT */ + { 259, -15 }, /* (174) select ::= SELECT selcollist from where_opt range_option interval_option sliding_opt session_option windowstate_option fill_opt groupby_opt having_opt orderby_opt slimit_opt limit_opt */ + { 259, -3 }, /* (175) select ::= LP select RP */ + { 277, -1 }, /* (176) union ::= select */ + { 277, -4 }, /* (177) union ::= union UNION ALL select */ + { 208, -1 }, /* (178) cmd ::= union */ + { 259, -2 }, /* (179) select ::= SELECT selcollist */ + { 278, -2 }, /* (180) sclp ::= selcollist COMMA */ + { 278, 0 }, /* (181) sclp ::= */ + { 263, -4 }, /* (182) selcollist ::= sclp distinct expr as */ + { 263, -2 }, /* (183) selcollist ::= sclp STAR */ + { 281, -2 }, /* (184) as ::= AS ids */ + { 281, -1 }, /* (185) as ::= ids */ + { 281, 0 }, /* (186) as ::= */ + { 279, -1 }, /* (187) distinct ::= DISTINCT */ + { 279, 0 }, /* (188) distinct ::= */ + { 264, -2 }, /* (189) from ::= FROM tablelist */ + { 264, -2 }, /* (190) from ::= FROM sub */ + { 283, -3 }, /* (191) sub ::= LP union RP */ + { 283, -4 }, /* (192) sub ::= LP union RP ids */ + { 283, -6 }, /* (193) sub ::= sub COMMA LP union RP ids */ + { 282, -2 }, /* (194) tablelist ::= ids cpxName */ + { 282, -3 }, /* (195) tablelist ::= ids cpxName ids */ + { 282, -4 }, /* (196) tablelist ::= tablelist COMMA ids cpxName */ + { 282, -5 }, /* (197) tablelist ::= tablelist COMMA ids cpxName ids */ + { 284, -1 }, /* (198) tmvar ::= VARIABLE */ + { 285, -1 }, /* (199) timestamp ::= INTEGER */ + { 285, -2 }, /* (200) timestamp ::= MINUS INTEGER */ + { 285, -2 }, /* (201) timestamp ::= PLUS INTEGER */ + { 285, -1 }, /* (202) timestamp ::= STRING */ + { 285, -1 }, /* (203) timestamp ::= NOW */ + { 285, -3 }, /* (204) timestamp ::= NOW PLUS VARIABLE */ + { 285, -3 }, /* (205) timestamp ::= NOW MINUS VARIABLE */ + { 266, 0 }, /* (206) range_option ::= */ + { 266, -6 }, /* (207) range_option ::= RANGE LP timestamp COMMA timestamp RP */ + { 267, -4 }, /* (208) interval_option ::= intervalKey LP tmvar RP */ + { 267, -6 }, /* (209) interval_option ::= intervalKey LP tmvar COMMA tmvar RP */ + { 267, 0 }, /* (210) interval_option ::= */ + { 286, -1 }, /* (211) intervalKey ::= INTERVAL */ + { 286, -1 }, /* (212) intervalKey ::= EVERY */ + { 269, 0 }, /* (213) session_option ::= */ + { 269, -7 }, /* (214) session_option ::= SESSION LP ids cpxName COMMA tmvar RP */ + { 270, 0 }, /* (215) windowstate_option ::= */ + { 270, -4 }, /* (216) windowstate_option ::= STATE_WINDOW LP ids RP */ + { 271, 0 }, /* (217) fill_opt ::= */ + { 271, -6 }, /* (218) fill_opt ::= FILL LP ID COMMA tagitemlist RP */ + { 271, -4 }, /* (219) fill_opt ::= FILL LP ID RP */ + { 268, -4 }, /* (220) sliding_opt ::= SLIDING LP tmvar RP */ + { 268, 0 }, /* (221) sliding_opt ::= */ + { 274, 0 }, /* (222) orderby_opt ::= */ + { 274, -3 }, /* (223) orderby_opt ::= ORDER BY sortlist */ + { 287, -4 }, /* (224) sortlist ::= sortlist COMMA item sortorder */ + { 287, -4 }, /* (225) sortlist ::= sortlist COMMA arrow sortorder */ + { 287, -2 }, /* (226) sortlist ::= item sortorder */ + { 287, -2 }, /* (227) sortlist ::= arrow sortorder */ + { 288, -1 }, /* (228) item ::= ID */ + { 288, -3 }, /* (229) item ::= ID DOT ID */ + { 289, -1 }, /* (230) sortorder ::= ASC */ + { 289, -1 }, /* (231) sortorder ::= DESC */ + { 289, 0 }, /* (232) sortorder ::= */ + { 272, 0 }, /* (233) groupby_opt ::= */ + { 272, -3 }, /* (234) groupby_opt ::= GROUP BY grouplist */ + { 291, -3 }, /* (235) grouplist ::= grouplist COMMA item */ + { 291, -3 }, /* (236) grouplist ::= grouplist COMMA arrow */ + { 291, -1 }, /* (237) grouplist ::= item */ + { 291, -1 }, /* (238) grouplist ::= arrow */ + { 273, 0 }, /* (239) having_opt ::= */ + { 273, -2 }, /* (240) having_opt ::= HAVING expr */ + { 276, 0 }, /* (241) limit_opt ::= */ + { 276, -2 }, /* (242) limit_opt ::= LIMIT signed */ + { 276, -4 }, /* (243) limit_opt ::= LIMIT signed OFFSET signed */ + { 276, -4 }, /* (244) limit_opt ::= LIMIT signed COMMA signed */ + { 275, 0 }, /* (245) slimit_opt ::= */ + { 275, -2 }, /* (246) slimit_opt ::= SLIMIT signed */ + { 275, -4 }, /* (247) slimit_opt ::= SLIMIT signed SOFFSET signed */ + { 275, -4 }, /* (248) slimit_opt ::= SLIMIT signed COMMA signed */ + { 265, 0 }, /* (249) where_opt ::= */ + { 265, -2 }, /* (250) where_opt ::= WHERE expr */ + { 280, -3 }, /* (251) expr ::= LP expr RP */ + { 280, -1 }, /* (252) expr ::= ID */ + { 280, -3 }, /* (253) expr ::= ID DOT ID */ + { 280, -3 }, /* (254) expr ::= ID DOT STAR */ + { 280, -1 }, /* (255) expr ::= INTEGER */ + { 280, -2 }, /* (256) expr ::= MINUS INTEGER */ + { 280, -2 }, /* (257) expr ::= PLUS INTEGER */ + { 280, -1 }, /* (258) expr ::= FLOAT */ + { 280, -2 }, /* (259) expr ::= MINUS FLOAT */ + { 280, -2 }, /* (260) expr ::= PLUS FLOAT */ + { 280, -1 }, /* (261) expr ::= STRING */ + { 280, -1 }, /* (262) expr ::= NOW */ + { 280, -1 }, /* (263) expr ::= TODAY */ + { 280, -1 }, /* (264) expr ::= VARIABLE */ + { 280, -2 }, /* (265) expr ::= PLUS VARIABLE */ + { 280, -2 }, /* (266) expr ::= MINUS VARIABLE */ + { 280, -1 }, /* (267) expr ::= BOOL */ + { 280, -1 }, /* (268) expr ::= NULL */ + { 280, -4 }, /* (269) expr ::= ID LP exprlist RP */ + { 280, -4 }, /* (270) expr ::= ID LP STAR RP */ + { 280, -6 }, /* (271) expr ::= ID LP expr AS typename RP */ + { 280, -3 }, /* (272) expr ::= expr IS NULL */ + { 280, -4 }, /* (273) expr ::= expr IS NOT NULL */ + { 280, -3 }, /* (274) expr ::= expr LT expr */ + { 280, -3 }, /* (275) expr ::= expr GT expr */ + { 280, -3 }, /* (276) expr ::= expr LE expr */ + { 280, -3 }, /* (277) expr ::= expr GE expr */ + { 280, -3 }, /* (278) expr ::= expr NE expr */ + { 280, -3 }, /* (279) expr ::= expr EQ expr */ + { 280, -5 }, /* (280) expr ::= expr BETWEEN expr AND expr */ + { 280, -3 }, /* (281) expr ::= expr AND expr */ + { 280, -3 }, /* (282) expr ::= expr OR expr */ + { 280, -3 }, /* (283) expr ::= expr PLUS expr */ + { 280, -3 }, /* (284) expr ::= expr MINUS expr */ + { 280, -3 }, /* (285) expr ::= expr STAR expr */ + { 280, -3 }, /* (286) expr ::= expr SLASH expr */ + { 280, -3 }, /* (287) expr ::= expr REM expr */ + { 280, -3 }, /* (288) expr ::= expr BITAND expr */ + { 280, -3 }, /* (289) expr ::= expr BITOR expr */ + { 280, -3 }, /* (290) expr ::= expr BITXOR expr */ + { 280, -2 }, /* (291) expr ::= BITNOT expr */ + { 280, -3 }, /* (292) expr ::= expr LSHIFT expr */ + { 280, -3 }, /* (293) expr ::= expr RSHIFT expr */ + { 280, -3 }, /* (294) expr ::= expr LIKE expr */ + { 280, -3 }, /* (295) expr ::= expr MATCH expr */ + { 280, -3 }, /* (296) expr ::= expr NMATCH expr */ + { 280, -3 }, /* (297) expr ::= ID CONTAINS STRING */ + { 280, -5 }, /* (298) expr ::= ID DOT ID CONTAINS STRING */ + { 290, -3 }, /* (299) arrow ::= ID ARROW STRING */ + { 290, -5 }, /* (300) arrow ::= ID DOT ID ARROW STRING */ + { 280, -1 }, /* (301) expr ::= arrow */ + { 280, -5 }, /* (302) expr ::= expr IN LP exprlist RP */ + { 216, -3 }, /* (303) exprlist ::= exprlist COMMA expritem */ + { 216, -1 }, /* (304) exprlist ::= expritem */ + { 292, -1 }, /* (305) expritem ::= expr */ + { 292, 0 }, /* (306) expritem ::= */ + { 208, -3 }, /* (307) cmd ::= RESET QUERY CACHE */ + { 208, -3 }, /* (308) cmd ::= SYNCDB ids REPLICA */ + { 208, -7 }, /* (309) cmd ::= ALTER TABLE ids cpxName ADD COLUMN columnlist */ + { 208, -7 }, /* (310) cmd ::= ALTER TABLE ids cpxName DROP COLUMN ids */ + { 208, -7 }, /* (311) cmd ::= ALTER TABLE ids cpxName MODIFY COLUMN columnlist */ + { 208, -7 }, /* (312) cmd ::= ALTER TABLE ids cpxName ADD TAG columnlist */ + { 208, -7 }, /* (313) cmd ::= ALTER TABLE ids cpxName DROP TAG ids */ + { 208, -8 }, /* (314) cmd ::= ALTER TABLE ids cpxName CHANGE TAG ids ids */ + { 208, -9 }, /* (315) cmd ::= ALTER TABLE ids cpxName SET TAG ids EQ tagitem */ + { 208, -7 }, /* (316) cmd ::= ALTER TABLE ids cpxName MODIFY TAG columnlist */ + { 208, -7 }, /* (317) cmd ::= ALTER STABLE ids cpxName ADD COLUMN columnlist */ + { 208, -7 }, /* (318) cmd ::= ALTER STABLE ids cpxName DROP COLUMN ids */ + { 208, -7 }, /* (319) cmd ::= ALTER STABLE ids cpxName MODIFY COLUMN columnlist */ + { 208, -7 }, /* (320) cmd ::= ALTER STABLE ids cpxName ADD TAG columnlist */ + { 208, -7 }, /* (321) cmd ::= ALTER STABLE ids cpxName DROP TAG ids */ + { 208, -8 }, /* (322) cmd ::= ALTER STABLE ids cpxName CHANGE TAG ids ids */ + { 208, -9 }, /* (323) cmd ::= ALTER STABLE ids cpxName SET TAG ids EQ tagitem */ + { 208, -7 }, /* (324) cmd ::= ALTER STABLE ids cpxName MODIFY TAG columnlist */ + { 208, -3 }, /* (325) cmd ::= KILL CONNECTION INTEGER */ + { 208, -5 }, /* (326) cmd ::= KILL STREAM INTEGER COLON INTEGER */ + { 208, -5 }, /* (327) cmd ::= KILL QUERY INTEGER COLON INTEGER */ + { 208, -6 }, /* (328) cmd ::= DELETE FROM ifexists ids cpxName where_opt */ }; static void yy_accept(yyParser*); /* Forward Declaration */ @@ -2347,9 +2349,9 @@ static void yy_reduce( /********** Begin reduce actions **********************************************/ YYMINORTYPE yylhsminor; case 0: /* program ::= cmd */ - case 138: /* cmd ::= CREATE TABLE create_table_args */ yytestcase(yyruleno==138); - case 139: /* cmd ::= CREATE TABLE create_stable_args */ yytestcase(yyruleno==139); - case 140: /* cmd ::= CREATE STABLE create_stable_args */ yytestcase(yyruleno==140); + case 140: /* cmd ::= CREATE TABLE create_table_args */ yytestcase(yyruleno==140); + case 141: /* cmd ::= CREATE TABLE create_stable_args */ yytestcase(yyruleno==141); + case 142: /* cmd ::= CREATE STABLE create_stable_args */ yytestcase(yyruleno==142); {} break; case 1: /* cmd ::= SHOW DATABASES */ @@ -2500,96 +2502,102 @@ static void yy_reduce( } break; case 40: /* cmd ::= ALTER USER ids PASS ids */ -{ setAlterUserSql(pInfo, TSDB_ALTER_USER_PASSWD, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0, NULL); } +{ setAlterUserSql(pInfo, TSDB_ALTER_USER_PASSWD, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0, NULL, NULL);} break; case 41: /* cmd ::= ALTER USER ids PRIVILEGE ids */ -{ setAlterUserSql(pInfo, TSDB_ALTER_USER_PRIVILEGES, &yymsp[-2].minor.yy0, NULL, &yymsp[0].minor.yy0);} +{ setAlterUserSql(pInfo, TSDB_ALTER_USER_PRIVILEGES, &yymsp[-2].minor.yy0, NULL, &yymsp[0].minor.yy0, NULL);} break; - case 42: /* cmd ::= ALTER DNODE ids ids */ + case 42: /* cmd ::= ALTER USER ids TAGS ids */ +{ setAlterUserSql(pInfo, TSDB_ALTER_USER_TAGS, &yymsp[-2].minor.yy0, NULL, NULL, &yymsp[0].minor.yy0);} + break; + case 43: /* cmd ::= ALTER DNODE ids ids */ { setDCLSqlElems(pInfo, TSDB_SQL_CFG_DNODE, 2, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy0); } break; - case 43: /* cmd ::= ALTER DNODE ids ids ids */ + case 44: /* cmd ::= ALTER DNODE ids ids ids */ { setDCLSqlElems(pInfo, TSDB_SQL_CFG_DNODE, 3, &yymsp[-2].minor.yy0, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy0); } break; - case 44: /* cmd ::= ALTER LOCAL ids */ + case 45: /* cmd ::= ALTER LOCAL ids */ { setDCLSqlElems(pInfo, TSDB_SQL_CFG_LOCAL, 1, &yymsp[0].minor.yy0); } break; - case 45: /* cmd ::= ALTER LOCAL ids ids */ + case 46: /* cmd ::= ALTER LOCAL ids ids */ { setDCLSqlElems(pInfo, TSDB_SQL_CFG_LOCAL, 2, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy0); } break; - case 46: /* cmd ::= ALTER DATABASE ids alter_db_optr */ - case 47: /* cmd ::= ALTER TOPIC ids alter_topic_optr */ yytestcase(yyruleno==47); + case 47: /* cmd ::= ALTER DATABASE ids alter_db_optr */ + case 48: /* cmd ::= ALTER TOPIC ids alter_topic_optr */ yytestcase(yyruleno==48); { SStrToken t = {0}; setCreateDbInfo(pInfo, TSDB_SQL_ALTER_DB, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy564, &t);} break; - case 48: /* cmd ::= ALTER ACCOUNT ids acct_optr */ + case 49: /* cmd ::= ALTER ACCOUNT ids acct_optr */ { setCreateAcctSql(pInfo, TSDB_SQL_ALTER_ACCT, &yymsp[-1].minor.yy0, NULL, &yymsp[0].minor.yy563);} break; - case 49: /* cmd ::= ALTER ACCOUNT ids PASS ids acct_optr */ + case 50: /* 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.yy563);} break; - case 50: /* cmd ::= COMPACT VNODES IN LP exprlist RP */ + case 51: /* cmd ::= COMPACT VNODES IN LP exprlist RP */ { setCompactVnodeSql(pInfo, TSDB_SQL_COMPACT_VNODE, yymsp[-1].minor.yy367);} break; - case 51: /* ids ::= ID */ - case 52: /* ids ::= STRING */ yytestcase(yyruleno==52); + case 52: /* ids ::= ID */ + case 53: /* ids ::= STRING */ yytestcase(yyruleno==53); {yylhsminor.yy0 = yymsp[0].minor.yy0; } yymsp[0].minor.yy0 = yylhsminor.yy0; break; - case 53: /* ifexists ::= IF EXISTS */ + case 54: /* ifexists ::= IF EXISTS */ { yymsp[-1].minor.yy0.n = 1;} break; - case 54: /* ifexists ::= */ - case 56: /* ifnotexists ::= */ yytestcase(yyruleno==56); - case 186: /* distinct ::= */ yytestcase(yyruleno==186); + case 55: /* ifexists ::= */ + case 57: /* ifnotexists ::= */ yytestcase(yyruleno==57); + case 188: /* distinct ::= */ yytestcase(yyruleno==188); { yymsp[1].minor.yy0.n = 0;} break; - case 55: /* ifnotexists ::= IF NOT EXISTS */ + case 56: /* ifnotexists ::= IF NOT EXISTS */ { yymsp[-2].minor.yy0.n = 1;} break; - case 57: /* cmd ::= CREATE DNODE ids */ + case 58: /* cmd ::= CREATE DNODE ids */ { setDCLSqlElems(pInfo, TSDB_SQL_CREATE_DNODE, 1, &yymsp[0].minor.yy0);} break; - case 58: /* cmd ::= CREATE ACCOUNT ids PASS ids acct_optr */ + case 59: /* 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.yy563);} break; - case 59: /* cmd ::= CREATE DATABASE ifnotexists ids db_optr */ - case 60: /* cmd ::= CREATE TOPIC ifnotexists ids topic_optr */ yytestcase(yyruleno==60); + case 60: /* cmd ::= CREATE DATABASE ifnotexists ids db_optr */ + case 61: /* cmd ::= CREATE TOPIC ifnotexists ids topic_optr */ yytestcase(yyruleno==61); { setCreateDbInfo(pInfo, TSDB_SQL_CREATE_DB, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy564, &yymsp[-2].minor.yy0);} break; - case 61: /* cmd ::= CREATE FUNCTION ids AS ids OUTPUTTYPE typename bufsize */ + case 62: /* cmd ::= CREATE FUNCTION ids AS ids OUTPUTTYPE typename bufsize */ { setCreateFuncInfo(pInfo, TSDB_SQL_CREATE_FUNCTION, &yymsp[-5].minor.yy0, &yymsp[-3].minor.yy0, &yymsp[-1].minor.yy307, &yymsp[0].minor.yy0, 1);} break; - case 62: /* cmd ::= CREATE AGGREGATE FUNCTION ids AS ids OUTPUTTYPE typename bufsize */ + case 63: /* cmd ::= CREATE AGGREGATE FUNCTION ids AS ids OUTPUTTYPE typename bufsize */ { setCreateFuncInfo(pInfo, TSDB_SQL_CREATE_FUNCTION, &yymsp[-5].minor.yy0, &yymsp[-3].minor.yy0, &yymsp[-1].minor.yy307, &yymsp[0].minor.yy0, 2);} break; - case 63: /* cmd ::= CREATE USER ids PASS ids */ -{ setCreateUserSql(pInfo, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0);} - break; - case 64: /* bufsize ::= */ - case 66: /* pps ::= */ yytestcase(yyruleno==66); - case 68: /* tseries ::= */ yytestcase(yyruleno==68); - case 70: /* dbs ::= */ yytestcase(yyruleno==70); - case 72: /* streams ::= */ yytestcase(yyruleno==72); - case 74: /* storage ::= */ yytestcase(yyruleno==74); - case 76: /* qtime ::= */ yytestcase(yyruleno==76); - case 78: /* users ::= */ yytestcase(yyruleno==78); - case 80: /* conns ::= */ yytestcase(yyruleno==80); - case 82: /* state ::= */ yytestcase(yyruleno==82); + case 64: /* cmd ::= CREATE USER ids PASS ids */ +{ setCreateUserSql(pInfo, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0, NULL);} + break; + case 65: /* cmd ::= CREATE USER ids PASS ids TAGS ids */ +{ setCreateUserSql(pInfo, &yymsp[-4].minor.yy0, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0);} + break; + case 66: /* bufsize ::= */ + case 68: /* pps ::= */ yytestcase(yyruleno==68); + case 70: /* tseries ::= */ yytestcase(yyruleno==70); + case 72: /* dbs ::= */ yytestcase(yyruleno==72); + case 74: /* streams ::= */ yytestcase(yyruleno==74); + case 76: /* storage ::= */ yytestcase(yyruleno==76); + case 78: /* qtime ::= */ yytestcase(yyruleno==78); + case 80: /* users ::= */ yytestcase(yyruleno==80); + case 82: /* conns ::= */ yytestcase(yyruleno==82); + case 84: /* state ::= */ yytestcase(yyruleno==84); { yymsp[1].minor.yy0.n = 0; } break; - case 65: /* bufsize ::= BUFSIZE INTEGER */ - case 67: /* pps ::= PPS INTEGER */ yytestcase(yyruleno==67); - case 69: /* tseries ::= TSERIES INTEGER */ yytestcase(yyruleno==69); - case 71: /* dbs ::= DBS INTEGER */ yytestcase(yyruleno==71); - case 73: /* streams ::= STREAMS INTEGER */ yytestcase(yyruleno==73); - case 75: /* storage ::= STORAGE INTEGER */ yytestcase(yyruleno==75); - case 77: /* qtime ::= QTIME INTEGER */ yytestcase(yyruleno==77); - case 79: /* users ::= USERS INTEGER */ yytestcase(yyruleno==79); - case 81: /* conns ::= CONNS INTEGER */ yytestcase(yyruleno==81); - case 83: /* state ::= STATE ids */ yytestcase(yyruleno==83); + case 67: /* bufsize ::= BUFSIZE INTEGER */ + case 69: /* pps ::= PPS INTEGER */ yytestcase(yyruleno==69); + case 71: /* tseries ::= TSERIES INTEGER */ yytestcase(yyruleno==71); + case 73: /* dbs ::= DBS INTEGER */ yytestcase(yyruleno==73); + case 75: /* streams ::= STREAMS INTEGER */ yytestcase(yyruleno==75); + case 77: /* storage ::= STORAGE INTEGER */ yytestcase(yyruleno==77); + case 79: /* qtime ::= QTIME INTEGER */ yytestcase(yyruleno==79); + case 81: /* users ::= USERS INTEGER */ yytestcase(yyruleno==81); + case 83: /* conns ::= CONNS INTEGER */ yytestcase(yyruleno==83); + case 85: /* state ::= STATE ids */ yytestcase(yyruleno==85); { yymsp[-1].minor.yy0 = yymsp[0].minor.yy0; } break; - case 84: /* acct_optr ::= pps tseries storage streams qtime dbs users conns state */ + case 86: /* acct_optr ::= pps tseries storage streams qtime dbs users conns state */ { yylhsminor.yy563.maxUsers = (yymsp[-2].minor.yy0.n>0)?atoi(yymsp[-2].minor.yy0.z):-1; yylhsminor.yy563.maxDbs = (yymsp[-3].minor.yy0.n>0)?atoi(yymsp[-3].minor.yy0.z):-1; @@ -2603,135 +2611,135 @@ static void yy_reduce( } yymsp[-8].minor.yy563 = yylhsminor.yy563; break; - case 85: /* intitemlist ::= intitemlist COMMA intitem */ - case 158: /* tagitemlist ::= tagitemlist COMMA tagitem */ yytestcase(yyruleno==158); + case 87: /* intitemlist ::= intitemlist COMMA intitem */ + case 160: /* tagitemlist ::= tagitemlist COMMA tagitem */ yytestcase(yyruleno==160); { yylhsminor.yy367 = tVariantListAppend(yymsp[-2].minor.yy367, &yymsp[0].minor.yy410, -1); } yymsp[-2].minor.yy367 = yylhsminor.yy367; break; - case 86: /* intitemlist ::= intitem */ - case 159: /* tagitemlist ::= tagitem */ yytestcase(yyruleno==159); + case 88: /* intitemlist ::= intitem */ + case 161: /* tagitemlist ::= tagitem */ yytestcase(yyruleno==161); { yylhsminor.yy367 = tVariantListAppend(NULL, &yymsp[0].minor.yy410, -1); } yymsp[0].minor.yy367 = yylhsminor.yy367; break; - case 87: /* intitem ::= INTEGER */ - case 160: /* tagitem ::= INTEGER */ yytestcase(yyruleno==160); - case 161: /* tagitem ::= FLOAT */ yytestcase(yyruleno==161); - case 162: /* tagitem ::= STRING */ yytestcase(yyruleno==162); - case 163: /* tagitem ::= BOOL */ yytestcase(yyruleno==163); + case 89: /* intitem ::= INTEGER */ + case 162: /* tagitem ::= INTEGER */ yytestcase(yyruleno==162); + case 163: /* tagitem ::= FLOAT */ yytestcase(yyruleno==163); + case 164: /* tagitem ::= STRING */ yytestcase(yyruleno==164); + case 165: /* tagitem ::= BOOL */ yytestcase(yyruleno==165); { toTSDBType(yymsp[0].minor.yy0.type); tVariantCreate(&yylhsminor.yy410, &yymsp[0].minor.yy0); } yymsp[0].minor.yy410 = yylhsminor.yy410; break; - case 88: /* keep ::= KEEP intitemlist */ + case 90: /* keep ::= KEEP intitemlist */ { yymsp[-1].minor.yy367 = yymsp[0].minor.yy367; } break; - case 89: /* cache ::= CACHE INTEGER */ - case 90: /* replica ::= REPLICA INTEGER */ yytestcase(yyruleno==90); - case 91: /* quorum ::= QUORUM INTEGER */ yytestcase(yyruleno==91); - case 92: /* days ::= DAYS INTEGER */ yytestcase(yyruleno==92); - case 93: /* minrows ::= MINROWS INTEGER */ yytestcase(yyruleno==93); - case 94: /* maxrows ::= MAXROWS INTEGER */ yytestcase(yyruleno==94); - case 95: /* blocks ::= BLOCKS INTEGER */ yytestcase(yyruleno==95); - case 96: /* ctime ::= CTIME INTEGER */ yytestcase(yyruleno==96); - case 97: /* wal ::= WAL INTEGER */ yytestcase(yyruleno==97); - case 98: /* fsync ::= FSYNC INTEGER */ yytestcase(yyruleno==98); - case 99: /* comp ::= COMP INTEGER */ yytestcase(yyruleno==99); - case 100: /* prec ::= PRECISION STRING */ yytestcase(yyruleno==100); - case 101: /* update ::= UPDATE INTEGER */ yytestcase(yyruleno==101); - case 102: /* cachelast ::= CACHELAST INTEGER */ yytestcase(yyruleno==102); - case 103: /* partitions ::= PARTITIONS INTEGER */ yytestcase(yyruleno==103); + case 91: /* cache ::= CACHE INTEGER */ + case 92: /* replica ::= REPLICA INTEGER */ yytestcase(yyruleno==92); + case 93: /* quorum ::= QUORUM INTEGER */ yytestcase(yyruleno==93); + case 94: /* days ::= DAYS INTEGER */ yytestcase(yyruleno==94); + case 95: /* minrows ::= MINROWS INTEGER */ yytestcase(yyruleno==95); + case 96: /* maxrows ::= MAXROWS INTEGER */ yytestcase(yyruleno==96); + case 97: /* blocks ::= BLOCKS INTEGER */ yytestcase(yyruleno==97); + case 98: /* ctime ::= CTIME INTEGER */ yytestcase(yyruleno==98); + case 99: /* wal ::= WAL INTEGER */ yytestcase(yyruleno==99); + case 100: /* fsync ::= FSYNC INTEGER */ yytestcase(yyruleno==100); + case 101: /* comp ::= COMP INTEGER */ yytestcase(yyruleno==101); + case 102: /* prec ::= PRECISION STRING */ yytestcase(yyruleno==102); + case 103: /* update ::= UPDATE INTEGER */ yytestcase(yyruleno==103); + case 104: /* cachelast ::= CACHELAST INTEGER */ yytestcase(yyruleno==104); + case 105: /* partitions ::= PARTITIONS INTEGER */ yytestcase(yyruleno==105); { yymsp[-1].minor.yy0 = yymsp[0].minor.yy0; } break; - case 104: /* db_optr ::= */ + case 106: /* db_optr ::= */ {setDefaultCreateDbOption(&yymsp[1].minor.yy564); yymsp[1].minor.yy564.dbType = TSDB_DB_TYPE_DEFAULT;} break; - case 105: /* db_optr ::= db_optr cache */ + case 107: /* db_optr ::= db_optr cache */ { yylhsminor.yy564 = yymsp[-1].minor.yy564; yylhsminor.yy564.cacheBlockSize = strtol(yymsp[0].minor.yy0.z, NULL, 10); } yymsp[-1].minor.yy564 = yylhsminor.yy564; break; - case 106: /* db_optr ::= db_optr replica */ - case 123: /* alter_db_optr ::= alter_db_optr replica */ yytestcase(yyruleno==123); + case 108: /* db_optr ::= db_optr replica */ + case 125: /* alter_db_optr ::= alter_db_optr replica */ yytestcase(yyruleno==125); { yylhsminor.yy564 = yymsp[-1].minor.yy564; yylhsminor.yy564.replica = strtol(yymsp[0].minor.yy0.z, NULL, 10); } yymsp[-1].minor.yy564 = yylhsminor.yy564; break; - case 107: /* db_optr ::= db_optr quorum */ - case 124: /* alter_db_optr ::= alter_db_optr quorum */ yytestcase(yyruleno==124); + case 109: /* db_optr ::= db_optr quorum */ + case 126: /* alter_db_optr ::= alter_db_optr quorum */ yytestcase(yyruleno==126); { yylhsminor.yy564 = yymsp[-1].minor.yy564; yylhsminor.yy564.quorum = strtol(yymsp[0].minor.yy0.z, NULL, 10); } yymsp[-1].minor.yy564 = yylhsminor.yy564; break; - case 108: /* db_optr ::= db_optr days */ + case 110: /* db_optr ::= db_optr days */ { yylhsminor.yy564 = yymsp[-1].minor.yy564; yylhsminor.yy564.daysPerFile = strtol(yymsp[0].minor.yy0.z, NULL, 10); } yymsp[-1].minor.yy564 = yylhsminor.yy564; break; - case 109: /* db_optr ::= db_optr minrows */ + case 111: /* db_optr ::= db_optr minrows */ { yylhsminor.yy564 = yymsp[-1].minor.yy564; yylhsminor.yy564.minRowsPerBlock = strtod(yymsp[0].minor.yy0.z, NULL); } yymsp[-1].minor.yy564 = yylhsminor.yy564; break; - case 110: /* db_optr ::= db_optr maxrows */ + case 112: /* db_optr ::= db_optr maxrows */ { yylhsminor.yy564 = yymsp[-1].minor.yy564; yylhsminor.yy564.maxRowsPerBlock = strtod(yymsp[0].minor.yy0.z, NULL); } yymsp[-1].minor.yy564 = yylhsminor.yy564; break; - case 111: /* db_optr ::= db_optr blocks */ - case 126: /* alter_db_optr ::= alter_db_optr blocks */ yytestcase(yyruleno==126); + case 113: /* db_optr ::= db_optr blocks */ + case 128: /* alter_db_optr ::= alter_db_optr blocks */ yytestcase(yyruleno==128); { yylhsminor.yy564 = yymsp[-1].minor.yy564; yylhsminor.yy564.numOfBlocks = strtol(yymsp[0].minor.yy0.z, NULL, 10); } yymsp[-1].minor.yy564 = yylhsminor.yy564; break; - case 112: /* db_optr ::= db_optr ctime */ + case 114: /* db_optr ::= db_optr ctime */ { yylhsminor.yy564 = yymsp[-1].minor.yy564; yylhsminor.yy564.commitTime = strtol(yymsp[0].minor.yy0.z, NULL, 10); } yymsp[-1].minor.yy564 = yylhsminor.yy564; break; - case 113: /* db_optr ::= db_optr wal */ + case 115: /* db_optr ::= db_optr wal */ { yylhsminor.yy564 = yymsp[-1].minor.yy564; yylhsminor.yy564.walLevel = strtol(yymsp[0].minor.yy0.z, NULL, 10); } yymsp[-1].minor.yy564 = yylhsminor.yy564; break; - case 114: /* db_optr ::= db_optr fsync */ + case 116: /* db_optr ::= db_optr fsync */ { yylhsminor.yy564 = yymsp[-1].minor.yy564; yylhsminor.yy564.fsyncPeriod = strtol(yymsp[0].minor.yy0.z, NULL, 10); } yymsp[-1].minor.yy564 = yylhsminor.yy564; break; - case 115: /* db_optr ::= db_optr comp */ - case 127: /* alter_db_optr ::= alter_db_optr comp */ yytestcase(yyruleno==127); + case 117: /* db_optr ::= db_optr comp */ + case 129: /* alter_db_optr ::= alter_db_optr comp */ yytestcase(yyruleno==129); { yylhsminor.yy564 = yymsp[-1].minor.yy564; yylhsminor.yy564.compressionLevel = strtol(yymsp[0].minor.yy0.z, NULL, 10); } yymsp[-1].minor.yy564 = yylhsminor.yy564; break; - case 116: /* db_optr ::= db_optr prec */ + case 118: /* db_optr ::= db_optr prec */ { yylhsminor.yy564 = yymsp[-1].minor.yy564; yylhsminor.yy564.precision = yymsp[0].minor.yy0; } yymsp[-1].minor.yy564 = yylhsminor.yy564; break; - case 117: /* db_optr ::= db_optr keep */ - case 125: /* alter_db_optr ::= alter_db_optr keep */ yytestcase(yyruleno==125); + case 119: /* db_optr ::= db_optr keep */ + case 127: /* alter_db_optr ::= alter_db_optr keep */ yytestcase(yyruleno==127); { yylhsminor.yy564 = yymsp[-1].minor.yy564; yylhsminor.yy564.keep = yymsp[0].minor.yy367; } yymsp[-1].minor.yy564 = yylhsminor.yy564; break; - case 118: /* db_optr ::= db_optr update */ - case 128: /* alter_db_optr ::= alter_db_optr update */ yytestcase(yyruleno==128); + case 120: /* db_optr ::= db_optr update */ + case 130: /* alter_db_optr ::= alter_db_optr update */ yytestcase(yyruleno==130); { yylhsminor.yy564 = yymsp[-1].minor.yy564; yylhsminor.yy564.update = strtol(yymsp[0].minor.yy0.z, NULL, 10); } yymsp[-1].minor.yy564 = yylhsminor.yy564; break; - case 119: /* db_optr ::= db_optr cachelast */ - case 129: /* alter_db_optr ::= alter_db_optr cachelast */ yytestcase(yyruleno==129); + case 121: /* db_optr ::= db_optr cachelast */ + case 131: /* alter_db_optr ::= alter_db_optr cachelast */ yytestcase(yyruleno==131); { yylhsminor.yy564 = yymsp[-1].minor.yy564; yylhsminor.yy564.cachelast = strtol(yymsp[0].minor.yy0.z, NULL, 10); } yymsp[-1].minor.yy564 = yylhsminor.yy564; break; - case 120: /* topic_optr ::= db_optr */ - case 130: /* alter_topic_optr ::= alter_db_optr */ yytestcase(yyruleno==130); + case 122: /* topic_optr ::= db_optr */ + case 132: /* alter_topic_optr ::= alter_db_optr */ yytestcase(yyruleno==132); { yylhsminor.yy564 = yymsp[0].minor.yy564; yylhsminor.yy564.dbType = TSDB_DB_TYPE_TOPIC; } yymsp[0].minor.yy564 = yylhsminor.yy564; break; - case 121: /* topic_optr ::= topic_optr partitions */ - case 131: /* alter_topic_optr ::= alter_topic_optr partitions */ yytestcase(yyruleno==131); + case 123: /* topic_optr ::= topic_optr partitions */ + case 133: /* alter_topic_optr ::= alter_topic_optr partitions */ yytestcase(yyruleno==133); { yylhsminor.yy564 = yymsp[-1].minor.yy564; yylhsminor.yy564.partitions = strtol(yymsp[0].minor.yy0.z, NULL, 10); } yymsp[-1].minor.yy564 = yylhsminor.yy564; break; - case 122: /* alter_db_optr ::= */ + case 124: /* alter_db_optr ::= */ { setDefaultCreateDbOption(&yymsp[1].minor.yy564); yymsp[1].minor.yy564.dbType = TSDB_DB_TYPE_DEFAULT;} break; - case 132: /* typename ::= ids */ + case 134: /* typename ::= ids */ { yymsp[0].minor.yy0.type = 0; tSetColumnType (&yylhsminor.yy307, &yymsp[0].minor.yy0); } yymsp[0].minor.yy307 = yylhsminor.yy307; break; - case 133: /* typename ::= ids LP signed RP */ + case 135: /* typename ::= ids LP signed RP */ { if (yymsp[-1].minor.yy443 <= 0) { yymsp[-3].minor.yy0.type = 0; @@ -2743,7 +2751,7 @@ static void yy_reduce( } yymsp[-3].minor.yy307 = yylhsminor.yy307; break; - case 134: /* typename ::= ids UNSIGNED */ + case 136: /* 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); @@ -2751,20 +2759,20 @@ static void yy_reduce( } yymsp[-1].minor.yy307 = yylhsminor.yy307; break; - case 135: /* signed ::= INTEGER */ + case 137: /* signed ::= INTEGER */ { yylhsminor.yy443 = strtol(yymsp[0].minor.yy0.z, NULL, 10); } yymsp[0].minor.yy443 = yylhsminor.yy443; break; - case 136: /* signed ::= PLUS INTEGER */ + case 138: /* signed ::= PLUS INTEGER */ { yymsp[-1].minor.yy443 = strtol(yymsp[0].minor.yy0.z, NULL, 10); } break; - case 137: /* signed ::= MINUS INTEGER */ + case 139: /* signed ::= MINUS INTEGER */ { yymsp[-1].minor.yy443 = -strtol(yymsp[0].minor.yy0.z, NULL, 10);} break; - case 141: /* cmd ::= CREATE TABLE create_table_list */ + case 143: /* cmd ::= CREATE TABLE create_table_list */ { pInfo->type = TSDB_SQL_CREATE_TABLE; pInfo->pCreateTableInfo = yymsp[0].minor.yy74;} break; - case 142: /* create_table_list ::= create_from_stable */ + case 144: /* create_table_list ::= create_from_stable */ { SCreateTableSql* pCreateTable = calloc(1, sizeof(SCreateTableSql)); pCreateTable->childTableInfo = taosArrayInit(4, sizeof(SCreatedTableInfo)); @@ -2775,14 +2783,14 @@ static void yy_reduce( } yymsp[0].minor.yy74 = yylhsminor.yy74; break; - case 143: /* create_table_list ::= create_table_list create_from_stable */ + case 145: /* create_table_list ::= create_table_list create_from_stable */ { taosArrayPush(yymsp[-1].minor.yy74->childTableInfo, &yymsp[0].minor.yy110); yylhsminor.yy74 = yymsp[-1].minor.yy74; } yymsp[-1].minor.yy74 = yylhsminor.yy74; break; - case 144: /* create_table_args ::= ifnotexists ids cpxName LP columnlist RP */ + case 146: /* create_table_args ::= ifnotexists ids cpxName LP columnlist RP */ { yylhsminor.yy74 = tSetCreateTableInfo(yymsp[-1].minor.yy367, NULL, NULL, TSQL_CREATE_TABLE); setSqlInfo(pInfo, yylhsminor.yy74, NULL, TSDB_SQL_CREATE_TABLE); @@ -2792,7 +2800,7 @@ static void yy_reduce( } yymsp[-5].minor.yy74 = yylhsminor.yy74; break; - case 145: /* create_stable_args ::= ifnotexists ids cpxName LP columnlist RP TAGS LP columnlist RP */ + case 147: /* create_stable_args ::= ifnotexists ids cpxName LP columnlist RP TAGS LP columnlist RP */ { yylhsminor.yy74 = tSetCreateTableInfo(yymsp[-5].minor.yy367, yymsp[-1].minor.yy367, NULL, TSQL_CREATE_STABLE); setSqlInfo(pInfo, yylhsminor.yy74, NULL, TSDB_SQL_CREATE_TABLE); @@ -2802,7 +2810,7 @@ static void yy_reduce( } yymsp[-9].minor.yy74 = yylhsminor.yy74; break; - case 146: /* create_from_stable ::= ifnotexists ids cpxName USING ids cpxName TAGS LP tagitemlist RP */ + case 148: /* 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; @@ -2810,7 +2818,7 @@ static void yy_reduce( } yymsp[-9].minor.yy110 = yylhsminor.yy110; break; - case 147: /* create_from_stable ::= ifnotexists ids cpxName USING ids cpxName LP tagNamelist RP TAGS LP tagitemlist RP */ + case 149: /* create_from_stable ::= ifnotexists ids cpxName USING ids cpxName LP tagNamelist RP TAGS LP tagitemlist RP */ { yymsp[-8].minor.yy0.n += yymsp[-7].minor.yy0.n; yymsp[-11].minor.yy0.n += yymsp[-10].minor.yy0.n; @@ -2818,15 +2826,15 @@ static void yy_reduce( } yymsp[-12].minor.yy110 = yylhsminor.yy110; break; - case 148: /* tagNamelist ::= tagNamelist COMMA ids */ + case 150: /* tagNamelist ::= tagNamelist COMMA ids */ {taosArrayPush(yymsp[-2].minor.yy367, &yymsp[0].minor.yy0); yylhsminor.yy367 = yymsp[-2].minor.yy367; } yymsp[-2].minor.yy367 = yylhsminor.yy367; break; - case 149: /* tagNamelist ::= ids */ + case 151: /* tagNamelist ::= ids */ {yylhsminor.yy367 = taosArrayInit(4, sizeof(SStrToken)); taosArrayPush(yylhsminor.yy367, &yymsp[0].minor.yy0);} yymsp[0].minor.yy367 = yylhsminor.yy367; break; - case 150: /* create_table_args ::= ifnotexists ids cpxName to_opt split_opt AS select */ + case 152: /* create_table_args ::= ifnotexists ids cpxName to_opt split_opt AS select */ { yylhsminor.yy74 = tSetCreateTableInfo(NULL, NULL, yymsp[0].minor.yy426, TSQL_CREATE_STREAM); setSqlInfo(pInfo, yylhsminor.yy74, NULL, TSDB_SQL_CREATE_TABLE); @@ -2837,57 +2845,57 @@ static void yy_reduce( } yymsp[-6].minor.yy74 = yylhsminor.yy74; break; - case 151: /* to_opt ::= */ - case 153: /* split_opt ::= */ yytestcase(yyruleno==153); + case 153: /* to_opt ::= */ + case 155: /* split_opt ::= */ yytestcase(yyruleno==155); {yymsp[1].minor.yy0.n = 0;} break; - case 152: /* to_opt ::= TO ids cpxName */ + case 154: /* to_opt ::= TO ids cpxName */ { yymsp[-2].minor.yy0 = yymsp[-1].minor.yy0; yymsp[-2].minor.yy0.n += yymsp[0].minor.yy0.n; } break; - case 154: /* split_opt ::= SPLIT ids */ + case 156: /* split_opt ::= SPLIT ids */ { yymsp[-1].minor.yy0 = yymsp[0].minor.yy0;} break; - case 155: /* columnlist ::= columnlist COMMA column */ + case 157: /* columnlist ::= columnlist COMMA column */ {taosArrayPush(yymsp[-2].minor.yy367, &yymsp[0].minor.yy307); yylhsminor.yy367 = yymsp[-2].minor.yy367; } yymsp[-2].minor.yy367 = yylhsminor.yy367; break; - case 156: /* columnlist ::= column */ + case 158: /* columnlist ::= column */ {yylhsminor.yy367 = taosArrayInit(4, sizeof(TAOS_FIELD)); taosArrayPush(yylhsminor.yy367, &yymsp[0].minor.yy307);} yymsp[0].minor.yy367 = yylhsminor.yy367; break; - case 157: /* column ::= ids typename */ + case 159: /* column ::= ids typename */ { tSetColumnInfo(&yylhsminor.yy307, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy307); } yymsp[-1].minor.yy307 = yylhsminor.yy307; break; - case 164: /* tagitem ::= NULL */ + case 166: /* tagitem ::= NULL */ { yymsp[0].minor.yy0.type = 0; tVariantCreate(&yylhsminor.yy410, &yymsp[0].minor.yy0); } yymsp[0].minor.yy410 = yylhsminor.yy410; break; - case 165: /* tagitem ::= NOW */ + case 167: /* tagitem ::= NOW */ { yymsp[0].minor.yy0.type = TSDB_DATA_TYPE_TIMESTAMP; tVariantCreateExt(&yylhsminor.yy410, &yymsp[0].minor.yy0, TK_NOW, true);} yymsp[0].minor.yy410 = yylhsminor.yy410; break; - case 166: /* tagitem ::= NOW PLUS VARIABLE */ + case 168: /* tagitem ::= NOW PLUS VARIABLE */ { yymsp[0].minor.yy0.type = TSDB_DATA_TYPE_TIMESTAMP; tVariantCreateExt(&yymsp[-2].minor.yy410, &yymsp[0].minor.yy0, TK_PLUS, true); } break; - case 167: /* tagitem ::= NOW MINUS VARIABLE */ + case 169: /* tagitem ::= NOW MINUS VARIABLE */ { yymsp[0].minor.yy0.type = TSDB_DATA_TYPE_TIMESTAMP; tVariantCreateExt(&yymsp[-2].minor.yy410, &yymsp[0].minor.yy0, TK_MINUS, true); } break; - case 168: /* tagitem ::= MINUS INTEGER */ - case 169: /* tagitem ::= MINUS FLOAT */ yytestcase(yyruleno==169); - case 170: /* tagitem ::= PLUS INTEGER */ yytestcase(yyruleno==170); - case 171: /* tagitem ::= PLUS FLOAT */ yytestcase(yyruleno==171); + case 170: /* tagitem ::= MINUS INTEGER */ + case 171: /* tagitem ::= MINUS FLOAT */ yytestcase(yyruleno==171); + case 172: /* tagitem ::= PLUS INTEGER */ yytestcase(yyruleno==172); + case 173: /* tagitem ::= PLUS FLOAT */ yytestcase(yyruleno==173); { yymsp[-1].minor.yy0.n += yymsp[0].minor.yy0.n; yymsp[-1].minor.yy0.type = yymsp[0].minor.yy0.type; @@ -2896,179 +2904,179 @@ static void yy_reduce( } yymsp[-1].minor.yy410 = yylhsminor.yy410; break; - case 172: /* select ::= SELECT selcollist from where_opt range_option interval_option sliding_opt session_option windowstate_option fill_opt groupby_opt having_opt orderby_opt slimit_opt limit_opt */ + case 174: /* select ::= SELECT selcollist from where_opt range_option interval_option sliding_opt session_option windowstate_option fill_opt groupby_opt having_opt orderby_opt slimit_opt limit_opt */ { yylhsminor.yy426 = tSetQuerySqlNode(&yymsp[-14].minor.yy0, yymsp[-13].minor.yy367, yymsp[-12].minor.yy480, yymsp[-11].minor.yy378, yymsp[-4].minor.yy367, yymsp[-2].minor.yy367, &yymsp[-9].minor.yy478, &yymsp[-7].minor.yy373, &yymsp[-6].minor.yy204, &yymsp[-8].minor.yy0, yymsp[-5].minor.yy367, &yymsp[0].minor.yy24, &yymsp[-1].minor.yy24, yymsp[-3].minor.yy378, &yymsp[-10].minor.yy214); } yymsp[-14].minor.yy426 = yylhsminor.yy426; break; - case 173: /* select ::= LP select RP */ + case 175: /* select ::= LP select RP */ {yymsp[-2].minor.yy426 = yymsp[-1].minor.yy426;} break; - case 174: /* union ::= select */ + case 176: /* union ::= select */ { yylhsminor.yy367 = setSubclause(NULL, yymsp[0].minor.yy426); } yymsp[0].minor.yy367 = yylhsminor.yy367; break; - case 175: /* union ::= union UNION ALL select */ + case 177: /* union ::= union UNION ALL select */ { yylhsminor.yy367 = appendSelectClause(yymsp[-3].minor.yy367, yymsp[0].minor.yy426); } yymsp[-3].minor.yy367 = yylhsminor.yy367; break; - case 176: /* cmd ::= union */ + case 178: /* cmd ::= union */ { setSqlInfo(pInfo, yymsp[0].minor.yy367, NULL, TSDB_SQL_SELECT); } break; - case 177: /* select ::= SELECT selcollist */ + case 179: /* select ::= SELECT selcollist */ { yylhsminor.yy426 = tSetQuerySqlNode(&yymsp[-1].minor.yy0, yymsp[0].minor.yy367, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); } yymsp[-1].minor.yy426 = yylhsminor.yy426; break; - case 178: /* sclp ::= selcollist COMMA */ + case 180: /* sclp ::= selcollist COMMA */ {yylhsminor.yy367 = yymsp[-1].minor.yy367;} yymsp[-1].minor.yy367 = yylhsminor.yy367; break; - case 179: /* sclp ::= */ - case 220: /* orderby_opt ::= */ yytestcase(yyruleno==220); + case 181: /* sclp ::= */ + case 222: /* orderby_opt ::= */ yytestcase(yyruleno==222); {yymsp[1].minor.yy367 = 0;} break; - case 180: /* selcollist ::= sclp distinct expr as */ + case 182: /* selcollist ::= sclp distinct expr as */ { yylhsminor.yy367 = tSqlExprListAppend(yymsp[-3].minor.yy367, yymsp[-1].minor.yy378, yymsp[-2].minor.yy0.n? &yymsp[-2].minor.yy0:0, yymsp[0].minor.yy0.n?&yymsp[0].minor.yy0:0); } yymsp[-3].minor.yy367 = yylhsminor.yy367; break; - case 181: /* selcollist ::= sclp STAR */ + case 183: /* selcollist ::= sclp STAR */ { tSqlExpr *pNode = tSqlExprCreateIdValue(pInfo, NULL, TK_ALL); yylhsminor.yy367 = tSqlExprListAppend(yymsp[-1].minor.yy367, pNode, 0, 0); } yymsp[-1].minor.yy367 = yylhsminor.yy367; break; - case 182: /* as ::= AS ids */ + case 184: /* as ::= AS ids */ { yymsp[-1].minor.yy0 = yymsp[0].minor.yy0; } break; - case 183: /* as ::= ids */ + case 185: /* as ::= ids */ { yylhsminor.yy0 = yymsp[0].minor.yy0; } yymsp[0].minor.yy0 = yylhsminor.yy0; break; - case 184: /* as ::= */ + case 186: /* as ::= */ { yymsp[1].minor.yy0.n = 0; } break; - case 185: /* distinct ::= DISTINCT */ + case 187: /* distinct ::= DISTINCT */ { yylhsminor.yy0 = yymsp[0].minor.yy0; } yymsp[0].minor.yy0 = yylhsminor.yy0; break; - case 187: /* from ::= FROM tablelist */ - case 188: /* from ::= FROM sub */ yytestcase(yyruleno==188); + case 189: /* from ::= FROM tablelist */ + case 190: /* from ::= FROM sub */ yytestcase(yyruleno==190); {yymsp[-1].minor.yy480 = yymsp[0].minor.yy480;} break; - case 189: /* sub ::= LP union RP */ + case 191: /* sub ::= LP union RP */ {yymsp[-2].minor.yy480 = addSubqueryElem(NULL, yymsp[-1].minor.yy367, NULL);} break; - case 190: /* sub ::= LP union RP ids */ + case 192: /* sub ::= LP union RP ids */ {yymsp[-3].minor.yy480 = addSubqueryElem(NULL, yymsp[-2].minor.yy367, &yymsp[0].minor.yy0);} break; - case 191: /* sub ::= sub COMMA LP union RP ids */ + case 193: /* sub ::= sub COMMA LP union RP ids */ {yylhsminor.yy480 = addSubqueryElem(yymsp[-5].minor.yy480, yymsp[-2].minor.yy367, &yymsp[0].minor.yy0);} yymsp[-5].minor.yy480 = yylhsminor.yy480; break; - case 192: /* tablelist ::= ids cpxName */ + case 194: /* tablelist ::= ids cpxName */ { yymsp[-1].minor.yy0.n += yymsp[0].minor.yy0.n; yylhsminor.yy480 = setTableNameList(NULL, &yymsp[-1].minor.yy0, NULL); } yymsp[-1].minor.yy480 = yylhsminor.yy480; break; - case 193: /* tablelist ::= ids cpxName ids */ + case 195: /* tablelist ::= ids cpxName ids */ { yymsp[-2].minor.yy0.n += yymsp[-1].minor.yy0.n; yylhsminor.yy480 = setTableNameList(NULL, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0); } yymsp[-2].minor.yy480 = yylhsminor.yy480; break; - case 194: /* tablelist ::= tablelist COMMA ids cpxName */ + case 196: /* tablelist ::= tablelist COMMA ids cpxName */ { yymsp[-1].minor.yy0.n += yymsp[0].minor.yy0.n; yylhsminor.yy480 = setTableNameList(yymsp[-3].minor.yy480, &yymsp[-1].minor.yy0, NULL); } yymsp[-3].minor.yy480 = yylhsminor.yy480; break; - case 195: /* tablelist ::= tablelist COMMA ids cpxName ids */ + case 197: /* tablelist ::= tablelist COMMA ids cpxName ids */ { yymsp[-2].minor.yy0.n += yymsp[-1].minor.yy0.n; yylhsminor.yy480 = setTableNameList(yymsp[-4].minor.yy480, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0); } yymsp[-4].minor.yy480 = yylhsminor.yy480; break; - case 196: /* tmvar ::= VARIABLE */ + case 198: /* tmvar ::= VARIABLE */ {yylhsminor.yy0 = yymsp[0].minor.yy0;} yymsp[0].minor.yy0 = yylhsminor.yy0; break; - case 197: /* timestamp ::= INTEGER */ + case 199: /* timestamp ::= INTEGER */ { yylhsminor.yy378 = tSqlExprCreateTimestamp(&yymsp[0].minor.yy0, TK_INTEGER);} yymsp[0].minor.yy378 = yylhsminor.yy378; break; - case 198: /* timestamp ::= MINUS INTEGER */ - case 199: /* timestamp ::= PLUS INTEGER */ yytestcase(yyruleno==199); + case 200: /* timestamp ::= MINUS INTEGER */ + case 201: /* timestamp ::= PLUS INTEGER */ yytestcase(yyruleno==201); { yymsp[-1].minor.yy0.n += yymsp[0].minor.yy0.n; yymsp[-1].minor.yy0.type = TK_INTEGER; yylhsminor.yy378 = tSqlExprCreateTimestamp(&yymsp[-1].minor.yy0, TK_INTEGER);} yymsp[-1].minor.yy378 = yylhsminor.yy378; break; - case 200: /* timestamp ::= STRING */ + case 202: /* timestamp ::= STRING */ { yylhsminor.yy378 = tSqlExprCreateTimestamp(&yymsp[0].minor.yy0, TK_STRING);} yymsp[0].minor.yy378 = yylhsminor.yy378; break; - case 201: /* timestamp ::= NOW */ + case 203: /* timestamp ::= NOW */ { yylhsminor.yy378 = tSqlExprCreateTimestamp(&yymsp[0].minor.yy0, TK_NOW); } yymsp[0].minor.yy378 = yylhsminor.yy378; break; - case 202: /* timestamp ::= NOW PLUS VARIABLE */ + case 204: /* timestamp ::= NOW PLUS VARIABLE */ {yymsp[-2].minor.yy378 = tSqlExprCreateTimestamp(&yymsp[0].minor.yy0, TK_PLUS); } break; - case 203: /* timestamp ::= NOW MINUS VARIABLE */ + case 205: /* timestamp ::= NOW MINUS VARIABLE */ {yymsp[-2].minor.yy378 = tSqlExprCreateTimestamp(&yymsp[0].minor.yy0, TK_MINUS); } break; - case 204: /* range_option ::= */ + case 206: /* range_option ::= */ {yymsp[1].minor.yy214.start = 0; yymsp[1].minor.yy214.end = 0;} break; - case 205: /* range_option ::= RANGE LP timestamp COMMA timestamp RP */ + case 207: /* range_option ::= RANGE LP timestamp COMMA timestamp RP */ {yymsp[-5].minor.yy214.start = yymsp[-3].minor.yy378; yymsp[-5].minor.yy214.end = yymsp[-1].minor.yy378;} break; - case 206: /* interval_option ::= intervalKey LP tmvar RP */ + case 208: /* interval_option ::= intervalKey LP tmvar RP */ {yylhsminor.yy478.interval = yymsp[-1].minor.yy0; yylhsminor.yy478.offset.n = 0; yylhsminor.yy478.token = yymsp[-3].minor.yy586;} yymsp[-3].minor.yy478 = yylhsminor.yy478; break; - case 207: /* interval_option ::= intervalKey LP tmvar COMMA tmvar RP */ + case 209: /* interval_option ::= intervalKey LP tmvar COMMA tmvar RP */ {yylhsminor.yy478.interval = yymsp[-3].minor.yy0; yylhsminor.yy478.offset = yymsp[-1].minor.yy0; yylhsminor.yy478.token = yymsp[-5].minor.yy586;} yymsp[-5].minor.yy478 = yylhsminor.yy478; break; - case 208: /* interval_option ::= */ + case 210: /* interval_option ::= */ {memset(&yymsp[1].minor.yy478, 0, sizeof(yymsp[1].minor.yy478));} break; - case 209: /* intervalKey ::= INTERVAL */ + case 211: /* intervalKey ::= INTERVAL */ {yymsp[0].minor.yy586 = TK_INTERVAL;} break; - case 210: /* intervalKey ::= EVERY */ + case 212: /* intervalKey ::= EVERY */ {yymsp[0].minor.yy586 = TK_EVERY; } break; - case 211: /* session_option ::= */ + case 213: /* session_option ::= */ {yymsp[1].minor.yy373.col.n = 0; yymsp[1].minor.yy373.gap.n = 0;} break; - case 212: /* session_option ::= SESSION LP ids cpxName COMMA tmvar RP */ + case 214: /* session_option ::= SESSION LP ids cpxName COMMA tmvar RP */ { yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n; yymsp[-6].minor.yy373.col = yymsp[-4].minor.yy0; yymsp[-6].minor.yy373.gap = yymsp[-1].minor.yy0; } break; - case 213: /* windowstate_option ::= */ + case 215: /* windowstate_option ::= */ { yymsp[1].minor.yy204.col.n = 0; yymsp[1].minor.yy204.col.z = NULL;} break; - case 214: /* windowstate_option ::= STATE_WINDOW LP ids RP */ + case 216: /* windowstate_option ::= STATE_WINDOW LP ids RP */ { yymsp[-3].minor.yy204.col = yymsp[-1].minor.yy0; } break; - case 215: /* fill_opt ::= */ + case 217: /* fill_opt ::= */ { yymsp[1].minor.yy367 = 0; } break; - case 216: /* fill_opt ::= FILL LP ID COMMA tagitemlist RP */ + case 218: /* fill_opt ::= FILL LP ID COMMA tagitemlist RP */ { tVariant A = {0}; toTSDBType(yymsp[-3].minor.yy0.type); @@ -3078,53 +3086,53 @@ static void yy_reduce( yymsp[-5].minor.yy367 = yymsp[-1].minor.yy367; } break; - case 217: /* fill_opt ::= FILL LP ID RP */ + case 219: /* fill_opt ::= FILL LP ID RP */ { toTSDBType(yymsp[-1].minor.yy0.type); yymsp[-3].minor.yy367 = tVariantListAppendToken(NULL, &yymsp[-1].minor.yy0, -1, true); } break; - case 218: /* sliding_opt ::= SLIDING LP tmvar RP */ + case 220: /* sliding_opt ::= SLIDING LP tmvar RP */ {yymsp[-3].minor.yy0 = yymsp[-1].minor.yy0; } break; - case 219: /* sliding_opt ::= */ + case 221: /* sliding_opt ::= */ {yymsp[1].minor.yy0.n = 0; yymsp[1].minor.yy0.z = NULL; yymsp[1].minor.yy0.type = 0; } break; - case 221: /* orderby_opt ::= ORDER BY sortlist */ + case 223: /* orderby_opt ::= ORDER BY sortlist */ {yymsp[-2].minor.yy367 = yymsp[0].minor.yy367;} break; - case 222: /* sortlist ::= sortlist COMMA item sortorder */ + case 224: /* sortlist ::= sortlist COMMA item sortorder */ { yylhsminor.yy367 = commonItemAppend(yymsp[-3].minor.yy367, &yymsp[-1].minor.yy410, NULL, false, yymsp[0].minor.yy274); } yymsp[-3].minor.yy367 = yylhsminor.yy367; break; - case 223: /* sortlist ::= sortlist COMMA arrow sortorder */ + case 225: /* sortlist ::= sortlist COMMA arrow sortorder */ { yylhsminor.yy367 = commonItemAppend(yymsp[-3].minor.yy367, NULL, yymsp[-1].minor.yy378, true, yymsp[0].minor.yy274); } yymsp[-3].minor.yy367 = yylhsminor.yy367; break; - case 224: /* sortlist ::= item sortorder */ + case 226: /* sortlist ::= item sortorder */ { yylhsminor.yy367 = commonItemAppend(NULL, &yymsp[-1].minor.yy410, NULL, false, yymsp[0].minor.yy274); } yymsp[-1].minor.yy367 = yylhsminor.yy367; break; - case 225: /* sortlist ::= arrow sortorder */ + case 227: /* sortlist ::= arrow sortorder */ { yylhsminor.yy367 = commonItemAppend(NULL, NULL, yymsp[-1].minor.yy378, true, yymsp[0].minor.yy274); } yymsp[-1].minor.yy367 = yylhsminor.yy367; break; - case 226: /* item ::= ID */ + case 228: /* item ::= ID */ { toTSDBType(yymsp[0].minor.yy0.type); tVariantCreate(&yylhsminor.yy410, &yymsp[0].minor.yy0); } yymsp[0].minor.yy410 = yylhsminor.yy410; break; - case 227: /* item ::= ID DOT ID */ + case 229: /* item ::= ID DOT ID */ { toTSDBType(yymsp[-2].minor.yy0.type); yymsp[-2].minor.yy0.n += (1+yymsp[0].minor.yy0.n); @@ -3132,295 +3140,295 @@ static void yy_reduce( } yymsp[-2].minor.yy410 = yylhsminor.yy410; break; - case 228: /* sortorder ::= ASC */ + case 230: /* sortorder ::= ASC */ { yymsp[0].minor.yy274 = TSDB_ORDER_ASC; } break; - case 229: /* sortorder ::= DESC */ + case 231: /* sortorder ::= DESC */ { yymsp[0].minor.yy274 = TSDB_ORDER_DESC;} break; - case 230: /* sortorder ::= */ + case 232: /* sortorder ::= */ { yymsp[1].minor.yy274 = TSDB_ORDER_ASC; } break; - case 231: /* groupby_opt ::= */ + case 233: /* groupby_opt ::= */ { yymsp[1].minor.yy367 = 0;} break; - case 232: /* groupby_opt ::= GROUP BY grouplist */ + case 234: /* groupby_opt ::= GROUP BY grouplist */ { yymsp[-2].minor.yy367 = yymsp[0].minor.yy367;} break; - case 233: /* grouplist ::= grouplist COMMA item */ + case 235: /* grouplist ::= grouplist COMMA item */ { yylhsminor.yy367 = commonItemAppend(yymsp[-2].minor.yy367, &yymsp[0].minor.yy410, NULL, false, -1); } yymsp[-2].minor.yy367 = yylhsminor.yy367; break; - case 234: /* grouplist ::= grouplist COMMA arrow */ + case 236: /* grouplist ::= grouplist COMMA arrow */ { yylhsminor.yy367 = commonItemAppend(yymsp[-2].minor.yy367, NULL, yymsp[0].minor.yy378, true, -1); } yymsp[-2].minor.yy367 = yylhsminor.yy367; break; - case 235: /* grouplist ::= item */ + case 237: /* grouplist ::= item */ { yylhsminor.yy367 = commonItemAppend(NULL, &yymsp[0].minor.yy410, NULL, false, -1); } yymsp[0].minor.yy367 = yylhsminor.yy367; break; - case 236: /* grouplist ::= arrow */ + case 238: /* grouplist ::= arrow */ { yylhsminor.yy367 = commonItemAppend(NULL, NULL, yymsp[0].minor.yy378, true, -1); } yymsp[0].minor.yy367 = yylhsminor.yy367; break; - case 237: /* having_opt ::= */ - case 247: /* where_opt ::= */ yytestcase(yyruleno==247); - case 304: /* expritem ::= */ yytestcase(yyruleno==304); + case 239: /* having_opt ::= */ + case 249: /* where_opt ::= */ yytestcase(yyruleno==249); + case 306: /* expritem ::= */ yytestcase(yyruleno==306); {yymsp[1].minor.yy378 = 0;} break; - case 238: /* having_opt ::= HAVING expr */ - case 248: /* where_opt ::= WHERE expr */ yytestcase(yyruleno==248); + case 240: /* having_opt ::= HAVING expr */ + case 250: /* where_opt ::= WHERE expr */ yytestcase(yyruleno==250); {yymsp[-1].minor.yy378 = yymsp[0].minor.yy378;} break; - case 239: /* limit_opt ::= */ - case 243: /* slimit_opt ::= */ yytestcase(yyruleno==243); + case 241: /* limit_opt ::= */ + case 245: /* slimit_opt ::= */ yytestcase(yyruleno==245); {yymsp[1].minor.yy24.limit = -1; yymsp[1].minor.yy24.offset = 0;} break; - case 240: /* limit_opt ::= LIMIT signed */ - case 244: /* slimit_opt ::= SLIMIT signed */ yytestcase(yyruleno==244); + case 242: /* limit_opt ::= LIMIT signed */ + case 246: /* slimit_opt ::= SLIMIT signed */ yytestcase(yyruleno==246); {yymsp[-1].minor.yy24.limit = yymsp[0].minor.yy443; yymsp[-1].minor.yy24.offset = 0;} break; - case 241: /* limit_opt ::= LIMIT signed OFFSET signed */ + case 243: /* limit_opt ::= LIMIT signed OFFSET signed */ { yymsp[-3].minor.yy24.limit = yymsp[-2].minor.yy443; yymsp[-3].minor.yy24.offset = yymsp[0].minor.yy443;} break; - case 242: /* limit_opt ::= LIMIT signed COMMA signed */ + case 244: /* limit_opt ::= LIMIT signed COMMA signed */ { yymsp[-3].minor.yy24.limit = yymsp[0].minor.yy443; yymsp[-3].minor.yy24.offset = yymsp[-2].minor.yy443;} break; - case 245: /* slimit_opt ::= SLIMIT signed SOFFSET signed */ + case 247: /* slimit_opt ::= SLIMIT signed SOFFSET signed */ {yymsp[-3].minor.yy24.limit = yymsp[-2].minor.yy443; yymsp[-3].minor.yy24.offset = yymsp[0].minor.yy443;} break; - case 246: /* slimit_opt ::= SLIMIT signed COMMA signed */ + case 248: /* slimit_opt ::= SLIMIT signed COMMA signed */ {yymsp[-3].minor.yy24.limit = yymsp[0].minor.yy443; yymsp[-3].minor.yy24.offset = yymsp[-2].minor.yy443;} break; - case 249: /* expr ::= LP expr RP */ + case 251: /* expr ::= LP expr RP */ {yylhsminor.yy378 = yymsp[-1].minor.yy378; yylhsminor.yy378->exprToken.z = yymsp[-2].minor.yy0.z; yylhsminor.yy378->exprToken.n = (yymsp[0].minor.yy0.z - yymsp[-2].minor.yy0.z + 1);} yymsp[-2].minor.yy378 = yylhsminor.yy378; break; - case 250: /* expr ::= ID */ + case 252: /* expr ::= ID */ { yylhsminor.yy378 = tSqlExprCreateIdValue(pInfo, &yymsp[0].minor.yy0, TK_ID);} yymsp[0].minor.yy378 = yylhsminor.yy378; break; - case 251: /* expr ::= ID DOT ID */ + case 253: /* expr ::= ID DOT ID */ { yymsp[-2].minor.yy0.n += (1+yymsp[0].minor.yy0.n); yylhsminor.yy378 = tSqlExprCreateIdValue(pInfo, &yymsp[-2].minor.yy0, TK_ID);} yymsp[-2].minor.yy378 = yylhsminor.yy378; break; - case 252: /* expr ::= ID DOT STAR */ + case 254: /* expr ::= ID DOT STAR */ { yymsp[-2].minor.yy0.n += (1+yymsp[0].minor.yy0.n); yylhsminor.yy378 = tSqlExprCreateIdValue(pInfo, &yymsp[-2].minor.yy0, TK_ALL);} yymsp[-2].minor.yy378 = yylhsminor.yy378; break; - case 253: /* expr ::= INTEGER */ + case 255: /* expr ::= INTEGER */ { yylhsminor.yy378 = tSqlExprCreateIdValue(pInfo, &yymsp[0].minor.yy0, TK_INTEGER);} yymsp[0].minor.yy378 = yylhsminor.yy378; break; - case 254: /* expr ::= MINUS INTEGER */ - case 255: /* expr ::= PLUS INTEGER */ yytestcase(yyruleno==255); + case 256: /* expr ::= MINUS INTEGER */ + case 257: /* expr ::= PLUS INTEGER */ yytestcase(yyruleno==257); { yymsp[-1].minor.yy0.n += yymsp[0].minor.yy0.n; yymsp[-1].minor.yy0.type = TK_INTEGER; yylhsminor.yy378 = tSqlExprCreateIdValue(pInfo, &yymsp[-1].minor.yy0, TK_INTEGER);} yymsp[-1].minor.yy378 = yylhsminor.yy378; break; - case 256: /* expr ::= FLOAT */ + case 258: /* expr ::= FLOAT */ { yylhsminor.yy378 = tSqlExprCreateIdValue(pInfo, &yymsp[0].minor.yy0, TK_FLOAT);} yymsp[0].minor.yy378 = yylhsminor.yy378; break; - case 257: /* expr ::= MINUS FLOAT */ - case 258: /* expr ::= PLUS FLOAT */ yytestcase(yyruleno==258); + case 259: /* expr ::= MINUS FLOAT */ + case 260: /* expr ::= PLUS FLOAT */ yytestcase(yyruleno==260); { yymsp[-1].minor.yy0.n += yymsp[0].minor.yy0.n; yymsp[-1].minor.yy0.type = TK_FLOAT; yylhsminor.yy378 = tSqlExprCreateIdValue(pInfo, &yymsp[-1].minor.yy0, TK_FLOAT);} yymsp[-1].minor.yy378 = yylhsminor.yy378; break; - case 259: /* expr ::= STRING */ + case 261: /* expr ::= STRING */ { yylhsminor.yy378 = tSqlExprCreateIdValue(pInfo, &yymsp[0].minor.yy0, TK_STRING);} yymsp[0].minor.yy378 = yylhsminor.yy378; break; - case 260: /* expr ::= NOW */ + case 262: /* expr ::= NOW */ { yylhsminor.yy378 = tSqlExprCreateIdValue(pInfo, &yymsp[0].minor.yy0, TK_NOW); } yymsp[0].minor.yy378 = yylhsminor.yy378; break; - case 261: /* expr ::= TODAY */ + case 263: /* expr ::= TODAY */ { yylhsminor.yy378 = tSqlExprCreateIdValue(pInfo, &yymsp[0].minor.yy0, TK_TODAY); } yymsp[0].minor.yy378 = yylhsminor.yy378; break; - case 262: /* expr ::= VARIABLE */ + case 264: /* expr ::= VARIABLE */ { yylhsminor.yy378 = tSqlExprCreateIdValue(pInfo, &yymsp[0].minor.yy0, TK_VARIABLE);} yymsp[0].minor.yy378 = yylhsminor.yy378; break; - case 263: /* expr ::= PLUS VARIABLE */ - case 264: /* expr ::= MINUS VARIABLE */ yytestcase(yyruleno==264); + case 265: /* expr ::= PLUS VARIABLE */ + case 266: /* expr ::= MINUS VARIABLE */ yytestcase(yyruleno==266); { yymsp[-1].minor.yy0.n += yymsp[0].minor.yy0.n; yymsp[-1].minor.yy0.type = TK_VARIABLE; yylhsminor.yy378 = tSqlExprCreateIdValue(pInfo, &yymsp[-1].minor.yy0, TK_VARIABLE);} yymsp[-1].minor.yy378 = yylhsminor.yy378; break; - case 265: /* expr ::= BOOL */ + case 267: /* expr ::= BOOL */ { yylhsminor.yy378 = tSqlExprCreateIdValue(pInfo, &yymsp[0].minor.yy0, TK_BOOL);} yymsp[0].minor.yy378 = yylhsminor.yy378; break; - case 266: /* expr ::= NULL */ + case 268: /* expr ::= NULL */ { yylhsminor.yy378 = tSqlExprCreateIdValue(pInfo, &yymsp[0].minor.yy0, TK_NULL);} yymsp[0].minor.yy378 = yylhsminor.yy378; break; - case 267: /* expr ::= ID LP exprlist RP */ + case 269: /* expr ::= ID LP exprlist RP */ { tStrTokenAppend(pInfo->funcs, &yymsp[-3].minor.yy0); yylhsminor.yy378 = tSqlExprCreateFunction(yymsp[-1].minor.yy367, &yymsp[-3].minor.yy0, &yymsp[0].minor.yy0, yymsp[-3].minor.yy0.type); } yymsp[-3].minor.yy378 = yylhsminor.yy378; break; - case 268: /* expr ::= ID LP STAR RP */ + case 270: /* expr ::= ID LP STAR RP */ { tStrTokenAppend(pInfo->funcs, &yymsp[-3].minor.yy0); yylhsminor.yy378 = tSqlExprCreateFunction(NULL, &yymsp[-3].minor.yy0, &yymsp[0].minor.yy0, yymsp[-3].minor.yy0.type); } yymsp[-3].minor.yy378 = yylhsminor.yy378; break; - case 269: /* expr ::= ID LP expr AS typename RP */ + case 271: /* expr ::= ID LP expr AS typename RP */ { tStrTokenAppend(pInfo->funcs, &yymsp[-5].minor.yy0); yylhsminor.yy378 = tSqlExprCreateFuncWithParams(pInfo, yymsp[-3].minor.yy378, &yymsp[-1].minor.yy307, &yymsp[-5].minor.yy0, &yymsp[0].minor.yy0, yymsp[-5].minor.yy0.type); } yymsp[-5].minor.yy378 = yylhsminor.yy378; break; - case 270: /* expr ::= expr IS NULL */ + case 272: /* expr ::= expr IS NULL */ {yylhsminor.yy378 = tSqlExprCreate(yymsp[-2].minor.yy378, NULL, TK_ISNULL);} yymsp[-2].minor.yy378 = yylhsminor.yy378; break; - case 271: /* expr ::= expr IS NOT NULL */ + case 273: /* expr ::= expr IS NOT NULL */ {yylhsminor.yy378 = tSqlExprCreate(yymsp[-3].minor.yy378, NULL, TK_NOTNULL);} yymsp[-3].minor.yy378 = yylhsminor.yy378; break; - case 272: /* expr ::= expr LT expr */ + case 274: /* expr ::= expr LT expr */ {yylhsminor.yy378 = tSqlExprCreate(yymsp[-2].minor.yy378, yymsp[0].minor.yy378, TK_LT);} yymsp[-2].minor.yy378 = yylhsminor.yy378; break; - case 273: /* expr ::= expr GT expr */ + case 275: /* expr ::= expr GT expr */ {yylhsminor.yy378 = tSqlExprCreate(yymsp[-2].minor.yy378, yymsp[0].minor.yy378, TK_GT);} yymsp[-2].minor.yy378 = yylhsminor.yy378; break; - case 274: /* expr ::= expr LE expr */ + case 276: /* expr ::= expr LE expr */ {yylhsminor.yy378 = tSqlExprCreate(yymsp[-2].minor.yy378, yymsp[0].minor.yy378, TK_LE);} yymsp[-2].minor.yy378 = yylhsminor.yy378; break; - case 275: /* expr ::= expr GE expr */ + case 277: /* expr ::= expr GE expr */ {yylhsminor.yy378 = tSqlExprCreate(yymsp[-2].minor.yy378, yymsp[0].minor.yy378, TK_GE);} yymsp[-2].minor.yy378 = yylhsminor.yy378; break; - case 276: /* expr ::= expr NE expr */ + case 278: /* expr ::= expr NE expr */ {yylhsminor.yy378 = tSqlExprCreate(yymsp[-2].minor.yy378, yymsp[0].minor.yy378, TK_NE);} yymsp[-2].minor.yy378 = yylhsminor.yy378; break; - case 277: /* expr ::= expr EQ expr */ + case 279: /* expr ::= expr EQ expr */ {yylhsminor.yy378 = tSqlExprCreate(yymsp[-2].minor.yy378, yymsp[0].minor.yy378, TK_EQ);} yymsp[-2].minor.yy378 = yylhsminor.yy378; break; - case 278: /* expr ::= expr BETWEEN expr AND expr */ + case 280: /* expr ::= expr BETWEEN expr AND expr */ { tSqlExpr* X2 = tSqlExprClone(yymsp[-4].minor.yy378); yylhsminor.yy378 = tSqlExprCreate(tSqlExprCreate(yymsp[-4].minor.yy378, yymsp[-2].minor.yy378, TK_GE), tSqlExprCreate(X2, yymsp[0].minor.yy378, TK_LE), TK_AND);} yymsp[-4].minor.yy378 = yylhsminor.yy378; break; - case 279: /* expr ::= expr AND expr */ + case 281: /* expr ::= expr AND expr */ {yylhsminor.yy378 = tSqlExprCreate(yymsp[-2].minor.yy378, yymsp[0].minor.yy378, TK_AND);} yymsp[-2].minor.yy378 = yylhsminor.yy378; break; - case 280: /* expr ::= expr OR expr */ + case 282: /* expr ::= expr OR expr */ {yylhsminor.yy378 = tSqlExprCreate(yymsp[-2].minor.yy378, yymsp[0].minor.yy378, TK_OR); } yymsp[-2].minor.yy378 = yylhsminor.yy378; break; - case 281: /* expr ::= expr PLUS expr */ + case 283: /* expr ::= expr PLUS expr */ {yylhsminor.yy378 = tSqlExprCreate(yymsp[-2].minor.yy378, yymsp[0].minor.yy378, TK_PLUS); } yymsp[-2].minor.yy378 = yylhsminor.yy378; break; - case 282: /* expr ::= expr MINUS expr */ + case 284: /* expr ::= expr MINUS expr */ {yylhsminor.yy378 = tSqlExprCreate(yymsp[-2].minor.yy378, yymsp[0].minor.yy378, TK_MINUS); } yymsp[-2].minor.yy378 = yylhsminor.yy378; break; - case 283: /* expr ::= expr STAR expr */ + case 285: /* expr ::= expr STAR expr */ {yylhsminor.yy378 = tSqlExprCreate(yymsp[-2].minor.yy378, yymsp[0].minor.yy378, TK_STAR); } yymsp[-2].minor.yy378 = yylhsminor.yy378; break; - case 284: /* expr ::= expr SLASH expr */ + case 286: /* expr ::= expr SLASH expr */ {yylhsminor.yy378 = tSqlExprCreate(yymsp[-2].minor.yy378, yymsp[0].minor.yy378, TK_DIVIDE);} yymsp[-2].minor.yy378 = yylhsminor.yy378; break; - case 285: /* expr ::= expr REM expr */ + case 287: /* expr ::= expr REM expr */ {yylhsminor.yy378 = tSqlExprCreate(yymsp[-2].minor.yy378, yymsp[0].minor.yy378, TK_REM); } yymsp[-2].minor.yy378 = yylhsminor.yy378; break; - case 286: /* expr ::= expr BITAND expr */ + case 288: /* expr ::= expr BITAND expr */ {yylhsminor.yy378 = tSqlExprCreate(yymsp[-2].minor.yy378, yymsp[0].minor.yy378, TK_BITAND);} yymsp[-2].minor.yy378 = yylhsminor.yy378; break; - case 287: /* expr ::= expr BITOR expr */ + case 289: /* expr ::= expr BITOR expr */ {yylhsminor.yy378 = tSqlExprCreate(yymsp[-2].minor.yy378, yymsp[0].minor.yy378, TK_BITOR); } yymsp[-2].minor.yy378 = yylhsminor.yy378; break; - case 288: /* expr ::= expr BITXOR expr */ + case 290: /* expr ::= expr BITXOR expr */ {yylhsminor.yy378 = tSqlExprCreate(yymsp[-2].minor.yy378, yymsp[0].minor.yy378, TK_BITXOR);} yymsp[-2].minor.yy378 = yylhsminor.yy378; break; - case 289: /* expr ::= BITNOT expr */ + case 291: /* expr ::= BITNOT expr */ {yymsp[-1].minor.yy378 = tSqlExprCreate(yymsp[0].minor.yy378, NULL, TK_BITNOT);} break; - case 290: /* expr ::= expr LSHIFT expr */ + case 292: /* expr ::= expr LSHIFT expr */ {yylhsminor.yy378 = tSqlExprCreate(yymsp[-2].minor.yy378, yymsp[0].minor.yy378, TK_LSHIFT);} yymsp[-2].minor.yy378 = yylhsminor.yy378; break; - case 291: /* expr ::= expr RSHIFT expr */ + case 293: /* expr ::= expr RSHIFT expr */ {yylhsminor.yy378 = tSqlExprCreate(yymsp[-2].minor.yy378, yymsp[0].minor.yy378, TK_RSHIFT);} yymsp[-2].minor.yy378 = yylhsminor.yy378; break; - case 292: /* expr ::= expr LIKE expr */ + case 294: /* expr ::= expr LIKE expr */ {yylhsminor.yy378 = tSqlExprCreate(yymsp[-2].minor.yy378, yymsp[0].minor.yy378, TK_LIKE); } yymsp[-2].minor.yy378 = yylhsminor.yy378; break; - case 293: /* expr ::= expr MATCH expr */ + case 295: /* expr ::= expr MATCH expr */ {yylhsminor.yy378 = tSqlExprCreate(yymsp[-2].minor.yy378, yymsp[0].minor.yy378, TK_MATCH); } yymsp[-2].minor.yy378 = yylhsminor.yy378; break; - case 294: /* expr ::= expr NMATCH expr */ + case 296: /* expr ::= expr NMATCH expr */ {yylhsminor.yy378 = tSqlExprCreate(yymsp[-2].minor.yy378, yymsp[0].minor.yy378, TK_NMATCH); } yymsp[-2].minor.yy378 = yylhsminor.yy378; break; - case 295: /* expr ::= ID CONTAINS STRING */ + case 297: /* expr ::= ID CONTAINS STRING */ { tSqlExpr* S = tSqlExprCreateIdValue(pInfo, &yymsp[-2].minor.yy0, TK_ID); tSqlExpr* M = tSqlExprCreateIdValue(pInfo, &yymsp[0].minor.yy0, TK_STRING); yylhsminor.yy378 = tSqlExprCreate(S, M, TK_CONTAINS); } yymsp[-2].minor.yy378 = yylhsminor.yy378; break; - case 296: /* expr ::= ID DOT ID CONTAINS STRING */ + case 298: /* expr ::= ID DOT ID CONTAINS STRING */ { yymsp[-4].minor.yy0.n += (1+yymsp[-2].minor.yy0.n); tSqlExpr* S = tSqlExprCreateIdValue(pInfo, &yymsp[-4].minor.yy0, TK_ID); tSqlExpr* M = tSqlExprCreateIdValue(pInfo, &yymsp[0].minor.yy0, TK_STRING); yylhsminor.yy378 = tSqlExprCreate(S, M, TK_CONTAINS); } yymsp[-4].minor.yy378 = yylhsminor.yy378; break; - case 297: /* arrow ::= ID ARROW STRING */ + case 299: /* arrow ::= ID ARROW STRING */ {tSqlExpr* S = tSqlExprCreateIdValue(pInfo, &yymsp[-2].minor.yy0, TK_ID); tSqlExpr* M = tSqlExprCreateIdValue(pInfo, &yymsp[0].minor.yy0, TK_STRING); yylhsminor.yy378 = tSqlExprCreate(S, M, TK_ARROW); } yymsp[-2].minor.yy378 = yylhsminor.yy378; break; - case 298: /* arrow ::= ID DOT ID ARROW STRING */ + case 300: /* arrow ::= ID DOT ID ARROW STRING */ {yymsp[-4].minor.yy0.n += (1+yymsp[-2].minor.yy0.n); tSqlExpr* S = tSqlExprCreateIdValue(pInfo, &yymsp[-4].minor.yy0, TK_ID); tSqlExpr* M = tSqlExprCreateIdValue(pInfo, &yymsp[0].minor.yy0, TK_STRING); yylhsminor.yy378 = tSqlExprCreate(S, M, TK_ARROW); } yymsp[-4].minor.yy378 = yylhsminor.yy378; break; - case 299: /* expr ::= arrow */ - case 303: /* expritem ::= expr */ yytestcase(yyruleno==303); + case 301: /* expr ::= arrow */ + case 305: /* expritem ::= expr */ yytestcase(yyruleno==305); {yylhsminor.yy378 = yymsp[0].minor.yy378;} yymsp[0].minor.yy378 = yylhsminor.yy378; break; - case 300: /* expr ::= expr IN LP exprlist RP */ + case 302: /* expr ::= expr IN LP exprlist RP */ {yylhsminor.yy378 = tSqlExprCreate(yymsp[-4].minor.yy378, (tSqlExpr*)yymsp[-1].minor.yy367, TK_IN); } yymsp[-4].minor.yy378 = yylhsminor.yy378; break; - case 301: /* exprlist ::= exprlist COMMA expritem */ + case 303: /* exprlist ::= exprlist COMMA expritem */ {yylhsminor.yy367 = tSqlExprListAppend(yymsp[-2].minor.yy367,yymsp[0].minor.yy378,0, 0);} yymsp[-2].minor.yy367 = yylhsminor.yy367; break; - case 302: /* exprlist ::= expritem */ + case 304: /* exprlist ::= expritem */ {yylhsminor.yy367 = tSqlExprListAppend(0,yymsp[0].minor.yy378,0, 0);} yymsp[0].minor.yy367 = yylhsminor.yy367; break; - case 305: /* cmd ::= RESET QUERY CACHE */ + case 307: /* cmd ::= RESET QUERY CACHE */ { setDCLSqlElems(pInfo, TSDB_SQL_RESET_CACHE, 0);} break; - case 306: /* cmd ::= SYNCDB ids REPLICA */ + case 308: /* cmd ::= SYNCDB ids REPLICA */ { setDCLSqlElems(pInfo, TSDB_SQL_SYNC_DB_REPLICA, 1, &yymsp[-1].minor.yy0);} break; - case 307: /* cmd ::= ALTER TABLE ids cpxName ADD COLUMN columnlist */ + case 309: /* cmd ::= ALTER TABLE ids cpxName ADD COLUMN columnlist */ { yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n; SAlterTableInfo* pAlterTable = tSetAlterTableInfo(&yymsp[-4].minor.yy0, yymsp[0].minor.yy367, NULL, TSDB_ALTER_TABLE_ADD_COLUMN, -1); setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE); } break; - case 308: /* cmd ::= ALTER TABLE ids cpxName DROP COLUMN ids */ + case 310: /* cmd ::= ALTER TABLE ids cpxName DROP COLUMN ids */ { yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n; @@ -3431,21 +3439,21 @@ static void yy_reduce( setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE); } break; - case 309: /* cmd ::= ALTER TABLE ids cpxName MODIFY COLUMN columnlist */ + case 311: /* cmd ::= ALTER TABLE ids cpxName MODIFY COLUMN columnlist */ { yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n; SAlterTableInfo* pAlterTable = tSetAlterTableInfo(&yymsp[-4].minor.yy0, yymsp[0].minor.yy367, NULL, TSDB_ALTER_TABLE_CHANGE_COLUMN, -1); setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE); } break; - case 310: /* cmd ::= ALTER TABLE ids cpxName ADD TAG columnlist */ + case 312: /* cmd ::= ALTER TABLE ids cpxName ADD TAG columnlist */ { yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n; SAlterTableInfo* pAlterTable = tSetAlterTableInfo(&yymsp[-4].minor.yy0, yymsp[0].minor.yy367, NULL, TSDB_ALTER_TABLE_ADD_TAG_COLUMN, -1); setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE); } break; - case 311: /* cmd ::= ALTER TABLE ids cpxName DROP TAG ids */ + case 313: /* cmd ::= ALTER TABLE ids cpxName DROP TAG ids */ { yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n; @@ -3456,7 +3464,7 @@ static void yy_reduce( setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE); } break; - case 312: /* cmd ::= ALTER TABLE ids cpxName CHANGE TAG ids ids */ + case 314: /* cmd ::= ALTER TABLE ids cpxName CHANGE TAG ids ids */ { yymsp[-5].minor.yy0.n += yymsp[-4].minor.yy0.n; @@ -3470,7 +3478,7 @@ static void yy_reduce( setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE); } break; - case 313: /* cmd ::= ALTER TABLE ids cpxName SET TAG ids EQ tagitem */ + case 315: /* cmd ::= ALTER TABLE ids cpxName SET TAG ids EQ tagitem */ { yymsp[-6].minor.yy0.n += yymsp[-5].minor.yy0.n; @@ -3482,21 +3490,21 @@ static void yy_reduce( setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE); } break; - case 314: /* cmd ::= ALTER TABLE ids cpxName MODIFY TAG columnlist */ + case 316: /* cmd ::= ALTER TABLE ids cpxName MODIFY TAG columnlist */ { yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n; SAlterTableInfo* pAlterTable = tSetAlterTableInfo(&yymsp[-4].minor.yy0, yymsp[0].minor.yy367, NULL, TSDB_ALTER_TABLE_MODIFY_TAG_COLUMN, -1); setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE); } break; - case 315: /* cmd ::= ALTER STABLE ids cpxName ADD COLUMN columnlist */ + case 317: /* cmd ::= ALTER STABLE ids cpxName ADD COLUMN columnlist */ { yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n; SAlterTableInfo* pAlterTable = tSetAlterTableInfo(&yymsp[-4].minor.yy0, yymsp[0].minor.yy367, NULL, TSDB_ALTER_TABLE_ADD_COLUMN, TSDB_SUPER_TABLE); setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE); } break; - case 316: /* cmd ::= ALTER STABLE ids cpxName DROP COLUMN ids */ + case 318: /* cmd ::= ALTER STABLE ids cpxName DROP COLUMN ids */ { yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n; @@ -3507,21 +3515,21 @@ static void yy_reduce( setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE); } break; - case 317: /* cmd ::= ALTER STABLE ids cpxName MODIFY COLUMN columnlist */ + case 319: /* cmd ::= ALTER STABLE ids cpxName MODIFY COLUMN columnlist */ { yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n; SAlterTableInfo* pAlterTable = tSetAlterTableInfo(&yymsp[-4].minor.yy0, yymsp[0].minor.yy367, NULL, TSDB_ALTER_TABLE_CHANGE_COLUMN, TSDB_SUPER_TABLE); setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE); } break; - case 318: /* cmd ::= ALTER STABLE ids cpxName ADD TAG columnlist */ + case 320: /* cmd ::= ALTER STABLE ids cpxName ADD TAG columnlist */ { yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n; SAlterTableInfo* pAlterTable = tSetAlterTableInfo(&yymsp[-4].minor.yy0, yymsp[0].minor.yy367, NULL, TSDB_ALTER_TABLE_ADD_TAG_COLUMN, TSDB_SUPER_TABLE); setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE); } break; - case 319: /* cmd ::= ALTER STABLE ids cpxName DROP TAG ids */ + case 321: /* cmd ::= ALTER STABLE ids cpxName DROP TAG ids */ { yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n; @@ -3532,7 +3540,7 @@ static void yy_reduce( setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE); } break; - case 320: /* cmd ::= ALTER STABLE ids cpxName CHANGE TAG ids ids */ + case 322: /* cmd ::= ALTER STABLE ids cpxName CHANGE TAG ids ids */ { yymsp[-5].minor.yy0.n += yymsp[-4].minor.yy0.n; @@ -3546,7 +3554,7 @@ static void yy_reduce( setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE); } break; - case 321: /* cmd ::= ALTER STABLE ids cpxName SET TAG ids EQ tagitem */ + case 323: /* cmd ::= ALTER STABLE ids cpxName SET TAG ids EQ tagitem */ { yymsp[-6].minor.yy0.n += yymsp[-5].minor.yy0.n; @@ -3558,23 +3566,23 @@ static void yy_reduce( setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE); } break; - case 322: /* cmd ::= ALTER STABLE ids cpxName MODIFY TAG columnlist */ + case 324: /* cmd ::= ALTER STABLE ids cpxName MODIFY TAG columnlist */ { yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n; SAlterTableInfo* pAlterTable = tSetAlterTableInfo(&yymsp[-4].minor.yy0, yymsp[0].minor.yy367, NULL, TSDB_ALTER_TABLE_MODIFY_TAG_COLUMN, TSDB_SUPER_TABLE); setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE); } break; - case 323: /* cmd ::= KILL CONNECTION INTEGER */ + case 325: /* cmd ::= KILL CONNECTION INTEGER */ {setKillSql(pInfo, TSDB_SQL_KILL_CONNECTION, &yymsp[0].minor.yy0);} break; - case 324: /* cmd ::= KILL STREAM INTEGER COLON INTEGER */ + case 326: /* 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 325: /* cmd ::= KILL QUERY INTEGER COLON INTEGER */ + case 327: /* 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; - case 326: /* cmd ::= DELETE FROM ifexists ids cpxName where_opt */ + case 328: /* cmd ::= DELETE FROM ifexists ids cpxName where_opt */ { yymsp[-2].minor.yy0.n += yymsp[-1].minor.yy0.n; SDelData * pDelData = tGetDelData(&yymsp[-2].minor.yy0, &yymsp[-3].minor.yy0, yymsp[0].minor.yy378); @@ -3872,4 +3880,4 @@ void Parse( } #endif return; -} +} \ No newline at end of file diff --git a/src/util/src/hash.c b/src/util/src/hash.c index d4d42976155cb1e11b4abdf6c1d6fa6855921971..3cbcc7ed6e7243dc1dcaec17b3c35892c011461e 100644 --- a/src/util/src/hash.c +++ b/src/util/src/hash.c @@ -611,7 +611,6 @@ void taosHashClear(SHashObj *pHashObj) { for (int32_t i = 0; i < pHashObj->capacity; ++i) { SHashEntry *pEntry = pHashObj->hashList[i]; if (pEntry->num == 0) { - assert(pEntry->next == NULL); continue; } diff --git a/tests/develop-test/5-taos-tools/taosbenchmark/demo.py b/tests/develop-test/5-taos-tools/taosbenchmark/demo.py index 8b839691f725c83d2ea2a9f946bb461ba2f6bacf..ace3046cdf6e5e3729c90c5b4429fe32a1945fd1 100644 --- a/tests/develop-test/5-taos-tools/taosbenchmark/demo.py +++ b/tests/develop-test/5-taos-tools/taosbenchmark/demo.py @@ -22,9 +22,9 @@ from util.dnodes import * class TDTestCase: def caseDescription(self): - ''' + """ [TD-13823] taosBenchmark test cases - ''' + """ return def init(self, conn, logSql): @@ -34,19 +34,19 @@ class TDTestCase: def getPath(self, tool="taosBenchmark"): selfPath = os.path.dirname(os.path.realpath(__file__)) - if ("community" in selfPath): - projPath = selfPath[:selfPath.find("community")] + if "community" in selfPath: + projPath = selfPath[: selfPath.find("community")] else: - projPath = selfPath[:selfPath.find("tests")] + projPath = selfPath[: selfPath.find("tests")] paths = [] for root, dirs, files in os.walk(projPath): - if ((tool) in files): + if (tool) in files: rootRealPath = os.path.dirname(os.path.realpath(root)) - if ("packaging" not in rootRealPath): + if "packaging" not in rootRealPath: paths.append(os.path.join(root, tool)) break - if (len(paths) == 0): + if len(paths) == 0: tdLog.exit("taosBenchmark not found!") return else: @@ -55,7 +55,7 @@ class TDTestCase: def run(self): binPath = self.getPath() - cmd = "%s -n 100 -t 100 -y" %binPath + cmd = "%s -n 100 -t 100 -y" % binPath tdLog.info("%s" % cmd) os.system("%s" % cmd) tdSql.execute("use test") @@ -77,14 +77,16 @@ class TDTestCase: tdSql.checkData(4, 3, "TAG") tdSql.checkData(5, 0, "location") tdSql.checkData(5, 1, "BINARY") - tdSql.checkData(5, 2, 16) + tdSql.checkData(5, 2, 24) tdSql.checkData(5, 3, "TAG") tdSql.query("select count(*) from test.meters where groupid >= 0") tdSql.checkData(0, 0, 10000) - tdSql.query("select count(*) from test.meters where location = 'San Francisco' or location = 'Los Angles' or location = 'San Diego' or location = 'San Jose' or \ - location = 'Palo Alto' or location = 'Campbell' or location = 'Mountain View' or location = 'Sunnyvale' or location = 'Santa Clara' or location = 'Cupertino' ") + tdSql.query( + "select count(*) from test.meters where location = 'California.SanFrancisco' or location = 'California.LosAngles' or location = 'California.SanDiego' or location = 'California.SanJose' or \ + location = 'California.PaloAlto' or location = 'California.Campbell' or location = 'California.MountainView' or location = 'California.Sunnyvale' or location = 'California.SantaClara' or location = 'California.Cupertino' " + ) tdSql.checkData(0, 0, 10000) def stop(self): @@ -93,4 +95,4 @@ class TDTestCase: tdCases.addWindows(__file__, TDTestCase()) -tdCases.addLinux(__file__, TDTestCase()) \ No newline at end of file +tdCases.addLinux(__file__, TDTestCase()) diff --git a/tests/develop-test/5-taos-tools/taosdump/taosdumpDbNtb.py b/tests/develop-test/5-taos-tools/taosdump/taosdumpDbNtb.py new file mode 100644 index 0000000000000000000000000000000000000000..e44d678bf94d0e10afe61e8f3f150b64e15b8bfb --- /dev/null +++ b/tests/develop-test/5-taos-tools/taosdump/taosdumpDbNtb.py @@ -0,0 +1,131 @@ +################################################################### +# Copyright (c) 2016 by TAOS Technologies, Inc. +# All rights reserved. +# +# This file is proprietary and confidential to TAOS Technologies. +# No part of this file may be reproduced, stored, transmitted, +# disclosed or used in any form or by any means other than as +# expressly provided by the written permission from Jianhui Tao +# +################################################################### + +# -*- coding: utf-8 -*- + +import os +from util.log import * +from util.cases import * +from util.sql import * +from util.dnodes import * + + +class TDTestCase: + def caseDescription(self): + ''' + case1: [TD-18291] taosdump basic test + ''' + return + + def init(self, conn, logSql): + tdLog.debug("start to execute %s" % __file__) + tdSql.init(conn.cursor(), logSql) + self.tmpdir = "tmp" + + def getPath(self, tool="taosdump"): + selfPath = os.path.dirname(os.path.realpath(__file__)) + + if ("community" in selfPath): + projPath = selfPath[:selfPath.find("community")] + elif ("src" in selfPath): + projPath = selfPath[:selfPath.find("src")] + elif ("/tools/" in selfPath): + projPath = selfPath[:selfPath.find("/tools/")] + else: + tdLog.exit("path: %s is not supported" % selfPath) + + paths = [] + for root, dirs, files in os.walk(projPath): + if ((tool) in files): + rootRealPath = os.path.dirname(os.path.realpath(root)) + if ("packaging" not in rootRealPath): + paths.append(os.path.join(root, tool)) + break + if (len(paths) == 0): + return "" + return paths[0] + + def run(self): + tdSql.prepare() + + tdSql.execute("drop database if exists db") + tdSql.execute("create database db keep 3649 ") + + tdSql.execute("use db") + tdSql.execute( + "create table st(ts timestamp, c1 INT, c2 BOOL, c3 TINYINT, c4 SMALLINT, c5 BIGINT, c6 FLOAT, c7 DOUBLE, c8 TIMESTAMP, c9 BINARY(10), c10 NCHAR(10), c11 TINYINT UNSIGNED, c12 SMALLINT UNSIGNED, c13 INT UNSIGNED, c14 BIGINT UNSIGNED) tags(n1 INT, w2 BOOL, t3 TINYINT, t4 SMALLINT, t5 BIGINT, t6 FLOAT, t7 DOUBLE, t8 TIMESTAMP, t9 BINARY(10), t10 NCHAR(10), t11 TINYINT UNSIGNED, t12 SMALLINT UNSIGNED, t13 INT UNSIGNED, t14 BIGINT UNSIGNED)") + tdSql.execute( + "create table t1 using st tags(1, true, 1, 1, 1, 1.0, 1.0, 1, '1', '一', 1, 1, 1, 1)") + tdSql.execute( + "insert into t1 values(1640000000000, 1, true, 1, 1, 1, 1.0, 1.0, 1, '1', '一', 1, 1, 1, 1)") + tdSql.execute( + "create table t2 using st tags(NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL)") + tdSql.execute( + "insert into t2 values(1640000000000, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL)") + tdSql.execute( + "create table db.nt1 (ts timestamp, c1 INT, c2 BOOL, c3 TINYINT, c4 SMALLINT, c5 BIGINT, c6 FLOAT, c7 DOUBLE, c8 TIMESTAMP, c9 BINARY(10), c10 NCHAR(10), c11 TINYINT UNSIGNED, c12 SMALLINT UNSIGNED, c13 INT UNSIGNED, c14 BIGINT UNSIGNED)") + tdSql.execute( + "insert into nt1 values(1640000000000, 1, true, 1, 1, 1, 1.0, 1.0, 1, '1', '一', 1, 1, 1, 1)") + tdSql.execute( + "insert into nt1 values(1640000000000, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL)") + +# sys.exit(1) + + binPath = self.getPath("taosdump") + if (binPath == ""): + tdLog.exit("taosdump not found!") + else: + tdLog.info("taosdump found in %s" % binPath) + + if not os.path.exists(self.tmpdir): + os.makedirs(self.tmpdir) + else: + print("directory exists") + os.system("rm -rf %s" % self.tmpdir) + os.makedirs(self.tmpdir) + + os.system( + "%s db t1 -o %s -T 1" % + (binPath, self.tmpdir)) + + tdSql.execute("drop database db") +# sys.exit(1) + + os.system("%s -i %s -T 1" % (binPath, self.tmpdir)) + + tdSql.query("show databases") + dbresult = tdSql.queryResult + + found = False + for i in range(len(dbresult)): + print("Found db: %s" % dbresult[i][0]) + if (dbresult[i][0] == "db"): + found = True + break + + assert found == True + + tdSql.execute("use db") + tdSql.query("show stables") + tdSql.checkRows(1) + tdSql.checkData(0, 0, 'st') + + tdSql.query("show tables") + tdSql.checkRows(1) + + + def stop(self): + tdSql.close() + tdLog.success("%s successfully executed" % __file__) + + +tdCases.addWindows(__file__, TDTestCase()) +tdCases.addLinux(__file__, TDTestCase()) diff --git a/tests/develop-test/5-taos-tools/taosdump/taosdumpDbStb.py b/tests/develop-test/5-taos-tools/taosdump/taosdumpDbStb.py new file mode 100644 index 0000000000000000000000000000000000000000..87f1a6b26a318ee2c2ff76e8df406ed2877b534b --- /dev/null +++ b/tests/develop-test/5-taos-tools/taosdump/taosdumpDbStb.py @@ -0,0 +1,131 @@ +################################################################### +# Copyright (c) 2016 by TAOS Technologies, Inc. +# All rights reserved. +# +# This file is proprietary and confidential to TAOS Technologies. +# No part of this file may be reproduced, stored, transmitted, +# disclosed or used in any form or by any means other than as +# expressly provided by the written permission from Jianhui Tao +# +################################################################### + +# -*- coding: utf-8 -*- + +import os +from util.log import * +from util.cases import * +from util.sql import * +from util.dnodes import * + + +class TDTestCase: + def caseDescription(self): + ''' + case1: [TD-18291] taosdump basic test + ''' + return + + def init(self, conn, logSql): + tdLog.debug("start to execute %s" % __file__) + tdSql.init(conn.cursor(), logSql) + self.tmpdir = "tmp" + + def getPath(self, tool="taosdump"): + selfPath = os.path.dirname(os.path.realpath(__file__)) + + if ("community" in selfPath): + projPath = selfPath[:selfPath.find("community")] + elif ("src" in selfPath): + projPath = selfPath[:selfPath.find("src")] + elif ("/tools/" in selfPath): + projPath = selfPath[:selfPath.find("/tools/")] + else: + tdLog.exit("path: %s is not supported" % selfPath) + + paths = [] + for root, dirs, files in os.walk(projPath): + if ((tool) in files): + rootRealPath = os.path.dirname(os.path.realpath(root)) + if ("packaging" not in rootRealPath): + paths.append(os.path.join(root, tool)) + break + if (len(paths) == 0): + return "" + return paths[0] + + def run(self): + tdSql.prepare() + + tdSql.execute("drop database if exists db") + tdSql.execute("create database db keep 3649 ") + + tdSql.execute("use db") + tdSql.execute( + "create table st(ts timestamp, c1 INT, c2 BOOL, c3 TINYINT, c4 SMALLINT, c5 BIGINT, c6 FLOAT, c7 DOUBLE, c8 TIMESTAMP, c9 BINARY(10), c10 NCHAR(10), c11 TINYINT UNSIGNED, c12 SMALLINT UNSIGNED, c13 INT UNSIGNED, c14 BIGINT UNSIGNED) tags(n1 INT, w2 BOOL, t3 TINYINT, t4 SMALLINT, t5 BIGINT, t6 FLOAT, t7 DOUBLE, t8 TIMESTAMP, t9 BINARY(10), t10 NCHAR(10), t11 TINYINT UNSIGNED, t12 SMALLINT UNSIGNED, t13 INT UNSIGNED, t14 BIGINT UNSIGNED)") + tdSql.execute( + "create table t1 using st tags(1, true, 1, 1, 1, 1.0, 1.0, 1, '1', '一', 1, 1, 1, 1)") + tdSql.execute( + "insert into t1 values(1640000000000, 1, true, 1, 1, 1, 1.0, 1.0, 1, '1', '一', 1, 1, 1, 1)") + tdSql.execute( + "create table t2 using st tags(NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL)") + tdSql.execute( + "insert into t2 values(1640000000000, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL)") + tdSql.execute( + "create table db.nt1 (ts timestamp, c1 INT, c2 BOOL, c3 TINYINT, c4 SMALLINT, c5 BIGINT, c6 FLOAT, c7 DOUBLE, c8 TIMESTAMP, c9 BINARY(10), c10 NCHAR(10), c11 TINYINT UNSIGNED, c12 SMALLINT UNSIGNED, c13 INT UNSIGNED, c14 BIGINT UNSIGNED)") + tdSql.execute( + "insert into nt1 values(1640000000000, 1, true, 1, 1, 1, 1.0, 1.0, 1, '1', '一', 1, 1, 1, 1)") + tdSql.execute( + "insert into nt1 values(1640000000000, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL)") + +# sys.exit(1) + + binPath = self.getPath("taosdump") + if (binPath == ""): + tdLog.exit("taosdump not found!") + else: + tdLog.info("taosdump found in %s" % binPath) + + if not os.path.exists(self.tmpdir): + os.makedirs(self.tmpdir) + else: + print("directory exists") + os.system("rm -rf %s" % self.tmpdir) + os.makedirs(self.tmpdir) + + os.system( + "%s db st -o %s -T 1" % + (binPath, self.tmpdir)) + + tdSql.execute("drop database db") +# sys.exit(1) + + os.system("%s -i %s -T 1" % (binPath, self.tmpdir)) + + tdSql.query("show databases") + dbresult = tdSql.queryResult + + found = False + for i in range(len(dbresult)): + print("Found db: %s" % dbresult[i][0]) + if (dbresult[i][0] == "db"): + found = True + break + + assert found == True + + tdSql.execute("use db") + tdSql.query("show stables") + tdSql.checkRows(1) + tdSql.checkData(0, 0, 'st') + + tdSql.query("show tables") + tdSql.checkRows(2) + + + def stop(self): + tdSql.close() + tdLog.success("%s successfully executed" % __file__) + + +tdCases.addWindows(__file__, TDTestCase()) +tdCases.addLinux(__file__, TDTestCase()) diff --git a/tests/develop-test/5-taos-tools/taosdump/taosdumpManyCols.py b/tests/develop-test/5-taos-tools/taosdump/taosdumpManyCols.py new file mode 100644 index 0000000000000000000000000000000000000000..a988fa593c1b28fce4ddc250531811705d93afc4 --- /dev/null +++ b/tests/develop-test/5-taos-tools/taosdump/taosdumpManyCols.py @@ -0,0 +1,144 @@ +################################################################### +# Copyright (c) 2016 by TAOS Technologies, Inc. +# All rights reserved. +# +# This file is proprietary and confidential to TAOS Technologies. +# No part of this file may be reproduced, stored, transmitted, +# disclosed or used in any form or by any means other than as +# expressly provided by the written permission from Jianhui Tao +# +################################################################### + +# -*- coding: utf-8 -*- + +import os +from util.log import * +from util.cases import * +from util.sql import * +from util.dnodes import * + + +class TDTestCase: + def caseDescription(self): + ''' + case1: [TS-1762] taosdump with many columns + ''' + return + + def init(self, conn, logSql): + tdLog.debug("start to execute %s" % __file__) + tdSql.init(conn.cursor(), logSql) + self.tmpdir = "tmp" + + def getPath(self, tool="taosdump"): + selfPath = os.path.dirname(os.path.realpath(__file__)) + + if ("community" in selfPath): + projPath = selfPath[:selfPath.find("community")] + elif ("src" in selfPath): + projPath = selfPath[:selfPath.find("src")] + elif ("/tools/" in selfPath): + projPath = selfPath[:selfPath.find("/tools/")] + else: + tdLog.exit("path: %s is not supported" % selfPath) + + paths = [] + for root, dirs, files in os.walk(projPath): + if ((tool) in files): + rootRealPath = os.path.dirname(os.path.realpath(root)) + if ("packaging" not in rootRealPath): + paths.append(os.path.join(root, tool)) + break + if (len(paths) == 0): + return "" + return paths[0] + + def run(self): + tdSql.prepare() + + tdSql.execute("drop database if exists db") + tdSql.execute("create database db keep 3649 ") + + tdSql.execute("use db") + stb_sql = "create stable stb(ts timestamp" + + for index in range(4095-128): + stb_sql += (", col%d INT" % (index+1)) + stb_sql += ") tags(tag0 INT" + for index in range(127): + stb_sql += (", tag%d INT" % (index+1)) + stb_sql += ")" + + tdSql.execute(stb_sql); +# sys.exit(1) + + tb_sql = "create table tb using stb tags(0" + for index in range(127): + tb_sql += (",%d" % (index+1)) + tb_sql += ")" + + tdSql.execute(tb_sql); + +# sys.exit(1) + + for record in range(100): + ins_sql = ("insert into tb values(%d" % (1640000000000+record)) + for index in range(4095-128): + ins_sql += (",%d" % index) + ins_sql += ")" + tdSql.execute(ins_sql); + + binPath = self.getPath("taosdump") + if (binPath == ""): + tdLog.exit("taosdump not found!") + else: + tdLog.info("taosdump found in %s" % binPath) + + if not os.path.exists(self.tmpdir): + os.makedirs(self.tmpdir) + else: + print("directory exists") + os.system("rm -rf %s" % self.tmpdir) + os.makedirs(self.tmpdir) + + os.system( + "%s db -o %s -T 1" % + (binPath, self.tmpdir)) + + tdSql.execute("drop database db") +# sys.exit(1) + + os.system("%s -i %s -T 1" % (binPath, self.tmpdir)) + + tdSql.query("show databases") + dbresult = tdSql.queryResult + + found = False + for i in range(len(dbresult)): + print("Found db: %s" % dbresult[i][0]) + if (dbresult[i][0] == "db"): + found = True + break + + assert found == True + + tdSql.execute("use db") + tdSql.query("show stables") + tdSql.checkRows(1) + tdSql.checkData(0, 0, 'stb') + + tdSql.query("show tables") + tdSql.checkRows(1) + tdSql.checkData(0, 0, 'tb') + + tdSql.query("select count(*) from db.stb") + tdSql.checkRows(1) + tdSql.checkData(0, 0, 100) + + def stop(self): + tdSql.close() + tdLog.success("%s successfully executed" % __file__) + + +tdCases.addWindows(__file__, TDTestCase()) +tdCases.addLinux(__file__, TDTestCase()) diff --git a/tests/develop-test/5-taos-tools/taosdump/taosdumpTestBasic.py b/tests/develop-test/5-taos-tools/taosdump/taosdumpTestBasic.py new file mode 100644 index 0000000000000000000000000000000000000000..a3d654ae18fc774fe94abe0b5420a266df0882e8 --- /dev/null +++ b/tests/develop-test/5-taos-tools/taosdump/taosdumpTestBasic.py @@ -0,0 +1,131 @@ +################################################################### +# Copyright (c) 2016 by TAOS Technologies, Inc. +# All rights reserved. +# +# This file is proprietary and confidential to TAOS Technologies. +# No part of this file may be reproduced, stored, transmitted, +# disclosed or used in any form or by any means other than as +# expressly provided by the written permission from Jianhui Tao +# +################################################################### + +# -*- coding: utf-8 -*- + +import os +from util.log import * +from util.cases import * +from util.sql import * +from util.dnodes import * + + +class TDTestCase: + def caseDescription(self): + ''' + case1: [TD-18291] taosdump basic test + ''' + return + + def init(self, conn, logSql): + tdLog.debug("start to execute %s" % __file__) + tdSql.init(conn.cursor(), logSql) + self.tmpdir = "tmp" + + def getPath(self, tool="taosdump"): + selfPath = os.path.dirname(os.path.realpath(__file__)) + + if ("community" in selfPath): + projPath = selfPath[:selfPath.find("community")] + elif ("src" in selfPath): + projPath = selfPath[:selfPath.find("src")] + elif ("/tools/" in selfPath): + projPath = selfPath[:selfPath.find("/tools/")] + else: + tdLog.exit("path: %s is not supported" % selfPath) + + paths = [] + for root, dirs, files in os.walk(projPath): + if ((tool) in files): + rootRealPath = os.path.dirname(os.path.realpath(root)) + if ("packaging" not in rootRealPath): + paths.append(os.path.join(root, tool)) + break + if (len(paths) == 0): + return "" + return paths[0] + + def run(self): + tdSql.prepare() + + tdSql.execute("drop database if exists db") + tdSql.execute("create database db keep 3649 ") + + tdSql.execute("use db") + tdSql.execute( + "create table st(ts timestamp, c1 INT, c2 BOOL, c3 TINYINT, c4 SMALLINT, c5 BIGINT, c6 FLOAT, c7 DOUBLE, c8 TIMESTAMP, c9 BINARY(10), c10 NCHAR(10), c11 TINYINT UNSIGNED, c12 SMALLINT UNSIGNED, c13 INT UNSIGNED, c14 BIGINT UNSIGNED) tags(n1 INT, w2 BOOL, t3 TINYINT, t4 SMALLINT, t5 BIGINT, t6 FLOAT, t7 DOUBLE, t8 TIMESTAMP, t9 BINARY(10), t10 NCHAR(10), t11 TINYINT UNSIGNED, t12 SMALLINT UNSIGNED, t13 INT UNSIGNED, t14 BIGINT UNSIGNED)") + tdSql.execute( + "create table t1 using st tags(1, true, 1, 1, 1, 1.0, 1.0, 1, '1', '一', 1, 1, 1, 1)") + tdSql.execute( + "insert into t1 values(1640000000000, 1, true, 1, 1, 1, 1.0, 1.0, 1, '1', '一', 1, 1, 1, 1)") + tdSql.execute( + "create table t2 using st tags(NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL)") + tdSql.execute( + "insert into t2 values(1640000000000, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL)") + tdSql.execute( + "create table db.nt1 (ts timestamp, c1 INT, c2 BOOL, c3 TINYINT, c4 SMALLINT, c5 BIGINT, c6 FLOAT, c7 DOUBLE, c8 TIMESTAMP, c9 BINARY(10), c10 NCHAR(10), c11 TINYINT UNSIGNED, c12 SMALLINT UNSIGNED, c13 INT UNSIGNED, c14 BIGINT UNSIGNED)") + tdSql.execute( + "insert into nt1 values(1640000000000, 1, true, 1, 1, 1, 1.0, 1.0, 1, '1', '一', 1, 1, 1, 1)") + tdSql.execute( + "insert into nt1 values(1640000000000, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL)") + +# sys.exit(1) + + binPath = self.getPath("taosdump") + if (binPath == ""): + tdLog.exit("taosdump not found!") + else: + tdLog.info("taosdump found in %s" % binPath) + + if not os.path.exists(self.tmpdir): + os.makedirs(self.tmpdir) + else: + print("directory exists") + os.system("rm -rf %s" % self.tmpdir) + os.makedirs(self.tmpdir) + + os.system( + "%s -D db -o %s -T 1" % + (binPath, self.tmpdir)) + + tdSql.execute("drop database db") +# sys.exit(1) + + os.system("%s -i %s -T 1" % (binPath, self.tmpdir)) + + tdSql.query("show databases") + dbresult = tdSql.queryResult + + found = False + for i in range(len(dbresult)): + print("Found db: %s" % dbresult[i][0]) + if (dbresult[i][0] == "db"): + found = True + break + + assert found == True + + tdSql.execute("use db") + tdSql.query("show stables") + tdSql.checkRows(1) + tdSql.checkData(0, 0, 'st') + + tdSql.query("show tables") + tdSql.checkRows(3) + + + def stop(self): + tdSql.close() + tdLog.success("%s successfully executed" % __file__) + + +tdCases.addWindows(__file__, TDTestCase()) +tdCases.addLinux(__file__, TDTestCase()) diff --git a/tests/develop-test/5-taos-tools/taosdump/taosdumpTestInspect.py b/tests/develop-test/5-taos-tools/taosdump/taosdumpTestInspect.py index 33ba4034ec07925574c5c8bd23a2d7951010980c..a2aa4e033243db5d8d862393b672f732f2057aa1 100644 --- a/tests/develop-test/5-taos-tools/taosdump/taosdumpTestInspect.py +++ b/tests/develop-test/5-taos-tools/taosdump/taosdumpTestInspect.py @@ -11,20 +11,18 @@ # -*- coding: utf-8 -*- -import sys import os from util.log import * from util.cases import * from util.sql import * from util.dnodes import * -import subprocess class TDTestCase: def caseDescription(self): - ''' + """ case1: [TD-14544] taosdump data inspect - ''' + """ return def init(self, conn, logSql): @@ -35,19 +33,23 @@ class TDTestCase: def getPath(self, tool="taosdump"): selfPath = os.path.dirname(os.path.realpath(__file__)) - if ("community" in selfPath): - projPath = selfPath[:selfPath.find("community")] + if "community" in selfPath: + projPath = selfPath[: selfPath.find("community")] + elif "src" in selfPath: + projPath = selfPath[: selfPath.find("src")] + elif "/tools/" in selfPath: + projPath = selfPath[: selfPath.find("/tools/")] else: - projPath = selfPath[:selfPath.find("tests")] + tdLog.exit("path: %s is not supported" % selfPath) paths = [] for root, dirs, files in os.walk(projPath): - if ((tool) in files): + if (tool) in files: rootRealPath = os.path.dirname(os.path.realpath(root)) - if ("packaging" not in rootRealPath): + if "packaging" not in rootRealPath: paths.append(os.path.join(root, tool)) break - if (len(paths) == 0): + if len(paths) == 0: return "" return paths[0] @@ -55,24 +57,29 @@ class TDTestCase: tdSql.prepare() tdSql.execute("drop database if exists db") - tdSql.execute("create database db days 11 keep 3649 blocks 8 ") + tdSql.execute("create database db keep 3649 ") tdSql.execute("use db") tdSql.execute( - "create table st(ts timestamp, c1 INT, c2 BOOL, c3 TINYINT, c4 SMALLINT, c5 BIGINT, c6 FLOAT, c7 DOUBLE, c8 TIMESTAMP, c9 BINARY(10), c10 NCHAR(10), c11 TINYINT UNSIGNED, c12 SMALLINT UNSIGNED, c13 INT UNSIGNED, c14 BIGINT UNSIGNED) tags(n1 INT, w2 BOOL, t3 TINYINT, t4 SMALLINT, t5 BIGINT, t6 FLOAT, t7 DOUBLE, t8 TIMESTAMP, t9 BINARY(10), t10 NCHAR(10), t11 TINYINT UNSIGNED, t12 SMALLINT UNSIGNED, t13 INT UNSIGNED, t14 BIGINT UNSIGNED)") + "create table st(ts timestamp, c1 INT, c2 BOOL, c3 TINYINT, c4 SMALLINT, c5 BIGINT, c6 FLOAT, c7 DOUBLE, c8 TIMESTAMP, c9 BINARY(10), c10 NCHAR(10), c11 TINYINT UNSIGNED, c12 SMALLINT UNSIGNED, c13 INT UNSIGNED, c14 BIGINT UNSIGNED) tags(n1 INT, w2 BOOL, t3 TINYINT, t4 SMALLINT, t5 BIGINT, t6 FLOAT, t7 DOUBLE, t8 TIMESTAMP, t9 BINARY(10), t10 NCHAR(10), t11 TINYINT UNSIGNED, t12 SMALLINT UNSIGNED, t13 INT UNSIGNED, t14 BIGINT UNSIGNED)" + ) tdSql.execute( - "create table t1 using st tags(1, true, 1, 1, 1, 1.0, 1.0, 1, '1', '一', 1, 1, 1, 1)") + "create table t1 using st tags(1, true, 1, 1, 1, 1.0, 1.0, 1, '1', '一', 1, 1, 1, 1)" + ) tdSql.execute( - "insert into t1 values(1640000000000, 1, true, 1, 1, 1, 1.0, 1.0, 1, '1', '一', 1, 1, 1, 1)") + "insert into t1 values(1640000000000, 1, true, 1, 1, 1, 1.0, 1.0, 1, '1', '一', 1, 1, 1, 1)" + ) tdSql.execute( - "create table t2 using st tags(NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL)") + "create table t2 using st tags(NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL)" + ) tdSql.execute( - "insert into t2 values(1640000000000, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL)") + "insert into t2 values(1640000000000, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL)" + ) -# sys.exit(1) + # sys.exit(1) binPath = self.getPath("taosdump") - if (binPath == ""): + if binPath == "": tdLog.exit("taosdump not found!") else: tdLog.info("taosdump found in %s" % binPath) @@ -84,35 +91,73 @@ class TDTestCase: os.system("rm -rf %s" % self.tmpdir) os.makedirs(self.tmpdir) - os.system( - "%s --databases db -o %s -T 1" % - (binPath, self.tmpdir)) + os.system("%s --databases db -o %s -T 1" % (binPath, self.tmpdir)) -# sys.exit(1) + # sys.exit(1) - taosdumpInspectCmd = "%s -I %s/*.avro* -s | grep 'Schema:'|wc -l" % ( - binPath, self.tmpdir) - schemaTimes = subprocess.check_output( - taosdumpInspectCmd, shell=True).decode("utf-8") + taosdumpInspectCmd = "%s -I %s/taosdump.*/*.avro* -s | grep 'Schema:'|wc -l" % ( + binPath, + self.tmpdir, + ) + schemaTimes = subprocess.check_output(taosdumpInspectCmd, shell=True).decode( + "utf-8" + ) print("schema found times: %d" % int(schemaTimes)) - if (int(schemaTimes) != 3): + if int(schemaTimes) != 1: caller = inspect.getframeinfo(inspect.stack()[0][0]) tdLog.exit( - "%s(%d) failed: expected schema found times 3, actual %d" % - (caller.filename, caller.lineno, int(schemaTimes))) + "%s(%d) failed: expected schema found times 1, actual %d" + % (caller.filename, caller.lineno, int(schemaTimes)) + ) + + taosdumpInspectCmd = ( + "%s -I %s/taosdump*/data*/*.avro* -s | grep 'Schema:'|wc -l" + % (binPath, self.tmpdir) + ) + schemaTimes = subprocess.check_output(taosdumpInspectCmd, shell=True).decode( + "utf-8" + ) + print("schema found times: %d" % int(schemaTimes)) - taosdumpInspectCmd = "%s -I %s/*.avro* | grep '=== Records:'|wc -l" % ( - binPath, self.tmpdir) - recordsTimes = subprocess.check_output( - taosdumpInspectCmd, shell=True).decode("utf-8") + if int(schemaTimes) != 2: + caller = inspect.getframeinfo(inspect.stack()[0][0]) + tdLog.exit( + "%s(%d) failed: expected schema found times 2, actual %d" + % (caller.filename, caller.lineno, int(schemaTimes)) + ) + + taosdumpInspectCmd = ( + "%s -I %s/taosdump*/*.avro* | grep '=== Records:'|wc -l" + % (binPath, self.tmpdir) + ) + recordsTimes = subprocess.check_output(taosdumpInspectCmd, shell=True).decode( + "utf-8" + ) + print("records found times: %d" % int(recordsTimes)) + + if int(recordsTimes) != 1: + caller = inspect.getframeinfo(inspect.stack()[0][0]) + tdLog.exit( + "%s(%d) failed: expected records found times 1, actual %d" + % (caller.filename, caller.lineno, int(recordsTimes)) + ) + + taosdumpInspectCmd = ( + "%s -I %s/taosdump*/data*/*.avro* | grep '=== Records:'|wc -l" + % (binPath, self.tmpdir) + ) + recordsTimes = subprocess.check_output(taosdumpInspectCmd, shell=True).decode( + "utf-8" + ) print("records found times: %d" % int(recordsTimes)) - if (int(recordsTimes) != 3): + if int(recordsTimes) != 2: caller = inspect.getframeinfo(inspect.stack()[0][0]) tdLog.exit( - "%s(%d) failed: expected records found times 3, actual %d" % - (caller.filename, caller.lineno, int(recordsTimes))) + "%s(%d) failed: expected records found times 2, actual %d" + % (caller.filename, caller.lineno, int(recordsTimes)) + ) def stop(self): tdSql.close() diff --git a/tests/develop-test/5-taos-tools/taosdump/taosdumpTestTypeBigInt.py b/tests/develop-test/5-taos-tools/taosdump/taosdumpTestTypeBigInt.py index 82c17a459b11a27e7e6c08d6d26a460b772504b0..60e4b89d0e5cb888714cd12043a87731aa75027a 100644 --- a/tests/develop-test/5-taos-tools/taosdump/taosdumpTestTypeBigInt.py +++ b/tests/develop-test/5-taos-tools/taosdump/taosdumpTestTypeBigInt.py @@ -11,13 +11,11 @@ # -*- coding: utf-8 -*- -import sys import os from util.log import * from util.cases import * from util.sql import * from util.dnodes import * -import subprocess class TDTestCase: @@ -37,8 +35,12 @@ class TDTestCase: if ("community" in selfPath): projPath = selfPath[:selfPath.find("community")] + elif ("src" in selfPath): + projPath = selfPath[:selfPath.find("src")] + elif ("/tools/" in selfPath): + projPath = selfPath[:selfPath.find("/tools/")] else: - projPath = selfPath[:selfPath.find("tests")] + tdLog.exit("path: %s is not supported" % selfPath) buildPath = "" for root, dirs, files in os.walk(projPath): @@ -53,7 +55,7 @@ class TDTestCase: tdSql.prepare() tdSql.execute("drop database if exists db") - tdSql.execute("create database db days 11 keep 3649 blocks 8 ") + tdSql.execute("create database db keep 3649 ") tdSql.execute("use db") tdSql.execute( @@ -98,7 +100,16 @@ class TDTestCase: os.system("%staosdump -i %s -T 1" % (binPath, self.tmpdir)) tdSql.query("show databases") - tdSql.checkRows(1) + dbresult = tdSql.queryResult + + found = False + for i in range(len(dbresult)): + print("Found db: %s" % dbresult[i][0]) + if (dbresult[i][0] == "db"): + found = True + break + + assert found == True tdSql.execute("use db") tdSql.query("show stables") diff --git a/tests/develop-test/5-taos-tools/taosdump/taosdumpTestTypeBinary.py b/tests/develop-test/5-taos-tools/taosdump/taosdumpTestTypeBinary.py index 4909eb376222bbea7102208d4418d608b827fbbf..ae651968c27d278e61a185adb7646a08aa7fff44 100644 --- a/tests/develop-test/5-taos-tools/taosdump/taosdumpTestTypeBinary.py +++ b/tests/develop-test/5-taos-tools/taosdump/taosdumpTestTypeBinary.py @@ -11,13 +11,11 @@ # -*- coding: utf-8 -*- -import sys import os from util.log import * from util.cases import * from util.sql import * from util.dnodes import * -import subprocess class TDTestCase: @@ -37,8 +35,12 @@ class TDTestCase: if ("community" in selfPath): projPath = selfPath[:selfPath.find("community")] + elif ("src" in selfPath): + projPath = selfPath[:selfPath.find("src")] + elif ("/tools/" in selfPath): + projPath = selfPath[:selfPath.find("/tools/")] else: - projPath = selfPath[:selfPath.find("tests")] + tdLog.exit("path: %s is not supported" % selfPath) buildPath = "" for root, dirs, files in os.walk(projPath): @@ -53,7 +55,7 @@ class TDTestCase: tdSql.prepare() tdSql.execute("drop database if exists db") - tdSql.execute("create database db days 11 keep 3649 blocks 8 ") + tdSql.execute("create database db keep 3649 ") tdSql.execute("use db") tdSql.execute( @@ -86,7 +88,16 @@ class TDTestCase: os.system("%staosdump -i %s" % (binPath, self.tmpdir)) tdSql.query("show databases") - tdSql.checkRows(1) + dbresult = tdSql.queryResult + + found = False + for i in range(len(dbresult)): + print("Found db: %s" % dbresult[i][0]) + if (dbresult[i][0] == "db"): + found = True + break + + assert found == True tdSql.execute("use db") tdSql.query("show stables") @@ -95,14 +106,16 @@ class TDTestCase: tdSql.query("show tables") tdSql.checkRows(2) - tdSql.checkData(0, 0, 't2') - tdSql.checkData(1, 0, 't1') + dbresult = tdSql.queryResult + print(dbresult) + for i in range(len(dbresult)): + assert ((dbresult[i][0] == "t1") or (dbresult[i][0] == "t2")) - tdSql.query("select btag from st where tbname = 't1'") + tdSql.query("select distinct(btag) from st where tbname = 't1'") tdSql.checkRows(1) tdSql.checkData(0, 0, "test") - tdSql.query("select btag from st where tbname = 't2'") + tdSql.query("select distinct(btag) from st where tbname = 't2'") tdSql.checkRows(1) tdSql.checkData(0, 0, None) diff --git a/tests/develop-test/5-taos-tools/taosdump/taosdumpTestTypeBool.py b/tests/develop-test/5-taos-tools/taosdump/taosdumpTestTypeBool.py index 138f7ba81c036c723bcf945cbce97c144d43db1b..b3ab493103320605a79729798ce827b051527a78 100644 --- a/tests/develop-test/5-taos-tools/taosdump/taosdumpTestTypeBool.py +++ b/tests/develop-test/5-taos-tools/taosdump/taosdumpTestTypeBool.py @@ -11,13 +11,11 @@ # -*- coding: utf-8 -*- -import sys import os from util.log import * from util.cases import * from util.sql import * from util.dnodes import * -import subprocess class TDTestCase: @@ -37,8 +35,12 @@ class TDTestCase: if ("community" in selfPath): projPath = selfPath[:selfPath.find("community")] + elif ("src" in selfPath): + projPath = selfPath[:selfPath.find("src")] + elif ("/tools/" in selfPath): + projPath = selfPath[:selfPath.find("/tools/")] else: - projPath = selfPath[:selfPath.find("tests")] + tdLog.exit("path: %s is not supported" % selfPath) buildPath = "" for root, dirs, files in os.walk(projPath): @@ -53,7 +55,7 @@ class TDTestCase: tdSql.prepare() tdSql.execute("drop database if exists db") - tdSql.execute("create database db days 11 keep 3649 blocks 8 ") + tdSql.execute("create database db keep 3649 ") tdSql.execute("use db") tdSql.execute( @@ -87,7 +89,16 @@ class TDTestCase: os.system("%staosdump -i %s" % (binPath, self.tmpdir)) tdSql.query("show databases") - tdSql.checkRows(1) + dbresult = tdSql.queryResult + + found = False + for i in range(len(dbresult)): + print("Found db: %s" % dbresult[i][0]) + if (dbresult[i][0] == "db"): + found = True + break + + assert found == True tdSql.execute("use db") tdSql.query("show stables") @@ -96,22 +107,22 @@ class TDTestCase: tdSql.query("show tables") tdSql.checkRows(3) - tdSql.checkData(0, 0, 't3') - tdSql.checkData(1, 0, 't2') - tdSql.checkData(2, 0, 't1') + dbresult = tdSql.queryResult + print(dbresult) + for i in range(len(dbresult)): + assert ((dbresult[i][0] == "t1") or (dbresult[i][0] == "t2") or (dbresult[i][0] == "t3")) tdSql.query("select btag from st") tdSql.checkRows(3) - tdSql.checkData(0, 0, "False") - tdSql.checkData(1, 0, "True") - tdSql.checkData(2, 0, None) + dbresult = tdSql.queryResult + print(dbresult) - tdSql.query("select * from st where btag = 'true'") + tdSql.query("select * from st where btag = true") tdSql.checkRows(1) tdSql.checkData(0, 1, "True") tdSql.checkData(0, 2, "True") - tdSql.query("select * from st where btag = 'false'") + tdSql.query("select * from st where btag = false") tdSql.checkRows(1) tdSql.checkData(0, 1, "False") tdSql.checkData(0, 2, "False") diff --git a/tests/develop-test/5-taos-tools/taosdump/taosdumpTestTypeDouble.py b/tests/develop-test/5-taos-tools/taosdump/taosdumpTestTypeDouble.py index 24ebb0fa77a4423773a9fedc996da51eba889b3f..fbbf48481b061e3fdc98a139bb20a7aa3e794471 100644 --- a/tests/develop-test/5-taos-tools/taosdump/taosdumpTestTypeDouble.py +++ b/tests/develop-test/5-taos-tools/taosdump/taosdumpTestTypeDouble.py @@ -11,14 +11,12 @@ # -*- coding: utf-8 -*- -import sys import os import math from util.log import * from util.cases import * from util.sql import * from util.dnodes import * -import subprocess class TDTestCase: @@ -38,8 +36,12 @@ class TDTestCase: if ("community" in selfPath): projPath = selfPath[:selfPath.find("community")] + elif ("src" in selfPath): + projPath = selfPath[:selfPath.find("src")] + elif ("/tools/" in selfPath): + projPath = selfPath[:selfPath.find("/tools/")] else: - projPath = selfPath[:selfPath.find("tests")] + tdLog.exit("path: %s is not supported" % selfPath) buildPath = "" for root, dirs, files in os.walk(projPath): @@ -54,7 +56,7 @@ class TDTestCase: tdSql.prepare() tdSql.execute("drop database if exists db") - tdSql.execute("create database db days 11 keep 3649 blocks 8 ") + tdSql.execute("create database db keep 3649 ") tdSql.execute("use db") tdSql.execute( @@ -97,7 +99,16 @@ class TDTestCase: os.system("%staosdump -i %s -T 1" % (binPath, self.tmpdir)) tdSql.query("show databases") - tdSql.checkRows(1) + dbresult = tdSql.queryResult + + found = False + for i in range(len(dbresult)): + print("Found db: %s" % dbresult[i][0]) + if (dbresult[i][0] == "db"): + found = True + break + + assert found == True tdSql.execute("use db") tdSql.query("show stables") diff --git a/tests/develop-test/5-taos-tools/taosdump/taosdumpTestTypeFloat.py b/tests/develop-test/5-taos-tools/taosdump/taosdumpTestTypeFloat.py index 2ce42bb7718920211ab6c2e5e1a0fdcdb57a8fb7..ca49a8fa46a96697d79bca030d51796d75d4dd7f 100644 --- a/tests/develop-test/5-taos-tools/taosdump/taosdumpTestTypeFloat.py +++ b/tests/develop-test/5-taos-tools/taosdump/taosdumpTestTypeFloat.py @@ -11,14 +11,12 @@ # -*- coding: utf-8 -*- -import sys import os import math from util.log import * from util.cases import * from util.sql import * from util.dnodes import * -import subprocess class TDTestCase: @@ -38,8 +36,12 @@ class TDTestCase: if ("community" in selfPath): projPath = selfPath[:selfPath.find("community")] + elif ("src" in selfPath): + projPath = selfPath[:selfPath.find("src")] + elif ("/tools/" in selfPath): + projPath = selfPath[:selfPath.find("/tools/")] else: - projPath = selfPath[:selfPath.find("tests")] + tdLog.exit("path: %s is not supported" % selfPath) buildPath = "" for root, dirs, files in os.walk(projPath): @@ -54,7 +56,7 @@ class TDTestCase: tdSql.prepare() tdSql.execute("drop database if exists db") - tdSql.execute("create database db days 11 keep 3649 blocks 8 ") + tdSql.execute("create database db keep 3649 ") tdSql.execute("use db") tdSql.execute( @@ -97,7 +99,16 @@ class TDTestCase: os.system("%staosdump -i %s -T 1" % (binPath, self.tmpdir)) tdSql.query("show databases") - tdSql.checkRows(1) + dbresult = tdSql.queryResult + + found = False + for i in range(len(dbresult)): + print("Found db: %s" % dbresult[i][0]) + if (dbresult[i][0] == "db"): + found = True + break + + assert found == True tdSql.execute("use db") tdSql.query("show stables") diff --git a/tests/develop-test/5-taos-tools/taosdump/taosdumpTestTypeInt.py b/tests/develop-test/5-taos-tools/taosdump/taosdumpTestTypeInt.py index b6a24a6eee5cb01faf1b861eb1750a91d2587c3e..3fe1168db06629a981a76fbe6f901be30bb6f5a6 100644 --- a/tests/develop-test/5-taos-tools/taosdump/taosdumpTestTypeInt.py +++ b/tests/develop-test/5-taos-tools/taosdump/taosdumpTestTypeInt.py @@ -11,13 +11,11 @@ # -*- coding: utf-8 -*- -import sys import os from util.log import * from util.cases import * from util.sql import * from util.dnodes import * -import subprocess class TDTestCase: @@ -32,28 +30,34 @@ class TDTestCase: tdSql.init(conn.cursor(), logSql) self.tmpdir = "tmp" - def getBuildPath(self): + def getPath(self, tool="taosdump"): selfPath = os.path.dirname(os.path.realpath(__file__)) if ("community" in selfPath): projPath = selfPath[:selfPath.find("community")] + elif ("src" in selfPath): + projPath = selfPath[:selfPath.find("src")] + elif ("/tools/" in selfPath): + projPath = selfPath[:selfPath.find("/tools/")] else: - projPath = selfPath[:selfPath.find("tests")] + tdLog.exit("path: %s is not supported" % selfPath) - buildPath = "" + paths = [] for root, dirs, files in os.walk(projPath): - if ("taosdump" in files): + if ((tool) in files): rootRealPath = os.path.dirname(os.path.realpath(root)) if ("packaging" not in rootRealPath): - buildPath = root[:len(root) - len("/build/bin")] + paths.append(os.path.join(root, tool)) break - return buildPath + if (len(paths) == 0): + return "" + return paths[0] def run(self): tdSql.prepare() tdSql.execute("drop database if exists db") - tdSql.execute("create database db days 11 keep 3649 blocks 8 ") + tdSql.execute("create database db keep 3649") tdSql.execute("use db") tdSql.execute( @@ -69,12 +73,11 @@ class TDTestCase: # sys.exit(1) - buildPath = self.getBuildPath() - if (buildPath == ""): + binPath = self.getPath() + if (binPath == ""): tdLog.exit("taosdump not found!") else: - tdLog.info("taosdump found in %s" % buildPath) - binPath = buildPath + "/build/bin/" + tdLog.info("taosdump found in %s" % binPath) if not os.path.exists(self.tmpdir): os.makedirs(self.tmpdir) @@ -84,16 +87,25 @@ class TDTestCase: os.makedirs(self.tmpdir) os.system( - "%staosdump --databases db -o %s -T 1" % + "%s --databases db -o %s -T 1" % (binPath, self.tmpdir)) # sys.exit(1) tdSql.execute("drop database db") - os.system("%staosdump -i %s -T 1" % (binPath, self.tmpdir)) + os.system("%s -i %s -T 1" % (binPath, self.tmpdir)) tdSql.query("show databases") - tdSql.checkRows(1) + dbresult = tdSql.queryResult + + found = False + for i in range(len(dbresult)): + print("Found db: %s" % dbresult[i][0]) + if (dbresult[i][0] == "db"): + found = True + break + + assert found == True tdSql.execute("use db") tdSql.query("show stables") diff --git a/tests/develop-test/5-taos-tools/taosdump/taosdumpTestTypeJson.py b/tests/develop-test/5-taos-tools/taosdump/taosdumpTestTypeJson.py index cf0c7f4ac594faf8e30582bd205e126b5097b9f4..9d11c821dcfdc01911e687bd2280373ff8d76c27 100644 --- a/tests/develop-test/5-taos-tools/taosdump/taosdumpTestTypeJson.py +++ b/tests/develop-test/5-taos-tools/taosdump/taosdumpTestTypeJson.py @@ -11,13 +11,11 @@ # -*- coding: utf-8 -*- -import sys import os from util.log import * from util.cases import * from util.sql import * from util.dnodes import * -import subprocess class TDTestCase: @@ -37,8 +35,12 @@ class TDTestCase: if ("community" in selfPath): projPath = selfPath[:selfPath.find("community")] + elif ("src" in selfPath): + projPath = selfPath[:selfPath.find("src")] + elif ("/tools/" in selfPath): + projPath = selfPath[:selfPath.find("/tools/")] else: - projPath = selfPath[:selfPath.find("tests")] + tdLog.exit("path: %s is not supported" % selfPath) buildPath = "" for root, dirs, files in os.walk(projPath): @@ -53,7 +55,7 @@ class TDTestCase: tdSql.prepare() tdSql.execute("drop database if exists db") - tdSql.execute("create database db days 11 keep 3649 blocks 8 ") + tdSql.execute("create database db keep 3649 ") tdSql.execute("use db") tdSql.execute( @@ -93,7 +95,16 @@ class TDTestCase: os.system("%staosdump -i %s -g" % (binPath, self.tmpdir)) tdSql.query("show databases") - tdSql.checkRows(1) + dbresult = tdSql.queryResult + + found = False + for i in range(len(dbresult)): + print("Found db: %s" % dbresult[i][0]) + if (dbresult[i][0] == "db"): + found = True + break + + assert found == True tdSql.execute("use db") tdSql.query("show stables") @@ -102,11 +113,24 @@ class TDTestCase: tdSql.query("show tables") tdSql.checkRows(3) - tdSql.checkData(0, 0, 't3') + + dbresult = tdSql.queryResult + print(dbresult) + for i in range(len(dbresult)): + assert ((dbresult[i][0] == "t1") or (dbresult[i][0] == "t2") or (dbresult[i][0] == "t3")) tdSql.query("select jtag->'location' from st") tdSql.checkRows(3) - tdSql.checkData(0, 0, "\"beijing\"") + + dbresult = tdSql.queryResult + print(dbresult) + found = False + for i in range(len(dbresult)): + if (dbresult[i][0] == "\"beijing\""): + found = True + break + + assert found == True tdSql.query("select * from st where jtag contains 'location'") tdSql.checkRows(1) @@ -115,9 +139,16 @@ class TDTestCase: tdSql.query("select jtag from st") tdSql.checkRows(3) - tdSql.checkData(0, 0, "{\"location\":\"beijing\"}") - tdSql.checkData(1, 0, None) - tdSql.checkData(2, 0, None) + + dbresult = tdSql.queryResult + print(dbresult) + found = False + for i in range(len(dbresult)): + if (dbresult[i][0] == "{\"location\":\"beijing\"}"): + found = True + break + + assert found == True def stop(self): tdSql.close() diff --git a/tests/develop-test/5-taos-tools/taosdump/taosdumpTestTypeSmallInt.py b/tests/develop-test/5-taos-tools/taosdump/taosdumpTestTypeSmallInt.py index 2fc1ffb75e5d31d501024e1432a02f62a0fbd480..bdbd09dec47a602b180c9573d21c8698e60eeae9 100644 --- a/tests/develop-test/5-taos-tools/taosdump/taosdumpTestTypeSmallInt.py +++ b/tests/develop-test/5-taos-tools/taosdump/taosdumpTestTypeSmallInt.py @@ -11,13 +11,11 @@ # -*- coding: utf-8 -*- -import sys import os from util.log import * from util.cases import * from util.sql import * from util.dnodes import * -import subprocess class TDTestCase: @@ -32,27 +30,34 @@ class TDTestCase: tdSql.init(conn.cursor(), logSql) self.tmpdir = "tmp" - def getBuildPath(self): + def getPath(self, tool="taosdump"): selfPath = os.path.dirname(os.path.realpath(__file__)) if ("community" in selfPath): projPath = selfPath[:selfPath.find("community")] + elif ("src" in selfPath): + projPath = selfPath[:selfPath.find("src")] + elif ("/tools/" in selfPath): + projPath = selfPath[:selfPath.find("/tools/")] else: - projPath = selfPath[:selfPath.find("tests")] + tdLog.exit("path: %s is not supported" % selfPath) + paths = [] for root, dirs, files in os.walk(projPath): - if ("taosdump" in files): + if ((tool) in files): rootRealPath = os.path.dirname(os.path.realpath(root)) if ("packaging" not in rootRealPath): - buildPath = root[:len(root) - len("/build/bin")] + paths.append(os.path.join(root, tool)) break - return buildPath + if (len(paths) == 0): + return "" + return paths[0] def run(self): tdSql.prepare() tdSql.execute("drop database if exists db") - tdSql.execute("create database db days 11 keep 3649 blocks 8 ") + tdSql.execute("create database db keep 3649 ") tdSql.execute("use db") tdSql.execute( @@ -69,14 +74,12 @@ class TDTestCase: tdSql.execute("create table t4 using st tags(NULL)") tdSql.execute("insert into t4 values(1640000000000, NULL)") -# sys.exit(1) - - buildPath = self.getBuildPath() - if (buildPath == ""): + binPath = self.getPath() + if (binPath == ""): tdLog.exit("taosdump not found!") else: - tdLog.info("taosdump found in %s" % buildPath) - binPath = buildPath + "/build/bin/" + tdLog.info("taosdump found: %s" % binPath) + if not os.path.exists(self.tmpdir): os.makedirs(self.tmpdir) @@ -86,16 +89,25 @@ class TDTestCase: os.makedirs(self.tmpdir) os.system( - "%staosdump --databases db -o %s -T 1" % + "%s --databases db -o %s -T 1" % (binPath, self.tmpdir)) # sys.exit(1) tdSql.execute("drop database db") - os.system("%staosdump -i %s -T 1" % (binPath, self.tmpdir)) + os.system("%s -i %s -T 1" % (binPath, self.tmpdir)) tdSql.query("show databases") - tdSql.checkRows(1) + dbresult = tdSql.queryResult + + found = False + for i in range(len(dbresult)): + print("Found db: %s" % dbresult[i][0]) + if (dbresult[i][0] == "db"): + found = True + break + + assert found == True tdSql.execute("use db") tdSql.query("show stables") diff --git a/tests/develop-test/5-taos-tools/taosdump/taosdumpTestTypeTinyInt.py b/tests/develop-test/5-taos-tools/taosdump/taosdumpTestTypeTinyInt.py index dfc18fcd01e2fd0c210954224268e2c673d33406..5cfed3187a2c41b258d33f112eb8af301dd3d477 100644 --- a/tests/develop-test/5-taos-tools/taosdump/taosdumpTestTypeTinyInt.py +++ b/tests/develop-test/5-taos-tools/taosdump/taosdumpTestTypeTinyInt.py @@ -11,13 +11,11 @@ # -*- coding: utf-8 -*- -import sys import os from util.log import * from util.cases import * from util.sql import * from util.dnodes import * -import subprocess class TDTestCase: @@ -37,8 +35,12 @@ class TDTestCase: if ("community" in selfPath): projPath = selfPath[:selfPath.find("community")] + elif ("src" in selfPath): + projPath = selfPath[:selfPath.find("src")] + elif ("/tools/" in selfPath): + projPath = selfPath[:selfPath.find("/tools/")] else: - projPath = selfPath[:selfPath.find("tests")] + tdLog.exit("path: %s is not supported" % selfPath) for root, dirs, files in os.walk(projPath): if ("taosdump" in files): @@ -52,7 +54,7 @@ class TDTestCase: tdSql.prepare() tdSql.execute("drop database if exists db") - tdSql.execute("create database db days 11 keep 3649 blocks 8 ") + tdSql.execute("create database db keep 3649 ") tdSql.execute("use db") tdSql.execute( @@ -95,7 +97,16 @@ class TDTestCase: os.system("%staosdump -i %s -T 1" % (binPath, self.tmpdir)) tdSql.query("show databases") - tdSql.checkRows(1) + dbresult = tdSql.queryResult + + found = False + for i in range(len(dbresult)): + print("Found db: %s" % dbresult[i][0]) + if (dbresult[i][0] == "db"): + found = True + break + + assert found == True tdSql.execute("use db") tdSql.query("show stables") diff --git a/tests/develop-test/5-taos-tools/taosdump/taosdumpTestTypeUnsignedBigInt.py b/tests/develop-test/5-taos-tools/taosdump/taosdumpTestTypeUnsignedBigInt.py index 1a6e9a69d9b19365c791f7840f0782a5ef5231c7..55c9e3100e74e3216cfd9f066a761c57b18a5401 100644 --- a/tests/develop-test/5-taos-tools/taosdump/taosdumpTestTypeUnsignedBigInt.py +++ b/tests/develop-test/5-taos-tools/taosdump/taosdumpTestTypeUnsignedBigInt.py @@ -11,13 +11,11 @@ # -*- coding: utf-8 -*- -import sys import os from util.log import * from util.cases import * from util.sql import * from util.dnodes import * -import subprocess class TDTestCase: @@ -37,8 +35,12 @@ class TDTestCase: if ("community" in selfPath): projPath = selfPath[:selfPath.find("community")] + elif ("src" in selfPath): + projPath = selfPath[:selfPath.find("src")] + elif ("/tools/" in selfPath): + projPath = selfPath[:selfPath.find("/tools/")] else: - projPath = selfPath[:selfPath.find("tests")] + tdLog.exit("path: %s is not supported" % selfPath) buildPath = "" for root, dirs, files in os.walk(projPath): @@ -53,7 +55,7 @@ class TDTestCase: tdSql.prepare() tdSql.execute("drop database if exists db") - tdSql.execute("create database db days 11 keep 3649 blocks 8 ") + tdSql.execute("create database db keep 3649 ") tdSql.execute("use db") tdSql.execute( @@ -91,7 +93,16 @@ class TDTestCase: os.system("%staosdump -i %s -T 1 -g" % (binPath, self.tmpdir)) tdSql.query("show databases") - tdSql.checkRows(1) + dbresult = tdSql.queryResult + + found = False + for i in range(len(dbresult)): + print("Found db: %s" % dbresult[i][0]) + if (dbresult[i][0] == "db"): + found = True + break + + assert found == True tdSql.execute("use db") tdSql.query("show stables") diff --git a/tests/develop-test/5-taos-tools/taosdump/taosdumpTestTypeUnsignedInt.py b/tests/develop-test/5-taos-tools/taosdump/taosdumpTestTypeUnsignedInt.py index e71650bc8a09b91c6eabe709990b0dc01782d949..71c1a8aea270e37cc7a63e41a17889ac4fcdb80d 100644 --- a/tests/develop-test/5-taos-tools/taosdump/taosdumpTestTypeUnsignedInt.py +++ b/tests/develop-test/5-taos-tools/taosdump/taosdumpTestTypeUnsignedInt.py @@ -11,13 +11,11 @@ # -*- coding: utf-8 -*- -import sys import os from util.log import * from util.cases import * from util.sql import * from util.dnodes import * -import subprocess class TDTestCase: @@ -37,8 +35,12 @@ class TDTestCase: if ("community" in selfPath): projPath = selfPath[:selfPath.find("community")] + elif ("src" in selfPath): + projPath = selfPath[:selfPath.find("src")] + elif ("/tools/" in selfPath): + projPath = selfPath[:selfPath.find("/tools/")] else: - projPath = selfPath[:selfPath.find("tests")] + tdLog.exit("path: %s is not supported" % selfPath) buildPath = "" for root, dirs, files in os.walk(projPath): @@ -53,7 +55,7 @@ class TDTestCase: tdSql.prepare() tdSql.execute("drop database if exists db") - tdSql.execute("create database db days 11 keep 3649 blocks 8 ") + tdSql.execute("create database db keep 3649 ") tdSql.execute("use db") tdSql.execute( @@ -91,7 +93,16 @@ class TDTestCase: os.system("%staosdump -i %s -T 1 -g" % (binPath, self.tmpdir)) tdSql.query("show databases") - tdSql.checkRows(1) + dbresult = tdSql.queryResult + + found = False + for i in range(len(dbresult)): + print("Found db: %s" % dbresult[i][0]) + if (dbresult[i][0] == "db"): + found = True + break + + assert found == True tdSql.execute("use db") tdSql.query("show stables") diff --git a/tests/develop-test/5-taos-tools/taosdump/taosdumpTestTypeUnsignedSmallInt.py b/tests/develop-test/5-taos-tools/taosdump/taosdumpTestTypeUnsignedSmallInt.py index d05a397c3649610dc9569c3ac32a4fb9fe189800..571c9dcde0834ebf7aad24c56121c4abc08793e2 100644 --- a/tests/develop-test/5-taos-tools/taosdump/taosdumpTestTypeUnsignedSmallInt.py +++ b/tests/develop-test/5-taos-tools/taosdump/taosdumpTestTypeUnsignedSmallInt.py @@ -11,13 +11,11 @@ # -*- coding: utf-8 -*- -import sys import os from util.log import * from util.cases import * from util.sql import * from util.dnodes import * -import subprocess class TDTestCase: @@ -37,8 +35,12 @@ class TDTestCase: if ("community" in selfPath): projPath = selfPath[:selfPath.find("community")] + elif ("src" in selfPath): + projPath = selfPath[:selfPath.find("src")] + elif ("/tools/" in selfPath): + projPath = selfPath[:selfPath.find("/tools/")] else: - projPath = selfPath[:selfPath.find("tests")] + tdLog.exit("path: %s is not supported" % selfPath) buildPath = "" for root, dirs, files in os.walk(projPath): @@ -53,7 +55,7 @@ class TDTestCase: tdSql.prepare() tdSql.execute("drop database if exists db") - tdSql.execute("create database db days 11 keep 3649 blocks 8 ") + tdSql.execute("create database db keep 3649 ") tdSql.execute("use db") tdSql.execute( @@ -91,7 +93,16 @@ class TDTestCase: os.system("%staosdump -i %s -T 1 -g" % (binPath, self.tmpdir)) tdSql.query("show databases") - tdSql.checkRows(1) + dbresult = tdSql.queryResult + + found = False + for i in range(len(dbresult)): + print("Found db: %s" % dbresult[i][0]) + if (dbresult[i][0] == "db"): + found = True + break + + assert found == True tdSql.execute("use db") tdSql.query("show stables") diff --git a/tests/develop-test/5-taos-tools/taosdump/taosdumpTestTypeUnsignedTinyInt.py b/tests/develop-test/5-taos-tools/taosdump/taosdumpTestTypeUnsignedTinyInt.py index 9995d3812bfb44c0f5812db5b8fafbb576dbb86b..c3ff82235cdb57eb40d6878f315c8041415a89fd 100644 --- a/tests/develop-test/5-taos-tools/taosdump/taosdumpTestTypeUnsignedTinyInt.py +++ b/tests/develop-test/5-taos-tools/taosdump/taosdumpTestTypeUnsignedTinyInt.py @@ -11,13 +11,11 @@ # -*- coding: utf-8 -*- -import sys import os from util.log import * from util.cases import * from util.sql import * from util.dnodes import * -import subprocess class TDTestCase: @@ -37,8 +35,12 @@ class TDTestCase: if ("community" in selfPath): projPath = selfPath[:selfPath.find("community")] + elif ("src" in selfPath): + projPath = selfPath[:selfPath.find("src")] + elif ("/tools/" in selfPath): + projPath = selfPath[:selfPath.find("/tools/")] else: - projPath = selfPath[:selfPath.find("tests")] + tdLog.exit("path: %s is not supported" % selfPath) buildPath = "" for root, dirs, files in os.walk(projPath): @@ -53,7 +55,7 @@ class TDTestCase: tdSql.prepare() tdSql.execute("drop database if exists db") - tdSql.execute("create database db days 11 keep 3649 blocks 8 ") + tdSql.execute("create database db keep 3649 ") tdSql.execute("use db") tdSql.execute( @@ -91,7 +93,16 @@ class TDTestCase: os.system("%staosdump -i %s -T 1 -g" % (binPath, self.tmpdir)) tdSql.query("show databases") - tdSql.checkRows(1) + dbresult = tdSql.queryResult + + found = False + for i in range(len(dbresult)): + print("Found db: %s" % dbresult[i][0]) + if (dbresult[i][0] == "db"): + found = True + break + + assert found == True tdSql.execute("use db") tdSql.query("show stables") diff --git a/tests/parallel_test/cases.task b/tests/parallel_test/cases.task index c2c462324e0cdc02b248ac704064d7c2ec76dfeb..f399b64edf9d721383116fb58b6dadf673dc3dac 100644 --- a/tests/parallel_test/cases.task +++ b/tests/parallel_test/cases.task @@ -1,102 +1,102 @@ # 20,,pytest,python3 insert/retentionpolicy.py change date time 500,,docs-examples-test,./test_node.sh -299,,pytest,python3 test.py -f update/merge_commit_data-0.py -290,,pytest,python3 test.py -f update/merge_commit_data.py -241,,pytest,python3 test.py -f update/merge_commit_data2.py -224,,pytest,python3 test.py -f query/queryNullValueTest.py -221,,pytest,python3 test.py -f query/nestedQuery/nestedQuery.py -220,,pytest,python3 test.py -f update/merge_commit_data2_update0.py -208,,pytest,python3 test.py -f update/merge_commit_last.py -203,,pytest,python3 test.py -f update/merge_commit_last-0.py -191,,pytest,python3 test.py -f stream/stream1.py -188,,pytest,python3 test.py -f stream/stream2.py +299,,pytest,python3 test.py -f update/merge_commit_data-0.py +290,,pytest,python3 test.py -f update/merge_commit_data.py +241,,pytest,python3 test.py -f update/merge_commit_data2.py +224,,pytest,python3 test.py -f query/queryNullValueTest.py +221,,pytest,python3 test.py -f query/nestedQuery/nestedQuery.py +220,,pytest,python3 test.py -f update/merge_commit_data2_update0.py +208,,pytest,python3 test.py -f update/merge_commit_last.py +203,,pytest,python3 test.py -f update/merge_commit_last-0.py +191,,pytest,python3 test.py -f stream/stream1.py +188,,pytest,python3 test.py -f stream/stream2.py 160,,script,./test.sh -f general/stream/restart_stream.sim 153,,script,./test.sh -f general/stream/stream_3.sim -151,,script,./test.sh -f unique/vnode/replica3_repeat.sim -138,,pytest,python3 test.py -f insert/randomNullCommit.py -132,,pytest,python3 test.py -f functions/function_interp.py -131,,system-test,bash 3-connectors/python/test.sh -128,,develop-test,bash 3-connectors/python/test.sh -127,,pytest,python3 test.py -f query/queryConnection.py -124,,develop-test/3-connectors/java,bash test.sh -121,2,script,./test.sh -f unique/cluster/balance3.sim -114,,script,./test.sh -f general/db/alter_tables_d2.sim -113,,pytest,python3 test.py -f update/append_commit_last.py +151,,script,./test.sh -f unique/vnode/replica3_repeat.sim +138,,pytest,python3 test.py -f insert/randomNullCommit.py +132,,pytest,python3 test.py -f functions/function_interp.py +131,,system-test,bash 3-connectors/python/test.sh +128,,develop-test,bash 3-connectors/python/test.sh +127,,pytest,python3 test.py -f query/queryConnection.py +124,,develop-test/3-connectors/java,bash test.sh +121,2,script,./test.sh -f unique/cluster/balance3.sim +114,,script,./test.sh -f general/db/alter_tables_d2.sim +113,,pytest,python3 test.py -f update/append_commit_last.py 113,,pytest,python3 test.py -f update/append_commit_data.py -111,,script,./test.sh -f unique/vnode/replica2_repeat.sim -111,,script,./test.sh -f unique/vnode/many.sim -110,,pytest,python3 test.py -f update/append_commit_last-0.py -109,,script,./test.sh -f unique/cluster/vgroup100.sim -102,,script,./test.sh -f general/parser/selectResNum.sim -99,,script,./test.sh -f general/parser/repeatAlter.sim -89,,script,./test.sh -f unique/big/balance.sim -86,,script,./test.sh -f unique/dnode/balance1.sim -86,,script,./test.sh -f unique/cluster/balance2.sim -85,,pytest,python3 test.py -f insert/boundary2.py -83,,script,./test.sh -f general/parser/limit2.sim -83,,script,./test.sh -f general/parser/limit1_tblocks100.sim -82,,script,./test.sh -f general/parser/limit1.sim -82,,pytest,python3 test.py -f query/last_row_cache.py -79,,script,./test.sh -f general/db/alter_tables_v4.sim -79,,pytest,python3 test.py -f insert/verifyMemToDiskCrash.py -78,2,script,./test.sh -f unique/dnode/balance3.sim -78,,script,./test.sh -f unique/cluster/balance1.sim -76,,script,./test.sh -f unique/import/replica3.sim -76,,script,./test.sh -f unique/db/replica_add13.sim +111,,script,./test.sh -f unique/vnode/replica2_repeat.sim +111,,script,./test.sh -f unique/vnode/many.sim +110,,pytest,python3 test.py -f update/append_commit_last-0.py +109,,script,./test.sh -f unique/cluster/vgroup100.sim +102,,script,./test.sh -f general/parser/selectResNum.sim +99,,script,./test.sh -f general/parser/repeatAlter.sim +89,,script,./test.sh -f unique/big/balance.sim +86,,script,./test.sh -f unique/dnode/balance1.sim +86,,script,./test.sh -f unique/cluster/balance2.sim +85,,pytest,python3 test.py -f insert/boundary2.py +83,,script,./test.sh -f general/parser/limit2.sim +83,,script,./test.sh -f general/parser/limit1_tblocks100.sim +82,,script,./test.sh -f general/parser/limit1.sim +82,,pytest,python3 test.py -f query/last_row_cache.py +79,,script,./test.sh -f general/db/alter_tables_v4.sim +79,,pytest,python3 test.py -f insert/verifyMemToDiskCrash.py +78,2,script,./test.sh -f unique/dnode/balance3.sim +78,,script,./test.sh -f unique/cluster/balance1.sim +76,,script,./test.sh -f unique/import/replica3.sim +76,,script,./test.sh -f unique/db/replica_add13.sim 76,,script,./test.sh -f general/stream/table_replica1_vnoden.sim -75,,script,./test.sh -f unique/db/replica_reduce32.sim -75,,script,./test.sh -f unique/db/replica_add23.sim -75,,script,./test.sh -f unique/account/usage.sim -74,,script,./test.sh -f unique/arbitrator/dn3_mn1_replica_change.sim -74,,script,./test.sh -f unique/arbitrator/dn3_mn1_r3_vnode_delDir.sim +75,,script,./test.sh -f unique/db/replica_reduce32.sim +75,,script,./test.sh -f unique/db/replica_add23.sim +75,,script,./test.sh -f unique/account/usage.sim +74,,script,./test.sh -f unique/arbitrator/dn3_mn1_replica_change.sim +74,,script,./test.sh -f unique/arbitrator/dn3_mn1_r3_vnode_delDir.sim 74,,script,./test.sh -f general/stream/metrics_replica1_vnoden.sim -71,,script,./test.sh -f unique/mnode/mgmtr2.sim -70,,script,./test.sh -f general/stream/stream_restart.sim -69,,script,./test.sh -f unique/import/replica3.sim -69,,script,./test.sh -f unique/arbitrator/check_cluster_cfg_para.sim -69,,pytest,python3 test.py -f functions/function_sample.py -r 1 -68,,script,./test.sh -f unique/mnode/mgmt20.sim -68,,script,./test.sh -f general/parser/groupby.sim -67,,script,./test.sh -f unique/dnode/data1.sim -67,,pytest,python3 test.py -f client/taoshellCheckCase.py -66,,script,./test.sh -f unique/db/delete.sim -66,,script,./test.sh -f unique/account/authority.sim -66,,script,./test.sh -f general/db/alter_tables_v1.sim -65,,script,./test.sh -f unique/vnode/replica3_basic.sim -65,,script,./test.sh -f unique/import/replica2.sim -65,2,script,./test.sh -f unique/dnode/m2.sim -65,,script,./test.sh -f unique/db/delete_part.sim -65,,script,./test.sh -f issue/TD-2713.sim -64,,script,./test.sh -f unique/arbitrator/dn3_mn1_vnode_delDir.sim -63,2,script,./test.sh -f unique/dnode/m3.sim -63,,script,./test.sh -f unique/db/replica_reduce31.sim -63,,script,./test.sh -f unique/arbitrator/dn3_mn1_vnode_noCorruptFile_offline.sim -63,,script,./test.sh -f general/parser/where.sim -63,,script,./test.sh -f general/parser/union.sim -63,,pytest,python3 test.py -f stream/new.py -62,,script,./test.sh -f unique/dnode/vnode_clean.sim -61,,script,./test.sh -f unique/db/replica_part.sim -61,,pytest,python3 test.py -f stream/cqSupportBefore1970.py -60,,script,./test.sh -f unique/vnode/replica2_basic2.sim -60,,script,./test.sh -f general/parser/first_last.sim -60,,script,./test.sh -f general/db/delete_reuse1.sim -60,,pytest,python3 test.py -f tools/taosdemoAllTest/TD-5213/insert4096columns_not_use_taosdemo.py -60,,pytest,python3 test.py -f stream/sys.py -59,,script,./test.sh -f unique/import/replica2.sim -59,,script,./test.sh -f unique/dnode/balance2.sim -59,,script,./test.sh -f general/parser/projection_limit_offset.sim -58,,script,./test.sh -f unique/dnode/balancex.sim -58,,pytest,python3 test.py -f stream/table_1.py -57,,script,./test.sh -f unique/dnode/offline2.sim -57,,script,./test.sh -f unique/arbitrator/replica_changeWithArbitrator.sim -57,,script,./test.sh -f unique/arbitrator/dn3_mn1_replica_change_dropDnod.sim -57,,script,./test.sh -f general/db/delete_writing1.sim -56,,script,./test.sh -f general/parser/commit.sim -55,,script,./test.sh -f unique/dnode/remove2.sim -55,,script,./test.sh -f unique/dnode/remove1.sim -55,,script,./test.sh -f general/db/delete_reusevnode.sim -55,,pytest,python3 test.py -f stream/metric_n.py -55,,develop-test,python3 ./test.py -f 1-insert/batchInsert.py +71,,script,./test.sh -f unique/mnode/mgmtr2.sim +70,,script,./test.sh -f general/stream/stream_restart.sim +69,,script,./test.sh -f unique/import/replica3.sim +69,,script,./test.sh -f unique/arbitrator/check_cluster_cfg_para.sim +69,,pytest,python3 test.py -f functions/function_sample.py -r 1 +68,,script,./test.sh -f unique/mnode/mgmt20.sim +68,,script,./test.sh -f general/parser/groupby.sim +67,,script,./test.sh -f unique/dnode/data1.sim +67,,pytest,python3 test.py -f client/taoshellCheckCase.py +66,,script,./test.sh -f unique/db/delete.sim +66,,script,./test.sh -f unique/account/authority.sim +66,,script,./test.sh -f general/db/alter_tables_v1.sim +65,,script,./test.sh -f unique/vnode/replica3_basic.sim +65,,script,./test.sh -f unique/import/replica2.sim +65,2,script,./test.sh -f unique/dnode/m2.sim +65,,script,./test.sh -f unique/db/delete_part.sim +65,,script,./test.sh -f issue/TD-2713.sim +64,,script,./test.sh -f unique/arbitrator/dn3_mn1_vnode_delDir.sim +63,2,script,./test.sh -f unique/dnode/m3.sim +63,,script,./test.sh -f unique/db/replica_reduce31.sim +63,,script,./test.sh -f unique/arbitrator/dn3_mn1_vnode_noCorruptFile_offline.sim +63,,script,./test.sh -f general/parser/where.sim +63,,script,./test.sh -f general/parser/union.sim +63,,pytest,python3 test.py -f stream/new.py +62,,script,./test.sh -f unique/dnode/vnode_clean.sim +61,,script,./test.sh -f unique/db/replica_part.sim +61,,pytest,python3 test.py -f stream/cqSupportBefore1970.py +60,,script,./test.sh -f unique/vnode/replica2_basic2.sim +60,,script,./test.sh -f general/parser/first_last.sim +60,,script,./test.sh -f general/db/delete_reuse1.sim +60,,pytest,python3 test.py -f tools/taosdemoAllTest/TD-5213/insert4096columns_not_use_taosdemo.py +60,,pytest,python3 test.py -f stream/sys.py +59,,script,./test.sh -f unique/import/replica2.sim +59,,script,./test.sh -f unique/dnode/balance2.sim +59,,script,./test.sh -f general/parser/projection_limit_offset.sim +58,,script,./test.sh -f unique/dnode/balancex.sim +58,,pytest,python3 test.py -f stream/table_1.py +57,,script,./test.sh -f unique/dnode/offline2.sim +57,,script,./test.sh -f unique/arbitrator/replica_changeWithArbitrator.sim +57,,script,./test.sh -f unique/arbitrator/dn3_mn1_replica_change_dropDnod.sim +57,,script,./test.sh -f general/db/delete_writing1.sim +56,,script,./test.sh -f general/parser/commit.sim +55,,script,./test.sh -f unique/dnode/remove2.sim +55,,script,./test.sh -f unique/dnode/remove1.sim +55,,script,./test.sh -f general/db/delete_reusevnode.sim +55,,pytest,python3 test.py -f stream/metric_n.py +55,,develop-test,python3 ./test.py -f 1-insert/batchInsert.py 54,,script,./test.sh -f general/stream/table_del.sim ,,pytest,python3 ./test.py -f query/queryNcharNull.py ,,pytest,python3 ./test.py -f alter/alterBackQuoteCol.py @@ -125,439 +125,439 @@ ,,develop-test,python3 ./test.py -f 5-taos-tools/taosbenchmark/subscripe_json.py ,,develop-test,python3 ./test.py -f 5-taos-tools/taosbenchmark/default_json.py ,,develop-test,python3 ./test.py -f 5-taos-tools/taosbenchmark/invalid_commandline.py -54,,script,./test.sh -f unique/arbitrator/dn3_mn1_vnode_nomaster.sim -54,,script,./test.sh -f unique/arbitrator/dn3_mn1_r2_vnode_delDir.sim -54,,script,./test.sh -f unique/arbitrator/dn3_mn1_multiCreateDropTable.sim -54,,script,./test.sh -f general/parser/sliding.sim -54,,script,./test.sh -f general/parser/interp_full.sim -54,,pytest,python3 test.py -f stream/table_n.py -54,,pytest,python3 test.py -f stream/metric_1.py -53,,script,./test.sh -f unique/mnode/mgmt26.sim -53,,script,./test.sh -f unique/mnode/mgmt23.sim -53,,script,./test.sh -f unique/mnode/mgmt22.sim -53,,script,./test.sh -f unique/db/replica_add12.sim -52,,script,./test.sh -f unique/account/pass_alter.sim -52,,script,./test.sh -f general/parser/topbot.sim -52,,script,./test.sh -f general/parser/join_manyblocks.sim -51,,script,./test.sh -f unique/dnode/reason.sim -51,,script,./test.sh -f unique/cluster/alter.sim -50,,script,./test.sh -f unique/mnode/mgmt34.sim -50,,script,./test.sh -f unique/dnode/datatrans_3node_2.sim +54,,script,./test.sh -f unique/arbitrator/dn3_mn1_vnode_nomaster.sim +54,,script,./test.sh -f unique/arbitrator/dn3_mn1_r2_vnode_delDir.sim +54,,script,./test.sh -f unique/arbitrator/dn3_mn1_multiCreateDropTable.sim +54,,script,./test.sh -f general/parser/sliding.sim +54,,script,./test.sh -f general/parser/interp_full.sim +54,,pytest,python3 test.py -f stream/table_n.py +54,,pytest,python3 test.py -f stream/metric_1.py +53,,script,./test.sh -f unique/mnode/mgmt26.sim +53,,script,./test.sh -f unique/mnode/mgmt23.sim +53,,script,./test.sh -f unique/mnode/mgmt22.sim +53,,script,./test.sh -f unique/db/replica_add12.sim +52,,script,./test.sh -f unique/account/pass_alter.sim +52,,script,./test.sh -f general/parser/topbot.sim +52,,script,./test.sh -f general/parser/join_manyblocks.sim +51,,script,./test.sh -f unique/dnode/reason.sim +51,,script,./test.sh -f unique/cluster/alter.sim +50,,script,./test.sh -f unique/mnode/mgmt34.sim +50,,script,./test.sh -f unique/dnode/datatrans_3node_2.sim 49,,system-test,python3 ./test.py -f 5-taos-tools/taosbenchmark/taosdemoTestInsertWithJson-illegalData.py -49,,script,./test.sh -f unique/db/commit.sim -48,,script,./test.sh -f unique/dnode/datatrans_3node.sim -48,,script,./test.sh -f unique/big/tcp.sim -48,,script,./test.sh -f general/parser/nestquery.sim -48,,script,./test.sh -f general/parser/col_arithmetic_operation.sim -48,,pytest,python3 test.py -f query/queryStateWindow.py +49,,script,./test.sh -f unique/db/commit.sim +48,,script,./test.sh -f unique/dnode/datatrans_3node.sim +48,,script,./test.sh -f unique/big/tcp.sim +48,,script,./test.sh -f general/parser/nestquery.sim +48,,script,./test.sh -f general/parser/col_arithmetic_operation.sim +48,,pytest,python3 test.py -f query/queryStateWindow.py 41,,docs-examples-test,eval sh -c \"if [ `uname -m` != aarch64 ]; then ./test_csharp.sh; fi\" -47,,system-test,python3 ./test.py -f 5-taos-tools/taosbenchmark/taosdemoTestInsertWithJsonSml-illegalData.py -47,,script,./test.sh -f unique/stable/balance_replica1.sim -47,,script,./test.sh -f unique/migrate/mn2_vn2_repl2_rmMnodeVnodeDir.sim -47,,script,./test.sh -f unique/migrate/mn2_vn2_repl2_rmMnodeDir.sim -47,,script,./test.sh -f unique/dnode/monitor.sim -47,,script,./test.sh -f unique/big/maxvnodes.sim -47,,pytest,python3 test.py -f tools/taosdemoAllTest/NanoTestCase/taosdemoTestSupportNanosubscribe.py +47,,system-test,python3 ./test.py -f 5-taos-tools/taosbenchmark/taosdemoTestInsertWithJsonSml-illegalData.py +47,,script,./test.sh -f unique/stable/balance_replica1.sim +47,,script,./test.sh -f unique/migrate/mn2_vn2_repl2_rmMnodeVnodeDir.sim +47,,script,./test.sh -f unique/migrate/mn2_vn2_repl2_rmMnodeDir.sim +47,,script,./test.sh -f unique/dnode/monitor.sim +47,,script,./test.sh -f unique/big/maxvnodes.sim +47,,pytest,python3 test.py -f tools/taosdemoAllTest/NanoTestCase/taosdemoTestSupportNanosubscribe.py 46,,system-test,python3 ./test.py -f 5-taos-tools/taosbenchmark/taosdemoTestQueryWithJson.py -45,,script,./test.sh -f unique/mnode/mgmt24.sim -45,,pytest,python3 test.py -f tools/taosdemoAllTest/TD-5213/insertSigcolumnsNum4096.py -44,,script,./test.sh -f unique/vnode/replica3_vgroup.sim -44,,script,./test.sh -f unique/mnode/mgmt33.sim -44,,pytest,python3 test.py -f wal/sdbComp.py -43,,script,./test.sh -f unique/migrate/mn2_vn2_repl2_rmVnodeDir.sim -43,,script,./test.sh -f unique/dnode/offline1.sim -43,,script,./test.sh -f general/import/replica1.sim -43,,pytest,python3 test.py -f query/select_last_crash.py -43,,pytest,python3 test.py -f import_merge/import_update_2.py -42,,script,./test.sh -f unique/dnode/monitor_bug.sim -42,,script,./test.sh -f unique/arbitrator/sync_replica3_alterTable_drop.sim -42,,script,./test.sh -f general/wal/kill.sim +45,,script,./test.sh -f unique/mnode/mgmt24.sim +45,,pytest,python3 test.py -f tools/taosdemoAllTest/TD-5213/insertSigcolumnsNum4096.py +44,,script,./test.sh -f unique/vnode/replica3_vgroup.sim +44,,script,./test.sh -f unique/mnode/mgmt33.sim +44,,pytest,python3 test.py -f wal/sdbComp.py +43,,script,./test.sh -f unique/migrate/mn2_vn2_repl2_rmVnodeDir.sim +43,,script,./test.sh -f unique/dnode/offline1.sim +43,,script,./test.sh -f general/import/replica1.sim +43,,pytest,python3 test.py -f query/select_last_crash.py +43,,pytest,python3 test.py -f import_merge/import_update_2.py +42,,script,./test.sh -f unique/dnode/monitor_bug.sim +42,,script,./test.sh -f unique/arbitrator/sync_replica3_alterTable_drop.sim +42,,script,./test.sh -f general/wal/kill.sim 41,,docs-examples-test,./test_c.sh -41,,script,./test.sh -f unique/dnode/lossdata.sim -41,,script,./test.sh -f unique/arbitrator/sync_replica3_dropDb.sim -41,,script,./test.sh -f unique/arbitrator/sync_replica2_alterTable_drop.sim -41,,script,./test.sh -f general/alter/count.sim -41,,pytest,python3 test.py -f import_merge/import_update_0.py -40,,script,./test.sh -f unique/arbitrator/sync_replica3_dropTable.sim -40,,script,./test.sh -f unique/arbitrator/sync_replica3_alterTable_add.sim -40,,script,./test.sh -f unique/arbitrator/sync_replica2_dropTable.sim -39,,script,./test.sh -f unique/mnode/mgmt25.sim -39,,script,./test.sh -f unique/arbitrator/offline_replica3_alterTable_online.sim -39,,script,./test.sh -f general/wal/kill.sim -39,,script,./test.sh -f general/db/alter_vgroups.sim -39,,pytest,python3 test.py -f update/allow_update.py -39,,pytest,python3 test.py -f query/last_cache.py -38,,script,./test.sh -f unique/dnode/offline3.sim -38,,script,./test.sh -f unique/arbitrator/sync_replica2_dropDb.sim -38,,script,./test.sh -f general/table/delete_reuse2.sim -38,,script,./test.sh -f general/insert/insert_drop.sim -37,,script,./test.sh -f unique/mnode/mgmt30.sim -37,,script,./test.sh -f unique/column/replica3.sim -37,,script,./test.sh -f unique/arbitrator/offline_replica2_createTable_online.sim -37,,script,./test.sh -f unique/arbitrator/offline_replica2_alterTable_online.sim -37,,script,./test.sh -f general/table/delete_reuse1.sim -37,,script,./test.sh -f general/db/delete_reuse2.sim +41,,script,./test.sh -f unique/dnode/lossdata.sim +41,,script,./test.sh -f unique/arbitrator/sync_replica3_dropDb.sim +41,,script,./test.sh -f unique/arbitrator/sync_replica2_alterTable_drop.sim +41,,script,./test.sh -f general/alter/count.sim +41,,pytest,python3 test.py -f import_merge/import_update_0.py +40,,script,./test.sh -f unique/arbitrator/sync_replica3_dropTable.sim +40,,script,./test.sh -f unique/arbitrator/sync_replica3_alterTable_add.sim +40,,script,./test.sh -f unique/arbitrator/sync_replica2_dropTable.sim +39,,script,./test.sh -f unique/mnode/mgmt25.sim +39,,script,./test.sh -f unique/arbitrator/offline_replica3_alterTable_online.sim +39,,script,./test.sh -f general/wal/kill.sim +39,,script,./test.sh -f general/db/alter_vgroups.sim +39,,pytest,python3 test.py -f update/allow_update.py +39,,pytest,python3 test.py -f query/last_cache.py +38,,script,./test.sh -f unique/dnode/offline3.sim +38,,script,./test.sh -f unique/arbitrator/sync_replica2_dropDb.sim +38,,script,./test.sh -f general/table/delete_reuse2.sim +38,,script,./test.sh -f general/insert/insert_drop.sim +37,,script,./test.sh -f unique/mnode/mgmt30.sim +37,,script,./test.sh -f unique/column/replica3.sim +37,,script,./test.sh -f unique/arbitrator/offline_replica2_createTable_online.sim +37,,script,./test.sh -f unique/arbitrator/offline_replica2_alterTable_online.sim +37,,script,./test.sh -f general/table/delete_reuse1.sim +37,,script,./test.sh -f general/db/delete_reuse2.sim 36,,docs-examples-test,eval sh -c \"if [ `uname -m` != aarch64 ]; then ./test_rust.sh; fi\" -36,,script,./test.sh -f unique/stable/replica3_vnode3.sim -36,,script,./test.sh -f unique/stable/dnode2_stop.sim -36,,script,./test.sh -f unique/arbitrator/sync_replica2_alterTable_add.sim -36,,script,./test.sh -f unique/arbitrator/offline_replica3_createTable_online.sim -36,,script,./test.sh -f unique/arbitrator/offline_replica2_dropTable_online.sim -36,,script,./test.sh -f general/parser/tbnameIn.sim -36,,pytest,python3 test.py -f tools/taosdumpTestNanoSupport.py -35,,script,./test.sh -f unique/migrate/mn2_vn2_repl2_rmMnodeVnodeDir_stopAll_starAll.sim -35,,script,./test.sh -f unique/arbitrator/offline_replica3_alterTag_online.sim -35,,script,./test.sh -f unique/arbitrator/offline_replica2_alterTag_online.sim -35,,script,./test.sh -f issue/TD-2680.sim -35,,pytest,python3 test.py -f update/update_options.py -35,,pytest,python3 test.py -f insert/flushwhiledrop.py -35,,pytest,python3 test.py -f import_merge/import_update_1.py -34,,script,./test.sh -f unique/dnode/alternativeRole.sim -34,,script,./test.sh -f unique/arbitrator/offline_replica3_dropTable_online.sim -34,,script,./test.sh -f unique/arbitrator/offline_replica2_dropDb_online.sim -34,,script,./test.sh -f issue/TD-2677.sim -33,,script,./test.sh -f general/table/delete_writing.sim -33,,script,./test.sh -f general/parser/slimit.sim -33,,script,./test.sh -f general/db/topic1.sim -32,,system-test,python3 ./test.py -f 5-taos-tools/taosdump/taosdumpTestColTag.py -32,,script,./test.sh -f unique/mnode/mgmt21.sim -32,,script,./test.sh -f unique/arbitrator/offline_replica3_dropDb_online.sim -32,,script,./test.sh -f unique/arbitrator/dn3_mn2_killDnode.sim -32,,script,./test.sh -f general/db/delete_reusevnode2.sim -32,,script,./test.sh -f general/compress/compress.sim -32,,script,./test.sh -f general/compress/commitlog.sim -32,,pytest,python3 test.py -f tools/taosdemoAllTest/taosdemoTestInsertAllType.py -31,,script,./test.sh -f general/user/pass_alter.sim -31,,script,./test.sh -f general/stable/disk.sim -31,,script,./test.sh -f general/parser/lastrow.sim -31,,script,./test.sh -f general/db/delete_writing2.sim -31,,script,./test.sh -f general/alter/cached_schema_after_alter.sim -30,2,script,./test.sh -f unique/dnode/simple.sim -30,,script,./test.sh -f unique/account/account_delete.sim -30,,script,./test.sh -f general/import/commit.sim -30,,script,./test.sh -f general/compute/diff2.sim +36,,script,./test.sh -f unique/stable/replica3_vnode3.sim +36,,script,./test.sh -f unique/stable/dnode2_stop.sim +36,,script,./test.sh -f unique/arbitrator/sync_replica2_alterTable_add.sim +36,,script,./test.sh -f unique/arbitrator/offline_replica3_createTable_online.sim +36,,script,./test.sh -f unique/arbitrator/offline_replica2_dropTable_online.sim +36,,script,./test.sh -f general/parser/tbnameIn.sim +36,,pytest,python3 test.py -f tools/taosdumpTestNanoSupport.py +35,,script,./test.sh -f unique/migrate/mn2_vn2_repl2_rmMnodeVnodeDir_stopAll_starAll.sim +35,,script,./test.sh -f unique/arbitrator/offline_replica3_alterTag_online.sim +35,,script,./test.sh -f unique/arbitrator/offline_replica2_alterTag_online.sim +35,,script,./test.sh -f issue/TD-2680.sim +35,,pytest,python3 test.py -f update/update_options.py +35,,pytest,python3 test.py -f insert/flushwhiledrop.py +35,,pytest,python3 test.py -f import_merge/import_update_1.py +34,,script,./test.sh -f unique/dnode/alternativeRole.sim +34,,script,./test.sh -f unique/arbitrator/offline_replica3_dropTable_online.sim +34,,script,./test.sh -f unique/arbitrator/offline_replica2_dropDb_online.sim +34,,script,./test.sh -f issue/TD-2677.sim +33,,script,./test.sh -f general/table/delete_writing.sim +33,,script,./test.sh -f general/parser/slimit.sim +33,,script,./test.sh -f general/db/topic1.sim +32,,system-test,python3 ./test.py -f 5-taos-tools/taosdump/taosdumpTestColTag.py +32,,script,./test.sh -f unique/mnode/mgmt21.sim +32,,script,./test.sh -f unique/arbitrator/offline_replica3_dropDb_online.sim +32,,script,./test.sh -f unique/arbitrator/dn3_mn2_killDnode.sim +32,,script,./test.sh -f general/db/delete_reusevnode2.sim +32,,script,./test.sh -f general/compress/compress.sim +32,,script,./test.sh -f general/compress/commitlog.sim +32,,pytest,python3 test.py -f tools/taosdemoAllTest/taosdemoTestInsertAllType.py +31,,script,./test.sh -f general/user/pass_alter.sim +31,,script,./test.sh -f general/stable/disk.sim +31,,script,./test.sh -f general/parser/lastrow.sim +31,,script,./test.sh -f general/db/delete_writing2.sim +31,,script,./test.sh -f general/alter/cached_schema_after_alter.sim +30,2,script,./test.sh -f unique/dnode/simple.sim +30,,script,./test.sh -f unique/account/account_delete.sim +30,,script,./test.sh -f general/import/commit.sim +30,,script,./test.sh -f general/compute/diff2.sim 30,,develop-test,bash 3-connectors/R/test.sh 30,,develop-test,bash 3-connectors/c#/test.sh -29,,system-test,python3 ./test.py -f 0-others/create_col_tag.py -29,,script,./test.sh -f unique/arbitrator/dn3_mn1_full_createTableFail.sim -29,,script,./test.sh -f general/wal/maxtables.sim -29,,script,./test.sh -f general/compress/compress2.sim -29,,script,./test.sh -f general/alter/insert1.sim -29,,pytest,python3 test.py -f functions/function_mavg.py -28,,script,./test.sh -f general/user/authority.sim -28,,script,./test.sh -f general/parser/select_with_tags.sim -28,,script,./test.sh -f general/insert/query_multi_file.sim -28,,script,./test.sh -f general/compress/uncompress.sim -28,,script,./test.sh -f general/column/commit.sim -28,,pytest,python3 test.py -f queryCount.py -28,,pytest,python3 test.py -f alter/alter_table.py -27,,script,./test.sh -f unique/cluster/cache.sim -27,,script,./test.sh -f general/user/monitor.sim -27,,script,./test.sh -f general/parser/slimit_alter_tags.sim -27,,script,./test.sh -f general/column/table.sim -27,,script,./test.sh -f general/column/metrics.sim -27,,script,./test.sh -f general/alter/cached_schema_after_alter.sim -27,,pytest,python3 test.py -f functions/function_csum.py -26,,script,./test.sh -f general/parser/set_tag_vals.sim -26,,script,./test.sh -f general/db/nosuchfile.sim -26,,script,./test.sh -f general/alter/table.sim -26,,pytest,python3 test.py -f stable/query_after_reset.py -25,,script,./test.sh -f unique/stable/dnode3.sim -25,,script,./test.sh -f general/parser/auto_create_tb.sim -25,,script,./test.sh -f general/alter/metrics.sim -25,,pytest,python3 test.py -f tools/taosdemoTestInterlace.py -25,,pytest,python3 test.py -f alter/alter_cacheLastRow.py -25,,develop-test,bash 3-connectors/go/test.sh -24,,script,./test.sh -f general/wal/maxtables.sim -24,,script,./test.sh -f general/connection/test_old_data.sim -24,,script,./test.sh -f general/cache/restart_metrics.sim -24,,script,./test.sh -f general/alter/insert2.sim -24,,pytest,python3 test.py -f multilevel/addAnotherLevel.py -24,,pytest,python3 test.py -f tag_lite/datatype-without-alter.py -23,,script,./test.sh -f general/parser/select_from_cache_disk.sim -23,,script,./test.sh -f general/parser/mixed_blocks.sim -23,,script,./test.sh -f general/import/large.sim -22,,script,./test.sh -f general/stable/metrics.sim -22,,script,./test.sh -f general/parser/slimit1.sim -22,,script,./test.sh -f general/parser/limit.sim -22,,script,./test.sh -f general/insert/tcp.sim -22,,script,./test.sh -f general/cache/restart_table.sim -22,,pytest,python3 test.py -f tools/taosdemoAllTest/taosdemoTestInsertShell.py -22,,pytest,python3 test.py -f tag_lite/datatype.py -22,,pytest,python3 test.py -f import_merge/importDataLastH.py -22,,pytest,python3 test.py -f import_merge/importDataHO2.py -22,,pytest,python3 test.py -f import_merge/importCacheFileH.py -21,,system-test,python3 ./test.py -f 2-query/TD-12204.py -21,,script,./test.sh -f general/parser/single_row_in_tb.sim -21,,script,./test.sh -f general/parser/last_cache.sim -21,,script,./test.sh -f general/parser/join_multivnode.sim -21,,script,./test.sh -f general/db/repeat.sim -21,,pytest,python3 test.py -f import_merge/importLastT.py -21,,pytest,python3 test.py -f import_merge/importDataLastS.py -21,,pytest,python3 test.py -f import_merge/importDataLastHPO.py -21,,pytest,python3 test.py -f import_merge/importDataHO.py -21,,pytest,python3 test.py -f import_merge/importDataH2.py -21,,pytest,python3 test.py -f import_merge/importCacheFileT.py -21,,pytest,python3 test.py -f import_merge/importCacheFileTPO.py -21,,pytest,python3 test.py -f import_merge/importCacheFileTO.py -21,,pytest,python3 test.py -f import_merge/importCacheFileSub.py -21,,pytest,python3 test.py -f import_merge/importCacheFileS.py -21,,pytest,python3 test.py -f import_merge/importCacheFileHPO.py -21,,pytest,python3 test.py -f import_merge/importCacheFileHO.py -20,,script,./test.sh -f unique/account/user_create.sim -20,,script,./test.sh -f general/parser/auto_create_tb_drop_tb.sim -20,,script,./test.sh -f general/import/basic.sim -20,2,script,./test.sh -f general/alter/dnode.sim +29,,system-test,python3 ./test.py -f 0-others/create_col_tag.py +29,,script,./test.sh -f unique/arbitrator/dn3_mn1_full_createTableFail.sim +29,,script,./test.sh -f general/wal/maxtables.sim +29,,script,./test.sh -f general/compress/compress2.sim +29,,script,./test.sh -f general/alter/insert1.sim +29,,pytest,python3 test.py -f functions/function_mavg.py +28,,script,./test.sh -f general/user/authority.sim +28,,script,./test.sh -f general/parser/select_with_tags.sim +28,,script,./test.sh -f general/insert/query_multi_file.sim +28,,script,./test.sh -f general/compress/uncompress.sim +28,,script,./test.sh -f general/column/commit.sim +28,,pytest,python3 test.py -f queryCount.py +28,,pytest,python3 test.py -f alter/alter_table.py +27,,script,./test.sh -f unique/cluster/cache.sim +27,,script,./test.sh -f general/user/monitor.sim +27,,script,./test.sh -f general/parser/slimit_alter_tags.sim +27,,script,./test.sh -f general/column/table.sim +27,,script,./test.sh -f general/column/metrics.sim +27,,script,./test.sh -f general/alter/cached_schema_after_alter.sim +27,,pytest,python3 test.py -f functions/function_csum.py +26,,script,./test.sh -f general/parser/set_tag_vals.sim +26,,script,./test.sh -f general/db/nosuchfile.sim +26,,script,./test.sh -f general/alter/table.sim +26,,pytest,python3 test.py -f stable/query_after_reset.py +25,,script,./test.sh -f unique/stable/dnode3.sim +25,,script,./test.sh -f general/parser/auto_create_tb.sim +25,,script,./test.sh -f general/alter/metrics.sim +25,,pytest,python3 test.py -f tools/taosdemoTestInterlace.py +25,,pytest,python3 test.py -f alter/alter_cacheLastRow.py +25,,develop-test,bash 3-connectors/go/test.sh +24,,script,./test.sh -f general/wal/maxtables.sim +24,,script,./test.sh -f general/connection/test_old_data.sim +24,,script,./test.sh -f general/cache/restart_metrics.sim +24,,script,./test.sh -f general/alter/insert2.sim +24,,pytest,python3 test.py -f multilevel/addAnotherLevel.py +24,,pytest,python3 test.py -f tag_lite/datatype-without-alter.py +23,,script,./test.sh -f general/parser/select_from_cache_disk.sim +23,,script,./test.sh -f general/parser/mixed_blocks.sim +23,,script,./test.sh -f general/import/large.sim +22,,script,./test.sh -f general/stable/metrics.sim +22,,script,./test.sh -f general/parser/slimit1.sim +22,,script,./test.sh -f general/parser/limit.sim +22,,script,./test.sh -f general/insert/tcp.sim +22,,script,./test.sh -f general/cache/restart_table.sim +22,,pytest,python3 test.py -f tools/taosdemoAllTest/taosdemoTestInsertShell.py +22,,pytest,python3 test.py -f tag_lite/datatype.py +22,,pytest,python3 test.py -f import_merge/importDataLastH.py +22,,pytest,python3 test.py -f import_merge/importDataHO2.py +22,,pytest,python3 test.py -f import_merge/importCacheFileH.py +21,,system-test,python3 ./test.py -f 2-query/TD-12204.py +21,,script,./test.sh -f general/parser/single_row_in_tb.sim +21,,script,./test.sh -f general/parser/last_cache.sim +21,,script,./test.sh -f general/parser/join_multivnode.sim +21,,script,./test.sh -f general/db/repeat.sim +21,,pytest,python3 test.py -f import_merge/importLastT.py +21,,pytest,python3 test.py -f import_merge/importDataLastS.py +21,,pytest,python3 test.py -f import_merge/importDataLastHPO.py +21,,pytest,python3 test.py -f import_merge/importDataHO.py +21,,pytest,python3 test.py -f import_merge/importDataH2.py +21,,pytest,python3 test.py -f import_merge/importCacheFileT.py +21,,pytest,python3 test.py -f import_merge/importCacheFileTPO.py +21,,pytest,python3 test.py -f import_merge/importCacheFileTO.py +21,,pytest,python3 test.py -f import_merge/importCacheFileSub.py +21,,pytest,python3 test.py -f import_merge/importCacheFileS.py +21,,pytest,python3 test.py -f import_merge/importCacheFileHPO.py +21,,pytest,python3 test.py -f import_merge/importCacheFileHO.py +20,,script,./test.sh -f unique/account/user_create.sim +20,,script,./test.sh -f general/parser/auto_create_tb_drop_tb.sim +20,,script,./test.sh -f general/import/basic.sim +20,2,script,./test.sh -f general/alter/dnode.sim 20,,script,eval sh -c \"if [ `uname -m` != aarch64 ]; then ./test.sh -f general/compute/cast.sim; fi\" -20,,script,./test.sh -f general/compute/string_funcs.sim +20,,script,./test.sh -f general/compute/string_funcs.sim 20,,develop-test,python3 test.py -f 2-query/lower_func.py 20,,develop-test,python3 test.py -f 2-query/upper_func.py 20,,develop-test,python3 test.py -f 2-query/ltrim_func.py 20,,develop-test,python3 test.py -f 2-query/rtrim_func.py 20,,develop-test,python3 test.py -f 2-query/substr_func.py -20,,pytest,python3 test.py -f query/query.py -20,,pytest,python3 test.py -f import_merge/importLastTO.py -20,,pytest,python3 test.py -f import_merge/importDataSub.py -20,,pytest,python3 test.py -f import_merge/importDataLastSub.py +20,,pytest,python3 test.py -f query/query.py +20,,pytest,python3 test.py -f import_merge/importLastTO.py +20,,pytest,python3 test.py -f import_merge/importDataSub.py +20,,pytest,python3 test.py -f import_merge/importDataLastSub.py 20,,pytest,python3 test.py -f table/create.py -19,,script,./test.sh -f unique/stable/dnode2.sim -19,,script,./test.sh -f general/db/vnodes.sim -19,,pytest,python3 test.py -f multilevel/addAnotherDir.py -19,,pytest,python3 test.py -f tools/taosdumpTest3.py -19,,pytest,python3 test.py -f query/udf.py -19,,pytest,python3 test.py -f import_merge/importLastTPO.py -19,,pytest,python3 test.py -f import_merge/importDataLastHO.py -19,,pytest,python3 test.py -f import_merge/importDataHPO.py -19,,pytest,python3 test.py -f import_merge/importCSV.py -19,,pytest,python3 test.py -f functions/function_operations.py -r 1 +19,,script,./test.sh -f unique/stable/dnode2.sim +19,,script,./test.sh -f general/db/vnodes.sim +19,,pytest,python3 test.py -f multilevel/addAnotherDir.py +19,,pytest,python3 test.py -f tools/taosdumpTest3.py +19,,pytest,python3 test.py -f query/udf.py +19,,pytest,python3 test.py -f import_merge/importLastTPO.py +19,,pytest,python3 test.py -f import_merge/importDataLastHO.py +19,,pytest,python3 test.py -f import_merge/importDataHPO.py +19,,pytest,python3 test.py -f import_merge/importCSV.py +19,,pytest,python3 test.py -f functions/function_operations.py -r 1 18,,docs-examples-test,./test_java.sh -18,,script,./test.sh -f unique/stable/replica3_dnode6.sim -18,,script,./test.sh -f general/vector/table_field.sim -18,,script,./test.sh -f general/vector/single.sim -18,,script,./test.sh -f general/parser/join.sim -18,,script,./test.sh -f general/insert/query_block2_file.sim -18,,script,./test.sh -f general/db/tables.sim +18,,script,./test.sh -f unique/stable/replica3_dnode6.sim +18,,script,./test.sh -f general/vector/table_field.sim +18,,script,./test.sh -f general/vector/single.sim +18,,script,./test.sh -f general/parser/join.sim +18,,script,./test.sh -f general/insert/query_block2_file.sim +18,,script,./test.sh -f general/db/tables.sim 18,,pytest,python3 test.py -f tools/taosdemoAllTest/TD-4985/query-limit-offset.py 18,,pytest,python3 test.py -f stream/history.py 18,,pytest,python3 test.py -f query/queryTscomputWithNow.py 18,,pytest,python3 test.py -f query/queryInterval.py -17,,system-test,python3 ./test.py -f 5-taos-tools/taosbenchmark/taosdemoTestInsertWithJsonStmt-illegalData.py -17,,script,./test.sh -f unique/account/user_len.sim -17,,script,./test.sh -f general/vector/metrics_mix.sim -17,,script,./test.sh -f general/user/user_create.sim -17,,script,./test.sh -f general/parser/import_commit3.sim -17,,script,./test.sh -f general/parser/function.sim -17,,script,./test.sh -f general/insert/query_file_memory.sim -17,,script,./test.sh -f general/field/binary.sim -17,,script,./test.sh -f general/field/4.sim -17,,pytest,python3 test.py -f subscribe/supertable.py -17,,pytest,python3 test.py -f query/query1970YearsAf.py -16,,system-test,python3 ./test.py -f 2-query/TD-12228.py -16,,script,./test.sh -f unique/account/account_len.sim -16,,script,./test.sh -f general/vector/table_time.sim -16,,script,./test.sh -f general/vector/multi.sim -16,,script,./test.sh -f general/vector/metrics_time.sim -16,,script,./test.sh -f general/vector/metrics_tag.sim -16,,script,./test.sh -f general/vector/metrics_query.sim -16,,script,./test.sh -f general/vector/metrics_field.sim -16,,script,./test.sh -f general/user/pass_len.sim -16,,script,./test.sh -f general/stable/show.sim -16,,script,./test.sh -f general/stable/dnode3.sim -16,,script,./test.sh -f general/parser/import_commit2.sim -16,,script,./test.sh -f general/parser/import_commit1.sim -16,,script,./test.sh -f general/parser/fill_stb.sim -16,,script,./test.sh -f general/parser/create_mt.sim -16,,script,./test.sh -f general/insert/query_block1_file.sim -16,,script,./test.sh -f general/field/single.sim -16,,script,./test.sh -f general/field/6.sim -16,2,script,./test.sh -f general/db/topic2.sim -16,,script,./test.sh -f general/connection/connection.sim -16,,pytest,python3 test.py -f query/bug1471.py -16,,pytest,python3 test.py -f import_merge/importSRestart.py -16,,pytest,python3 test.py -f functions/function_last_row.py -r 1 -16,,pytest,python3 test.py -f functions/function_first.py -r 1 +17,,system-test,python3 ./test.py -f 5-taos-tools/taosbenchmark/taosdemoTestInsertWithJsonStmt-illegalData.py +17,,script,./test.sh -f unique/account/user_len.sim +17,,script,./test.sh -f general/vector/metrics_mix.sim +17,,script,./test.sh -f general/user/user_create.sim +17,,script,./test.sh -f general/parser/import_commit3.sim +17,,script,./test.sh -f general/parser/function.sim +17,,script,./test.sh -f general/insert/query_file_memory.sim +17,,script,./test.sh -f general/field/binary.sim +17,,script,./test.sh -f general/field/4.sim +17,,pytest,python3 test.py -f subscribe/supertable.py +17,,pytest,python3 test.py -f query/query1970YearsAf.py +16,,system-test,python3 ./test.py -f 2-query/TD-12228.py +16,,script,./test.sh -f unique/account/account_len.sim +16,,script,./test.sh -f general/vector/table_time.sim +16,,script,./test.sh -f general/vector/multi.sim +16,,script,./test.sh -f general/vector/metrics_time.sim +16,,script,./test.sh -f general/vector/metrics_tag.sim +16,,script,./test.sh -f general/vector/metrics_query.sim +16,,script,./test.sh -f general/vector/metrics_field.sim +16,,script,./test.sh -f general/user/pass_len.sim +16,,script,./test.sh -f general/stable/show.sim +16,,script,./test.sh -f general/stable/dnode3.sim +16,,script,./test.sh -f general/parser/import_commit2.sim +16,,script,./test.sh -f general/parser/import_commit1.sim +16,,script,./test.sh -f general/parser/fill_stb.sim +16,,script,./test.sh -f general/parser/create_mt.sim +16,,script,./test.sh -f general/insert/query_block1_file.sim +16,,script,./test.sh -f general/field/single.sim +16,,script,./test.sh -f general/field/6.sim +16,2,script,./test.sh -f general/db/topic2.sim +16,,script,./test.sh -f general/connection/connection.sim +16,,pytest,python3 test.py -f query/bug1471.py +16,,pytest,python3 test.py -f import_merge/importSRestart.py +16,,pytest,python3 test.py -f functions/function_last_row.py -r 1 +16,,pytest,python3 test.py -f functions/function_first.py -r 1 15,,system-test,python3 ./test.py -f 5-taos-tools/taosbenchmark/taosdemoTestInsertWithJson.py -15,,system-test,python3 ./test.py -f 4-taosAdapter/taosAdapter_query.py -15,,script,./test.sh -f unique/db/replica_reduce21.sim -15,,script,./test.sh -f unique/account/paras.sim -15,,script,./test.sh -f unique/account/account_create.sim -15,,script,./test.sh -f general/vector/table_query.sim -15,,script,./test.sh -f general/vector/table_mix.sim -15,,script,./test.sh -f general/user/user_len.sim -15,,script,./test.sh -f general/parser/timestamp.sim -15,,script,./test.sh -f general/parser/tags_filter.sim -15,,script,./test.sh -f general/parser/select_across_vnodes.sim -15,,script,./test.sh -f general/parser/nchar.sim -15,,script,./test.sh -f general/parser/dbtbnameValidate.sim -15,,script,./test.sh -f general/parser/binary_escapeCharacter.sim -15,,script,./test.sh -f general/parser/alter_stable.sim -15,,script,./test.sh -f general/insert/query_block2_memory.sim -15,,script,./test.sh -f general/insert/query_block1_memory.sim -15,,script,./test.sh -f general/insert/basic.sim -15,,script,./test.sh -f general/field/tinyint.sim -15,,script,./test.sh -f general/field/bool.sim -15,,script,./test.sh -f general/field/5.sim -15,,script,./test.sh -f general/cache/new_metrics.sim -15,,script,./test.sh -f general/alter/import.sim -15,,pytest,python3 test.py -f tools/taosdemoTestTblAlt.py -15,,pytest,python3 test.py -f query/queryNormal.py -15,,pytest,python3 test.py -f query/queryLimit.py -15,,pytest,python3 test.py -f query/distinctOneColTb.py -15,,pytest,python3 test.py -f functions/function_sum.py -r 1 -15,,pytest,python3 test.py -f functions/function_spread.py -r 1 -15,,pytest,python3 test.py -f functions/function_min.py -r 1 -15,,pytest,python3 test.py -f functions/function_max.py -r 1 -15,,pytest,python3 test.py -f functions/function_last.py -r 1 -15,,pytest,python3 test.py -f functions/function_avg.py -r 1 +15,,system-test,python3 ./test.py -f 4-taosAdapter/taosAdapter_query.py +15,,script,./test.sh -f unique/db/replica_reduce21.sim +15,,script,./test.sh -f unique/account/paras.sim +15,,script,./test.sh -f unique/account/account_create.sim +15,,script,./test.sh -f general/vector/table_query.sim +15,,script,./test.sh -f general/vector/table_mix.sim +15,,script,./test.sh -f general/user/user_len.sim +15,,script,./test.sh -f general/parser/timestamp.sim +15,,script,./test.sh -f general/parser/tags_filter.sim +15,,script,./test.sh -f general/parser/select_across_vnodes.sim +15,,script,./test.sh -f general/parser/nchar.sim +15,,script,./test.sh -f general/parser/dbtbnameValidate.sim +15,,script,./test.sh -f general/parser/binary_escapeCharacter.sim +15,,script,./test.sh -f general/parser/alter_stable.sim +15,,script,./test.sh -f general/insert/query_block2_memory.sim +15,,script,./test.sh -f general/insert/query_block1_memory.sim +15,,script,./test.sh -f general/insert/basic.sim +15,,script,./test.sh -f general/field/tinyint.sim +15,,script,./test.sh -f general/field/bool.sim +15,,script,./test.sh -f general/field/5.sim +15,,script,./test.sh -f general/cache/new_metrics.sim +15,,script,./test.sh -f general/alter/import.sim +15,,pytest,python3 test.py -f tools/taosdemoTestTblAlt.py +15,,pytest,python3 test.py -f query/queryNormal.py +15,,pytest,python3 test.py -f query/queryLimit.py +15,,pytest,python3 test.py -f query/distinctOneColTb.py +15,,pytest,python3 test.py -f functions/function_sum.py -r 1 +15,,pytest,python3 test.py -f functions/function_spread.py -r 1 +15,,pytest,python3 test.py -f functions/function_min.py -r 1 +15,,pytest,python3 test.py -f functions/function_max.py -r 1 +15,,pytest,python3 test.py -f functions/function_last.py -r 1 +15,,pytest,python3 test.py -f functions/function_avg.py -r 1 14,,script,./test.sh -f general/stream/metrics_del.sim -14,,system-test,python3 ./test.py -f 5-taos-tools/TD-12478.py -14,,script,./test.sh -f unique/account/basic.sim -14,,script,./test.sh -f general/table/limit.sim -14,,script,./test.sh -f general/table/createmulti.sim -14,,script,./test.sh -f general/parser/null_char.sim -14,,script,./test.sh -f general/parser/insert_tb.sim -14,,script,./test.sh -f general/parser/fill.sim -14,,script,./test.sh -f general/parser/create_tb.sim -14,,script,./test.sh -f general/parser/create_db.sim -14,,script,./test.sh -f general/parser/alter.sim -14,,script,./test.sh -f general/field/smallint.sim -14,,script,./test.sh -f general/field/bigint.sim -14,,script,./test.sh -f general/field/3.sim -14,,script,./test.sh -f general/field/2.sim -14,,script,./test.sh -f general/compute/avg.sim +14,,system-test,python3 ./test.py -f 5-taos-tools/TD-12478.py +14,,script,./test.sh -f unique/account/basic.sim +14,,script,./test.sh -f general/table/limit.sim +14,,script,./test.sh -f general/table/createmulti.sim +14,,script,./test.sh -f general/parser/null_char.sim +14,,script,./test.sh -f general/parser/insert_tb.sim +14,,script,./test.sh -f general/parser/fill.sim +14,,script,./test.sh -f general/parser/create_tb.sim +14,,script,./test.sh -f general/parser/create_db.sim +14,,script,./test.sh -f general/parser/alter.sim +14,,script,./test.sh -f general/field/smallint.sim +14,,script,./test.sh -f general/field/bigint.sim +14,,script,./test.sh -f general/field/3.sim +14,,script,./test.sh -f general/field/2.sim +14,,script,./test.sh -f general/compute/avg.sim 14,,system-test,python3 ./test.py -f 5-taos-tools/taosbenchmark/taosdemoTestInsertWithJsonSml.py 14,,system-test,python3 ./test.py -f 5-taos-tools/taosbenchmark/taosdemoTestInsertWithJson-chinese.py -14,,pytest,python3 test.py -f query/queryWithTaosdKilled.py -14,,pytest,python3 test.py -f query/queryStddevWithGroupby.py -14,,pytest,python3 test.py -f query/queryJoin10tables.py -14,,pytest,python3 test.py -f insert/insertFromCSV.py -14,,pytest,python3 test.py -f import_merge/importSubRestart.py -14,,pytest,python3 test.py -f import_merge/importBlock1T.py -14,,pytest,python3 test.py -f functions/function_twa.py -r 1 -14,,pytest,python3 test.py -f functions/function_top.py -r 1 -14,,pytest,python3 test.py -f functions/function_stddev.py -r 1 -14,,pytest,python3 test.py -f functions/function_percentile.py -r 1 -14,,pytest,python3 test.py -f functions/function_leastsquares.py -r 1 -14,,pytest,python3 test.py -f functions/function_diff.py -r 1 -14,,pytest,python3 test.py -f functions/function_count.py -r 1 -14,,pytest,python3 test.py -f client/noConnectionErrorTest.py -14,,develop-test,bash 3-connectors/rust/test.sh -13,,system-test,python3 ./test.py -f 5-taos-tools/basic.py -13,,system-test,bash 3-connectors/go/test.sh -13,,script,./test.sh -f unique/account/pass_len.sim -13,,script,./test.sh -f general/table/vgroup.sim -13,,script,./test.sh -f general/table/tinyint.sim -13,,script,./test.sh -f general/table/float.sim -13,,script,./test.sh -f general/stable/vnode3.sim -13,,script,./test.sh -f general/stable/values.sim -13,,script,./test.sh -f general/stable/refcount.sim -13,,script,./test.sh -f general/parser/tags_dynamically_specifiy.sim -13,,script,./test.sh -f general/parser/select_distinct_tag.sim -13,,script,./test.sh -f general/compute/sum.sim -13,,script,./test.sh -f general/compute/percentile.sim -13,,script,./test.sh -f general/compute/min.sim -13,,script,./test.sh -f general/compute/last.sim -13,,script,./test.sh -f general/compute/bottom.sim -13,,pytest,python3 test.py -f tools/taosdemoAllTest/NanoTestCase/taosdemoTestSupportNanoQuery.py -13,,pytest,python3 test.py -f query/queryInsertValue.py -13,,pytest,python3 test.py -f query/queryGroupTbname.py -13,,pytest,python3 test.py -f insert/openTsdbTelnetLinesInsert.py -13,,pytest,python3 test.py -f insert/metadataUpdate.py -13,,pytest,python3 test.py -f insert/before_1970.py -13,,pytest,python3 test.py -f import_merge/importTRestart.py -13,,pytest,python3 test.py -f import_merge/importTPORestart.py -13,,pytest,python3 test.py -f import_merge/importTORestart.py -13,,pytest,python3 test.py -f import_merge/importTailPartOverlap.py -13,,pytest,python3 test.py -f import_merge/importLastSub.py -13,,pytest,python3 test.py -f import_merge/importHead.py -13,,pytest,python3 test.py -f import_merge/importDataLastT.py -13,,pytest,python3 test.py -f import_merge/importBlockbetween.py -13,,pytest,python3 test.py -f import_merge/importBlock2T.py -13,,pytest,python3 test.py -f import_merge/importBlock2TO.py -13,,pytest,python3 test.py -f import_merge/importBlock2Sub.py -13,,pytest,python3 test.py -f import_merge/importBlock1TO.py -13,,pytest,python3 test.py -f import_merge/importBlock1S.py -13,,pytest,python3 test.py -f import_merge/importBlock1HO.py -13,,pytest,python3 test.py -f functions/function_bottom.py -r 1 -13,,develop-test,bash 3-connectors/restful/test.sh -12,,system-test,bash 3-connectors/rust/test.sh -12,,system-test,bash 3-connectors/restful/test.sh -12,,system-test,bash 3-connectors/java/test.sh -12,,script,./test.sh -f general/table/table.sim -12,,script,./test.sh -f general/table/table_len.sim -12,,script,./test.sh -f general/table/int.sim -12,,script,./test.sh -f general/table/double.sim -12,,script,./test.sh -f general/table/describe.sim -12,,script,./test.sh -f general/table/date.sim -12,,script,./test.sh -f general/table/column_num.sim -12,,script,./test.sh -f general/table/column_name.sim -12,,script,./test.sh -f general/table/column2.sim -12,,script,./test.sh -f general/table/bool.sim -12,,script,./test.sh -f general/table/binary.sim -12,,script,./test.sh -f general/table/bigint.sim -12,,script,./test.sh -f general/table/basic3.sim -12,,script,./test.sh -f general/table/basic2.sim -12,,script,./test.sh -f general/parser/udf.sim -12,,script,./test.sh -f general/parser/udf_dll.sim -12,,script,./test.sh -f general/parser/columnValue.sim -12,,script,./test.sh -f general/db/len.sim -12,,script,./test.sh -f general/db/basic.sim -12,,script,./test.sh -f general/db/basic5.sim -12,,script,./test.sh -f general/db/basic3.sim -12,,script,./test.sh -f general/db/basic2.sim -12,,script,./test.sh -f general/db/basic1.sim -12,,script,./test.sh -f general/db/alter_option.sim -12,,script,./test.sh -f general/compute/top.sim -12,,script,./test.sh -f general/compute/stddev.sim -12,,script,./test.sh -f general/compute/null.sim -12,,script,./test.sh -f general/compute/max.sim -12,,script,./test.sh -f general/compute/leastsquare.sim -12,,script,./test.sh -f general/compute/interval.sim -12,,script,./test.sh -f general/compute/first.sim -12,,script,./test.sh -f general/compute/diff.sim -12,,script,./test.sh -f general/compute/count.sim -12,,pytest,python3 test.py -f update/allow_update-0.py -12,,pytest,python3 test.py -f table/alter_wal0.py -12,,pytest,python3 test.py -f import_merge/importTail.py -12,,pytest,python3 test.py -f import_merge/importTailOverlap.py -12,,pytest,python3 test.py -f import_merge/importSpan.py -12,,pytest,python3 test.py -f import_merge/importLastS.py -12,,pytest,python3 test.py -f import_merge/importLastH.py -12,,pytest,python3 test.py -f import_merge/importLastHO.py -12,,pytest,python3 test.py -f import_merge/importInsertThenImport.py -12,,pytest,python3 test.py -f import_merge/importDataT.py -12,,pytest,python3 test.py -f import_merge/importDataTPO.py -12,,pytest,python3 test.py -f import_merge/importDataS.py -12,,pytest,python3 test.py -f import_merge/importDataLastTPO.py -12,,pytest,python3 test.py -f import_merge/importDataLastTO.py -12,,pytest,python3 test.py -f import_merge/importBlock2TPO.py -12,,pytest,python3 test.py -f import_merge/importBlock2S.py -12,,pytest,python3 test.py -f import_merge/importBlock2H.py -12,,pytest,python3 test.py -f import_merge/importBlock2HPO.py -12,,pytest,python3 test.py -f import_merge/importBlock2HO.py -12,,pytest,python3 test.py -f import_merge/importBlock1TPO.py -12,,pytest,python3 test.py -f import_merge/importBlock1H.py -12,,pytest,python3 test.py -f import_merge/importBlock1HPO.py -12,,pytest,python3 test.py -f functions/variable_httpDbNameMandatory.py -12,,pytest,python3 test.py -f functions/function_round.py -12,,pytest,python3 test.py -f functions/function_percentile2.py -12,,pytest,python3 test.py -f functions/function_ceil.py -11,,script,./test.sh -f unique/stable/replica2_dnode4.sim -11,,script,./test.sh -f general/table/smallint.sim -11,,script,./test.sh -f general/table/db.table.sim -11,,script,./test.sh -f general/table/column_value.sim -11,,script,./test.sh -f general/table/basic1.sim -11,,script,./test.sh -f general/table/autocreate.sim -11,,script,./test.sh -f general/parser/udf_dll_stable.sim -11,,script,./test.sh -f general/parser/stableOp.sim -11,,script,./test.sh -f general/parser/having.sim -11,,script,./test.sh -f general/parser/having_child.sim -11,,script,./test.sh -f general/parser/between_and.sim -11,,script,./test.sh -f general/db/basic4.sim -11,,pytest,python3 testNoCompress.py -11,,pytest,python3 test.py -f import_merge/importToCommit.py -11,,pytest,python3 test.py -f import_merge/importLastHPO.py -11,,pytest,python3 test.py -f import_merge/importDataTO.py +14,,pytest,python3 test.py -f query/queryWithTaosdKilled.py +14,,pytest,python3 test.py -f query/queryStddevWithGroupby.py +14,,pytest,python3 test.py -f query/queryJoin10tables.py +14,,pytest,python3 test.py -f insert/insertFromCSV.py +14,,pytest,python3 test.py -f import_merge/importSubRestart.py +14,,pytest,python3 test.py -f import_merge/importBlock1T.py +14,,pytest,python3 test.py -f functions/function_twa.py -r 1 +14,,pytest,python3 test.py -f functions/function_top.py -r 1 +14,,pytest,python3 test.py -f functions/function_stddev.py -r 1 +14,,pytest,python3 test.py -f functions/function_percentile.py -r 1 +14,,pytest,python3 test.py -f functions/function_leastsquares.py -r 1 +14,,pytest,python3 test.py -f functions/function_diff.py -r 1 +14,,pytest,python3 test.py -f functions/function_count.py -r 1 +14,,pytest,python3 test.py -f client/noConnectionErrorTest.py +14,,develop-test,bash 3-connectors/rust/test.sh +13,,system-test,python3 ./test.py -f 5-taos-tools/basic.py +13,,system-test,bash 3-connectors/go/test.sh +13,,script,./test.sh -f unique/account/pass_len.sim +13,,script,./test.sh -f general/table/vgroup.sim +13,,script,./test.sh -f general/table/tinyint.sim +13,,script,./test.sh -f general/table/float.sim +13,,script,./test.sh -f general/stable/vnode3.sim +13,,script,./test.sh -f general/stable/values.sim +13,,script,./test.sh -f general/stable/refcount.sim +13,,script,./test.sh -f general/parser/tags_dynamically_specifiy.sim +13,,script,./test.sh -f general/parser/select_distinct_tag.sim +13,,script,./test.sh -f general/compute/sum.sim +13,,script,./test.sh -f general/compute/percentile.sim +13,,script,./test.sh -f general/compute/min.sim +13,,script,./test.sh -f general/compute/last.sim +13,,script,./test.sh -f general/compute/bottom.sim +13,,pytest,python3 test.py -f tools/taosdemoAllTest/NanoTestCase/taosdemoTestSupportNanoQuery.py +13,,pytest,python3 test.py -f query/queryInsertValue.py +13,,pytest,python3 test.py -f query/queryGroupTbname.py +13,,pytest,python3 test.py -f insert/openTsdbTelnetLinesInsert.py +13,,pytest,python3 test.py -f insert/metadataUpdate.py +13,,pytest,python3 test.py -f insert/before_1970.py +13,,pytest,python3 test.py -f import_merge/importTRestart.py +13,,pytest,python3 test.py -f import_merge/importTPORestart.py +13,,pytest,python3 test.py -f import_merge/importTORestart.py +13,,pytest,python3 test.py -f import_merge/importTailPartOverlap.py +13,,pytest,python3 test.py -f import_merge/importLastSub.py +13,,pytest,python3 test.py -f import_merge/importHead.py +13,,pytest,python3 test.py -f import_merge/importDataLastT.py +13,,pytest,python3 test.py -f import_merge/importBlockbetween.py +13,,pytest,python3 test.py -f import_merge/importBlock2T.py +13,,pytest,python3 test.py -f import_merge/importBlock2TO.py +13,,pytest,python3 test.py -f import_merge/importBlock2Sub.py +13,,pytest,python3 test.py -f import_merge/importBlock1TO.py +13,,pytest,python3 test.py -f import_merge/importBlock1S.py +13,,pytest,python3 test.py -f import_merge/importBlock1HO.py +13,,pytest,python3 test.py -f functions/function_bottom.py -r 1 +13,,develop-test,bash 3-connectors/restful/test.sh +12,,system-test,bash 3-connectors/rust/test.sh +12,,system-test,bash 3-connectors/restful/test.sh +12,,system-test,bash 3-connectors/java/test.sh +12,,script,./test.sh -f general/table/table.sim +12,,script,./test.sh -f general/table/table_len.sim +12,,script,./test.sh -f general/table/int.sim +12,,script,./test.sh -f general/table/double.sim +12,,script,./test.sh -f general/table/describe.sim +12,,script,./test.sh -f general/table/date.sim +12,,script,./test.sh -f general/table/column_num.sim +12,,script,./test.sh -f general/table/column_name.sim +12,,script,./test.sh -f general/table/column2.sim +12,,script,./test.sh -f general/table/bool.sim +12,,script,./test.sh -f general/table/binary.sim +12,,script,./test.sh -f general/table/bigint.sim +12,,script,./test.sh -f general/table/basic3.sim +12,,script,./test.sh -f general/table/basic2.sim +12,,script,./test.sh -f general/parser/udf.sim +12,,script,./test.sh -f general/parser/udf_dll.sim +12,,script,./test.sh -f general/parser/columnValue.sim +12,,script,./test.sh -f general/db/len.sim +12,,script,./test.sh -f general/db/basic.sim +12,,script,./test.sh -f general/db/basic5.sim +12,,script,./test.sh -f general/db/basic3.sim +12,,script,./test.sh -f general/db/basic2.sim +12,,script,./test.sh -f general/db/basic1.sim +12,,script,./test.sh -f general/db/alter_option.sim +12,,script,./test.sh -f general/compute/top.sim +12,,script,./test.sh -f general/compute/stddev.sim +12,,script,./test.sh -f general/compute/null.sim +12,,script,./test.sh -f general/compute/max.sim +12,,script,./test.sh -f general/compute/leastsquare.sim +12,,script,./test.sh -f general/compute/interval.sim +12,,script,./test.sh -f general/compute/first.sim +12,,script,./test.sh -f general/compute/diff.sim +12,,script,./test.sh -f general/compute/count.sim +12,,pytest,python3 test.py -f update/allow_update-0.py +12,,pytest,python3 test.py -f table/alter_wal0.py +12,,pytest,python3 test.py -f import_merge/importTail.py +12,,pytest,python3 test.py -f import_merge/importTailOverlap.py +12,,pytest,python3 test.py -f import_merge/importSpan.py +12,,pytest,python3 test.py -f import_merge/importLastS.py +12,,pytest,python3 test.py -f import_merge/importLastH.py +12,,pytest,python3 test.py -f import_merge/importLastHO.py +12,,pytest,python3 test.py -f import_merge/importInsertThenImport.py +12,,pytest,python3 test.py -f import_merge/importDataT.py +12,,pytest,python3 test.py -f import_merge/importDataTPO.py +12,,pytest,python3 test.py -f import_merge/importDataS.py +12,,pytest,python3 test.py -f import_merge/importDataLastTPO.py +12,,pytest,python3 test.py -f import_merge/importDataLastTO.py +12,,pytest,python3 test.py -f import_merge/importBlock2TPO.py +12,,pytest,python3 test.py -f import_merge/importBlock2S.py +12,,pytest,python3 test.py -f import_merge/importBlock2H.py +12,,pytest,python3 test.py -f import_merge/importBlock2HPO.py +12,,pytest,python3 test.py -f import_merge/importBlock2HO.py +12,,pytest,python3 test.py -f import_merge/importBlock1TPO.py +12,,pytest,python3 test.py -f import_merge/importBlock1H.py +12,,pytest,python3 test.py -f import_merge/importBlock1HPO.py +12,,pytest,python3 test.py -f functions/variable_httpDbNameMandatory.py +12,,pytest,python3 test.py -f functions/function_round.py +12,,pytest,python3 test.py -f functions/function_percentile2.py +12,,pytest,python3 test.py -f functions/function_ceil.py +11,,script,./test.sh -f unique/stable/replica2_dnode4.sim +11,,script,./test.sh -f general/table/smallint.sim +11,,script,./test.sh -f general/table/db.table.sim +11,,script,./test.sh -f general/table/column_value.sim +11,,script,./test.sh -f general/table/basic1.sim +11,,script,./test.sh -f general/table/autocreate.sim +11,,script,./test.sh -f general/parser/udf_dll_stable.sim +11,,script,./test.sh -f general/parser/stableOp.sim +11,,script,./test.sh -f general/parser/having.sim +11,,script,./test.sh -f general/parser/having_child.sim +11,,script,./test.sh -f general/parser/between_and.sim +11,,script,./test.sh -f general/db/basic4.sim +11,,pytest,python3 testNoCompress.py +11,,pytest,python3 test.py -f import_merge/importToCommit.py +11,,pytest,python3 test.py -f import_merge/importLastHPO.py +11,,pytest,python3 test.py -f import_merge/importDataTO.py 11,,pytest,python3 test.py -f import_merge/importBlock1Sub.py 10,,docs-examples-test,./test_python.sh 10,,system-test,python3 ./test.py -f 5-taos-tools/taosbenchmark/taosdemoTestInsertWithJsonStmt-otherPara.py @@ -565,160 +565,160 @@ 10,,system-test,python3 ./test.py -f 5-taos-tools/taosbenchmark/taosdemoTestInsertWithJson-autoCreate.py 10,,system-test,python3 ./test.py -f 5-taos-tools/taosbenchmark/taosdemoTestInsertWithJson-otherPara.py 10,,system-test,python3 ./test.py -f 5-taos-tools/taosbenchmark/taosdemoTestInsertWithJson-childTable.py -10,,system-test,python3 ./test.py -f 2-query/TD-12344.py -10,,script,./test.sh -f unique/stable/replica2_vnode3.sim -10,,pytest,python3 testCompress.py -10,,pytest,python3 test.py -f client/client.py -10,,script,./test.sh -f general/compute/scalar_pow.sim +10,,system-test,python3 ./test.py -f 2-query/TD-12344.py +10,,script,./test.sh -f unique/stable/replica2_vnode3.sim +10,,pytest,python3 testCompress.py +10,,pytest,python3 test.py -f client/client.py +10,,script,./test.sh -f general/compute/scalar_pow.sim 9,,docs-examples-test,./test_go.sh -9,,script,./test.sh -f general/parser/alter1.sim -9,,script,./test.sh -f general/db/delete.sim +9,,script,./test.sh -f general/parser/alter1.sim +9,,script,./test.sh -f general/db/delete.sim 9,,pytest,python3 test.py -f tools/taosdemoTestLimitOffset.py 9,,develop-test,python3 ./test.py -f 5-taos-tools/taosbenchmark/custom_col_tag.py -9,,pytest,python3 test.py -f tools/taosdemoAllTest/NanoTestCase/taosdemoTestSupportNanoInsert.py -9,,pytest,python3 test.py -f stream/showStreamExecTimeisNull.py -9,,pytest,python3 test.py -f query/bug1876.py -9,,pytest,python3 test.py -f alter/alter_table_crash.py -9,,develop-test,python3 ./test.py -f 5-taos-tools/taosdump/taosdumpTestTypeSmallInt.py -9,,develop-test,python3 ./test.py -f 5-taos-tools/taosdump/taosdumpTestTypeFloat.py -8,,pytest,python3 test.py -f tools/taosdumpTest.py -8,,pytest,python3 test.py -f query/unionAllTest.py -8,,pytest,python3 test.py -f query/queryFilterTswithDateUnit.py -8,,pytest,python3 test.py -f query/queryDiffColsTagsAndOr.py -8,,pytest,python3 test.py -f query/nestedQuery/nestedQuery_datacheck.py -8,,pytest,python3 test.py -f query/bug1874.py -8,,pytest,python3 test.py -f functions/function_floor.py -8,,develop-test,python3 ./test.py -f 5-taos-tools/taosdump/taosdumpTestTypeUnsignedTinyInt.py -8,,develop-test,python3 ./test.py -f 5-taos-tools/taosdump/taosdumpTestTypeUnsignedBigInt.py -8,,develop-test,python3 ./test.py -f 5-taos-tools/taosdump/taosdumpTestTypeTinyInt.py -8,,develop-test,python3 ./test.py -f 5-taos-tools/taosdump/taosdumpTestTypeInt.py -8,,develop-test,python3 ./test.py -f 5-taos-tools/taosdump/taosdumpTestTypeDouble.py +9,,pytest,python3 test.py -f tools/taosdemoAllTest/NanoTestCase/taosdemoTestSupportNanoInsert.py +9,,pytest,python3 test.py -f stream/showStreamExecTimeisNull.py +9,,pytest,python3 test.py -f query/bug1876.py +9,,pytest,python3 test.py -f alter/alter_table_crash.py +9,,develop-test,python3 ./test.py -f 5-taos-tools/taosdump/taosdumpTestTypeSmallInt.py +9,,develop-test,python3 ./test.py -f 5-taos-tools/taosdump/taosdumpTestTypeFloat.py +8,,pytest,python3 test.py -f tools/taosdumpTest.py +8,,pytest,python3 test.py -f query/unionAllTest.py +8,,pytest,python3 test.py -f query/queryFilterTswithDateUnit.py +8,,pytest,python3 test.py -f query/queryDiffColsTagsAndOr.py +8,,pytest,python3 test.py -f query/nestedQuery/nestedQuery_datacheck.py +8,,pytest,python3 test.py -f query/bug1874.py +8,,pytest,python3 test.py -f functions/function_floor.py +8,,develop-test,python3 ./test.py -f 5-taos-tools/taosdump/taosdumpTestTypeUnsignedTinyInt.py +8,,develop-test,python3 ./test.py -f 5-taos-tools/taosdump/taosdumpTestTypeUnsignedBigInt.py +8,,develop-test,python3 ./test.py -f 5-taos-tools/taosdump/taosdumpTestTypeTinyInt.py +8,,develop-test,python3 ./test.py -f 5-taos-tools/taosdump/taosdumpTestTypeInt.py +8,,develop-test,python3 ./test.py -f 5-taos-tools/taosdump/taosdumpTestTypeDouble.py 8,,pytest,python3 test.py -f update/update2.py -7,,system-test,python3 ./test.py -f 5-taos-tools/taosbenchmark/taosdemoTestInsertWithJsonSml-otherPara.py -7,,pytest,python3 test.py -f tools/taosdumpTest2.py -7,,pytest,python3 test.py -f tools/taosdemoTestdatatype.py -7,,pytest,python3 test.py -f tag_lite/unsignedInt.py -7,,pytest,python3 test.py -f query/bug1875.py -7,,pytest,python3 test.py -f functions/function_stateWindow.py -7,,pytest,python3 test.py -f client/version.py -7,,pytest,python3 client/twoClients.py -7,,develop-test,python3 ./test.py -f 5-taos-tools/taosdump/taosdumpTestTypeUnsignedSmallInt.py -7,,develop-test,python3 ./test.py -f 5-taos-tools/taosdump/taosdumpTestTypeUnsignedInt.py -7,,develop-test,python3 ./test.py -f 5-taos-tools/taosdump/taosdumpTestTypeJson.py -7,,develop-test,python3 ./test.py -f 5-taos-tools/taosdump/taosdumpTestTypeBool.py -7,,develop-test,python3 ./test.py -f 5-taos-tools/taosdump/taosdumpTestTypeBigInt.py +7,,system-test,python3 ./test.py -f 5-taos-tools/taosbenchmark/taosdemoTestInsertWithJsonSml-otherPara.py +7,,pytest,python3 test.py -f tools/taosdumpTest2.py +7,,pytest,python3 test.py -f tools/taosdemoTestdatatype.py +7,,pytest,python3 test.py -f tag_lite/unsignedInt.py +7,,pytest,python3 test.py -f query/bug1875.py +7,,pytest,python3 test.py -f functions/function_stateWindow.py +7,,pytest,python3 test.py -f client/version.py +7,,pytest,python3 client/twoClients.py +7,,develop-test,python3 ./test.py -f 5-taos-tools/taosdump/taosdumpTestTypeUnsignedSmallInt.py +7,,develop-test,python3 ./test.py -f 5-taos-tools/taosdump/taosdumpTestTypeUnsignedInt.py +7,,develop-test,python3 ./test.py -f 5-taos-tools/taosdump/taosdumpTestTypeJson.py +7,,develop-test,python3 ./test.py -f 5-taos-tools/taosdump/taosdumpTestTypeBool.py +7,,develop-test,python3 ./test.py -f 5-taos-tools/taosdump/taosdumpTestTypeBigInt.py 7,,develop-test,python3 ./test.py -f 2-query/function_timetruncate.py 7,,develop-test,python3 ./test.py -f 2-query/function_timediff.py 7,,pytest,python3 test.py -f tsdb/delete.py -6,,system-test,python3 ./test.py -f 2-query/TD-12229.py -6,,system-test,python3 ./test.py -f 2-query/TD-11943.py -6,,system-test,python3 ./test.py -f 2-query/function_elapsed.py -6,,pytest,python3 test.py -f wal/addOldWalTest.py -6,,pytest,python3 test.py -f topic/topicQuery.py -6,,pytest,python3 test.py -f tools/taosdemoTestWithoutMetric.py -6,,pytest,python3 test.py -f tools/taosdemoTest.py -6,,pytest,python3 test.py -f tag_lite/unsignedSmallint.py -6,,pytest,python3 test.py -f tag_lite/double.py -6,,pytest,python3 test.py -f tag_lite/alter_tag.py -6,,pytest,python3 test.py -f tag_lite/add.py -6,,pytest,python3 test.py -f tag_lite/6.py -6,,pytest,python3 test.py -f table/boundary.py -6,,pytest,python3 test.py -f query/subqueryFilter.py -6,,pytest,python3 test.py -f query/queryStableJoin.py -6,,pytest,python3 test.py -f query/querySort.py -6,,pytest,python3 test.py -f query/queryJoin.py -6,,pytest,python3 test.py -f query/queryGroupbySort.py -6,,pytest,python3 test.py -f query/queryFillTest.py -6,,pytest,python3 test.py -f query/filterAllUnsignedIntTypes.py -6,,pytest,python3 test.py -f query/bug2218.py -6,,pytest,python3 test.py -f query/bug2118.py -6,,pytest,python3 test.py -f query/bug2117.py -6,,pytest,python3 test.py -f perfbenchmark/bug3433.py -6,,pytest,python3 test.py -f insert/insert_before_use_db.py -6,,pytest,python3 test.py -f import_merge/importHPORestart.py -6,,pytest,python3 test.py -f import_merge/importHORestart.py -6,,pytest,python3 test.py -f functions/showOfflineThresholdIs864000.py -6,,pytest,python3 test.py -f functions/function_elapsed.py -6,,pytest,python3 test.py -f alter/alterColMultiTimes.py -6,,develop-test,python3 ./test.py -f 2-query/ts_2016.py -6,,develop-test,python3 ./test.py -f 2-query/escape.py -6,,develop-test,python3 ./test.py -f 2-query/TD-14763.py -5,,system-test,python3 ./test.py -f 4-taosAdapter/taosAdapter_insert.py -5,,system-test,python3 ./test.py -f 2-query/TD-12340-12342.py -5,,system-test,python3 ./test.py -f 2-query/TD-12276.py -5,,system-test,python3 ./test.py -f 2-query/TD-12165.py -5,,system-test,python3 ./test.py -f 2-query/TD-12164.py -5,,system-test,python3 ./test.py -f 2-query/TD-12145.py -5,,system-test,python3 ./test.py -f 2-query/TD-11945_crash.py -5,,system-test,python3 ./test.py -f 2-query/TD-11256.py -5,,system-test,python3 test.py -f 1-insert/TD-11970.py -5,,system-test,python3 test.py -f 1-insert/Null_tag_Line_insert.py -5,,pytest,python3 test.py -f user/user_create.py -5,,pytest,python3 test.py -f tools/taosdemoTestWithJson.py -5,,pytest,python3 test.py -f tools/taosdemoTestSampleData.py -5,,pytest,python3 test.py -f tools/taosdemoAllTest/NanoTestCase/taosdemoTestInsertTime_step.py -5,,pytest,python3 testMinTablesPerVnode.py -5,,pytest,python3 test.py -f tag_lite/unsignedTinyint.py -5,,pytest,python3 test.py -f tag_lite/timestamp.py -5,,pytest,python3 test.py -f tag_lite/TestModifyTag.py -5,,pytest,python3 test.py -f tag_lite/json_tag_extra.py -5,,pytest,python3 test.py -f tag_lite/int_binary.py -5,,pytest,python3 test.py -f tag_lite/float.py -5,,pytest,python3 test.py -f tag_lite/drop_auto_create.py -5,,pytest,python3 test.py -f tag_lite/create.py -5,,pytest,python3 test.py -f tag_lite/change.py -5,,pytest,python3 test.py -f tag_lite/bool.py -5,,pytest,python3 test.py -f tag_lite/bool_binary.py -5,,pytest,python3 test.py -f tag_lite/5.py -5,,pytest,python3 test.py -f tag_lite/4.py -5,,pytest,python3 test.py -f table/db_table.py -5,,pytest,python3 test.py -f table/create_sensitive.py -5,,pytest,python3 test.py -f table/column_num.py -5,,pytest,python3 test.py -f subscribe/singlemeter.py -5,,pytest,python3 test.py -f stable/insert.py -5,,pytest,python3 test.py -f query/querySession.py -5,,pytest,python3 test.py -f query/querySecondtscolumnTowherenow.py -5,,pytest,python3 test.py -f query/queryRegex.py -5,,pytest,python3 test.py -f query/queryGroupbyWithInterval.py -5,,pytest,python3 test.py -f query/queryCountCSVData.py -5,,pytest,python3 test.py -f query/queryCnameDisplay.py -5,,pytest,python3 test.py -f query/queryBetweenAnd.py -5,,pytest,python3 test.py -f query/nestquery_last_row.py -5,,pytest,python3 test.py -f query/nestedQuery/queryWithSpread.py -5,,pytest,python3 test.py -f query/nestedQuery/queryInterval.py -5,,pytest,python3 test.py -f query/isNullTest.py -5,,pytest,python3 test.py -f query/filterOtherTypes.py -5,,pytest,python3 test.py -f query/filterFloatAndDouble.py -5,,pytest,python3 test.py -f query/computeErrorinWhere.py -5,,pytest,python3 test.py -f query/bug6586.py -5,,pytest,python3 test.py -f query/bug2143.py -5,,pytest,python3 test.py -f query/bug2119.py -5,,pytest,python3 test.py -f insert/unsignedTinyint.py -5,,pytest,python3 test.py -f insert/unsignedSmallint.py -5,,pytest,python3 test.py -f insert/unsignedInt.py -5,,pytest,python3 test.py -f insert/nchar-unicode.py -5,,pytest,python3 test.py -f insert/insert_locking.py -5,,pytest,python3 test.py -f insert/in_function.py -5,,pytest,python3 test.py -f insert/binary.py -5,,pytest,python3 test.py -f import_merge/importHRestart.py -5,,pytest,python3 test.py -f import_merge/importHeadOverlap.py -5,,pytest,python3 test.py -f functions/function_twa_test2.py -5,,pytest,python3 test.py -f functions/function_irate.py -5,,pytest,python3 test.py -f functions/function_derivative.py -5,,pytest,python3 test.py -f functions/function_count_last_stab.py -5,,pytest,python3 test.py -f functions/all_null_value.py -5,,pytest,python3 test.py -f client/nettest.py -5,,pytest,python3 test.py -f client/alterDatabase.py -5,,pytest,python3 test.py -f alter/alterTimestampColDataProcess.py -5,,pytest,python3 test.py -f alter/alter_keep.py -5,,pytest,python3 test.py -f account/account_create.py -5,,develop-test,python3 ./test.py -f 2-query/union-order.py -5,,develop-test,python3 ./test.py -f 2-query/timeline_agg_func_groupby.py -5,,develop-test,python3 ./test.py -f 2-query/session_two_stage.py +6,,system-test,python3 ./test.py -f 2-query/TD-12229.py +6,,system-test,python3 ./test.py -f 2-query/TD-11943.py +6,,system-test,python3 ./test.py -f 2-query/function_elapsed.py +6,,pytest,python3 test.py -f wal/addOldWalTest.py +6,,pytest,python3 test.py -f topic/topicQuery.py +6,,pytest,python3 test.py -f tools/taosdemoTestWithoutMetric.py +6,,pytest,python3 test.py -f tools/taosdemoTest.py +6,,pytest,python3 test.py -f tag_lite/unsignedSmallint.py +6,,pytest,python3 test.py -f tag_lite/double.py +6,,pytest,python3 test.py -f tag_lite/alter_tag.py +6,,pytest,python3 test.py -f tag_lite/add.py +6,,pytest,python3 test.py -f tag_lite/6.py +6,,pytest,python3 test.py -f table/boundary.py +6,,pytest,python3 test.py -f query/subqueryFilter.py +6,,pytest,python3 test.py -f query/queryStableJoin.py +6,,pytest,python3 test.py -f query/querySort.py +6,,pytest,python3 test.py -f query/queryJoin.py +6,,pytest,python3 test.py -f query/queryGroupbySort.py +6,,pytest,python3 test.py -f query/queryFillTest.py +6,,pytest,python3 test.py -f query/filterAllUnsignedIntTypes.py +6,,pytest,python3 test.py -f query/bug2218.py +6,,pytest,python3 test.py -f query/bug2118.py +6,,pytest,python3 test.py -f query/bug2117.py +6,,pytest,python3 test.py -f perfbenchmark/bug3433.py +6,,pytest,python3 test.py -f insert/insert_before_use_db.py +6,,pytest,python3 test.py -f import_merge/importHPORestart.py +6,,pytest,python3 test.py -f import_merge/importHORestart.py +6,,pytest,python3 test.py -f functions/showOfflineThresholdIs864000.py +6,,pytest,python3 test.py -f functions/function_elapsed.py +6,,pytest,python3 test.py -f alter/alterColMultiTimes.py +6,,develop-test,python3 ./test.py -f 2-query/ts_2016.py +6,,develop-test,python3 ./test.py -f 2-query/escape.py +6,,develop-test,python3 ./test.py -f 2-query/TD-14763.py +5,,system-test,python3 ./test.py -f 4-taosAdapter/taosAdapter_insert.py +5,,system-test,python3 ./test.py -f 2-query/TD-12340-12342.py +5,,system-test,python3 ./test.py -f 2-query/TD-12276.py +5,,system-test,python3 ./test.py -f 2-query/TD-12165.py +5,,system-test,python3 ./test.py -f 2-query/TD-12164.py +5,,system-test,python3 ./test.py -f 2-query/TD-12145.py +5,,system-test,python3 ./test.py -f 2-query/TD-11945_crash.py +5,,system-test,python3 ./test.py -f 2-query/TD-11256.py +5,,system-test,python3 test.py -f 1-insert/TD-11970.py +5,,system-test,python3 test.py -f 1-insert/Null_tag_Line_insert.py +5,,pytest,python3 test.py -f user/user_create.py +5,,pytest,python3 test.py -f tools/taosdemoTestWithJson.py +5,,pytest,python3 test.py -f tools/taosdemoTestSampleData.py +5,,pytest,python3 test.py -f tools/taosdemoAllTest/NanoTestCase/taosdemoTestInsertTime_step.py +5,,pytest,python3 testMinTablesPerVnode.py +5,,pytest,python3 test.py -f tag_lite/unsignedTinyint.py +5,,pytest,python3 test.py -f tag_lite/timestamp.py +5,,pytest,python3 test.py -f tag_lite/TestModifyTag.py +5,,pytest,python3 test.py -f tag_lite/json_tag_extra.py +5,,pytest,python3 test.py -f tag_lite/int_binary.py +5,,pytest,python3 test.py -f tag_lite/float.py +5,,pytest,python3 test.py -f tag_lite/drop_auto_create.py +5,,pytest,python3 test.py -f tag_lite/create.py +5,,pytest,python3 test.py -f tag_lite/change.py +5,,pytest,python3 test.py -f tag_lite/bool.py +5,,pytest,python3 test.py -f tag_lite/bool_binary.py +5,,pytest,python3 test.py -f tag_lite/5.py +5,,pytest,python3 test.py -f tag_lite/4.py +5,,pytest,python3 test.py -f table/db_table.py +5,,pytest,python3 test.py -f table/create_sensitive.py +5,,pytest,python3 test.py -f table/column_num.py +5,,pytest,python3 test.py -f subscribe/singlemeter.py +5,,pytest,python3 test.py -f stable/insert.py +5,,pytest,python3 test.py -f query/querySession.py +5,,pytest,python3 test.py -f query/querySecondtscolumnTowherenow.py +5,,pytest,python3 test.py -f query/queryRegex.py +5,,pytest,python3 test.py -f query/queryGroupbyWithInterval.py +5,,pytest,python3 test.py -f query/queryCountCSVData.py +5,,pytest,python3 test.py -f query/queryCnameDisplay.py +5,,pytest,python3 test.py -f query/queryBetweenAnd.py +5,,pytest,python3 test.py -f query/nestquery_last_row.py +5,,pytest,python3 test.py -f query/nestedQuery/queryWithSpread.py +5,,pytest,python3 test.py -f query/nestedQuery/queryInterval.py +5,,pytest,python3 test.py -f query/isNullTest.py +5,,pytest,python3 test.py -f query/filterOtherTypes.py +5,,pytest,python3 test.py -f query/filterFloatAndDouble.py +5,,pytest,python3 test.py -f query/computeErrorinWhere.py +5,,pytest,python3 test.py -f query/bug6586.py +5,,pytest,python3 test.py -f query/bug2143.py +5,,pytest,python3 test.py -f query/bug2119.py +5,,pytest,python3 test.py -f insert/unsignedTinyint.py +5,,pytest,python3 test.py -f insert/unsignedSmallint.py +5,,pytest,python3 test.py -f insert/unsignedInt.py +5,,pytest,python3 test.py -f insert/nchar-unicode.py +5,,pytest,python3 test.py -f insert/insert_locking.py +5,,pytest,python3 test.py -f insert/in_function.py +5,,pytest,python3 test.py -f insert/binary.py +5,,pytest,python3 test.py -f import_merge/importHRestart.py +5,,pytest,python3 test.py -f import_merge/importHeadOverlap.py +5,,pytest,python3 test.py -f functions/function_twa_test2.py +5,,pytest,python3 test.py -f functions/function_irate.py +5,,pytest,python3 test.py -f functions/function_derivative.py +5,,pytest,python3 test.py -f functions/function_count_last_stab.py +5,,pytest,python3 test.py -f functions/all_null_value.py +5,,pytest,python3 test.py -f client/nettest.py +5,,pytest,python3 test.py -f client/alterDatabase.py +5,,pytest,python3 test.py -f alter/alterTimestampColDataProcess.py +5,,pytest,python3 test.py -f alter/alter_keep.py +5,,pytest,python3 test.py -f account/account_create.py +5,,develop-test,python3 ./test.py -f 2-query/union-order.py +5,,develop-test,python3 ./test.py -f 2-query/timeline_agg_func_groupby.py +5,,develop-test,python3 ./test.py -f 2-query/session_two_stage.py 5,,develop-test,python3 ./test.py -f 2-query/function_histogram.py -5,,develop-test,python3 ./test.py -f 0-others/TD-12435.py +5,,develop-test,python3 ./test.py -f 0-others/TD-12435.py 5,,develop-test,python3 ./test.py -f 0-others/taos_shell.py -5,,develop-test,python3 ./test.py -f 0-others/json_tag.py +5,,develop-test,python3 ./test.py -f 0-others/json_tag.py 5,,develop-test,python3 ./test.py -f 2-query/function_mode.py 5,,develop-test,python3 ./test.py -f 2-query/function_now.py 5,,develop-test,python3 ./test.py -f 2-query/function_today.py @@ -733,90 +733,90 @@ 5,,develop-test,python3 ./test.py -f 2-query/scalar_powlog.py 5,,develop-test,python3 ./test.py -f 2-query/TD-14745.py 4,,system-test,python3 test.py -f 4-taosAdapter/TD-12163.py -4,,system-test,python3 ./test.py -f 3-connectors/restful/restful_binddbname.py -4,,system-test,python3 ./test.py -f 2-query/TD-12614.py -4,,system-test,python3 ./test.py -f 2-query/TD-12014.py -4,,system-test,python3 ./test.py -f 2-query/TD-11978.py -4,,system-test,python3 ./test.py -f 2-query/TD-11969.py -4,,system-test,python3 ./test.py -f 2-query/TD-11561.py -4,,system-test,python3 test.py -f 1-insert/stmt_error.py -4,,pytest,python3 test.py -f user/pass_len.py -4,,pytest,python3 test.py -f client/dropTable.py -4,,pytest,python3 test.py -f TimeZone/TestCaseTimeZone.py -4,,pytest,python3 test.py -f tag_lite/unsignedBigint.py -4,,pytest,python3 test.py -f tag_lite/tinyint.py -4,,pytest,python3 test.py -f tag_lite/smallint.py -4,,pytest,python3 test.py -f tag_lite/set.py -4,,pytest,python3 test.py -f tag_lite/int.py -4,,pytest,python3 test.py -f tag_lite/int_float.py -4,,pytest,python3 test.py -f tag_lite/filter.py -4,,pytest,python3 test.py -f tag_lite/delete.py -4,,pytest,python3 test.py -f tag_lite/create-tags-boundary.py -4,,pytest,python3 test.py -f tag_lite/commit.py -4,,pytest,python3 test.py -f tag_lite/column.py -4,,pytest,python3 test.py -f tag_lite/bool_int.py -4,,pytest,python3 test.py -f tag_lite/binary_binary.py -4,,pytest,python3 test.py -f tag_lite/bigint.py -4,,pytest,python3 test.py -f tag_lite/3.py -4,,pytest,python3 test.py -f table/tablename-boundary.py -4,,pytest,python3 test.py -f table/max_table_length.py -4,,pytest,python3 test.py -f table/del_stable.py -4,,pytest,python3 test.py -f table/create_db_from_normal_db.py -4,,pytest,python3 test.py -f table/column_name.py -4,,pytest,python3 test.py -f table/alter_column.py -4,,pytest,python3 test.py -f query/sliding.py -4,,pytest,python3 test.py -f query/queryWildcardLength.py -4,,pytest,python3 test.py -f query/queryTsisNull.py -4,,pytest,python3 test.py -f query/queryTbnameUpperLower.py -4,,pytest,python3 test.py -f query/queryPriKey.py -4,,pytest,python3 test.py -f query/queryError.py -4,,pytest,python3 test.py -f query/queryBase.py -4,,pytest,python3 test.py -f query/natualInterval.py -4,,pytest,python3 test.py -f query/floatCompare.py -4,,pytest,python3 test.py -f query/filter.py -4,,pytest,python3 test.py -f query/filterCombo.py -4,,pytest,python3 test.py -f query/bug3375.py -4,,pytest,python3 test.py -f query/bug3351.py -4,,pytest,python3 test.py -f query/bug2281.py -4,,pytest,python3 test.py -f insert/unsignedBigint.py -4,,pytest,python3 test.py -f insert/tinyint.py -4,,pytest,python3 test.py -f insert/timestamp.py -4,,pytest,python3 test.py -f insert/specialSql.py -4,,pytest,python3 test.py -f insert/special_character_show.py -4,,pytest,python3 test.py -f insert/smallint.py -4,,pytest,python3 test.py -f insert/nchar.py -4,,pytest,python3 test.py -f insert/multi.py -4,,pytest,python3 test.py -f insert/modify_column.py -4,,pytest,python3 test.py -f insert/int.py -4,,pytest,python3 test.py -f insert/insertIntoTwoTables.py -4,,pytest,python3 test.py -f insert/insertDynamicColBeforeVal.py -4,,pytest,python3 test.py -f insert/float.py -4,,pytest,python3 test.py -f insert/double.py -4,,pytest,python3 test.py -f insert/date.py -4,,pytest,python3 test.py -f insert/bug3654.py -4,,pytest,python3 test.py -f insert/bool.py -4,,pytest,python3 test.py -f insert/bigint.py -4,,pytest,python3 test.py -f insert/basic.py -4,,pytest,python3 test.py -f insert/alterTableAndInsert.py -4,,pytest,python3 test.py -f import_merge/importHeadPartOverlap.py -4,,pytest,python3 test.py -f functions/function_stddev_td2555.py -4,,pytest,python3 test.py -f dbmgmt/nanoSecondCheck.py -4,,pytest,python3 bug2265.py -4,,pytest,python3 test.py -f alter/alterTabAddTagWithNULL.py -4,,pytest,python3 test.py -f alter/alter_debugFlag.py -4,,pytest,python3 test.py -f alter/alter_create_exception.py +4,,system-test,python3 ./test.py -f 3-connectors/restful/restful_binddbname.py +4,,system-test,python3 ./test.py -f 2-query/TD-12614.py +4,,system-test,python3 ./test.py -f 2-query/TD-12014.py +4,,system-test,python3 ./test.py -f 2-query/TD-11978.py +4,,system-test,python3 ./test.py -f 2-query/TD-11969.py +4,,system-test,python3 ./test.py -f 2-query/TD-11561.py +4,,system-test,python3 test.py -f 1-insert/stmt_error.py +4,,pytest,python3 test.py -f user/pass_len.py +4,,pytest,python3 test.py -f client/dropTable.py +4,,pytest,python3 test.py -f TimeZone/TestCaseTimeZone.py +4,,pytest,python3 test.py -f tag_lite/unsignedBigint.py +4,,pytest,python3 test.py -f tag_lite/tinyint.py +4,,pytest,python3 test.py -f tag_lite/smallint.py +4,,pytest,python3 test.py -f tag_lite/set.py +4,,pytest,python3 test.py -f tag_lite/int.py +4,,pytest,python3 test.py -f tag_lite/int_float.py +4,,pytest,python3 test.py -f tag_lite/filter.py +4,,pytest,python3 test.py -f tag_lite/delete.py +4,,pytest,python3 test.py -f tag_lite/create-tags-boundary.py +4,,pytest,python3 test.py -f tag_lite/commit.py +4,,pytest,python3 test.py -f tag_lite/column.py +4,,pytest,python3 test.py -f tag_lite/bool_int.py +4,,pytest,python3 test.py -f tag_lite/binary_binary.py +4,,pytest,python3 test.py -f tag_lite/bigint.py +4,,pytest,python3 test.py -f tag_lite/3.py +4,,pytest,python3 test.py -f table/tablename-boundary.py +4,,pytest,python3 test.py -f table/max_table_length.py +4,,pytest,python3 test.py -f table/del_stable.py +4,,pytest,python3 test.py -f table/create_db_from_normal_db.py +4,,pytest,python3 test.py -f table/column_name.py +4,,pytest,python3 test.py -f table/alter_column.py +4,,pytest,python3 test.py -f query/sliding.py +4,,pytest,python3 test.py -f query/queryWildcardLength.py +4,,pytest,python3 test.py -f query/queryTsisNull.py +4,,pytest,python3 test.py -f query/queryTbnameUpperLower.py +4,,pytest,python3 test.py -f query/queryPriKey.py +4,,pytest,python3 test.py -f query/queryError.py +4,,pytest,python3 test.py -f query/queryBase.py +4,,pytest,python3 test.py -f query/natualInterval.py +4,,pytest,python3 test.py -f query/floatCompare.py +4,,pytest,python3 test.py -f query/filter.py +4,,pytest,python3 test.py -f query/filterCombo.py +4,,pytest,python3 test.py -f query/bug3375.py +4,,pytest,python3 test.py -f query/bug3351.py +4,,pytest,python3 test.py -f query/bug2281.py +4,,pytest,python3 test.py -f insert/unsignedBigint.py +4,,pytest,python3 test.py -f insert/tinyint.py +4,,pytest,python3 test.py -f insert/timestamp.py +4,,pytest,python3 test.py -f insert/specialSql.py +4,,pytest,python3 test.py -f insert/special_character_show.py +4,,pytest,python3 test.py -f insert/smallint.py +4,,pytest,python3 test.py -f insert/nchar.py +4,,pytest,python3 test.py -f insert/multi.py +4,,pytest,python3 test.py -f insert/modify_column.py +4,,pytest,python3 test.py -f insert/int.py +4,,pytest,python3 test.py -f insert/insertIntoTwoTables.py +4,,pytest,python3 test.py -f insert/insertDynamicColBeforeVal.py +4,,pytest,python3 test.py -f insert/float.py +4,,pytest,python3 test.py -f insert/double.py +4,,pytest,python3 test.py -f insert/date.py +4,,pytest,python3 test.py -f insert/bug3654.py +4,,pytest,python3 test.py -f insert/bool.py +4,,pytest,python3 test.py -f insert/bigint.py +4,,pytest,python3 test.py -f insert/basic.py +4,,pytest,python3 test.py -f insert/alterTableAndInsert.py +4,,pytest,python3 test.py -f import_merge/importHeadPartOverlap.py +4,,pytest,python3 test.py -f functions/function_stddev_td2555.py +4,,pytest,python3 test.py -f dbmgmt/nanoSecondCheck.py +4,,pytest,python3 bug2265.py +4,,pytest,python3 test.py -f alter/alterTabAddTagWithNULL.py +4,,pytest,python3 test.py -f alter/alter_debugFlag.py +4,,pytest,python3 test.py -f alter/alter_create_exception.py 4,,pytest,python3 test.py -f insert/line_insert.py -3,,pytest,python3 test.py -f tag_lite/binary.py -3,,pytest,python3 test.py -f query/filterAllIntTypes.py -3,,pytest,python3 test.py -f dbmgmt/dbNameCaseSensitive.py -3,,pytest,python3 test.py -f insert/schemalessCaseSensitive.py -3,,pytest,python3 test.py -f table/columnNameCaseSensitive.py +3,,pytest,python3 test.py -f tag_lite/binary.py +3,,pytest,python3 test.py -f query/filterAllIntTypes.py +3,,pytest,python3 test.py -f dbmgmt/dbNameCaseSensitive.py +3,,pytest,python3 test.py -f insert/schemalessCaseSensitive.py +3,,pytest,python3 test.py -f table/columnNameCaseSensitive.py 3,,pytest,python3 test.py -f table/columnNameValidation.py -3,,pytest,python3 test.py -f table/tagNameCaseSensitive.py -3,,pytest,python3 test.py -f table/tbNameCaseSensitive.py -3,,pytest,python3 test.py -f functions/function_max_row.py -3,,pytest,python3 test.py -f functions/function_min_row.py -3,,develop-test,python3 ./test.py -f 2-query/ts_hidden_column.py +3,,pytest,python3 test.py -f table/tagNameCaseSensitive.py +3,,pytest,python3 test.py -f table/tbNameCaseSensitive.py +3,,pytest,python3 test.py -f functions/function_max_row.py +3,,pytest,python3 test.py -f functions/function_min_row.py +3,,develop-test,python3 ./test.py -f 2-query/ts_hidden_column.py 3,,develop-test,python3 ./test.py -f 2-query/ts_shortcut.py 3,,develop-test,python3 ./test.py -f 2-query/nchar_funcs.py 3,,develop-test,python3 ./test.py -f 2-query/TD-5902.py @@ -831,4 +831,8 @@ 1,,docs-examples-test, ./test_R.sh 1,,develop-test,python3 ./test.py -f 2-query/function_state.py 1,,develop-test,python3 ./test.py -f 5-taos-tools/taosbenchmark/demo.py -3,,develop-test,python3 ./test.py -f 5-taos-tools/taosdump/taosdumpTestInspect.py +3,,develop-test,python3 ./test.py -f 5-taos-tools/taosdump/taosdumpTestBasic.py +3,,develop-test,python3 ./test.py -f 5-taos-tools/taosdump/taosdumpDbNtb.py +3,,develop-test,python3 ./test.py -f 5-taos-tools/taosdump/taosdumpDbStb.py +3,,develop-test,python3 ./test.py -f 5-taos-tools/taosdump/taosdumpManyCols.py +3,,develop-test,python3 ./test.py -f 5-taos-tools/taosdump/taosdumpTestInspect.py diff --git a/tests/pytest/insert/line_insert.py b/tests/pytest/insert/line_insert.py index 79c318c3448a0a77b02143ac5689952d9e498d3c..8beb6ba01e59ece18c5d7d4b71bd6f09b42fa157 100644 --- a/tests/pytest/insert/line_insert.py +++ b/tests/pytest/insert/line_insert.py @@ -208,6 +208,14 @@ class TDTestCase: tdSql.query("select * from type_json5") tdSql.checkData(0, 2, '''{"jsonC":"0"}''') + try: + self._conn.schemaless_insert([ + "measurement,host=host1 field1=12i,field2=2.0,fieldKey=\"Launch\" 1654078242716", + "measurement,host=host1" + ], TDSmlProtocolType.LINE.value, TDSmlTimestampType.MILLI_SECOND.value) + tdLog.exit("%s failed: no exception happen here" % __file__) + except Exception as e: + pass def stop(self): tdSql.close()