diff --git a/Jenkinsfile b/Jenkinsfile index 907126c22a13198c05b20bc1b63af16f9f39a2cb..4a584fbb35973cc1da82c235f0f47bebe3c50ca2 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -238,7 +238,7 @@ pipeline { cd ${WKC}/tests/connectorTest/nodejsTest/nanosupport npm install td2.0-connector > /dev/null 2>&1 node nanosecondTest.js - + ''' sh ''' cd ${WKC}/tests/examples/C#/taosdemo @@ -247,7 +247,6 @@ pipeline { cd ${WKC}/tests/connectorTest/C#Test/nanosupport mcs -out:nano *.cs > /dev/null 2>&1 echo '' |./nano - ''' sh ''' cd ${WKC}/tests/gotest diff --git a/documentation20/cn/02.getting-started/docs.md b/documentation20/cn/02.getting-started/docs.md index dd7c20fe186270f1130c3916512a25df3d131169..a37afa9212911f4e48efe5e923607f3f2e05422a 100644 --- a/documentation20/cn/02.getting-started/docs.md +++ b/documentation20/cn/02.getting-started/docs.md @@ -208,7 +208,7 @@ taos> select avg(current), max(voltage), min(phase) from test.d10 interval(10s); | **C#** | ● | ● | ○ | ○ | ○ | ○ | ○ | -- | -- | | **RESTful** | ● | ● | ● | ● | ● | ● | ● | ● | ● | -注: ● 表示经过官方测试验证, ○ 表示非官方测试验证。 +注:● 表示官方测试验证通过,○ 表示非官方测试验证通过,-- 表示未经验证。 请跳转到 [连接器](https://www.taosdata.com/cn/documentation/connector) 查看更详细的信息。 diff --git a/documentation20/cn/08.connector/docs.md b/documentation20/cn/08.connector/docs.md index f5411bf80ace7a403746f38f54b9d5cd8c188f26..45395c6f45d140e1185235baeeaef96db4ad36b8 100644 --- a/documentation20/cn/08.connector/docs.md +++ b/documentation20/cn/08.connector/docs.md @@ -17,7 +17,7 @@ TDengine提供了丰富的应用程序开发接口,其中包括C/C++、Java、 | **C#** | ● | ● | ○ | ○ | ○ | ○ | ○ | -- | -- | | **RESTful** | ● | ● | ● | ● | ● | ● | ○ | ○ | ○ | -其中 ● 表示经过官方测试验证, ○ 表示非官方测试验证。 +其中 ● 表示官方测试验证通过,○ 表示非官方测试验证通过,-- 表示未经验证。 注意: @@ -984,15 +984,18 @@ go build ### Go连接器的使用 -TDengine提供了GO驱动程序包`taosSql`.`taosSql`实现了GO语言的内置接口`database/sql/driver`。用户只需按如下方式引入包就可以在应用程序中访问TDengine。 +TDengine提供了GO驱动程序包`taosSql`。`taosSql`实现了GO语言的内置接口`database/sql/driver`。用户只需按如下方式引入包就可以在应用程序中访问TDengine。 ```go import ( "database/sql" - _ "github.com/taosdata/driver-go/taosSql" + _ "github.com/taosdata/driver-go/v2/taosSql" ) ``` + **提示**:下划线与双引号之间必须有一个空格。 +`taosSql` 的 v2 版本进行了重构,分离出内置数据库操作接口 `database/sql/driver` 到目录 `taosSql`;订阅、stmt等其他功能放到目录 `af`。 + ### 常用API - `sql.Open(DRIVER_NAME string, dataSourceName string) *DB` diff --git a/documentation20/cn/10.cluster/docs.md b/documentation20/cn/10.cluster/docs.md index f39138d61de35a09f5988014e95f284cb0f9e26f..b55dbc69443b0f2f04be879d2f01cbdb86295301 100644 --- a/documentation20/cn/10.cluster/docs.md +++ b/documentation20/cn/10.cluster/docs.md @@ -79,13 +79,13 @@ Query OK, 1 row(s) in set (0.006385s) taos> ``` -上述命令里,可以看到这个刚启动的这个数据节点的End Point是:h1.taos.com:6030,就是这个新集群的firstEP。 +上述命令里,可以看到这个刚启动的这个数据节点的End Point是:h1.taos.com:6030,就是这个新集群的firstEp。 ## 启动后续数据节点 将后续的数据节点添加到现有集群,具体有以下几步: -1. 按照[《立即开始》](https://www.taosdata.com/cn/documentation/getting-started/)一章的方法在每个物理节点启动taosd;(注意:每个物理节点都需要在 taos.cfg 文件中将 firstEP 参数配置为新集群首个节点的 End Point——在本例中是 h1.taos.com:6030) +1. 按照[《立即开始》](https://www.taosdata.com/cn/documentation/getting-started/)一章的方法在每个物理节点启动taosd;(注意:每个物理节点都需要在 taos.cfg 文件中将 firstEp参数配置为新集群首个节点的 End Point——在本例中是 h1.taos.com:6030) 2. 在第一个数据节点,使用CLI程序taos,登录进TDengine系统,执行命令: @@ -110,7 +110,7 @@ taos> **提示:** -- 任何已经加入集群在线的数据节点,都可以作为后续待加入节点的 firstEP。 +- 任何已经加入集群在线的数据节点,都可以作为后续待加入节点的 firstEp。 - firstEp 这个参数仅仅在该数据节点首次加入集群时有作用,加入集群后,该数据节点会保存最新的 mnode 的 End Point 列表,不再依赖这个参数。 - 接下来,配置文件中的 firstEp 参数就主要在客户端连接的时候使用了,例如 taos shell 如果不加参数,会默认连接由 firstEp 指定的节点。 - 两个没有配置 firstEp 参数的数据节点 dnode 启动后,会独立运行起来。这个时候,无法将其中一个数据节点加入到另外一个数据节点,形成集群。**无法将两个独立的集群合并成为新的集群**。 diff --git a/documentation20/en/05.insert/docs.md b/documentation20/en/05.insert/docs.md index 88746ea60867b37e5956075f88c48ebd8276dfaa..6690babf776eed6af006b8197dba9723ef525f82 100644 --- a/documentation20/en/05.insert/docs.md +++ b/documentation20/en/05.insert/docs.md @@ -4,7 +4,7 @@ TDengine supports multiple interfaces to write data, including SQL, Prometheus, ## SQL Writing -Applications insert data by executing SQL insert statements through C/C++, JDBC, GO, or Python Connector, and users can manually enter SQL insert statements to insert data through TAOS Shell. For example, the following insert writes a record to table d1001: +Applications insert data by executing SQL insert statements through C/C++, JDBC, GO, C#, or Python Connector, and users can manually enter SQL insert statements to insert data through TAOS Shell. For example, the following insert writes a record to table d1001: ```mysql INSERT INTO d1001 VALUES (1538548685000, 10.3, 219, 0.31); diff --git a/documentation20/en/08.connector/docs.md b/documentation20/en/08.connector/docs.md index 9cbd3952068d8eac23ffa9bcd7497ff158a21d86..e8087b79db0ab82709428d8a9493ac577b2f5971 100644 --- a/documentation20/en/08.connector/docs.md +++ b/documentation20/en/08.connector/docs.md @@ -179,7 +179,7 @@ Clean up the running environment and call this API before the application exits. - `int taos_options(TSDB_OPTION option, const void * arg, ...)` -Set client options, currently only time zone setting (_TSDB_OPTIONTIMEZONE) and encoding setting (_TSDB_OPTIONLOCALE) are supported. The time zone and encoding default to the current operating system settings. +Set client options, currently only time zone setting (`_TSDB_OPTIONTIMEZONE`) and encoding setting (`_TSDB_OPTIONLOCALE`) are supported. The time zone and encoding default to the current operating system settings. - `char *taos_get_client_info()` @@ -296,9 +296,7 @@ Asynchronous APIs have relatively high requirements for users, who can selective The asynchronous APIs of TDengine all use non-blocking calling mode. Applications can use multithreading to open multiple tables at the same time, and can query or insert to each open table at the same time. It should be pointed out that the **application client must ensure that the operation on the same table is completely serialized**, that is, when the insertion or query operation on the same table is not completed (when no result returned), the second insertion or query operation cannot be performed. - - ### Parameter binding API In addition to calling `taos_query` directly for queries, TDengine also provides a Prepare API that supports parameter binding. Like MySQL, these APIs currently only support using question mark `?` to represent the parameters to be bound, as follows: @@ -823,12 +821,12 @@ https://www.taosdata.com/blog/2020/11/02/1901.html The TDengine provides the GO driver taosSql. taosSql implements the GO language's built-in interface database/sql/driver. Users can access TDengine in the application by simply importing the package as follows, see https://github.com/taosdata/driver-go/blob/develop/taosSql/driver_test.go for details. -Sample code for using the Go connector can be found in https://github.com/taosdata/TDengine/tree/develop/tests/examples/go and the [video tutorial](https://www.taosdata.com/blog/2020/11/11/1951.html). +Sample code for using the Go connector can be found in https://github.com/taosdata/TDengine/tree/develop/tests/examples/go . ```Go import ( "database/sql" - _ "github.com/taosdata/driver-go/taosSql" + _ "github.com/taosdata/driver-go/v2/taosSql" ) ``` @@ -839,6 +837,8 @@ go env -w GO111MODULE=on go env -w GOPROXY=https://goproxy.io,direct ``` +`taosSql` v2 completed refactoring of the v1 version and separated the built-in database operation interface `database/sql/driver` to the directory `taosSql`, and put other advanced functions such as subscription and stmt into the directory `af`. + ### Common APIs - `sql.Open(DRIVER_NAME string, dataSourceName string) *DB` @@ -937,7 +937,7 @@ After installing the TDengine client, the nodejsChecker.js program can verify wh Steps: -1. Create a new installation verification directory, for example: ~/tdengine-test, copy the nodejsChecker.js source program on github. Download address: (https://github.com/taosdata/TDengine/tree/develop/tests/examples/nodejs/nodejsChecker.js). +1. Create a new installation verification directory, for example: `~/tdengine-test`, copy the nodejsChecker.js source program on github. Download address: (https://github.com/taosdata/TDengine/tree/develop/tests/examples/nodejs/nodejsChecker.js). 2. Execute the following command: diff --git a/src/client/src/tscSQLParser.c b/src/client/src/tscSQLParser.c index 5a2e35045018a4780be8dff09c13454a039d4ab7..87b6b076527a17b48dabfcf73e8423128a0e7128 100644 --- a/src/client/src/tscSQLParser.c +++ b/src/client/src/tscSQLParser.c @@ -22,6 +22,7 @@ #include #include "os.h" +#include "regex.h" #include "qPlan.h" #include "qSqlparser.h" #include "qTableMeta.h" @@ -278,6 +279,8 @@ static uint8_t convertRelationalOperator(SStrToken *pToken) { return TSDB_BINARY_OP_REMAINDER; case TK_LIKE: return TSDB_RELATION_LIKE; + case TK_MATCH: + return TSDB_RELATION_MATCH; case TK_ISNULL: return TSDB_RELATION_ISNULL; case TK_NOTNULL: @@ -3776,6 +3779,9 @@ static int32_t doExtractColumnFilterInfo(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, case TK_LIKE: pColumnFilter->lowerRelOptr = TSDB_RELATION_LIKE; break; + case TK_MATCH: + pColumnFilter->lowerRelOptr = TSDB_RELATION_MATCH; + break; case TK_ISNULL: pColumnFilter->lowerRelOptr = TSDB_RELATION_ISNULL; break; @@ -3839,9 +3845,15 @@ static int32_t tablenameListToString(tSqlExpr* pExpr, SStringBuilder* sb) { return TSDB_CODE_SUCCESS; } -static int32_t tablenameCondToString(tSqlExpr* pExpr, SStringBuilder* sb) { - taosStringBuilderAppendStringLen(sb, QUERY_COND_REL_PREFIX_LIKE, QUERY_COND_REL_PREFIX_LIKE_LEN); - taosStringBuilderAppendString(sb, pExpr->value.pz); +static int32_t tablenameCondToString(tSqlExpr* pExpr, uint32_t opToken, SStringBuilder* sb) { + assert(opToken == TK_LIKE || opToken == TK_MATCH); + if (opToken == TK_LIKE) { + taosStringBuilderAppendStringLen(sb, QUERY_COND_REL_PREFIX_LIKE, QUERY_COND_REL_PREFIX_LIKE_LEN); + taosStringBuilderAppendString(sb, pExpr->value.pz); + } else if (opToken == TK_MATCH) { + taosStringBuilderAppendStringLen(sb, QUERY_COND_REL_PREFIX_MATCH, QUERY_COND_REL_PREFIX_MATCH_LEN); + taosStringBuilderAppendString(sb, pExpr->value.pz); + } return TSDB_CODE_SUCCESS; } @@ -3862,7 +3874,7 @@ static int32_t checkColumnFilterInfo(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, SCol STableMeta* pTableMeta = pTableMetaInfo->pTableMeta; SSchema* pSchema = tscGetTableColumnSchema(pTableMeta, pIndex->columnIndex); int32_t ret = 0; - const char* msg1 = "non binary column not support like operator"; + const char* msg1 = "non binary column not support like/match operator"; const char* msg2 = "binary column not support this operator"; const char* msg3 = "bool column not support this operator"; const char* msg4 = "primary key not support this operator"; @@ -3890,12 +3902,13 @@ static int32_t checkColumnFilterInfo(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, SCol && pExpr->tokenId != TK_ISNULL && pExpr->tokenId != TK_NOTNULL && pExpr->tokenId != TK_LIKE + && pExpr->tokenId != TK_MATCH && pExpr->tokenId != TK_IN) { ret = invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg2); goto _err_ret; } } else { - if (pExpr->tokenId == TK_LIKE) { + if (pExpr->tokenId == TK_LIKE || pExpr->tokenId == TK_MATCH) { ret = invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg1); goto _err_ret; } @@ -3943,12 +3956,12 @@ static int32_t getTablenameCond(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, tSqlExpr* if (pTableCond->tokenId == TK_IN) { ret = tablenameListToString(pRight, sb); - } else if (pTableCond->tokenId == TK_LIKE) { + } else if (pTableCond->tokenId == TK_LIKE || pTableCond->tokenId == TK_MATCH) { if (pRight->tokenId != TK_STRING) { return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg1); } - ret = tablenameCondToString(pRight, sb); + ret = tablenameCondToString(pRight, pTableCond->tokenId, sb); } if (ret != TSDB_CODE_SUCCESS) { @@ -4397,7 +4410,7 @@ static bool validateJoinExprNode(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, tSqlExpr } static bool validTableNameOptr(tSqlExpr* pExpr) { - const char nameFilterOptr[] = {TK_IN, TK_LIKE}; + const char nameFilterOptr[] = {TK_IN, TK_LIKE, TK_MATCH}; for (int32_t i = 0; i < tListLen(nameFilterOptr); ++i) { if (pExpr->tokenId == nameFilterOptr[i]) { @@ -4489,6 +4502,45 @@ static int32_t validateLikeExpr(tSqlExpr* pExpr, STableMeta* pTableMeta, int32_t return TSDB_CODE_SUCCESS; } +// check for match expression +static int32_t validateMatchExpr(tSqlExpr* pExpr, STableMeta* pTableMeta, int32_t index, char* msgBuf) { + const char* msg1 = "regular expression string should be less than %d characters"; + const char* msg2 = "illegal column type for match"; + const char* msg3 = "invalid regular expression"; + + tSqlExpr* pLeft = pExpr->pLeft; + tSqlExpr* pRight = pExpr->pRight; + + if (pExpr->tokenId == TK_MATCH) { + if (pRight->value.nLen > tsMaxRegexStringLen) { + char tmp[64] = {0}; + sprintf(tmp, msg1, tsMaxRegexStringLen); + return invalidOperationMsg(msgBuf, tmp); + } + + SSchema* pSchema = tscGetTableSchema(pTableMeta); + if ((!isTablenameToken(&pLeft->columnName)) && !IS_VAR_DATA_TYPE(pSchema[index].type)) { + return invalidOperationMsg(msgBuf, msg2); + } + + int errCode = 0; + regex_t regex; + char regErrBuf[256] = {0}; + + const char* pattern = pRight->value.pz; + int cflags = REG_EXTENDED; + if ((errCode = regcomp(®ex, pattern, cflags)) != 0) { + regerror(errCode, ®ex, regErrBuf, sizeof(regErrBuf)); + tscError("Failed to compile regex pattern %s. reason %s", pattern, regErrBuf); + return invalidOperationMsg(msgBuf, msg3); + } + regfree(®ex); + } + + return TSDB_CODE_SUCCESS; +} + + int32_t handleNeOptr(tSqlExpr** rexpr, tSqlExpr* expr) { tSqlExpr* left = tSqlExprClone(expr); tSqlExpr* right = expr; @@ -4540,6 +4592,12 @@ static int32_t handleExprInQueryCond(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, tSql return code; } + // validate the match expression + code = validateMatchExpr(*pExpr, pTableMeta, index.columnIndex, tscGetErrorMsgPayload(pCmd)); + if (code != TSDB_CODE_SUCCESS) { + return code; + } + SSchema* pSchema = tscGetTableColumnSchema(pTableMeta, index.columnIndex); if (pSchema->type == TSDB_DATA_TYPE_TIMESTAMP && index.columnIndex == PRIMARYKEY_TIMESTAMP_COL_INDEX) { // query on time range if (!validateJoinExprNode(pCmd, pQueryInfo, *pExpr, &index)) { @@ -4867,65 +4925,66 @@ static int32_t setTableCondForSTableQuery(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, STagCond* pTagCond = &pQueryInfo->tagCond; pTagCond->tbnameCond.uid = pTableMetaInfo->pTableMeta->id.uid; - assert(pExpr->tokenId == TK_LIKE || pExpr->tokenId == TK_IN); + assert(pExpr->tokenId == TK_LIKE || pExpr->tokenId == TK_MATCH || pExpr->tokenId == TK_IN); - if (pExpr->tokenId == TK_LIKE) { + if (pExpr->tokenId == TK_LIKE || pExpr->tokenId == TK_MATCH) { char* str = taosStringBuilderGetResult(sb, NULL); pQueryInfo->tagCond.tbnameCond.cond = strdup(str); pQueryInfo->tagCond.tbnameCond.len = (int32_t) strlen(str); return TSDB_CODE_SUCCESS; - } - - SStringBuilder sb1; memset(&sb1, 0, sizeof(sb1)); - taosStringBuilderAppendStringLen(&sb1, QUERY_COND_REL_PREFIX_IN, QUERY_COND_REL_PREFIX_IN_LEN); + } else { + SStringBuilder sb1; + memset(&sb1, 0, sizeof(sb1)); + taosStringBuilderAppendStringLen(&sb1, QUERY_COND_REL_PREFIX_IN, QUERY_COND_REL_PREFIX_IN_LEN); - // remove the duplicated input table names - int32_t num = 0; - char* tableNameString = taosStringBuilderGetResult(sb, NULL); + // remove the duplicated input table names + int32_t num = 0; + char* tableNameString = taosStringBuilderGetResult(sb, NULL); - char** segments = strsplit(tableNameString + QUERY_COND_REL_PREFIX_IN_LEN, TBNAME_LIST_SEP, &num); - qsort(segments, num, POINTER_BYTES, tableNameCompar); + char** segments = strsplit(tableNameString + QUERY_COND_REL_PREFIX_IN_LEN, TBNAME_LIST_SEP, &num); + qsort(segments, num, POINTER_BYTES, tableNameCompar); - int32_t j = 1; - for (int32_t i = 1; i < num; ++i) { - if (strcmp(segments[i], segments[i - 1]) != 0) { - segments[j++] = segments[i]; + int32_t j = 1; + for (int32_t i = 1; i < num; ++i) { + if (strcmp(segments[i], segments[i - 1]) != 0) { + segments[j++] = segments[i]; + } } - } - num = j; + num = j; - char name[TSDB_DB_NAME_LEN] = {0}; - tNameGetDbName(&pTableMetaInfo->name, name); - SStrToken dbToken = { .type = TK_STRING, .z = name, .n = (uint32_t)strlen(name) }; - - for (int32_t i = 0; i < num; ++i) { - if (i >= 1) { - taosStringBuilderAppendStringLen(&sb1, TBNAME_LIST_SEP, 1); - } + char name[TSDB_DB_NAME_LEN] = {0}; + tNameGetDbName(&pTableMetaInfo->name, name); + SStrToken dbToken = {.type = TK_STRING, .z = name, .n = (uint32_t)strlen(name)}; + + for (int32_t i = 0; i < num; ++i) { + if (i >= 1) { + taosStringBuilderAppendStringLen(&sb1, TBNAME_LIST_SEP, 1); + } - char idBuf[TSDB_TABLE_FNAME_LEN] = {0}; - int32_t xlen = (int32_t)strlen(segments[i]); - SStrToken t = {.z = segments[i], .n = xlen, .type = TK_STRING}; + char idBuf[TSDB_TABLE_FNAME_LEN] = {0}; + int32_t xlen = (int32_t)strlen(segments[i]); + SStrToken t = {.z = segments[i], .n = xlen, .type = TK_STRING}; - int32_t ret = setObjFullName(idBuf, account, &dbToken, &t, &xlen); - if (ret != TSDB_CODE_SUCCESS) { - taosStringBuilderDestroy(&sb1); - tfree(segments); + int32_t ret = setObjFullName(idBuf, account, &dbToken, &t, &xlen); + if (ret != TSDB_CODE_SUCCESS) { + taosStringBuilderDestroy(&sb1); + tfree(segments); - invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg); - return ret; - } + invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg); + return ret; + } - taosStringBuilderAppendString(&sb1, idBuf); - } + taosStringBuilderAppendString(&sb1, idBuf); + } - char* str = taosStringBuilderGetResult(&sb1, NULL); - pQueryInfo->tagCond.tbnameCond.cond = strdup(str); - pQueryInfo->tagCond.tbnameCond.len = (int32_t) strlen(str); + char* str = taosStringBuilderGetResult(&sb1, NULL); + pQueryInfo->tagCond.tbnameCond.cond = strdup(str); + pQueryInfo->tagCond.tbnameCond.len = (int32_t)strlen(str); - taosStringBuilderDestroy(&sb1); - tfree(segments); - return TSDB_CODE_SUCCESS; + taosStringBuilderDestroy(&sb1); + tfree(segments); + return TSDB_CODE_SUCCESS; + } } int32_t mergeTimeRange(SSqlCmd* pCmd, STimeWindow* res, STimeWindow* win, int32_t optr) { @@ -8112,7 +8171,7 @@ int32_t tscGetExprFilters(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, SArray* pSelect } static int32_t handleExprInHavingClause(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, SArray* pSelectNodeList, tSqlExpr* pExpr, int32_t sqlOptr) { - const char* msg1 = "non binary column not support like operator"; + const char* msg1 = "non binary column not support like/match operator"; const char* msg2 = "invalid operator for binary column in having clause"; const char* msg3 = "invalid operator for bool column in having clause"; @@ -8164,11 +8223,12 @@ static int32_t handleExprInHavingClause(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, S && pExpr->tokenId != TK_ISNULL && pExpr->tokenId != TK_NOTNULL && pExpr->tokenId != TK_LIKE + && pExpr->tokenId != TK_MATCH ) { return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg2); } } else { - if (pExpr->tokenId == TK_LIKE) { + if (pExpr->tokenId == TK_LIKE || pExpr->tokenId == TK_MATCH) { return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg1); } diff --git a/src/client/src/tscSystem.c b/src/client/src/tscSystem.c index c04765b0651f59066dd5897f2eaf0924b7113a21..8af340030cccee1431a82eb88344642011f2e019 100644 --- a/src/client/src/tscSystem.c +++ b/src/client/src/tscSystem.c @@ -122,6 +122,10 @@ int32_t tscAcquireRpc(const char *key, const char *user, const char *secretEncry void taos_init_imp(void) { char temp[128] = {0}; + + // In the APIs of other program language, taos_cleanup is not available yet. + // So, to make sure taos_cleanup will be invoked to clean up the allocated resource to suppress the valgrind warning. + atexit(taos_cleanup); errno = TSDB_CODE_SUCCESS; srand(taosGetTimestampSec()); @@ -197,10 +201,6 @@ void taos_init_imp(void) { tscRefId = taosOpenRef(200, tscCloseTscObj); - // In the APIs of other program language, taos_cleanup is not available yet. - // So, to make sure taos_cleanup will be invoked to clean up the allocated resource to suppress the valgrind warning. - atexit(taos_cleanup); - tscDebug("client is initialized successfully"); } diff --git a/src/common/inc/texpr.h b/src/common/inc/texpr.h index 2e49a69366c2277c98ec32a1d8419c141ddecc0f..db71559df6334ed935a44f3822f78ff671e8dab2 100644 --- a/src/common/inc/texpr.h +++ b/src/common/inc/texpr.h @@ -33,9 +33,11 @@ struct SSchema; #define QUERY_COND_REL_PREFIX_IN "IN|" #define QUERY_COND_REL_PREFIX_LIKE "LIKE|" +#define QUERY_COND_REL_PREFIX_MATCH "MATCH|" #define QUERY_COND_REL_PREFIX_IN_LEN 3 #define QUERY_COND_REL_PREFIX_LIKE_LEN 5 +#define QUERY_COND_REL_PREFIX_MATCH_LEN 6 typedef bool (*__result_filter_fn_t)(const void *, void *); typedef void (*__do_filter_suppl_fn_t)(void *, void *); diff --git a/src/common/inc/tglobal.h b/src/common/inc/tglobal.h index 285145f8f63693e193817a83e079f978ce4ebe6a..360a83eea8df9392b059e73ac59075b27a96f7c3 100644 --- a/src/common/inc/tglobal.h +++ b/src/common/inc/tglobal.h @@ -74,6 +74,7 @@ extern int8_t tsKeepOriginalColumnName; // client extern int32_t tsMaxSQLStringLen; extern int32_t tsMaxWildCardsLen; +extern int32_t tsMaxRegexStringLen; extern int8_t tsTscEnableRecordSql; extern int32_t tsMaxNumOfOrderedResults; extern int32_t tsMinSlidingTime; diff --git a/src/common/src/texpr.c b/src/common/src/texpr.c index ebdb33fd5b804e169a5e8ffc0b9a59e8dc0a331e..2c72b7bd591ab4cb2d11d1420ae97e7cc2123272 100644 --- a/src/common/src/texpr.c +++ b/src/common/src/texpr.c @@ -430,6 +430,17 @@ tExprNode* exprTreeFromTableName(const char* tbnameCond) { pVal->nType = TSDB_DATA_TYPE_BINARY; pVal->nLen = (int32_t)len; + } else if (strncmp(tbnameCond, QUERY_COND_REL_PREFIX_MATCH, QUERY_COND_REL_PREFIX_MATCH_LEN) == 0) { + right->nodeType = TSQL_NODE_VALUE; + expr->_node.optr = TSDB_RELATION_MATCH; + tVariant* pVal = exception_calloc(1, sizeof(tVariant)); + right->pVal = pVal; + size_t len = strlen(tbnameCond + QUERY_COND_REL_PREFIX_MATCH_LEN) + 1; + pVal->pz = exception_malloc(len); + memcpy(pVal->pz, tbnameCond + QUERY_COND_REL_PREFIX_MATCH_LEN, len); + pVal->nType = TSDB_DATA_TYPE_BINARY; + pVal->nLen = (int32_t)len; + } else if (strncmp(tbnameCond, QUERY_COND_REL_PREFIX_IN, QUERY_COND_REL_PREFIX_IN_LEN) == 0) { right->nodeType = TSQL_NODE_VALUE; expr->_node.optr = TSDB_RELATION_IN; diff --git a/src/common/src/tglobal.c b/src/common/src/tglobal.c index 0f1fe5e2b6761629509a82b29fd3e742341c6e90..6e73227233591fa076893174b65a774f229ca4e5 100644 --- a/src/common/src/tglobal.c +++ b/src/common/src/tglobal.c @@ -85,6 +85,8 @@ int32_t tsCompressColData = -1; // client int32_t tsMaxSQLStringLen = TSDB_MAX_ALLOWED_SQL_LEN; int32_t tsMaxWildCardsLen = TSDB_PATTERN_STRING_DEFAULT_LEN; +int32_t tsMaxRegexStringLen = TSDB_REGEX_STRING_DEFAULT_LEN; + int8_t tsTscEnableRecordSql = 0; // the maximum number of results for projection query on super table that are returned from diff --git a/src/inc/taosdef.h b/src/inc/taosdef.h index 44b3a2cf0d08d550e037113ac86abde9c79b176e..b4d60aeba5b45b84835c7a6e345c8594ee221a03 100644 --- a/src/inc/taosdef.h +++ b/src/inc/taosdef.h @@ -164,6 +164,8 @@ do { \ #define TSDB_RELATION_OR 12 #define TSDB_RELATION_NOT 13 +#define TSDB_RELATION_MATCH 14 + #define TSDB_BINARY_OP_ADD 30 #define TSDB_BINARY_OP_SUBTRACT 31 #define TSDB_BINARY_OP_MULTIPLY 32 diff --git a/src/inc/ttokendef.h b/src/inc/ttokendef.h index 3d35a51006b9742528fc07fb2ec91e9cd6fa38db..501c7a4c699c94091c4c83b2d8e8c41afcfc8ab7 100644 --- a/src/inc/ttokendef.h +++ b/src/inc/ttokendef.h @@ -37,160 +37,160 @@ #define TK_NOTNULL 19 #define TK_IS 20 #define TK_LIKE 21 -#define TK_GLOB 22 -#define TK_BETWEEN 23 -#define TK_IN 24 -#define TK_GT 25 -#define TK_GE 26 -#define TK_LT 27 -#define TK_LE 28 -#define TK_BITAND 29 -#define TK_BITOR 30 -#define TK_LSHIFT 31 -#define TK_RSHIFT 32 -#define TK_PLUS 33 -#define TK_MINUS 34 -#define TK_DIVIDE 35 -#define TK_TIMES 36 -#define TK_STAR 37 -#define TK_SLASH 38 -#define TK_REM 39 -#define TK_CONCAT 40 -#define TK_UMINUS 41 -#define TK_UPLUS 42 -#define TK_BITNOT 43 -#define TK_SHOW 44 -#define TK_DATABASES 45 -#define TK_TOPICS 46 -#define TK_FUNCTIONS 47 -#define TK_MNODES 48 -#define TK_DNODES 49 -#define TK_ACCOUNTS 50 -#define TK_USERS 51 -#define TK_MODULES 52 -#define TK_QUERIES 53 -#define TK_CONNECTIONS 54 -#define TK_STREAMS 55 -#define TK_VARIABLES 56 -#define TK_SCORES 57 -#define TK_GRANTS 58 -#define TK_VNODES 59 -#define TK_DOT 60 -#define TK_CREATE 61 -#define TK_TABLE 62 -#define TK_STABLE 63 -#define TK_DATABASE 64 -#define TK_TABLES 65 -#define TK_STABLES 66 -#define TK_VGROUPS 67 -#define TK_DROP 68 -#define TK_TOPIC 69 -#define TK_FUNCTION 70 -#define TK_DNODE 71 -#define TK_USER 72 -#define TK_ACCOUNT 73 -#define TK_USE 74 -#define TK_DESCRIBE 75 -#define TK_DESC 76 -#define TK_ALTER 77 -#define TK_PASS 78 -#define TK_PRIVILEGE 79 -#define TK_LOCAL 80 -#define TK_COMPACT 81 -#define TK_LP 82 -#define TK_RP 83 -#define TK_IF 84 -#define TK_EXISTS 85 -#define TK_AS 86 -#define TK_OUTPUTTYPE 87 -#define TK_AGGREGATE 88 -#define TK_BUFSIZE 89 -#define TK_PPS 90 -#define TK_TSERIES 91 -#define TK_DBS 92 -#define TK_STORAGE 93 -#define TK_QTIME 94 -#define TK_CONNS 95 -#define TK_STATE 96 -#define TK_COMMA 97 -#define TK_KEEP 98 -#define TK_CACHE 99 -#define TK_REPLICA 100 -#define TK_QUORUM 101 -#define TK_DAYS 102 -#define TK_MINROWS 103 -#define TK_MAXROWS 104 -#define TK_BLOCKS 105 -#define TK_CTIME 106 -#define TK_WAL 107 -#define TK_FSYNC 108 -#define TK_COMP 109 -#define TK_PRECISION 110 -#define TK_UPDATE 111 -#define TK_CACHELAST 112 -#define TK_PARTITIONS 113 -#define TK_UNSIGNED 114 -#define TK_TAGS 115 -#define TK_USING 116 -#define TK_NULL 117 -#define TK_NOW 118 -#define TK_SELECT 119 -#define TK_UNION 120 -#define TK_ALL 121 -#define TK_DISTINCT 122 -#define TK_FROM 123 -#define TK_VARIABLE 124 -#define TK_INTERVAL 125 -#define TK_EVERY 126 -#define TK_SESSION 127 -#define TK_STATE_WINDOW 128 -#define TK_FILL 129 -#define TK_SLIDING 130 -#define TK_ORDER 131 -#define TK_BY 132 -#define TK_ASC 133 -#define TK_GROUP 134 -#define TK_HAVING 135 -#define TK_LIMIT 136 -#define TK_OFFSET 137 -#define TK_SLIMIT 138 -#define TK_SOFFSET 139 -#define TK_WHERE 140 -#define TK_RESET 141 -#define TK_QUERY 142 -#define TK_SYNCDB 143 -#define TK_ADD 144 -#define TK_COLUMN 145 -#define TK_MODIFY 146 -#define TK_TAG 147 -#define TK_CHANGE 148 -#define TK_SET 149 -#define TK_KILL 150 -#define TK_CONNECTION 151 -#define TK_STREAM 152 -#define TK_COLON 153 -#define TK_ABORT 154 -#define TK_AFTER 155 -#define TK_ATTACH 156 -#define TK_BEFORE 157 -#define TK_BEGIN 158 -#define TK_CASCADE 159 -#define TK_CLUSTER 160 -#define TK_CONFLICT 161 -#define TK_COPY 162 -#define TK_DEFERRED 163 -#define TK_DELIMITERS 164 -#define TK_DETACH 165 -#define TK_EACH 166 -#define TK_END 167 -#define TK_EXPLAIN 168 -#define TK_FAIL 169 -#define TK_FOR 170 -#define TK_IGNORE 171 -#define TK_IMMEDIATE 172 -#define TK_INITIALLY 173 -#define TK_INSTEAD 174 -#define TK_MATCH 175 +#define TK_MATCH 22 +#define TK_GLOB 23 +#define TK_BETWEEN 24 +#define TK_IN 25 +#define TK_GT 26 +#define TK_GE 27 +#define TK_LT 28 +#define TK_LE 29 +#define TK_BITAND 30 +#define TK_BITOR 31 +#define TK_LSHIFT 32 +#define TK_RSHIFT 33 +#define TK_PLUS 34 +#define TK_MINUS 35 +#define TK_DIVIDE 36 +#define TK_TIMES 37 +#define TK_STAR 38 +#define TK_SLASH 39 +#define TK_REM 40 +#define TK_CONCAT 41 +#define TK_UMINUS 42 +#define TK_UPLUS 43 +#define TK_BITNOT 44 +#define TK_SHOW 45 +#define TK_DATABASES 46 +#define TK_TOPICS 47 +#define TK_FUNCTIONS 48 +#define TK_MNODES 49 +#define TK_DNODES 50 +#define TK_ACCOUNTS 51 +#define TK_USERS 52 +#define TK_MODULES 53 +#define TK_QUERIES 54 +#define TK_CONNECTIONS 55 +#define TK_STREAMS 56 +#define TK_VARIABLES 57 +#define TK_SCORES 58 +#define TK_GRANTS 59 +#define TK_VNODES 60 +#define TK_DOT 61 +#define TK_CREATE 62 +#define TK_TABLE 63 +#define TK_STABLE 64 +#define TK_DATABASE 65 +#define TK_TABLES 66 +#define TK_STABLES 67 +#define TK_VGROUPS 68 +#define TK_DROP 69 +#define TK_TOPIC 70 +#define TK_FUNCTION 71 +#define TK_DNODE 72 +#define TK_USER 73 +#define TK_ACCOUNT 74 +#define TK_USE 75 +#define TK_DESCRIBE 76 +#define TK_DESC 77 +#define TK_ALTER 78 +#define TK_PASS 79 +#define TK_PRIVILEGE 80 +#define TK_LOCAL 81 +#define TK_COMPACT 82 +#define TK_LP 83 +#define TK_RP 84 +#define TK_IF 85 +#define TK_EXISTS 86 +#define TK_AS 87 +#define TK_OUTPUTTYPE 88 +#define TK_AGGREGATE 89 +#define TK_BUFSIZE 90 +#define TK_PPS 91 +#define TK_TSERIES 92 +#define TK_DBS 93 +#define TK_STORAGE 94 +#define TK_QTIME 95 +#define TK_CONNS 96 +#define TK_STATE 97 +#define TK_COMMA 98 +#define TK_KEEP 99 +#define TK_CACHE 100 +#define TK_REPLICA 101 +#define TK_QUORUM 102 +#define TK_DAYS 103 +#define TK_MINROWS 104 +#define TK_MAXROWS 105 +#define TK_BLOCKS 106 +#define TK_CTIME 107 +#define TK_WAL 108 +#define TK_FSYNC 109 +#define TK_COMP 110 +#define TK_PRECISION 111 +#define TK_UPDATE 112 +#define TK_CACHELAST 113 +#define TK_PARTITIONS 114 +#define TK_UNSIGNED 115 +#define TK_TAGS 116 +#define TK_USING 117 +#define TK_NULL 118 +#define TK_NOW 119 +#define TK_SELECT 120 +#define TK_UNION 121 +#define TK_ALL 122 +#define TK_DISTINCT 123 +#define TK_FROM 124 +#define TK_VARIABLE 125 +#define TK_INTERVAL 126 +#define TK_EVERY 127 +#define TK_SESSION 128 +#define TK_STATE_WINDOW 129 +#define TK_FILL 130 +#define TK_SLIDING 131 +#define TK_ORDER 132 +#define TK_BY 133 +#define TK_ASC 134 +#define TK_GROUP 135 +#define TK_HAVING 136 +#define TK_LIMIT 137 +#define TK_OFFSET 138 +#define TK_SLIMIT 139 +#define TK_SOFFSET 140 +#define TK_WHERE 141 +#define TK_RESET 142 +#define TK_QUERY 143 +#define TK_SYNCDB 144 +#define TK_ADD 145 +#define TK_COLUMN 146 +#define TK_MODIFY 147 +#define TK_TAG 148 +#define TK_CHANGE 149 +#define TK_SET 150 +#define TK_KILL 151 +#define TK_CONNECTION 152 +#define TK_STREAM 153 +#define TK_COLON 154 +#define TK_ABORT 155 +#define TK_AFTER 156 +#define TK_ATTACH 157 +#define TK_BEFORE 158 +#define TK_BEGIN 159 +#define TK_CASCADE 160 +#define TK_CLUSTER 161 +#define TK_CONFLICT 162 +#define TK_COPY 163 +#define TK_DEFERRED 164 +#define TK_DELIMITERS 165 +#define TK_DETACH 166 +#define TK_EACH 167 +#define TK_END 168 +#define TK_EXPLAIN 169 +#define TK_FAIL 170 +#define TK_FOR 171 +#define TK_IGNORE 172 +#define TK_IMMEDIATE 173 +#define TK_INITIALLY 174 +#define TK_INSTEAD 175 #define TK_KEY 176 #define TK_OF 177 #define TK_RAISE 178 diff --git a/src/query/inc/sql.y b/src/query/inc/sql.y index 8466b7262ab43e49496b078dd3ca25985fe6605a..d72bcacddcdfe1c9e1a59eff3f94b474a4e4839e 100644 --- a/src/query/inc/sql.y +++ b/src/query/inc/sql.y @@ -11,7 +11,7 @@ %left OR. %left AND. %right NOT. -%left EQ NE ISNULL NOTNULL IS LIKE GLOB BETWEEN IN. +%left EQ NE ISNULL NOTNULL IS LIKE MATCH GLOB BETWEEN IN. %left GT GE LT LE. %left BITAND BITOR LSHIFT RSHIFT. %left PLUS MINUS. @@ -751,6 +751,9 @@ expr(A) ::= expr(X) REM expr(Y). {A = tSqlExprCreate(X, Y, TK_REM); } // like expression expr(A) ::= expr(X) LIKE expr(Y). {A = tSqlExprCreate(X, Y, TK_LIKE); } +// match expression +expr(A) ::= expr(X) MATCH expr(Y). {A = tSqlExprCreate(X, Y, TK_MATCH); } + //in expression expr(A) ::= expr(X) IN LP exprlist(Y) RP. {A = tSqlExprCreate(X, (tSqlExpr*)Y, TK_IN); } diff --git a/src/query/src/qFilter.c b/src/query/src/qFilter.c index 72f8376af6d5b7d25ba154a95e034be4eb0e6f66..a6988d7adc403cd518e6fce91899a515305ab5c0 100644 --- a/src/query/src/qFilter.c +++ b/src/query/src/qFilter.c @@ -28,6 +28,7 @@ OptrStr gOptrStr[] = { {TSDB_RELATION_GREATER_EQUAL, ">="}, {TSDB_RELATION_NOT_EQUAL, "!="}, {TSDB_RELATION_LIKE, "like"}, + {TSDB_RELATION_MATCH, "match"}, {TSDB_RELATION_ISNULL, "is null"}, {TSDB_RELATION_NOTNULL, "not null"}, {TSDB_RELATION_IN, "in"}, @@ -156,7 +157,7 @@ int8_t filterGetRangeCompFuncFromOptrs(uint8_t optr, uint8_t optr2) { __compar_fn_t gDataCompare[] = {compareInt32Val, compareInt8Val, compareInt16Val, compareInt64Val, compareFloatVal, compareDoubleVal, compareLenPrefixedStr, compareStrPatternComp, compareFindItemInSet, compareWStrPatternComp, compareLenPrefixedWStr, compareUint8Val, compareUint16Val, compareUint32Val, compareUint64Val, - setCompareBytes1, setCompareBytes2, setCompareBytes4, setCompareBytes8 + setCompareBytes1, setCompareBytes2, setCompareBytes4, setCompareBytes8, compareStrRegexComp, }; int8_t filterGetCompFuncIdx(int32_t type, int32_t optr) { @@ -195,7 +196,9 @@ int8_t filterGetCompFuncIdx(int32_t type, int32_t optr) { case TSDB_DATA_TYPE_FLOAT: comparFn = 4; break; case TSDB_DATA_TYPE_DOUBLE: comparFn = 5; break; case TSDB_DATA_TYPE_BINARY: { - if (optr == TSDB_RELATION_LIKE) { /* wildcard query using like operator */ + if (optr == TSDB_RELATION_MATCH) { + comparFn = 19; + } else if (optr == TSDB_RELATION_LIKE) { /* wildcard query using like operator */ comparFn = 7; } else if (optr == TSDB_RELATION_IN) { comparFn = 8; @@ -207,7 +210,9 @@ int8_t filterGetCompFuncIdx(int32_t type, int32_t optr) { } case TSDB_DATA_TYPE_NCHAR: { - if (optr == TSDB_RELATION_LIKE) { + if (optr == TSDB_RELATION_MATCH) { + comparFn = 19; + } else if (optr == TSDB_RELATION_LIKE) { comparFn = 9; } else if (optr == TSDB_RELATION_IN) { comparFn = 8; @@ -1871,6 +1876,9 @@ bool filterDoCompare(__compar_fn_t func, uint8_t optr, void *left, void *right) case TSDB_RELATION_LIKE: { return ret == 0; } + case TSDB_RELATION_MATCH: { + return ret == 0; + } case TSDB_RELATION_IN: { return ret == 1; } @@ -2641,7 +2649,7 @@ int32_t filterRmUnitByRange(SFilterInfo *info, SDataStatis *pDataStatis, int32_t } if (cunit->optr == TSDB_RELATION_ISNULL || cunit->optr == TSDB_RELATION_NOTNULL - || cunit->optr == TSDB_RELATION_IN || cunit->optr == TSDB_RELATION_LIKE + || cunit->optr == TSDB_RELATION_IN || cunit->optr == TSDB_RELATION_LIKE || cunit->optr == TSDB_RELATION_MATCH || cunit->optr == TSDB_RELATION_NOT_EQUAL) { continue; } diff --git a/src/query/src/sql.c b/src/query/src/sql.c index 16bb4e49a80fa7a263b7c6e0446cb4aa328343bb..f66c2968a6cebf805579dc3fe4c123331f9ecfc8 100644 --- a/src/query/src/sql.c +++ b/src/query/src/sql.c @@ -23,7 +23,9 @@ ** input grammar file: */ #include +#include /************ Begin %include sections from the grammar ************************/ +#line 23 "sql.y" #include #include @@ -36,6 +38,7 @@ #include "ttokendef.h" #include "tutil.h" #include "tvariant.h" +#line 42 "sql.c" /**************** End of %include directives **********************************/ /* These constants specify the various numeric values for terminal symbols ** in a format understandable to "makeheaders". This section is blank unless @@ -76,8 +79,10 @@ ** zero the stack is dynamically sized using realloc() ** ParseARG_SDECL A static variable declaration for the %extra_argument ** ParseARG_PDECL A parameter declaration for the %extra_argument +** ParseARG_PARAM Code to pass %extra_argument as a subroutine parameter ** ParseARG_STORE Code to store %extra_argument into yypParser ** ParseARG_FETCH Code to extract %extra_argument from yypParser +** ParseCTX_* As ParseARG_ except for %extra_context ** YYERRORSYMBOL is the code number of the error symbol. If not ** defined, then do no error processing. ** YYNSTATE the combined number of states. @@ -97,50 +102,58 @@ #endif /************* Begin control #defines *****************************************/ #define YYCODETYPE unsigned short int -#define YYNOCODE 279 +#define YYNOCODE 277 #define YYACTIONTYPE unsigned short int #define ParseTOKENTYPE SStrToken typedef union { int yyinit; ParseTOKENTYPE yy0; - SRelationInfo* yy8; - SWindowStateVal yy40; - SSqlNode* yy56; - SCreateDbInfo yy90; - int yy96; - int32_t yy104; - SSessionWindowVal yy147; - SCreatedTableInfo yy152; - SLimitVal yy166; - SCreateAcctInfo yy171; - TAOS_FIELD yy183; - int64_t yy325; - SIntervalVal yy400; - SArray* yy421; - tVariant yy430; - SCreateTableSql* yy438; - tSqlExpr* yy439; + SCreateTableSql* yy56; + int yy70; + SCreatedTableInfo yy84; + SRelationInfo* yy114; + int32_t yy202; + SIntervalVal yy222; + SSqlNode* yy224; + SCreateDbInfo yy246; + tSqlExpr* yy260; + TAOS_FIELD yy363; + SSessionWindowVal yy365; + SCreateAcctInfo yy377; + int64_t yy387; + SArray* yy403; + SLimitVal yy404; + tVariant yy488; + SWindowStateVal yy544; } YYMINORTYPE; #ifndef YYSTACKDEPTH #define YYSTACKDEPTH 100 #endif #define ParseARG_SDECL SSqlInfo* pInfo; #define ParseARG_PDECL ,SSqlInfo* pInfo -#define ParseARG_FETCH SSqlInfo* pInfo = yypParser->pInfo -#define ParseARG_STORE yypParser->pInfo = pInfo +#define ParseARG_PARAM ,pInfo +#define ParseARG_FETCH SSqlInfo* pInfo=yypParser->pInfo; +#define ParseARG_STORE yypParser->pInfo=pInfo; +#define ParseCTX_SDECL +#define ParseCTX_PDECL +#define ParseCTX_PARAM +#define ParseCTX_FETCH +#define ParseCTX_STORE #define YYFALLBACK 1 -#define YYNSTATE 364 -#define YYNRULE 292 +#define YYNSTATE 366 +#define YYNRULE 293 +#define YYNRULE_WITH_ACTION 293 #define YYNTOKEN 196 -#define YY_MAX_SHIFT 363 -#define YY_MIN_SHIFTREDUCE 572 -#define YY_MAX_SHIFTREDUCE 863 -#define YY_ERROR_ACTION 864 -#define YY_ACCEPT_ACTION 865 -#define YY_NO_ACTION 866 -#define YY_MIN_REDUCE 867 -#define YY_MAX_REDUCE 1158 +#define YY_MAX_SHIFT 365 +#define YY_MIN_SHIFTREDUCE 574 +#define YY_MAX_SHIFTREDUCE 866 +#define YY_ERROR_ACTION 867 +#define YY_ACCEPT_ACTION 868 +#define YY_NO_ACTION 869 +#define YY_MIN_REDUCE 870 +#define YY_MAX_REDUCE 1162 /************* End control #defines *******************************************/ +#define YY_NLOOKAHEAD ((int)(sizeof(yy_lookahead)/sizeof(yy_lookahead[0]))) /* Define the yytestcase() macro to be a no-op if is not already defined ** otherwise. @@ -205,289 +218,291 @@ typedef union { ** yy_default[] Default action for each state. ** *********** Begin parsing tables **********************************************/ -#define YY_ACTTAB_COUNT (759) +#define YY_ACTTAB_COUNT (766) static const YYACTIONTYPE yy_action[] = { - /* 0 */ 171, 624, 248, 624, 624, 23, 362, 231, 162, 625, - /* 10 */ 247, 625, 625, 57, 58, 206, 61, 62, 282, 1045, - /* 20 */ 251, 51, 252, 60, 320, 65, 63, 66, 64, 993, - /* 30 */ 209, 991, 992, 56, 55, 162, 994, 54, 53, 52, - /* 40 */ 995, 1134, 996, 997, 155, 660, 79, 573, 574, 575, - /* 50 */ 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, - /* 60 */ 586, 153, 209, 232, 57, 58, 207, 61, 62, 1009, - /* 70 */ 209, 251, 51, 1135, 60, 320, 65, 63, 66, 64, - /* 80 */ 1008, 1135, 209, 1083, 56, 55, 80, 1042, 54, 53, - /* 90 */ 52, 57, 58, 1135, 61, 62, 237, 318, 251, 51, - /* 100 */ 1023, 60, 320, 65, 63, 66, 64, 708, 294, 86, - /* 110 */ 91, 56, 55, 280, 279, 54, 53, 52, 57, 59, - /* 120 */ 243, 61, 62, 350, 1023, 251, 51, 95, 60, 320, - /* 130 */ 65, 63, 66, 64, 802, 340, 339, 245, 56, 55, - /* 140 */ 213, 1023, 54, 53, 52, 58, 45, 61, 62, 767, - /* 150 */ 768, 251, 51, 318, 60, 320, 65, 63, 66, 64, - /* 160 */ 1006, 1007, 35, 1010, 56, 55, 865, 363, 54, 53, - /* 170 */ 52, 44, 316, 357, 356, 315, 314, 313, 355, 312, - /* 180 */ 311, 310, 354, 309, 353, 352, 985, 973, 974, 975, - /* 190 */ 976, 977, 978, 979, 980, 981, 982, 983, 984, 986, - /* 200 */ 987, 61, 62, 24, 1131, 251, 51, 624, 60, 320, - /* 210 */ 65, 63, 66, 64, 162, 625, 1036, 98, 56, 55, - /* 220 */ 212, 1036, 54, 53, 52, 56, 55, 218, 38, 54, - /* 230 */ 53, 52, 273, 137, 136, 135, 217, 234, 250, 817, - /* 240 */ 325, 86, 806, 1017, 809, 16, 812, 15, 250, 817, - /* 250 */ 123, 265, 806, 1011, 809, 748, 812, 5, 41, 180, - /* 260 */ 269, 268, 350, 1130, 179, 104, 109, 100, 108, 916, - /* 270 */ 229, 230, 1129, 233, 321, 227, 190, 1020, 45, 1036, - /* 280 */ 229, 230, 38, 305, 65, 63, 66, 64, 29, 1084, - /* 290 */ 244, 292, 56, 55, 260, 235, 54, 53, 52, 254, - /* 300 */ 272, 732, 78, 162, 729, 176, 730, 259, 731, 225, - /* 310 */ 260, 54, 53, 52, 228, 200, 198, 196, 808, 67, - /* 320 */ 811, 177, 195, 141, 140, 139, 138, 241, 807, 67, - /* 330 */ 810, 1020, 256, 257, 121, 115, 126, 152, 150, 149, - /* 340 */ 752, 125, 260, 131, 134, 124, 38, 38, 38, 361, - /* 350 */ 360, 146, 128, 1021, 818, 813, 44, 38, 357, 356, - /* 360 */ 38, 814, 38, 355, 818, 813, 1022, 354, 93, 353, - /* 370 */ 352, 814, 784, 38, 38, 255, 38, 253, 92, 328, - /* 380 */ 327, 38, 81, 261, 926, 258, 322, 335, 334, 745, - /* 390 */ 14, 190, 242, 329, 94, 1019, 1020, 1020, 71, 358, - /* 400 */ 954, 917, 330, 3, 191, 331, 1020, 332, 190, 1020, - /* 410 */ 34, 1020, 1, 178, 274, 9, 733, 734, 336, 337, - /* 420 */ 83, 338, 1020, 1020, 97, 1020, 342, 84, 39, 783, - /* 430 */ 1020, 764, 774, 74, 775, 718, 297, 815, 720, 299, - /* 440 */ 72, 719, 838, 300, 819, 157, 68, 816, 26, 39, - /* 450 */ 39, 804, 68, 96, 249, 68, 25, 276, 25, 114, - /* 460 */ 623, 113, 77, 18, 276, 17, 737, 735, 738, 736, - /* 470 */ 20, 210, 19, 75, 25, 120, 6, 119, 22, 211, - /* 480 */ 21, 133, 132, 214, 1154, 208, 215, 805, 821, 216, - /* 490 */ 220, 221, 222, 219, 707, 205, 1094, 1146, 48, 1093, - /* 500 */ 239, 1090, 1089, 240, 341, 270, 154, 1076, 1044, 1055, - /* 510 */ 1052, 1053, 151, 1037, 277, 1057, 156, 1075, 161, 288, - /* 520 */ 172, 173, 275, 1018, 281, 1016, 174, 168, 175, 165, - /* 530 */ 1034, 931, 763, 302, 303, 169, 167, 304, 307, 308, - /* 540 */ 46, 203, 42, 236, 319, 925, 326, 283, 285, 1153, - /* 550 */ 76, 73, 163, 111, 295, 164, 1152, 50, 293, 1149, - /* 560 */ 166, 181, 333, 1145, 117, 1144, 1141, 182, 951, 43, - /* 570 */ 291, 40, 47, 204, 913, 127, 289, 911, 129, 284, - /* 580 */ 130, 909, 908, 262, 193, 194, 905, 904, 903, 902, - /* 590 */ 901, 900, 899, 287, 197, 199, 896, 894, 892, 890, - /* 600 */ 201, 887, 306, 202, 883, 49, 351, 82, 87, 343, - /* 610 */ 286, 1077, 122, 344, 345, 346, 226, 246, 301, 347, - /* 620 */ 348, 349, 359, 863, 263, 264, 862, 223, 105, 930, - /* 630 */ 929, 224, 106, 266, 267, 861, 844, 271, 907, 843, - /* 640 */ 906, 296, 142, 276, 143, 185, 184, 952, 183, 186, - /* 650 */ 187, 189, 188, 144, 898, 897, 953, 145, 989, 889, - /* 660 */ 888, 10, 85, 740, 33, 170, 4, 30, 2, 278, - /* 670 */ 88, 999, 765, 158, 160, 776, 159, 238, 770, 89, - /* 680 */ 31, 772, 90, 290, 11, 32, 12, 13, 27, 298, - /* 690 */ 28, 97, 99, 102, 36, 101, 638, 37, 103, 673, - /* 700 */ 671, 670, 669, 667, 666, 665, 662, 628, 317, 107, - /* 710 */ 7, 323, 324, 822, 110, 820, 8, 112, 69, 70, - /* 720 */ 710, 39, 709, 116, 706, 118, 654, 652, 644, 650, - /* 730 */ 646, 648, 642, 640, 676, 675, 674, 672, 668, 664, - /* 740 */ 663, 192, 626, 590, 867, 866, 866, 866, 866, 866, - /* 750 */ 866, 866, 866, 866, 866, 866, 866, 147, 148, + /* 0 */ 1020, 626, 239, 626, 364, 233, 1026, 1039, 210, 627, + /* 10 */ 662, 627, 38, 58, 59, 38, 62, 63, 1048, 1138, + /* 20 */ 253, 52, 51, 236, 61, 322, 66, 64, 67, 65, + /* 30 */ 1039, 810, 245, 813, 57, 56, 1026, 23, 55, 54, + /* 40 */ 53, 58, 59, 626, 62, 63, 237, 246, 253, 52, + /* 50 */ 51, 627, 61, 322, 66, 64, 67, 65, 868, 365, + /* 60 */ 235, 1022, 57, 56, 1023, 250, 55, 54, 53, 988, + /* 70 */ 976, 977, 978, 979, 980, 981, 982, 983, 984, 985, + /* 80 */ 986, 987, 989, 990, 156, 29, 1045, 81, 575, 576, + /* 90 */ 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, + /* 100 */ 587, 588, 154, 163, 234, 172, 58, 59, 1039, 62, + /* 110 */ 63, 1012, 804, 253, 52, 51, 72, 61, 322, 66, + /* 120 */ 64, 67, 65, 284, 275, 210, 352, 57, 56, 262, + /* 130 */ 163, 55, 54, 53, 58, 60, 1139, 62, 63, 75, + /* 140 */ 177, 253, 52, 51, 626, 61, 322, 66, 64, 67, + /* 150 */ 65, 817, 627, 282, 281, 57, 56, 267, 73, 55, + /* 160 */ 54, 53, 59, 163, 62, 63, 271, 270, 253, 52, + /* 170 */ 51, 320, 61, 322, 66, 64, 67, 65, 1087, 76, + /* 180 */ 294, 247, 57, 56, 207, 1026, 55, 54, 53, 62, + /* 190 */ 63, 38, 249, 253, 52, 51, 320, 61, 322, 66, + /* 200 */ 64, 67, 65, 296, 710, 92, 87, 57, 56, 769, + /* 210 */ 770, 55, 54, 53, 44, 318, 359, 358, 317, 316, + /* 220 */ 315, 357, 314, 313, 312, 356, 311, 355, 354, 24, + /* 230 */ 163, 252, 819, 342, 341, 808, 243, 811, 1086, 814, + /* 240 */ 1023, 252, 819, 45, 208, 808, 213, 811, 254, 814, + /* 250 */ 57, 56, 210, 220, 55, 54, 53, 96, 262, 138, + /* 260 */ 137, 136, 219, 1139, 231, 232, 327, 87, 323, 178, + /* 270 */ 99, 5, 41, 181, 231, 232, 360, 957, 180, 105, + /* 280 */ 110, 101, 109, 363, 362, 147, 66, 64, 67, 65, + /* 290 */ 1009, 1010, 35, 1013, 57, 56, 919, 307, 55, 54, + /* 300 */ 53, 256, 929, 191, 45, 93, 1014, 734, 210, 191, + /* 310 */ 731, 38, 732, 68, 733, 261, 262, 214, 44, 1139, + /* 320 */ 359, 358, 124, 68, 215, 357, 274, 1024, 79, 356, + /* 330 */ 1134, 355, 354, 1133, 352, 227, 122, 116, 127, 258, + /* 340 */ 259, 750, 809, 126, 812, 132, 135, 125, 820, 815, + /* 350 */ 920, 1025, 38, 38, 129, 816, 244, 191, 820, 815, + /* 360 */ 1023, 201, 199, 197, 38, 816, 80, 38, 196, 142, + /* 370 */ 141, 140, 139, 996, 14, 994, 995, 257, 95, 255, + /* 380 */ 997, 330, 329, 786, 998, 38, 999, 1000, 38, 324, + /* 390 */ 38, 263, 84, 260, 85, 337, 336, 331, 332, 38, + /* 400 */ 1011, 1023, 1023, 55, 54, 53, 94, 1132, 98, 333, + /* 410 */ 1, 179, 334, 1023, 3, 192, 1023, 153, 151, 150, + /* 420 */ 82, 747, 276, 735, 736, 34, 754, 766, 776, 278, + /* 430 */ 338, 278, 777, 339, 1023, 340, 39, 1023, 806, 1023, + /* 440 */ 785, 158, 69, 720, 344, 299, 26, 9, 1023, 251, + /* 450 */ 722, 301, 721, 841, 821, 625, 78, 39, 302, 39, + /* 460 */ 229, 16, 818, 15, 69, 97, 69, 25, 25, 25, + /* 470 */ 115, 6, 114, 1158, 18, 807, 17, 739, 737, 740, + /* 480 */ 738, 20, 121, 19, 120, 22, 230, 21, 709, 134, + /* 490 */ 133, 211, 823, 212, 216, 1150, 209, 1097, 217, 218, + /* 500 */ 222, 223, 224, 221, 206, 1096, 241, 1093, 1092, 242, + /* 510 */ 343, 272, 155, 48, 1047, 1058, 1055, 1056, 1060, 157, + /* 520 */ 1040, 279, 1079, 162, 290, 1078, 173, 1021, 174, 1019, + /* 530 */ 175, 176, 934, 283, 238, 152, 167, 165, 304, 305, + /* 540 */ 765, 1037, 164, 306, 309, 310, 285, 46, 204, 42, + /* 550 */ 321, 928, 287, 328, 1157, 112, 1156, 77, 1153, 297, + /* 560 */ 182, 335, 1149, 74, 50, 166, 295, 168, 293, 291, + /* 570 */ 118, 289, 286, 1148, 1145, 183, 954, 43, 40, 47, + /* 580 */ 205, 916, 128, 914, 130, 131, 49, 912, 911, 264, + /* 590 */ 194, 195, 908, 907, 906, 905, 904, 903, 902, 198, + /* 600 */ 200, 899, 897, 895, 893, 202, 890, 203, 308, 886, + /* 610 */ 353, 123, 277, 83, 88, 345, 288, 1080, 346, 347, + /* 620 */ 348, 349, 228, 350, 351, 248, 303, 361, 866, 265, + /* 630 */ 266, 865, 269, 225, 226, 268, 864, 847, 846, 933, + /* 640 */ 932, 106, 107, 273, 278, 10, 298, 742, 280, 86, + /* 650 */ 30, 910, 909, 89, 767, 143, 159, 144, 955, 186, + /* 660 */ 184, 185, 188, 187, 189, 190, 901, 2, 145, 992, + /* 670 */ 900, 892, 171, 169, 33, 170, 956, 146, 891, 4, + /* 680 */ 778, 160, 161, 772, 90, 240, 774, 1002, 91, 292, + /* 690 */ 31, 11, 32, 12, 13, 27, 300, 28, 98, 100, + /* 700 */ 103, 36, 102, 640, 37, 104, 675, 673, 672, 671, + /* 710 */ 669, 668, 667, 664, 630, 319, 108, 7, 824, 822, + /* 720 */ 325, 8, 326, 111, 113, 70, 71, 117, 39, 712, + /* 730 */ 119, 711, 708, 656, 654, 646, 652, 648, 650, 644, + /* 740 */ 642, 678, 677, 676, 674, 670, 666, 665, 193, 628, + /* 750 */ 592, 870, 869, 869, 869, 869, 869, 869, 869, 869, + /* 760 */ 869, 869, 869, 869, 148, 149, }; static const YYCODETYPE yy_lookahead[] = { - /* 0 */ 253, 1, 206, 1, 1, 266, 199, 200, 199, 9, - /* 10 */ 206, 9, 9, 13, 14, 266, 16, 17, 271, 199, - /* 20 */ 20, 21, 206, 23, 24, 25, 26, 27, 28, 223, - /* 30 */ 266, 225, 226, 33, 34, 199, 230, 37, 38, 39, - /* 40 */ 234, 277, 236, 237, 199, 5, 207, 45, 46, 47, - /* 50 */ 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - /* 60 */ 58, 59, 266, 61, 13, 14, 266, 16, 17, 0, - /* 70 */ 266, 20, 21, 277, 23, 24, 25, 26, 27, 28, - /* 80 */ 241, 277, 266, 274, 33, 34, 86, 267, 37, 38, - /* 90 */ 39, 13, 14, 277, 16, 17, 245, 84, 20, 21, - /* 100 */ 249, 23, 24, 25, 26, 27, 28, 5, 272, 82, - /* 110 */ 274, 33, 34, 268, 269, 37, 38, 39, 13, 14, - /* 120 */ 245, 16, 17, 90, 249, 20, 21, 207, 23, 24, - /* 130 */ 25, 26, 27, 28, 83, 33, 34, 245, 33, 34, - /* 140 */ 266, 249, 37, 38, 39, 14, 119, 16, 17, 125, - /* 150 */ 126, 20, 21, 84, 23, 24, 25, 26, 27, 28, - /* 160 */ 240, 241, 242, 243, 33, 34, 197, 198, 37, 38, - /* 170 */ 39, 98, 99, 100, 101, 102, 103, 104, 105, 106, - /* 180 */ 107, 108, 109, 110, 111, 112, 223, 224, 225, 226, - /* 190 */ 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - /* 200 */ 237, 16, 17, 44, 266, 20, 21, 1, 23, 24, - /* 210 */ 25, 26, 27, 28, 199, 9, 247, 207, 33, 34, - /* 220 */ 61, 247, 37, 38, 39, 33, 34, 68, 199, 37, - /* 230 */ 38, 39, 263, 74, 75, 76, 77, 263, 1, 2, - /* 240 */ 81, 82, 5, 199, 7, 145, 9, 147, 1, 2, - /* 250 */ 78, 142, 5, 243, 7, 37, 9, 62, 63, 64, - /* 260 */ 151, 152, 90, 266, 69, 70, 71, 72, 73, 205, - /* 270 */ 33, 34, 266, 244, 37, 266, 212, 248, 119, 247, - /* 280 */ 33, 34, 199, 88, 25, 26, 27, 28, 82, 274, - /* 290 */ 246, 276, 33, 34, 199, 263, 37, 38, 39, 68, - /* 300 */ 141, 2, 143, 199, 5, 210, 7, 68, 9, 150, - /* 310 */ 199, 37, 38, 39, 266, 62, 63, 64, 5, 82, - /* 320 */ 7, 210, 69, 70, 71, 72, 73, 244, 5, 82, - /* 330 */ 7, 248, 33, 34, 62, 63, 64, 62, 63, 64, - /* 340 */ 122, 69, 199, 71, 72, 73, 199, 199, 199, 65, - /* 350 */ 66, 67, 80, 210, 117, 118, 98, 199, 100, 101, - /* 360 */ 199, 124, 199, 105, 117, 118, 249, 109, 250, 111, - /* 370 */ 112, 124, 76, 199, 199, 144, 199, 146, 274, 148, - /* 380 */ 149, 199, 264, 144, 205, 146, 15, 148, 149, 97, - /* 390 */ 82, 212, 244, 244, 86, 248, 248, 248, 97, 221, - /* 400 */ 222, 205, 244, 203, 204, 244, 248, 244, 212, 248, - /* 410 */ 82, 248, 208, 209, 83, 123, 117, 118, 244, 244, - /* 420 */ 83, 244, 248, 248, 116, 248, 244, 83, 97, 133, - /* 430 */ 248, 83, 83, 97, 83, 83, 83, 124, 83, 83, - /* 440 */ 139, 83, 83, 115, 83, 97, 97, 124, 97, 97, - /* 450 */ 97, 1, 97, 97, 60, 97, 97, 120, 97, 145, - /* 460 */ 83, 147, 82, 145, 120, 147, 5, 5, 7, 7, - /* 470 */ 145, 266, 147, 137, 97, 145, 82, 147, 145, 266, - /* 480 */ 147, 78, 79, 266, 249, 266, 266, 37, 117, 266, - /* 490 */ 266, 266, 266, 266, 114, 266, 239, 249, 265, 239, - /* 500 */ 239, 239, 239, 239, 239, 199, 199, 275, 199, 199, - /* 510 */ 199, 199, 60, 247, 247, 199, 199, 275, 199, 199, - /* 520 */ 251, 199, 201, 247, 270, 199, 199, 256, 199, 259, - /* 530 */ 262, 199, 124, 199, 199, 255, 257, 199, 199, 199, - /* 540 */ 199, 199, 199, 270, 199, 199, 199, 270, 270, 199, - /* 550 */ 136, 138, 261, 199, 131, 260, 199, 135, 134, 199, - /* 560 */ 258, 199, 199, 199, 199, 199, 199, 199, 199, 199, - /* 570 */ 129, 199, 199, 199, 199, 199, 128, 199, 199, 130, - /* 580 */ 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, - /* 590 */ 199, 199, 199, 127, 199, 199, 199, 199, 199, 199, - /* 600 */ 199, 199, 89, 199, 199, 140, 113, 201, 201, 95, - /* 610 */ 201, 201, 96, 51, 92, 94, 201, 201, 201, 55, - /* 620 */ 93, 91, 84, 5, 153, 5, 5, 201, 207, 211, - /* 630 */ 211, 201, 207, 153, 5, 5, 100, 142, 201, 99, - /* 640 */ 201, 115, 202, 120, 202, 214, 218, 220, 219, 217, - /* 650 */ 215, 213, 216, 202, 201, 201, 222, 202, 238, 201, - /* 660 */ 201, 82, 121, 83, 252, 254, 203, 82, 208, 97, - /* 670 */ 97, 238, 83, 82, 97, 83, 82, 1, 83, 82, - /* 680 */ 97, 83, 82, 82, 132, 97, 132, 82, 82, 115, - /* 690 */ 82, 116, 78, 70, 87, 86, 5, 87, 86, 9, - /* 700 */ 5, 5, 5, 5, 5, 5, 5, 85, 15, 78, - /* 710 */ 82, 24, 59, 117, 147, 83, 82, 147, 16, 16, - /* 720 */ 5, 97, 5, 147, 83, 147, 5, 5, 5, 5, - /* 730 */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, - /* 740 */ 5, 97, 85, 60, 0, 278, 278, 278, 278, 278, - /* 750 */ 278, 278, 278, 278, 278, 278, 278, 21, 21, 278, - /* 760 */ 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, - /* 770 */ 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, - /* 780 */ 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, - /* 790 */ 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, - /* 800 */ 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, - /* 810 */ 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, - /* 820 */ 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, - /* 830 */ 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, - /* 840 */ 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, - /* 850 */ 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, - /* 860 */ 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, - /* 870 */ 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, - /* 880 */ 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, - /* 890 */ 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, - /* 900 */ 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, - /* 910 */ 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, - /* 920 */ 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, - /* 930 */ 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, - /* 940 */ 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, - /* 950 */ 278, 278, 278, 278, 278, + /* 0 */ 198, 1, 244, 1, 198, 199, 248, 246, 265, 9, + /* 10 */ 5, 9, 198, 13, 14, 198, 16, 17, 198, 276, + /* 20 */ 20, 21, 22, 262, 24, 25, 26, 27, 28, 29, + /* 30 */ 246, 5, 244, 7, 34, 35, 248, 265, 38, 39, + /* 40 */ 40, 13, 14, 1, 16, 17, 262, 245, 20, 21, + /* 50 */ 22, 9, 24, 25, 26, 27, 28, 29, 196, 197, + /* 60 */ 243, 247, 34, 35, 247, 205, 38, 39, 40, 222, + /* 70 */ 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, + /* 80 */ 233, 234, 235, 236, 198, 83, 266, 87, 46, 47, + /* 90 */ 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, + /* 100 */ 58, 59, 60, 198, 62, 252, 13, 14, 246, 16, + /* 110 */ 17, 0, 84, 20, 21, 22, 98, 24, 25, 26, + /* 120 */ 27, 28, 29, 270, 262, 265, 91, 34, 35, 198, + /* 130 */ 198, 38, 39, 40, 13, 14, 276, 16, 17, 98, + /* 140 */ 209, 20, 21, 22, 1, 24, 25, 26, 27, 28, + /* 150 */ 29, 125, 9, 267, 268, 34, 35, 143, 140, 38, + /* 160 */ 39, 40, 14, 198, 16, 17, 152, 153, 20, 21, + /* 170 */ 22, 85, 24, 25, 26, 27, 28, 29, 273, 138, + /* 180 */ 275, 244, 34, 35, 265, 248, 38, 39, 40, 16, + /* 190 */ 17, 198, 205, 20, 21, 22, 85, 24, 25, 26, + /* 200 */ 27, 28, 29, 271, 5, 273, 83, 34, 35, 126, + /* 210 */ 127, 38, 39, 40, 99, 100, 101, 102, 103, 104, + /* 220 */ 105, 106, 107, 108, 109, 110, 111, 112, 113, 45, + /* 230 */ 198, 1, 2, 34, 35, 5, 243, 7, 273, 9, + /* 240 */ 247, 1, 2, 120, 265, 5, 62, 7, 205, 9, + /* 250 */ 34, 35, 265, 69, 38, 39, 40, 206, 198, 75, + /* 260 */ 76, 77, 78, 276, 34, 35, 82, 83, 38, 209, + /* 270 */ 206, 63, 64, 65, 34, 35, 220, 221, 70, 71, + /* 280 */ 72, 73, 74, 66, 67, 68, 26, 27, 28, 29, + /* 290 */ 239, 240, 241, 242, 34, 35, 204, 89, 38, 39, + /* 300 */ 40, 69, 204, 211, 120, 273, 242, 2, 265, 211, + /* 310 */ 5, 198, 7, 83, 9, 69, 198, 265, 99, 276, + /* 320 */ 101, 102, 79, 83, 265, 106, 142, 209, 144, 110, + /* 330 */ 265, 112, 113, 265, 91, 151, 63, 64, 65, 34, + /* 340 */ 35, 38, 5, 70, 7, 72, 73, 74, 118, 119, + /* 350 */ 204, 248, 198, 198, 81, 125, 243, 211, 118, 119, + /* 360 */ 247, 63, 64, 65, 198, 125, 206, 198, 70, 71, + /* 370 */ 72, 73, 74, 222, 83, 224, 225, 145, 87, 147, + /* 380 */ 229, 149, 150, 77, 233, 198, 235, 236, 198, 15, + /* 390 */ 198, 145, 84, 147, 84, 149, 150, 243, 243, 198, + /* 400 */ 240, 247, 247, 38, 39, 40, 249, 265, 117, 243, + /* 410 */ 207, 208, 243, 247, 202, 203, 247, 63, 64, 65, + /* 420 */ 263, 98, 84, 118, 119, 83, 123, 84, 84, 121, + /* 430 */ 243, 121, 84, 243, 247, 243, 98, 247, 1, 247, + /* 440 */ 134, 98, 98, 84, 243, 84, 98, 124, 247, 61, + /* 450 */ 84, 84, 84, 84, 84, 84, 83, 98, 116, 98, + /* 460 */ 265, 146, 125, 148, 98, 98, 98, 98, 98, 98, + /* 470 */ 146, 83, 148, 248, 146, 38, 148, 5, 5, 7, + /* 480 */ 7, 146, 146, 148, 148, 146, 265, 148, 115, 79, + /* 490 */ 80, 265, 118, 265, 265, 248, 265, 238, 265, 265, + /* 500 */ 265, 265, 265, 265, 265, 238, 238, 238, 238, 238, + /* 510 */ 238, 198, 198, 264, 198, 198, 198, 198, 198, 198, + /* 520 */ 246, 246, 274, 198, 198, 274, 250, 246, 198, 198, + /* 530 */ 198, 198, 198, 269, 269, 61, 257, 259, 198, 198, + /* 540 */ 125, 261, 260, 198, 198, 198, 269, 198, 198, 198, + /* 550 */ 198, 198, 269, 198, 198, 198, 198, 137, 198, 132, + /* 560 */ 198, 198, 198, 139, 136, 258, 135, 256, 130, 129, + /* 570 */ 198, 128, 131, 198, 198, 198, 198, 198, 198, 198, + /* 580 */ 198, 198, 198, 198, 198, 198, 141, 198, 198, 198, + /* 590 */ 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, + /* 600 */ 198, 198, 198, 198, 198, 198, 198, 198, 90, 198, + /* 610 */ 114, 97, 200, 200, 200, 96, 200, 200, 52, 93, + /* 620 */ 95, 56, 200, 94, 92, 200, 200, 85, 5, 154, + /* 630 */ 5, 5, 5, 200, 200, 154, 5, 101, 100, 210, + /* 640 */ 210, 206, 206, 143, 121, 83, 116, 84, 98, 122, + /* 650 */ 83, 200, 200, 98, 84, 201, 83, 201, 219, 213, + /* 660 */ 218, 217, 214, 216, 215, 212, 200, 207, 201, 237, + /* 670 */ 200, 200, 253, 255, 251, 254, 221, 201, 200, 202, + /* 680 */ 84, 83, 98, 84, 83, 1, 84, 237, 83, 83, + /* 690 */ 98, 133, 98, 133, 83, 83, 116, 83, 117, 79, + /* 700 */ 71, 88, 87, 5, 88, 87, 9, 5, 5, 5, + /* 710 */ 5, 5, 5, 5, 86, 15, 79, 83, 118, 84, + /* 720 */ 25, 83, 60, 148, 148, 16, 16, 148, 98, 5, + /* 730 */ 148, 5, 84, 5, 5, 5, 5, 5, 5, 5, + /* 740 */ 5, 5, 5, 5, 5, 5, 5, 5, 98, 86, + /* 750 */ 61, 0, 277, 277, 277, 277, 277, 277, 277, 277, + /* 760 */ 277, 277, 277, 277, 21, 21, 277, 277, 277, 277, + /* 770 */ 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, + /* 780 */ 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, + /* 790 */ 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, + /* 800 */ 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, + /* 810 */ 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, + /* 820 */ 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, + /* 830 */ 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, + /* 840 */ 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, + /* 850 */ 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, + /* 860 */ 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, + /* 870 */ 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, + /* 880 */ 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, + /* 890 */ 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, + /* 900 */ 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, + /* 910 */ 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, + /* 920 */ 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, + /* 930 */ 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, + /* 940 */ 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, + /* 950 */ 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, + /* 960 */ 277, 277, }; -#define YY_SHIFT_COUNT (363) +#define YY_SHIFT_COUNT (365) #define YY_SHIFT_MIN (0) -#define YY_SHIFT_MAX (744) +#define YY_SHIFT_MAX (751) static const unsigned short int yy_shift_ofst[] = { - /* 0 */ 159, 73, 73, 258, 258, 13, 237, 247, 247, 206, - /* 10 */ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - /* 20 */ 3, 3, 3, 0, 2, 247, 299, 299, 299, 27, - /* 30 */ 27, 3, 3, 24, 3, 69, 3, 3, 3, 3, - /* 40 */ 172, 13, 33, 33, 40, 759, 759, 759, 247, 247, - /* 50 */ 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, - /* 60 */ 247, 247, 247, 247, 247, 247, 247, 247, 299, 299, - /* 70 */ 299, 102, 102, 102, 102, 102, 102, 102, 3, 3, - /* 80 */ 3, 218, 3, 3, 3, 27, 27, 3, 3, 3, - /* 90 */ 3, 296, 296, 292, 27, 3, 3, 3, 3, 3, - /* 100 */ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - /* 110 */ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - /* 120 */ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - /* 130 */ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - /* 140 */ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - /* 150 */ 3, 3, 3, 3, 452, 452, 452, 408, 408, 408, - /* 160 */ 408, 452, 452, 414, 413, 423, 422, 424, 441, 448, - /* 170 */ 466, 449, 465, 452, 452, 452, 513, 513, 493, 13, - /* 180 */ 13, 452, 452, 516, 514, 562, 522, 521, 564, 527, - /* 190 */ 530, 493, 40, 452, 452, 538, 538, 452, 538, 452, - /* 200 */ 538, 452, 452, 759, 759, 51, 78, 78, 105, 78, - /* 210 */ 131, 185, 195, 259, 259, 259, 259, 272, 253, 192, - /* 220 */ 192, 192, 192, 231, 239, 109, 308, 274, 274, 313, - /* 230 */ 323, 284, 275, 331, 337, 344, 348, 349, 351, 301, - /* 240 */ 336, 352, 353, 355, 356, 358, 328, 359, 361, 450, - /* 250 */ 394, 371, 377, 100, 314, 318, 461, 462, 325, 330, - /* 260 */ 380, 333, 403, 618, 471, 620, 621, 480, 629, 630, - /* 270 */ 536, 540, 495, 523, 526, 579, 541, 580, 585, 572, - /* 280 */ 573, 589, 591, 592, 594, 595, 577, 597, 598, 600, - /* 290 */ 676, 601, 583, 552, 588, 554, 605, 526, 606, 574, - /* 300 */ 608, 575, 614, 607, 609, 623, 691, 610, 612, 690, - /* 310 */ 695, 696, 697, 698, 699, 700, 701, 622, 693, 631, - /* 320 */ 628, 632, 596, 634, 687, 653, 702, 567, 570, 624, - /* 330 */ 624, 624, 624, 703, 576, 578, 624, 624, 624, 715, - /* 340 */ 717, 641, 624, 721, 722, 723, 724, 725, 726, 727, - /* 350 */ 728, 729, 730, 731, 732, 733, 734, 735, 644, 657, - /* 360 */ 736, 737, 683, 744, + /* 0 */ 184, 115, 115, 219, 219, 86, 230, 240, 240, 2, + /* 10 */ 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, + /* 20 */ 143, 143, 143, 0, 42, 240, 305, 305, 305, 123, + /* 30 */ 123, 143, 143, 83, 143, 111, 143, 143, 143, 143, + /* 40 */ 243, 86, 35, 35, 5, 766, 766, 766, 240, 240, + /* 50 */ 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, + /* 60 */ 240, 240, 240, 240, 240, 240, 240, 240, 240, 305, + /* 70 */ 305, 305, 199, 199, 199, 199, 199, 199, 199, 143, + /* 80 */ 143, 143, 303, 143, 143, 143, 123, 123, 143, 143, + /* 90 */ 143, 143, 306, 306, 323, 123, 143, 143, 143, 143, + /* 100 */ 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, + /* 110 */ 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, + /* 120 */ 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, + /* 130 */ 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, + /* 140 */ 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, + /* 150 */ 143, 143, 143, 143, 143, 474, 474, 474, 415, 415, + /* 160 */ 415, 415, 474, 474, 420, 424, 427, 428, 431, 438, + /* 170 */ 440, 443, 441, 445, 474, 474, 474, 518, 518, 496, + /* 180 */ 86, 86, 474, 474, 514, 519, 566, 526, 525, 565, + /* 190 */ 529, 532, 496, 5, 474, 474, 542, 542, 474, 542, + /* 200 */ 474, 542, 474, 474, 766, 766, 28, 93, 93, 121, + /* 210 */ 93, 148, 173, 208, 260, 260, 260, 260, 260, 273, + /* 220 */ 298, 216, 216, 216, 216, 232, 246, 14, 291, 365, + /* 230 */ 365, 26, 337, 217, 354, 338, 308, 310, 343, 344, + /* 240 */ 348, 18, 41, 359, 361, 366, 367, 368, 342, 369, + /* 250 */ 370, 437, 388, 374, 371, 315, 324, 328, 472, 473, + /* 260 */ 335, 336, 373, 339, 410, 623, 475, 625, 626, 481, + /* 270 */ 627, 631, 536, 538, 500, 523, 530, 562, 527, 563, + /* 280 */ 567, 550, 555, 570, 573, 596, 598, 599, 584, 601, + /* 290 */ 602, 605, 684, 606, 592, 558, 594, 560, 611, 530, + /* 300 */ 612, 580, 614, 581, 620, 613, 615, 629, 698, 616, + /* 310 */ 618, 697, 702, 703, 704, 705, 706, 707, 708, 628, + /* 320 */ 700, 637, 634, 635, 600, 638, 695, 662, 709, 575, + /* 330 */ 576, 630, 630, 630, 630, 710, 579, 582, 630, 630, + /* 340 */ 630, 724, 726, 648, 630, 728, 729, 730, 731, 732, + /* 350 */ 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, + /* 360 */ 650, 663, 743, 744, 689, 751, }; -#define YY_REDUCE_COUNT (204) -#define YY_REDUCE_MIN (-261) -#define YY_REDUCE_MAX (463) +#define YY_REDUCE_COUNT (205) +#define YY_REDUCE_MIN (-257) +#define YY_REDUCE_MAX (478) static const short yy_reduce_ofst[] = { - /* 0 */ -31, -37, -37, -194, -194, -80, -204, -196, -184, -155, - /* 10 */ 29, 15, -164, 83, 148, 149, 158, 161, 163, 174, - /* 20 */ 175, 177, 182, -180, -193, -236, -149, -125, -108, -26, - /* 30 */ 32, -191, 104, -253, 44, 10, 95, 111, 143, 147, - /* 40 */ 64, -161, 179, 196, 178, 118, 204, 200, -261, -251, - /* 50 */ -200, -126, -62, -3, 6, 9, 48, 205, 213, 217, - /* 60 */ 219, 220, 223, 224, 225, 226, 227, 229, 117, 235, - /* 70 */ 248, 257, 260, 261, 262, 263, 264, 265, 306, 307, - /* 80 */ 309, 233, 310, 311, 312, 266, 267, 316, 317, 319, - /* 90 */ 320, 232, 242, 269, 276, 322, 326, 327, 329, 332, - /* 100 */ 334, 335, 338, 339, 340, 341, 342, 343, 345, 346, - /* 110 */ 347, 350, 354, 357, 360, 362, 363, 364, 365, 366, - /* 120 */ 367, 368, 369, 370, 372, 373, 374, 375, 376, 378, - /* 130 */ 379, 381, 382, 383, 384, 385, 386, 387, 388, 389, - /* 140 */ 390, 391, 392, 393, 395, 396, 397, 398, 399, 400, - /* 150 */ 401, 402, 404, 405, 321, 406, 407, 254, 273, 277, - /* 160 */ 278, 409, 410, 268, 291, 295, 270, 302, 279, 271, - /* 170 */ 280, 411, 412, 415, 416, 417, 418, 419, 420, 421, - /* 180 */ 425, 426, 430, 427, 429, 428, 431, 432, 435, 436, - /* 190 */ 438, 433, 434, 437, 439, 440, 442, 453, 451, 454, - /* 200 */ 455, 458, 459, 460, 463, + /* 0 */ -138, -153, -153, 151, 151, 51, -140, -13, 43, -114, + /* 10 */ -183, -95, -68, -7, 113, 154, 155, 166, 169, 187, + /* 20 */ 190, 192, 201, -180, -194, -257, -242, -212, -63, -239, + /* 30 */ -216, -35, 32, -147, -198, 64, -69, 60, 118, -186, + /* 40 */ 92, 160, 98, 146, 56, 157, 203, 212, -228, -81, + /* 50 */ -21, 52, 59, 65, 68, 142, 195, 221, 226, 228, + /* 60 */ 229, 231, 233, 234, 235, 236, 237, 238, 239, 103, + /* 70 */ 225, 247, 259, 267, 268, 269, 270, 271, 272, 313, + /* 80 */ 314, 316, 249, 317, 318, 319, 274, 275, 320, 321, + /* 90 */ 325, 326, 248, 251, 276, 281, 330, 331, 332, 333, + /* 100 */ 334, 340, 341, 345, 346, 347, 349, 350, 351, 352, + /* 110 */ 353, 355, 356, 357, 358, 360, 362, 363, 364, 372, + /* 120 */ 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, + /* 130 */ 385, 386, 387, 389, 390, 391, 392, 393, 394, 395, + /* 140 */ 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, + /* 150 */ 406, 407, 408, 409, 411, 412, 413, 414, 264, 265, + /* 160 */ 277, 283, 416, 417, 280, 282, 278, 307, 279, 311, + /* 170 */ 418, 421, 419, 423, 422, 425, 426, 429, 430, 432, + /* 180 */ 435, 436, 433, 434, 439, 442, 444, 446, 447, 448, + /* 190 */ 449, 453, 450, 455, 451, 452, 454, 456, 466, 467, + /* 200 */ 470, 476, 471, 478, 460, 477, }; static const YYACTIONTYPE yy_default[] = { - /* 0 */ 864, 988, 927, 998, 914, 924, 1137, 1137, 1137, 864, - /* 10 */ 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, - /* 20 */ 864, 864, 864, 1046, 884, 1137, 864, 864, 864, 864, - /* 30 */ 864, 864, 864, 1061, 864, 924, 864, 864, 864, 864, - /* 40 */ 934, 924, 934, 934, 864, 1041, 972, 990, 864, 864, - /* 50 */ 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, - /* 60 */ 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, - /* 70 */ 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, - /* 80 */ 864, 1048, 1054, 1051, 864, 864, 864, 1056, 864, 864, - /* 90 */ 864, 1080, 1080, 1039, 864, 864, 864, 864, 864, 864, - /* 100 */ 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, - /* 110 */ 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, - /* 120 */ 864, 864, 864, 864, 864, 864, 864, 912, 864, 910, - /* 130 */ 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, - /* 140 */ 864, 864, 864, 864, 864, 864, 895, 864, 864, 864, - /* 150 */ 864, 864, 864, 882, 886, 886, 886, 864, 864, 864, - /* 160 */ 864, 886, 886, 1087, 1091, 1073, 1085, 1081, 1068, 1066, - /* 170 */ 1064, 1072, 1095, 886, 886, 886, 932, 932, 928, 924, - /* 180 */ 924, 886, 886, 950, 948, 946, 938, 944, 940, 942, - /* 190 */ 936, 915, 864, 886, 886, 922, 922, 886, 922, 886, - /* 200 */ 922, 886, 886, 972, 990, 864, 1096, 1086, 864, 1136, - /* 210 */ 1126, 1125, 864, 1132, 1124, 1123, 1122, 864, 864, 1118, - /* 220 */ 1121, 1120, 1119, 864, 864, 864, 864, 1128, 1127, 864, - /* 230 */ 864, 864, 864, 864, 864, 864, 864, 864, 864, 1092, - /* 240 */ 1088, 864, 864, 864, 864, 864, 864, 864, 864, 864, - /* 250 */ 1098, 864, 864, 864, 864, 864, 864, 864, 864, 864, - /* 260 */ 1000, 864, 864, 864, 864, 864, 864, 864, 864, 864, - /* 270 */ 864, 864, 864, 1038, 864, 864, 864, 864, 864, 1050, - /* 280 */ 1049, 864, 864, 864, 864, 864, 864, 864, 864, 864, - /* 290 */ 864, 864, 1082, 864, 1074, 864, 864, 1012, 864, 864, - /* 300 */ 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, - /* 310 */ 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, - /* 320 */ 864, 864, 864, 864, 864, 864, 864, 864, 864, 1155, - /* 330 */ 1150, 1151, 1148, 864, 864, 864, 1147, 1142, 1143, 864, - /* 340 */ 864, 864, 1140, 864, 864, 864, 864, 864, 864, 864, - /* 350 */ 864, 864, 864, 864, 864, 864, 864, 864, 956, 864, - /* 360 */ 893, 891, 864, 864, + /* 0 */ 867, 991, 930, 1001, 917, 927, 1141, 1141, 1141, 867, + /* 10 */ 867, 867, 867, 867, 867, 867, 867, 867, 867, 867, + /* 20 */ 867, 867, 867, 1049, 887, 1141, 867, 867, 867, 867, + /* 30 */ 867, 867, 867, 1064, 867, 927, 867, 867, 867, 867, + /* 40 */ 937, 927, 937, 937, 867, 1044, 975, 993, 867, 867, + /* 50 */ 867, 867, 867, 867, 867, 867, 867, 867, 867, 867, + /* 60 */ 867, 867, 867, 867, 867, 867, 867, 867, 867, 867, + /* 70 */ 867, 867, 867, 867, 867, 867, 867, 867, 867, 867, + /* 80 */ 867, 867, 1051, 1057, 1054, 867, 867, 867, 1059, 867, + /* 90 */ 867, 867, 1083, 1083, 1042, 867, 867, 867, 867, 867, + /* 100 */ 867, 867, 867, 867, 867, 867, 867, 867, 867, 867, + /* 110 */ 867, 867, 867, 867, 867, 867, 867, 867, 867, 867, + /* 120 */ 867, 867, 867, 867, 867, 867, 867, 867, 915, 867, + /* 130 */ 913, 867, 867, 867, 867, 867, 867, 867, 867, 867, + /* 140 */ 867, 867, 867, 867, 867, 867, 867, 898, 867, 867, + /* 150 */ 867, 867, 867, 867, 885, 889, 889, 889, 867, 867, + /* 160 */ 867, 867, 889, 889, 1090, 1094, 1076, 1088, 1084, 1071, + /* 170 */ 1069, 1067, 1075, 1098, 889, 889, 889, 935, 935, 931, + /* 180 */ 927, 927, 889, 889, 953, 951, 949, 941, 947, 943, + /* 190 */ 945, 939, 918, 867, 889, 889, 925, 925, 889, 925, + /* 200 */ 889, 925, 889, 889, 975, 993, 867, 1099, 1089, 867, + /* 210 */ 1140, 1129, 1128, 867, 1136, 1135, 1127, 1126, 1125, 867, + /* 220 */ 867, 1121, 1124, 1123, 1122, 867, 867, 867, 867, 1131, + /* 230 */ 1130, 867, 867, 867, 867, 867, 867, 867, 867, 867, + /* 240 */ 867, 1095, 1091, 867, 867, 867, 867, 867, 867, 867, + /* 250 */ 867, 867, 1101, 867, 867, 867, 867, 867, 867, 867, + /* 260 */ 867, 867, 1003, 867, 867, 867, 867, 867, 867, 867, + /* 270 */ 867, 867, 867, 867, 867, 1041, 867, 867, 867, 867, + /* 280 */ 867, 1053, 1052, 867, 867, 867, 867, 867, 867, 867, + /* 290 */ 867, 867, 867, 867, 1085, 867, 1077, 867, 867, 1015, + /* 300 */ 867, 867, 867, 867, 867, 867, 867, 867, 867, 867, + /* 310 */ 867, 867, 867, 867, 867, 867, 867, 867, 867, 867, + /* 320 */ 867, 867, 867, 867, 867, 867, 867, 867, 867, 867, + /* 330 */ 867, 1159, 1154, 1155, 1152, 867, 867, 867, 1151, 1146, + /* 340 */ 1147, 867, 867, 867, 1144, 867, 867, 867, 867, 867, + /* 350 */ 867, 867, 867, 867, 867, 867, 867, 867, 867, 867, + /* 360 */ 959, 867, 896, 894, 867, 867, }; /********** End of lemon-generated parsing tables *****************************/ @@ -529,6 +544,7 @@ static const YYCODETYPE yyFallback[] = { 0, /* NOTNULL => nothing */ 0, /* IS => nothing */ 1, /* LIKE => ID */ + 1, /* MATCH => ID */ 1, /* GLOB => ID */ 0, /* BETWEEN => nothing */ 0, /* IN => nothing */ @@ -682,7 +698,6 @@ static const YYCODETYPE yyFallback[] = { 1, /* IMMEDIATE => ID */ 1, /* INITIALLY => ID */ 1, /* INSTEAD => ID */ - 1, /* MATCH => ID */ 1, /* KEY => ID */ 1, /* OF => ID */ 1, /* RAISE => ID */ @@ -742,6 +757,7 @@ struct yyParser { int yyerrcnt; /* Shifts left before out of the error */ #endif ParseARG_SDECL /* A place to hold %extra_argument */ + ParseCTX_SDECL /* A place to hold %extra_context */ #if YYSTACKDEPTH<=0 int yystksz; /* Current side of the stack */ yyStackEntry *yystack; /* The parser's stack */ @@ -811,160 +827,160 @@ static const char *const yyTokenName[] = { /* 19 */ "NOTNULL", /* 20 */ "IS", /* 21 */ "LIKE", - /* 22 */ "GLOB", - /* 23 */ "BETWEEN", - /* 24 */ "IN", - /* 25 */ "GT", - /* 26 */ "GE", - /* 27 */ "LT", - /* 28 */ "LE", - /* 29 */ "BITAND", - /* 30 */ "BITOR", - /* 31 */ "LSHIFT", - /* 32 */ "RSHIFT", - /* 33 */ "PLUS", - /* 34 */ "MINUS", - /* 35 */ "DIVIDE", - /* 36 */ "TIMES", - /* 37 */ "STAR", - /* 38 */ "SLASH", - /* 39 */ "REM", - /* 40 */ "CONCAT", - /* 41 */ "UMINUS", - /* 42 */ "UPLUS", - /* 43 */ "BITNOT", - /* 44 */ "SHOW", - /* 45 */ "DATABASES", - /* 46 */ "TOPICS", - /* 47 */ "FUNCTIONS", - /* 48 */ "MNODES", - /* 49 */ "DNODES", - /* 50 */ "ACCOUNTS", - /* 51 */ "USERS", - /* 52 */ "MODULES", - /* 53 */ "QUERIES", - /* 54 */ "CONNECTIONS", - /* 55 */ "STREAMS", - /* 56 */ "VARIABLES", - /* 57 */ "SCORES", - /* 58 */ "GRANTS", - /* 59 */ "VNODES", - /* 60 */ "DOT", - /* 61 */ "CREATE", - /* 62 */ "TABLE", - /* 63 */ "STABLE", - /* 64 */ "DATABASE", - /* 65 */ "TABLES", - /* 66 */ "STABLES", - /* 67 */ "VGROUPS", - /* 68 */ "DROP", - /* 69 */ "TOPIC", - /* 70 */ "FUNCTION", - /* 71 */ "DNODE", - /* 72 */ "USER", - /* 73 */ "ACCOUNT", - /* 74 */ "USE", - /* 75 */ "DESCRIBE", - /* 76 */ "DESC", - /* 77 */ "ALTER", - /* 78 */ "PASS", - /* 79 */ "PRIVILEGE", - /* 80 */ "LOCAL", - /* 81 */ "COMPACT", - /* 82 */ "LP", - /* 83 */ "RP", - /* 84 */ "IF", - /* 85 */ "EXISTS", - /* 86 */ "AS", - /* 87 */ "OUTPUTTYPE", - /* 88 */ "AGGREGATE", - /* 89 */ "BUFSIZE", - /* 90 */ "PPS", - /* 91 */ "TSERIES", - /* 92 */ "DBS", - /* 93 */ "STORAGE", - /* 94 */ "QTIME", - /* 95 */ "CONNS", - /* 96 */ "STATE", - /* 97 */ "COMMA", - /* 98 */ "KEEP", - /* 99 */ "CACHE", - /* 100 */ "REPLICA", - /* 101 */ "QUORUM", - /* 102 */ "DAYS", - /* 103 */ "MINROWS", - /* 104 */ "MAXROWS", - /* 105 */ "BLOCKS", - /* 106 */ "CTIME", - /* 107 */ "WAL", - /* 108 */ "FSYNC", - /* 109 */ "COMP", - /* 110 */ "PRECISION", - /* 111 */ "UPDATE", - /* 112 */ "CACHELAST", - /* 113 */ "PARTITIONS", - /* 114 */ "UNSIGNED", - /* 115 */ "TAGS", - /* 116 */ "USING", - /* 117 */ "NULL", - /* 118 */ "NOW", - /* 119 */ "SELECT", - /* 120 */ "UNION", - /* 121 */ "ALL", - /* 122 */ "DISTINCT", - /* 123 */ "FROM", - /* 124 */ "VARIABLE", - /* 125 */ "INTERVAL", - /* 126 */ "EVERY", - /* 127 */ "SESSION", - /* 128 */ "STATE_WINDOW", - /* 129 */ "FILL", - /* 130 */ "SLIDING", - /* 131 */ "ORDER", - /* 132 */ "BY", - /* 133 */ "ASC", - /* 134 */ "GROUP", - /* 135 */ "HAVING", - /* 136 */ "LIMIT", - /* 137 */ "OFFSET", - /* 138 */ "SLIMIT", - /* 139 */ "SOFFSET", - /* 140 */ "WHERE", - /* 141 */ "RESET", - /* 142 */ "QUERY", - /* 143 */ "SYNCDB", - /* 144 */ "ADD", - /* 145 */ "COLUMN", - /* 146 */ "MODIFY", - /* 147 */ "TAG", - /* 148 */ "CHANGE", - /* 149 */ "SET", - /* 150 */ "KILL", - /* 151 */ "CONNECTION", - /* 152 */ "STREAM", - /* 153 */ "COLON", - /* 154 */ "ABORT", - /* 155 */ "AFTER", - /* 156 */ "ATTACH", - /* 157 */ "BEFORE", - /* 158 */ "BEGIN", - /* 159 */ "CASCADE", - /* 160 */ "CLUSTER", - /* 161 */ "CONFLICT", - /* 162 */ "COPY", - /* 163 */ "DEFERRED", - /* 164 */ "DELIMITERS", - /* 165 */ "DETACH", - /* 166 */ "EACH", - /* 167 */ "END", - /* 168 */ "EXPLAIN", - /* 169 */ "FAIL", - /* 170 */ "FOR", - /* 171 */ "IGNORE", - /* 172 */ "IMMEDIATE", - /* 173 */ "INITIALLY", - /* 174 */ "INSTEAD", - /* 175 */ "MATCH", + /* 22 */ "MATCH", + /* 23 */ "GLOB", + /* 24 */ "BETWEEN", + /* 25 */ "IN", + /* 26 */ "GT", + /* 27 */ "GE", + /* 28 */ "LT", + /* 29 */ "LE", + /* 30 */ "BITAND", + /* 31 */ "BITOR", + /* 32 */ "LSHIFT", + /* 33 */ "RSHIFT", + /* 34 */ "PLUS", + /* 35 */ "MINUS", + /* 36 */ "DIVIDE", + /* 37 */ "TIMES", + /* 38 */ "STAR", + /* 39 */ "SLASH", + /* 40 */ "REM", + /* 41 */ "CONCAT", + /* 42 */ "UMINUS", + /* 43 */ "UPLUS", + /* 44 */ "BITNOT", + /* 45 */ "SHOW", + /* 46 */ "DATABASES", + /* 47 */ "TOPICS", + /* 48 */ "FUNCTIONS", + /* 49 */ "MNODES", + /* 50 */ "DNODES", + /* 51 */ "ACCOUNTS", + /* 52 */ "USERS", + /* 53 */ "MODULES", + /* 54 */ "QUERIES", + /* 55 */ "CONNECTIONS", + /* 56 */ "STREAMS", + /* 57 */ "VARIABLES", + /* 58 */ "SCORES", + /* 59 */ "GRANTS", + /* 60 */ "VNODES", + /* 61 */ "DOT", + /* 62 */ "CREATE", + /* 63 */ "TABLE", + /* 64 */ "STABLE", + /* 65 */ "DATABASE", + /* 66 */ "TABLES", + /* 67 */ "STABLES", + /* 68 */ "VGROUPS", + /* 69 */ "DROP", + /* 70 */ "TOPIC", + /* 71 */ "FUNCTION", + /* 72 */ "DNODE", + /* 73 */ "USER", + /* 74 */ "ACCOUNT", + /* 75 */ "USE", + /* 76 */ "DESCRIBE", + /* 77 */ "DESC", + /* 78 */ "ALTER", + /* 79 */ "PASS", + /* 80 */ "PRIVILEGE", + /* 81 */ "LOCAL", + /* 82 */ "COMPACT", + /* 83 */ "LP", + /* 84 */ "RP", + /* 85 */ "IF", + /* 86 */ "EXISTS", + /* 87 */ "AS", + /* 88 */ "OUTPUTTYPE", + /* 89 */ "AGGREGATE", + /* 90 */ "BUFSIZE", + /* 91 */ "PPS", + /* 92 */ "TSERIES", + /* 93 */ "DBS", + /* 94 */ "STORAGE", + /* 95 */ "QTIME", + /* 96 */ "CONNS", + /* 97 */ "STATE", + /* 98 */ "COMMA", + /* 99 */ "KEEP", + /* 100 */ "CACHE", + /* 101 */ "REPLICA", + /* 102 */ "QUORUM", + /* 103 */ "DAYS", + /* 104 */ "MINROWS", + /* 105 */ "MAXROWS", + /* 106 */ "BLOCKS", + /* 107 */ "CTIME", + /* 108 */ "WAL", + /* 109 */ "FSYNC", + /* 110 */ "COMP", + /* 111 */ "PRECISION", + /* 112 */ "UPDATE", + /* 113 */ "CACHELAST", + /* 114 */ "PARTITIONS", + /* 115 */ "UNSIGNED", + /* 116 */ "TAGS", + /* 117 */ "USING", + /* 118 */ "NULL", + /* 119 */ "NOW", + /* 120 */ "SELECT", + /* 121 */ "UNION", + /* 122 */ "ALL", + /* 123 */ "DISTINCT", + /* 124 */ "FROM", + /* 125 */ "VARIABLE", + /* 126 */ "INTERVAL", + /* 127 */ "EVERY", + /* 128 */ "SESSION", + /* 129 */ "STATE_WINDOW", + /* 130 */ "FILL", + /* 131 */ "SLIDING", + /* 132 */ "ORDER", + /* 133 */ "BY", + /* 134 */ "ASC", + /* 135 */ "GROUP", + /* 136 */ "HAVING", + /* 137 */ "LIMIT", + /* 138 */ "OFFSET", + /* 139 */ "SLIMIT", + /* 140 */ "SOFFSET", + /* 141 */ "WHERE", + /* 142 */ "RESET", + /* 143 */ "QUERY", + /* 144 */ "SYNCDB", + /* 145 */ "ADD", + /* 146 */ "COLUMN", + /* 147 */ "MODIFY", + /* 148 */ "TAG", + /* 149 */ "CHANGE", + /* 150 */ "SET", + /* 151 */ "KILL", + /* 152 */ "CONNECTION", + /* 153 */ "STREAM", + /* 154 */ "COLON", + /* 155 */ "ABORT", + /* 156 */ "AFTER", + /* 157 */ "ATTACH", + /* 158 */ "BEFORE", + /* 159 */ "BEGIN", + /* 160 */ "CASCADE", + /* 161 */ "CLUSTER", + /* 162 */ "CONFLICT", + /* 163 */ "COPY", + /* 164 */ "DEFERRED", + /* 165 */ "DELIMITERS", + /* 166 */ "DETACH", + /* 167 */ "EACH", + /* 168 */ "END", + /* 169 */ "EXPLAIN", + /* 170 */ "FAIL", + /* 171 */ "FOR", + /* 172 */ "IGNORE", + /* 173 */ "IMMEDIATE", + /* 174 */ "INITIALLY", + /* 175 */ "INSTEAD", /* 176 */ "KEY", /* 177 */ "OF", /* 178 */ "RAISE", @@ -985,88 +1001,87 @@ static const char *const yyTokenName[] = { /* 193 */ "INSERT", /* 194 */ "INTO", /* 195 */ "VALUES", - /* 196 */ "error", - /* 197 */ "program", - /* 198 */ "cmd", - /* 199 */ "ids", - /* 200 */ "dbPrefix", - /* 201 */ "cpxName", - /* 202 */ "ifexists", - /* 203 */ "alter_db_optr", - /* 204 */ "alter_topic_optr", - /* 205 */ "acct_optr", - /* 206 */ "exprlist", - /* 207 */ "ifnotexists", - /* 208 */ "db_optr", - /* 209 */ "topic_optr", - /* 210 */ "typename", - /* 211 */ "bufsize", - /* 212 */ "pps", - /* 213 */ "tseries", - /* 214 */ "dbs", - /* 215 */ "streams", - /* 216 */ "storage", - /* 217 */ "qtime", - /* 218 */ "users", - /* 219 */ "conns", - /* 220 */ "state", - /* 221 */ "intitemlist", - /* 222 */ "intitem", - /* 223 */ "keep", - /* 224 */ "cache", - /* 225 */ "replica", - /* 226 */ "quorum", - /* 227 */ "days", - /* 228 */ "minrows", - /* 229 */ "maxrows", - /* 230 */ "blocks", - /* 231 */ "ctime", - /* 232 */ "wal", - /* 233 */ "fsync", - /* 234 */ "comp", - /* 235 */ "prec", - /* 236 */ "update", - /* 237 */ "cachelast", - /* 238 */ "partitions", - /* 239 */ "signed", - /* 240 */ "create_table_args", - /* 241 */ "create_stable_args", - /* 242 */ "create_table_list", - /* 243 */ "create_from_stable", - /* 244 */ "columnlist", - /* 245 */ "tagitemlist", - /* 246 */ "tagNamelist", - /* 247 */ "select", - /* 248 */ "column", - /* 249 */ "tagitem", - /* 250 */ "selcollist", - /* 251 */ "from", - /* 252 */ "where_opt", - /* 253 */ "interval_option", - /* 254 */ "sliding_opt", - /* 255 */ "session_option", - /* 256 */ "windowstate_option", - /* 257 */ "fill_opt", - /* 258 */ "groupby_opt", - /* 259 */ "having_opt", - /* 260 */ "orderby_opt", - /* 261 */ "slimit_opt", - /* 262 */ "limit_opt", - /* 263 */ "union", - /* 264 */ "sclp", - /* 265 */ "distinct", - /* 266 */ "expr", - /* 267 */ "as", - /* 268 */ "tablelist", - /* 269 */ "sub", - /* 270 */ "tmvar", - /* 271 */ "intervalKey", - /* 272 */ "sortlist", - /* 273 */ "sortitem", - /* 274 */ "item", - /* 275 */ "sortorder", - /* 276 */ "grouplist", - /* 277 */ "expritem", + /* 196 */ "program", + /* 197 */ "cmd", + /* 198 */ "ids", + /* 199 */ "dbPrefix", + /* 200 */ "cpxName", + /* 201 */ "ifexists", + /* 202 */ "alter_db_optr", + /* 203 */ "alter_topic_optr", + /* 204 */ "acct_optr", + /* 205 */ "exprlist", + /* 206 */ "ifnotexists", + /* 207 */ "db_optr", + /* 208 */ "topic_optr", + /* 209 */ "typename", + /* 210 */ "bufsize", + /* 211 */ "pps", + /* 212 */ "tseries", + /* 213 */ "dbs", + /* 214 */ "streams", + /* 215 */ "storage", + /* 216 */ "qtime", + /* 217 */ "users", + /* 218 */ "conns", + /* 219 */ "state", + /* 220 */ "intitemlist", + /* 221 */ "intitem", + /* 222 */ "keep", + /* 223 */ "cache", + /* 224 */ "replica", + /* 225 */ "quorum", + /* 226 */ "days", + /* 227 */ "minrows", + /* 228 */ "maxrows", + /* 229 */ "blocks", + /* 230 */ "ctime", + /* 231 */ "wal", + /* 232 */ "fsync", + /* 233 */ "comp", + /* 234 */ "prec", + /* 235 */ "update", + /* 236 */ "cachelast", + /* 237 */ "partitions", + /* 238 */ "signed", + /* 239 */ "create_table_args", + /* 240 */ "create_stable_args", + /* 241 */ "create_table_list", + /* 242 */ "create_from_stable", + /* 243 */ "columnlist", + /* 244 */ "tagitemlist", + /* 245 */ "tagNamelist", + /* 246 */ "select", + /* 247 */ "column", + /* 248 */ "tagitem", + /* 249 */ "selcollist", + /* 250 */ "from", + /* 251 */ "where_opt", + /* 252 */ "interval_option", + /* 253 */ "sliding_opt", + /* 254 */ "session_option", + /* 255 */ "windowstate_option", + /* 256 */ "fill_opt", + /* 257 */ "groupby_opt", + /* 258 */ "having_opt", + /* 259 */ "orderby_opt", + /* 260 */ "slimit_opt", + /* 261 */ "limit_opt", + /* 262 */ "union", + /* 263 */ "sclp", + /* 264 */ "distinct", + /* 265 */ "expr", + /* 266 */ "as", + /* 267 */ "tablelist", + /* 268 */ "sub", + /* 269 */ "tmvar", + /* 270 */ "intervalKey", + /* 271 */ "sortlist", + /* 272 */ "sortitem", + /* 273 */ "item", + /* 274 */ "sortorder", + /* 275 */ "grouplist", + /* 276 */ "expritem", }; #endif /* defined(YYCOVERAGE) || !defined(NDEBUG) */ @@ -1340,32 +1355,33 @@ static const char *const yyRuleName[] = { /* 263 */ "expr ::= expr SLASH expr", /* 264 */ "expr ::= expr REM expr", /* 265 */ "expr ::= expr LIKE expr", - /* 266 */ "expr ::= expr IN LP exprlist RP", - /* 267 */ "exprlist ::= exprlist COMMA expritem", - /* 268 */ "exprlist ::= expritem", - /* 269 */ "expritem ::= expr", - /* 270 */ "expritem ::=", - /* 271 */ "cmd ::= RESET QUERY CACHE", - /* 272 */ "cmd ::= SYNCDB ids REPLICA", - /* 273 */ "cmd ::= ALTER TABLE ids cpxName ADD COLUMN columnlist", - /* 274 */ "cmd ::= ALTER TABLE ids cpxName DROP COLUMN ids", - /* 275 */ "cmd ::= ALTER TABLE ids cpxName MODIFY COLUMN columnlist", - /* 276 */ "cmd ::= ALTER TABLE ids cpxName ADD TAG columnlist", - /* 277 */ "cmd ::= ALTER TABLE ids cpxName DROP TAG ids", - /* 278 */ "cmd ::= ALTER TABLE ids cpxName CHANGE TAG ids ids", - /* 279 */ "cmd ::= ALTER TABLE ids cpxName SET TAG ids EQ tagitem", - /* 280 */ "cmd ::= ALTER TABLE ids cpxName MODIFY TAG columnlist", - /* 281 */ "cmd ::= ALTER STABLE ids cpxName ADD COLUMN columnlist", - /* 282 */ "cmd ::= ALTER STABLE ids cpxName DROP COLUMN ids", - /* 283 */ "cmd ::= ALTER STABLE ids cpxName MODIFY COLUMN columnlist", - /* 284 */ "cmd ::= ALTER STABLE ids cpxName ADD TAG columnlist", - /* 285 */ "cmd ::= ALTER STABLE ids cpxName DROP TAG ids", - /* 286 */ "cmd ::= ALTER STABLE ids cpxName CHANGE TAG ids ids", - /* 287 */ "cmd ::= ALTER STABLE ids cpxName SET TAG ids EQ tagitem", - /* 288 */ "cmd ::= ALTER STABLE ids cpxName MODIFY TAG columnlist", - /* 289 */ "cmd ::= KILL CONNECTION INTEGER", - /* 290 */ "cmd ::= KILL STREAM INTEGER COLON INTEGER", - /* 291 */ "cmd ::= KILL QUERY INTEGER COLON INTEGER", + /* 266 */ "expr ::= expr MATCH expr", + /* 267 */ "expr ::= expr IN LP exprlist RP", + /* 268 */ "exprlist ::= exprlist COMMA expritem", + /* 269 */ "exprlist ::= expritem", + /* 270 */ "expritem ::= expr", + /* 271 */ "expritem ::=", + /* 272 */ "cmd ::= RESET QUERY CACHE", + /* 273 */ "cmd ::= SYNCDB ids REPLICA", + /* 274 */ "cmd ::= ALTER TABLE ids cpxName ADD COLUMN columnlist", + /* 275 */ "cmd ::= ALTER TABLE ids cpxName DROP COLUMN ids", + /* 276 */ "cmd ::= ALTER TABLE ids cpxName MODIFY COLUMN columnlist", + /* 277 */ "cmd ::= ALTER TABLE ids cpxName ADD TAG columnlist", + /* 278 */ "cmd ::= ALTER TABLE ids cpxName DROP TAG ids", + /* 279 */ "cmd ::= ALTER TABLE ids cpxName CHANGE TAG ids ids", + /* 280 */ "cmd ::= ALTER TABLE ids cpxName SET TAG ids EQ tagitem", + /* 281 */ "cmd ::= ALTER TABLE ids cpxName MODIFY TAG columnlist", + /* 282 */ "cmd ::= ALTER STABLE ids cpxName ADD COLUMN columnlist", + /* 283 */ "cmd ::= ALTER STABLE ids cpxName DROP COLUMN ids", + /* 284 */ "cmd ::= ALTER STABLE ids cpxName MODIFY COLUMN columnlist", + /* 285 */ "cmd ::= ALTER STABLE ids cpxName ADD TAG columnlist", + /* 286 */ "cmd ::= ALTER STABLE ids cpxName DROP TAG ids", + /* 287 */ "cmd ::= ALTER STABLE ids cpxName CHANGE TAG ids ids", + /* 288 */ "cmd ::= ALTER STABLE ids cpxName SET TAG ids EQ tagitem", + /* 289 */ "cmd ::= ALTER STABLE ids cpxName MODIFY TAG columnlist", + /* 290 */ "cmd ::= KILL CONNECTION INTEGER", + /* 291 */ "cmd ::= KILL STREAM INTEGER COLON INTEGER", + /* 292 */ "cmd ::= KILL QUERY INTEGER COLON INTEGER", }; #endif /* NDEBUG */ @@ -1414,28 +1430,29 @@ static int yyGrowStack(yyParser *p){ /* Initialize a new parser that has already been allocated. */ -void ParseInit(void *yypParser){ - yyParser *pParser = (yyParser*)yypParser; +void ParseInit(void *yypRawParser ParseCTX_PDECL){ + yyParser *yypParser = (yyParser*)yypRawParser; + ParseCTX_STORE #ifdef YYTRACKMAXSTACKDEPTH - pParser->yyhwm = 0; + yypParser->yyhwm = 0; #endif #if YYSTACKDEPTH<=0 - pParser->yytos = NULL; - pParser->yystack = NULL; - pParser->yystksz = 0; - if( yyGrowStack(pParser) ){ - pParser->yystack = &pParser->yystk0; - pParser->yystksz = 1; + yypParser->yytos = NULL; + yypParser->yystack = NULL; + yypParser->yystksz = 0; + if( yyGrowStack(yypParser) ){ + yypParser->yystack = &yypParser->yystk0; + yypParser->yystksz = 1; } #endif #ifndef YYNOERRORRECOVERY - pParser->yyerrcnt = -1; + yypParser->yyerrcnt = -1; #endif - pParser->yytos = pParser->yystack; - pParser->yystack[0].stateno = 0; - pParser->yystack[0].major = 0; + yypParser->yytos = yypParser->yystack; + yypParser->yystack[0].stateno = 0; + yypParser->yystack[0].major = 0; #if YYSTACKDEPTH>0 - pParser->yystackEnd = &pParser->yystack[YYSTACKDEPTH-1]; + yypParser->yystackEnd = &yypParser->yystack[YYSTACKDEPTH-1]; #endif } @@ -1452,11 +1469,14 @@ void ParseInit(void *yypParser){ ** A pointer to a parser. This pointer is used in subsequent calls ** to Parse and ParseFree. */ -void *ParseAlloc(void *(*mallocProc)(YYMALLOCARGTYPE)){ - yyParser *pParser; - pParser = (yyParser*)(*mallocProc)( (YYMALLOCARGTYPE)sizeof(yyParser) ); - if( pParser ) ParseInit(pParser); - return pParser; +void *ParseAlloc(void *(*mallocProc)(YYMALLOCARGTYPE) ParseCTX_PDECL){ + yyParser *yypParser; + yypParser = (yyParser*)(*mallocProc)( (YYMALLOCARGTYPE)sizeof(yyParser) ); + if( yypParser ){ + ParseCTX_STORE + ParseInit(yypParser ParseCTX_PARAM); + } + return (void*)yypParser; } #endif /* Parse_ENGINEALWAYSONSTACK */ @@ -1473,7 +1493,8 @@ static void yy_destructor( YYCODETYPE yymajor, /* Type code for object to destroy */ YYMINORTYPE *yypminor /* The object to be destroyed */ ){ - ParseARG_FETCH; + ParseARG_FETCH + ParseCTX_FETCH switch( yymajor ){ /* Here is inserted the actions which take place when a ** terminal or non-terminal is destroyed. This can happen @@ -1486,60 +1507,76 @@ static void yy_destructor( ** inside the C code. */ /********* Begin destructor definitions ***************************************/ - case 206: /* exprlist */ - case 250: /* selcollist */ - case 264: /* sclp */ + case 205: /* exprlist */ + case 249: /* selcollist */ + case 263: /* sclp */ { -tSqlExprListDestroy((yypminor->yy421)); +#line 761 "sql.y" +tSqlExprListDestroy((yypminor->yy403)); +#line 1517 "sql.c" } break; - case 221: /* intitemlist */ - case 223: /* keep */ - case 244: /* columnlist */ - case 245: /* tagitemlist */ - case 246: /* tagNamelist */ - case 257: /* fill_opt */ - case 258: /* groupby_opt */ - case 260: /* orderby_opt */ - case 272: /* sortlist */ - case 276: /* grouplist */ -{ -taosArrayDestroy((yypminor->yy421)); + case 220: /* intitemlist */ + case 222: /* keep */ + case 243: /* columnlist */ + case 244: /* tagitemlist */ + case 245: /* tagNamelist */ + case 256: /* fill_opt */ + case 257: /* groupby_opt */ + case 259: /* orderby_opt */ + case 271: /* sortlist */ + case 275: /* grouplist */ +{ +#line 256 "sql.y" +taosArrayDestroy((yypminor->yy403)); +#line 1533 "sql.c" } break; - case 242: /* create_table_list */ + case 241: /* create_table_list */ { -destroyCreateTableSql((yypminor->yy438)); +#line 364 "sql.y" +destroyCreateTableSql((yypminor->yy56)); +#line 1540 "sql.c" } break; - case 247: /* select */ + case 246: /* select */ { -destroySqlNode((yypminor->yy56)); +#line 484 "sql.y" +destroySqlNode((yypminor->yy224)); +#line 1547 "sql.c" } break; - case 251: /* from */ - case 268: /* tablelist */ - case 269: /* sub */ + case 250: /* from */ + case 267: /* tablelist */ + case 268: /* sub */ { -destroyRelationInfo((yypminor->yy8)); +#line 539 "sql.y" +destroyRelationInfo((yypminor->yy114)); +#line 1556 "sql.c" } break; - case 252: /* where_opt */ - case 259: /* having_opt */ - case 266: /* expr */ - case 277: /* expritem */ + case 251: /* where_opt */ + case 258: /* having_opt */ + case 265: /* expr */ + case 276: /* expritem */ { -tSqlExprDestroy((yypminor->yy439)); +#line 691 "sql.y" +tSqlExprDestroy((yypminor->yy260)); +#line 1566 "sql.c" } break; - case 263: /* union */ + case 262: /* union */ { -destroyAllSqlNode((yypminor->yy421)); +#line 492 "sql.y" +destroyAllSqlNode((yypminor->yy403)); +#line 1573 "sql.c" } break; - case 273: /* sortitem */ + case 272: /* sortitem */ { -tVariantDestroy(&(yypminor->yy430)); +#line 624 "sql.y" +tVariantDestroy(&(yypminor->yy488)); +#line 1580 "sql.c" } break; /********* End destructor definitions *****************************************/ @@ -1651,13 +1688,12 @@ int ParseCoverage(FILE *out){ ** Find the appropriate action for a parser given the terminal ** look-ahead token iLookAhead. */ -static unsigned int yy_find_shift_action( - yyParser *pParser, /* The parser */ - YYCODETYPE iLookAhead /* The look-ahead token */ +static YYACTIONTYPE yy_find_shift_action( + YYCODETYPE iLookAhead, /* The look-ahead token */ + YYACTIONTYPE stateno /* Current state number */ ){ int i; - int stateno = pParser->yytos->stateno; - + if( stateno>YY_MAX_SHIFT ) return stateno; assert( stateno <= YY_SHIFT_COUNT ); #if defined(YYCOVERAGE) @@ -1665,15 +1701,19 @@ static unsigned int yy_find_shift_action( #endif do{ i = yy_shift_ofst[stateno]; - assert( i>=0 && i+YYNTOKEN<=sizeof(yy_lookahead)/sizeof(yy_lookahead[0]) ); + assert( i>=0 ); + assert( i<=YY_ACTTAB_COUNT ); + assert( i+YYNTOKEN<=(int)YY_NLOOKAHEAD ); assert( iLookAhead!=YYNOCODE ); assert( iLookAhead < YYNTOKEN ); i += iLookAhead; + assert( i<(int)YY_NLOOKAHEAD ); if( yy_lookahead[i]!=iLookAhead ){ #ifdef YYFALLBACK YYCODETYPE iFallback; /* Fallback token */ - if( iLookAhead %s\n", @@ -1688,15 +1728,8 @@ static unsigned int yy_find_shift_action( #ifdef YYWILDCARD { int j = i - iLookAhead + YYWILDCARD; - if( -#if YY_SHIFT_MIN+YYWILDCARD<0 - j>=0 && -#endif -#if YY_SHIFT_MAX+YYWILDCARD>=YY_ACTTAB_COUNT - j0 - ){ + assert( j<(int)(sizeof(yy_lookahead)/sizeof(yy_lookahead[0])) ); + if( yy_lookahead[j]==YYWILDCARD && iLookAhead>0 ){ #ifndef NDEBUG if( yyTraceFILE ){ fprintf(yyTraceFILE, "%sWILDCARD %s => %s\n", @@ -1710,6 +1743,7 @@ static unsigned int yy_find_shift_action( #endif /* YYWILDCARD */ return yy_default[stateno]; }else{ + assert( i>=0 && iyytos; - yytos->stateno = (YYACTIONTYPE)yyNewState; - yytos->major = (YYCODETYPE)yyMajor; + yytos->stateno = yyNewState; + yytos->major = yyMajor; yytos->minor.yy0 = yyMinor; yyTraceShift(yypParser, yyNewState, "Shift"); } -/* The following table contains information about every rule that -** is used during the reduce. -*/ -static const struct { - YYCODETYPE lhs; /* Symbol on the left-hand side of the rule */ - signed char nrhs; /* Negative of the number of RHS symbols in the rule */ -} yyRuleInfo[] = { - { 197, -1 }, /* (0) program ::= cmd */ - { 198, -2 }, /* (1) cmd ::= SHOW DATABASES */ - { 198, -2 }, /* (2) cmd ::= SHOW TOPICS */ - { 198, -2 }, /* (3) cmd ::= SHOW FUNCTIONS */ - { 198, -2 }, /* (4) cmd ::= SHOW MNODES */ - { 198, -2 }, /* (5) cmd ::= SHOW DNODES */ - { 198, -2 }, /* (6) cmd ::= SHOW ACCOUNTS */ - { 198, -2 }, /* (7) cmd ::= SHOW USERS */ - { 198, -2 }, /* (8) cmd ::= SHOW MODULES */ - { 198, -2 }, /* (9) cmd ::= SHOW QUERIES */ - { 198, -2 }, /* (10) cmd ::= SHOW CONNECTIONS */ - { 198, -2 }, /* (11) cmd ::= SHOW STREAMS */ - { 198, -2 }, /* (12) cmd ::= SHOW VARIABLES */ - { 198, -2 }, /* (13) cmd ::= SHOW SCORES */ - { 198, -2 }, /* (14) cmd ::= SHOW GRANTS */ - { 198, -2 }, /* (15) cmd ::= SHOW VNODES */ - { 198, -3 }, /* (16) cmd ::= SHOW VNODES ids */ - { 200, 0 }, /* (17) dbPrefix ::= */ - { 200, -2 }, /* (18) dbPrefix ::= ids DOT */ - { 201, 0 }, /* (19) cpxName ::= */ - { 201, -2 }, /* (20) cpxName ::= DOT ids */ - { 198, -5 }, /* (21) cmd ::= SHOW CREATE TABLE ids cpxName */ - { 198, -5 }, /* (22) cmd ::= SHOW CREATE STABLE ids cpxName */ - { 198, -4 }, /* (23) cmd ::= SHOW CREATE DATABASE ids */ - { 198, -3 }, /* (24) cmd ::= SHOW dbPrefix TABLES */ - { 198, -5 }, /* (25) cmd ::= SHOW dbPrefix TABLES LIKE ids */ - { 198, -3 }, /* (26) cmd ::= SHOW dbPrefix STABLES */ - { 198, -5 }, /* (27) cmd ::= SHOW dbPrefix STABLES LIKE ids */ - { 198, -3 }, /* (28) cmd ::= SHOW dbPrefix VGROUPS */ - { 198, -4 }, /* (29) cmd ::= SHOW dbPrefix VGROUPS ids */ - { 198, -5 }, /* (30) cmd ::= DROP TABLE ifexists ids cpxName */ - { 198, -5 }, /* (31) cmd ::= DROP STABLE ifexists ids cpxName */ - { 198, -4 }, /* (32) cmd ::= DROP DATABASE ifexists ids */ - { 198, -4 }, /* (33) cmd ::= DROP TOPIC ifexists ids */ - { 198, -3 }, /* (34) cmd ::= DROP FUNCTION ids */ - { 198, -3 }, /* (35) cmd ::= DROP DNODE ids */ - { 198, -3 }, /* (36) cmd ::= DROP USER ids */ - { 198, -3 }, /* (37) cmd ::= DROP ACCOUNT ids */ - { 198, -2 }, /* (38) cmd ::= USE ids */ - { 198, -3 }, /* (39) cmd ::= DESCRIBE ids cpxName */ - { 198, -3 }, /* (40) cmd ::= DESC ids cpxName */ - { 198, -5 }, /* (41) cmd ::= ALTER USER ids PASS ids */ - { 198, -5 }, /* (42) cmd ::= ALTER USER ids PRIVILEGE ids */ - { 198, -4 }, /* (43) cmd ::= ALTER DNODE ids ids */ - { 198, -5 }, /* (44) cmd ::= ALTER DNODE ids ids ids */ - { 198, -3 }, /* (45) cmd ::= ALTER LOCAL ids */ - { 198, -4 }, /* (46) cmd ::= ALTER LOCAL ids ids */ - { 198, -4 }, /* (47) cmd ::= ALTER DATABASE ids alter_db_optr */ - { 198, -4 }, /* (48) cmd ::= ALTER TOPIC ids alter_topic_optr */ - { 198, -4 }, /* (49) cmd ::= ALTER ACCOUNT ids acct_optr */ - { 198, -6 }, /* (50) cmd ::= ALTER ACCOUNT ids PASS ids acct_optr */ - { 198, -6 }, /* (51) cmd ::= COMPACT VNODES IN LP exprlist RP */ - { 199, -1 }, /* (52) ids ::= ID */ - { 199, -1 }, /* (53) ids ::= STRING */ - { 202, -2 }, /* (54) ifexists ::= IF EXISTS */ - { 202, 0 }, /* (55) ifexists ::= */ - { 207, -3 }, /* (56) ifnotexists ::= IF NOT EXISTS */ - { 207, 0 }, /* (57) ifnotexists ::= */ - { 198, -3 }, /* (58) cmd ::= CREATE DNODE ids */ - { 198, -6 }, /* (59) cmd ::= CREATE ACCOUNT ids PASS ids acct_optr */ - { 198, -5 }, /* (60) cmd ::= CREATE DATABASE ifnotexists ids db_optr */ - { 198, -5 }, /* (61) cmd ::= CREATE TOPIC ifnotexists ids topic_optr */ - { 198, -8 }, /* (62) cmd ::= CREATE FUNCTION ids AS ids OUTPUTTYPE typename bufsize */ - { 198, -9 }, /* (63) cmd ::= CREATE AGGREGATE FUNCTION ids AS ids OUTPUTTYPE typename bufsize */ - { 198, -5 }, /* (64) cmd ::= CREATE USER ids PASS ids */ - { 211, 0 }, /* (65) bufsize ::= */ - { 211, -2 }, /* (66) bufsize ::= BUFSIZE INTEGER */ - { 212, 0 }, /* (67) pps ::= */ - { 212, -2 }, /* (68) pps ::= PPS INTEGER */ - { 213, 0 }, /* (69) tseries ::= */ - { 213, -2 }, /* (70) tseries ::= TSERIES INTEGER */ - { 214, 0 }, /* (71) dbs ::= */ - { 214, -2 }, /* (72) dbs ::= DBS INTEGER */ - { 215, 0 }, /* (73) streams ::= */ - { 215, -2 }, /* (74) streams ::= STREAMS INTEGER */ - { 216, 0 }, /* (75) storage ::= */ - { 216, -2 }, /* (76) storage ::= STORAGE INTEGER */ - { 217, 0 }, /* (77) qtime ::= */ - { 217, -2 }, /* (78) qtime ::= QTIME INTEGER */ - { 218, 0 }, /* (79) users ::= */ - { 218, -2 }, /* (80) users ::= USERS INTEGER */ - { 219, 0 }, /* (81) conns ::= */ - { 219, -2 }, /* (82) conns ::= CONNS INTEGER */ - { 220, 0 }, /* (83) state ::= */ - { 220, -2 }, /* (84) state ::= STATE ids */ - { 205, -9 }, /* (85) acct_optr ::= pps tseries storage streams qtime dbs users conns state */ - { 221, -3 }, /* (86) intitemlist ::= intitemlist COMMA intitem */ - { 221, -1 }, /* (87) intitemlist ::= intitem */ - { 222, -1 }, /* (88) intitem ::= INTEGER */ - { 223, -2 }, /* (89) keep ::= KEEP intitemlist */ - { 224, -2 }, /* (90) cache ::= CACHE INTEGER */ - { 225, -2 }, /* (91) replica ::= REPLICA INTEGER */ - { 226, -2 }, /* (92) quorum ::= QUORUM INTEGER */ - { 227, -2 }, /* (93) days ::= DAYS INTEGER */ - { 228, -2 }, /* (94) minrows ::= MINROWS INTEGER */ - { 229, -2 }, /* (95) maxrows ::= MAXROWS INTEGER */ - { 230, -2 }, /* (96) blocks ::= BLOCKS INTEGER */ - { 231, -2 }, /* (97) ctime ::= CTIME INTEGER */ - { 232, -2 }, /* (98) wal ::= WAL INTEGER */ - { 233, -2 }, /* (99) fsync ::= FSYNC INTEGER */ - { 234, -2 }, /* (100) comp ::= COMP INTEGER */ - { 235, -2 }, /* (101) prec ::= PRECISION STRING */ - { 236, -2 }, /* (102) update ::= UPDATE INTEGER */ - { 237, -2 }, /* (103) cachelast ::= CACHELAST INTEGER */ - { 238, -2 }, /* (104) partitions ::= PARTITIONS INTEGER */ - { 208, 0 }, /* (105) db_optr ::= */ - { 208, -2 }, /* (106) db_optr ::= db_optr cache */ - { 208, -2 }, /* (107) db_optr ::= db_optr replica */ - { 208, -2 }, /* (108) db_optr ::= db_optr quorum */ - { 208, -2 }, /* (109) db_optr ::= db_optr days */ - { 208, -2 }, /* (110) db_optr ::= db_optr minrows */ - { 208, -2 }, /* (111) db_optr ::= db_optr maxrows */ - { 208, -2 }, /* (112) db_optr ::= db_optr blocks */ - { 208, -2 }, /* (113) db_optr ::= db_optr ctime */ - { 208, -2 }, /* (114) db_optr ::= db_optr wal */ - { 208, -2 }, /* (115) db_optr ::= db_optr fsync */ - { 208, -2 }, /* (116) db_optr ::= db_optr comp */ - { 208, -2 }, /* (117) db_optr ::= db_optr prec */ - { 208, -2 }, /* (118) db_optr ::= db_optr keep */ - { 208, -2 }, /* (119) db_optr ::= db_optr update */ - { 208, -2 }, /* (120) db_optr ::= db_optr cachelast */ - { 209, -1 }, /* (121) topic_optr ::= db_optr */ - { 209, -2 }, /* (122) topic_optr ::= topic_optr partitions */ - { 203, 0 }, /* (123) alter_db_optr ::= */ - { 203, -2 }, /* (124) alter_db_optr ::= alter_db_optr replica */ - { 203, -2 }, /* (125) alter_db_optr ::= alter_db_optr quorum */ - { 203, -2 }, /* (126) alter_db_optr ::= alter_db_optr keep */ - { 203, -2 }, /* (127) alter_db_optr ::= alter_db_optr blocks */ - { 203, -2 }, /* (128) alter_db_optr ::= alter_db_optr comp */ - { 203, -2 }, /* (129) alter_db_optr ::= alter_db_optr update */ - { 203, -2 }, /* (130) alter_db_optr ::= alter_db_optr cachelast */ - { 204, -1 }, /* (131) alter_topic_optr ::= alter_db_optr */ - { 204, -2 }, /* (132) alter_topic_optr ::= alter_topic_optr partitions */ - { 210, -1 }, /* (133) typename ::= ids */ - { 210, -4 }, /* (134) typename ::= ids LP signed RP */ - { 210, -2 }, /* (135) typename ::= ids UNSIGNED */ - { 239, -1 }, /* (136) signed ::= INTEGER */ - { 239, -2 }, /* (137) signed ::= PLUS INTEGER */ - { 239, -2 }, /* (138) signed ::= MINUS INTEGER */ - { 198, -3 }, /* (139) cmd ::= CREATE TABLE create_table_args */ - { 198, -3 }, /* (140) cmd ::= CREATE TABLE create_stable_args */ - { 198, -3 }, /* (141) cmd ::= CREATE STABLE create_stable_args */ - { 198, -3 }, /* (142) cmd ::= CREATE TABLE create_table_list */ - { 242, -1 }, /* (143) create_table_list ::= create_from_stable */ - { 242, -2 }, /* (144) create_table_list ::= create_table_list create_from_stable */ - { 240, -6 }, /* (145) create_table_args ::= ifnotexists ids cpxName LP columnlist RP */ - { 241, -10 }, /* (146) create_stable_args ::= ifnotexists ids cpxName LP columnlist RP TAGS LP columnlist RP */ - { 243, -10 }, /* (147) create_from_stable ::= ifnotexists ids cpxName USING ids cpxName TAGS LP tagitemlist RP */ - { 243, -13 }, /* (148) create_from_stable ::= ifnotexists ids cpxName USING ids cpxName LP tagNamelist RP TAGS LP tagitemlist RP */ - { 246, -3 }, /* (149) tagNamelist ::= tagNamelist COMMA ids */ - { 246, -1 }, /* (150) tagNamelist ::= ids */ - { 240, -5 }, /* (151) create_table_args ::= ifnotexists ids cpxName AS select */ - { 244, -3 }, /* (152) columnlist ::= columnlist COMMA column */ - { 244, -1 }, /* (153) columnlist ::= column */ - { 248, -2 }, /* (154) column ::= ids typename */ - { 245, -3 }, /* (155) tagitemlist ::= tagitemlist COMMA tagitem */ - { 245, -1 }, /* (156) tagitemlist ::= tagitem */ - { 249, -1 }, /* (157) tagitem ::= INTEGER */ - { 249, -1 }, /* (158) tagitem ::= FLOAT */ - { 249, -1 }, /* (159) tagitem ::= STRING */ - { 249, -1 }, /* (160) tagitem ::= BOOL */ - { 249, -1 }, /* (161) tagitem ::= NULL */ - { 249, -1 }, /* (162) tagitem ::= NOW */ - { 249, -2 }, /* (163) tagitem ::= MINUS INTEGER */ - { 249, -2 }, /* (164) tagitem ::= MINUS FLOAT */ - { 249, -2 }, /* (165) tagitem ::= PLUS INTEGER */ - { 249, -2 }, /* (166) tagitem ::= PLUS FLOAT */ - { 247, -14 }, /* (167) select ::= SELECT selcollist from where_opt interval_option sliding_opt session_option windowstate_option fill_opt groupby_opt having_opt orderby_opt slimit_opt limit_opt */ - { 247, -3 }, /* (168) select ::= LP select RP */ - { 263, -1 }, /* (169) union ::= select */ - { 263, -4 }, /* (170) union ::= union UNION ALL select */ - { 198, -1 }, /* (171) cmd ::= union */ - { 247, -2 }, /* (172) select ::= SELECT selcollist */ - { 264, -2 }, /* (173) sclp ::= selcollist COMMA */ - { 264, 0 }, /* (174) sclp ::= */ - { 250, -4 }, /* (175) selcollist ::= sclp distinct expr as */ - { 250, -2 }, /* (176) selcollist ::= sclp STAR */ - { 267, -2 }, /* (177) as ::= AS ids */ - { 267, -1 }, /* (178) as ::= ids */ - { 267, 0 }, /* (179) as ::= */ - { 265, -1 }, /* (180) distinct ::= DISTINCT */ - { 265, 0 }, /* (181) distinct ::= */ - { 251, -2 }, /* (182) from ::= FROM tablelist */ - { 251, -2 }, /* (183) from ::= FROM sub */ - { 269, -3 }, /* (184) sub ::= LP union RP */ - { 269, -4 }, /* (185) sub ::= LP union RP ids */ - { 269, -6 }, /* (186) sub ::= sub COMMA LP union RP ids */ - { 268, -2 }, /* (187) tablelist ::= ids cpxName */ - { 268, -3 }, /* (188) tablelist ::= ids cpxName ids */ - { 268, -4 }, /* (189) tablelist ::= tablelist COMMA ids cpxName */ - { 268, -5 }, /* (190) tablelist ::= tablelist COMMA ids cpxName ids */ - { 270, -1 }, /* (191) tmvar ::= VARIABLE */ - { 253, -4 }, /* (192) interval_option ::= intervalKey LP tmvar RP */ - { 253, -6 }, /* (193) interval_option ::= intervalKey LP tmvar COMMA tmvar RP */ - { 253, 0 }, /* (194) interval_option ::= */ - { 271, -1 }, /* (195) intervalKey ::= INTERVAL */ - { 271, -1 }, /* (196) intervalKey ::= EVERY */ - { 255, 0 }, /* (197) session_option ::= */ - { 255, -7 }, /* (198) session_option ::= SESSION LP ids cpxName COMMA tmvar RP */ - { 256, 0 }, /* (199) windowstate_option ::= */ - { 256, -4 }, /* (200) windowstate_option ::= STATE_WINDOW LP ids RP */ - { 257, 0 }, /* (201) fill_opt ::= */ - { 257, -6 }, /* (202) fill_opt ::= FILL LP ID COMMA tagitemlist RP */ - { 257, -4 }, /* (203) fill_opt ::= FILL LP ID RP */ - { 254, -4 }, /* (204) sliding_opt ::= SLIDING LP tmvar RP */ - { 254, 0 }, /* (205) sliding_opt ::= */ - { 260, 0 }, /* (206) orderby_opt ::= */ - { 260, -3 }, /* (207) orderby_opt ::= ORDER BY sortlist */ - { 272, -4 }, /* (208) sortlist ::= sortlist COMMA item sortorder */ - { 272, -2 }, /* (209) sortlist ::= item sortorder */ - { 274, -2 }, /* (210) item ::= ids cpxName */ - { 275, -1 }, /* (211) sortorder ::= ASC */ - { 275, -1 }, /* (212) sortorder ::= DESC */ - { 275, 0 }, /* (213) sortorder ::= */ - { 258, 0 }, /* (214) groupby_opt ::= */ - { 258, -3 }, /* (215) groupby_opt ::= GROUP BY grouplist */ - { 276, -3 }, /* (216) grouplist ::= grouplist COMMA item */ - { 276, -1 }, /* (217) grouplist ::= item */ - { 259, 0 }, /* (218) having_opt ::= */ - { 259, -2 }, /* (219) having_opt ::= HAVING expr */ - { 262, 0 }, /* (220) limit_opt ::= */ - { 262, -2 }, /* (221) limit_opt ::= LIMIT signed */ - { 262, -4 }, /* (222) limit_opt ::= LIMIT signed OFFSET signed */ - { 262, -4 }, /* (223) limit_opt ::= LIMIT signed COMMA signed */ - { 261, 0 }, /* (224) slimit_opt ::= */ - { 261, -2 }, /* (225) slimit_opt ::= SLIMIT signed */ - { 261, -4 }, /* (226) slimit_opt ::= SLIMIT signed SOFFSET signed */ - { 261, -4 }, /* (227) slimit_opt ::= SLIMIT signed COMMA signed */ - { 252, 0 }, /* (228) where_opt ::= */ - { 252, -2 }, /* (229) where_opt ::= WHERE expr */ - { 266, -3 }, /* (230) expr ::= LP expr RP */ - { 266, -1 }, /* (231) expr ::= ID */ - { 266, -3 }, /* (232) expr ::= ID DOT ID */ - { 266, -3 }, /* (233) expr ::= ID DOT STAR */ - { 266, -1 }, /* (234) expr ::= INTEGER */ - { 266, -2 }, /* (235) expr ::= MINUS INTEGER */ - { 266, -2 }, /* (236) expr ::= PLUS INTEGER */ - { 266, -1 }, /* (237) expr ::= FLOAT */ - { 266, -2 }, /* (238) expr ::= MINUS FLOAT */ - { 266, -2 }, /* (239) expr ::= PLUS FLOAT */ - { 266, -1 }, /* (240) expr ::= STRING */ - { 266, -1 }, /* (241) expr ::= NOW */ - { 266, -1 }, /* (242) expr ::= VARIABLE */ - { 266, -2 }, /* (243) expr ::= PLUS VARIABLE */ - { 266, -2 }, /* (244) expr ::= MINUS VARIABLE */ - { 266, -1 }, /* (245) expr ::= BOOL */ - { 266, -1 }, /* (246) expr ::= NULL */ - { 266, -4 }, /* (247) expr ::= ID LP exprlist RP */ - { 266, -4 }, /* (248) expr ::= ID LP STAR RP */ - { 266, -3 }, /* (249) expr ::= expr IS NULL */ - { 266, -4 }, /* (250) expr ::= expr IS NOT NULL */ - { 266, -3 }, /* (251) expr ::= expr LT expr */ - { 266, -3 }, /* (252) expr ::= expr GT expr */ - { 266, -3 }, /* (253) expr ::= expr LE expr */ - { 266, -3 }, /* (254) expr ::= expr GE expr */ - { 266, -3 }, /* (255) expr ::= expr NE expr */ - { 266, -3 }, /* (256) expr ::= expr EQ expr */ - { 266, -5 }, /* (257) expr ::= expr BETWEEN expr AND expr */ - { 266, -3 }, /* (258) expr ::= expr AND expr */ - { 266, -3 }, /* (259) expr ::= expr OR expr */ - { 266, -3 }, /* (260) expr ::= expr PLUS expr */ - { 266, -3 }, /* (261) expr ::= expr MINUS expr */ - { 266, -3 }, /* (262) expr ::= expr STAR expr */ - { 266, -3 }, /* (263) expr ::= expr SLASH expr */ - { 266, -3 }, /* (264) expr ::= expr REM expr */ - { 266, -3 }, /* (265) expr ::= expr LIKE expr */ - { 266, -5 }, /* (266) expr ::= expr IN LP exprlist RP */ - { 206, -3 }, /* (267) exprlist ::= exprlist COMMA expritem */ - { 206, -1 }, /* (268) exprlist ::= expritem */ - { 277, -1 }, /* (269) expritem ::= expr */ - { 277, 0 }, /* (270) expritem ::= */ - { 198, -3 }, /* (271) cmd ::= RESET QUERY CACHE */ - { 198, -3 }, /* (272) cmd ::= SYNCDB ids REPLICA */ - { 198, -7 }, /* (273) cmd ::= ALTER TABLE ids cpxName ADD COLUMN columnlist */ - { 198, -7 }, /* (274) cmd ::= ALTER TABLE ids cpxName DROP COLUMN ids */ - { 198, -7 }, /* (275) cmd ::= ALTER TABLE ids cpxName MODIFY COLUMN columnlist */ - { 198, -7 }, /* (276) cmd ::= ALTER TABLE ids cpxName ADD TAG columnlist */ - { 198, -7 }, /* (277) cmd ::= ALTER TABLE ids cpxName DROP TAG ids */ - { 198, -8 }, /* (278) cmd ::= ALTER TABLE ids cpxName CHANGE TAG ids ids */ - { 198, -9 }, /* (279) cmd ::= ALTER TABLE ids cpxName SET TAG ids EQ tagitem */ - { 198, -7 }, /* (280) cmd ::= ALTER TABLE ids cpxName MODIFY TAG columnlist */ - { 198, -7 }, /* (281) cmd ::= ALTER STABLE ids cpxName ADD COLUMN columnlist */ - { 198, -7 }, /* (282) cmd ::= ALTER STABLE ids cpxName DROP COLUMN ids */ - { 198, -7 }, /* (283) cmd ::= ALTER STABLE ids cpxName MODIFY COLUMN columnlist */ - { 198, -7 }, /* (284) cmd ::= ALTER STABLE ids cpxName ADD TAG columnlist */ - { 198, -7 }, /* (285) cmd ::= ALTER STABLE ids cpxName DROP TAG ids */ - { 198, -8 }, /* (286) cmd ::= ALTER STABLE ids cpxName CHANGE TAG ids ids */ - { 198, -9 }, /* (287) cmd ::= ALTER STABLE ids cpxName SET TAG ids EQ tagitem */ - { 198, -7 }, /* (288) cmd ::= ALTER STABLE ids cpxName MODIFY TAG columnlist */ - { 198, -3 }, /* (289) cmd ::= KILL CONNECTION INTEGER */ - { 198, -5 }, /* (290) cmd ::= KILL STREAM INTEGER COLON INTEGER */ - { 198, -5 }, /* (291) cmd ::= KILL QUERY INTEGER COLON INTEGER */ +/* For rule J, yyRuleInfoLhs[J] contains the symbol on the left-hand side +** of that rule */ +static const YYCODETYPE yyRuleInfoLhs[] = { + 196, /* (0) program ::= cmd */ + 197, /* (1) cmd ::= SHOW DATABASES */ + 197, /* (2) cmd ::= SHOW TOPICS */ + 197, /* (3) cmd ::= SHOW FUNCTIONS */ + 197, /* (4) cmd ::= SHOW MNODES */ + 197, /* (5) cmd ::= SHOW DNODES */ + 197, /* (6) cmd ::= SHOW ACCOUNTS */ + 197, /* (7) cmd ::= SHOW USERS */ + 197, /* (8) cmd ::= SHOW MODULES */ + 197, /* (9) cmd ::= SHOW QUERIES */ + 197, /* (10) cmd ::= SHOW CONNECTIONS */ + 197, /* (11) cmd ::= SHOW STREAMS */ + 197, /* (12) cmd ::= SHOW VARIABLES */ + 197, /* (13) cmd ::= SHOW SCORES */ + 197, /* (14) cmd ::= SHOW GRANTS */ + 197, /* (15) cmd ::= SHOW VNODES */ + 197, /* (16) cmd ::= SHOW VNODES ids */ + 199, /* (17) dbPrefix ::= */ + 199, /* (18) dbPrefix ::= ids DOT */ + 200, /* (19) cpxName ::= */ + 200, /* (20) cpxName ::= DOT ids */ + 197, /* (21) cmd ::= SHOW CREATE TABLE ids cpxName */ + 197, /* (22) cmd ::= SHOW CREATE STABLE ids cpxName */ + 197, /* (23) cmd ::= SHOW CREATE DATABASE ids */ + 197, /* (24) cmd ::= SHOW dbPrefix TABLES */ + 197, /* (25) cmd ::= SHOW dbPrefix TABLES LIKE ids */ + 197, /* (26) cmd ::= SHOW dbPrefix STABLES */ + 197, /* (27) cmd ::= SHOW dbPrefix STABLES LIKE ids */ + 197, /* (28) cmd ::= SHOW dbPrefix VGROUPS */ + 197, /* (29) cmd ::= SHOW dbPrefix VGROUPS ids */ + 197, /* (30) cmd ::= DROP TABLE ifexists ids cpxName */ + 197, /* (31) cmd ::= DROP STABLE ifexists ids cpxName */ + 197, /* (32) cmd ::= DROP DATABASE ifexists ids */ + 197, /* (33) cmd ::= DROP TOPIC ifexists ids */ + 197, /* (34) cmd ::= DROP FUNCTION ids */ + 197, /* (35) cmd ::= DROP DNODE ids */ + 197, /* (36) cmd ::= DROP USER ids */ + 197, /* (37) cmd ::= DROP ACCOUNT ids */ + 197, /* (38) cmd ::= USE ids */ + 197, /* (39) cmd ::= DESCRIBE ids cpxName */ + 197, /* (40) cmd ::= DESC ids cpxName */ + 197, /* (41) cmd ::= ALTER USER ids PASS ids */ + 197, /* (42) cmd ::= ALTER USER ids PRIVILEGE ids */ + 197, /* (43) cmd ::= ALTER DNODE ids ids */ + 197, /* (44) cmd ::= ALTER DNODE ids ids ids */ + 197, /* (45) cmd ::= ALTER LOCAL ids */ + 197, /* (46) cmd ::= ALTER LOCAL ids ids */ + 197, /* (47) cmd ::= ALTER DATABASE ids alter_db_optr */ + 197, /* (48) cmd ::= ALTER TOPIC ids alter_topic_optr */ + 197, /* (49) cmd ::= ALTER ACCOUNT ids acct_optr */ + 197, /* (50) cmd ::= ALTER ACCOUNT ids PASS ids acct_optr */ + 197, /* (51) cmd ::= COMPACT VNODES IN LP exprlist RP */ + 198, /* (52) ids ::= ID */ + 198, /* (53) ids ::= STRING */ + 201, /* (54) ifexists ::= IF EXISTS */ + 201, /* (55) ifexists ::= */ + 206, /* (56) ifnotexists ::= IF NOT EXISTS */ + 206, /* (57) ifnotexists ::= */ + 197, /* (58) cmd ::= CREATE DNODE ids */ + 197, /* (59) cmd ::= CREATE ACCOUNT ids PASS ids acct_optr */ + 197, /* (60) cmd ::= CREATE DATABASE ifnotexists ids db_optr */ + 197, /* (61) cmd ::= CREATE TOPIC ifnotexists ids topic_optr */ + 197, /* (62) cmd ::= CREATE FUNCTION ids AS ids OUTPUTTYPE typename bufsize */ + 197, /* (63) cmd ::= CREATE AGGREGATE FUNCTION ids AS ids OUTPUTTYPE typename bufsize */ + 197, /* (64) cmd ::= CREATE USER ids PASS ids */ + 210, /* (65) bufsize ::= */ + 210, /* (66) bufsize ::= BUFSIZE INTEGER */ + 211, /* (67) pps ::= */ + 211, /* (68) pps ::= PPS INTEGER */ + 212, /* (69) tseries ::= */ + 212, /* (70) tseries ::= TSERIES INTEGER */ + 213, /* (71) dbs ::= */ + 213, /* (72) dbs ::= DBS INTEGER */ + 214, /* (73) streams ::= */ + 214, /* (74) streams ::= STREAMS INTEGER */ + 215, /* (75) storage ::= */ + 215, /* (76) storage ::= STORAGE INTEGER */ + 216, /* (77) qtime ::= */ + 216, /* (78) qtime ::= QTIME INTEGER */ + 217, /* (79) users ::= */ + 217, /* (80) users ::= USERS INTEGER */ + 218, /* (81) conns ::= */ + 218, /* (82) conns ::= CONNS INTEGER */ + 219, /* (83) state ::= */ + 219, /* (84) state ::= STATE ids */ + 204, /* (85) acct_optr ::= pps tseries storage streams qtime dbs users conns state */ + 220, /* (86) intitemlist ::= intitemlist COMMA intitem */ + 220, /* (87) intitemlist ::= intitem */ + 221, /* (88) intitem ::= INTEGER */ + 222, /* (89) keep ::= KEEP intitemlist */ + 223, /* (90) cache ::= CACHE INTEGER */ + 224, /* (91) replica ::= REPLICA INTEGER */ + 225, /* (92) quorum ::= QUORUM INTEGER */ + 226, /* (93) days ::= DAYS INTEGER */ + 227, /* (94) minrows ::= MINROWS INTEGER */ + 228, /* (95) maxrows ::= MAXROWS INTEGER */ + 229, /* (96) blocks ::= BLOCKS INTEGER */ + 230, /* (97) ctime ::= CTIME INTEGER */ + 231, /* (98) wal ::= WAL INTEGER */ + 232, /* (99) fsync ::= FSYNC INTEGER */ + 233, /* (100) comp ::= COMP INTEGER */ + 234, /* (101) prec ::= PRECISION STRING */ + 235, /* (102) update ::= UPDATE INTEGER */ + 236, /* (103) cachelast ::= CACHELAST INTEGER */ + 237, /* (104) partitions ::= PARTITIONS INTEGER */ + 207, /* (105) db_optr ::= */ + 207, /* (106) db_optr ::= db_optr cache */ + 207, /* (107) db_optr ::= db_optr replica */ + 207, /* (108) db_optr ::= db_optr quorum */ + 207, /* (109) db_optr ::= db_optr days */ + 207, /* (110) db_optr ::= db_optr minrows */ + 207, /* (111) db_optr ::= db_optr maxrows */ + 207, /* (112) db_optr ::= db_optr blocks */ + 207, /* (113) db_optr ::= db_optr ctime */ + 207, /* (114) db_optr ::= db_optr wal */ + 207, /* (115) db_optr ::= db_optr fsync */ + 207, /* (116) db_optr ::= db_optr comp */ + 207, /* (117) db_optr ::= db_optr prec */ + 207, /* (118) db_optr ::= db_optr keep */ + 207, /* (119) db_optr ::= db_optr update */ + 207, /* (120) db_optr ::= db_optr cachelast */ + 208, /* (121) topic_optr ::= db_optr */ + 208, /* (122) topic_optr ::= topic_optr partitions */ + 202, /* (123) alter_db_optr ::= */ + 202, /* (124) alter_db_optr ::= alter_db_optr replica */ + 202, /* (125) alter_db_optr ::= alter_db_optr quorum */ + 202, /* (126) alter_db_optr ::= alter_db_optr keep */ + 202, /* (127) alter_db_optr ::= alter_db_optr blocks */ + 202, /* (128) alter_db_optr ::= alter_db_optr comp */ + 202, /* (129) alter_db_optr ::= alter_db_optr update */ + 202, /* (130) alter_db_optr ::= alter_db_optr cachelast */ + 203, /* (131) alter_topic_optr ::= alter_db_optr */ + 203, /* (132) alter_topic_optr ::= alter_topic_optr partitions */ + 209, /* (133) typename ::= ids */ + 209, /* (134) typename ::= ids LP signed RP */ + 209, /* (135) typename ::= ids UNSIGNED */ + 238, /* (136) signed ::= INTEGER */ + 238, /* (137) signed ::= PLUS INTEGER */ + 238, /* (138) signed ::= MINUS INTEGER */ + 197, /* (139) cmd ::= CREATE TABLE create_table_args */ + 197, /* (140) cmd ::= CREATE TABLE create_stable_args */ + 197, /* (141) cmd ::= CREATE STABLE create_stable_args */ + 197, /* (142) cmd ::= CREATE TABLE create_table_list */ + 241, /* (143) create_table_list ::= create_from_stable */ + 241, /* (144) create_table_list ::= create_table_list create_from_stable */ + 239, /* (145) create_table_args ::= ifnotexists ids cpxName LP columnlist RP */ + 240, /* (146) create_stable_args ::= ifnotexists ids cpxName LP columnlist RP TAGS LP columnlist RP */ + 242, /* (147) create_from_stable ::= ifnotexists ids cpxName USING ids cpxName TAGS LP tagitemlist RP */ + 242, /* (148) create_from_stable ::= ifnotexists ids cpxName USING ids cpxName LP tagNamelist RP TAGS LP tagitemlist RP */ + 245, /* (149) tagNamelist ::= tagNamelist COMMA ids */ + 245, /* (150) tagNamelist ::= ids */ + 239, /* (151) create_table_args ::= ifnotexists ids cpxName AS select */ + 243, /* (152) columnlist ::= columnlist COMMA column */ + 243, /* (153) columnlist ::= column */ + 247, /* (154) column ::= ids typename */ + 244, /* (155) tagitemlist ::= tagitemlist COMMA tagitem */ + 244, /* (156) tagitemlist ::= tagitem */ + 248, /* (157) tagitem ::= INTEGER */ + 248, /* (158) tagitem ::= FLOAT */ + 248, /* (159) tagitem ::= STRING */ + 248, /* (160) tagitem ::= BOOL */ + 248, /* (161) tagitem ::= NULL */ + 248, /* (162) tagitem ::= NOW */ + 248, /* (163) tagitem ::= MINUS INTEGER */ + 248, /* (164) tagitem ::= MINUS FLOAT */ + 248, /* (165) tagitem ::= PLUS INTEGER */ + 248, /* (166) tagitem ::= PLUS FLOAT */ + 246, /* (167) select ::= SELECT selcollist from where_opt interval_option sliding_opt session_option windowstate_option fill_opt groupby_opt having_opt orderby_opt slimit_opt limit_opt */ + 246, /* (168) select ::= LP select RP */ + 262, /* (169) union ::= select */ + 262, /* (170) union ::= union UNION ALL select */ + 197, /* (171) cmd ::= union */ + 246, /* (172) select ::= SELECT selcollist */ + 263, /* (173) sclp ::= selcollist COMMA */ + 263, /* (174) sclp ::= */ + 249, /* (175) selcollist ::= sclp distinct expr as */ + 249, /* (176) selcollist ::= sclp STAR */ + 266, /* (177) as ::= AS ids */ + 266, /* (178) as ::= ids */ + 266, /* (179) as ::= */ + 264, /* (180) distinct ::= DISTINCT */ + 264, /* (181) distinct ::= */ + 250, /* (182) from ::= FROM tablelist */ + 250, /* (183) from ::= FROM sub */ + 268, /* (184) sub ::= LP union RP */ + 268, /* (185) sub ::= LP union RP ids */ + 268, /* (186) sub ::= sub COMMA LP union RP ids */ + 267, /* (187) tablelist ::= ids cpxName */ + 267, /* (188) tablelist ::= ids cpxName ids */ + 267, /* (189) tablelist ::= tablelist COMMA ids cpxName */ + 267, /* (190) tablelist ::= tablelist COMMA ids cpxName ids */ + 269, /* (191) tmvar ::= VARIABLE */ + 252, /* (192) interval_option ::= intervalKey LP tmvar RP */ + 252, /* (193) interval_option ::= intervalKey LP tmvar COMMA tmvar RP */ + 252, /* (194) interval_option ::= */ + 270, /* (195) intervalKey ::= INTERVAL */ + 270, /* (196) intervalKey ::= EVERY */ + 254, /* (197) session_option ::= */ + 254, /* (198) session_option ::= SESSION LP ids cpxName COMMA tmvar RP */ + 255, /* (199) windowstate_option ::= */ + 255, /* (200) windowstate_option ::= STATE_WINDOW LP ids RP */ + 256, /* (201) fill_opt ::= */ + 256, /* (202) fill_opt ::= FILL LP ID COMMA tagitemlist RP */ + 256, /* (203) fill_opt ::= FILL LP ID RP */ + 253, /* (204) sliding_opt ::= SLIDING LP tmvar RP */ + 253, /* (205) sliding_opt ::= */ + 259, /* (206) orderby_opt ::= */ + 259, /* (207) orderby_opt ::= ORDER BY sortlist */ + 271, /* (208) sortlist ::= sortlist COMMA item sortorder */ + 271, /* (209) sortlist ::= item sortorder */ + 273, /* (210) item ::= ids cpxName */ + 274, /* (211) sortorder ::= ASC */ + 274, /* (212) sortorder ::= DESC */ + 274, /* (213) sortorder ::= */ + 257, /* (214) groupby_opt ::= */ + 257, /* (215) groupby_opt ::= GROUP BY grouplist */ + 275, /* (216) grouplist ::= grouplist COMMA item */ + 275, /* (217) grouplist ::= item */ + 258, /* (218) having_opt ::= */ + 258, /* (219) having_opt ::= HAVING expr */ + 261, /* (220) limit_opt ::= */ + 261, /* (221) limit_opt ::= LIMIT signed */ + 261, /* (222) limit_opt ::= LIMIT signed OFFSET signed */ + 261, /* (223) limit_opt ::= LIMIT signed COMMA signed */ + 260, /* (224) slimit_opt ::= */ + 260, /* (225) slimit_opt ::= SLIMIT signed */ + 260, /* (226) slimit_opt ::= SLIMIT signed SOFFSET signed */ + 260, /* (227) slimit_opt ::= SLIMIT signed COMMA signed */ + 251, /* (228) where_opt ::= */ + 251, /* (229) where_opt ::= WHERE expr */ + 265, /* (230) expr ::= LP expr RP */ + 265, /* (231) expr ::= ID */ + 265, /* (232) expr ::= ID DOT ID */ + 265, /* (233) expr ::= ID DOT STAR */ + 265, /* (234) expr ::= INTEGER */ + 265, /* (235) expr ::= MINUS INTEGER */ + 265, /* (236) expr ::= PLUS INTEGER */ + 265, /* (237) expr ::= FLOAT */ + 265, /* (238) expr ::= MINUS FLOAT */ + 265, /* (239) expr ::= PLUS FLOAT */ + 265, /* (240) expr ::= STRING */ + 265, /* (241) expr ::= NOW */ + 265, /* (242) expr ::= VARIABLE */ + 265, /* (243) expr ::= PLUS VARIABLE */ + 265, /* (244) expr ::= MINUS VARIABLE */ + 265, /* (245) expr ::= BOOL */ + 265, /* (246) expr ::= NULL */ + 265, /* (247) expr ::= ID LP exprlist RP */ + 265, /* (248) expr ::= ID LP STAR RP */ + 265, /* (249) expr ::= expr IS NULL */ + 265, /* (250) expr ::= expr IS NOT NULL */ + 265, /* (251) expr ::= expr LT expr */ + 265, /* (252) expr ::= expr GT expr */ + 265, /* (253) expr ::= expr LE expr */ + 265, /* (254) expr ::= expr GE expr */ + 265, /* (255) expr ::= expr NE expr */ + 265, /* (256) expr ::= expr EQ expr */ + 265, /* (257) expr ::= expr BETWEEN expr AND expr */ + 265, /* (258) expr ::= expr AND expr */ + 265, /* (259) expr ::= expr OR expr */ + 265, /* (260) expr ::= expr PLUS expr */ + 265, /* (261) expr ::= expr MINUS expr */ + 265, /* (262) expr ::= expr STAR expr */ + 265, /* (263) expr ::= expr SLASH expr */ + 265, /* (264) expr ::= expr REM expr */ + 265, /* (265) expr ::= expr LIKE expr */ + 265, /* (266) expr ::= expr MATCH expr */ + 265, /* (267) expr ::= expr IN LP exprlist RP */ + 205, /* (268) exprlist ::= exprlist COMMA expritem */ + 205, /* (269) exprlist ::= expritem */ + 276, /* (270) expritem ::= expr */ + 276, /* (271) expritem ::= */ + 197, /* (272) cmd ::= RESET QUERY CACHE */ + 197, /* (273) cmd ::= SYNCDB ids REPLICA */ + 197, /* (274) cmd ::= ALTER TABLE ids cpxName ADD COLUMN columnlist */ + 197, /* (275) cmd ::= ALTER TABLE ids cpxName DROP COLUMN ids */ + 197, /* (276) cmd ::= ALTER TABLE ids cpxName MODIFY COLUMN columnlist */ + 197, /* (277) cmd ::= ALTER TABLE ids cpxName ADD TAG columnlist */ + 197, /* (278) cmd ::= ALTER TABLE ids cpxName DROP TAG ids */ + 197, /* (279) cmd ::= ALTER TABLE ids cpxName CHANGE TAG ids ids */ + 197, /* (280) cmd ::= ALTER TABLE ids cpxName SET TAG ids EQ tagitem */ + 197, /* (281) cmd ::= ALTER TABLE ids cpxName MODIFY TAG columnlist */ + 197, /* (282) cmd ::= ALTER STABLE ids cpxName ADD COLUMN columnlist */ + 197, /* (283) cmd ::= ALTER STABLE ids cpxName DROP COLUMN ids */ + 197, /* (284) cmd ::= ALTER STABLE ids cpxName MODIFY COLUMN columnlist */ + 197, /* (285) cmd ::= ALTER STABLE ids cpxName ADD TAG columnlist */ + 197, /* (286) cmd ::= ALTER STABLE ids cpxName DROP TAG ids */ + 197, /* (287) cmd ::= ALTER STABLE ids cpxName CHANGE TAG ids ids */ + 197, /* (288) cmd ::= ALTER STABLE ids cpxName SET TAG ids EQ tagitem */ + 197, /* (289) cmd ::= ALTER STABLE ids cpxName MODIFY TAG columnlist */ + 197, /* (290) cmd ::= KILL CONNECTION INTEGER */ + 197, /* (291) cmd ::= KILL STREAM INTEGER COLON INTEGER */ + 197, /* (292) cmd ::= KILL QUERY INTEGER COLON INTEGER */ +}; + +/* For rule J, yyRuleInfoNRhs[J] contains the negative of the number +** of symbols on the right-hand side of that rule. */ +static const signed char yyRuleInfoNRhs[] = { + -1, /* (0) program ::= cmd */ + -2, /* (1) cmd ::= SHOW DATABASES */ + -2, /* (2) cmd ::= SHOW TOPICS */ + -2, /* (3) cmd ::= SHOW FUNCTIONS */ + -2, /* (4) cmd ::= SHOW MNODES */ + -2, /* (5) cmd ::= SHOW DNODES */ + -2, /* (6) cmd ::= SHOW ACCOUNTS */ + -2, /* (7) cmd ::= SHOW USERS */ + -2, /* (8) cmd ::= SHOW MODULES */ + -2, /* (9) cmd ::= SHOW QUERIES */ + -2, /* (10) cmd ::= SHOW CONNECTIONS */ + -2, /* (11) cmd ::= SHOW STREAMS */ + -2, /* (12) cmd ::= SHOW VARIABLES */ + -2, /* (13) cmd ::= SHOW SCORES */ + -2, /* (14) cmd ::= SHOW GRANTS */ + -2, /* (15) cmd ::= SHOW VNODES */ + -3, /* (16) cmd ::= SHOW VNODES ids */ + 0, /* (17) dbPrefix ::= */ + -2, /* (18) dbPrefix ::= ids DOT */ + 0, /* (19) cpxName ::= */ + -2, /* (20) cpxName ::= DOT ids */ + -5, /* (21) cmd ::= SHOW CREATE TABLE ids cpxName */ + -5, /* (22) cmd ::= SHOW CREATE STABLE ids cpxName */ + -4, /* (23) cmd ::= SHOW CREATE DATABASE ids */ + -3, /* (24) cmd ::= SHOW dbPrefix TABLES */ + -5, /* (25) cmd ::= SHOW dbPrefix TABLES LIKE ids */ + -3, /* (26) cmd ::= SHOW dbPrefix STABLES */ + -5, /* (27) cmd ::= SHOW dbPrefix STABLES LIKE ids */ + -3, /* (28) cmd ::= SHOW dbPrefix VGROUPS */ + -4, /* (29) cmd ::= SHOW dbPrefix VGROUPS ids */ + -5, /* (30) cmd ::= DROP TABLE ifexists ids cpxName */ + -5, /* (31) cmd ::= DROP STABLE ifexists ids cpxName */ + -4, /* (32) cmd ::= DROP DATABASE ifexists ids */ + -4, /* (33) cmd ::= DROP TOPIC ifexists ids */ + -3, /* (34) cmd ::= DROP FUNCTION ids */ + -3, /* (35) cmd ::= DROP DNODE ids */ + -3, /* (36) cmd ::= DROP USER ids */ + -3, /* (37) cmd ::= DROP ACCOUNT ids */ + -2, /* (38) cmd ::= USE ids */ + -3, /* (39) cmd ::= DESCRIBE ids cpxName */ + -3, /* (40) cmd ::= DESC ids cpxName */ + -5, /* (41) cmd ::= ALTER USER ids PASS ids */ + -5, /* (42) cmd ::= ALTER USER ids PRIVILEGE ids */ + -4, /* (43) cmd ::= ALTER DNODE ids ids */ + -5, /* (44) cmd ::= ALTER DNODE ids ids ids */ + -3, /* (45) cmd ::= ALTER LOCAL ids */ + -4, /* (46) cmd ::= ALTER LOCAL ids ids */ + -4, /* (47) cmd ::= ALTER DATABASE ids alter_db_optr */ + -4, /* (48) cmd ::= ALTER TOPIC ids alter_topic_optr */ + -4, /* (49) cmd ::= ALTER ACCOUNT ids acct_optr */ + -6, /* (50) cmd ::= ALTER ACCOUNT ids PASS ids acct_optr */ + -6, /* (51) cmd ::= COMPACT VNODES IN LP exprlist RP */ + -1, /* (52) ids ::= ID */ + -1, /* (53) ids ::= STRING */ + -2, /* (54) ifexists ::= IF EXISTS */ + 0, /* (55) ifexists ::= */ + -3, /* (56) ifnotexists ::= IF NOT EXISTS */ + 0, /* (57) ifnotexists ::= */ + -3, /* (58) cmd ::= CREATE DNODE ids */ + -6, /* (59) cmd ::= CREATE ACCOUNT ids PASS ids acct_optr */ + -5, /* (60) cmd ::= CREATE DATABASE ifnotexists ids db_optr */ + -5, /* (61) cmd ::= CREATE TOPIC ifnotexists ids topic_optr */ + -8, /* (62) cmd ::= CREATE FUNCTION ids AS ids OUTPUTTYPE typename bufsize */ + -9, /* (63) cmd ::= CREATE AGGREGATE FUNCTION ids AS ids OUTPUTTYPE typename bufsize */ + -5, /* (64) cmd ::= CREATE USER ids PASS ids */ + 0, /* (65) bufsize ::= */ + -2, /* (66) bufsize ::= BUFSIZE INTEGER */ + 0, /* (67) pps ::= */ + -2, /* (68) pps ::= PPS INTEGER */ + 0, /* (69) tseries ::= */ + -2, /* (70) tseries ::= TSERIES INTEGER */ + 0, /* (71) dbs ::= */ + -2, /* (72) dbs ::= DBS INTEGER */ + 0, /* (73) streams ::= */ + -2, /* (74) streams ::= STREAMS INTEGER */ + 0, /* (75) storage ::= */ + -2, /* (76) storage ::= STORAGE INTEGER */ + 0, /* (77) qtime ::= */ + -2, /* (78) qtime ::= QTIME INTEGER */ + 0, /* (79) users ::= */ + -2, /* (80) users ::= USERS INTEGER */ + 0, /* (81) conns ::= */ + -2, /* (82) conns ::= CONNS INTEGER */ + 0, /* (83) state ::= */ + -2, /* (84) state ::= STATE ids */ + -9, /* (85) acct_optr ::= pps tseries storage streams qtime dbs users conns state */ + -3, /* (86) intitemlist ::= intitemlist COMMA intitem */ + -1, /* (87) intitemlist ::= intitem */ + -1, /* (88) intitem ::= INTEGER */ + -2, /* (89) keep ::= KEEP intitemlist */ + -2, /* (90) cache ::= CACHE INTEGER */ + -2, /* (91) replica ::= REPLICA INTEGER */ + -2, /* (92) quorum ::= QUORUM INTEGER */ + -2, /* (93) days ::= DAYS INTEGER */ + -2, /* (94) minrows ::= MINROWS INTEGER */ + -2, /* (95) maxrows ::= MAXROWS INTEGER */ + -2, /* (96) blocks ::= BLOCKS INTEGER */ + -2, /* (97) ctime ::= CTIME INTEGER */ + -2, /* (98) wal ::= WAL INTEGER */ + -2, /* (99) fsync ::= FSYNC INTEGER */ + -2, /* (100) comp ::= COMP INTEGER */ + -2, /* (101) prec ::= PRECISION STRING */ + -2, /* (102) update ::= UPDATE INTEGER */ + -2, /* (103) cachelast ::= CACHELAST INTEGER */ + -2, /* (104) partitions ::= PARTITIONS INTEGER */ + 0, /* (105) db_optr ::= */ + -2, /* (106) db_optr ::= db_optr cache */ + -2, /* (107) db_optr ::= db_optr replica */ + -2, /* (108) db_optr ::= db_optr quorum */ + -2, /* (109) db_optr ::= db_optr days */ + -2, /* (110) db_optr ::= db_optr minrows */ + -2, /* (111) db_optr ::= db_optr maxrows */ + -2, /* (112) db_optr ::= db_optr blocks */ + -2, /* (113) db_optr ::= db_optr ctime */ + -2, /* (114) db_optr ::= db_optr wal */ + -2, /* (115) db_optr ::= db_optr fsync */ + -2, /* (116) db_optr ::= db_optr comp */ + -2, /* (117) db_optr ::= db_optr prec */ + -2, /* (118) db_optr ::= db_optr keep */ + -2, /* (119) db_optr ::= db_optr update */ + -2, /* (120) db_optr ::= db_optr cachelast */ + -1, /* (121) topic_optr ::= db_optr */ + -2, /* (122) topic_optr ::= topic_optr partitions */ + 0, /* (123) alter_db_optr ::= */ + -2, /* (124) alter_db_optr ::= alter_db_optr replica */ + -2, /* (125) alter_db_optr ::= alter_db_optr quorum */ + -2, /* (126) alter_db_optr ::= alter_db_optr keep */ + -2, /* (127) alter_db_optr ::= alter_db_optr blocks */ + -2, /* (128) alter_db_optr ::= alter_db_optr comp */ + -2, /* (129) alter_db_optr ::= alter_db_optr update */ + -2, /* (130) alter_db_optr ::= alter_db_optr cachelast */ + -1, /* (131) alter_topic_optr ::= alter_db_optr */ + -2, /* (132) alter_topic_optr ::= alter_topic_optr partitions */ + -1, /* (133) typename ::= ids */ + -4, /* (134) typename ::= ids LP signed RP */ + -2, /* (135) typename ::= ids UNSIGNED */ + -1, /* (136) signed ::= INTEGER */ + -2, /* (137) signed ::= PLUS INTEGER */ + -2, /* (138) signed ::= MINUS INTEGER */ + -3, /* (139) cmd ::= CREATE TABLE create_table_args */ + -3, /* (140) cmd ::= CREATE TABLE create_stable_args */ + -3, /* (141) cmd ::= CREATE STABLE create_stable_args */ + -3, /* (142) cmd ::= CREATE TABLE create_table_list */ + -1, /* (143) create_table_list ::= create_from_stable */ + -2, /* (144) create_table_list ::= create_table_list create_from_stable */ + -6, /* (145) create_table_args ::= ifnotexists ids cpxName LP columnlist RP */ + -10, /* (146) create_stable_args ::= ifnotexists ids cpxName LP columnlist RP TAGS LP columnlist RP */ + -10, /* (147) create_from_stable ::= ifnotexists ids cpxName USING ids cpxName TAGS LP tagitemlist RP */ + -13, /* (148) create_from_stable ::= ifnotexists ids cpxName USING ids cpxName LP tagNamelist RP TAGS LP tagitemlist RP */ + -3, /* (149) tagNamelist ::= tagNamelist COMMA ids */ + -1, /* (150) tagNamelist ::= ids */ + -5, /* (151) create_table_args ::= ifnotexists ids cpxName AS select */ + -3, /* (152) columnlist ::= columnlist COMMA column */ + -1, /* (153) columnlist ::= column */ + -2, /* (154) column ::= ids typename */ + -3, /* (155) tagitemlist ::= tagitemlist COMMA tagitem */ + -1, /* (156) tagitemlist ::= tagitem */ + -1, /* (157) tagitem ::= INTEGER */ + -1, /* (158) tagitem ::= FLOAT */ + -1, /* (159) tagitem ::= STRING */ + -1, /* (160) tagitem ::= BOOL */ + -1, /* (161) tagitem ::= NULL */ + -1, /* (162) tagitem ::= NOW */ + -2, /* (163) tagitem ::= MINUS INTEGER */ + -2, /* (164) tagitem ::= MINUS FLOAT */ + -2, /* (165) tagitem ::= PLUS INTEGER */ + -2, /* (166) tagitem ::= PLUS FLOAT */ + -14, /* (167) select ::= SELECT selcollist from where_opt interval_option sliding_opt session_option windowstate_option fill_opt groupby_opt having_opt orderby_opt slimit_opt limit_opt */ + -3, /* (168) select ::= LP select RP */ + -1, /* (169) union ::= select */ + -4, /* (170) union ::= union UNION ALL select */ + -1, /* (171) cmd ::= union */ + -2, /* (172) select ::= SELECT selcollist */ + -2, /* (173) sclp ::= selcollist COMMA */ + 0, /* (174) sclp ::= */ + -4, /* (175) selcollist ::= sclp distinct expr as */ + -2, /* (176) selcollist ::= sclp STAR */ + -2, /* (177) as ::= AS ids */ + -1, /* (178) as ::= ids */ + 0, /* (179) as ::= */ + -1, /* (180) distinct ::= DISTINCT */ + 0, /* (181) distinct ::= */ + -2, /* (182) from ::= FROM tablelist */ + -2, /* (183) from ::= FROM sub */ + -3, /* (184) sub ::= LP union RP */ + -4, /* (185) sub ::= LP union RP ids */ + -6, /* (186) sub ::= sub COMMA LP union RP ids */ + -2, /* (187) tablelist ::= ids cpxName */ + -3, /* (188) tablelist ::= ids cpxName ids */ + -4, /* (189) tablelist ::= tablelist COMMA ids cpxName */ + -5, /* (190) tablelist ::= tablelist COMMA ids cpxName ids */ + -1, /* (191) tmvar ::= VARIABLE */ + -4, /* (192) interval_option ::= intervalKey LP tmvar RP */ + -6, /* (193) interval_option ::= intervalKey LP tmvar COMMA tmvar RP */ + 0, /* (194) interval_option ::= */ + -1, /* (195) intervalKey ::= INTERVAL */ + -1, /* (196) intervalKey ::= EVERY */ + 0, /* (197) session_option ::= */ + -7, /* (198) session_option ::= SESSION LP ids cpxName COMMA tmvar RP */ + 0, /* (199) windowstate_option ::= */ + -4, /* (200) windowstate_option ::= STATE_WINDOW LP ids RP */ + 0, /* (201) fill_opt ::= */ + -6, /* (202) fill_opt ::= FILL LP ID COMMA tagitemlist RP */ + -4, /* (203) fill_opt ::= FILL LP ID RP */ + -4, /* (204) sliding_opt ::= SLIDING LP tmvar RP */ + 0, /* (205) sliding_opt ::= */ + 0, /* (206) orderby_opt ::= */ + -3, /* (207) orderby_opt ::= ORDER BY sortlist */ + -4, /* (208) sortlist ::= sortlist COMMA item sortorder */ + -2, /* (209) sortlist ::= item sortorder */ + -2, /* (210) item ::= ids cpxName */ + -1, /* (211) sortorder ::= ASC */ + -1, /* (212) sortorder ::= DESC */ + 0, /* (213) sortorder ::= */ + 0, /* (214) groupby_opt ::= */ + -3, /* (215) groupby_opt ::= GROUP BY grouplist */ + -3, /* (216) grouplist ::= grouplist COMMA item */ + -1, /* (217) grouplist ::= item */ + 0, /* (218) having_opt ::= */ + -2, /* (219) having_opt ::= HAVING expr */ + 0, /* (220) limit_opt ::= */ + -2, /* (221) limit_opt ::= LIMIT signed */ + -4, /* (222) limit_opt ::= LIMIT signed OFFSET signed */ + -4, /* (223) limit_opt ::= LIMIT signed COMMA signed */ + 0, /* (224) slimit_opt ::= */ + -2, /* (225) slimit_opt ::= SLIMIT signed */ + -4, /* (226) slimit_opt ::= SLIMIT signed SOFFSET signed */ + -4, /* (227) slimit_opt ::= SLIMIT signed COMMA signed */ + 0, /* (228) where_opt ::= */ + -2, /* (229) where_opt ::= WHERE expr */ + -3, /* (230) expr ::= LP expr RP */ + -1, /* (231) expr ::= ID */ + -3, /* (232) expr ::= ID DOT ID */ + -3, /* (233) expr ::= ID DOT STAR */ + -1, /* (234) expr ::= INTEGER */ + -2, /* (235) expr ::= MINUS INTEGER */ + -2, /* (236) expr ::= PLUS INTEGER */ + -1, /* (237) expr ::= FLOAT */ + -2, /* (238) expr ::= MINUS FLOAT */ + -2, /* (239) expr ::= PLUS FLOAT */ + -1, /* (240) expr ::= STRING */ + -1, /* (241) expr ::= NOW */ + -1, /* (242) expr ::= VARIABLE */ + -2, /* (243) expr ::= PLUS VARIABLE */ + -2, /* (244) expr ::= MINUS VARIABLE */ + -1, /* (245) expr ::= BOOL */ + -1, /* (246) expr ::= NULL */ + -4, /* (247) expr ::= ID LP exprlist RP */ + -4, /* (248) expr ::= ID LP STAR RP */ + -3, /* (249) expr ::= expr IS NULL */ + -4, /* (250) expr ::= expr IS NOT NULL */ + -3, /* (251) expr ::= expr LT expr */ + -3, /* (252) expr ::= expr GT expr */ + -3, /* (253) expr ::= expr LE expr */ + -3, /* (254) expr ::= expr GE expr */ + -3, /* (255) expr ::= expr NE expr */ + -3, /* (256) expr ::= expr EQ expr */ + -5, /* (257) expr ::= expr BETWEEN expr AND expr */ + -3, /* (258) expr ::= expr AND expr */ + -3, /* (259) expr ::= expr OR expr */ + -3, /* (260) expr ::= expr PLUS expr */ + -3, /* (261) expr ::= expr MINUS expr */ + -3, /* (262) expr ::= expr STAR expr */ + -3, /* (263) expr ::= expr SLASH expr */ + -3, /* (264) expr ::= expr REM expr */ + -3, /* (265) expr ::= expr LIKE expr */ + -3, /* (266) expr ::= expr MATCH expr */ + -5, /* (267) expr ::= expr IN LP exprlist RP */ + -3, /* (268) exprlist ::= exprlist COMMA expritem */ + -1, /* (269) exprlist ::= expritem */ + -1, /* (270) expritem ::= expr */ + 0, /* (271) expritem ::= */ + -3, /* (272) cmd ::= RESET QUERY CACHE */ + -3, /* (273) cmd ::= SYNCDB ids REPLICA */ + -7, /* (274) cmd ::= ALTER TABLE ids cpxName ADD COLUMN columnlist */ + -7, /* (275) cmd ::= ALTER TABLE ids cpxName DROP COLUMN ids */ + -7, /* (276) cmd ::= ALTER TABLE ids cpxName MODIFY COLUMN columnlist */ + -7, /* (277) cmd ::= ALTER TABLE ids cpxName ADD TAG columnlist */ + -7, /* (278) cmd ::= ALTER TABLE ids cpxName DROP TAG ids */ + -8, /* (279) cmd ::= ALTER TABLE ids cpxName CHANGE TAG ids ids */ + -9, /* (280) cmd ::= ALTER TABLE ids cpxName SET TAG ids EQ tagitem */ + -7, /* (281) cmd ::= ALTER TABLE ids cpxName MODIFY TAG columnlist */ + -7, /* (282) cmd ::= ALTER STABLE ids cpxName ADD COLUMN columnlist */ + -7, /* (283) cmd ::= ALTER STABLE ids cpxName DROP COLUMN ids */ + -7, /* (284) cmd ::= ALTER STABLE ids cpxName MODIFY COLUMN columnlist */ + -7, /* (285) cmd ::= ALTER STABLE ids cpxName ADD TAG columnlist */ + -7, /* (286) cmd ::= ALTER STABLE ids cpxName DROP TAG ids */ + -8, /* (287) cmd ::= ALTER STABLE ids cpxName CHANGE TAG ids ids */ + -9, /* (288) cmd ::= ALTER STABLE ids cpxName SET TAG ids EQ tagitem */ + -7, /* (289) cmd ::= ALTER STABLE ids cpxName MODIFY TAG columnlist */ + -3, /* (290) cmd ::= KILL CONNECTION INTEGER */ + -5, /* (291) cmd ::= KILL STREAM INTEGER COLON INTEGER */ + -5, /* (292) cmd ::= KILL QUERY INTEGER COLON INTEGER */ }; static void yy_accept(yyParser*); /* Forward Declaration */ @@ -2139,30 +2470,34 @@ static void yy_accept(yyParser*); /* Forward Declaration */ ** only called from one place, optimizing compilers will in-line it, which ** means that the extra parameters have no performance impact. */ -static void yy_reduce( +static YYACTIONTYPE yy_reduce( yyParser *yypParser, /* The parser */ unsigned int yyruleno, /* Number of the rule by which to reduce */ int yyLookahead, /* Lookahead token, or YYNOCODE if none */ ParseTOKENTYPE yyLookaheadToken /* Value of the lookahead token */ + ParseCTX_PDECL /* %extra_context */ ){ int yygoto; /* The next state */ - int yyact; /* The next action */ + YYACTIONTYPE yyact; /* The next action */ yyStackEntry *yymsp; /* The top of the parser's stack */ int yysize; /* Amount to pop the stack */ - ParseARG_FETCH; + ParseARG_FETCH (void)yyLookahead; (void)yyLookaheadToken; yymsp = yypParser->yytos; #ifndef NDEBUG if( yyTraceFILE && yyruleno<(int)(sizeof(yyRuleName)/sizeof(yyRuleName[0])) ){ - yysize = yyRuleInfo[yyruleno].nrhs; + yysize = yyRuleInfoNRhs[yyruleno]; if( yysize ){ - fprintf(yyTraceFILE, "%sReduce %d [%s], go to state %d.\n", + fprintf(yyTraceFILE, "%sReduce %d [%s]%s, pop back to state %d.\n", yyTracePrompt, - yyruleno, yyRuleName[yyruleno], yymsp[yysize].stateno); + yyruleno, yyRuleName[yyruleno], + yyrulenoyytos - yypParser->yystack)>yypParser->yyhwm ){ yypParser->yyhwm++; @@ -2180,13 +2515,19 @@ static void yy_reduce( #if YYSTACKDEPTH>0 if( yypParser->yytos>=yypParser->yystackEnd ){ yyStackOverflow(yypParser); - return; + /* The call to yyStackOverflow() above pops the stack until it is + ** empty, causing the main parser loop to exit. So the return value + ** is never used and does not matter. */ + return 0; } #else if( yypParser->yytos>=&yypParser->yystack[yypParser->yystksz-1] ){ if( yyGrowStack(yypParser) ){ yyStackOverflow(yypParser); - return; + /* The call to yyStackOverflow() above pops the stack until it is + ** empty, causing the main parser loop to exit. So the return value + ** is never used and does not matter. */ + return 0; } yymsp = yypParser->yytos; } @@ -2208,227 +2549,347 @@ static void yy_reduce( case 139: /* cmd ::= CREATE TABLE create_table_args */ yytestcase(yyruleno==139); case 140: /* cmd ::= CREATE TABLE create_stable_args */ yytestcase(yyruleno==140); case 141: /* cmd ::= CREATE STABLE create_stable_args */ yytestcase(yyruleno==141); +#line 63 "sql.y" {} +#line 2555 "sql.c" break; case 1: /* cmd ::= SHOW DATABASES */ +#line 66 "sql.y" { setShowOptions(pInfo, TSDB_MGMT_TABLE_DB, 0, 0);} +#line 2560 "sql.c" break; case 2: /* cmd ::= SHOW TOPICS */ +#line 67 "sql.y" { setShowOptions(pInfo, TSDB_MGMT_TABLE_TP, 0, 0);} +#line 2565 "sql.c" break; case 3: /* cmd ::= SHOW FUNCTIONS */ +#line 68 "sql.y" { setShowOptions(pInfo, TSDB_MGMT_TABLE_FUNCTION, 0, 0);} +#line 2570 "sql.c" break; case 4: /* cmd ::= SHOW MNODES */ +#line 69 "sql.y" { setShowOptions(pInfo, TSDB_MGMT_TABLE_MNODE, 0, 0);} +#line 2575 "sql.c" break; case 5: /* cmd ::= SHOW DNODES */ +#line 70 "sql.y" { setShowOptions(pInfo, TSDB_MGMT_TABLE_DNODE, 0, 0);} +#line 2580 "sql.c" break; case 6: /* cmd ::= SHOW ACCOUNTS */ +#line 71 "sql.y" { setShowOptions(pInfo, TSDB_MGMT_TABLE_ACCT, 0, 0);} +#line 2585 "sql.c" break; case 7: /* cmd ::= SHOW USERS */ +#line 72 "sql.y" { setShowOptions(pInfo, TSDB_MGMT_TABLE_USER, 0, 0);} +#line 2590 "sql.c" break; case 8: /* cmd ::= SHOW MODULES */ +#line 74 "sql.y" { setShowOptions(pInfo, TSDB_MGMT_TABLE_MODULE, 0, 0); } +#line 2595 "sql.c" break; case 9: /* cmd ::= SHOW QUERIES */ +#line 75 "sql.y" { setShowOptions(pInfo, TSDB_MGMT_TABLE_QUERIES, 0, 0); } +#line 2600 "sql.c" break; case 10: /* cmd ::= SHOW CONNECTIONS */ +#line 76 "sql.y" { setShowOptions(pInfo, TSDB_MGMT_TABLE_CONNS, 0, 0);} +#line 2605 "sql.c" break; case 11: /* cmd ::= SHOW STREAMS */ +#line 77 "sql.y" { setShowOptions(pInfo, TSDB_MGMT_TABLE_STREAMS, 0, 0); } +#line 2610 "sql.c" break; case 12: /* cmd ::= SHOW VARIABLES */ +#line 78 "sql.y" { setShowOptions(pInfo, TSDB_MGMT_TABLE_VARIABLES, 0, 0); } +#line 2615 "sql.c" break; case 13: /* cmd ::= SHOW SCORES */ +#line 79 "sql.y" { setShowOptions(pInfo, TSDB_MGMT_TABLE_SCORES, 0, 0); } +#line 2620 "sql.c" break; case 14: /* cmd ::= SHOW GRANTS */ +#line 80 "sql.y" { setShowOptions(pInfo, TSDB_MGMT_TABLE_GRANTS, 0, 0); } +#line 2625 "sql.c" break; case 15: /* cmd ::= SHOW VNODES */ +#line 82 "sql.y" { setShowOptions(pInfo, TSDB_MGMT_TABLE_VNODES, 0, 0); } +#line 2630 "sql.c" break; case 16: /* cmd ::= SHOW VNODES ids */ +#line 83 "sql.y" { setShowOptions(pInfo, TSDB_MGMT_TABLE_VNODES, &yymsp[0].minor.yy0, 0); } +#line 2635 "sql.c" break; case 17: /* dbPrefix ::= */ +#line 87 "sql.y" {yymsp[1].minor.yy0.n = 0; yymsp[1].minor.yy0.type = 0;} +#line 2640 "sql.c" break; case 18: /* dbPrefix ::= ids DOT */ +#line 88 "sql.y" {yylhsminor.yy0 = yymsp[-1].minor.yy0; } +#line 2645 "sql.c" yymsp[-1].minor.yy0 = yylhsminor.yy0; break; case 19: /* cpxName ::= */ +#line 91 "sql.y" {yymsp[1].minor.yy0.n = 0; } +#line 2651 "sql.c" break; case 20: /* cpxName ::= DOT ids */ +#line 92 "sql.y" {yymsp[-1].minor.yy0 = yymsp[0].minor.yy0; yymsp[-1].minor.yy0.n += 1; } +#line 2656 "sql.c" break; case 21: /* cmd ::= SHOW CREATE TABLE ids cpxName */ +#line 94 "sql.y" { yymsp[-1].minor.yy0.n += yymsp[0].minor.yy0.n; setDCLSqlElems(pInfo, TSDB_SQL_SHOW_CREATE_TABLE, 1, &yymsp[-1].minor.yy0); } +#line 2664 "sql.c" break; case 22: /* cmd ::= SHOW CREATE STABLE ids cpxName */ +#line 98 "sql.y" { yymsp[-1].minor.yy0.n += yymsp[0].minor.yy0.n; setDCLSqlElems(pInfo, TSDB_SQL_SHOW_CREATE_STABLE, 1, &yymsp[-1].minor.yy0); } +#line 2672 "sql.c" break; case 23: /* cmd ::= SHOW CREATE DATABASE ids */ +#line 103 "sql.y" { setDCLSqlElems(pInfo, TSDB_SQL_SHOW_CREATE_DATABASE, 1, &yymsp[0].minor.yy0); } +#line 2679 "sql.c" break; case 24: /* cmd ::= SHOW dbPrefix TABLES */ +#line 107 "sql.y" { setShowOptions(pInfo, TSDB_MGMT_TABLE_TABLE, &yymsp[-1].minor.yy0, 0); } +#line 2686 "sql.c" break; case 25: /* cmd ::= SHOW dbPrefix TABLES LIKE ids */ +#line 111 "sql.y" { setShowOptions(pInfo, TSDB_MGMT_TABLE_TABLE, &yymsp[-3].minor.yy0, &yymsp[0].minor.yy0); } +#line 2693 "sql.c" break; case 26: /* cmd ::= SHOW dbPrefix STABLES */ +#line 115 "sql.y" { setShowOptions(pInfo, TSDB_MGMT_TABLE_METRIC, &yymsp[-1].minor.yy0, 0); } +#line 2700 "sql.c" break; case 27: /* cmd ::= SHOW dbPrefix STABLES LIKE ids */ +#line 119 "sql.y" { SStrToken token; tSetDbName(&token, &yymsp[-3].minor.yy0); setShowOptions(pInfo, TSDB_MGMT_TABLE_METRIC, &token, &yymsp[0].minor.yy0); } +#line 2709 "sql.c" break; case 28: /* cmd ::= SHOW dbPrefix VGROUPS */ +#line 125 "sql.y" { SStrToken token; tSetDbName(&token, &yymsp[-1].minor.yy0); setShowOptions(pInfo, TSDB_MGMT_TABLE_VGROUP, &token, 0); } +#line 2718 "sql.c" break; case 29: /* cmd ::= SHOW dbPrefix VGROUPS ids */ +#line 131 "sql.y" { SStrToken token; tSetDbName(&token, &yymsp[-2].minor.yy0); setShowOptions(pInfo, TSDB_MGMT_TABLE_VGROUP, &token, &yymsp[0].minor.yy0); } +#line 2727 "sql.c" break; case 30: /* cmd ::= DROP TABLE ifexists ids cpxName */ +#line 138 "sql.y" { yymsp[-1].minor.yy0.n += yymsp[0].minor.yy0.n; setDropDbTableInfo(pInfo, TSDB_SQL_DROP_TABLE, &yymsp[-1].minor.yy0, &yymsp[-2].minor.yy0, -1, -1); } +#line 2735 "sql.c" break; case 31: /* cmd ::= DROP STABLE ifexists ids cpxName */ +#line 144 "sql.y" { yymsp[-1].minor.yy0.n += yymsp[0].minor.yy0.n; setDropDbTableInfo(pInfo, TSDB_SQL_DROP_TABLE, &yymsp[-1].minor.yy0, &yymsp[-2].minor.yy0, -1, TSDB_SUPER_TABLE); } +#line 2743 "sql.c" break; case 32: /* cmd ::= DROP DATABASE ifexists ids */ +#line 149 "sql.y" { setDropDbTableInfo(pInfo, TSDB_SQL_DROP_DB, &yymsp[0].minor.yy0, &yymsp[-1].minor.yy0, TSDB_DB_TYPE_DEFAULT, -1); } +#line 2748 "sql.c" break; case 33: /* cmd ::= DROP TOPIC ifexists ids */ +#line 150 "sql.y" { setDropDbTableInfo(pInfo, TSDB_SQL_DROP_DB, &yymsp[0].minor.yy0, &yymsp[-1].minor.yy0, TSDB_DB_TYPE_TOPIC, -1); } +#line 2753 "sql.c" break; case 34: /* cmd ::= DROP FUNCTION ids */ +#line 151 "sql.y" { setDropFuncInfo(pInfo, TSDB_SQL_DROP_FUNCTION, &yymsp[0].minor.yy0); } +#line 2758 "sql.c" break; case 35: /* cmd ::= DROP DNODE ids */ +#line 153 "sql.y" { setDCLSqlElems(pInfo, TSDB_SQL_DROP_DNODE, 1, &yymsp[0].minor.yy0); } +#line 2763 "sql.c" break; case 36: /* cmd ::= DROP USER ids */ +#line 154 "sql.y" { setDCLSqlElems(pInfo, TSDB_SQL_DROP_USER, 1, &yymsp[0].minor.yy0); } +#line 2768 "sql.c" break; case 37: /* cmd ::= DROP ACCOUNT ids */ +#line 155 "sql.y" { setDCLSqlElems(pInfo, TSDB_SQL_DROP_ACCT, 1, &yymsp[0].minor.yy0); } +#line 2773 "sql.c" break; case 38: /* cmd ::= USE ids */ +#line 158 "sql.y" { setDCLSqlElems(pInfo, TSDB_SQL_USE_DB, 1, &yymsp[0].minor.yy0);} +#line 2778 "sql.c" break; case 39: /* cmd ::= DESCRIBE ids cpxName */ case 40: /* cmd ::= DESC ids cpxName */ yytestcase(yyruleno==40); +#line 161 "sql.y" { yymsp[-1].minor.yy0.n += yymsp[0].minor.yy0.n; setDCLSqlElems(pInfo, TSDB_SQL_DESCRIBE_TABLE, 1, &yymsp[-1].minor.yy0); } +#line 2787 "sql.c" break; case 41: /* cmd ::= ALTER USER ids PASS ids */ +#line 170 "sql.y" { setAlterUserSql(pInfo, TSDB_ALTER_USER_PASSWD, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0, NULL); } +#line 2792 "sql.c" break; case 42: /* cmd ::= ALTER USER ids PRIVILEGE ids */ +#line 171 "sql.y" { setAlterUserSql(pInfo, TSDB_ALTER_USER_PRIVILEGES, &yymsp[-2].minor.yy0, NULL, &yymsp[0].minor.yy0);} +#line 2797 "sql.c" break; case 43: /* cmd ::= ALTER DNODE ids ids */ +#line 172 "sql.y" { setDCLSqlElems(pInfo, TSDB_SQL_CFG_DNODE, 2, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy0); } +#line 2802 "sql.c" break; case 44: /* cmd ::= ALTER DNODE ids ids ids */ +#line 173 "sql.y" { setDCLSqlElems(pInfo, TSDB_SQL_CFG_DNODE, 3, &yymsp[-2].minor.yy0, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy0); } +#line 2807 "sql.c" break; case 45: /* cmd ::= ALTER LOCAL ids */ +#line 174 "sql.y" { setDCLSqlElems(pInfo, TSDB_SQL_CFG_LOCAL, 1, &yymsp[0].minor.yy0); } +#line 2812 "sql.c" break; case 46: /* cmd ::= ALTER LOCAL ids ids */ +#line 175 "sql.y" { setDCLSqlElems(pInfo, TSDB_SQL_CFG_LOCAL, 2, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy0); } +#line 2817 "sql.c" break; 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.yy90, &t);} +#line 176 "sql.y" +{ SStrToken t = {0}; setCreateDbInfo(pInfo, TSDB_SQL_ALTER_DB, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy246, &t);} +#line 2823 "sql.c" break; case 49: /* cmd ::= ALTER ACCOUNT ids acct_optr */ -{ setCreateAcctSql(pInfo, TSDB_SQL_ALTER_ACCT, &yymsp[-1].minor.yy0, NULL, &yymsp[0].minor.yy171);} +#line 179 "sql.y" +{ setCreateAcctSql(pInfo, TSDB_SQL_ALTER_ACCT, &yymsp[-1].minor.yy0, NULL, &yymsp[0].minor.yy377);} +#line 2828 "sql.c" break; 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.yy171);} +#line 180 "sql.y" +{ setCreateAcctSql(pInfo, TSDB_SQL_ALTER_ACCT, &yymsp[-3].minor.yy0, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy377);} +#line 2833 "sql.c" break; case 51: /* cmd ::= COMPACT VNODES IN LP exprlist RP */ -{ setCompactVnodeSql(pInfo, TSDB_SQL_COMPACT_VNODE, yymsp[-1].minor.yy421);} +#line 184 "sql.y" +{ setCompactVnodeSql(pInfo, TSDB_SQL_COMPACT_VNODE, yymsp[-1].minor.yy403);} +#line 2838 "sql.c" break; case 52: /* ids ::= ID */ case 53: /* ids ::= STRING */ yytestcase(yyruleno==53); +#line 190 "sql.y" {yylhsminor.yy0 = yymsp[0].minor.yy0; } +#line 2844 "sql.c" yymsp[0].minor.yy0 = yylhsminor.yy0; break; case 54: /* ifexists ::= IF EXISTS */ +#line 194 "sql.y" { yymsp[-1].minor.yy0.n = 1;} +#line 2850 "sql.c" break; case 55: /* ifexists ::= */ case 57: /* ifnotexists ::= */ yytestcase(yyruleno==57); case 181: /* distinct ::= */ yytestcase(yyruleno==181); +#line 195 "sql.y" { yymsp[1].minor.yy0.n = 0;} +#line 2857 "sql.c" break; case 56: /* ifnotexists ::= IF NOT EXISTS */ +#line 198 "sql.y" { yymsp[-2].minor.yy0.n = 1;} +#line 2862 "sql.c" break; case 58: /* cmd ::= CREATE DNODE ids */ +#line 203 "sql.y" { setDCLSqlElems(pInfo, TSDB_SQL_CREATE_DNODE, 1, &yymsp[0].minor.yy0);} +#line 2867 "sql.c" break; 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.yy171);} +#line 205 "sql.y" +{ setCreateAcctSql(pInfo, TSDB_SQL_CREATE_ACCT, &yymsp[-3].minor.yy0, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy377);} +#line 2872 "sql.c" break; 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.yy90, &yymsp[-2].minor.yy0);} +#line 206 "sql.y" +{ setCreateDbInfo(pInfo, TSDB_SQL_CREATE_DB, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy246, &yymsp[-2].minor.yy0);} +#line 2878 "sql.c" break; 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.yy183, &yymsp[0].minor.yy0, 1);} +#line 208 "sql.y" +{ setCreateFuncInfo(pInfo, TSDB_SQL_CREATE_FUNCTION, &yymsp[-5].minor.yy0, &yymsp[-3].minor.yy0, &yymsp[-1].minor.yy363, &yymsp[0].minor.yy0, 1);} +#line 2883 "sql.c" break; 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.yy183, &yymsp[0].minor.yy0, 2);} +#line 209 "sql.y" +{ setCreateFuncInfo(pInfo, TSDB_SQL_CREATE_FUNCTION, &yymsp[-5].minor.yy0, &yymsp[-3].minor.yy0, &yymsp[-1].minor.yy363, &yymsp[0].minor.yy0, 2);} +#line 2888 "sql.c" break; case 64: /* cmd ::= CREATE USER ids PASS ids */ +#line 210 "sql.y" { setCreateUserSql(pInfo, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0);} +#line 2893 "sql.c" break; case 65: /* bufsize ::= */ case 67: /* pps ::= */ yytestcase(yyruleno==67); @@ -2440,7 +2901,9 @@ static void yy_reduce( case 79: /* users ::= */ yytestcase(yyruleno==79); case 81: /* conns ::= */ yytestcase(yyruleno==81); case 83: /* state ::= */ yytestcase(yyruleno==83); +#line 212 "sql.y" { yymsp[1].minor.yy0.n = 0; } +#line 2907 "sql.c" break; case 66: /* bufsize ::= BUFSIZE INTEGER */ case 68: /* pps ::= PPS INTEGER */ yytestcase(yyruleno==68); @@ -2452,42 +2915,54 @@ static void yy_reduce( case 80: /* users ::= USERS INTEGER */ yytestcase(yyruleno==80); case 82: /* conns ::= CONNS INTEGER */ yytestcase(yyruleno==82); case 84: /* state ::= STATE ids */ yytestcase(yyruleno==84); +#line 213 "sql.y" { yymsp[-1].minor.yy0 = yymsp[0].minor.yy0; } +#line 2921 "sql.c" break; case 85: /* acct_optr ::= pps tseries storage streams qtime dbs users conns state */ +#line 243 "sql.y" { - yylhsminor.yy171.maxUsers = (yymsp[-2].minor.yy0.n>0)?atoi(yymsp[-2].minor.yy0.z):-1; - yylhsminor.yy171.maxDbs = (yymsp[-3].minor.yy0.n>0)?atoi(yymsp[-3].minor.yy0.z):-1; - yylhsminor.yy171.maxTimeSeries = (yymsp[-7].minor.yy0.n>0)?atoi(yymsp[-7].minor.yy0.z):-1; - yylhsminor.yy171.maxStreams = (yymsp[-5].minor.yy0.n>0)?atoi(yymsp[-5].minor.yy0.z):-1; - yylhsminor.yy171.maxPointsPerSecond = (yymsp[-8].minor.yy0.n>0)?atoi(yymsp[-8].minor.yy0.z):-1; - yylhsminor.yy171.maxStorage = (yymsp[-6].minor.yy0.n>0)?strtoll(yymsp[-6].minor.yy0.z, NULL, 10):-1; - yylhsminor.yy171.maxQueryTime = (yymsp[-4].minor.yy0.n>0)?strtoll(yymsp[-4].minor.yy0.z, NULL, 10):-1; - yylhsminor.yy171.maxConnections = (yymsp[-1].minor.yy0.n>0)?atoi(yymsp[-1].minor.yy0.z):-1; - yylhsminor.yy171.stat = yymsp[0].minor.yy0; + yylhsminor.yy377.maxUsers = (yymsp[-2].minor.yy0.n>0)?atoi(yymsp[-2].minor.yy0.z):-1; + yylhsminor.yy377.maxDbs = (yymsp[-3].minor.yy0.n>0)?atoi(yymsp[-3].minor.yy0.z):-1; + yylhsminor.yy377.maxTimeSeries = (yymsp[-7].minor.yy0.n>0)?atoi(yymsp[-7].minor.yy0.z):-1; + yylhsminor.yy377.maxStreams = (yymsp[-5].minor.yy0.n>0)?atoi(yymsp[-5].minor.yy0.z):-1; + yylhsminor.yy377.maxPointsPerSecond = (yymsp[-8].minor.yy0.n>0)?atoi(yymsp[-8].minor.yy0.z):-1; + yylhsminor.yy377.maxStorage = (yymsp[-6].minor.yy0.n>0)?strtoll(yymsp[-6].minor.yy0.z, NULL, 10):-1; + yylhsminor.yy377.maxQueryTime = (yymsp[-4].minor.yy0.n>0)?strtoll(yymsp[-4].minor.yy0.z, NULL, 10):-1; + yylhsminor.yy377.maxConnections = (yymsp[-1].minor.yy0.n>0)?atoi(yymsp[-1].minor.yy0.z):-1; + yylhsminor.yy377.stat = yymsp[0].minor.yy0; } - yymsp[-8].minor.yy171 = yylhsminor.yy171; +#line 2936 "sql.c" + yymsp[-8].minor.yy377 = yylhsminor.yy377; break; case 86: /* intitemlist ::= intitemlist COMMA intitem */ case 155: /* tagitemlist ::= tagitemlist COMMA tagitem */ yytestcase(yyruleno==155); -{ yylhsminor.yy421 = tVariantListAppend(yymsp[-2].minor.yy421, &yymsp[0].minor.yy430, -1); } - yymsp[-2].minor.yy421 = yylhsminor.yy421; +#line 259 "sql.y" +{ yylhsminor.yy403 = tVariantListAppend(yymsp[-2].minor.yy403, &yymsp[0].minor.yy488, -1); } +#line 2943 "sql.c" + yymsp[-2].minor.yy403 = yylhsminor.yy403; break; case 87: /* intitemlist ::= intitem */ case 156: /* tagitemlist ::= tagitem */ yytestcase(yyruleno==156); -{ yylhsminor.yy421 = tVariantListAppend(NULL, &yymsp[0].minor.yy430, -1); } - yymsp[0].minor.yy421 = yylhsminor.yy421; +#line 260 "sql.y" +{ yylhsminor.yy403 = tVariantListAppend(NULL, &yymsp[0].minor.yy488, -1); } +#line 2950 "sql.c" + yymsp[0].minor.yy403 = yylhsminor.yy403; break; case 88: /* intitem ::= INTEGER */ case 157: /* tagitem ::= INTEGER */ yytestcase(yyruleno==157); case 158: /* tagitem ::= FLOAT */ yytestcase(yyruleno==158); case 159: /* tagitem ::= STRING */ yytestcase(yyruleno==159); case 160: /* tagitem ::= BOOL */ yytestcase(yyruleno==160); -{ toTSDBType(yymsp[0].minor.yy0.type); tVariantCreate(&yylhsminor.yy430, &yymsp[0].minor.yy0); } - yymsp[0].minor.yy430 = yylhsminor.yy430; +#line 262 "sql.y" +{ toTSDBType(yymsp[0].minor.yy0.type); tVariantCreate(&yylhsminor.yy488, &yymsp[0].minor.yy0); } +#line 2960 "sql.c" + yymsp[0].minor.yy488 = yylhsminor.yy488; break; case 89: /* keep ::= KEEP intitemlist */ -{ yymsp[-1].minor.yy421 = yymsp[0].minor.yy421; } +#line 266 "sql.y" +{ yymsp[-1].minor.yy403 = yymsp[0].minor.yy403; } +#line 2966 "sql.c" break; case 90: /* cache ::= CACHE INTEGER */ case 91: /* replica ::= REPLICA INTEGER */ yytestcase(yyruleno==91); @@ -2504,647 +2979,930 @@ static void yy_reduce( case 102: /* update ::= UPDATE INTEGER */ yytestcase(yyruleno==102); case 103: /* cachelast ::= CACHELAST INTEGER */ yytestcase(yyruleno==103); case 104: /* partitions ::= PARTITIONS INTEGER */ yytestcase(yyruleno==104); +#line 268 "sql.y" { yymsp[-1].minor.yy0 = yymsp[0].minor.yy0; } +#line 2985 "sql.c" break; case 105: /* db_optr ::= */ -{setDefaultCreateDbOption(&yymsp[1].minor.yy90); yymsp[1].minor.yy90.dbType = TSDB_DB_TYPE_DEFAULT;} +#line 285 "sql.y" +{setDefaultCreateDbOption(&yymsp[1].minor.yy246); yymsp[1].minor.yy246.dbType = TSDB_DB_TYPE_DEFAULT;} +#line 2990 "sql.c" break; case 106: /* db_optr ::= db_optr cache */ -{ yylhsminor.yy90 = yymsp[-1].minor.yy90; yylhsminor.yy90.cacheBlockSize = strtol(yymsp[0].minor.yy0.z, NULL, 10); } - yymsp[-1].minor.yy90 = yylhsminor.yy90; +#line 287 "sql.y" +{ yylhsminor.yy246 = yymsp[-1].minor.yy246; yylhsminor.yy246.cacheBlockSize = strtol(yymsp[0].minor.yy0.z, NULL, 10); } +#line 2995 "sql.c" + yymsp[-1].minor.yy246 = yylhsminor.yy246; break; case 107: /* db_optr ::= db_optr replica */ case 124: /* alter_db_optr ::= alter_db_optr replica */ yytestcase(yyruleno==124); -{ yylhsminor.yy90 = yymsp[-1].minor.yy90; yylhsminor.yy90.replica = strtol(yymsp[0].minor.yy0.z, NULL, 10); } - yymsp[-1].minor.yy90 = yylhsminor.yy90; +#line 288 "sql.y" +{ yylhsminor.yy246 = yymsp[-1].minor.yy246; yylhsminor.yy246.replica = strtol(yymsp[0].minor.yy0.z, NULL, 10); } +#line 3002 "sql.c" + yymsp[-1].minor.yy246 = yylhsminor.yy246; break; case 108: /* db_optr ::= db_optr quorum */ case 125: /* alter_db_optr ::= alter_db_optr quorum */ yytestcase(yyruleno==125); -{ yylhsminor.yy90 = yymsp[-1].minor.yy90; yylhsminor.yy90.quorum = strtol(yymsp[0].minor.yy0.z, NULL, 10); } - yymsp[-1].minor.yy90 = yylhsminor.yy90; +#line 289 "sql.y" +{ yylhsminor.yy246 = yymsp[-1].minor.yy246; yylhsminor.yy246.quorum = strtol(yymsp[0].minor.yy0.z, NULL, 10); } +#line 3009 "sql.c" + yymsp[-1].minor.yy246 = yylhsminor.yy246; break; case 109: /* db_optr ::= db_optr days */ -{ yylhsminor.yy90 = yymsp[-1].minor.yy90; yylhsminor.yy90.daysPerFile = strtol(yymsp[0].minor.yy0.z, NULL, 10); } - yymsp[-1].minor.yy90 = yylhsminor.yy90; +#line 290 "sql.y" +{ yylhsminor.yy246 = yymsp[-1].minor.yy246; yylhsminor.yy246.daysPerFile = strtol(yymsp[0].minor.yy0.z, NULL, 10); } +#line 3015 "sql.c" + yymsp[-1].minor.yy246 = yylhsminor.yy246; break; case 110: /* db_optr ::= db_optr minrows */ -{ yylhsminor.yy90 = yymsp[-1].minor.yy90; yylhsminor.yy90.minRowsPerBlock = strtod(yymsp[0].minor.yy0.z, NULL); } - yymsp[-1].minor.yy90 = yylhsminor.yy90; +#line 291 "sql.y" +{ yylhsminor.yy246 = yymsp[-1].minor.yy246; yylhsminor.yy246.minRowsPerBlock = strtod(yymsp[0].minor.yy0.z, NULL); } +#line 3021 "sql.c" + yymsp[-1].minor.yy246 = yylhsminor.yy246; break; case 111: /* db_optr ::= db_optr maxrows */ -{ yylhsminor.yy90 = yymsp[-1].minor.yy90; yylhsminor.yy90.maxRowsPerBlock = strtod(yymsp[0].minor.yy0.z, NULL); } - yymsp[-1].minor.yy90 = yylhsminor.yy90; +#line 292 "sql.y" +{ yylhsminor.yy246 = yymsp[-1].minor.yy246; yylhsminor.yy246.maxRowsPerBlock = strtod(yymsp[0].minor.yy0.z, NULL); } +#line 3027 "sql.c" + yymsp[-1].minor.yy246 = yylhsminor.yy246; break; case 112: /* db_optr ::= db_optr blocks */ case 127: /* alter_db_optr ::= alter_db_optr blocks */ yytestcase(yyruleno==127); -{ yylhsminor.yy90 = yymsp[-1].minor.yy90; yylhsminor.yy90.numOfBlocks = strtol(yymsp[0].minor.yy0.z, NULL, 10); } - yymsp[-1].minor.yy90 = yylhsminor.yy90; +#line 293 "sql.y" +{ yylhsminor.yy246 = yymsp[-1].minor.yy246; yylhsminor.yy246.numOfBlocks = strtol(yymsp[0].minor.yy0.z, NULL, 10); } +#line 3034 "sql.c" + yymsp[-1].minor.yy246 = yylhsminor.yy246; break; case 113: /* db_optr ::= db_optr ctime */ -{ yylhsminor.yy90 = yymsp[-1].minor.yy90; yylhsminor.yy90.commitTime = strtol(yymsp[0].minor.yy0.z, NULL, 10); } - yymsp[-1].minor.yy90 = yylhsminor.yy90; +#line 294 "sql.y" +{ yylhsminor.yy246 = yymsp[-1].minor.yy246; yylhsminor.yy246.commitTime = strtol(yymsp[0].minor.yy0.z, NULL, 10); } +#line 3040 "sql.c" + yymsp[-1].minor.yy246 = yylhsminor.yy246; break; case 114: /* db_optr ::= db_optr wal */ -{ yylhsminor.yy90 = yymsp[-1].minor.yy90; yylhsminor.yy90.walLevel = strtol(yymsp[0].minor.yy0.z, NULL, 10); } - yymsp[-1].minor.yy90 = yylhsminor.yy90; +#line 295 "sql.y" +{ yylhsminor.yy246 = yymsp[-1].minor.yy246; yylhsminor.yy246.walLevel = strtol(yymsp[0].minor.yy0.z, NULL, 10); } +#line 3046 "sql.c" + yymsp[-1].minor.yy246 = yylhsminor.yy246; break; case 115: /* db_optr ::= db_optr fsync */ -{ yylhsminor.yy90 = yymsp[-1].minor.yy90; yylhsminor.yy90.fsyncPeriod = strtol(yymsp[0].minor.yy0.z, NULL, 10); } - yymsp[-1].minor.yy90 = yylhsminor.yy90; +#line 296 "sql.y" +{ yylhsminor.yy246 = yymsp[-1].minor.yy246; yylhsminor.yy246.fsyncPeriod = strtol(yymsp[0].minor.yy0.z, NULL, 10); } +#line 3052 "sql.c" + yymsp[-1].minor.yy246 = yylhsminor.yy246; break; case 116: /* db_optr ::= db_optr comp */ case 128: /* alter_db_optr ::= alter_db_optr comp */ yytestcase(yyruleno==128); -{ yylhsminor.yy90 = yymsp[-1].minor.yy90; yylhsminor.yy90.compressionLevel = strtol(yymsp[0].minor.yy0.z, NULL, 10); } - yymsp[-1].minor.yy90 = yylhsminor.yy90; +#line 297 "sql.y" +{ yylhsminor.yy246 = yymsp[-1].minor.yy246; yylhsminor.yy246.compressionLevel = strtol(yymsp[0].minor.yy0.z, NULL, 10); } +#line 3059 "sql.c" + yymsp[-1].minor.yy246 = yylhsminor.yy246; break; case 117: /* db_optr ::= db_optr prec */ -{ yylhsminor.yy90 = yymsp[-1].minor.yy90; yylhsminor.yy90.precision = yymsp[0].minor.yy0; } - yymsp[-1].minor.yy90 = yylhsminor.yy90; +#line 298 "sql.y" +{ yylhsminor.yy246 = yymsp[-1].minor.yy246; yylhsminor.yy246.precision = yymsp[0].minor.yy0; } +#line 3065 "sql.c" + yymsp[-1].minor.yy246 = yylhsminor.yy246; break; case 118: /* db_optr ::= db_optr keep */ case 126: /* alter_db_optr ::= alter_db_optr keep */ yytestcase(yyruleno==126); -{ yylhsminor.yy90 = yymsp[-1].minor.yy90; yylhsminor.yy90.keep = yymsp[0].minor.yy421; } - yymsp[-1].minor.yy90 = yylhsminor.yy90; +#line 299 "sql.y" +{ yylhsminor.yy246 = yymsp[-1].minor.yy246; yylhsminor.yy246.keep = yymsp[0].minor.yy403; } +#line 3072 "sql.c" + yymsp[-1].minor.yy246 = yylhsminor.yy246; break; case 119: /* db_optr ::= db_optr update */ case 129: /* alter_db_optr ::= alter_db_optr update */ yytestcase(yyruleno==129); -{ yylhsminor.yy90 = yymsp[-1].minor.yy90; yylhsminor.yy90.update = strtol(yymsp[0].minor.yy0.z, NULL, 10); } - yymsp[-1].minor.yy90 = yylhsminor.yy90; +#line 300 "sql.y" +{ yylhsminor.yy246 = yymsp[-1].minor.yy246; yylhsminor.yy246.update = strtol(yymsp[0].minor.yy0.z, NULL, 10); } +#line 3079 "sql.c" + yymsp[-1].minor.yy246 = yylhsminor.yy246; break; case 120: /* db_optr ::= db_optr cachelast */ case 130: /* alter_db_optr ::= alter_db_optr cachelast */ yytestcase(yyruleno==130); -{ yylhsminor.yy90 = yymsp[-1].minor.yy90; yylhsminor.yy90.cachelast = strtol(yymsp[0].minor.yy0.z, NULL, 10); } - yymsp[-1].minor.yy90 = yylhsminor.yy90; +#line 301 "sql.y" +{ yylhsminor.yy246 = yymsp[-1].minor.yy246; yylhsminor.yy246.cachelast = strtol(yymsp[0].minor.yy0.z, NULL, 10); } +#line 3086 "sql.c" + yymsp[-1].minor.yy246 = yylhsminor.yy246; break; case 121: /* topic_optr ::= db_optr */ case 131: /* alter_topic_optr ::= alter_db_optr */ yytestcase(yyruleno==131); -{ yylhsminor.yy90 = yymsp[0].minor.yy90; yylhsminor.yy90.dbType = TSDB_DB_TYPE_TOPIC; } - yymsp[0].minor.yy90 = yylhsminor.yy90; +#line 305 "sql.y" +{ yylhsminor.yy246 = yymsp[0].minor.yy246; yylhsminor.yy246.dbType = TSDB_DB_TYPE_TOPIC; } +#line 3093 "sql.c" + yymsp[0].minor.yy246 = yylhsminor.yy246; break; case 122: /* topic_optr ::= topic_optr partitions */ case 132: /* alter_topic_optr ::= alter_topic_optr partitions */ yytestcase(yyruleno==132); -{ yylhsminor.yy90 = yymsp[-1].minor.yy90; yylhsminor.yy90.partitions = strtol(yymsp[0].minor.yy0.z, NULL, 10); } - yymsp[-1].minor.yy90 = yylhsminor.yy90; +#line 306 "sql.y" +{ yylhsminor.yy246 = yymsp[-1].minor.yy246; yylhsminor.yy246.partitions = strtol(yymsp[0].minor.yy0.z, NULL, 10); } +#line 3100 "sql.c" + yymsp[-1].minor.yy246 = yylhsminor.yy246; break; case 123: /* alter_db_optr ::= */ -{ setDefaultCreateDbOption(&yymsp[1].minor.yy90); yymsp[1].minor.yy90.dbType = TSDB_DB_TYPE_DEFAULT;} +#line 309 "sql.y" +{ setDefaultCreateDbOption(&yymsp[1].minor.yy246); yymsp[1].minor.yy246.dbType = TSDB_DB_TYPE_DEFAULT;} +#line 3106 "sql.c" break; case 133: /* typename ::= ids */ +#line 329 "sql.y" { yymsp[0].minor.yy0.type = 0; - tSetColumnType (&yylhsminor.yy183, &yymsp[0].minor.yy0); + tSetColumnType (&yylhsminor.yy363, &yymsp[0].minor.yy0); } - yymsp[0].minor.yy183 = yylhsminor.yy183; +#line 3114 "sql.c" + yymsp[0].minor.yy363 = yylhsminor.yy363; break; case 134: /* typename ::= ids LP signed RP */ +#line 335 "sql.y" { - if (yymsp[-1].minor.yy325 <= 0) { + if (yymsp[-1].minor.yy387 <= 0) { yymsp[-3].minor.yy0.type = 0; - tSetColumnType(&yylhsminor.yy183, &yymsp[-3].minor.yy0); + tSetColumnType(&yylhsminor.yy363, &yymsp[-3].minor.yy0); } else { - yymsp[-3].minor.yy0.type = -yymsp[-1].minor.yy325; // negative value of name length - tSetColumnType(&yylhsminor.yy183, &yymsp[-3].minor.yy0); + yymsp[-3].minor.yy0.type = -yymsp[-1].minor.yy387; // negative value of name length + tSetColumnType(&yylhsminor.yy363, &yymsp[-3].minor.yy0); } } - yymsp[-3].minor.yy183 = yylhsminor.yy183; +#line 3128 "sql.c" + yymsp[-3].minor.yy363 = yylhsminor.yy363; break; case 135: /* typename ::= ids UNSIGNED */ +#line 346 "sql.y" { 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); - tSetColumnType (&yylhsminor.yy183, &yymsp[-1].minor.yy0); + tSetColumnType (&yylhsminor.yy363, &yymsp[-1].minor.yy0); } - yymsp[-1].minor.yy183 = yylhsminor.yy183; +#line 3138 "sql.c" + yymsp[-1].minor.yy363 = yylhsminor.yy363; break; case 136: /* signed ::= INTEGER */ -{ yylhsminor.yy325 = strtol(yymsp[0].minor.yy0.z, NULL, 10); } - yymsp[0].minor.yy325 = yylhsminor.yy325; +#line 353 "sql.y" +{ yylhsminor.yy387 = strtol(yymsp[0].minor.yy0.z, NULL, 10); } +#line 3144 "sql.c" + yymsp[0].minor.yy387 = yylhsminor.yy387; break; case 137: /* signed ::= PLUS INTEGER */ -{ yymsp[-1].minor.yy325 = strtol(yymsp[0].minor.yy0.z, NULL, 10); } +#line 354 "sql.y" +{ yymsp[-1].minor.yy387 = strtol(yymsp[0].minor.yy0.z, NULL, 10); } +#line 3150 "sql.c" break; case 138: /* signed ::= MINUS INTEGER */ -{ yymsp[-1].minor.yy325 = -strtol(yymsp[0].minor.yy0.z, NULL, 10);} +#line 355 "sql.y" +{ yymsp[-1].minor.yy387 = -strtol(yymsp[0].minor.yy0.z, NULL, 10);} +#line 3155 "sql.c" break; case 142: /* cmd ::= CREATE TABLE create_table_list */ -{ pInfo->type = TSDB_SQL_CREATE_TABLE; pInfo->pCreateTableInfo = yymsp[0].minor.yy438;} +#line 361 "sql.y" +{ pInfo->type = TSDB_SQL_CREATE_TABLE; pInfo->pCreateTableInfo = yymsp[0].minor.yy56;} +#line 3160 "sql.c" break; case 143: /* create_table_list ::= create_from_stable */ +#line 365 "sql.y" { SCreateTableSql* pCreateTable = calloc(1, sizeof(SCreateTableSql)); pCreateTable->childTableInfo = taosArrayInit(4, sizeof(SCreatedTableInfo)); - taosArrayPush(pCreateTable->childTableInfo, &yymsp[0].minor.yy152); + taosArrayPush(pCreateTable->childTableInfo, &yymsp[0].minor.yy84); pCreateTable->type = TSQL_CREATE_TABLE_FROM_STABLE; - yylhsminor.yy438 = pCreateTable; + yylhsminor.yy56 = pCreateTable; } - yymsp[0].minor.yy438 = yylhsminor.yy438; +#line 3172 "sql.c" + yymsp[0].minor.yy56 = yylhsminor.yy56; break; case 144: /* create_table_list ::= create_table_list create_from_stable */ +#line 374 "sql.y" { - taosArrayPush(yymsp[-1].minor.yy438->childTableInfo, &yymsp[0].minor.yy152); - yylhsminor.yy438 = yymsp[-1].minor.yy438; + taosArrayPush(yymsp[-1].minor.yy56->childTableInfo, &yymsp[0].minor.yy84); + yylhsminor.yy56 = yymsp[-1].minor.yy56; } - yymsp[-1].minor.yy438 = yylhsminor.yy438; +#line 3181 "sql.c" + yymsp[-1].minor.yy56 = yylhsminor.yy56; break; case 145: /* create_table_args ::= ifnotexists ids cpxName LP columnlist RP */ +#line 380 "sql.y" { - yylhsminor.yy438 = tSetCreateTableInfo(yymsp[-1].minor.yy421, NULL, NULL, TSQL_CREATE_TABLE); - setSqlInfo(pInfo, yylhsminor.yy438, NULL, TSDB_SQL_CREATE_TABLE); + yylhsminor.yy56 = tSetCreateTableInfo(yymsp[-1].minor.yy403, NULL, NULL, TSQL_CREATE_TABLE); + setSqlInfo(pInfo, yylhsminor.yy56, NULL, TSDB_SQL_CREATE_TABLE); yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n; setCreatedTableName(pInfo, &yymsp[-4].minor.yy0, &yymsp[-5].minor.yy0); } - yymsp[-5].minor.yy438 = yylhsminor.yy438; +#line 3193 "sql.c" + yymsp[-5].minor.yy56 = yylhsminor.yy56; break; case 146: /* create_stable_args ::= ifnotexists ids cpxName LP columnlist RP TAGS LP columnlist RP */ +#line 390 "sql.y" { - yylhsminor.yy438 = tSetCreateTableInfo(yymsp[-5].minor.yy421, yymsp[-1].minor.yy421, NULL, TSQL_CREATE_STABLE); - setSqlInfo(pInfo, yylhsminor.yy438, NULL, TSDB_SQL_CREATE_TABLE); + yylhsminor.yy56 = tSetCreateTableInfo(yymsp[-5].minor.yy403, yymsp[-1].minor.yy403, NULL, TSQL_CREATE_STABLE); + setSqlInfo(pInfo, yylhsminor.yy56, NULL, TSDB_SQL_CREATE_TABLE); yymsp[-8].minor.yy0.n += yymsp[-7].minor.yy0.n; setCreatedTableName(pInfo, &yymsp[-8].minor.yy0, &yymsp[-9].minor.yy0); } - yymsp[-9].minor.yy438 = yylhsminor.yy438; +#line 3205 "sql.c" + yymsp[-9].minor.yy56 = yylhsminor.yy56; break; case 147: /* create_from_stable ::= ifnotexists ids cpxName USING ids cpxName TAGS LP tagitemlist RP */ +#line 401 "sql.y" { yymsp[-5].minor.yy0.n += yymsp[-4].minor.yy0.n; yymsp[-8].minor.yy0.n += yymsp[-7].minor.yy0.n; - yylhsminor.yy152 = createNewChildTableInfo(&yymsp[-5].minor.yy0, NULL, yymsp[-1].minor.yy421, &yymsp[-8].minor.yy0, &yymsp[-9].minor.yy0); + yylhsminor.yy84 = createNewChildTableInfo(&yymsp[-5].minor.yy0, NULL, yymsp[-1].minor.yy403, &yymsp[-8].minor.yy0, &yymsp[-9].minor.yy0); } - yymsp[-9].minor.yy152 = yylhsminor.yy152; +#line 3215 "sql.c" + yymsp[-9].minor.yy84 = yylhsminor.yy84; break; case 148: /* create_from_stable ::= ifnotexists ids cpxName USING ids cpxName LP tagNamelist RP TAGS LP tagitemlist RP */ +#line 407 "sql.y" { yymsp[-8].minor.yy0.n += yymsp[-7].minor.yy0.n; yymsp[-11].minor.yy0.n += yymsp[-10].minor.yy0.n; - yylhsminor.yy152 = createNewChildTableInfo(&yymsp[-8].minor.yy0, yymsp[-5].minor.yy421, yymsp[-1].minor.yy421, &yymsp[-11].minor.yy0, &yymsp[-12].minor.yy0); + yylhsminor.yy84 = createNewChildTableInfo(&yymsp[-8].minor.yy0, yymsp[-5].minor.yy403, yymsp[-1].minor.yy403, &yymsp[-11].minor.yy0, &yymsp[-12].minor.yy0); } - yymsp[-12].minor.yy152 = yylhsminor.yy152; +#line 3225 "sql.c" + yymsp[-12].minor.yy84 = yylhsminor.yy84; break; case 149: /* tagNamelist ::= tagNamelist COMMA ids */ -{taosArrayPush(yymsp[-2].minor.yy421, &yymsp[0].minor.yy0); yylhsminor.yy421 = yymsp[-2].minor.yy421; } - yymsp[-2].minor.yy421 = yylhsminor.yy421; +#line 415 "sql.y" +{taosArrayPush(yymsp[-2].minor.yy403, &yymsp[0].minor.yy0); yylhsminor.yy403 = yymsp[-2].minor.yy403; } +#line 3231 "sql.c" + yymsp[-2].minor.yy403 = yylhsminor.yy403; break; case 150: /* tagNamelist ::= ids */ -{yylhsminor.yy421 = taosArrayInit(4, sizeof(SStrToken)); taosArrayPush(yylhsminor.yy421, &yymsp[0].minor.yy0);} - yymsp[0].minor.yy421 = yylhsminor.yy421; +#line 416 "sql.y" +{yylhsminor.yy403 = taosArrayInit(4, sizeof(SStrToken)); taosArrayPush(yylhsminor.yy403, &yymsp[0].minor.yy0);} +#line 3237 "sql.c" + yymsp[0].minor.yy403 = yylhsminor.yy403; break; case 151: /* create_table_args ::= ifnotexists ids cpxName AS select */ +#line 420 "sql.y" { - yylhsminor.yy438 = tSetCreateTableInfo(NULL, NULL, yymsp[0].minor.yy56, TSQL_CREATE_STREAM); - setSqlInfo(pInfo, yylhsminor.yy438, NULL, TSDB_SQL_CREATE_TABLE); + yylhsminor.yy56 = tSetCreateTableInfo(NULL, NULL, yymsp[0].minor.yy224, TSQL_CREATE_STREAM); + setSqlInfo(pInfo, yylhsminor.yy56, NULL, TSDB_SQL_CREATE_TABLE); yymsp[-3].minor.yy0.n += yymsp[-2].minor.yy0.n; setCreatedTableName(pInfo, &yymsp[-3].minor.yy0, &yymsp[-4].minor.yy0); } - yymsp[-4].minor.yy438 = yylhsminor.yy438; +#line 3249 "sql.c" + yymsp[-4].minor.yy56 = yylhsminor.yy56; break; case 152: /* columnlist ::= columnlist COMMA column */ -{taosArrayPush(yymsp[-2].minor.yy421, &yymsp[0].minor.yy183); yylhsminor.yy421 = yymsp[-2].minor.yy421; } - yymsp[-2].minor.yy421 = yylhsminor.yy421; +#line 431 "sql.y" +{taosArrayPush(yymsp[-2].minor.yy403, &yymsp[0].minor.yy363); yylhsminor.yy403 = yymsp[-2].minor.yy403; } +#line 3255 "sql.c" + yymsp[-2].minor.yy403 = yylhsminor.yy403; break; case 153: /* columnlist ::= column */ -{yylhsminor.yy421 = taosArrayInit(4, sizeof(TAOS_FIELD)); taosArrayPush(yylhsminor.yy421, &yymsp[0].minor.yy183);} - yymsp[0].minor.yy421 = yylhsminor.yy421; +#line 432 "sql.y" +{yylhsminor.yy403 = taosArrayInit(4, sizeof(TAOS_FIELD)); taosArrayPush(yylhsminor.yy403, &yymsp[0].minor.yy363);} +#line 3261 "sql.c" + yymsp[0].minor.yy403 = yylhsminor.yy403; break; case 154: /* column ::= ids typename */ +#line 436 "sql.y" { - tSetColumnInfo(&yylhsminor.yy183, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy183); + tSetColumnInfo(&yylhsminor.yy363, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy363); } - yymsp[-1].minor.yy183 = yylhsminor.yy183; +#line 3269 "sql.c" + yymsp[-1].minor.yy363 = yylhsminor.yy363; break; case 161: /* tagitem ::= NULL */ -{ yymsp[0].minor.yy0.type = 0; tVariantCreate(&yylhsminor.yy430, &yymsp[0].minor.yy0); } - yymsp[0].minor.yy430 = yylhsminor.yy430; +#line 451 "sql.y" +{ yymsp[0].minor.yy0.type = 0; tVariantCreate(&yylhsminor.yy488, &yymsp[0].minor.yy0); } +#line 3275 "sql.c" + yymsp[0].minor.yy488 = yylhsminor.yy488; break; case 162: /* tagitem ::= NOW */ -{ yymsp[0].minor.yy0.type = TSDB_DATA_TYPE_TIMESTAMP; tVariantCreate(&yylhsminor.yy430, &yymsp[0].minor.yy0);} - yymsp[0].minor.yy430 = yylhsminor.yy430; +#line 452 "sql.y" +{ yymsp[0].minor.yy0.type = TSDB_DATA_TYPE_TIMESTAMP; tVariantCreate(&yylhsminor.yy488, &yymsp[0].minor.yy0);} +#line 3281 "sql.c" + yymsp[0].minor.yy488 = yylhsminor.yy488; break; case 163: /* tagitem ::= MINUS INTEGER */ case 164: /* tagitem ::= MINUS FLOAT */ yytestcase(yyruleno==164); case 165: /* tagitem ::= PLUS INTEGER */ yytestcase(yyruleno==165); case 166: /* tagitem ::= PLUS FLOAT */ yytestcase(yyruleno==166); +#line 454 "sql.y" { yymsp[-1].minor.yy0.n += yymsp[0].minor.yy0.n; yymsp[-1].minor.yy0.type = yymsp[0].minor.yy0.type; toTSDBType(yymsp[-1].minor.yy0.type); - tVariantCreate(&yylhsminor.yy430, &yymsp[-1].minor.yy0); + tVariantCreate(&yylhsminor.yy488, &yymsp[-1].minor.yy0); } - yymsp[-1].minor.yy430 = yylhsminor.yy430; +#line 3295 "sql.c" + yymsp[-1].minor.yy488 = yylhsminor.yy488; break; case 167: /* select ::= SELECT selcollist from where_opt interval_option sliding_opt session_option windowstate_option fill_opt groupby_opt having_opt orderby_opt slimit_opt limit_opt */ +#line 485 "sql.y" { - yylhsminor.yy56 = tSetQuerySqlNode(&yymsp[-13].minor.yy0, yymsp[-12].minor.yy421, yymsp[-11].minor.yy8, yymsp[-10].minor.yy439, yymsp[-4].minor.yy421, yymsp[-2].minor.yy421, &yymsp[-9].minor.yy400, &yymsp[-7].minor.yy147, &yymsp[-6].minor.yy40, &yymsp[-8].minor.yy0, yymsp[-5].minor.yy421, &yymsp[0].minor.yy166, &yymsp[-1].minor.yy166, yymsp[-3].minor.yy439); + yylhsminor.yy224 = tSetQuerySqlNode(&yymsp[-13].minor.yy0, yymsp[-12].minor.yy403, yymsp[-11].minor.yy114, yymsp[-10].minor.yy260, yymsp[-4].minor.yy403, yymsp[-2].minor.yy403, &yymsp[-9].minor.yy222, &yymsp[-7].minor.yy365, &yymsp[-6].minor.yy544, &yymsp[-8].minor.yy0, yymsp[-5].minor.yy403, &yymsp[0].minor.yy404, &yymsp[-1].minor.yy404, yymsp[-3].minor.yy260); } - yymsp[-13].minor.yy56 = yylhsminor.yy56; +#line 3303 "sql.c" + yymsp[-13].minor.yy224 = yylhsminor.yy224; break; case 168: /* select ::= LP select RP */ -{yymsp[-2].minor.yy56 = yymsp[-1].minor.yy56;} +#line 489 "sql.y" +{yymsp[-2].minor.yy224 = yymsp[-1].minor.yy224;} +#line 3309 "sql.c" break; case 169: /* union ::= select */ -{ yylhsminor.yy421 = setSubclause(NULL, yymsp[0].minor.yy56); } - yymsp[0].minor.yy421 = yylhsminor.yy421; +#line 493 "sql.y" +{ yylhsminor.yy403 = setSubclause(NULL, yymsp[0].minor.yy224); } +#line 3314 "sql.c" + yymsp[0].minor.yy403 = yylhsminor.yy403; break; case 170: /* union ::= union UNION ALL select */ -{ yylhsminor.yy421 = appendSelectClause(yymsp[-3].minor.yy421, yymsp[0].minor.yy56); } - yymsp[-3].minor.yy421 = yylhsminor.yy421; +#line 494 "sql.y" +{ yylhsminor.yy403 = appendSelectClause(yymsp[-3].minor.yy403, yymsp[0].minor.yy224); } +#line 3320 "sql.c" + yymsp[-3].minor.yy403 = yylhsminor.yy403; break; case 171: /* cmd ::= union */ -{ setSqlInfo(pInfo, yymsp[0].minor.yy421, NULL, TSDB_SQL_SELECT); } +#line 496 "sql.y" +{ setSqlInfo(pInfo, yymsp[0].minor.yy403, NULL, TSDB_SQL_SELECT); } +#line 3326 "sql.c" break; case 172: /* select ::= SELECT selcollist */ +#line 503 "sql.y" { - yylhsminor.yy56 = tSetQuerySqlNode(&yymsp[-1].minor.yy0, yymsp[0].minor.yy421, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); + yylhsminor.yy224 = tSetQuerySqlNode(&yymsp[-1].minor.yy0, yymsp[0].minor.yy403, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); } - yymsp[-1].minor.yy56 = yylhsminor.yy56; +#line 3333 "sql.c" + yymsp[-1].minor.yy224 = yylhsminor.yy224; break; case 173: /* sclp ::= selcollist COMMA */ -{yylhsminor.yy421 = yymsp[-1].minor.yy421;} - yymsp[-1].minor.yy421 = yylhsminor.yy421; +#line 515 "sql.y" +{yylhsminor.yy403 = yymsp[-1].minor.yy403;} +#line 3339 "sql.c" + yymsp[-1].minor.yy403 = yylhsminor.yy403; break; case 174: /* sclp ::= */ case 206: /* orderby_opt ::= */ yytestcase(yyruleno==206); -{yymsp[1].minor.yy421 = 0;} +#line 516 "sql.y" +{yymsp[1].minor.yy403 = 0;} +#line 3346 "sql.c" break; case 175: /* selcollist ::= sclp distinct expr as */ +#line 517 "sql.y" { - yylhsminor.yy421 = tSqlExprListAppend(yymsp[-3].minor.yy421, yymsp[-1].minor.yy439, yymsp[-2].minor.yy0.n? &yymsp[-2].minor.yy0:0, yymsp[0].minor.yy0.n?&yymsp[0].minor.yy0:0); + yylhsminor.yy403 = tSqlExprListAppend(yymsp[-3].minor.yy403, yymsp[-1].minor.yy260, yymsp[-2].minor.yy0.n? &yymsp[-2].minor.yy0:0, yymsp[0].minor.yy0.n?&yymsp[0].minor.yy0:0); } - yymsp[-3].minor.yy421 = yylhsminor.yy421; +#line 3353 "sql.c" + yymsp[-3].minor.yy403 = yylhsminor.yy403; break; case 176: /* selcollist ::= sclp STAR */ +#line 521 "sql.y" { tSqlExpr *pNode = tSqlExprCreateIdValue(NULL, TK_ALL); - yylhsminor.yy421 = tSqlExprListAppend(yymsp[-1].minor.yy421, pNode, 0, 0); + yylhsminor.yy403 = tSqlExprListAppend(yymsp[-1].minor.yy403, pNode, 0, 0); } - yymsp[-1].minor.yy421 = yylhsminor.yy421; +#line 3362 "sql.c" + yymsp[-1].minor.yy403 = yylhsminor.yy403; break; case 177: /* as ::= AS ids */ +#line 529 "sql.y" { yymsp[-1].minor.yy0 = yymsp[0].minor.yy0; } +#line 3368 "sql.c" break; case 178: /* as ::= ids */ +#line 530 "sql.y" { yylhsminor.yy0 = yymsp[0].minor.yy0; } +#line 3373 "sql.c" yymsp[0].minor.yy0 = yylhsminor.yy0; break; case 179: /* as ::= */ +#line 531 "sql.y" { yymsp[1].minor.yy0.n = 0; } +#line 3379 "sql.c" break; case 180: /* distinct ::= DISTINCT */ +#line 534 "sql.y" { yylhsminor.yy0 = yymsp[0].minor.yy0; } +#line 3384 "sql.c" yymsp[0].minor.yy0 = yylhsminor.yy0; break; case 182: /* from ::= FROM tablelist */ case 183: /* from ::= FROM sub */ yytestcase(yyruleno==183); -{yymsp[-1].minor.yy8 = yymsp[0].minor.yy8;} +#line 540 "sql.y" +{yymsp[-1].minor.yy114 = yymsp[0].minor.yy114;} +#line 3391 "sql.c" break; case 184: /* sub ::= LP union RP */ -{yymsp[-2].minor.yy8 = addSubqueryElem(NULL, yymsp[-1].minor.yy421, NULL);} +#line 545 "sql.y" +{yymsp[-2].minor.yy114 = addSubqueryElem(NULL, yymsp[-1].minor.yy403, NULL);} +#line 3396 "sql.c" break; case 185: /* sub ::= LP union RP ids */ -{yymsp[-3].minor.yy8 = addSubqueryElem(NULL, yymsp[-2].minor.yy421, &yymsp[0].minor.yy0);} +#line 546 "sql.y" +{yymsp[-3].minor.yy114 = addSubqueryElem(NULL, yymsp[-2].minor.yy403, &yymsp[0].minor.yy0);} +#line 3401 "sql.c" break; case 186: /* sub ::= sub COMMA LP union RP ids */ -{yylhsminor.yy8 = addSubqueryElem(yymsp[-5].minor.yy8, yymsp[-2].minor.yy421, &yymsp[0].minor.yy0);} - yymsp[-5].minor.yy8 = yylhsminor.yy8; +#line 547 "sql.y" +{yylhsminor.yy114 = addSubqueryElem(yymsp[-5].minor.yy114, yymsp[-2].minor.yy403, &yymsp[0].minor.yy0);} +#line 3406 "sql.c" + yymsp[-5].minor.yy114 = yylhsminor.yy114; break; case 187: /* tablelist ::= ids cpxName */ +#line 551 "sql.y" { yymsp[-1].minor.yy0.n += yymsp[0].minor.yy0.n; - yylhsminor.yy8 = setTableNameList(NULL, &yymsp[-1].minor.yy0, NULL); + yylhsminor.yy114 = setTableNameList(NULL, &yymsp[-1].minor.yy0, NULL); } - yymsp[-1].minor.yy8 = yylhsminor.yy8; +#line 3415 "sql.c" + yymsp[-1].minor.yy114 = yylhsminor.yy114; break; case 188: /* tablelist ::= ids cpxName ids */ +#line 556 "sql.y" { yymsp[-2].minor.yy0.n += yymsp[-1].minor.yy0.n; - yylhsminor.yy8 = setTableNameList(NULL, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0); + yylhsminor.yy114 = setTableNameList(NULL, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0); } - yymsp[-2].minor.yy8 = yylhsminor.yy8; +#line 3424 "sql.c" + yymsp[-2].minor.yy114 = yylhsminor.yy114; break; case 189: /* tablelist ::= tablelist COMMA ids cpxName */ +#line 561 "sql.y" { yymsp[-1].minor.yy0.n += yymsp[0].minor.yy0.n; - yylhsminor.yy8 = setTableNameList(yymsp[-3].minor.yy8, &yymsp[-1].minor.yy0, NULL); + yylhsminor.yy114 = setTableNameList(yymsp[-3].minor.yy114, &yymsp[-1].minor.yy0, NULL); } - yymsp[-3].minor.yy8 = yylhsminor.yy8; +#line 3433 "sql.c" + yymsp[-3].minor.yy114 = yylhsminor.yy114; break; case 190: /* tablelist ::= tablelist COMMA ids cpxName ids */ +#line 566 "sql.y" { yymsp[-2].minor.yy0.n += yymsp[-1].minor.yy0.n; - yylhsminor.yy8 = setTableNameList(yymsp[-4].minor.yy8, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0); + yylhsminor.yy114 = setTableNameList(yymsp[-4].minor.yy114, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0); } - yymsp[-4].minor.yy8 = yylhsminor.yy8; +#line 3442 "sql.c" + yymsp[-4].minor.yy114 = yylhsminor.yy114; break; case 191: /* tmvar ::= VARIABLE */ +#line 573 "sql.y" {yylhsminor.yy0 = yymsp[0].minor.yy0;} +#line 3448 "sql.c" yymsp[0].minor.yy0 = yylhsminor.yy0; break; case 192: /* interval_option ::= intervalKey LP tmvar RP */ -{yylhsminor.yy400.interval = yymsp[-1].minor.yy0; yylhsminor.yy400.offset.n = 0; yylhsminor.yy400.token = yymsp[-3].minor.yy104;} - yymsp[-3].minor.yy400 = yylhsminor.yy400; +#line 576 "sql.y" +{yylhsminor.yy222.interval = yymsp[-1].minor.yy0; yylhsminor.yy222.offset.n = 0; yylhsminor.yy222.token = yymsp[-3].minor.yy202;} +#line 3454 "sql.c" + yymsp[-3].minor.yy222 = yylhsminor.yy222; break; case 193: /* interval_option ::= intervalKey LP tmvar COMMA tmvar RP */ -{yylhsminor.yy400.interval = yymsp[-3].minor.yy0; yylhsminor.yy400.offset = yymsp[-1].minor.yy0; yylhsminor.yy400.token = yymsp[-5].minor.yy104;} - yymsp[-5].minor.yy400 = yylhsminor.yy400; +#line 577 "sql.y" +{yylhsminor.yy222.interval = yymsp[-3].minor.yy0; yylhsminor.yy222.offset = yymsp[-1].minor.yy0; yylhsminor.yy222.token = yymsp[-5].minor.yy202;} +#line 3460 "sql.c" + yymsp[-5].minor.yy222 = yylhsminor.yy222; break; case 194: /* interval_option ::= */ -{memset(&yymsp[1].minor.yy400, 0, sizeof(yymsp[1].minor.yy400));} +#line 578 "sql.y" +{memset(&yymsp[1].minor.yy222, 0, sizeof(yymsp[1].minor.yy222));} +#line 3466 "sql.c" break; case 195: /* intervalKey ::= INTERVAL */ -{yymsp[0].minor.yy104 = TK_INTERVAL;} +#line 581 "sql.y" +{yymsp[0].minor.yy202 = TK_INTERVAL;} +#line 3471 "sql.c" break; case 196: /* intervalKey ::= EVERY */ -{yymsp[0].minor.yy104 = TK_EVERY; } +#line 582 "sql.y" +{yymsp[0].minor.yy202 = TK_EVERY; } +#line 3476 "sql.c" break; case 197: /* session_option ::= */ -{yymsp[1].minor.yy147.col.n = 0; yymsp[1].minor.yy147.gap.n = 0;} +#line 585 "sql.y" +{yymsp[1].minor.yy365.col.n = 0; yymsp[1].minor.yy365.gap.n = 0;} +#line 3481 "sql.c" break; case 198: /* session_option ::= SESSION LP ids cpxName COMMA tmvar RP */ +#line 586 "sql.y" { yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n; - yymsp[-6].minor.yy147.col = yymsp[-4].minor.yy0; - yymsp[-6].minor.yy147.gap = yymsp[-1].minor.yy0; + yymsp[-6].minor.yy365.col = yymsp[-4].minor.yy0; + yymsp[-6].minor.yy365.gap = yymsp[-1].minor.yy0; } +#line 3490 "sql.c" break; case 199: /* windowstate_option ::= */ -{ yymsp[1].minor.yy40.col.n = 0; yymsp[1].minor.yy40.col.z = NULL;} +#line 593 "sql.y" +{ yymsp[1].minor.yy544.col.n = 0; yymsp[1].minor.yy544.col.z = NULL;} +#line 3495 "sql.c" break; case 200: /* windowstate_option ::= STATE_WINDOW LP ids RP */ -{ yymsp[-3].minor.yy40.col = yymsp[-1].minor.yy0; } +#line 594 "sql.y" +{ yymsp[-3].minor.yy544.col = yymsp[-1].minor.yy0; } +#line 3500 "sql.c" break; case 201: /* fill_opt ::= */ -{ yymsp[1].minor.yy421 = 0; } +#line 598 "sql.y" +{ yymsp[1].minor.yy403 = 0; } +#line 3505 "sql.c" break; case 202: /* fill_opt ::= FILL LP ID COMMA tagitemlist RP */ +#line 599 "sql.y" { tVariant A = {0}; toTSDBType(yymsp[-3].minor.yy0.type); tVariantCreate(&A, &yymsp[-3].minor.yy0); - tVariantListInsert(yymsp[-1].minor.yy421, &A, -1, 0); - yymsp[-5].minor.yy421 = yymsp[-1].minor.yy421; + tVariantListInsert(yymsp[-1].minor.yy403, &A, -1, 0); + yymsp[-5].minor.yy403 = yymsp[-1].minor.yy403; } +#line 3517 "sql.c" break; case 203: /* fill_opt ::= FILL LP ID RP */ +#line 608 "sql.y" { toTSDBType(yymsp[-1].minor.yy0.type); - yymsp[-3].minor.yy421 = tVariantListAppendToken(NULL, &yymsp[-1].minor.yy0, -1); + yymsp[-3].minor.yy403 = tVariantListAppendToken(NULL, &yymsp[-1].minor.yy0, -1); } +#line 3525 "sql.c" break; case 204: /* sliding_opt ::= SLIDING LP tmvar RP */ +#line 614 "sql.y" {yymsp[-3].minor.yy0 = yymsp[-1].minor.yy0; } +#line 3530 "sql.c" break; case 205: /* sliding_opt ::= */ +#line 615 "sql.y" {yymsp[1].minor.yy0.n = 0; yymsp[1].minor.yy0.z = NULL; yymsp[1].minor.yy0.type = 0; } +#line 3535 "sql.c" break; case 207: /* orderby_opt ::= ORDER BY sortlist */ -{yymsp[-2].minor.yy421 = yymsp[0].minor.yy421;} +#line 627 "sql.y" +{yymsp[-2].minor.yy403 = yymsp[0].minor.yy403;} +#line 3540 "sql.c" break; case 208: /* sortlist ::= sortlist COMMA item sortorder */ +#line 629 "sql.y" { - yylhsminor.yy421 = tVariantListAppend(yymsp[-3].minor.yy421, &yymsp[-1].minor.yy430, yymsp[0].minor.yy96); + yylhsminor.yy403 = tVariantListAppend(yymsp[-3].minor.yy403, &yymsp[-1].minor.yy488, yymsp[0].minor.yy70); } - yymsp[-3].minor.yy421 = yylhsminor.yy421; +#line 3547 "sql.c" + yymsp[-3].minor.yy403 = yylhsminor.yy403; break; case 209: /* sortlist ::= item sortorder */ +#line 633 "sql.y" { - yylhsminor.yy421 = tVariantListAppend(NULL, &yymsp[-1].minor.yy430, yymsp[0].minor.yy96); + yylhsminor.yy403 = tVariantListAppend(NULL, &yymsp[-1].minor.yy488, yymsp[0].minor.yy70); } - yymsp[-1].minor.yy421 = yylhsminor.yy421; +#line 3555 "sql.c" + yymsp[-1].minor.yy403 = yylhsminor.yy403; break; case 210: /* item ::= ids cpxName */ +#line 638 "sql.y" { toTSDBType(yymsp[-1].minor.yy0.type); yymsp[-1].minor.yy0.n += yymsp[0].minor.yy0.n; - tVariantCreate(&yylhsminor.yy430, &yymsp[-1].minor.yy0); + tVariantCreate(&yylhsminor.yy488, &yymsp[-1].minor.yy0); } - yymsp[-1].minor.yy430 = yylhsminor.yy430; +#line 3566 "sql.c" + yymsp[-1].minor.yy488 = yylhsminor.yy488; break; case 211: /* sortorder ::= ASC */ -{ yymsp[0].minor.yy96 = TSDB_ORDER_ASC; } +#line 646 "sql.y" +{ yymsp[0].minor.yy70 = TSDB_ORDER_ASC; } +#line 3572 "sql.c" break; case 212: /* sortorder ::= DESC */ -{ yymsp[0].minor.yy96 = TSDB_ORDER_DESC;} +#line 647 "sql.y" +{ yymsp[0].minor.yy70 = TSDB_ORDER_DESC;} +#line 3577 "sql.c" break; case 213: /* sortorder ::= */ -{ yymsp[1].minor.yy96 = TSDB_ORDER_ASC; } +#line 648 "sql.y" +{ yymsp[1].minor.yy70 = TSDB_ORDER_ASC; } +#line 3582 "sql.c" break; case 214: /* groupby_opt ::= */ -{ yymsp[1].minor.yy421 = 0;} +#line 656 "sql.y" +{ yymsp[1].minor.yy403 = 0;} +#line 3587 "sql.c" break; case 215: /* groupby_opt ::= GROUP BY grouplist */ -{ yymsp[-2].minor.yy421 = yymsp[0].minor.yy421;} +#line 657 "sql.y" +{ yymsp[-2].minor.yy403 = yymsp[0].minor.yy403;} +#line 3592 "sql.c" break; case 216: /* grouplist ::= grouplist COMMA item */ +#line 659 "sql.y" { - yylhsminor.yy421 = tVariantListAppend(yymsp[-2].minor.yy421, &yymsp[0].minor.yy430, -1); + yylhsminor.yy403 = tVariantListAppend(yymsp[-2].minor.yy403, &yymsp[0].minor.yy488, -1); } - yymsp[-2].minor.yy421 = yylhsminor.yy421; +#line 3599 "sql.c" + yymsp[-2].minor.yy403 = yylhsminor.yy403; break; case 217: /* grouplist ::= item */ +#line 663 "sql.y" { - yylhsminor.yy421 = tVariantListAppend(NULL, &yymsp[0].minor.yy430, -1); + yylhsminor.yy403 = tVariantListAppend(NULL, &yymsp[0].minor.yy488, -1); } - yymsp[0].minor.yy421 = yylhsminor.yy421; +#line 3607 "sql.c" + yymsp[0].minor.yy403 = yylhsminor.yy403; break; case 218: /* having_opt ::= */ case 228: /* where_opt ::= */ yytestcase(yyruleno==228); - case 270: /* expritem ::= */ yytestcase(yyruleno==270); -{yymsp[1].minor.yy439 = 0;} + case 271: /* expritem ::= */ yytestcase(yyruleno==271); +#line 670 "sql.y" +{yymsp[1].minor.yy260 = 0;} +#line 3615 "sql.c" break; case 219: /* having_opt ::= HAVING expr */ case 229: /* where_opt ::= WHERE expr */ yytestcase(yyruleno==229); -{yymsp[-1].minor.yy439 = yymsp[0].minor.yy439;} +#line 671 "sql.y" +{yymsp[-1].minor.yy260 = yymsp[0].minor.yy260;} +#line 3621 "sql.c" break; case 220: /* limit_opt ::= */ case 224: /* slimit_opt ::= */ yytestcase(yyruleno==224); -{yymsp[1].minor.yy166.limit = -1; yymsp[1].minor.yy166.offset = 0;} +#line 675 "sql.y" +{yymsp[1].minor.yy404.limit = -1; yymsp[1].minor.yy404.offset = 0;} +#line 3627 "sql.c" break; case 221: /* limit_opt ::= LIMIT signed */ case 225: /* slimit_opt ::= SLIMIT signed */ yytestcase(yyruleno==225); -{yymsp[-1].minor.yy166.limit = yymsp[0].minor.yy325; yymsp[-1].minor.yy166.offset = 0;} +#line 676 "sql.y" +{yymsp[-1].minor.yy404.limit = yymsp[0].minor.yy387; yymsp[-1].minor.yy404.offset = 0;} +#line 3633 "sql.c" break; case 222: /* limit_opt ::= LIMIT signed OFFSET signed */ -{ yymsp[-3].minor.yy166.limit = yymsp[-2].minor.yy325; yymsp[-3].minor.yy166.offset = yymsp[0].minor.yy325;} +#line 678 "sql.y" +{ yymsp[-3].minor.yy404.limit = yymsp[-2].minor.yy387; yymsp[-3].minor.yy404.offset = yymsp[0].minor.yy387;} +#line 3638 "sql.c" break; case 223: /* limit_opt ::= LIMIT signed COMMA signed */ -{ yymsp[-3].minor.yy166.limit = yymsp[0].minor.yy325; yymsp[-3].minor.yy166.offset = yymsp[-2].minor.yy325;} +#line 680 "sql.y" +{ yymsp[-3].minor.yy404.limit = yymsp[0].minor.yy387; yymsp[-3].minor.yy404.offset = yymsp[-2].minor.yy387;} +#line 3643 "sql.c" break; case 226: /* slimit_opt ::= SLIMIT signed SOFFSET signed */ -{yymsp[-3].minor.yy166.limit = yymsp[-2].minor.yy325; yymsp[-3].minor.yy166.offset = yymsp[0].minor.yy325;} +#line 686 "sql.y" +{yymsp[-3].minor.yy404.limit = yymsp[-2].minor.yy387; yymsp[-3].minor.yy404.offset = yymsp[0].minor.yy387;} +#line 3648 "sql.c" break; case 227: /* slimit_opt ::= SLIMIT signed COMMA signed */ -{yymsp[-3].minor.yy166.limit = yymsp[0].minor.yy325; yymsp[-3].minor.yy166.offset = yymsp[-2].minor.yy325;} +#line 688 "sql.y" +{yymsp[-3].minor.yy404.limit = yymsp[0].minor.yy387; yymsp[-3].minor.yy404.offset = yymsp[-2].minor.yy387;} +#line 3653 "sql.c" break; case 230: /* expr ::= LP expr RP */ -{yylhsminor.yy439 = yymsp[-1].minor.yy439; yylhsminor.yy439->exprToken.z = yymsp[-2].minor.yy0.z; yylhsminor.yy439->exprToken.n = (yymsp[0].minor.yy0.z - yymsp[-2].minor.yy0.z + 1);} - yymsp[-2].minor.yy439 = yylhsminor.yy439; +#line 701 "sql.y" +{yylhsminor.yy260 = yymsp[-1].minor.yy260; yylhsminor.yy260->exprToken.z = yymsp[-2].minor.yy0.z; yylhsminor.yy260->exprToken.n = (yymsp[0].minor.yy0.z - yymsp[-2].minor.yy0.z + 1);} +#line 3658 "sql.c" + yymsp[-2].minor.yy260 = yylhsminor.yy260; break; case 231: /* expr ::= ID */ -{ yylhsminor.yy439 = tSqlExprCreateIdValue(&yymsp[0].minor.yy0, TK_ID);} - yymsp[0].minor.yy439 = yylhsminor.yy439; +#line 703 "sql.y" +{ yylhsminor.yy260 = tSqlExprCreateIdValue(&yymsp[0].minor.yy0, TK_ID);} +#line 3664 "sql.c" + yymsp[0].minor.yy260 = yylhsminor.yy260; break; case 232: /* expr ::= ID DOT ID */ -{ yymsp[-2].minor.yy0.n += (1+yymsp[0].minor.yy0.n); yylhsminor.yy439 = tSqlExprCreateIdValue(&yymsp[-2].minor.yy0, TK_ID);} - yymsp[-2].minor.yy439 = yylhsminor.yy439; +#line 704 "sql.y" +{ yymsp[-2].minor.yy0.n += (1+yymsp[0].minor.yy0.n); yylhsminor.yy260 = tSqlExprCreateIdValue(&yymsp[-2].minor.yy0, TK_ID);} +#line 3670 "sql.c" + yymsp[-2].minor.yy260 = yylhsminor.yy260; break; case 233: /* expr ::= ID DOT STAR */ -{ yymsp[-2].minor.yy0.n += (1+yymsp[0].minor.yy0.n); yylhsminor.yy439 = tSqlExprCreateIdValue(&yymsp[-2].minor.yy0, TK_ALL);} - yymsp[-2].minor.yy439 = yylhsminor.yy439; +#line 705 "sql.y" +{ yymsp[-2].minor.yy0.n += (1+yymsp[0].minor.yy0.n); yylhsminor.yy260 = tSqlExprCreateIdValue(&yymsp[-2].minor.yy0, TK_ALL);} +#line 3676 "sql.c" + yymsp[-2].minor.yy260 = yylhsminor.yy260; break; case 234: /* expr ::= INTEGER */ -{ yylhsminor.yy439 = tSqlExprCreateIdValue(&yymsp[0].minor.yy0, TK_INTEGER);} - yymsp[0].minor.yy439 = yylhsminor.yy439; +#line 707 "sql.y" +{ yylhsminor.yy260 = tSqlExprCreateIdValue(&yymsp[0].minor.yy0, TK_INTEGER);} +#line 3682 "sql.c" + yymsp[0].minor.yy260 = yylhsminor.yy260; break; case 235: /* expr ::= MINUS INTEGER */ case 236: /* expr ::= PLUS INTEGER */ yytestcase(yyruleno==236); -{ yymsp[-1].minor.yy0.n += yymsp[0].minor.yy0.n; yymsp[-1].minor.yy0.type = TK_INTEGER; yylhsminor.yy439 = tSqlExprCreateIdValue(&yymsp[-1].minor.yy0, TK_INTEGER);} - yymsp[-1].minor.yy439 = yylhsminor.yy439; +#line 708 "sql.y" +{ yymsp[-1].minor.yy0.n += yymsp[0].minor.yy0.n; yymsp[-1].minor.yy0.type = TK_INTEGER; yylhsminor.yy260 = tSqlExprCreateIdValue(&yymsp[-1].minor.yy0, TK_INTEGER);} +#line 3689 "sql.c" + yymsp[-1].minor.yy260 = yylhsminor.yy260; break; case 237: /* expr ::= FLOAT */ -{ yylhsminor.yy439 = tSqlExprCreateIdValue(&yymsp[0].minor.yy0, TK_FLOAT);} - yymsp[0].minor.yy439 = yylhsminor.yy439; +#line 710 "sql.y" +{ yylhsminor.yy260 = tSqlExprCreateIdValue(&yymsp[0].minor.yy0, TK_FLOAT);} +#line 3695 "sql.c" + yymsp[0].minor.yy260 = yylhsminor.yy260; break; case 238: /* expr ::= MINUS FLOAT */ case 239: /* expr ::= PLUS FLOAT */ yytestcase(yyruleno==239); -{ yymsp[-1].minor.yy0.n += yymsp[0].minor.yy0.n; yymsp[-1].minor.yy0.type = TK_FLOAT; yylhsminor.yy439 = tSqlExprCreateIdValue(&yymsp[-1].minor.yy0, TK_FLOAT);} - yymsp[-1].minor.yy439 = yylhsminor.yy439; +#line 711 "sql.y" +{ yymsp[-1].minor.yy0.n += yymsp[0].minor.yy0.n; yymsp[-1].minor.yy0.type = TK_FLOAT; yylhsminor.yy260 = tSqlExprCreateIdValue(&yymsp[-1].minor.yy0, TK_FLOAT);} +#line 3702 "sql.c" + yymsp[-1].minor.yy260 = yylhsminor.yy260; break; case 240: /* expr ::= STRING */ -{ yylhsminor.yy439 = tSqlExprCreateIdValue(&yymsp[0].minor.yy0, TK_STRING);} - yymsp[0].minor.yy439 = yylhsminor.yy439; +#line 713 "sql.y" +{ yylhsminor.yy260 = tSqlExprCreateIdValue(&yymsp[0].minor.yy0, TK_STRING);} +#line 3708 "sql.c" + yymsp[0].minor.yy260 = yylhsminor.yy260; break; case 241: /* expr ::= NOW */ -{ yylhsminor.yy439 = tSqlExprCreateIdValue(&yymsp[0].minor.yy0, TK_NOW); } - yymsp[0].minor.yy439 = yylhsminor.yy439; +#line 714 "sql.y" +{ yylhsminor.yy260 = tSqlExprCreateIdValue(&yymsp[0].minor.yy0, TK_NOW); } +#line 3714 "sql.c" + yymsp[0].minor.yy260 = yylhsminor.yy260; break; case 242: /* expr ::= VARIABLE */ -{ yylhsminor.yy439 = tSqlExprCreateIdValue(&yymsp[0].minor.yy0, TK_VARIABLE);} - yymsp[0].minor.yy439 = yylhsminor.yy439; +#line 715 "sql.y" +{ yylhsminor.yy260 = tSqlExprCreateIdValue(&yymsp[0].minor.yy0, TK_VARIABLE);} +#line 3720 "sql.c" + yymsp[0].minor.yy260 = yylhsminor.yy260; break; case 243: /* expr ::= PLUS VARIABLE */ case 244: /* expr ::= MINUS VARIABLE */ yytestcase(yyruleno==244); -{ yymsp[-1].minor.yy0.n += yymsp[0].minor.yy0.n; yymsp[-1].minor.yy0.type = TK_VARIABLE; yylhsminor.yy439 = tSqlExprCreateIdValue(&yymsp[-1].minor.yy0, TK_VARIABLE);} - yymsp[-1].minor.yy439 = yylhsminor.yy439; +#line 716 "sql.y" +{ yymsp[-1].minor.yy0.n += yymsp[0].minor.yy0.n; yymsp[-1].minor.yy0.type = TK_VARIABLE; yylhsminor.yy260 = tSqlExprCreateIdValue(&yymsp[-1].minor.yy0, TK_VARIABLE);} +#line 3727 "sql.c" + yymsp[-1].minor.yy260 = yylhsminor.yy260; break; case 245: /* expr ::= BOOL */ -{ yylhsminor.yy439 = tSqlExprCreateIdValue(&yymsp[0].minor.yy0, TK_BOOL);} - yymsp[0].minor.yy439 = yylhsminor.yy439; +#line 718 "sql.y" +{ yylhsminor.yy260 = tSqlExprCreateIdValue(&yymsp[0].minor.yy0, TK_BOOL);} +#line 3733 "sql.c" + yymsp[0].minor.yy260 = yylhsminor.yy260; break; case 246: /* expr ::= NULL */ -{ yylhsminor.yy439 = tSqlExprCreateIdValue(&yymsp[0].minor.yy0, TK_NULL);} - yymsp[0].minor.yy439 = yylhsminor.yy439; +#line 719 "sql.y" +{ yylhsminor.yy260 = tSqlExprCreateIdValue(&yymsp[0].minor.yy0, TK_NULL);} +#line 3739 "sql.c" + yymsp[0].minor.yy260 = yylhsminor.yy260; break; case 247: /* expr ::= ID LP exprlist RP */ -{ tStrTokenAppend(pInfo->funcs, &yymsp[-3].minor.yy0); yylhsminor.yy439 = tSqlExprCreateFunction(yymsp[-1].minor.yy421, &yymsp[-3].minor.yy0, &yymsp[0].minor.yy0, yymsp[-3].minor.yy0.type); } - yymsp[-3].minor.yy439 = yylhsminor.yy439; +#line 722 "sql.y" +{ tStrTokenAppend(pInfo->funcs, &yymsp[-3].minor.yy0); yylhsminor.yy260 = tSqlExprCreateFunction(yymsp[-1].minor.yy403, &yymsp[-3].minor.yy0, &yymsp[0].minor.yy0, yymsp[-3].minor.yy0.type); } +#line 3745 "sql.c" + yymsp[-3].minor.yy260 = yylhsminor.yy260; break; case 248: /* expr ::= ID LP STAR RP */ -{ tStrTokenAppend(pInfo->funcs, &yymsp[-3].minor.yy0); yylhsminor.yy439 = tSqlExprCreateFunction(NULL, &yymsp[-3].minor.yy0, &yymsp[0].minor.yy0, yymsp[-3].minor.yy0.type); } - yymsp[-3].minor.yy439 = yylhsminor.yy439; +#line 725 "sql.y" +{ tStrTokenAppend(pInfo->funcs, &yymsp[-3].minor.yy0); yylhsminor.yy260 = tSqlExprCreateFunction(NULL, &yymsp[-3].minor.yy0, &yymsp[0].minor.yy0, yymsp[-3].minor.yy0.type); } +#line 3751 "sql.c" + yymsp[-3].minor.yy260 = yylhsminor.yy260; break; case 249: /* expr ::= expr IS NULL */ -{yylhsminor.yy439 = tSqlExprCreate(yymsp[-2].minor.yy439, NULL, TK_ISNULL);} - yymsp[-2].minor.yy439 = yylhsminor.yy439; +#line 728 "sql.y" +{yylhsminor.yy260 = tSqlExprCreate(yymsp[-2].minor.yy260, NULL, TK_ISNULL);} +#line 3757 "sql.c" + yymsp[-2].minor.yy260 = yylhsminor.yy260; break; case 250: /* expr ::= expr IS NOT NULL */ -{yylhsminor.yy439 = tSqlExprCreate(yymsp[-3].minor.yy439, NULL, TK_NOTNULL);} - yymsp[-3].minor.yy439 = yylhsminor.yy439; +#line 729 "sql.y" +{yylhsminor.yy260 = tSqlExprCreate(yymsp[-3].minor.yy260, NULL, TK_NOTNULL);} +#line 3763 "sql.c" + yymsp[-3].minor.yy260 = yylhsminor.yy260; break; case 251: /* expr ::= expr LT expr */ -{yylhsminor.yy439 = tSqlExprCreate(yymsp[-2].minor.yy439, yymsp[0].minor.yy439, TK_LT);} - yymsp[-2].minor.yy439 = yylhsminor.yy439; +#line 732 "sql.y" +{yylhsminor.yy260 = tSqlExprCreate(yymsp[-2].minor.yy260, yymsp[0].minor.yy260, TK_LT);} +#line 3769 "sql.c" + yymsp[-2].minor.yy260 = yylhsminor.yy260; break; case 252: /* expr ::= expr GT expr */ -{yylhsminor.yy439 = tSqlExprCreate(yymsp[-2].minor.yy439, yymsp[0].minor.yy439, TK_GT);} - yymsp[-2].minor.yy439 = yylhsminor.yy439; +#line 733 "sql.y" +{yylhsminor.yy260 = tSqlExprCreate(yymsp[-2].minor.yy260, yymsp[0].minor.yy260, TK_GT);} +#line 3775 "sql.c" + yymsp[-2].minor.yy260 = yylhsminor.yy260; break; case 253: /* expr ::= expr LE expr */ -{yylhsminor.yy439 = tSqlExprCreate(yymsp[-2].minor.yy439, yymsp[0].minor.yy439, TK_LE);} - yymsp[-2].minor.yy439 = yylhsminor.yy439; +#line 734 "sql.y" +{yylhsminor.yy260 = tSqlExprCreate(yymsp[-2].minor.yy260, yymsp[0].minor.yy260, TK_LE);} +#line 3781 "sql.c" + yymsp[-2].minor.yy260 = yylhsminor.yy260; break; case 254: /* expr ::= expr GE expr */ -{yylhsminor.yy439 = tSqlExprCreate(yymsp[-2].minor.yy439, yymsp[0].minor.yy439, TK_GE);} - yymsp[-2].minor.yy439 = yylhsminor.yy439; +#line 735 "sql.y" +{yylhsminor.yy260 = tSqlExprCreate(yymsp[-2].minor.yy260, yymsp[0].minor.yy260, TK_GE);} +#line 3787 "sql.c" + yymsp[-2].minor.yy260 = yylhsminor.yy260; break; case 255: /* expr ::= expr NE expr */ -{yylhsminor.yy439 = tSqlExprCreate(yymsp[-2].minor.yy439, yymsp[0].minor.yy439, TK_NE);} - yymsp[-2].minor.yy439 = yylhsminor.yy439; +#line 736 "sql.y" +{yylhsminor.yy260 = tSqlExprCreate(yymsp[-2].minor.yy260, yymsp[0].minor.yy260, TK_NE);} +#line 3793 "sql.c" + yymsp[-2].minor.yy260 = yylhsminor.yy260; break; case 256: /* expr ::= expr EQ expr */ -{yylhsminor.yy439 = tSqlExprCreate(yymsp[-2].minor.yy439, yymsp[0].minor.yy439, TK_EQ);} - yymsp[-2].minor.yy439 = yylhsminor.yy439; +#line 737 "sql.y" +{yylhsminor.yy260 = tSqlExprCreate(yymsp[-2].minor.yy260, yymsp[0].minor.yy260, TK_EQ);} +#line 3799 "sql.c" + yymsp[-2].minor.yy260 = yylhsminor.yy260; break; case 257: /* expr ::= expr BETWEEN expr AND expr */ -{ tSqlExpr* X2 = tSqlExprClone(yymsp[-4].minor.yy439); yylhsminor.yy439 = tSqlExprCreate(tSqlExprCreate(yymsp[-4].minor.yy439, yymsp[-2].minor.yy439, TK_GE), tSqlExprCreate(X2, yymsp[0].minor.yy439, TK_LE), TK_AND);} - yymsp[-4].minor.yy439 = yylhsminor.yy439; +#line 739 "sql.y" +{ tSqlExpr* X2 = tSqlExprClone(yymsp[-4].minor.yy260); yylhsminor.yy260 = tSqlExprCreate(tSqlExprCreate(yymsp[-4].minor.yy260, yymsp[-2].minor.yy260, TK_GE), tSqlExprCreate(X2, yymsp[0].minor.yy260, TK_LE), TK_AND);} +#line 3805 "sql.c" + yymsp[-4].minor.yy260 = yylhsminor.yy260; break; case 258: /* expr ::= expr AND expr */ -{yylhsminor.yy439 = tSqlExprCreate(yymsp[-2].minor.yy439, yymsp[0].minor.yy439, TK_AND);} - yymsp[-2].minor.yy439 = yylhsminor.yy439; +#line 741 "sql.y" +{yylhsminor.yy260 = tSqlExprCreate(yymsp[-2].minor.yy260, yymsp[0].minor.yy260, TK_AND);} +#line 3811 "sql.c" + yymsp[-2].minor.yy260 = yylhsminor.yy260; break; case 259: /* expr ::= expr OR expr */ -{yylhsminor.yy439 = tSqlExprCreate(yymsp[-2].minor.yy439, yymsp[0].minor.yy439, TK_OR); } - yymsp[-2].minor.yy439 = yylhsminor.yy439; +#line 742 "sql.y" +{yylhsminor.yy260 = tSqlExprCreate(yymsp[-2].minor.yy260, yymsp[0].minor.yy260, TK_OR); } +#line 3817 "sql.c" + yymsp[-2].minor.yy260 = yylhsminor.yy260; break; case 260: /* expr ::= expr PLUS expr */ -{yylhsminor.yy439 = tSqlExprCreate(yymsp[-2].minor.yy439, yymsp[0].minor.yy439, TK_PLUS); } - yymsp[-2].minor.yy439 = yylhsminor.yy439; +#line 745 "sql.y" +{yylhsminor.yy260 = tSqlExprCreate(yymsp[-2].minor.yy260, yymsp[0].minor.yy260, TK_PLUS); } +#line 3823 "sql.c" + yymsp[-2].minor.yy260 = yylhsminor.yy260; break; case 261: /* expr ::= expr MINUS expr */ -{yylhsminor.yy439 = tSqlExprCreate(yymsp[-2].minor.yy439, yymsp[0].minor.yy439, TK_MINUS); } - yymsp[-2].minor.yy439 = yylhsminor.yy439; +#line 746 "sql.y" +{yylhsminor.yy260 = tSqlExprCreate(yymsp[-2].minor.yy260, yymsp[0].minor.yy260, TK_MINUS); } +#line 3829 "sql.c" + yymsp[-2].minor.yy260 = yylhsminor.yy260; break; case 262: /* expr ::= expr STAR expr */ -{yylhsminor.yy439 = tSqlExprCreate(yymsp[-2].minor.yy439, yymsp[0].minor.yy439, TK_STAR); } - yymsp[-2].minor.yy439 = yylhsminor.yy439; +#line 747 "sql.y" +{yylhsminor.yy260 = tSqlExprCreate(yymsp[-2].minor.yy260, yymsp[0].minor.yy260, TK_STAR); } +#line 3835 "sql.c" + yymsp[-2].minor.yy260 = yylhsminor.yy260; break; case 263: /* expr ::= expr SLASH expr */ -{yylhsminor.yy439 = tSqlExprCreate(yymsp[-2].minor.yy439, yymsp[0].minor.yy439, TK_DIVIDE);} - yymsp[-2].minor.yy439 = yylhsminor.yy439; +#line 748 "sql.y" +{yylhsminor.yy260 = tSqlExprCreate(yymsp[-2].minor.yy260, yymsp[0].minor.yy260, TK_DIVIDE);} +#line 3841 "sql.c" + yymsp[-2].minor.yy260 = yylhsminor.yy260; break; case 264: /* expr ::= expr REM expr */ -{yylhsminor.yy439 = tSqlExprCreate(yymsp[-2].minor.yy439, yymsp[0].minor.yy439, TK_REM); } - yymsp[-2].minor.yy439 = yylhsminor.yy439; +#line 749 "sql.y" +{yylhsminor.yy260 = tSqlExprCreate(yymsp[-2].minor.yy260, yymsp[0].minor.yy260, TK_REM); } +#line 3847 "sql.c" + yymsp[-2].minor.yy260 = yylhsminor.yy260; break; case 265: /* expr ::= expr LIKE expr */ -{yylhsminor.yy439 = tSqlExprCreate(yymsp[-2].minor.yy439, yymsp[0].minor.yy439, TK_LIKE); } - yymsp[-2].minor.yy439 = yylhsminor.yy439; - break; - case 266: /* expr ::= expr IN LP exprlist RP */ -{yylhsminor.yy439 = tSqlExprCreate(yymsp[-4].minor.yy439, (tSqlExpr*)yymsp[-1].minor.yy421, TK_IN); } - yymsp[-4].minor.yy439 = yylhsminor.yy439; - break; - case 267: /* exprlist ::= exprlist COMMA expritem */ -{yylhsminor.yy421 = tSqlExprListAppend(yymsp[-2].minor.yy421,yymsp[0].minor.yy439,0, 0);} - yymsp[-2].minor.yy421 = yylhsminor.yy421; - break; - case 268: /* exprlist ::= expritem */ -{yylhsminor.yy421 = tSqlExprListAppend(0,yymsp[0].minor.yy439,0, 0);} - yymsp[0].minor.yy421 = yylhsminor.yy421; - break; - case 269: /* expritem ::= expr */ -{yylhsminor.yy439 = yymsp[0].minor.yy439;} - yymsp[0].minor.yy439 = yylhsminor.yy439; - break; - case 271: /* cmd ::= RESET QUERY CACHE */ +#line 752 "sql.y" +{yylhsminor.yy260 = tSqlExprCreate(yymsp[-2].minor.yy260, yymsp[0].minor.yy260, TK_LIKE); } +#line 3853 "sql.c" + yymsp[-2].minor.yy260 = yylhsminor.yy260; + break; + case 266: /* expr ::= expr MATCH expr */ +#line 755 "sql.y" +{yylhsminor.yy260 = tSqlExprCreate(yymsp[-2].minor.yy260, yymsp[0].minor.yy260, TK_MATCH); } +#line 3859 "sql.c" + yymsp[-2].minor.yy260 = yylhsminor.yy260; + break; + case 267: /* expr ::= expr IN LP exprlist RP */ +#line 758 "sql.y" +{yylhsminor.yy260 = tSqlExprCreate(yymsp[-4].minor.yy260, (tSqlExpr*)yymsp[-1].minor.yy403, TK_IN); } +#line 3865 "sql.c" + yymsp[-4].minor.yy260 = yylhsminor.yy260; + break; + case 268: /* exprlist ::= exprlist COMMA expritem */ +#line 766 "sql.y" +{yylhsminor.yy403 = tSqlExprListAppend(yymsp[-2].minor.yy403,yymsp[0].minor.yy260,0, 0);} +#line 3871 "sql.c" + yymsp[-2].minor.yy403 = yylhsminor.yy403; + break; + case 269: /* exprlist ::= expritem */ +#line 767 "sql.y" +{yylhsminor.yy403 = tSqlExprListAppend(0,yymsp[0].minor.yy260,0, 0);} +#line 3877 "sql.c" + yymsp[0].minor.yy403 = yylhsminor.yy403; + break; + case 270: /* expritem ::= expr */ +#line 768 "sql.y" +{yylhsminor.yy260 = yymsp[0].minor.yy260;} +#line 3883 "sql.c" + yymsp[0].minor.yy260 = yylhsminor.yy260; + break; + case 272: /* cmd ::= RESET QUERY CACHE */ +#line 772 "sql.y" { setDCLSqlElems(pInfo, TSDB_SQL_RESET_CACHE, 0);} +#line 3889 "sql.c" break; - case 272: /* cmd ::= SYNCDB ids REPLICA */ + case 273: /* cmd ::= SYNCDB ids REPLICA */ +#line 775 "sql.y" { setDCLSqlElems(pInfo, TSDB_SQL_SYNC_DB_REPLICA, 1, &yymsp[-1].minor.yy0);} +#line 3894 "sql.c" break; - case 273: /* cmd ::= ALTER TABLE ids cpxName ADD COLUMN columnlist */ + case 274: /* cmd ::= ALTER TABLE ids cpxName ADD COLUMN columnlist */ +#line 778 "sql.y" { yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n; - SAlterTableInfo* pAlterTable = tSetAlterTableInfo(&yymsp[-4].minor.yy0, yymsp[0].minor.yy421, NULL, TSDB_ALTER_TABLE_ADD_COLUMN, -1); + SAlterTableInfo* pAlterTable = tSetAlterTableInfo(&yymsp[-4].minor.yy0, yymsp[0].minor.yy403, NULL, TSDB_ALTER_TABLE_ADD_COLUMN, -1); setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE); } +#line 3903 "sql.c" break; - case 274: /* cmd ::= ALTER TABLE ids cpxName DROP COLUMN ids */ + case 275: /* cmd ::= ALTER TABLE ids cpxName DROP COLUMN ids */ +#line 784 "sql.y" { yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n; @@ -3154,22 +3912,28 @@ static void yy_reduce( SAlterTableInfo* pAlterTable = tSetAlterTableInfo(&yymsp[-4].minor.yy0, NULL, K, TSDB_ALTER_TABLE_DROP_COLUMN, -1); setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE); } +#line 3916 "sql.c" break; - case 275: /* cmd ::= ALTER TABLE ids cpxName MODIFY COLUMN columnlist */ + case 276: /* cmd ::= ALTER TABLE ids cpxName MODIFY COLUMN columnlist */ +#line 794 "sql.y" { yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n; - SAlterTableInfo* pAlterTable = tSetAlterTableInfo(&yymsp[-4].minor.yy0, yymsp[0].minor.yy421, NULL, TSDB_ALTER_TABLE_CHANGE_COLUMN, -1); + SAlterTableInfo* pAlterTable = tSetAlterTableInfo(&yymsp[-4].minor.yy0, yymsp[0].minor.yy403, NULL, TSDB_ALTER_TABLE_CHANGE_COLUMN, -1); setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE); } +#line 3925 "sql.c" break; - case 276: /* cmd ::= ALTER TABLE ids cpxName ADD TAG columnlist */ + case 277: /* cmd ::= ALTER TABLE ids cpxName ADD TAG columnlist */ +#line 801 "sql.y" { yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n; - SAlterTableInfo* pAlterTable = tSetAlterTableInfo(&yymsp[-4].minor.yy0, yymsp[0].minor.yy421, NULL, TSDB_ALTER_TABLE_ADD_TAG_COLUMN, -1); + SAlterTableInfo* pAlterTable = tSetAlterTableInfo(&yymsp[-4].minor.yy0, yymsp[0].minor.yy403, NULL, TSDB_ALTER_TABLE_ADD_TAG_COLUMN, -1); setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE); } +#line 3934 "sql.c" break; - case 277: /* cmd ::= ALTER TABLE ids cpxName DROP TAG ids */ + case 278: /* cmd ::= ALTER TABLE ids cpxName DROP TAG ids */ +#line 806 "sql.y" { yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n; @@ -3179,8 +3943,10 @@ static void yy_reduce( SAlterTableInfo* pAlterTable = tSetAlterTableInfo(&yymsp[-4].minor.yy0, NULL, A, TSDB_ALTER_TABLE_DROP_TAG_COLUMN, -1); setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE); } +#line 3947 "sql.c" break; - case 278: /* cmd ::= ALTER TABLE ids cpxName CHANGE TAG ids ids */ + case 279: /* cmd ::= ALTER TABLE ids cpxName CHANGE TAG ids ids */ +#line 816 "sql.y" { yymsp[-5].minor.yy0.n += yymsp[-4].minor.yy0.n; @@ -3193,34 +3959,42 @@ static void yy_reduce( SAlterTableInfo* pAlterTable = tSetAlterTableInfo(&yymsp[-5].minor.yy0, NULL, A, TSDB_ALTER_TABLE_CHANGE_TAG_COLUMN, -1); setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE); } +#line 3963 "sql.c" break; - case 279: /* cmd ::= ALTER TABLE ids cpxName SET TAG ids EQ tagitem */ + case 280: /* cmd ::= ALTER TABLE ids cpxName SET TAG ids EQ tagitem */ +#line 829 "sql.y" { yymsp[-6].minor.yy0.n += yymsp[-5].minor.yy0.n; toTSDBType(yymsp[-2].minor.yy0.type); SArray* A = tVariantListAppendToken(NULL, &yymsp[-2].minor.yy0, -1); - A = tVariantListAppend(A, &yymsp[0].minor.yy430, -1); + A = tVariantListAppend(A, &yymsp[0].minor.yy488, -1); SAlterTableInfo* pAlterTable = tSetAlterTableInfo(&yymsp[-6].minor.yy0, NULL, A, TSDB_ALTER_TABLE_UPDATE_TAG_VAL, -1); setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE); } +#line 3977 "sql.c" break; - case 280: /* cmd ::= ALTER TABLE ids cpxName MODIFY TAG columnlist */ + case 281: /* cmd ::= ALTER TABLE ids cpxName MODIFY TAG columnlist */ +#line 840 "sql.y" { yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n; - SAlterTableInfo* pAlterTable = tSetAlterTableInfo(&yymsp[-4].minor.yy0, yymsp[0].minor.yy421, NULL, TSDB_ALTER_TABLE_MODIFY_TAG_COLUMN, -1); + SAlterTableInfo* pAlterTable = tSetAlterTableInfo(&yymsp[-4].minor.yy0, yymsp[0].minor.yy403, NULL, TSDB_ALTER_TABLE_MODIFY_TAG_COLUMN, -1); setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE); } +#line 3986 "sql.c" break; - case 281: /* cmd ::= ALTER STABLE ids cpxName ADD COLUMN columnlist */ + case 282: /* cmd ::= ALTER STABLE ids cpxName ADD COLUMN columnlist */ +#line 847 "sql.y" { yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n; - SAlterTableInfo* pAlterTable = tSetAlterTableInfo(&yymsp[-4].minor.yy0, yymsp[0].minor.yy421, NULL, TSDB_ALTER_TABLE_ADD_COLUMN, TSDB_SUPER_TABLE); + SAlterTableInfo* pAlterTable = tSetAlterTableInfo(&yymsp[-4].minor.yy0, yymsp[0].minor.yy403, NULL, TSDB_ALTER_TABLE_ADD_COLUMN, TSDB_SUPER_TABLE); setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE); } +#line 3995 "sql.c" break; - case 282: /* cmd ::= ALTER STABLE ids cpxName DROP COLUMN ids */ + case 283: /* cmd ::= ALTER STABLE ids cpxName DROP COLUMN ids */ +#line 853 "sql.y" { yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n; @@ -3230,22 +4004,28 @@ static void yy_reduce( SAlterTableInfo* pAlterTable = tSetAlterTableInfo(&yymsp[-4].minor.yy0, NULL, K, TSDB_ALTER_TABLE_DROP_COLUMN, TSDB_SUPER_TABLE); setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE); } +#line 4008 "sql.c" break; - case 283: /* cmd ::= ALTER STABLE ids cpxName MODIFY COLUMN columnlist */ + case 284: /* cmd ::= ALTER STABLE ids cpxName MODIFY COLUMN columnlist */ +#line 863 "sql.y" { yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n; - SAlterTableInfo* pAlterTable = tSetAlterTableInfo(&yymsp[-4].minor.yy0, yymsp[0].minor.yy421, NULL, TSDB_ALTER_TABLE_CHANGE_COLUMN, TSDB_SUPER_TABLE); + SAlterTableInfo* pAlterTable = tSetAlterTableInfo(&yymsp[-4].minor.yy0, yymsp[0].minor.yy403, NULL, TSDB_ALTER_TABLE_CHANGE_COLUMN, TSDB_SUPER_TABLE); setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE); } +#line 4017 "sql.c" break; - case 284: /* cmd ::= ALTER STABLE ids cpxName ADD TAG columnlist */ + case 285: /* cmd ::= ALTER STABLE ids cpxName ADD TAG columnlist */ +#line 870 "sql.y" { yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n; - SAlterTableInfo* pAlterTable = tSetAlterTableInfo(&yymsp[-4].minor.yy0, yymsp[0].minor.yy421, NULL, TSDB_ALTER_TABLE_ADD_TAG_COLUMN, TSDB_SUPER_TABLE); + SAlterTableInfo* pAlterTable = tSetAlterTableInfo(&yymsp[-4].minor.yy0, yymsp[0].minor.yy403, NULL, TSDB_ALTER_TABLE_ADD_TAG_COLUMN, TSDB_SUPER_TABLE); setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE); } +#line 4026 "sql.c" break; - case 285: /* cmd ::= ALTER STABLE ids cpxName DROP TAG ids */ + case 286: /* cmd ::= ALTER STABLE ids cpxName DROP TAG ids */ +#line 875 "sql.y" { yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n; @@ -3255,8 +4035,10 @@ static void yy_reduce( SAlterTableInfo* pAlterTable = tSetAlterTableInfo(&yymsp[-4].minor.yy0, NULL, A, TSDB_ALTER_TABLE_DROP_TAG_COLUMN, TSDB_SUPER_TABLE); setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE); } +#line 4039 "sql.c" break; - case 286: /* cmd ::= ALTER STABLE ids cpxName CHANGE TAG ids ids */ + case 287: /* cmd ::= ALTER STABLE ids cpxName CHANGE TAG ids ids */ +#line 885 "sql.y" { yymsp[-5].minor.yy0.n += yymsp[-4].minor.yy0.n; @@ -3269,42 +4051,53 @@ static void yy_reduce( SAlterTableInfo* pAlterTable = tSetAlterTableInfo(&yymsp[-5].minor.yy0, NULL, A, TSDB_ALTER_TABLE_CHANGE_TAG_COLUMN, TSDB_SUPER_TABLE); setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE); } +#line 4055 "sql.c" break; - case 287: /* cmd ::= ALTER STABLE ids cpxName SET TAG ids EQ tagitem */ + case 288: /* cmd ::= ALTER STABLE ids cpxName SET TAG ids EQ tagitem */ +#line 898 "sql.y" { yymsp[-6].minor.yy0.n += yymsp[-5].minor.yy0.n; toTSDBType(yymsp[-2].minor.yy0.type); SArray* A = tVariantListAppendToken(NULL, &yymsp[-2].minor.yy0, -1); - A = tVariantListAppend(A, &yymsp[0].minor.yy430, -1); + A = tVariantListAppend(A, &yymsp[0].minor.yy488, -1); SAlterTableInfo* pAlterTable = tSetAlterTableInfo(&yymsp[-6].minor.yy0, NULL, A, TSDB_ALTER_TABLE_UPDATE_TAG_VAL, TSDB_SUPER_TABLE); setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE); } +#line 4069 "sql.c" break; - case 288: /* cmd ::= ALTER STABLE ids cpxName MODIFY TAG columnlist */ + case 289: /* cmd ::= ALTER STABLE ids cpxName MODIFY TAG columnlist */ +#line 909 "sql.y" { yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n; - SAlterTableInfo* pAlterTable = tSetAlterTableInfo(&yymsp[-4].minor.yy0, yymsp[0].minor.yy421, NULL, TSDB_ALTER_TABLE_MODIFY_TAG_COLUMN, TSDB_SUPER_TABLE); + SAlterTableInfo* pAlterTable = tSetAlterTableInfo(&yymsp[-4].minor.yy0, yymsp[0].minor.yy403, NULL, TSDB_ALTER_TABLE_MODIFY_TAG_COLUMN, TSDB_SUPER_TABLE); setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE); } +#line 4078 "sql.c" break; - case 289: /* cmd ::= KILL CONNECTION INTEGER */ + case 290: /* cmd ::= KILL CONNECTION INTEGER */ +#line 916 "sql.y" {setKillSql(pInfo, TSDB_SQL_KILL_CONNECTION, &yymsp[0].minor.yy0);} +#line 4083 "sql.c" break; - case 290: /* cmd ::= KILL STREAM INTEGER COLON INTEGER */ + case 291: /* cmd ::= KILL STREAM INTEGER COLON INTEGER */ +#line 917 "sql.y" {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);} +#line 4088 "sql.c" break; - case 291: /* cmd ::= KILL QUERY INTEGER COLON INTEGER */ + case 292: /* cmd ::= KILL QUERY INTEGER COLON INTEGER */ +#line 918 "sql.y" {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);} +#line 4093 "sql.c" break; default: break; /********** End reduce actions ************************************************/ }; - assert( yyrulenostateno = (YYACTIONTYPE)yyact; yymsp->major = (YYCODETYPE)yygoto; yyTraceShift(yypParser, yyact, "... then shift"); + return yyact; } /* @@ -3328,7 +4122,8 @@ static void yy_reduce( static void yy_parse_failed( yyParser *yypParser /* The parser */ ){ - ParseARG_FETCH; + ParseARG_FETCH + ParseCTX_FETCH #ifndef NDEBUG if( yyTraceFILE ){ fprintf(yyTraceFILE,"%sFail!\n",yyTracePrompt); @@ -3339,7 +4134,8 @@ static void yy_parse_failed( ** parser fails */ /************ Begin %parse_failure code ***************************************/ /************ End %parse_failure code *****************************************/ - ParseARG_STORE; /* Suppress warning about unused %extra_argument variable */ + ParseARG_STORE /* Suppress warning about unused %extra_argument variable */ + ParseCTX_STORE } #endif /* YYNOERRORRECOVERY */ @@ -3351,9 +4147,11 @@ static void yy_syntax_error( int yymajor, /* The major type of the error token */ ParseTOKENTYPE yyminor /* The minor type of the error token */ ){ - ParseARG_FETCH; + ParseARG_FETCH + ParseCTX_FETCH #define TOKEN yyminor /************ Begin %syntax_error code ****************************************/ +#line 37 "sql.y" pInfo->valid = false; int32_t outputBufLen = tListLen(pInfo->msg); @@ -3376,8 +4174,10 @@ static void yy_syntax_error( } assert(len <= outputBufLen); +#line 4178 "sql.c" /************ End %syntax_error code ******************************************/ - ParseARG_STORE; /* Suppress warning about unused %extra_argument variable */ + ParseARG_STORE /* Suppress warning about unused %extra_argument variable */ + ParseCTX_STORE } /* @@ -3386,7 +4186,8 @@ static void yy_syntax_error( static void yy_accept( yyParser *yypParser /* The parser */ ){ - ParseARG_FETCH; + ParseARG_FETCH + ParseCTX_FETCH #ifndef NDEBUG if( yyTraceFILE ){ fprintf(yyTraceFILE,"%sAccept!\n",yyTracePrompt); @@ -3399,9 +4200,11 @@ static void yy_accept( /* Here code is inserted which will be executed whenever the ** parser accepts */ /*********** Begin %parse_accept code *****************************************/ - +#line 61 "sql.y" +#line 4205 "sql.c" /*********** End %parse_accept code *******************************************/ - ParseARG_STORE; /* Suppress warning about unused %extra_argument variable */ + ParseARG_STORE /* Suppress warning about unused %extra_argument variable */ + ParseCTX_STORE } /* The main parser program. @@ -3430,45 +4233,47 @@ void Parse( ParseARG_PDECL /* Optional %extra_argument parameter */ ){ YYMINORTYPE yyminorunion; - unsigned int yyact; /* The parser action. */ + YYACTIONTYPE yyact; /* The parser action. */ #if !defined(YYERRORSYMBOL) && !defined(YYNOERRORRECOVERY) int yyendofinput; /* True if we are at the end of input */ #endif #ifdef YYERRORSYMBOL int yyerrorhit = 0; /* True if yymajor has invoked an error */ #endif - yyParser *yypParser; /* The parser */ + yyParser *yypParser = (yyParser*)yyp; /* The parser */ + ParseCTX_FETCH + ParseARG_STORE - yypParser = (yyParser*)yyp; assert( yypParser->yytos!=0 ); #if !defined(YYERRORSYMBOL) && !defined(YYNOERRORRECOVERY) yyendofinput = (yymajor==0); #endif - ParseARG_STORE; + yyact = yypParser->yytos->stateno; #ifndef NDEBUG if( yyTraceFILE ){ - int stateno = yypParser->yytos->stateno; - if( stateno < YY_MIN_REDUCE ){ + if( yyact < YY_MIN_REDUCE ){ fprintf(yyTraceFILE,"%sInput '%s' in state %d\n", - yyTracePrompt,yyTokenName[yymajor],stateno); + yyTracePrompt,yyTokenName[yymajor],yyact); }else{ fprintf(yyTraceFILE,"%sInput '%s' with pending reduce %d\n", - yyTracePrompt,yyTokenName[yymajor],stateno-YY_MIN_REDUCE); + yyTracePrompt,yyTokenName[yymajor],yyact-YY_MIN_REDUCE); } } #endif do{ - yyact = yy_find_shift_action(yypParser,(YYCODETYPE)yymajor); + assert( yyact==yypParser->yytos->stateno ); + yyact = yy_find_shift_action((YYCODETYPE)yymajor,yyact); if( yyact >= YY_MIN_REDUCE ){ - yy_reduce(yypParser,yyact-YY_MIN_REDUCE,yymajor,yyminor); + yyact = yy_reduce(yypParser,yyact-YY_MIN_REDUCE,yymajor, + yyminor ParseCTX_PARAM); }else if( yyact <= YY_MAX_SHIFTREDUCE ){ - yy_shift(yypParser,yyact,yymajor,yyminor); + yy_shift(yypParser,yyact,(YYCODETYPE)yymajor,yyminor); #ifndef YYNOERRORRECOVERY yypParser->yyerrcnt--; #endif - yymajor = YYNOCODE; + break; }else if( yyact==YY_ACCEPT_ACTION ){ yypParser->yytos--; yy_accept(yypParser); @@ -3519,10 +4324,9 @@ void Parse( yymajor = YYNOCODE; }else{ while( yypParser->yytos >= yypParser->yystack - && yymx != YYERRORSYMBOL && (yyact = yy_find_reduce_action( yypParser->yytos->stateno, - YYERRORSYMBOL)) >= YY_MIN_REDUCE + YYERRORSYMBOL)) > YY_MAX_SHIFTREDUCE ){ yy_pop_parser_stack(yypParser); } @@ -3539,6 +4343,8 @@ void Parse( } yypParser->yyerrcnt = 3; yyerrorhit = 1; + if( yymajor==YYNOCODE ) break; + yyact = yypParser->yytos->stateno; #elif defined(YYNOERRORRECOVERY) /* If the YYNOERRORRECOVERY macro is defined, then do not attempt to ** do any kind of error recovery. Instead, simply invoke the syntax @@ -3549,8 +4355,7 @@ void Parse( */ yy_syntax_error(yypParser,yymajor, yyminor); yy_destructor(yypParser,(YYCODETYPE)yymajor,&yyminorunion); - yymajor = YYNOCODE; - + break; #else /* YYERRORSYMBOL is not defined */ /* This is what we do if the grammar does not define ERROR: ** @@ -3572,10 +4377,10 @@ void Parse( yypParser->yyerrcnt = -1; #endif } - yymajor = YYNOCODE; + break; #endif } - }while( yymajor!=YYNOCODE && yypParser->yytos>yypParser->yystack ); + }while( yypParser->yytos>yypParser->yystack ); #ifndef NDEBUG if( yyTraceFILE ){ yyStackEntry *i; @@ -3590,3 +4395,17 @@ void Parse( #endif return; } + +/* +** Return the fallback token corresponding to canonical token iToken, or +** 0 if iToken has no fallback. +*/ +int ParseFallback(int iToken){ +#ifdef YYFALLBACK + assert( iToken<(int)(sizeof(yyFallback)/sizeof(yyFallback[0])) ); + return yyFallback[iToken]; +#else + (void)iToken; + return 0; +#endif +} diff --git a/src/tsdb/src/tsdbRead.c b/src/tsdb/src/tsdbRead.c index e3ad254bbb1a4ce0a3c504e9a799a109b7e1159a..c1b935e0ee3cdbd3177710fbddf8994283319b36 100644 --- a/src/tsdb/src/tsdbRead.c +++ b/src/tsdb/src/tsdbRead.c @@ -3709,6 +3709,9 @@ static bool tableFilterFp(const void* pNode, void* param) { case TSDB_RELATION_LIKE: { return ret == 0; } + case TSDB_RELATION_MATCH: { + return ret == 0; + } case TSDB_RELATION_IN: { return ret == 1; } @@ -4042,6 +4045,8 @@ static int32_t setQueryCond(tQueryInfo *queryColInfo, SQueryCond* pCond) { pCond->start->v = queryColInfo->q; } else if (optr == TSDB_RELATION_LIKE) { assert(0); + } else if (optr == TSDB_RELATION_MATCH) { + assert(0); } return TSDB_CODE_SUCCESS; @@ -4199,7 +4204,7 @@ static void queryIndexlessColumn(SSkipList* pSkipList, tQueryInfo* pQueryInfo, S if (pQueryInfo->sch.colId == TSDB_TBNAME_COLUMN_INDEX) { if (pQueryInfo->optr == TSDB_RELATION_IN) { addToResult = pQueryInfo->compare(name, pQueryInfo->q); - } else if (pQueryInfo->optr == TSDB_RELATION_LIKE) { + } else if (pQueryInfo->optr == TSDB_RELATION_LIKE || pQueryInfo->optr == TSDB_RELATION_MATCH) { addToResult = !pQueryInfo->compare(name, pQueryInfo->q); } } else { @@ -4231,7 +4236,8 @@ void getTableListfromSkipList(tExprNode *pExpr, SSkipList *pSkipList, SArray *re param->setupInfoFn(pExpr, param->pExtInfo); tQueryInfo *pQueryInfo = pExpr->_node.info; - if (pQueryInfo->indexed && (pQueryInfo->optr != TSDB_RELATION_LIKE && pQueryInfo->optr != TSDB_RELATION_IN)) { + if (pQueryInfo->indexed && (pQueryInfo->optr != TSDB_RELATION_LIKE && pQueryInfo->optr != TSDB_RELATION_MATCH + && pQueryInfo->optr != TSDB_RELATION_IN)) { queryIndexedColumn(pSkipList, pQueryInfo, result); } else { queryIndexlessColumn(pSkipList, pQueryInfo, result, param->nodeFilterFn); diff --git a/src/util/inc/tcompare.h b/src/util/inc/tcompare.h index e29015c7cbbe49d7d2251a0c3fc2e97a00a4d5c4..ef4c1096023bd670335603dee6ab274470de3ed7 100644 --- a/src/util/inc/tcompare.h +++ b/src/util/inc/tcompare.h @@ -22,10 +22,11 @@ extern "C" { #include "os.h" -#define TSDB_PATTERN_MATCH 0 -#define TSDB_PATTERN_NOMATCH 1 -#define TSDB_PATTERN_NOWILDCARDMATCH 2 -#define TSDB_PATTERN_STRING_DEFAULT_LEN 100 +#define TSDB_PATTERN_MATCH 0 +#define TSDB_PATTERN_NOMATCH 1 +#define TSDB_PATTERN_NOWILDCARDMATCH 2 +#define TSDB_PATTERN_STRING_DEFAULT_LEN 100 +#define TSDB_REGEX_STRING_DEFAULT_LEN 128 #define FLT_COMPAR_TOL_FACTOR 4 #define FLT_EQUAL(_x, _y) (fabs((_x) - (_y)) <= (FLT_COMPAR_TOL_FACTOR * FLT_EPSILON)) @@ -82,6 +83,7 @@ int32_t compareLenPrefixedStr(const void *pLeft, const void *pRight); int32_t compareLenPrefixedWStr(const void *pLeft, const void *pRight); int32_t compareStrPatternComp(const void* pLeft, const void* pRight); +int32_t compareStrRegexComp(const void* pLeft, const void* pRight); int32_t compareFindItemInSet(const void *pLeft, const void* pRight); int32_t compareWStrPatternComp(const void* pLeft, const void* pRight); diff --git a/src/util/src/tcache.c b/src/util/src/tcache.c index b4cf2b6658c6247b110da112838ef9d732d08169..776a0ad9c83c0f133a23f4f2832acd473ed6ccec 100644 --- a/src/util/src/tcache.c +++ b/src/util/src/tcache.c @@ -71,6 +71,8 @@ static pthread_once_t cacheThreadInit = PTHREAD_ONCE_INIT; static pthread_mutex_t guard = PTHREAD_MUTEX_INITIALIZER; static SArray* pCacheArrayList = NULL; static bool stopRefreshWorker = false; +static bool refreshWorkerNormalStopped = false; +static bool refreshWorkerUnexpectedStopped = false; static void doInitRefreshThread(void) { pCacheArrayList = taosArrayInit(4, POINTER_BYTES); @@ -537,8 +539,10 @@ void taosCacheCleanup(SCacheObj *pCacheObj) { pCacheObj->deleting = 1; // wait for the refresh thread quit before destroying the cache object. - // But in the dll, the child thread will be killed before atexit takes effect.So here we only wait for 2 seconds. - for (int i = 0; i < 40&&atomic_load_8(&pCacheObj->deleting) != 0; i++) { + // But in the dll, the child thread will be killed before atexit takes effect. + while(atomic_load_8(&pCacheObj->deleting) != 0) { + if (refreshWorkerNormalStopped) break; + if (refreshWorkerUnexpectedStopped) return; taosMsleep(50); } @@ -677,6 +681,12 @@ static void doCacheRefresh(SCacheObj* pCacheObj, int64_t time, __cache_free_fn_t taosHashCondTraverse(pCacheObj->pHashTable, travHashTableFn, &sup); } +void taosCacheRefreshWorkerUnexpectedStopped(void) { + if(!refreshWorkerNormalStopped) { + refreshWorkerUnexpectedStopped=true; + } +} + void* taosCacheTimedRefresh(void *handle) { assert(pCacheArrayList != NULL); uDebug("cache refresh thread starts"); @@ -685,6 +695,7 @@ void* taosCacheTimedRefresh(void *handle) { const int32_t SLEEP_DURATION = 500; //500 ms int64_t count = 0; + atexit(taosCacheRefreshWorkerUnexpectedStopped); while(1) { taosMsleep(SLEEP_DURATION); @@ -749,6 +760,7 @@ void* taosCacheTimedRefresh(void *handle) { pCacheArrayList = NULL; pthread_mutex_destroy(&guard); + refreshWorkerNormalStopped=true; uDebug("cache refresh thread quits"); return NULL; @@ -763,6 +775,6 @@ void taosCacheRefresh(SCacheObj *pCacheObj, __cache_free_fn_t fp) { doCacheRefresh(pCacheObj, now, fp); } -void taosStopCacheRefreshWorker() { - stopRefreshWorker = false; +void taosStopCacheRefreshWorker(void) { + stopRefreshWorker = true; } \ No newline at end of file diff --git a/src/util/src/tcompare.c b/src/util/src/tcompare.c index 47cc75131802fce5c72e7fdd3ae6675d34917a8c..4c76724921404b2a799479c86166cd462220a99c 100644 --- a/src/util/src/tcompare.c +++ b/src/util/src/tcompare.c @@ -12,11 +12,17 @@ * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . */ +#define _BSD_SOURCE +#define _GNU_SOURCE +#define _XOPEN_SOURCE +#define _DEFAULT_SOURCE -#include "os.h" -#include "ttype.h" #include "tcompare.h" +#include "tulog.h" #include "hash.h" +#include "regex.h" +#include "os.h" +#include "ttype.h" int32_t setCompareBytes1(const void *pLeft, const void *pRight) { return NULL != taosHashGet((SHashObj *)pRight, pLeft, 1) ? 1 : 0; @@ -344,6 +350,43 @@ int32_t compareStrPatternComp(const void* pLeft, const void* pRight) { return (ret == TSDB_PATTERN_MATCH) ? 0 : 1; } +int32_t compareStrRegexComp(const void* pLeft, const void* pRight) { + size_t sz = varDataLen(pRight); + char *pattern = malloc(sz + 1); + memcpy(pattern, varDataVal(pRight), varDataLen(pRight)); + pattern[sz] = 0; + + sz = varDataLen(pLeft); + char *str = malloc(sz + 1); + memcpy(str, varDataVal(pLeft), sz); + str[sz] = 0; + + int errCode = 0; + regex_t regex; + char msgbuf[256] = {0}; + + int cflags = REG_EXTENDED; + if ((errCode = regcomp(®ex, pattern, cflags)) != 0) { + regerror(errCode, ®ex, msgbuf, sizeof(msgbuf)); + uError("Failed to compile regex pattern %s. reason %s", pattern, msgbuf); + regfree(®ex); + free(str); + free(pattern); + return 1; + } + + errCode = regexec(®ex, str, 0, NULL, 0); + if (errCode != 0 && errCode != REG_NOMATCH) { + regerror(errCode, ®ex, msgbuf, sizeof(msgbuf)); + uDebug("Failed to match %s with pattern %s, reason %s", str, pattern, msgbuf) + } + int32_t result = (errCode == 0) ? 0 : 1; + regfree(®ex); + free(str); + free(pattern); + return result; +} + int32_t taosArrayCompareString(const void* a, const void* b) { const char* x = *(const char**)a; const char* y = *(const char**)b; @@ -405,7 +448,9 @@ __compar_fn_t getComparFunc(int32_t type, int32_t optr) { case TSDB_DATA_TYPE_FLOAT: comparFn = compareFloatVal; break; case TSDB_DATA_TYPE_DOUBLE: comparFn = compareDoubleVal; break; case TSDB_DATA_TYPE_BINARY: { - if (optr == TSDB_RELATION_LIKE) { /* wildcard query using like operator */ + if (optr == TSDB_RELATION_MATCH) { + comparFn = compareStrRegexComp; + } else if (optr == TSDB_RELATION_LIKE) { /* wildcard query using like operator */ comparFn = compareStrPatternComp; } else if (optr == TSDB_RELATION_IN) { comparFn = compareFindItemInSet; @@ -417,7 +462,9 @@ __compar_fn_t getComparFunc(int32_t type, int32_t optr) { } case TSDB_DATA_TYPE_NCHAR: { - if (optr == TSDB_RELATION_LIKE) { + if (optr == TSDB_RELATION_MATCH) { + comparFn = compareStrRegexComp; + } else if (optr == TSDB_RELATION_LIKE) { comparFn = compareWStrPatternComp; } else if (optr == TSDB_RELATION_IN) { comparFn = compareFindItemInSet; diff --git a/src/util/src/ttokenizer.c b/src/util/src/ttokenizer.c index 2d4e3aa743a250b618d9c9e80ffa312af1feba12..04f2d7fc04cafb5514e4f7df1e6063cad9c096da 100644 --- a/src/util/src/ttokenizer.c +++ b/src/util/src/ttokenizer.c @@ -53,6 +53,7 @@ static SKeyword keywordTable[] = { {"NOTNULL", TK_NOTNULL}, {"IS", TK_IS}, {"LIKE", TK_LIKE}, + {"MATCH", TK_MATCH}, {"GLOB", TK_GLOB}, {"BETWEEN", TK_BETWEEN}, {"IN", TK_IN}, diff --git a/tests/pytest/concurrent_inquiry.py b/tests/pytest/concurrent_inquiry.py index 7af38c3b567bdb8f3a723b25aa600a15876b41da..1bb2081d7f936ccd6df0e6c85d3d451d9c0d9e44 100644 --- a/tests/pytest/concurrent_inquiry.py +++ b/tests/pytest/concurrent_inquiry.py @@ -23,7 +23,7 @@ import string from requests.auth import HTTPBasicAuth func_list=['avg','count','twa','sum','stddev','leastsquares','min', 'max','first','last','top','bottom','percentile','apercentile', -'last_row','diff','spread'] +'last_row','diff','spread','distinct'] condition_list=[ "where _c0 > now -10d ", 'interval(10s)', @@ -33,7 +33,7 @@ condition_list=[ 'fill(null)' ] -where_list = ['_c0>now-10d',' <50','like',' is null'] +where_list = ['_c0>now-10d',' <50','like',' is null','in'] class ConcurrentInquiry: # def __init__(self,ts=1500000001000,host='127.0.0.1',user='root',password='taosdata',dbname='test', # stb_prefix='st',subtb_prefix='t',n_Therads=10,r_Therads=10,probabilities=0.05,loop=5, @@ -152,6 +152,20 @@ class ConcurrentInquiry: elif 'is null' in c: conlist = ' ' + random.choice(tlist) + random.choice([' is null',' is not null']) l.append(conlist) + elif 'in' in c: + in_list = [] + temp = [] + for i in range(random.randint(0,100)): + temp.append(random.randint(-10000,10000)) + temp = (str(i) for i in temp) + in_list.append(temp) + temp1 = [] + for i in range(random.randint(0,100)): + temp1.append("'" + ''.join(random.sample(string.ascii_letters, random.randint(0,10))) + "'") + in_list.append(temp1) + in_list.append(['NULL','NULL']) + conlist = ' ' + random.choice(tlist) + ' in (' + ','.join(random.choice(in_list)) + ')' + l.append(conlist) else: s_all = string.ascii_letters conlist = ' ' + random.choice(tlist) + " like \'%" + random.choice(s_all) + "%\' " @@ -182,7 +196,14 @@ class ConcurrentInquiry: def con_order(self,tlist,col_list,tag_list): return 'order by '+random.choice(tlist) - + + def con_state_window(self,tlist,col_list,tag_list): + return 'state_window(' + random.choice(tlist + tag_list) + ')' + + def con_session_window(self,tlist,col_list,tag_list): + session_window = 'session_window(' + random.choice(tlist + tag_list) + ',' + str(random.randint(0,20)) + random.choice(['a','s','d','w','n','y']) + ')' + return session_window + def gen_subquery_sql(self): subsql ,col_num = self.gen_query_sql(1) if col_num == 0: @@ -221,7 +242,7 @@ class ConcurrentInquiry: else: sql=sql+','.join(sel_col_list) #select col & func sql = sql + ' from ('+ subsql +') ' - con_func=[self.con_where,self.con_interval,self.con_limit,self.con_group,self.con_order,self.con_fill] + con_func=[self.con_where,self.con_interval,self.con_limit,self.con_group,self.con_order,self.con_fill,self.con_state_window,self.con_session_window] sel_con=random.sample(con_func,random.randint(0,len(con_func))) sel_con_list=[] for i in sel_con: @@ -281,7 +302,7 @@ class ConcurrentInquiry: sql = sql + ' from '+random.choice(self.subtb_list)+' ' else: sql = sql + ' from '+random.choice(self.stb_list)+' ' - con_func=[self.con_where,self.con_interval,self.con_limit,self.con_group,self.con_order,self.con_fill] + con_func=[self.con_where,self.con_interval,self.con_limit,self.con_group,self.con_order,self.con_fill,self.con_state_window,self.con_session_window] sel_con=random.sample(con_func,random.randint(0,len(con_func))) sel_con_list=[] for i in sel_con: diff --git a/tests/pytest/functions/function_interp.py b/tests/pytest/functions/function_interp.py index 87d001d9e586fdfccb28e6fe9c8a04510d6f3fb1..469e9186f668ec2c1afb03a79648c5a822cacdbe 100644 --- a/tests/pytest/functions/function_interp.py +++ b/tests/pytest/functions/function_interp.py @@ -11,45 +11,43 @@ # -*- coding: utf-8 -*- -import sys -import taos from util.log import * from util.cases import * from util.sql import * -import numpy as np - - class TDTestCase: def init(self, conn, logSql): tdLog.debug("start to execute %s" % __file__) tdSql.init(conn.cursor()) - self.rowNum = 10 - self.ts = 1537146000000 - def run(self): tdSql.prepare() tdSql.execute("create table ap1 (ts timestamp, pav float)") - tdSql.execute("insert into ap1 values ('2021-07-25 02:19:54.119', 2.90799)") - tdSql.execute("insert into ap1 values ('2021-07-25 02:19:54.317', 3.07399)") - tdSql.execute("insert into ap1 values ('2021-07-25 02:19:54.517', 0.58117)") - tdSql.execute("insert into ap1 values ('2021-07-25 02:19:54.717', 0.16150)") - tdSql.execute("insert into ap1 values ('2021-07-25 02:19:54.918', 1.47885)") - tdSql.execute("insert into ap1 values ('2021-07-25 02:19:56.569', 1.76472)") - tdSql.execute("insert into ap1 values ('2021-07-25 02:19:57.381', 2.13722)") - tdSql.execute("insert into ap1 values ('2021-07-25 02:19:57.574', 4.10256)") - tdSql.execute("insert into ap1 values ('2021-07-25 02:19:57.776', 3.55345)") - tdSql.execute("insert into ap1 values ('2021-07-25 02:19:57.976', 1.46624)") - tdSql.execute("insert into ap1 values ('2021-07-25 02:19:58.187', 0.17943)") - tdSql.execute("insert into ap1 values ('2021-07-25 02:19:58.372', 2.04101)") - tdSql.execute("insert into ap1 values ('2021-07-25 02:19:58.573', 3.20924)") - tdSql.execute("insert into ap1 values ('2021-07-25 02:19:58.768', 1.71807)") - tdSql.execute("insert into ap1 values ('2021-07-25 02:19:58.964', 4.60900)") - tdSql.execute("insert into ap1 values ('2021-07-25 02:19:59.155', 4.33907)") - tdSql.execute("insert into ap1 values ('2021-07-25 02:19:59.359', 0.76940)") - tdSql.execute("insert into ap1 values ('2021-07-25 02:19:59.553', 0.06458)") - tdSql.execute("insert into ap1 values ('2021-07-25 02:19:59.742', 4.59857)") - tdSql.execute("insert into ap1 values ('2021-07-25 02:19:59.938', 1.55081)") + tdSql.execute("create table ap2 (ts timestamp, pav float) tags (t1 float)") + tdSql.execute("create table ap2_sub1 using ap2 tags (2.90799)") + tdSql.execute("create table ap2_sub2 using ap2 tags (2.90799)") + tdSql.execute("create table ap3 (ts timestamp, pav float) tags (t1 float)") + tdSql.execute("create table ap3_sub1 using ap3 tags (2.90799)") + for tb_name in ["ap1", "ap2_sub1", "ap3_sub1"]: + tdSql.execute(f"insert into {tb_name} values ('2021-07-25 02:19:54.119', 2.90799)") + tdSql.execute(f"insert into {tb_name} values ('2021-07-25 02:19:54.317', 3.07399)") + tdSql.execute(f"insert into {tb_name} values ('2021-07-25 02:19:54.517', 0.58117)") + tdSql.execute(f"insert into {tb_name} values ('2021-07-25 02:19:54.717', 0.16150)") + tdSql.execute(f"insert into {tb_name} values ('2021-07-25 02:19:54.918', 1.47885)") + tdSql.execute(f"insert into {tb_name} values ('2021-07-25 02:19:56.569', 1.76472)") + tdSql.execute(f"insert into {tb_name} values ('2021-07-25 02:19:57.381', 2.13722)") + tdSql.execute(f"insert into {tb_name} values ('2021-07-25 02:19:57.574', 4.10256)") + tdSql.execute(f"insert into {tb_name} values ('2021-07-25 02:19:57.776', 3.55345)") + tdSql.execute(f"insert into {tb_name} values ('2021-07-25 02:19:57.976', 1.46624)") + tdSql.execute(f"insert into {tb_name} values ('2021-07-25 02:19:58.187', 0.17943)") + tdSql.execute(f"insert into {tb_name} values ('2021-07-25 02:19:58.372', 2.04101)") + tdSql.execute(f"insert into {tb_name} values ('2021-07-25 02:19:58.573', 3.20924)") + tdSql.execute(f"insert into {tb_name} values ('2021-07-25 02:19:58.768', 1.71807)") + tdSql.execute(f"insert into {tb_name} values ('2021-07-25 02:19:58.964', 4.60900)") + tdSql.execute(f"insert into {tb_name} values ('2021-07-25 02:19:59.155', 4.33907)") + tdSql.execute(f"insert into {tb_name} values ('2021-07-25 02:19:59.359', 0.76940)") + tdSql.execute(f"insert into {tb_name} values ('2021-07-25 02:19:59.553', 0.06458)") + tdSql.execute(f"insert into {tb_name} values ('2021-07-25 02:19:59.742', 4.59857)") + tdSql.execute(f"insert into {tb_name} values ('2021-07-25 02:19:59.938', 1.55081)") tdSql.query("select interp(pav) from ap1 where ts = '2021-07-25 02:19:54' FILL (PREV)") tdSql.checkRows(0) @@ -57,6 +55,29 @@ class TDTestCase: tdSql.checkRows(0) tdSql.query("select interp(pav) from ap1 where ts = '2021-07-25 02:19:54' FILL (LINEAR)") tdSql.checkRows(0) + # check None + tdSql.query("select interp(pav) from ap1 where ts> '2021-07-25 02:19:54' and ts<'2021-07-25 02:20:00' every(1000a) FILL (None)") + tdSql.checkRows(0) + # check NULL + tdSql.query("select interp(pav) from ap1 where ts> '2021-07-25 02:19:54' and ts<'2021-07-25 02:20:00' every(1000a) FILL (NULL)") + tdSql.checkRows(6) + for i in range(5): + tdSql.checkData(i,1,None) + # checkout VALUE + tdSql.query("select interp(pav) from ap1 where ts> '2021-07-25 02:19:54' and ts<'2021-07-25 02:20:00' every(1000a) FILL (VALUE, 1)") + tdSql.checkRows(6) + for i in range(5): + tdSql.checkData(i,1,1.00000) + # check tag group by + tdSql.query("select interp(pav) from ap2 where ts>= '2021-07-25 02:19:54' and ts<'2021-07-25 02:20:00' every(1000a) FILL (VALUE,1) group by t1;") + for i in range(5): + tdSql.checkData(i,1,1.00000) + tdSql.checkData(i,2,2.90799) + # check multi ts lines + tdSql.query("select z1.ts,z1.val1,z2.val2 from (select interp(pav) val1 from ap2 where ts> '2021-07-25 02:19:54' and ts<'2021-07-25 02:20:00' every(1000a) FILL (value,1)) z1,(select interp(pav) val2 from ap3 where ts> '2021-07-25 02:19:54' and ts<'2021-07-25 02:20:00' every(1000a) FILL (value,2)) z2 where z1.ts=z2.ts ;") + for i in range(5): + tdSql.checkData(i,1,1.00000) + tdSql.checkData(i,2,2.00000) tdSql.query("select interp(pav) from ap1 where ts> '2021-07-25 02:19:54' and ts<'2021-07-25 02:20:00' every(1000a) FILL (LINEAR)") tdSql.checkRows(6) tdSql.query("select interp(pav) from ap1 where ts>= '2021-07-25 02:19:54' and ts<'2021-07-25 02:20:00' every(1000a) FILL (NEXT)") diff --git a/tests/script/fullGeneralSuite.sim b/tests/script/fullGeneralSuite.sim index 9f46b078475806292239e49fcbec80f5957e4eb4..188ce1405541cbbb230ceb186c44cfd4230925fc 100644 --- a/tests/script/fullGeneralSuite.sim +++ b/tests/script/fullGeneralSuite.sim @@ -222,3 +222,4 @@ run general/stream/metrics_replica1_vnoden.sim run general/db/show_create_db.sim run general/db/show_create_table.sim run general/parser/like.sim +run general/parser/regex.sim diff --git a/tests/script/general/parser/regex.sim b/tests/script/general/parser/regex.sim new file mode 100644 index 0000000000000000000000000000000000000000..5351d914f34004b5bf198fb9e10792306f8ac32b --- /dev/null +++ b/tests/script/general/parser/regex.sim @@ -0,0 +1,62 @@ +system sh/stop_dnodes.sh +system sh/deploy.sh -n dnode1 -i 1 +system sh/cfg.sh -n dnode1 -c walLevel -v 1 +system sh/cfg.sh -n dnode1 -c maxtablesPerVnode -v 4 +system sh/exec.sh -n dnode1 -s start + +sleep 100 +sql connect + +$db = testdb +sql drop database if exists $db +sql create database $db +sql use $db + +print ======================== regular expression match test +$st_name = st +$ct1_name = ct1 +$ct2_name = ct2 + +sql create table $st_name (ts timestamp, c1b binary(20)) tags(t1b binary(20)); +sql create table $ct1_name using $st_name tags('taosdata1') +sql create table $ct2_name using $st_name tags('taosdata2') +sql create table not_match using $st_name tags('NOTMATCH') + +sql select tbname from $st_name where tbname match '.*' +if $rows != 3 then + return -1 +endi + + +sql select tbname from $st_name where tbname match '^ct[[:digit:]]' + +if $rows != 2 then + return -1 +endi + +sql select tbname from $st_name where tbname match '.*' +if $rows !=3 then + return -1 +endi + +sql select tbname from $st_name where t1b match '[[:lower:]]+' +if $rows != 2 then + return -1 +endi + +sql insert into $ct1_name values(now, 'this is engine') +sql insert into $ct2_name values(now, 'this is app egnine') + +sql select c1b from $st_name where c1b match 'engine' +if $data00 != @this is engine@ then + return -1 +endi + +if $rows != 1 then + return -1 +endi + + +system sh/exec.sh -n dnode1 -s stop -x SIGINT + +