未验证 提交 e3f4c903 编写于 作者: W wu champion 提交者: GitHub

Merge branch 'develop' into feature/TD-1380

......@@ -17,6 +17,7 @@ SET(TD_MQTT FALSE)
SET(TD_TSDB_PLUGINS FALSE)
SET(TD_STORAGE FALSE)
SET(TD_TOPIC FALSE)
SET(TD_MODULE FALSE)
SET(TD_COVER FALSE)
SET(TD_MEM_CHECK FALSE)
......
......@@ -6,6 +6,7 @@ node {
}
def skipstage=0
def abortPreviousBuilds() {
def currentJobName = env.JOB_NAME
def currentBuildNumber = env.BUILD_NUMBER.toInteger()
......@@ -24,7 +25,7 @@ def abortPreviousBuilds() {
build.doKill() //doTerm(),doKill(),doTerm()
}
}
//abort previous build
// abort previous build
abortPreviousBuilds()
def abort_previous(){
def buildNumber = env.BUILD_NUMBER as int
......@@ -32,7 +33,8 @@ def abort_previous(){
milestone(buildNumber)
}
def pre_test(){
sh '''
sudo rmtaos || echo "taosd has not installed"
'''
......@@ -79,6 +81,10 @@ pipeline {
changeRequest()
}
steps {
script{
abort_previous()
abortPreviousBuilds()
}
sh'''
cp -r ${WORKSPACE} ${WORKSPACE}.tes
cd ${WORKSPACE}.tes
......
......@@ -258,10 +258,16 @@ TDengine 社区生态中也有一些非常友好的第三方连接器,可以
TDengine 的测试框架和所有测试例全部开源。
点击[这里](tests/How-To-Run-Test-And-How-To-Add-New-Test-Case.md),了解如何运行测试例和添加新的测试例。
点击 [这里](tests/How-To-Run-Test-And-How-To-Add-New-Test-Case.md),了解如何运行测试例和添加新的测试例。
# 成为社区贡献者
点击[这里](https://www.taosdata.com/cn/contributor/),了解如何成为 TDengine 的贡献者。
#加入技术交流群
TDengine官方社群「物联网大数据群」对外开放,欢迎您加入讨论。搜索微信号 "tdengine",加小T为好友,即可入群。
点击 [这里](https://www.taosdata.com/cn/contributor/),了解如何成为 TDengine 的贡献者。
# 加入技术交流群
TDengine 官方社群「物联网大数据群」对外开放,欢迎您加入讨论。搜索微信号 "tdengine",加小T为好友,即可入群。
# [谁在使用TDengine](https://github.com/taosdata/TDengine/issues/2432)
欢迎所有 TDengine 用户及贡献者在 [这里](https://github.com/taosdata/TDengine/issues/2432) 分享您在当前工作中开发/使用 TDengine 的故事。
......@@ -250,3 +250,6 @@ Please follow the [contribution guidelines](CONTRIBUTING.md) to contribute to th
Add WeChat “tdengine” to join the group,you can communicate with other users.
# [User List](https://github.com/taosdata/TDengine/issues/2432)
If you are using TDengine and feel it helps or you'd like to do some contributions, please add your company to [user list](https://github.com/taosdata/TDengine/issues/2432) and let us know your needs.
......@@ -29,6 +29,10 @@ IF (TD_TOPIC)
ADD_DEFINITIONS(-D_TOPIC)
ENDIF ()
IF (TD_MODULE)
ADD_DEFINITIONS(-D_MODULE)
ENDIF ()
IF (TD_GODLL)
ADD_DEFINITIONS(-D_TD_GO_DLL_)
ENDIF ()
......
......@@ -17,6 +17,14 @@ ELSEIF (${TOPIC} MATCHES "false")
MESSAGE(STATUS "Build without topic plugins")
ENDIF ()
IF (${TD_MODULE} MATCHES "true")
SET(TD_MODULE TRUE)
MESSAGE(STATUS "Build with module plugins")
ELSEIF (${TOPIC} MATCHES "false")
SET(TD_MODULE FALSE)
MESSAGE(STATUS "Build without module plugins")
ENDIF ()
IF (${COVER} MATCHES "true")
SET(TD_COVER TRUE)
MESSAGE(STATUS "Build with test coverage")
......
......@@ -6,19 +6,27 @@
### 内存需求
每个 DB 可以创建固定数目的 vgroup,默认与 CPU 核数相同,可通过 maxVgroupsPerDb 配置;vgroup 中的每个副本会是一个 vnode;每个 vnode 会占用固定大小的内存(大小与数据库的配置参数 blocks 和 cache 有关);每个 Table 会占用与标签总长度有关的内存;此外,系统会有一些固定的内存开销。因此,每个 DB 需要的系统内存可通过如下公式计算:
每个 Database 可以创建固定数目的 vgroup,默认与 CPU 核数相同,可通过 maxVgroupsPerDb 配置;vgroup 中的每个副本会是一个 vnode;每个 vnode 会占用固定大小的内存(大小与数据库的配置参数 blocks 和 cache 有关);每个 Table 会占用与标签总长度有关的内存;此外,系统会有一些固定的内存开销。因此,每个 DB 需要的系统内存可通过如下公式计算:
```
Memory Size = maxVgroupsPerDb * (blocks * cache + 10MB) + numOfTables * (tagSizePerTable + 0.5KB)
Database Memory Size = maxVgroupsPerDb * (blocks * cache + 10MB) + numOfTables * (tagSizePerTable + 0.5KB)
```
示例:假设是 4 核机器,cache 是缺省大小 16M, blocks 是缺省值 6,假设有 10 万张表,标签总长度是 256 字节,则总的内存需求为:4 \* (16 \* 6 + 10) + 100000 \* (0.25 + 0.5) / 1000 = 499M。
示例:假设是 4 核机器,cache 是缺省大小 16M, blocks 是缺省值 6,并且一个 DB 中有 10 万张表,标签总长度是 256 字节,则这个 DB 总的内存需求为:4 \* (16 \* 6 + 10) + 100000 \* (0.25 + 0.5) / 1000 = 499M。
注意:从这个公式计算得到的内存容量,应理解为系统的“必要需求”,而不是“内存总数”。在实际运行的生产系统中,由于操作系统缓存、资源管理调度等方面的需要,内存规划应当在计算结果的基础上保留一定冗余,以维持系统状态和系统性能的稳定性。
在实际的系统运维中,我们通常会更关心 TDengine 服务进程(taosd)会占用的内存量。
```
taosd 内存总量 = vnode 内存 + mnode 内存 + 查询内存
```
其中:
1. “vnode 内存”指的是集群中所有的 Database 存储分摊到当前 taosd 节点上所占用的内存资源。可以按上文“Database Memory Size”计算公式估算每个 DB 的内存占用量进行加总,再按集群中总共的 TDengine 节点数做平均(如果设置为多副本,则还需要乘以对应的副本倍数)。
2. “mnode 内存”指的是集群中管理节点所占用的资源。如果一个 taosd 节点上分布有 mnode 管理节点,则内存消耗还需要增加“0.2KB * 集群中数据表总数”。
3. “查询内存”指的是服务端处理查询请求时所需要占用的内存。单条查询语句至少会占用“0.2KB * 查询涉及的数据表总数”的内存量。
实际运行的系统往往会根据数据特点的不同,将数据存放在不同的 DB 里。因此做规划时,也需要考虑
注意:以上内存估算方法,主要讲解了系统的“必须内存需求”,而不是“内存总数上限”。在实际运行的生产环境中,由于操作系统缓存、资源管理调度等方面的原因,内存规划应当在估算结果的基础上保留一定冗余,以维持系统状态和系统性能的稳定性。并且,生产环境通常会配置系统资源的监控工具,以便及时发现硬件资源的紧缺情况
如果内存充裕,可以加大 Blocks 的配置,这样更多数据将保存在内存里,提高查询速度。
最后,如果内存充裕,可以考虑加大 Blocks 的配置,这样更多数据将保存在内存里,提高查询速度。
### CPU 需求
......
......@@ -367,7 +367,7 @@ typedef struct SSqlObj {
int64_t svgroupRid;
int64_t squeryLock;
int32_t retryReason; // previous error code
struct SSqlObj *prev, *next;
int64_t self;
} SSqlObj;
......
......@@ -310,9 +310,50 @@ void tscAsyncResultOnError(SSqlObj* pSql) {
taosScheduleTask(tscQhandle, &schedMsg);
}
int tscSendMsgToServer(SSqlObj *pSql);
static int32_t updateMetaBeforeRetryQuery(SSqlObj* pSql, STableMetaInfo* pTableMetaInfo, SQueryInfo* pQueryInfo) {
// handle the invalid table error code for super table.
// update the pExpr info, colList info, number of table columns
// TODO Re-parse this sql and issue the corresponding subquery as an alternative for this case.
if (pSql->retryReason == TSDB_CODE_TDB_INVALID_TABLE_ID) {
int32_t numOfExprs = (int32_t) tscSqlExprNumOfExprs(pQueryInfo);
int32_t numOfCols = tscGetNumOfColumns(pTableMetaInfo->pTableMeta);
int32_t numOfTags = tscGetNumOfTags(pTableMetaInfo->pTableMeta);
SSchema *pSchema = tscGetTableSchema(pTableMetaInfo->pTableMeta);
for (int32_t i = 0; i < numOfExprs; ++i) {
SSqlExpr *pExpr = tscSqlExprGet(pQueryInfo, i);
pExpr->uid = pTableMetaInfo->pTableMeta->id.uid;
if (pExpr->colInfo.colIndex >= 0) {
int32_t index = pExpr->colInfo.colIndex;
if ((TSDB_COL_IS_NORMAL_COL(pExpr->colInfo.flag) && index >= numOfCols) ||
(TSDB_COL_IS_TAG(pExpr->colInfo.flag) && (index < numOfCols || index >= (numOfCols + numOfTags)))) {
return pSql->retryReason;
}
int tscSendMsgToServer(SSqlObj *pSql);
if ((pSchema[pExpr->colInfo.colIndex].colId != pExpr->colInfo.colId) &&
strcasecmp(pExpr->colInfo.name, pSchema[pExpr->colInfo.colIndex].name) != 0) {
return pSql->retryReason;
}
}
}
// validate the table columns information
for (int32_t i = 0; i < taosArrayGetSize(pQueryInfo->colList); ++i) {
SColumn *pCol = taosArrayGetP(pQueryInfo->colList, i);
if (pCol->colIndex.columnIndex >= numOfCols) {
return pSql->retryReason;
}
}
} else {
// do nothing
}
return TSDB_CODE_SUCCESS;
}
void tscTableMetaCallBack(void *param, TAOS_RES *res, int code) {
SSqlObj* pSql = (SSqlObj*)taosAcquireRef(tscObjRef, (int64_t)param);
......@@ -339,7 +380,8 @@ void tscTableMetaCallBack(void *param, TAOS_RES *res, int code) {
if (TSDB_QUERY_HAS_TYPE(pQueryInfo->type, (TSDB_QUERY_TYPE_STABLE_SUBQUERY|TSDB_QUERY_TYPE_SUBQUERY|TSDB_QUERY_TYPE_TAG_FILTER_QUERY))) {
tscDebug("%p update local table meta, continue to process sql and send the corresponding query", pSql);
STableMetaInfo* pTableMetaInfo = tscGetMetaInfo(pQueryInfo, 0);
STableMetaInfo *pTableMetaInfo = tscGetMetaInfo(pQueryInfo, 0);
code = tscGetTableMeta(pSql, pTableMetaInfo);
assert(code == TSDB_CODE_TSC_ACTION_IN_PROGRESS || code == TSDB_CODE_SUCCESS);
......@@ -349,6 +391,10 @@ void tscTableMetaCallBack(void *param, TAOS_RES *res, int code) {
}
assert((tscGetNumOfTags(pTableMetaInfo->pTableMeta) != 0));
code = updateMetaBeforeRetryQuery(pSql, pTableMetaInfo, pQueryInfo);
if (code != TSDB_CODE_SUCCESS) {
goto _error;
}
// tscProcessSql can add error into async res
tscProcessSql(pSql);
......
......@@ -670,7 +670,18 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) {
if ((code = setKillInfo(pSql, pInfo, pInfo->type)) != TSDB_CODE_SUCCESS) {
return code;
}
break;
}
case TSDB_SQL_SYNC_DB_REPLICA: {
const char* msg1 = "invalid db name";
SStrToken* pzName = taosArrayGet(pInfo->pMiscInfo->a, 0);
assert(taosArrayGetSize(pInfo->pMiscInfo->a) == 1);
code = tNameSetDbName(&pTableMetaInfo->name, getAccountId(pSql), pzName);
if (code != TSDB_CODE_SUCCESS) {
return invalidSqlErrMsg(tscGetErrorMsgPayload(pCmd), msg1);
}
break;
}
......
......@@ -350,8 +350,8 @@ void tscProcessMsgFromServer(SRpcMsg *rpcMsg, SRpcEpSet *pEpSet) {
taosMsleep(duration);
}
pSql->retryReason = rpcMsg->code;
rpcMsg->code = tscRenewTableMeta(pSql, 0);
// if there is an error occurring, proceed to the following error handling procedure.
if (rpcMsg->code == TSDB_CODE_TSC_ACTION_IN_PROGRESS) {
taosReleaseRef(tscObjRef, handle);
......@@ -1284,6 +1284,23 @@ int32_t tscBuildUseDbMsg(SSqlObj *pSql, SSqlInfo *pInfo) {
return TSDB_CODE_SUCCESS;
}
int32_t tscBuildSyncDbReplicaMsg(SSqlObj* pSql, SSqlInfo *pInfo) {
SSqlCmd *pCmd = &pSql->cmd;
pCmd->payloadLen = sizeof(SSyncDbMsg);
if (TSDB_CODE_SUCCESS != tscAllocPayload(pCmd, pCmd->payloadLen)) {
tscError("%p failed to malloc for query msg", pSql);
return TSDB_CODE_TSC_OUT_OF_MEMORY;
}
SSyncDbMsg *pSyncMsg = (SSyncDbMsg *)pCmd->payload;
STableMetaInfo *pTableMetaInfo = tscGetTableMetaInfoFromCmd(pCmd, pCmd->clauseIndex, 0);
tNameExtractFullName(&pTableMetaInfo->name, pSyncMsg->db);
pCmd->msgType = TSDB_MSG_TYPE_CM_SYNC_DB;
return TSDB_CODE_SUCCESS;
}
int32_t tscBuildShowMsg(SSqlObj *pSql, SSqlInfo *pInfo) {
STscObj *pObj = pSql->pTscObj;
SSqlCmd *pCmd = &pSql->cmd;
......@@ -2559,6 +2576,7 @@ void tscInitMsgsFp() {
tscBuildMsg[TSDB_SQL_DROP_USER] = tscBuildDropUserAcctMsg;
tscBuildMsg[TSDB_SQL_DROP_ACCT] = tscBuildDropUserAcctMsg;
tscBuildMsg[TSDB_SQL_DROP_DB] = tscBuildDropDbMsg;
tscBuildMsg[TSDB_SQL_SYNC_DB_REPLICA] = tscBuildSyncDbReplicaMsg;
tscBuildMsg[TSDB_SQL_DROP_TABLE] = tscBuildDropTableMsg;
tscBuildMsg[TSDB_SQL_ALTER_USER] = tscBuildUserMsg;
tscBuildMsg[TSDB_SQL_CREATE_DNODE] = tscBuildCreateDnodeMsg;
......
......@@ -51,6 +51,7 @@ enum {
TSDB_DEFINE_SQL_TYPE( TSDB_SQL_ALTER_ACCT, "alter-acct" )
TSDB_DEFINE_SQL_TYPE( TSDB_SQL_ALTER_TABLE, "alter-table" )
TSDB_DEFINE_SQL_TYPE( TSDB_SQL_ALTER_DB, "alter-db" )
TSDB_DEFINE_SQL_TYPE(TSDB_SQL_SYNC_DB_REPLICA, "sync db-replica")
TSDB_DEFINE_SQL_TYPE( TSDB_SQL_CREATE_MNODE, "create-mnode" )
TSDB_DEFINE_SQL_TYPE( TSDB_SQL_DROP_MNODE, "drop-mnode" )
TSDB_DEFINE_SQL_TYPE( TSDB_SQL_CREATE_DNODE, "create-dnode" )
......@@ -87,13 +88,13 @@ enum {
*/
TSDB_DEFINE_SQL_TYPE( TSDB_SQL_RETRIEVE_EMPTY_RESULT, "retrieve-empty-result" )
TSDB_DEFINE_SQL_TYPE( TSDB_SQL_RESET_CACHE, "reset-cache" )
TSDB_DEFINE_SQL_TYPE( TSDB_SQL_SERV_STATUS, "serv-status" )
TSDB_DEFINE_SQL_TYPE( TSDB_SQL_CURRENT_DB, "current-db" )
TSDB_DEFINE_SQL_TYPE( TSDB_SQL_RESET_CACHE, "reset-cache" )
TSDB_DEFINE_SQL_TYPE( TSDB_SQL_SERV_STATUS, "serv-status" )
TSDB_DEFINE_SQL_TYPE( TSDB_SQL_CURRENT_DB, "current-db" )
TSDB_DEFINE_SQL_TYPE( TSDB_SQL_SERV_VERSION, "serv-version" )
TSDB_DEFINE_SQL_TYPE( TSDB_SQL_CLI_VERSION, "cli-version" )
TSDB_DEFINE_SQL_TYPE( TSDB_SQL_CLI_VERSION, "cli-version" )
TSDB_DEFINE_SQL_TYPE( TSDB_SQL_CURRENT_USER, "current-user ")
TSDB_DEFINE_SQL_TYPE( TSDB_SQL_CFG_LOCAL, "cfg-local" )
TSDB_DEFINE_SQL_TYPE( TSDB_SQL_CFG_LOCAL, "cfg-local" )
TSDB_DEFINE_SQL_TYPE( TSDB_SQL_MAX, "max" )
};
......
......@@ -35,6 +35,10 @@ IF (TD_TOPIC)
TARGET_LINK_LIBRARIES(taosd topic)
ENDIF ()
IF (TD_MODULE AND TD_LINUX)
TARGET_LINK_LIBRARIES(taosd module dl)
ENDIF ()
SET(PREPARE_ENV_CMD "prepare_env_cmd")
SET(PREPARE_ENV_TARGET "prepare_env_target")
ADD_CUSTOM_COMMAND(OUTPUT ${PREPARE_ENV_CMD}
......
......@@ -39,6 +39,13 @@
#include "dnodeMPeer.h"
#include "dnodeShell.h"
#include "dnodeTelemetry.h"
#include "module.h"
#if !defined(_MODULE) || !defined(_TD_LINUX)
int32_t moduleStart() { return 0; }
void moduleStop() {}
#endif
void *tsDnodeTmr = NULL;
static SRunStatus tsRunStatus = TSDB_RUN_STATUS_STOPPED;
......@@ -146,6 +153,7 @@ int32_t dnodeInitSystem() {
}
dnodeSetRunStatus(TSDB_RUN_STATUS_RUNING);
moduleStart();
dnodeReportStep("TDengine", "initialized successfully", 1);
dInfo("TDengine is initialized successfully");
......@@ -155,6 +163,7 @@ int32_t dnodeInitSystem() {
void dnodeCleanUpSystem() {
if (dnodeGetRunStatus() != TSDB_RUN_STATUS_STOPPED) {
moduleStop();
dnodeSetRunStatus(TSDB_RUN_STATUS_STOPPED);
dnodeCleanupTmr();
dnodeCleanupComponents();
......
......@@ -49,6 +49,7 @@ int32_t dnodeInitShell() {
dnodeProcessShellMsgFp[TSDB_MSG_TYPE_CM_CREATE_DB] = dnodeDispatchToMWriteQueue;
dnodeProcessShellMsgFp[TSDB_MSG_TYPE_CM_CREATE_TP] = dnodeDispatchToMWriteQueue;
dnodeProcessShellMsgFp[TSDB_MSG_TYPE_CM_DROP_DB] = dnodeDispatchToMWriteQueue;
dnodeProcessShellMsgFp[TSDB_MSG_TYPE_CM_SYNC_DB] = dnodeDispatchToMWriteQueue;
dnodeProcessShellMsgFp[TSDB_MSG_TYPE_CM_DROP_TP] = dnodeDispatchToMWriteQueue;
dnodeProcessShellMsgFp[TSDB_MSG_TYPE_CM_ALTER_DB] = dnodeDispatchToMWriteQueue;
dnodeProcessShellMsgFp[TSDB_MSG_TYPE_CM_ALTER_TP] = dnodeDispatchToMWriteQueue;
......
/*
* Copyright (c) 2019 TAOS Data, Inc. <jhtao@taosdata.com>
*
* This program is free software: you can use, redistribute, and/or modify
* it under the terms of the GNU Affero General Public License, version 3
* or later ("AGPL"), as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef TDENGINE_MODULE
#define TDENGINE_MODULE
#ifdef __cplusplus
extern "C" {
#endif
int32_t moduleStart();
void moduleStop();
#ifdef __cplusplus
}
#endif
#endif
......@@ -77,6 +77,7 @@ TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_CM_CREATE_DB, "create-db" )
TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_CM_DROP_DB, "drop-db" )
TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_CM_USE_DB, "use-db" )
TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_CM_ALTER_DB, "alter-db" )
TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_CM_SYNC_DB, "sync-db-replica" )
TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_CM_CREATE_TABLE, "create-table" )
TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_CM_DROP_TABLE, "drop-table" )
TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_CM_ALTER_TABLE, "alter-table" )
......@@ -574,7 +575,7 @@ typedef struct {
typedef struct {
char db[TSDB_TABLE_FNAME_LEN];
uint8_t ignoreNotExists;
} SDropDbMsg, SUseDbMsg;
} SDropDbMsg, SUseDbMsg, SSyncDbMsg;
// IMPORTANT: sizeof(SVnodeStatisticInfo) should not exceed
// TSDB_FILE_HEADER_LEN/4 - TSDB_FILE_HEADER_VERSION_SIZE
......
......@@ -152,56 +152,57 @@
#define TK_NOW 133
#define TK_RESET 134
#define TK_QUERY 135
#define TK_ADD 136
#define TK_COLUMN 137
#define TK_TAG 138
#define TK_CHANGE 139
#define TK_SET 140
#define TK_KILL 141
#define TK_CONNECTION 142
#define TK_STREAM 143
#define TK_COLON 144
#define TK_ABORT 145
#define TK_AFTER 146
#define TK_ATTACH 147
#define TK_BEFORE 148
#define TK_BEGIN 149
#define TK_CASCADE 150
#define TK_CLUSTER 151
#define TK_CONFLICT 152
#define TK_COPY 153
#define TK_DEFERRED 154
#define TK_DELIMITERS 155
#define TK_DETACH 156
#define TK_EACH 157
#define TK_END 158
#define TK_EXPLAIN 159
#define TK_FAIL 160
#define TK_FOR 161
#define TK_IGNORE 162
#define TK_IMMEDIATE 163
#define TK_INITIALLY 164
#define TK_INSTEAD 165
#define TK_MATCH 166
#define TK_KEY 167
#define TK_OF 168
#define TK_RAISE 169
#define TK_REPLACE 170
#define TK_RESTRICT 171
#define TK_ROW 172
#define TK_STATEMENT 173
#define TK_TRIGGER 174
#define TK_VIEW 175
#define TK_SEMI 176
#define TK_NONE 177
#define TK_PREV 178
#define TK_LINEAR 179
#define TK_IMPORT 180
#define TK_TBNAME 181
#define TK_JOIN 182
#define TK_INSERT 183
#define TK_INTO 184
#define TK_VALUES 185
#define TK_SYNCDB 136
#define TK_ADD 137
#define TK_COLUMN 138
#define TK_TAG 139
#define TK_CHANGE 140
#define TK_SET 141
#define TK_KILL 142
#define TK_CONNECTION 143
#define TK_STREAM 144
#define TK_COLON 145
#define TK_ABORT 146
#define TK_AFTER 147
#define TK_ATTACH 148
#define TK_BEFORE 149
#define TK_BEGIN 150
#define TK_CASCADE 151
#define TK_CLUSTER 152
#define TK_CONFLICT 153
#define TK_COPY 154
#define TK_DEFERRED 155
#define TK_DELIMITERS 156
#define TK_DETACH 157
#define TK_EACH 158
#define TK_END 159
#define TK_EXPLAIN 160
#define TK_FAIL 161
#define TK_FOR 162
#define TK_IGNORE 163
#define TK_IMMEDIATE 164
#define TK_INITIALLY 165
#define TK_INSTEAD 166
#define TK_MATCH 167
#define TK_KEY 168
#define TK_OF 169
#define TK_RAISE 170
#define TK_REPLACE 171
#define TK_RESTRICT 172
#define TK_ROW 173
#define TK_STATEMENT 174
#define TK_TRIGGER 175
#define TK_VIEW 176
#define TK_SEMI 177
#define TK_NONE 178
#define TK_PREV 179
#define TK_LINEAR 180
#define TK_IMPORT 181
#define TK_TBNAME 182
#define TK_JOIN 183
#define TK_INSERT 184
#define TK_INTO 185
#define TK_VALUES 186
#define TK_SPACE 300
......
......@@ -41,7 +41,7 @@
"insert_mode": "taosc",
"insert_rows": 1000,
"multi_thread_write_one_tbl": "no",
"rows_per_tbl": 20,
"interlace_rows": 20,
"max_sql_len": 1024000,
"disorder_ratio": 0,
"disorder_range": 1000,
......
......@@ -41,7 +41,7 @@
"insert_mode": "taosc",
"insert_rows": 100000,
"multi_thread_write_one_tbl": "no",
"rows_per_tbl": 0,
"interlace_rows": 0,
"max_sql_len": 1024000,
"disorder_ratio": 0,
"disorder_range": 1000,
......
......@@ -187,6 +187,7 @@ typedef struct SArguments_S {
char * tb_prefix;
char * sqlFile;
bool use_metric;
bool drop_database;
bool insert_only;
bool answer_yes;
bool debug_print;
......@@ -199,7 +200,8 @@ typedef struct SArguments_S {
int num_of_CPR;
int num_of_threads;
int insert_interval;
int rows_per_tbl;
int query_times;
int interlace_rows;
int num_of_RPR;
int max_sql_len;
int num_of_tables;
......@@ -314,7 +316,7 @@ typedef struct SDbCfg_S {
typedef struct SDataBase_S {
char dbName[MAX_DB_NAME_SIZE];
int drop; // 0: use exists, 1: if exists, drop then new create
bool drop; // 0: use exists, 1: if exists, drop then new create
SDbCfg dbCfg;
int superTblCount;
SSuperTable superTbls[MAX_SUPER_TABLE_COUNT];
......@@ -351,7 +353,7 @@ typedef struct SuperQueryInfo_S {
int subscribeInterval; // ms
int subscribeRestart;
int subscribeKeepProgress;
char sql[MAX_QUERY_SQL_COUNT][MAX_QUERY_SQL_LENGTH+1];
char sql[MAX_QUERY_SQL_COUNT][MAX_QUERY_SQL_LENGTH+1];
char result[MAX_QUERY_SQL_COUNT][MAX_FILE_NAME_LEN+1];
TAOS_SUB* tsub[MAX_QUERY_SQL_COUNT];
} SuperQueryInfo;
......@@ -359,7 +361,7 @@ typedef struct SuperQueryInfo_S {
typedef struct SubQueryInfo_S {
char sTblName[MAX_TB_NAME_SIZE+1];
int rate; // 0: unlimit > 0 loop/s
int threadCnt;
int threadCnt;
int subscribeMode; // 0: sync, 1: async
int subscribeInterval; // ms
int subscribeRestart;
......@@ -367,7 +369,7 @@ typedef struct SubQueryInfo_S {
int childTblCount;
char childTblPrefix[MAX_TB_NAME_SIZE];
int sqlCount;
char sql[MAX_QUERY_SQL_COUNT][MAX_QUERY_SQL_LENGTH+1];
char sql[MAX_QUERY_SQL_COUNT][MAX_QUERY_SQL_LENGTH+1];
char result[MAX_QUERY_SQL_COUNT][MAX_FILE_NAME_LEN+1];
TAOS_SUB* tsub[MAX_QUERY_SQL_COUNT];
......@@ -397,14 +399,14 @@ typedef struct SThreadInfo_S {
int end_table_to;
int ntables;
int data_of_rate;
uint64_t start_time;
char* cols;
bool use_metric;
uint64_t start_time;
char* cols;
bool use_metric;
SSuperTable* superTblInfo;
// for async insert
tsem_t lock_sem;
int64_t counter;
int64_t counter;
uint64_t st;
uint64_t et;
int64_t lastTs;
......@@ -524,6 +526,7 @@ SArguments g_args = {
"t", // tb_prefix
NULL, // sqlFile
true, // use_metric
true, // drop_database
true, // insert_only
false, // debug_print
false, // verbose_print
......@@ -547,7 +550,8 @@ SArguments g_args = {
10, // num_of_CPR
10, // num_of_connections/thread
0, // insert_interval
0, // rows_per_tbl;
1, // query_times
0, // interlace_rows;
100, // num_of_RPR
TSDB_PAYLOAD_SIZE, // max_sql_len
10000, // num_of_tables
......@@ -681,8 +685,10 @@ static void parse_args(int argc, char *argv[], SArguments *arguments) {
arguments->num_of_threads = atoi(argv[++i]);
} else if (strcmp(argv[i], "-i") == 0) {
arguments->insert_interval = atoi(argv[++i]);
} else if (strcmp(argv[i], "-qt") == 0) {
arguments->query_times = atoi(argv[++i]);
} else if (strcmp(argv[i], "-B") == 0) {
arguments->rows_per_tbl = atoi(argv[++i]);
arguments->interlace_rows = atoi(argv[++i]);
} else if (strcmp(argv[i], "-r") == 0) {
arguments->num_of_RPR = atoi(argv[++i]);
} else if (strcmp(argv[i], "-t") == 0) {
......@@ -1064,6 +1070,7 @@ static int printfInsertMeta() {
printf("max sql length: \033[33m%d\033[0m\n", g_args.max_sql_len);
printf("database count: \033[33m%d\033[0m\n", g_Dbs.dbCount);
for (int i = 0; i < g_Dbs.dbCount; i++) {
printf("database[\033[33m%d\033[0m]:\n", i);
printf(" database[%d] name: \033[33m%s\033[0m\n", i, g_Dbs.db[i].dbName);
......@@ -1220,16 +1227,19 @@ static int printfInsertMeta() {
}
static void printfInsertMetaToFile(FILE* fp) {
SHOW_PARSE_RESULT_START_TO_FILE(fp);
SHOW_PARSE_RESULT_START_TO_FILE(fp);
fprintf(fp, "host: %s:%u\n", g_Dbs.host, g_Dbs.port);
fprintf(fp, "user: %s\n", g_Dbs.user);
fprintf(fp, "password: %s\n", g_Dbs.password);
fprintf(fp, "resultFile: %s\n", g_Dbs.resultFile);
fprintf(fp, "thread num of insert data: %d\n", g_Dbs.threadCount);
fprintf(fp, "thread num of create table: %d\n", g_Dbs.threadCountByCreateTbl);
fprintf(fp, "insert interval: %d\n", g_args.insert_interval);
fprintf(fp, "number of records per req: %d\n", g_args.num_of_RPR);
fprintf(fp, "max sql length: %d\n", g_args.max_sql_len);
fprintf(fp, "database count: %d\n", g_Dbs.dbCount);
for (int i = 0; i < g_Dbs.dbCount; i++) {
fprintf(fp, "database[%d]:\n", i);
fprintf(fp, " database[%d] name: %s\n", i, g_Dbs.db[i].dbName);
......@@ -1364,20 +1374,23 @@ static void printfInsertMetaToFile(FILE* fp) {
}
fprintf(fp, "\n");
}
SHOW_PARSE_RESULT_END_TO_FILE(fp);
}
static void printfQueryMeta() {
SHOW_PARSE_RESULT_START();
printf("host: \033[33m%s:%u\033[0m\n",
g_queryInfo.host, g_queryInfo.port);
printf("user: \033[33m%s\033[0m\n", g_queryInfo.user);
printf("password: \033[33m%s\033[0m\n", g_queryInfo.password);
printf("database name: \033[33m%s\033[0m\n", g_queryInfo.dbName);
printf("\n");
printf("specified table query info: \n");
printf("query interval: \033[33m%d\033[0m\n", g_queryInfo.superQueryInfo.rate);
printf("query times: \033[33m%d\033[0m\n", g_args.query_times);
printf("concurrent: \033[33m%d\033[0m\n", g_queryInfo.superQueryInfo.concurrent);
printf("sqlCount: \033[33m%d\033[0m\n", g_queryInfo.superQueryInfo.sqlCount);
......@@ -1411,11 +1424,10 @@ static void printfQueryMeta() {
}
printf("\n");
SHOW_PARSE_RESULT_END();
SHOW_PARSE_RESULT_END();
}
static char* xFormatTimestamp(char* buf, int64_t val, int precision) {
static char* formatTimestamp(char* buf, int64_t val, int precision) {
time_t tt;
if (precision == TSDB_TIME_PRECISION_MICRO) {
tt = (time_t)(val / 1000000);
......@@ -1447,7 +1459,9 @@ static char* xFormatTimestamp(char* buf, int64_t val, int precision) {
return buf;
}
static void xDumpFieldToFile(FILE* fp, const char* val, TAOS_FIELD* field, int32_t length, int precision) {
static void xDumpFieldToFile(FILE* fp, const char* val,
TAOS_FIELD* field, int32_t length, int precision) {
if (val == NULL) {
fprintf(fp, "%s", TSDB_DATA_NULL_STR);
return;
......@@ -1483,7 +1497,7 @@ static void xDumpFieldToFile(FILE* fp, const char* val, TAOS_FIELD* field, int32
fprintf(fp, "\'%s\'", buf);
break;
case TSDB_DATA_TYPE_TIMESTAMP:
xFormatTimestamp(buf, *(int64_t*)val, precision);
formatTimestamp(buf, *(int64_t*)val, precision);
fprintf(fp, "'%s'", buf);
break;
default:
......@@ -1562,7 +1576,7 @@ static int getDbFromServer(TAOS * taos, SDbInfo** dbInfos) {
tstrncpy(dbInfos[count]->name, (char *)row[TSDB_SHOW_DB_NAME_INDEX],
fields[TSDB_SHOW_DB_NAME_INDEX].bytes);
xFormatTimestamp(dbInfos[count]->create_time,
formatTimestamp(dbInfos[count]->create_time,
*(int64_t*)row[TSDB_SHOW_DB_CREATED_TIME_INDEX],
TSDB_TIME_PRECISION_MILLI);
dbInfos[count]->ntables = *((int32_t *)row[TSDB_SHOW_DB_NTABLES_INDEX]);
......@@ -2036,15 +2050,25 @@ static int getChildNameOfSuperTableWithLimitAndOffset(TAOS * taos,
res = taos_query(taos, command);
int32_t code = taos_errno(res);
if (code != 0) {
printf("failed to run command %s\n", command);
taos_free_result(res);
taos_close(taos);
errorPrint("%s() LN%d, failed to run command %s\n",
__func__, __LINE__, command);
exit(-1);
}
int childTblCount = (limit < 0)?10000:limit;
int count = 0;
// childTblName = (char*)calloc(1, childTblCount * TSDB_TABLE_NAME_LEN);
if (childTblName == NULL) {
childTblName = (char*)calloc(1, childTblCount * TSDB_TABLE_NAME_LEN);
if (NULL == childTblName) {
taos_free_result(res);
taos_close(taos);
errorPrint("%s() LN%d, failed to allocate memory!\n", __func__, __LINE__);
exit(-1);
}
}
char* pTblName = childTblName;
while ((row = taos_fetch_row(res)) != NULL) {
int32_t* len = taos_fetch_lengths(res);
......@@ -2090,6 +2114,7 @@ static int getAllChildNameOfSuperTable(TAOS * taos, char* dbName,
static int getSuperTableFromServer(TAOS * taos, char* dbName,
SSuperTable* superTbls) {
char command[BUFFER_SIZE] = "\0";
TAOS_RES * res;
TAOS_ROW row = NULL;
......@@ -2315,7 +2340,7 @@ static int createDatabases() {
}
char command[BUFFER_SIZE] = "\0";
for (int i = 0; i < g_Dbs.dbCount; i++) {
for (int i = 0; i < g_Dbs.dbCount; i++) {
if (g_Dbs.db[i].drop) {
sprintf(command, "drop database if exists %s;", g_Dbs.db[i].dbName);
verbosePrint("%s() %d command: %s\n", __func__, __LINE__, command);
......@@ -2326,7 +2351,7 @@ static int createDatabases() {
}
int dataLen = 0;
dataLen += snprintf(command + dataLen,
dataLen += snprintf(command + dataLen,
BUFFER_SIZE - dataLen, "create database if not exists %s", g_Dbs.db[i].dbName);
if (g_Dbs.db[i].dbCfg.blocks > 0) {
......@@ -2403,38 +2428,48 @@ static int createDatabases() {
debugPrint("%s() %d supertbl count:%d\n",
__func__, __LINE__, g_Dbs.db[i].superTblCount);
for (int j = 0; j < g_Dbs.db[i].superTblCount; j++) {
// describe super table, if exists
if ((g_Dbs.db[i].drop) || (g_Dbs.db[i].superTbls[j].superTblExists == TBL_NO_EXISTS)) {
ret = createSuperTable(taos, g_Dbs.db[i].dbName,
&g_Dbs.db[i].superTbls[j], g_Dbs.use_metric);
if (0 != ret) {
errorPrint("\ncreate super table %d failed!\n\n", j);
taos_close(taos);
return -1;
}
}
/* describe super table, if exists
sprintf(command, "describe %s.%s;", g_Dbs.db[i].dbName,
g_Dbs.db[i].superTbls[j].sTblName);
verbosePrint("%s() %d command: %s\n", __func__, __LINE__, command);
if (0 != queryDbExec(taos, command, NO_INSERT_TYPE)) {
g_Dbs.db[i].superTbls[j].superTblExists = TBL_NO_EXISTS;
ret = createSuperTable(taos, g_Dbs.db[i].dbName,
&g_Dbs.db[i].superTbls[j], g_Dbs.use_metric);
} else {
*/
g_Dbs.db[i].superTbls[j].superTblExists = TBL_ALREADY_EXISTS;
if (g_Dbs.db[i].superTbls[j].childTblExists != TBL_ALREADY_EXISTS) {
ret = getSuperTableFromServer(taos, g_Dbs.db[i].dbName,
ret = getSuperTableFromServer(taos, g_Dbs.db[i].dbName,
&g_Dbs.db[i].superTbls[j]);
//}
if (0 != ret) {
errorPrint("\nget super table %s.%s info failed!\n\n", g_Dbs.db[i].dbName,
g_Dbs.db[i].superTbls[j].sTblName);
taos_close(taos);
return -1;
}
}
if (0 != ret) {
printf("\ncreate super table %d failed!\n\n", j);
taos_close(taos);
return -1;
}
}
}
}
taos_close(taos);
return 0;
}
static void* createTable(void *sarg)
{
threadInfo *winfo = (threadInfo *)sarg;
static void* createTable(void *sarg)
{
threadInfo *winfo = (threadInfo *)sarg;
SSuperTable* superTblInfo = winfo->superTblInfo;
int64_t lastPrintTime = taosGetTimestampMs();
......@@ -2454,19 +2489,19 @@ static void* createTable(void *sarg)
int len = 0;
int batchNum = 0;
verbosePrint("%s() LN%d: Creating table from %d to %d\n",
verbosePrint("%s() LN%d: Creating table from %d to %d\n",
__func__, __LINE__,
winfo->start_table_from, winfo->end_table_to);
for (int i = winfo->start_table_from; i <= winfo->end_table_to; i++) {
if (0 == g_Dbs.use_metric) {
snprintf(buffer, buff_len,
snprintf(buffer, buff_len,
"create table if not exists %s.%s%d %s;",
winfo->db_name,
g_args.tb_prefix, i,
winfo->cols);
} else {
if (0 == len) {
if (0 == len) {
batchNum = 0;
memset(buffer, 0, buff_len);
len += snprintf(buffer + len,
......@@ -2485,7 +2520,7 @@ static void* createTable(void *sarg)
free(buffer);
return NULL;
}
len += snprintf(buffer + len,
superTblInfo->maxSqlLen - len,
"if not exists %s.%s%d using %s.%s tags %s ",
......@@ -2496,7 +2531,7 @@ static void* createTable(void *sarg)
batchNum++;
if ((batchNum < superTblInfo->batchCreateTableNum)
&& ((superTblInfo->maxSqlLen - len)
&& ((superTblInfo->maxSqlLen - len)
>= (superTblInfo->lenOfTagOfOneRow + 256))) {
continue;
}
......@@ -2505,8 +2540,8 @@ static void* createTable(void *sarg)
len = 0;
verbosePrint("%s() LN%d %s\n", __func__, __LINE__, buffer);
if (0 != queryDbExec(winfo->taos, buffer, NO_INSERT_TYPE)){
errorPrint( "queryDbExec() failed. buffer:\n%s\n", buffer);
free(buffer);
errorPrint( "queryDbExec() failed. buffer:\n%s\n", buffer);
return NULL;
}
......@@ -2532,6 +2567,7 @@ static void* createTable(void *sarg)
static int startMultiThreadCreateChildTable(
char* cols, int threads, int startFrom, int ntables,
char* db_name, SSuperTable* superTblInfo) {
pthread_t *pids = malloc(threads * sizeof(pthread_t));
threadInfo *infos = malloc(threads * sizeof(threadInfo));
......@@ -2568,7 +2604,7 @@ static int startMultiThreadCreateChildTable(
if (t_info->taos == NULL) {
errorPrint( "Failed to connect to TDengine, reason:%s\n", taos_errstr(NULL));
free(pids);
free(infos);
free(infos);
return -1;
}
......@@ -2616,12 +2652,12 @@ static void createChildTables() {
g_totalChildTables += g_Dbs.db[i].superTbls[j].childTblCount;
verbosePrint("%s() LN%d: create %d child tables from %d\n", __func__, __LINE__,
g_totalChildTables, startFrom);
g_totalChildTables, startFrom);
startMultiThreadCreateChildTable(
g_Dbs.db[i].superTbls[j].colsOfCreateChildTable,
g_Dbs.threadCountByCreateTbl,
startFrom,
g_totalChildTables,
g_Dbs.db[i].superTbls[j].childTblCount,
g_Dbs.db[i].dbName, &(g_Dbs.db[i].superTbls[j]));
}
} else {
......@@ -3008,13 +3044,23 @@ static bool getMetaFromInsertJsonFile(cJSON* root) {
goto PARSE_OVER;
}
cJSON* rowsPerTbl = cJSON_GetObjectItem(root, "rows_per_tbl");
if (rowsPerTbl && rowsPerTbl->type == cJSON_Number) {
g_args.rows_per_tbl = rowsPerTbl->valueint;
} else if (!rowsPerTbl) {
g_args.rows_per_tbl = 0; // 0 means progressive mode, > 0 mean interlace mode. max value is less or equ num_of_records_per_req
cJSON* gQueryTimes = cJSON_GetObjectItem(root, "query_times");
if (gQueryTimes && gQueryTimes->type == cJSON_Number) {
g_args.query_times = gQueryTimes->valueint;
} else if (!gQueryTimes) {
g_args.query_times = 1;
} else {
errorPrint("%s() LN%d, failed to read json, rows_per_tbl input mistake\n", __func__, __LINE__);
errorPrint("%s() LN%d, failed to read json, query_times input mistake\n", __func__, __LINE__);
goto PARSE_OVER;
}
cJSON* interlaceRows = cJSON_GetObjectItem(root, "interlace_rows");
if (interlaceRows && interlaceRows->type == cJSON_Number) {
g_args.interlace_rows = interlaceRows->valueint;
} else if (!interlaceRows) {
g_args.interlace_rows = 0; // 0 means progressive mode, > 0 mean interlace mode. max value is less or equ num_of_records_per_req
} else {
errorPrint("%s() LN%d, failed to read json, interlace_rows input mistake\n", __func__, __LINE__);
goto PARSE_OVER;
}
......@@ -3092,15 +3138,16 @@ static bool getMetaFromInsertJsonFile(cJSON* root) {
cJSON *drop = cJSON_GetObjectItem(dbinfo, "drop");
if (drop && drop->type == cJSON_String && drop->valuestring != NULL) {
if (0 == strncasecmp(drop->valuestring, "yes", 3)) {
g_Dbs.db[i].drop = 1;
if (0 == strncasecmp(drop->valuestring, "yes", strlen("yes"))) {
g_Dbs.db[i].drop = true;
} else {
g_Dbs.db[i].drop = 0;
g_Dbs.db[i].drop = false;
}
} else if (!drop) {
g_Dbs.db[i].drop = 0;
g_Dbs.db[i].drop = g_args.drop_database;
} else {
printf("ERROR: failed to read json, drop not found\n");
errorPrint("%s() LN%d, failed to read json, drop input mistake\n",
__func__, __LINE__);
goto PARSE_OVER;
}
......@@ -3498,7 +3545,7 @@ static bool getMetaFromInsertJsonFile(cJSON* root) {
goto PARSE_OVER;
}
cJSON* rowsPerTbl = cJSON_GetObjectItem(stbInfo, "rows_per_tbl");
cJSON* rowsPerTbl = cJSON_GetObjectItem(stbInfo, "interlace_rows");
if (rowsPerTbl && rowsPerTbl->type == cJSON_Number) {
g_Dbs.db[i].superTbls[j].rowsPerTbl = rowsPerTbl->valueint;
} else if (!rowsPerTbl) {
......@@ -4425,7 +4472,7 @@ static void* syncWriteInterlace(threadInfo *pThreadInfo) {
int insertMode;
char tableName[TSDB_TABLE_NAME_LEN];
int rowsPerTbl = superTblInfo?superTblInfo->rowsPerTbl:g_args.rows_per_tbl;
int rowsPerTbl = superTblInfo?superTblInfo->rowsPerTbl:g_args.interlace_rows;
if (rowsPerTbl > 0) {
insertMode = INTERLACE_INSERT_MODE;
......@@ -4441,7 +4488,8 @@ static void* syncWriteInterlace(threadInfo *pThreadInfo) {
pThreadInfo->totalAffectedRows = 0;
int64_t insertRows = (superTblInfo)?superTblInfo->insertRows:g_args.num_of_DPT;
int insert_interval = superTblInfo?superTblInfo->insertInterval:g_args.insert_interval;
int insert_interval =
superTblInfo?superTblInfo->insertInterval:g_args.insert_interval;
uint64_t st = 0;
uint64_t et = 0xffffffff;
......@@ -4518,8 +4566,8 @@ static void* syncWriteInterlace(threadInfo *pThreadInfo) {
pstr += dataLen;
recOfBatch += batchPerTbl;
startTime += batchPerTbl * superTblInfo->timeStampStep;
pThreadInfo->totalInsertRows += batchPerTbl;
verbosePrint("[%d] %s() LN%d batchPerTbl=%d recOfBatch=%d\n",
pThreadInfo->threadID, __func__, __LINE__,
batchPerTbl, recOfBatch);
......@@ -4640,8 +4688,10 @@ static void* syncWriteProgressive(threadInfo *pThreadInfo) {
int64_t startTs = taosGetTimestampUs();
int64_t endTs;
int timeStampStep = superTblInfo?superTblInfo->timeStampStep:DEFAULT_TIMESTAMP_STEP;
int insert_interval = superTblInfo?superTblInfo->insertInterval:g_args.insert_interval;
int timeStampStep =
superTblInfo?superTblInfo->timeStampStep:DEFAULT_TIMESTAMP_STEP;
int insert_interval =
superTblInfo?superTblInfo->insertInterval:g_args.insert_interval;
uint64_t st = 0;
uint64_t et = 0xffffffff;
......@@ -4650,7 +4700,8 @@ static void* syncWriteProgressive(threadInfo *pThreadInfo) {
pThreadInfo->samplePos = 0;
for (uint32_t tableSeq = pThreadInfo->start_table_from; tableSeq <= pThreadInfo->end_table_to;
for (uint32_t tableSeq =
pThreadInfo->start_table_from; tableSeq <= pThreadInfo->end_table_to;
tableSeq ++) {
int64_t start_time = pThreadInfo->start_time;
......@@ -4746,7 +4797,7 @@ static void* syncWrite(void *sarg) {
threadInfo *winfo = (threadInfo *)sarg;
SSuperTable* superTblInfo = winfo->superTblInfo;
int rowsPerTbl = superTblInfo?superTblInfo->rowsPerTbl:g_args.rows_per_tbl;
int rowsPerTbl = superTblInfo?superTblInfo->rowsPerTbl:g_args.interlace_rows;
if (rowsPerTbl > 0) {
// interlace mode
......@@ -4761,14 +4812,15 @@ static void callBack(void *param, TAOS_RES *res, int code) {
threadInfo* winfo = (threadInfo*)param;
SSuperTable* superTblInfo = winfo->superTblInfo;
int insert_interval = superTblInfo?superTblInfo->insertInterval:g_args.insert_interval;
int insert_interval =
superTblInfo?superTblInfo->insertInterval:g_args.insert_interval;
if (insert_interval) {
winfo->et = taosGetTimestampUs();
if (((winfo->et - winfo->st)/1000) < insert_interval) {
taosMsleep(insert_interval - (winfo->et - winfo->st)/1000); // ms
}
}
char *buffer = calloc(1, winfo->superTblInfo->maxSqlLen);
char *data = calloc(1, MAX_DATA_SIZE);
char *pstr = buffer;
......@@ -4786,17 +4838,17 @@ static void callBack(void *param, TAOS_RES *res, int code) {
taos_free_result(res);
return;
}
for (int i = 0; i < g_args.num_of_RPR; i++) {
int rand_num = taosRandom() % 100;
if (0 != winfo->superTblInfo->disorderRatio && rand_num < winfo->superTblInfo->disorderRatio)
{
if (0 != winfo->superTblInfo->disorderRatio
&& rand_num < winfo->superTblInfo->disorderRatio) {
int64_t d = winfo->lastTs - taosRandom() % 1000000 + rand_num;
//generateData(data, datatype, ncols_per_record, d, len_of_binary);
(void)generateRowData(data, MAX_DATA_SIZE, d, winfo->superTblInfo);
generateRowData(data, MAX_DATA_SIZE, d, winfo->superTblInfo);
} else {
//generateData(data, datatype, ncols_per_record, start_time += 1000, len_of_binary);
(void)generateRowData(data, MAX_DATA_SIZE, winfo->lastTs += 1000, winfo->superTblInfo);
generateRowData(data, MAX_DATA_SIZE, winfo->lastTs += 1000, winfo->superTblInfo);
}
pstr += sprintf(pstr, "%s", data);
winfo->counter++;
......@@ -4824,7 +4876,8 @@ static void *asyncWrite(void *sarg) {
winfo->et = 0;
winfo->lastTs = winfo->start_time;
int insert_interval = superTblInfo?superTblInfo->insertInterval:g_args.insert_interval;
int insert_interval =
superTblInfo?superTblInfo->insertInterval:g_args.insert_interval;
if (insert_interval) {
winfo->st = taosGetTimestampUs();
}
......@@ -4850,7 +4903,7 @@ static void startMultiThreadInsertData(int threads, char* db_name,
int ntables = 0;
if (superTblInfo) {
if ((superTblInfo->childTblOffset >= 0)
if ((superTblInfo->childTblOffset >= 0)
&& (superTblInfo->childTblLimit > 0)) {
ntables = superTblInfo->childTblLimit;
......@@ -5304,16 +5357,16 @@ static int insertTestProcess() {
continue;
}
startMultiThreadInsertData(
g_Dbs.threadCount,
g_Dbs.db[i].dbName,
g_Dbs.db[i].dbCfg.precision,
g_Dbs.threadCount,
g_Dbs.db[i].dbName,
g_Dbs.db[i].dbCfg.precision,
superTblInfo);
}
} else {
startMultiThreadInsertData(
g_Dbs.threadCount,
g_Dbs.db[i].dbName,
g_Dbs.db[i].dbCfg.precision,
g_Dbs.threadCount,
g_Dbs.db[i].dbName,
g_Dbs.db[i].dbCfg.precision,
NULL);
}
}
......@@ -5333,7 +5386,7 @@ static int insertTestProcess() {
}
static void *superQueryProcess(void *sarg) {
threadInfo *winfo = (threadInfo *)sarg;
threadInfo *winfo = (threadInfo *)sarg;
//char sqlStr[MAX_TB_NAME_SIZE*2];
//sprintf(sqlStr, "use %s", g_queryInfo.dbName);
......@@ -5342,39 +5395,41 @@ static void *superQueryProcess(void *sarg) {
int64_t st = 0;
int64_t et = 0;
while (1) {
if (g_queryInfo.superQueryInfo.rate && (et - st) < (int64_t)g_queryInfo.superQueryInfo.rate*1000) {
if (g_queryInfo.superQueryInfo.rate && (et - st) <
(int64_t)g_queryInfo.superQueryInfo.rate*1000) {
taosMsleep(g_queryInfo.superQueryInfo.rate*1000 - (et - st)); // ms
//printf("========sleep duration:%"PRId64 "========inserted rows:%d, table range:%d - %d\n", (1000 - (et - st)), i, winfo->start_table_from, winfo->end_table_to);
}
st = taosGetTimestampUs();
for (int i = 0; i < g_queryInfo.superQueryInfo.sqlCount; i++) {
if (0 == strncasecmp(g_queryInfo.queryMode, "taosc", 5)) {
if (0 == strncasecmp(g_queryInfo.queryMode, "taosc", 5)) {
int64_t t1 = taosGetTimestampUs();
char tmpFile[MAX_FILE_NAME_LEN*2] = {0};
if (g_queryInfo.superQueryInfo.result[i][0] != 0) {
sprintf(tmpFile, "%s-%d", g_queryInfo.superQueryInfo.result[i], winfo->threadID);
sprintf(tmpFile, "%s-%d",
g_queryInfo.superQueryInfo.result[i], winfo->threadID);
}
selectAndGetResult(winfo->taos, g_queryInfo.superQueryInfo.sql[i], tmpFile);
int64_t t2 = taosGetTimestampUs();
printf("=[taosc] thread[%"PRId64"] complete one sql, Spent %f s\n",
selectAndGetResult(winfo->taos, g_queryInfo.superQueryInfo.sql[i], tmpFile);
int64_t t2 = taosGetTimestampUs();
printf("=[taosc] thread[%"PRId64"] complete one sql, Spent %f s\n",
taosGetSelfPthreadId(), (t2 - t1)/1000000.0);
} else {
int64_t t1 = taosGetTimestampUs();
int retCode = postProceSql(g_queryInfo.host,
int retCode = postProceSql(g_queryInfo.host,
g_queryInfo.port, g_queryInfo.superQueryInfo.sql[i]);
int64_t t2 = taosGetTimestampUs();
printf("=[restful] thread[%"PRId64"] complete one sql, Spent %f s\n",
int64_t t2 = taosGetTimestampUs();
printf("=[restful] thread[%"PRId64"] complete one sql, Spent %f s\n",
taosGetSelfPthreadId(), (t2 - t1)/1000000.0);
if (0 != retCode) {
printf("====restful return fail, threadID[%d]\n", winfo->threadID);
return NULL;
}
}
}
}
et = taosGetTimestampUs();
printf("==thread[%"PRId64"] complete all sqls to specify tables once queries duration:%.6fs\n\n",
printf("==thread[%"PRId64"] complete all sqls to specify tables once queries duration:%.6fs\n\n",
taosGetSelfPthreadId(), (double)(et - st)/1000.0);
}
return NULL;
......@@ -5383,31 +5438,33 @@ static void *superQueryProcess(void *sarg) {
static void replaceSubTblName(char* inSql, char* outSql, int tblIndex) {
char sourceString[32] = "xxxx";
char subTblName[MAX_TB_NAME_SIZE*3];
sprintf(subTblName, "%s.%s",
g_queryInfo.dbName,
sprintf(subTblName, "%s.%s",
g_queryInfo.dbName,
g_queryInfo.subQueryInfo.childTblName + tblIndex*TSDB_TABLE_NAME_LEN);
//printf("inSql: %s\n", inSql);
char* pos = strstr(inSql, sourceString);
if (0 == pos) {
return;
return;
}
tstrncpy(outSql, inSql, pos - inSql + 1);
//printf("1: %s\n", outSql);
strcat(outSql, subTblName);
//printf("2: %s\n", outSql);
strcat(outSql, pos+strlen(sourceString));
//printf("3: %s\n", outSql);
strcat(outSql, subTblName);
//printf("2: %s\n", outSql);
strcat(outSql, pos+strlen(sourceString));
//printf("3: %s\n", outSql);
}
static void *subQueryProcess(void *sarg) {
char sqlstr[1024];
threadInfo *winfo = (threadInfo *)sarg;
threadInfo *winfo = (threadInfo *)sarg;
int64_t st = 0;
int64_t et = (int64_t)g_queryInfo.subQueryInfo.rate*1000;
while (1) {
int queryTimes = g_args.query_times;
while (queryTimes --) {
if (g_queryInfo.subQueryInfo.rate
&& (et - st) < (int64_t)g_queryInfo.subQueryInfo.rate*1000) {
taosMsleep(g_queryInfo.subQueryInfo.rate*1000 - (et - st)); // ms
......@@ -5421,24 +5478,30 @@ static void *subQueryProcess(void *sarg) {
replaceSubTblName(g_queryInfo.subQueryInfo.sql[j], sqlstr, i);
char tmpFile[MAX_FILE_NAME_LEN*2] = {0};
if (g_queryInfo.subQueryInfo.result[i][0] != 0) {
sprintf(tmpFile, "%s-%d",
g_queryInfo.subQueryInfo.result[i],
sprintf(tmpFile, "%s-%d",
g_queryInfo.subQueryInfo.result[i],
winfo->threadID);
}
selectAndGetResult(winfo->taos, sqlstr, tmpFile);
selectAndGetResult(winfo->taos, sqlstr, tmpFile);
}
}
et = taosGetTimestampUs();
printf("####thread[%"PRId64"] complete all sqls to allocate all sub-tables[%d - %d] once queries duration:%.4fs\n\n",
taosGetSelfPthreadId(),
winfo->start_table_from,
winfo->end_table_to,
taosGetSelfPthreadId(),
winfo->start_table_from,
winfo->end_table_to,
(double)(et - st)/1000000.0);
}
return NULL;
}
static int queryTestProcess() {
setupForAnsiEscape();
printfQueryMeta();
resetAfterAnsiEscape();
TAOS * taos = NULL;
taos = taos_connect(g_queryInfo.host,
g_queryInfo.user,
......@@ -5456,15 +5519,13 @@ static int queryTestProcess() {
g_queryInfo.subQueryInfo.sTblName,
&g_queryInfo.subQueryInfo.childTblName,
&g_queryInfo.subQueryInfo.childTblCount);
}
printfQueryMeta();
}
if (!g_args.answer_yes) {
printf("Press enter key to continue\n\n");
(void)getchar();
}
printfQuerySystemInfo(taos);
pthread_t *pids = NULL;
......@@ -5553,7 +5614,7 @@ static int queryTestProcess() {
for (int i = 0; i < threads; i++) {
threadInfo *t_info = infosOfSub + i;
t_info->threadID = i;
t_info->start_table_from = startFrom;
t_info->ntables = i<b?a+1:a;
t_info->end_table_to = i < b ? startFrom + a : startFrom + a - 1;
......@@ -5565,7 +5626,7 @@ static int queryTestProcess() {
g_queryInfo.subQueryInfo.threadCnt = threads;
} else {
g_queryInfo.subQueryInfo.threadCnt = 0;
}
}
for (int i = 0; i < g_queryInfo.superQueryInfo.concurrent; i++) {
pthread_join(pids[i], NULL);
......@@ -5753,18 +5814,20 @@ static void *superSubscribeProcess(void *sarg) {
}
static int subscribeTestProcess() {
setupForAnsiEscape();
printfQueryMeta();
resetAfterAnsiEscape();
if (!g_args.answer_yes) {
printf("Press enter key to continue\n\n");
(void)getchar();
}
TAOS * taos = NULL;
taos = taos_connect(g_queryInfo.host,
g_queryInfo.user,
g_queryInfo.password,
g_queryInfo.dbName,
TAOS * taos = NULL;
taos = taos_connect(g_queryInfo.host,
g_queryInfo.user,
g_queryInfo.password,
g_queryInfo.dbName,
g_queryInfo.port);
if (taos == NULL) {
errorPrint( "Failed to connect to TDengine, reason:%s\n", taos_errstr(NULL));
......@@ -5772,10 +5835,10 @@ static int subscribeTestProcess() {
}
if (0 != g_queryInfo.subQueryInfo.sqlCount) {
getAllChildNameOfSuperTable(taos,
g_queryInfo.dbName,
g_queryInfo.subQueryInfo.sTblName,
&g_queryInfo.subQueryInfo.childTblName,
getAllChildNameOfSuperTable(taos,
g_queryInfo.dbName,
g_queryInfo.subQueryInfo.sTblName,
&g_queryInfo.subQueryInfo.childTblName,
&g_queryInfo.subQueryInfo.childTblCount);
}
......@@ -5875,7 +5938,8 @@ static void initOfInsertMeta() {
tstrncpy(g_Dbs.user, TSDB_DEFAULT_USER, MAX_DB_NAME_SIZE);
tstrncpy(g_Dbs.password, TSDB_DEFAULT_PASS, MAX_DB_NAME_SIZE);
g_Dbs.threadCount = 2;
g_Dbs.use_metric = true;
g_Dbs.use_metric = g_args.use_metric;
}
static void initOfQueryMeta() {
......@@ -6084,16 +6148,23 @@ static void querySqlFile(TAOS* taos, char* sqlFile)
static void testMetaFile() {
if (INSERT_TEST == g_args.test_mode) {
if (g_Dbs.cfgDir[0]) taos_options(TSDB_OPTION_CONFIGDIR, g_Dbs.cfgDir);
if (g_Dbs.cfgDir[0])
taos_options(TSDB_OPTION_CONFIGDIR, g_Dbs.cfgDir);
insertTestProcess();
} else if (QUERY_TEST == g_args.test_mode) {
if (g_queryInfo.cfgDir[0])
taos_options(TSDB_OPTION_CONFIGDIR, g_queryInfo.cfgDir);
queryTestProcess();
} else if (SUBSCRIBE_TEST == g_args.test_mode) {
if (g_queryInfo.cfgDir[0])
taos_options(TSDB_OPTION_CONFIGDIR, g_queryInfo.cfgDir);
subscribeTestProcess();
} else {
;
}
......
......@@ -50,6 +50,7 @@ static int32_t mnodeGetDbMeta(STableMetaMsg *pMeta, SShowObj *pShow, void *pConn
static int32_t mnodeRetrieveDbs(SShowObj *pShow, char *data, int32_t rows, void *pConn);
static int32_t mnodeProcessCreateDbMsg(SMnodeMsg *pMsg);
static int32_t mnodeProcessDropDbMsg(SMnodeMsg *pMsg);
static int32_t mnodeProcessSyncDbMsg(SMnodeMsg *pMsg);
int32_t mnodeProcessAlterDbMsg(SMnodeMsg *pMsg);
#ifndef _TOPIC
......@@ -178,6 +179,7 @@ int32_t mnodeInitDbs() {
mnodeAddWriteMsgHandle(TSDB_MSG_TYPE_CM_CREATE_DB, mnodeProcessCreateDbMsg);
mnodeAddWriteMsgHandle(TSDB_MSG_TYPE_CM_ALTER_DB, mnodeProcessAlterDbMsg);
mnodeAddWriteMsgHandle(TSDB_MSG_TYPE_CM_DROP_DB, mnodeProcessDropDbMsg);
mnodeAddWriteMsgHandle(TSDB_MSG_TYPE_CM_SYNC_DB, mnodeProcessSyncDbMsg);
mnodeAddShowMetaHandle(TSDB_MGMT_TABLE_DB, mnodeGetDbMeta);
mnodeAddShowRetrieveHandle(TSDB_MGMT_TABLE_DB, mnodeRetrieveDbs);
mnodeAddShowFreeIterHandle(TSDB_MGMT_TABLE_DB, mnodeCancelGetNextDb);
......@@ -1184,6 +1186,10 @@ static int32_t mnodeProcessDropDbMsg(SMnodeMsg *pMsg) {
return mnodeDropDb(pMsg);
}
static int32_t mnodeProcessSyncDbMsg(SMnodeMsg *pMsg) {
return 0;
}
void mnodeDropAllDbs(SAcctObj *pAcct) {
int32_t numOfDbs = 0;
SDbObj *pDb = NULL;
......
......@@ -726,6 +726,9 @@ expritem(A) ::= . {A = 0;}
///////////////////////////////////reset query cache//////////////////////////////////////
cmd ::= RESET QUERY CACHE. { setDCLSqlElems(pInfo, TSDB_SQL_RESET_CACHE, 0);}
///////////////////////////////////sync replica database//////////////////////////////////
cmd ::= SYNCDB ids(X) REPLICA.{ setDCLSqlElems(pInfo, TSDB_SQL_SYNC_DB_REPLICA, 1, &X);}
///////////////////////////////////ALTER TABLE statement//////////////////////////////////
cmd ::= ALTER TABLE ids(X) cpxName(F) ADD COLUMN columnlist(A). {
X.n += F.n;
......
......@@ -911,6 +911,7 @@ void setDCLSqlElems(SSqlInfo *pInfo, int32_t type, int32_t nParam, ...) {
SStrToken *pToken = va_arg(va, SStrToken *);
taosArrayPush(pInfo->pMiscInfo->a, pToken);
}
va_end(va);
}
......
......@@ -100,6 +100,7 @@ static SKeyword keywordTable[] = {
{"ACCOUNT", TK_ACCOUNT},
{"USE", TK_USE},
{"DESCRIBE", TK_DESCRIBE},
{"SYNCDB", TK_SYNCDB},
{"ALTER", TK_ALTER},
{"PASS", TK_PASS},
{"PRIVILEGE", TK_PRIVILEGE},
......
......@@ -97,28 +97,28 @@
#endif
/************* Begin control #defines *****************************************/
#define YYCODETYPE unsigned short int
#define YYNOCODE 263
#define YYNOCODE 264
#define YYACTIONTYPE unsigned short int
#define ParseTOKENTYPE SStrToken
typedef union {
int yyinit;
ParseTOKENTYPE yy0;
SLimitVal yy18;
SFromInfo* yy70;
SSessionWindowVal yy87;
SCreateDbInfo yy94;
int yy116;
SSubclauseInfo* yy141;
tSqlExpr* yy170;
SCreateTableSql* yy194;
tVariant yy218;
SIntervalVal yy220;
SCreatedTableInfo yy252;
SQuerySqlNode* yy254;
SCreateAcctInfo yy419;
SArray* yy429;
TAOS_FIELD yy451;
int64_t yy481;
SCreateTableSql* yy14;
int yy20;
tSqlExpr* yy118;
SArray* yy159;
SIntervalVal yy184;
SCreatedTableInfo yy206;
SSessionWindowVal yy249;
SQuerySqlNode* yy272;
int64_t yy317;
SCreateDbInfo yy322;
SCreateAcctInfo yy351;
SSubclauseInfo* yy391;
TAOS_FIELD yy407;
SLimitVal yy440;
tVariant yy488;
SFromInfo* yy514;
} YYMINORTYPE;
#ifndef YYSTACKDEPTH
#define YYSTACKDEPTH 100
......@@ -128,17 +128,17 @@ typedef union {
#define ParseARG_FETCH SSqlInfo* pInfo = yypParser->pInfo
#define ParseARG_STORE yypParser->pInfo = pInfo
#define YYFALLBACK 1
#define YYNSTATE 313
#define YYNRULE 265
#define YYNTOKEN 186
#define YY_MAX_SHIFT 312
#define YY_MIN_SHIFTREDUCE 502
#define YY_MAX_SHIFTREDUCE 766
#define YY_ERROR_ACTION 767
#define YY_ACCEPT_ACTION 768
#define YY_NO_ACTION 769
#define YY_MIN_REDUCE 770
#define YY_MAX_REDUCE 1034
#define YYNSTATE 315
#define YYNRULE 266
#define YYNTOKEN 187
#define YY_MAX_SHIFT 314
#define YY_MIN_SHIFTREDUCE 505
#define YY_MAX_SHIFTREDUCE 770
#define YY_ERROR_ACTION 771
#define YY_ACCEPT_ACTION 772
#define YY_NO_ACTION 773
#define YY_MIN_REDUCE 774
#define YY_MAX_REDUCE 1039
/************* End control #defines *******************************************/
/* Define the yytestcase() macro to be a no-op if is not already defined
......@@ -204,259 +204,259 @@ typedef union {
** yy_default[] Default action for each state.
**
*********** Begin parsing tables **********************************************/
#define YY_ACTTAB_COUNT (676)
#define YY_ACTTAB_COUNT (679)
static const YYACTIONTYPE yy_action[] = {
/* 0 */ 910, 549, 201, 310, 205, 139, 937, 3, 166, 550,
/* 10 */ 768, 312, 17, 47, 48, 139, 51, 52, 30, 180,
/* 20 */ 213, 41, 180, 50, 260, 55, 53, 57, 54, 1016,
/* 30 */ 916, 208, 1017, 46, 45, 178, 180, 44, 43, 42,
/* 40 */ 47, 48, 219, 51, 52, 207, 1017, 213, 41, 549,
/* 50 */ 50, 260, 55, 53, 57, 54, 928, 550, 184, 202,
/* 60 */ 46, 45, 913, 218, 44, 43, 42, 48, 934, 51,
/* 70 */ 52, 240, 968, 213, 41, 549, 50, 260, 55, 53,
/* 80 */ 57, 54, 969, 550, 255, 220, 46, 45, 276, 916,
/* 90 */ 44, 43, 42, 503, 504, 505, 506, 507, 508, 509,
/* 100 */ 510, 511, 512, 513, 514, 515, 311, 628, 84, 230,
/* 110 */ 69, 916, 1013, 47, 48, 30, 51, 52, 296, 30,
/* 120 */ 213, 41, 549, 50, 260, 55, 53, 57, 54, 64,
/* 130 */ 550, 306, 714, 46, 45, 286, 285, 44, 43, 42,
/* 140 */ 47, 49, 904, 51, 52, 224, 1012, 213, 41, 65,
/* 150 */ 50, 260, 55, 53, 57, 54, 216, 916, 902, 913,
/* 160 */ 46, 45, 222, 912, 44, 43, 42, 23, 274, 305,
/* 170 */ 304, 273, 272, 271, 303, 270, 302, 301, 300, 269,
/* 180 */ 299, 298, 876, 139, 864, 865, 866, 867, 868, 869,
/* 190 */ 870, 871, 872, 873, 874, 875, 877, 878, 51, 52,
/* 200 */ 815, 139, 213, 41, 165, 50, 260, 55, 53, 57,
/* 210 */ 54, 1011, 18, 81, 226, 46, 45, 283, 282, 44,
/* 220 */ 43, 42, 212, 727, 928, 25, 718, 68, 721, 189,
/* 230 */ 724, 223, 212, 727, 278, 190, 718, 276, 721, 203,
/* 240 */ 724, 117, 116, 188, 899, 900, 29, 903, 257, 233,
/* 250 */ 77, 44, 43, 42, 209, 210, 237, 236, 259, 901,
/* 260 */ 23, 197, 305, 304, 209, 210, 225, 303, 78, 302,
/* 270 */ 301, 300, 73, 299, 298, 884, 104, 30, 882, 883,
/* 280 */ 36, 296, 720, 885, 723, 887, 888, 886, 667, 889,
/* 290 */ 890, 55, 53, 57, 54, 132, 309, 308, 125, 46,
/* 300 */ 45, 914, 239, 44, 43, 42, 102, 107, 30, 196,
/* 310 */ 664, 73, 96, 106, 112, 115, 105, 24, 217, 36,
/* 320 */ 674, 913, 109, 5, 155, 56, 261, 79, 243, 33,
/* 330 */ 154, 91, 86, 90, 30, 56, 173, 169, 726, 30,
/* 340 */ 70, 30, 171, 168, 120, 119, 118, 12, 726, 279,
/* 350 */ 211, 83, 913, 80, 725, 824, 46, 45, 245, 165,
/* 360 */ 44, 43, 42, 198, 725, 816, 671, 652, 182, 165,
/* 370 */ 649, 719, 650, 722, 651, 280, 1, 153, 913, 716,
/* 380 */ 284, 61, 288, 913, 183, 913, 241, 695, 696, 680,
/* 390 */ 31, 686, 687, 134, 6, 60, 20, 747, 227, 228,
/* 400 */ 728, 19, 638, 62, 19, 263, 31, 640, 265, 31,
/* 410 */ 639, 60, 82, 28, 60, 717, 266, 95, 94, 14,
/* 420 */ 13, 67, 730, 627, 185, 101, 100, 179, 16, 15,
/* 430 */ 979, 656, 654, 657, 655, 114, 113, 130, 128, 186,
/* 440 */ 187, 193, 194, 192, 177, 191, 181, 1026, 915, 978,
/* 450 */ 214, 975, 974, 215, 287, 131, 39, 936, 944, 946,
/* 460 */ 133, 137, 929, 244, 129, 150, 961, 960, 911, 909,
/* 470 */ 149, 679, 246, 151, 204, 152, 653, 250, 258, 827,
/* 480 */ 140, 66, 141, 268, 37, 63, 175, 926, 34, 277,
/* 490 */ 248, 823, 253, 142, 1031, 58, 92, 1030, 1028, 256,
/* 500 */ 156, 143, 281, 1025, 98, 1024, 1022, 254, 157, 845,
/* 510 */ 35, 32, 38, 252, 176, 812, 108, 810, 110, 111,
/* 520 */ 808, 807, 229, 167, 805, 804, 803, 802, 801, 800,
/* 530 */ 170, 172, 797, 795, 793, 791, 789, 174, 247, 242,
/* 540 */ 71, 74, 249, 962, 40, 297, 103, 289, 290, 291,
/* 550 */ 292, 293, 294, 295, 199, 221, 307, 766, 231, 232,
/* 560 */ 267, 765, 234, 235, 764, 200, 238, 87, 88, 752,
/* 570 */ 195, 243, 75, 8, 262, 806, 72, 659, 681, 135,
/* 580 */ 76, 121, 159, 846, 160, 161, 158, 162, 164, 122,
/* 590 */ 163, 799, 2, 123, 880, 124, 798, 790, 684, 144,
/* 600 */ 147, 145, 146, 4, 136, 148, 892, 206, 251, 26,
/* 610 */ 688, 138, 9, 10, 729, 27, 7, 11, 21, 731,
/* 620 */ 22, 85, 264, 591, 587, 83, 585, 584, 583, 580,
/* 630 */ 553, 275, 93, 89, 31, 630, 59, 97, 629, 99,
/* 640 */ 626, 575, 573, 565, 571, 567, 569, 563, 561, 594,
/* 650 */ 593, 592, 590, 589, 588, 586, 582, 581, 60, 551,
/* 660 */ 519, 517, 770, 769, 769, 769, 769, 769, 769, 769,
/* 670 */ 769, 769, 769, 769, 126, 127,
/* 0 */ 133, 552, 202, 312, 206, 140, 941, 17, 85, 553,
/* 10 */ 772, 314, 179, 47, 48, 140, 51, 52, 30, 181,
/* 20 */ 214, 41, 181, 50, 262, 55, 53, 57, 54, 1020,
/* 30 */ 920, 209, 1021, 46, 45, 185, 181, 44, 43, 42,
/* 40 */ 47, 48, 908, 51, 52, 208, 1021, 214, 41, 552,
/* 50 */ 50, 262, 55, 53, 57, 54, 932, 553, 1017, 203,
/* 60 */ 46, 45, 917, 247, 44, 43, 42, 48, 938, 51,
/* 70 */ 52, 242, 972, 214, 41, 552, 50, 262, 55, 53,
/* 80 */ 57, 54, 973, 553, 257, 278, 46, 45, 298, 225,
/* 90 */ 44, 43, 42, 506, 507, 508, 509, 510, 511, 512,
/* 100 */ 513, 514, 515, 516, 517, 518, 313, 631, 1016, 231,
/* 110 */ 70, 552, 30, 47, 48, 1015, 51, 52, 819, 553,
/* 120 */ 214, 41, 166, 50, 262, 55, 53, 57, 54, 44,
/* 130 */ 43, 42, 717, 46, 45, 288, 287, 44, 43, 42,
/* 140 */ 47, 49, 198, 51, 52, 140, 140, 214, 41, 234,
/* 150 */ 50, 262, 55, 53, 57, 54, 916, 238, 237, 227,
/* 160 */ 46, 45, 285, 284, 44, 43, 42, 23, 276, 307,
/* 170 */ 306, 275, 274, 273, 305, 272, 304, 303, 302, 271,
/* 180 */ 301, 300, 880, 30, 868, 869, 870, 871, 872, 873,
/* 190 */ 874, 875, 876, 877, 878, 879, 881, 882, 51, 52,
/* 200 */ 18, 30, 214, 41, 906, 50, 262, 55, 53, 57,
/* 210 */ 54, 259, 79, 78, 25, 46, 45, 190, 199, 44,
/* 220 */ 43, 42, 82, 191, 217, 28, 30, 917, 268, 118,
/* 230 */ 117, 189, 12, 213, 730, 932, 84, 721, 81, 724,
/* 240 */ 74, 727, 218, 213, 730, 917, 80, 721, 36, 724,
/* 250 */ 204, 727, 30, 903, 904, 29, 907, 46, 45, 71,
/* 260 */ 74, 44, 43, 42, 223, 210, 211, 281, 36, 261,
/* 270 */ 917, 23, 914, 307, 306, 210, 211, 723, 305, 726,
/* 280 */ 304, 303, 302, 278, 301, 300, 311, 310, 126, 677,
/* 290 */ 241, 888, 68, 282, 886, 887, 917, 245, 197, 889,
/* 300 */ 219, 891, 892, 890, 670, 893, 894, 55, 53, 57,
/* 310 */ 54, 1, 154, 263, 220, 46, 45, 30, 221, 44,
/* 320 */ 43, 42, 105, 103, 108, 308, 920, 298, 69, 97,
/* 330 */ 107, 113, 116, 106, 224, 655, 56, 280, 652, 110,
/* 340 */ 653, 226, 654, 30, 920, 667, 56, 5, 156, 729,
/* 350 */ 183, 920, 24, 33, 155, 92, 87, 91, 286, 729,
/* 360 */ 905, 917, 174, 170, 719, 728, 228, 229, 172, 169,
/* 370 */ 121, 120, 119, 828, 820, 728, 918, 166, 166, 3,
/* 380 */ 167, 243, 674, 212, 290, 31, 683, 917, 698, 699,
/* 390 */ 135, 689, 690, 750, 731, 60, 20, 19, 19, 722,
/* 400 */ 720, 725, 61, 64, 641, 184, 265, 643, 31, 733,
/* 410 */ 31, 60, 267, 642, 115, 114, 83, 60, 96, 95,
/* 420 */ 186, 14, 13, 65, 62, 180, 187, 6, 102, 101,
/* 430 */ 67, 188, 630, 16, 15, 659, 657, 660, 658, 131,
/* 440 */ 129, 194, 195, 193, 656, 178, 192, 182, 1031, 919,
/* 450 */ 983, 239, 982, 215, 979, 978, 216, 289, 39, 132,
/* 460 */ 940, 948, 950, 130, 134, 933, 138, 246, 965, 964,
/* 470 */ 151, 915, 150, 682, 248, 913, 205, 299, 104, 884,
/* 480 */ 160, 260, 152, 153, 145, 143, 141, 831, 270, 66,
/* 490 */ 250, 930, 63, 255, 37, 176, 34, 279, 58, 142,
/* 500 */ 827, 1036, 93, 1035, 1033, 157, 283, 1030, 99, 1029,
/* 510 */ 1027, 158, 849, 35, 258, 32, 38, 256, 177, 816,
/* 520 */ 109, 814, 111, 112, 254, 812, 811, 230, 168, 252,
/* 530 */ 809, 808, 807, 806, 805, 804, 171, 173, 801, 799,
/* 540 */ 797, 795, 793, 175, 249, 244, 72, 75, 40, 251,
/* 550 */ 966, 291, 292, 293, 294, 295, 296, 297, 309, 200,
/* 560 */ 222, 770, 269, 232, 233, 769, 235, 201, 196, 88,
/* 570 */ 89, 236, 768, 756, 755, 240, 245, 8, 810, 662,
/* 580 */ 122, 161, 123, 165, 163, 803, 850, 159, 162, 164,
/* 590 */ 124, 802, 73, 125, 794, 4, 2, 264, 76, 684,
/* 600 */ 136, 137, 687, 77, 144, 148, 146, 147, 149, 896,
/* 610 */ 207, 253, 26, 691, 139, 27, 9, 732, 10, 7,
/* 620 */ 734, 11, 21, 266, 22, 86, 594, 84, 590, 588,
/* 630 */ 587, 586, 583, 556, 277, 31, 59, 90, 633, 94,
/* 640 */ 632, 629, 578, 98, 100, 576, 568, 574, 570, 572,
/* 650 */ 566, 564, 597, 596, 595, 593, 592, 591, 589, 585,
/* 660 */ 584, 60, 554, 522, 520, 774, 773, 773, 773, 773,
/* 670 */ 773, 773, 773, 773, 773, 773, 773, 127, 128,
};
static const YYCODETYPE yy_lookahead[] = {
/* 0 */ 190, 1, 189, 190, 209, 190, 190, 193, 194, 9,
/* 10 */ 187, 188, 251, 13, 14, 190, 16, 17, 190, 251,
/* 20 */ 20, 21, 251, 23, 24, 25, 26, 27, 28, 261,
/* 30 */ 235, 260, 261, 33, 34, 251, 251, 37, 38, 39,
/* 40 */ 13, 14, 232, 16, 17, 260, 261, 20, 21, 1,
/* 50 */ 23, 24, 25, 26, 27, 28, 233, 9, 251, 231,
/* 60 */ 33, 34, 234, 209, 37, 38, 39, 14, 252, 16,
/* 70 */ 17, 248, 257, 20, 21, 1, 23, 24, 25, 26,
/* 80 */ 27, 28, 257, 9, 259, 209, 33, 34, 79, 235,
/* 0 */ 191, 1, 190, 191, 210, 191, 191, 252, 197, 9,
/* 10 */ 188, 189, 252, 13, 14, 191, 16, 17, 191, 252,
/* 20 */ 20, 21, 252, 23, 24, 25, 26, 27, 28, 262,
/* 30 */ 236, 261, 262, 33, 34, 252, 252, 37, 38, 39,
/* 40 */ 13, 14, 231, 16, 17, 261, 262, 20, 21, 1,
/* 50 */ 23, 24, 25, 26, 27, 28, 234, 9, 252, 232,
/* 60 */ 33, 34, 235, 254, 37, 38, 39, 14, 253, 16,
/* 70 */ 17, 249, 258, 20, 21, 1, 23, 24, 25, 26,
/* 80 */ 27, 28, 258, 9, 260, 79, 33, 34, 81, 67,
/* 90 */ 37, 38, 39, 45, 46, 47, 48, 49, 50, 51,
/* 100 */ 52, 53, 54, 55, 56, 57, 58, 5, 196, 61,
/* 110 */ 110, 235, 251, 13, 14, 190, 16, 17, 81, 190,
/* 120 */ 20, 21, 1, 23, 24, 25, 26, 27, 28, 109,
/* 130 */ 9, 209, 105, 33, 34, 33, 34, 37, 38, 39,
/* 140 */ 13, 14, 230, 16, 17, 67, 251, 20, 21, 129,
/* 150 */ 23, 24, 25, 26, 27, 28, 231, 235, 0, 234,
/* 160 */ 33, 34, 67, 234, 37, 38, 39, 88, 89, 90,
/* 100 */ 52, 53, 54, 55, 56, 57, 58, 5, 252, 61,
/* 110 */ 110, 1, 191, 13, 14, 252, 16, 17, 196, 9,
/* 120 */ 20, 21, 200, 23, 24, 25, 26, 27, 28, 37,
/* 130 */ 38, 39, 105, 33, 34, 33, 34, 37, 38, 39,
/* 140 */ 13, 14, 252, 16, 17, 191, 191, 20, 21, 135,
/* 150 */ 23, 24, 25, 26, 27, 28, 235, 143, 144, 137,
/* 160 */ 33, 34, 140, 141, 37, 38, 39, 88, 89, 90,
/* 170 */ 91, 92, 93, 94, 95, 96, 97, 98, 99, 100,
/* 180 */ 101, 102, 208, 190, 210, 211, 212, 213, 214, 215,
/* 190 */ 216, 217, 218, 219, 220, 221, 222, 223, 16, 17,
/* 200 */ 195, 190, 20, 21, 199, 23, 24, 25, 26, 27,
/* 210 */ 28, 251, 44, 196, 136, 33, 34, 139, 140, 37,
/* 220 */ 38, 39, 1, 2, 233, 104, 5, 196, 7, 61,
/* 230 */ 9, 136, 1, 2, 139, 67, 5, 79, 7, 248,
/* 240 */ 9, 73, 74, 75, 227, 228, 229, 230, 255, 135,
/* 250 */ 257, 37, 38, 39, 33, 34, 142, 143, 37, 228,
/* 260 */ 88, 251, 90, 91, 33, 34, 190, 95, 257, 97,
/* 270 */ 98, 99, 104, 101, 102, 208, 76, 190, 211, 212,
/* 280 */ 112, 81, 5, 216, 7, 218, 219, 220, 37, 222,
/* 290 */ 223, 25, 26, 27, 28, 190, 64, 65, 66, 33,
/* 300 */ 34, 225, 134, 37, 38, 39, 62, 63, 190, 141,
/* 310 */ 109, 104, 68, 69, 70, 71, 72, 116, 231, 112,
/* 320 */ 105, 234, 78, 62, 63, 104, 15, 236, 113, 68,
/* 330 */ 69, 70, 71, 72, 190, 104, 62, 63, 117, 190,
/* 340 */ 249, 190, 68, 69, 70, 71, 72, 104, 117, 231,
/* 350 */ 60, 108, 234, 110, 133, 195, 33, 34, 253, 199,
/* 360 */ 37, 38, 39, 251, 133, 195, 115, 2, 251, 199,
/* 370 */ 5, 5, 7, 7, 9, 231, 197, 198, 234, 1,
/* 380 */ 231, 109, 231, 234, 251, 234, 105, 124, 125, 105,
/* 390 */ 109, 105, 105, 109, 104, 109, 109, 105, 33, 34,
/* 400 */ 105, 109, 105, 131, 109, 105, 109, 105, 105, 109,
/* 410 */ 105, 109, 109, 104, 109, 37, 107, 137, 138, 137,
/* 420 */ 138, 104, 111, 106, 251, 137, 138, 251, 137, 138,
/* 430 */ 226, 5, 5, 7, 7, 76, 77, 62, 63, 251,
/* 440 */ 251, 251, 251, 251, 251, 251, 251, 235, 235, 226,
/* 450 */ 226, 226, 226, 226, 226, 190, 250, 190, 190, 190,
/* 460 */ 190, 190, 233, 233, 60, 190, 258, 258, 233, 190,
/* 470 */ 237, 117, 254, 190, 254, 190, 111, 119, 122, 190,
/* 480 */ 246, 128, 245, 190, 190, 130, 190, 247, 190, 190,
/* 490 */ 254, 190, 254, 244, 190, 127, 190, 190, 190, 126,
/* 500 */ 190, 243, 190, 190, 190, 190, 190, 121, 190, 190,
/* 510 */ 190, 190, 190, 120, 190, 190, 190, 190, 190, 190,
/* 520 */ 190, 190, 190, 190, 190, 190, 190, 190, 190, 190,
/* 530 */ 190, 190, 190, 190, 190, 190, 190, 190, 118, 191,
/* 540 */ 191, 191, 191, 191, 132, 103, 87, 86, 50, 83,
/* 550 */ 85, 54, 84, 82, 191, 191, 79, 5, 144, 5,
/* 560 */ 191, 5, 144, 5, 5, 191, 135, 196, 196, 89,
/* 570 */ 191, 113, 109, 104, 107, 191, 114, 105, 105, 104,
/* 580 */ 104, 192, 205, 207, 201, 204, 206, 202, 200, 192,
/* 590 */ 203, 191, 197, 192, 224, 192, 191, 191, 105, 242,
/* 600 */ 239, 241, 240, 193, 109, 238, 224, 1, 104, 109,
/* 610 */ 105, 104, 123, 123, 105, 109, 104, 104, 104, 111,
/* 620 */ 104, 76, 107, 9, 5, 108, 5, 5, 5, 5,
/* 630 */ 80, 15, 138, 76, 109, 5, 16, 138, 5, 138,
/* 640 */ 105, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* 650 */ 5, 5, 5, 5, 5, 5, 5, 5, 109, 80,
/* 660 */ 60, 59, 0, 262, 262, 262, 262, 262, 262, 262,
/* 670 */ 262, 262, 262, 262, 21, 21, 262, 262, 262, 262,
/* 680 */ 262, 262, 262, 262, 262, 262, 262, 262, 262, 262,
/* 690 */ 262, 262, 262, 262, 262, 262, 262, 262, 262, 262,
/* 700 */ 262, 262, 262, 262, 262, 262, 262, 262, 262, 262,
/* 710 */ 262, 262, 262, 262, 262, 262, 262, 262, 262, 262,
/* 720 */ 262, 262, 262, 262, 262, 262, 262, 262, 262, 262,
/* 730 */ 262, 262, 262, 262, 262, 262, 262, 262, 262, 262,
/* 740 */ 262, 262, 262, 262, 262, 262, 262, 262, 262, 262,
/* 750 */ 262, 262, 262, 262, 262, 262, 262, 262, 262, 262,
/* 760 */ 262, 262, 262, 262, 262, 262, 262, 262, 262, 262,
/* 770 */ 262, 262, 262, 262, 262, 262, 262, 262, 262, 262,
/* 780 */ 262, 262, 262, 262, 262, 262, 262, 262, 262, 262,
/* 790 */ 262, 262, 262, 262, 262, 262, 262, 262, 262, 262,
/* 800 */ 262, 262, 262, 262, 262, 262, 262, 262, 262, 262,
/* 810 */ 262, 262, 262, 262, 262, 262, 262, 262, 262, 262,
/* 820 */ 262, 262, 262, 262, 262, 262, 262, 262, 262, 262,
/* 830 */ 262, 262, 262, 262, 262, 262, 262, 262, 262, 262,
/* 840 */ 262, 262, 262, 262, 262, 262, 262, 262, 262, 262,
/* 850 */ 262, 262, 262, 262, 262, 262, 262, 262, 262, 262,
/* 860 */ 262, 262,
/* 180 */ 101, 102, 209, 191, 211, 212, 213, 214, 215, 216,
/* 190 */ 217, 218, 219, 220, 221, 222, 223, 224, 16, 17,
/* 200 */ 44, 191, 20, 21, 0, 23, 24, 25, 26, 27,
/* 210 */ 28, 256, 258, 258, 104, 33, 34, 61, 252, 37,
/* 220 */ 38, 39, 197, 67, 232, 104, 191, 235, 107, 73,
/* 230 */ 74, 75, 104, 1, 2, 234, 108, 5, 110, 7,
/* 240 */ 104, 9, 232, 1, 2, 235, 237, 5, 112, 7,
/* 250 */ 249, 9, 191, 228, 229, 230, 231, 33, 34, 250,
/* 260 */ 104, 37, 38, 39, 67, 33, 34, 232, 112, 37,
/* 270 */ 235, 88, 191, 90, 91, 33, 34, 5, 95, 7,
/* 280 */ 97, 98, 99, 79, 101, 102, 64, 65, 66, 105,
/* 290 */ 134, 209, 136, 232, 212, 213, 235, 113, 142, 217,
/* 300 */ 210, 219, 220, 221, 37, 223, 224, 25, 26, 27,
/* 310 */ 28, 198, 199, 15, 233, 33, 34, 191, 210, 37,
/* 320 */ 38, 39, 76, 62, 63, 210, 236, 81, 197, 68,
/* 330 */ 69, 70, 71, 72, 137, 2, 104, 140, 5, 78,
/* 340 */ 7, 191, 9, 191, 236, 109, 104, 62, 63, 117,
/* 350 */ 252, 236, 116, 68, 69, 70, 71, 72, 232, 117,
/* 360 */ 229, 235, 62, 63, 1, 133, 33, 34, 68, 69,
/* 370 */ 70, 71, 72, 196, 196, 133, 226, 200, 200, 194,
/* 380 */ 195, 105, 115, 60, 232, 109, 105, 235, 124, 125,
/* 390 */ 109, 105, 105, 105, 105, 109, 109, 109, 109, 5,
/* 400 */ 37, 7, 109, 109, 105, 252, 105, 105, 109, 111,
/* 410 */ 109, 109, 105, 105, 76, 77, 109, 109, 138, 139,
/* 420 */ 252, 138, 139, 129, 131, 252, 252, 104, 138, 139,
/* 430 */ 104, 252, 106, 138, 139, 5, 5, 7, 7, 62,
/* 440 */ 63, 252, 252, 252, 111, 252, 252, 252, 236, 236,
/* 450 */ 227, 191, 227, 227, 227, 227, 227, 227, 251, 191,
/* 460 */ 191, 191, 191, 60, 191, 234, 191, 234, 259, 259,
/* 470 */ 191, 234, 238, 117, 255, 191, 255, 103, 87, 225,
/* 480 */ 206, 122, 191, 191, 243, 245, 247, 191, 191, 128,
/* 490 */ 255, 248, 130, 255, 191, 191, 191, 191, 127, 246,
/* 500 */ 191, 191, 191, 191, 191, 191, 191, 191, 191, 191,
/* 510 */ 191, 191, 191, 191, 126, 191, 191, 121, 191, 191,
/* 520 */ 191, 191, 191, 191, 120, 191, 191, 191, 191, 119,
/* 530 */ 191, 191, 191, 191, 191, 191, 191, 191, 191, 191,
/* 540 */ 191, 191, 191, 191, 118, 192, 192, 192, 132, 192,
/* 550 */ 192, 86, 50, 83, 85, 54, 84, 82, 79, 192,
/* 560 */ 192, 5, 192, 145, 5, 5, 145, 192, 192, 197,
/* 570 */ 197, 5, 5, 90, 89, 135, 113, 104, 192, 105,
/* 580 */ 193, 202, 193, 201, 203, 192, 208, 207, 205, 204,
/* 590 */ 193, 192, 114, 193, 192, 194, 198, 107, 109, 105,
/* 600 */ 104, 109, 105, 104, 244, 240, 242, 241, 239, 225,
/* 610 */ 1, 104, 109, 105, 104, 109, 123, 105, 123, 104,
/* 620 */ 111, 104, 104, 107, 104, 76, 9, 108, 5, 5,
/* 630 */ 5, 5, 5, 80, 15, 109, 16, 76, 5, 139,
/* 640 */ 5, 105, 5, 139, 139, 5, 5, 5, 5, 5,
/* 650 */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* 660 */ 5, 109, 80, 60, 59, 0, 263, 263, 263, 263,
/* 670 */ 263, 263, 263, 263, 263, 263, 263, 21, 21, 263,
/* 680 */ 263, 263, 263, 263, 263, 263, 263, 263, 263, 263,
/* 690 */ 263, 263, 263, 263, 263, 263, 263, 263, 263, 263,
/* 700 */ 263, 263, 263, 263, 263, 263, 263, 263, 263, 263,
/* 710 */ 263, 263, 263, 263, 263, 263, 263, 263, 263, 263,
/* 720 */ 263, 263, 263, 263, 263, 263, 263, 263, 263, 263,
/* 730 */ 263, 263, 263, 263, 263, 263, 263, 263, 263, 263,
/* 740 */ 263, 263, 263, 263, 263, 263, 263, 263, 263, 263,
/* 750 */ 263, 263, 263, 263, 263, 263, 263, 263, 263, 263,
/* 760 */ 263, 263, 263, 263, 263, 263, 263, 263, 263, 263,
/* 770 */ 263, 263, 263, 263, 263, 263, 263, 263, 263, 263,
/* 780 */ 263, 263, 263, 263, 263, 263, 263, 263, 263, 263,
/* 790 */ 263, 263, 263, 263, 263, 263, 263, 263, 263, 263,
/* 800 */ 263, 263, 263, 263, 263, 263, 263, 263, 263, 263,
/* 810 */ 263, 263, 263, 263, 263, 263, 263, 263, 263, 263,
/* 820 */ 263, 263, 263, 263, 263, 263, 263, 263, 263, 263,
/* 830 */ 263, 263, 263, 263, 263, 263, 263, 263, 263, 263,
/* 840 */ 263, 263, 263, 263, 263, 263, 263, 263, 263, 263,
/* 850 */ 263, 263, 263, 263, 263, 263, 263, 263, 263, 263,
/* 860 */ 263, 263, 263, 263, 263, 263,
};
#define YY_SHIFT_COUNT (312)
#define YY_SHIFT_COUNT (314)
#define YY_SHIFT_MIN (0)
#define YY_SHIFT_MAX (662)
#define YY_SHIFT_MAX (665)
static const unsigned short int yy_shift_ofst[] = {
/* 0 */ 168, 79, 79, 172, 172, 9, 221, 231, 74, 74,
/* 10 */ 74, 74, 74, 74, 74, 74, 74, 0, 48, 231,
/* 20 */ 365, 365, 365, 365, 121, 207, 74, 74, 74, 158,
/* 30 */ 74, 74, 200, 9, 37, 37, 676, 676, 676, 231,
/* 40 */ 231, 231, 231, 231, 231, 231, 231, 231, 231, 231,
/* 50 */ 231, 231, 231, 231, 231, 231, 231, 231, 231, 365,
/* 60 */ 365, 102, 102, 102, 102, 102, 102, 102, 74, 74,
/* 70 */ 251, 74, 207, 207, 74, 74, 74, 263, 263, 201,
/* 80 */ 207, 74, 74, 74, 74, 74, 74, 74, 74, 74,
/* 0 */ 156, 79, 79, 183, 183, 6, 232, 242, 74, 74,
/* 10 */ 74, 74, 74, 74, 74, 74, 74, 0, 48, 242,
/* 20 */ 333, 333, 333, 333, 110, 136, 74, 74, 74, 204,
/* 30 */ 74, 74, 246, 6, 7, 7, 679, 679, 679, 242,
/* 40 */ 242, 242, 242, 242, 242, 242, 242, 242, 242, 242,
/* 50 */ 242, 242, 242, 242, 242, 242, 242, 242, 242, 333,
/* 60 */ 333, 102, 102, 102, 102, 102, 102, 102, 74, 74,
/* 70 */ 74, 267, 74, 136, 136, 74, 74, 74, 264, 264,
/* 80 */ 236, 136, 74, 74, 74, 74, 74, 74, 74, 74,
/* 90 */ 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
/* 100 */ 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
/* 110 */ 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
/* 120 */ 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
/* 130 */ 74, 404, 404, 404, 354, 354, 354, 404, 354, 404,
/* 140 */ 353, 355, 368, 356, 373, 386, 393, 358, 420, 412,
/* 150 */ 404, 404, 404, 442, 9, 9, 404, 404, 459, 461,
/* 160 */ 498, 466, 465, 497, 468, 471, 442, 404, 477, 477,
/* 170 */ 404, 477, 404, 477, 404, 676, 676, 27, 100, 127,
/* 180 */ 100, 100, 53, 182, 266, 266, 266, 266, 244, 261,
/* 190 */ 274, 323, 323, 323, 323, 78, 114, 214, 214, 243,
/* 200 */ 95, 232, 281, 215, 284, 286, 287, 292, 295, 277,
/* 210 */ 366, 378, 290, 311, 272, 20, 297, 300, 302, 303,
/* 220 */ 305, 309, 280, 282, 288, 317, 291, 426, 427, 359,
/* 230 */ 375, 552, 414, 554, 556, 418, 558, 559, 480, 431,
/* 240 */ 458, 467, 469, 462, 472, 463, 473, 475, 493, 495,
/* 250 */ 476, 606, 504, 505, 507, 500, 489, 506, 490, 509,
/* 260 */ 512, 508, 513, 467, 514, 515, 516, 517, 545, 614,
/* 270 */ 619, 621, 622, 623, 624, 550, 616, 557, 494, 525,
/* 280 */ 525, 620, 499, 501, 525, 630, 633, 535, 525, 636,
/* 290 */ 637, 638, 639, 640, 641, 642, 643, 644, 645, 646,
/* 300 */ 647, 648, 649, 650, 651, 652, 549, 579, 653, 654,
/* 310 */ 600, 602, 662,
/* 130 */ 74, 74, 403, 403, 403, 356, 356, 356, 403, 356,
/* 140 */ 403, 361, 362, 371, 359, 388, 396, 404, 410, 426,
/* 150 */ 416, 403, 403, 403, 374, 6, 6, 403, 403, 391,
/* 160 */ 465, 502, 470, 469, 501, 472, 475, 374, 403, 479,
/* 170 */ 479, 403, 479, 403, 479, 403, 679, 679, 27, 100,
/* 180 */ 127, 100, 100, 53, 182, 282, 282, 282, 282, 261,
/* 190 */ 285, 300, 224, 224, 224, 224, 22, 14, 92, 92,
/* 200 */ 128, 197, 222, 276, 184, 281, 286, 287, 288, 289,
/* 210 */ 272, 394, 363, 323, 298, 293, 294, 299, 301, 302,
/* 220 */ 307, 308, 121, 280, 283, 290, 326, 295, 430, 431,
/* 230 */ 338, 377, 556, 418, 559, 560, 421, 566, 567, 483,
/* 240 */ 485, 440, 463, 490, 473, 478, 474, 489, 494, 496,
/* 250 */ 497, 492, 499, 609, 507, 508, 510, 503, 493, 506,
/* 260 */ 495, 512, 515, 509, 517, 490, 518, 516, 520, 519,
/* 270 */ 549, 617, 623, 624, 625, 626, 627, 553, 619, 561,
/* 280 */ 500, 526, 526, 620, 504, 505, 526, 633, 635, 536,
/* 290 */ 526, 637, 640, 641, 642, 643, 644, 645, 646, 647,
/* 300 */ 648, 649, 650, 651, 652, 653, 654, 655, 552, 582,
/* 310 */ 656, 657, 603, 605, 665,
};
#define YY_REDUCE_COUNT (176)
#define YY_REDUCE_MIN (-239)
#define YY_REDUCE_MAX (410)
#define YY_REDUCE_COUNT (177)
#define YY_REDUCE_MIN (-245)
#define YY_REDUCE_MAX (402)
static const short yy_reduce_ofst[] = {
/* 0 */ -177, -26, -26, 67, 67, 17, -229, -215, -172, -175,
/* 10 */ -7, -75, 87, 118, 144, 149, 151, -184, -187, -232,
/* 20 */ -205, -146, -124, -78, 105, -9, -185, 11, -190, -88,
/* 30 */ 76, -71, 5, 31, 160, 170, 91, 179, -186, -239,
/* 40 */ -216, -193, -139, -105, -40, 10, 112, 117, 133, 173,
/* 50 */ 176, 188, 189, 190, 191, 192, 193, 194, 195, 212,
/* 60 */ 213, 204, 223, 224, 225, 226, 227, 228, 265, 267,
/* 70 */ 206, 268, 229, 230, 269, 270, 271, 208, 209, 233,
/* 80 */ 235, 275, 279, 283, 285, 289, 293, 294, 296, 298,
/* 90 */ 299, 301, 304, 306, 307, 308, 310, 312, 313, 314,
/* 100 */ 315, 316, 318, 319, 320, 321, 322, 324, 325, 326,
/* 110 */ 327, 328, 329, 330, 331, 332, 333, 334, 335, 336,
/* 120 */ 337, 338, 339, 340, 341, 342, 343, 344, 345, 346,
/* 130 */ 347, 348, 349, 350, 218, 220, 236, 351, 238, 352,
/* 140 */ 240, 234, 237, 249, 258, 357, 360, 362, 361, 367,
/* 150 */ 363, 364, 369, 370, 371, 372, 374, 379, 376, 380,
/* 160 */ 377, 383, 381, 385, 387, 388, 382, 384, 389, 397,
/* 170 */ 400, 401, 405, 403, 406, 395, 410,
/* 0 */ -178, -27, -27, 82, 82, 25, -230, -216, -173, -176,
/* 10 */ -45, -8, 10, 35, 61, 126, 152, -185, -188, -233,
/* 20 */ -206, 90, 108, 115, -191, 1, -186, -46, 81, -189,
/* 30 */ 150, -79, -78, 131, 177, 178, 9, 113, 185, -245,
/* 40 */ -240, -217, -194, -144, -137, -110, -34, 98, 153, 168,
/* 50 */ 173, 174, 179, 189, 190, 191, 193, 194, 195, 212,
/* 60 */ 213, 223, 225, 226, 227, 228, 229, 230, 260, 268,
/* 70 */ 269, 207, 270, 231, 233, 271, 273, 275, 209, 210,
/* 80 */ 234, 237, 279, 284, 291, 292, 296, 297, 303, 304,
/* 90 */ 305, 306, 309, 310, 311, 312, 313, 314, 315, 316,
/* 100 */ 317, 318, 319, 320, 321, 322, 324, 325, 327, 328,
/* 110 */ 329, 330, 331, 332, 334, 335, 336, 337, 339, 340,
/* 120 */ 341, 342, 343, 344, 345, 346, 347, 348, 349, 350,
/* 130 */ 351, 352, 353, 354, 355, 219, 221, 235, 357, 238,
/* 140 */ 358, 243, 239, 253, 240, 360, 241, 364, 366, 365,
/* 150 */ 369, 367, 368, 370, 254, 372, 373, 375, 376, 378,
/* 160 */ 380, 274, 379, 383, 381, 385, 382, 384, 386, 387,
/* 170 */ 389, 393, 397, 399, 400, 402, 398, 401,
};
static const YYACTIONTYPE yy_default[] = {
/* 0 */ 767, 879, 825, 891, 813, 822, 1019, 1019, 767, 767,
/* 10 */ 767, 767, 767, 767, 767, 767, 767, 938, 786, 1019,
/* 20 */ 767, 767, 767, 767, 767, 767, 767, 767, 767, 822,
/* 30 */ 767, 767, 828, 822, 828, 828, 933, 863, 881, 767,
/* 40 */ 767, 767, 767, 767, 767, 767, 767, 767, 767, 767,
/* 50 */ 767, 767, 767, 767, 767, 767, 767, 767, 767, 767,
/* 60 */ 767, 767, 767, 767, 767, 767, 767, 767, 767, 767,
/* 70 */ 940, 943, 767, 767, 945, 767, 767, 965, 965, 931,
/* 80 */ 767, 767, 767, 767, 767, 767, 767, 767, 767, 767,
/* 90 */ 767, 767, 767, 767, 767, 767, 767, 767, 767, 767,
/* 100 */ 767, 767, 767, 767, 767, 767, 767, 767, 811, 767,
/* 110 */ 809, 767, 767, 767, 767, 767, 767, 767, 767, 767,
/* 120 */ 767, 767, 767, 767, 767, 796, 767, 767, 767, 767,
/* 130 */ 767, 788, 788, 788, 767, 767, 767, 788, 767, 788,
/* 140 */ 972, 976, 970, 958, 966, 957, 953, 951, 950, 980,
/* 150 */ 788, 788, 788, 826, 822, 822, 788, 788, 844, 842,
/* 160 */ 840, 832, 838, 834, 836, 830, 814, 788, 820, 820,
/* 170 */ 788, 820, 788, 820, 788, 863, 881, 767, 981, 767,
/* 180 */ 1018, 971, 1008, 1007, 1014, 1006, 1005, 1004, 767, 767,
/* 190 */ 767, 1000, 1001, 1003, 1002, 767, 767, 1010, 1009, 767,
/* 200 */ 767, 767, 767, 767, 767, 767, 767, 767, 767, 767,
/* 210 */ 767, 767, 983, 767, 977, 973, 767, 767, 767, 767,
/* 220 */ 767, 767, 767, 767, 767, 893, 767, 767, 767, 767,
/* 230 */ 767, 767, 767, 767, 767, 767, 767, 767, 767, 767,
/* 240 */ 930, 767, 767, 767, 767, 941, 767, 767, 767, 767,
/* 250 */ 767, 767, 767, 767, 767, 967, 767, 959, 767, 767,
/* 260 */ 767, 767, 767, 905, 767, 767, 767, 767, 767, 767,
/* 270 */ 767, 767, 767, 767, 767, 767, 767, 767, 767, 1029,
/* 280 */ 1027, 767, 767, 767, 1023, 767, 767, 767, 1021, 767,
/* 290 */ 767, 767, 767, 767, 767, 767, 767, 767, 767, 767,
/* 300 */ 767, 767, 767, 767, 767, 767, 847, 767, 794, 792,
/* 310 */ 767, 784, 767,
/* 0 */ 771, 883, 829, 895, 817, 826, 1023, 1023, 771, 771,
/* 10 */ 771, 771, 771, 771, 771, 771, 771, 942, 790, 1023,
/* 20 */ 771, 771, 771, 771, 771, 771, 771, 771, 771, 826,
/* 30 */ 771, 771, 832, 826, 832, 832, 937, 867, 885, 771,
/* 40 */ 771, 771, 771, 771, 771, 771, 771, 771, 771, 771,
/* 50 */ 771, 771, 771, 771, 771, 771, 771, 771, 771, 771,
/* 60 */ 771, 771, 771, 771, 771, 771, 771, 771, 771, 771,
/* 70 */ 771, 944, 947, 771, 771, 949, 771, 771, 969, 969,
/* 80 */ 935, 771, 771, 771, 771, 771, 771, 771, 771, 771,
/* 90 */ 771, 771, 771, 771, 771, 771, 771, 771, 771, 771,
/* 100 */ 771, 771, 771, 771, 771, 771, 771, 771, 771, 815,
/* 110 */ 771, 813, 771, 771, 771, 771, 771, 771, 771, 771,
/* 120 */ 771, 771, 771, 771, 771, 771, 800, 771, 771, 771,
/* 130 */ 771, 771, 792, 792, 792, 771, 771, 771, 792, 771,
/* 140 */ 792, 976, 980, 974, 962, 970, 961, 957, 955, 954,
/* 150 */ 984, 792, 792, 792, 830, 826, 826, 792, 792, 848,
/* 160 */ 846, 844, 836, 842, 838, 840, 834, 818, 792, 824,
/* 170 */ 824, 792, 824, 792, 824, 792, 867, 885, 771, 985,
/* 180 */ 771, 1022, 975, 1012, 1011, 1018, 1010, 1009, 1008, 771,
/* 190 */ 771, 771, 1004, 1005, 1007, 1006, 771, 771, 1014, 1013,
/* 200 */ 771, 771, 771, 771, 771, 771, 771, 771, 771, 771,
/* 210 */ 771, 771, 771, 987, 771, 981, 977, 771, 771, 771,
/* 220 */ 771, 771, 771, 771, 771, 771, 897, 771, 771, 771,
/* 230 */ 771, 771, 771, 771, 771, 771, 771, 771, 771, 771,
/* 240 */ 771, 771, 934, 771, 771, 771, 771, 945, 771, 771,
/* 250 */ 771, 771, 771, 771, 771, 771, 771, 971, 771, 963,
/* 260 */ 771, 771, 771, 771, 771, 909, 771, 771, 771, 771,
/* 270 */ 771, 771, 771, 771, 771, 771, 771, 771, 771, 771,
/* 280 */ 771, 1034, 1032, 771, 771, 771, 1028, 771, 771, 771,
/* 290 */ 1026, 771, 771, 771, 771, 771, 771, 771, 771, 771,
/* 300 */ 771, 771, 771, 771, 771, 771, 771, 771, 851, 771,
/* 310 */ 798, 796, 771, 788, 771,
};
/********** End of lemon-generated parsing tables *****************************/
......@@ -612,6 +612,7 @@ static const YYCODETYPE yyFallback[] = {
1, /* NOW => ID */
0, /* RESET => nothing */
0, /* QUERY => nothing */
0, /* SYNCDB => nothing */
0, /* ADD => nothing */
0, /* COLUMN => nothing */
0, /* TAG => nothing */
......@@ -884,132 +885,133 @@ static const char *const yyTokenName[] = {
/* 133 */ "NOW",
/* 134 */ "RESET",
/* 135 */ "QUERY",
/* 136 */ "ADD",
/* 137 */ "COLUMN",
/* 138 */ "TAG",
/* 139 */ "CHANGE",
/* 140 */ "SET",
/* 141 */ "KILL",
/* 142 */ "CONNECTION",
/* 143 */ "STREAM",
/* 144 */ "COLON",
/* 145 */ "ABORT",
/* 146 */ "AFTER",
/* 147 */ "ATTACH",
/* 148 */ "BEFORE",
/* 149 */ "BEGIN",
/* 150 */ "CASCADE",
/* 151 */ "CLUSTER",
/* 152 */ "CONFLICT",
/* 153 */ "COPY",
/* 154 */ "DEFERRED",
/* 155 */ "DELIMITERS",
/* 156 */ "DETACH",
/* 157 */ "EACH",
/* 158 */ "END",
/* 159 */ "EXPLAIN",
/* 160 */ "FAIL",
/* 161 */ "FOR",
/* 162 */ "IGNORE",
/* 163 */ "IMMEDIATE",
/* 164 */ "INITIALLY",
/* 165 */ "INSTEAD",
/* 166 */ "MATCH",
/* 167 */ "KEY",
/* 168 */ "OF",
/* 169 */ "RAISE",
/* 170 */ "REPLACE",
/* 171 */ "RESTRICT",
/* 172 */ "ROW",
/* 173 */ "STATEMENT",
/* 174 */ "TRIGGER",
/* 175 */ "VIEW",
/* 176 */ "SEMI",
/* 177 */ "NONE",
/* 178 */ "PREV",
/* 179 */ "LINEAR",
/* 180 */ "IMPORT",
/* 181 */ "TBNAME",
/* 182 */ "JOIN",
/* 183 */ "INSERT",
/* 184 */ "INTO",
/* 185 */ "VALUES",
/* 186 */ "error",
/* 187 */ "program",
/* 188 */ "cmd",
/* 189 */ "dbPrefix",
/* 190 */ "ids",
/* 191 */ "cpxName",
/* 192 */ "ifexists",
/* 193 */ "alter_db_optr",
/* 194 */ "alter_topic_optr",
/* 195 */ "acct_optr",
/* 196 */ "ifnotexists",
/* 197 */ "db_optr",
/* 198 */ "topic_optr",
/* 199 */ "pps",
/* 200 */ "tseries",
/* 201 */ "dbs",
/* 202 */ "streams",
/* 203 */ "storage",
/* 204 */ "qtime",
/* 205 */ "users",
/* 206 */ "conns",
/* 207 */ "state",
/* 208 */ "keep",
/* 209 */ "tagitemlist",
/* 210 */ "cache",
/* 211 */ "replica",
/* 212 */ "quorum",
/* 213 */ "days",
/* 214 */ "minrows",
/* 215 */ "maxrows",
/* 216 */ "blocks",
/* 217 */ "ctime",
/* 218 */ "wal",
/* 219 */ "fsync",
/* 220 */ "comp",
/* 221 */ "prec",
/* 222 */ "update",
/* 223 */ "cachelast",
/* 224 */ "partitions",
/* 225 */ "typename",
/* 226 */ "signed",
/* 227 */ "create_table_args",
/* 228 */ "create_stable_args",
/* 229 */ "create_table_list",
/* 230 */ "create_from_stable",
/* 231 */ "columnlist",
/* 232 */ "tagNamelist",
/* 233 */ "select",
/* 234 */ "column",
/* 235 */ "tagitem",
/* 236 */ "selcollist",
/* 237 */ "from",
/* 238 */ "where_opt",
/* 239 */ "interval_opt",
/* 240 */ "session_option",
/* 241 */ "fill_opt",
/* 242 */ "sliding_opt",
/* 243 */ "groupby_opt",
/* 244 */ "orderby_opt",
/* 245 */ "having_opt",
/* 246 */ "slimit_opt",
/* 247 */ "limit_opt",
/* 248 */ "union",
/* 249 */ "sclp",
/* 250 */ "distinct",
/* 251 */ "expr",
/* 252 */ "as",
/* 253 */ "tablelist",
/* 254 */ "tmvar",
/* 255 */ "sortlist",
/* 256 */ "sortitem",
/* 257 */ "item",
/* 258 */ "sortorder",
/* 259 */ "grouplist",
/* 260 */ "exprlist",
/* 261 */ "expritem",
/* 136 */ "SYNCDB",
/* 137 */ "ADD",
/* 138 */ "COLUMN",
/* 139 */ "TAG",
/* 140 */ "CHANGE",
/* 141 */ "SET",
/* 142 */ "KILL",
/* 143 */ "CONNECTION",
/* 144 */ "STREAM",
/* 145 */ "COLON",
/* 146 */ "ABORT",
/* 147 */ "AFTER",
/* 148 */ "ATTACH",
/* 149 */ "BEFORE",
/* 150 */ "BEGIN",
/* 151 */ "CASCADE",
/* 152 */ "CLUSTER",
/* 153 */ "CONFLICT",
/* 154 */ "COPY",
/* 155 */ "DEFERRED",
/* 156 */ "DELIMITERS",
/* 157 */ "DETACH",
/* 158 */ "EACH",
/* 159 */ "END",
/* 160 */ "EXPLAIN",
/* 161 */ "FAIL",
/* 162 */ "FOR",
/* 163 */ "IGNORE",
/* 164 */ "IMMEDIATE",
/* 165 */ "INITIALLY",
/* 166 */ "INSTEAD",
/* 167 */ "MATCH",
/* 168 */ "KEY",
/* 169 */ "OF",
/* 170 */ "RAISE",
/* 171 */ "REPLACE",
/* 172 */ "RESTRICT",
/* 173 */ "ROW",
/* 174 */ "STATEMENT",
/* 175 */ "TRIGGER",
/* 176 */ "VIEW",
/* 177 */ "SEMI",
/* 178 */ "NONE",
/* 179 */ "PREV",
/* 180 */ "LINEAR",
/* 181 */ "IMPORT",
/* 182 */ "TBNAME",
/* 183 */ "JOIN",
/* 184 */ "INSERT",
/* 185 */ "INTO",
/* 186 */ "VALUES",
/* 187 */ "error",
/* 188 */ "program",
/* 189 */ "cmd",
/* 190 */ "dbPrefix",
/* 191 */ "ids",
/* 192 */ "cpxName",
/* 193 */ "ifexists",
/* 194 */ "alter_db_optr",
/* 195 */ "alter_topic_optr",
/* 196 */ "acct_optr",
/* 197 */ "ifnotexists",
/* 198 */ "db_optr",
/* 199 */ "topic_optr",
/* 200 */ "pps",
/* 201 */ "tseries",
/* 202 */ "dbs",
/* 203 */ "streams",
/* 204 */ "storage",
/* 205 */ "qtime",
/* 206 */ "users",
/* 207 */ "conns",
/* 208 */ "state",
/* 209 */ "keep",
/* 210 */ "tagitemlist",
/* 211 */ "cache",
/* 212 */ "replica",
/* 213 */ "quorum",
/* 214 */ "days",
/* 215 */ "minrows",
/* 216 */ "maxrows",
/* 217 */ "blocks",
/* 218 */ "ctime",
/* 219 */ "wal",
/* 220 */ "fsync",
/* 221 */ "comp",
/* 222 */ "prec",
/* 223 */ "update",
/* 224 */ "cachelast",
/* 225 */ "partitions",
/* 226 */ "typename",
/* 227 */ "signed",
/* 228 */ "create_table_args",
/* 229 */ "create_stable_args",
/* 230 */ "create_table_list",
/* 231 */ "create_from_stable",
/* 232 */ "columnlist",
/* 233 */ "tagNamelist",
/* 234 */ "select",
/* 235 */ "column",
/* 236 */ "tagitem",
/* 237 */ "selcollist",
/* 238 */ "from",
/* 239 */ "where_opt",
/* 240 */ "interval_opt",
/* 241 */ "session_option",
/* 242 */ "fill_opt",
/* 243 */ "sliding_opt",
/* 244 */ "groupby_opt",
/* 245 */ "orderby_opt",
/* 246 */ "having_opt",
/* 247 */ "slimit_opt",
/* 248 */ "limit_opt",
/* 249 */ "union",
/* 250 */ "sclp",
/* 251 */ "distinct",
/* 252 */ "expr",
/* 253 */ "as",
/* 254 */ "tablelist",
/* 255 */ "tmvar",
/* 256 */ "sortlist",
/* 257 */ "sortitem",
/* 258 */ "item",
/* 259 */ "sortorder",
/* 260 */ "grouplist",
/* 261 */ "exprlist",
/* 262 */ "expritem",
};
#endif /* defined(YYCOVERAGE) || !defined(NDEBUG) */
......@@ -1268,20 +1270,21 @@ static const char *const yyRuleName[] = {
/* 248 */ "expritem ::= expr",
/* 249 */ "expritem ::=",
/* 250 */ "cmd ::= RESET QUERY CACHE",
/* 251 */ "cmd ::= ALTER TABLE ids cpxName ADD COLUMN columnlist",
/* 252 */ "cmd ::= ALTER TABLE ids cpxName DROP COLUMN ids",
/* 253 */ "cmd ::= ALTER TABLE ids cpxName ADD TAG columnlist",
/* 254 */ "cmd ::= ALTER TABLE ids cpxName DROP TAG ids",
/* 255 */ "cmd ::= ALTER TABLE ids cpxName CHANGE TAG ids ids",
/* 256 */ "cmd ::= ALTER TABLE ids cpxName SET TAG ids EQ tagitem",
/* 257 */ "cmd ::= ALTER STABLE ids cpxName ADD COLUMN columnlist",
/* 258 */ "cmd ::= ALTER STABLE ids cpxName DROP COLUMN ids",
/* 259 */ "cmd ::= ALTER STABLE ids cpxName ADD TAG columnlist",
/* 260 */ "cmd ::= ALTER STABLE ids cpxName DROP TAG ids",
/* 261 */ "cmd ::= ALTER STABLE ids cpxName CHANGE TAG ids ids",
/* 262 */ "cmd ::= KILL CONNECTION INTEGER",
/* 263 */ "cmd ::= KILL STREAM INTEGER COLON INTEGER",
/* 264 */ "cmd ::= KILL QUERY INTEGER COLON INTEGER",
/* 251 */ "cmd ::= SYNCDB ids REPLICA",
/* 252 */ "cmd ::= ALTER TABLE ids cpxName ADD COLUMN columnlist",
/* 253 */ "cmd ::= ALTER TABLE ids cpxName DROP COLUMN ids",
/* 254 */ "cmd ::= ALTER TABLE ids cpxName ADD TAG columnlist",
/* 255 */ "cmd ::= ALTER TABLE ids cpxName DROP TAG ids",
/* 256 */ "cmd ::= ALTER TABLE ids cpxName CHANGE TAG ids ids",
/* 257 */ "cmd ::= ALTER TABLE ids cpxName SET TAG ids EQ tagitem",
/* 258 */ "cmd ::= ALTER STABLE ids cpxName ADD COLUMN columnlist",
/* 259 */ "cmd ::= ALTER STABLE ids cpxName DROP COLUMN ids",
/* 260 */ "cmd ::= ALTER STABLE ids cpxName ADD TAG columnlist",
/* 261 */ "cmd ::= ALTER STABLE ids cpxName DROP TAG ids",
/* 262 */ "cmd ::= ALTER STABLE ids cpxName CHANGE TAG ids ids",
/* 263 */ "cmd ::= KILL CONNECTION INTEGER",
/* 264 */ "cmd ::= KILL STREAM INTEGER COLON INTEGER",
/* 265 */ "cmd ::= KILL QUERY INTEGER COLON INTEGER",
};
#endif /* NDEBUG */
......@@ -1402,52 +1405,52 @@ static void yy_destructor(
** inside the C code.
*/
/********* Begin destructor definitions ***************************************/
case 208: /* keep */
case 209: /* tagitemlist */
case 231: /* columnlist */
case 232: /* tagNamelist */
case 241: /* fill_opt */
case 243: /* groupby_opt */
case 244: /* orderby_opt */
case 255: /* sortlist */
case 259: /* grouplist */
case 209: /* keep */
case 210: /* tagitemlist */
case 232: /* columnlist */
case 233: /* tagNamelist */
case 242: /* fill_opt */
case 244: /* groupby_opt */
case 245: /* orderby_opt */
case 256: /* sortlist */
case 260: /* grouplist */
{
taosArrayDestroy((yypminor->yy429));
taosArrayDestroy((yypminor->yy159));
}
break;
case 229: /* create_table_list */
case 230: /* create_table_list */
{
destroyCreateTableSql((yypminor->yy194));
destroyCreateTableSql((yypminor->yy14));
}
break;
case 233: /* select */
case 234: /* select */
{
destroyQuerySqlNode((yypminor->yy254));
destroyQuerySqlNode((yypminor->yy272));
}
break;
case 236: /* selcollist */
case 249: /* sclp */
case 260: /* exprlist */
case 237: /* selcollist */
case 250: /* sclp */
case 261: /* exprlist */
{
tSqlExprListDestroy((yypminor->yy429));
tSqlExprListDestroy((yypminor->yy159));
}
break;
case 238: /* where_opt */
case 245: /* having_opt */
case 251: /* expr */
case 261: /* expritem */
case 239: /* where_opt */
case 246: /* having_opt */
case 252: /* expr */
case 262: /* expritem */
{
tSqlExprDestroy((yypminor->yy170));
tSqlExprDestroy((yypminor->yy118));
}
break;
case 248: /* union */
case 249: /* union */
{
destroyAllSelectClause((yypminor->yy141));
destroyAllSelectClause((yypminor->yy391));
}
break;
case 256: /* sortitem */
case 257: /* sortitem */
{
tVariantDestroy(&(yypminor->yy218));
tVariantDestroy(&(yypminor->yy488));
}
break;
/********* End destructor definitions *****************************************/
......@@ -1741,271 +1744,272 @@ 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[] = {
{ 187, -1 }, /* (0) program ::= cmd */
{ 188, -2 }, /* (1) cmd ::= SHOW DATABASES */
{ 188, -2 }, /* (2) cmd ::= SHOW TOPICS */
{ 188, -2 }, /* (3) cmd ::= SHOW MNODES */
{ 188, -2 }, /* (4) cmd ::= SHOW DNODES */
{ 188, -2 }, /* (5) cmd ::= SHOW ACCOUNTS */
{ 188, -2 }, /* (6) cmd ::= SHOW USERS */
{ 188, -2 }, /* (7) cmd ::= SHOW MODULES */
{ 188, -2 }, /* (8) cmd ::= SHOW QUERIES */
{ 188, -2 }, /* (9) cmd ::= SHOW CONNECTIONS */
{ 188, -2 }, /* (10) cmd ::= SHOW STREAMS */
{ 188, -2 }, /* (11) cmd ::= SHOW VARIABLES */
{ 188, -2 }, /* (12) cmd ::= SHOW SCORES */
{ 188, -2 }, /* (13) cmd ::= SHOW GRANTS */
{ 188, -2 }, /* (14) cmd ::= SHOW VNODES */
{ 188, -3 }, /* (15) cmd ::= SHOW VNODES IPTOKEN */
{ 189, 0 }, /* (16) dbPrefix ::= */
{ 189, -2 }, /* (17) dbPrefix ::= ids DOT */
{ 191, 0 }, /* (18) cpxName ::= */
{ 191, -2 }, /* (19) cpxName ::= DOT ids */
{ 188, -5 }, /* (20) cmd ::= SHOW CREATE TABLE ids cpxName */
{ 188, -4 }, /* (21) cmd ::= SHOW CREATE DATABASE ids */
{ 188, -3 }, /* (22) cmd ::= SHOW dbPrefix TABLES */
{ 188, -5 }, /* (23) cmd ::= SHOW dbPrefix TABLES LIKE ids */
{ 188, -3 }, /* (24) cmd ::= SHOW dbPrefix STABLES */
{ 188, -5 }, /* (25) cmd ::= SHOW dbPrefix STABLES LIKE ids */
{ 188, -3 }, /* (26) cmd ::= SHOW dbPrefix VGROUPS */
{ 188, -4 }, /* (27) cmd ::= SHOW dbPrefix VGROUPS ids */
{ 188, -5 }, /* (28) cmd ::= DROP TABLE ifexists ids cpxName */
{ 188, -5 }, /* (29) cmd ::= DROP STABLE ifexists ids cpxName */
{ 188, -4 }, /* (30) cmd ::= DROP DATABASE ifexists ids */
{ 188, -4 }, /* (31) cmd ::= DROP TOPIC ifexists ids */
{ 188, -3 }, /* (32) cmd ::= DROP DNODE ids */
{ 188, -3 }, /* (33) cmd ::= DROP USER ids */
{ 188, -3 }, /* (34) cmd ::= DROP ACCOUNT ids */
{ 188, -2 }, /* (35) cmd ::= USE ids */
{ 188, -3 }, /* (36) cmd ::= DESCRIBE ids cpxName */
{ 188, -5 }, /* (37) cmd ::= ALTER USER ids PASS ids */
{ 188, -5 }, /* (38) cmd ::= ALTER USER ids PRIVILEGE ids */
{ 188, -4 }, /* (39) cmd ::= ALTER DNODE ids ids */
{ 188, -5 }, /* (40) cmd ::= ALTER DNODE ids ids ids */
{ 188, -3 }, /* (41) cmd ::= ALTER LOCAL ids */
{ 188, -4 }, /* (42) cmd ::= ALTER LOCAL ids ids */
{ 188, -4 }, /* (43) cmd ::= ALTER DATABASE ids alter_db_optr */
{ 188, -4 }, /* (44) cmd ::= ALTER TOPIC ids alter_topic_optr */
{ 188, -4 }, /* (45) cmd ::= ALTER ACCOUNT ids acct_optr */
{ 188, -6 }, /* (46) cmd ::= ALTER ACCOUNT ids PASS ids acct_optr */
{ 190, -1 }, /* (47) ids ::= ID */
{ 190, -1 }, /* (48) ids ::= STRING */
{ 192, -2 }, /* (49) ifexists ::= IF EXISTS */
{ 192, 0 }, /* (50) ifexists ::= */
{ 196, -3 }, /* (51) ifnotexists ::= IF NOT EXISTS */
{ 196, 0 }, /* (52) ifnotexists ::= */
{ 188, -3 }, /* (53) cmd ::= CREATE DNODE ids */
{ 188, -6 }, /* (54) cmd ::= CREATE ACCOUNT ids PASS ids acct_optr */
{ 188, -5 }, /* (55) cmd ::= CREATE DATABASE ifnotexists ids db_optr */
{ 188, -5 }, /* (56) cmd ::= CREATE TOPIC ifnotexists ids topic_optr */
{ 188, -5 }, /* (57) cmd ::= CREATE USER ids PASS ids */
{ 199, 0 }, /* (58) pps ::= */
{ 199, -2 }, /* (59) pps ::= PPS INTEGER */
{ 200, 0 }, /* (60) tseries ::= */
{ 200, -2 }, /* (61) tseries ::= TSERIES INTEGER */
{ 201, 0 }, /* (62) dbs ::= */
{ 201, -2 }, /* (63) dbs ::= DBS INTEGER */
{ 202, 0 }, /* (64) streams ::= */
{ 202, -2 }, /* (65) streams ::= STREAMS INTEGER */
{ 203, 0 }, /* (66) storage ::= */
{ 203, -2 }, /* (67) storage ::= STORAGE INTEGER */
{ 204, 0 }, /* (68) qtime ::= */
{ 204, -2 }, /* (69) qtime ::= QTIME INTEGER */
{ 205, 0 }, /* (70) users ::= */
{ 205, -2 }, /* (71) users ::= USERS INTEGER */
{ 206, 0 }, /* (72) conns ::= */
{ 206, -2 }, /* (73) conns ::= CONNS INTEGER */
{ 207, 0 }, /* (74) state ::= */
{ 207, -2 }, /* (75) state ::= STATE ids */
{ 195, -9 }, /* (76) acct_optr ::= pps tseries storage streams qtime dbs users conns state */
{ 208, -2 }, /* (77) keep ::= KEEP tagitemlist */
{ 210, -2 }, /* (78) cache ::= CACHE INTEGER */
{ 211, -2 }, /* (79) replica ::= REPLICA INTEGER */
{ 212, -2 }, /* (80) quorum ::= QUORUM INTEGER */
{ 213, -2 }, /* (81) days ::= DAYS INTEGER */
{ 214, -2 }, /* (82) minrows ::= MINROWS INTEGER */
{ 215, -2 }, /* (83) maxrows ::= MAXROWS INTEGER */
{ 216, -2 }, /* (84) blocks ::= BLOCKS INTEGER */
{ 217, -2 }, /* (85) ctime ::= CTIME INTEGER */
{ 218, -2 }, /* (86) wal ::= WAL INTEGER */
{ 219, -2 }, /* (87) fsync ::= FSYNC INTEGER */
{ 220, -2 }, /* (88) comp ::= COMP INTEGER */
{ 221, -2 }, /* (89) prec ::= PRECISION STRING */
{ 222, -2 }, /* (90) update ::= UPDATE INTEGER */
{ 223, -2 }, /* (91) cachelast ::= CACHELAST INTEGER */
{ 224, -2 }, /* (92) partitions ::= PARTITIONS INTEGER */
{ 197, 0 }, /* (93) db_optr ::= */
{ 197, -2 }, /* (94) db_optr ::= db_optr cache */
{ 197, -2 }, /* (95) db_optr ::= db_optr replica */
{ 197, -2 }, /* (96) db_optr ::= db_optr quorum */
{ 197, -2 }, /* (97) db_optr ::= db_optr days */
{ 197, -2 }, /* (98) db_optr ::= db_optr minrows */
{ 197, -2 }, /* (99) db_optr ::= db_optr maxrows */
{ 197, -2 }, /* (100) db_optr ::= db_optr blocks */
{ 197, -2 }, /* (101) db_optr ::= db_optr ctime */
{ 197, -2 }, /* (102) db_optr ::= db_optr wal */
{ 197, -2 }, /* (103) db_optr ::= db_optr fsync */
{ 197, -2 }, /* (104) db_optr ::= db_optr comp */
{ 197, -2 }, /* (105) db_optr ::= db_optr prec */
{ 197, -2 }, /* (106) db_optr ::= db_optr keep */
{ 197, -2 }, /* (107) db_optr ::= db_optr update */
{ 197, -2 }, /* (108) db_optr ::= db_optr cachelast */
{ 198, -1 }, /* (109) topic_optr ::= db_optr */
{ 198, -2 }, /* (110) topic_optr ::= topic_optr partitions */
{ 193, 0 }, /* (111) alter_db_optr ::= */
{ 193, -2 }, /* (112) alter_db_optr ::= alter_db_optr replica */
{ 193, -2 }, /* (113) alter_db_optr ::= alter_db_optr quorum */
{ 193, -2 }, /* (114) alter_db_optr ::= alter_db_optr keep */
{ 193, -2 }, /* (115) alter_db_optr ::= alter_db_optr blocks */
{ 193, -2 }, /* (116) alter_db_optr ::= alter_db_optr comp */
{ 193, -2 }, /* (117) alter_db_optr ::= alter_db_optr wal */
{ 193, -2 }, /* (118) alter_db_optr ::= alter_db_optr fsync */
{ 193, -2 }, /* (119) alter_db_optr ::= alter_db_optr update */
{ 193, -2 }, /* (120) alter_db_optr ::= alter_db_optr cachelast */
{ 194, -1 }, /* (121) alter_topic_optr ::= alter_db_optr */
{ 194, -2 }, /* (122) alter_topic_optr ::= alter_topic_optr partitions */
{ 225, -1 }, /* (123) typename ::= ids */
{ 225, -4 }, /* (124) typename ::= ids LP signed RP */
{ 225, -2 }, /* (125) typename ::= ids UNSIGNED */
{ 226, -1 }, /* (126) signed ::= INTEGER */
{ 226, -2 }, /* (127) signed ::= PLUS INTEGER */
{ 226, -2 }, /* (128) signed ::= MINUS INTEGER */
{ 188, -3 }, /* (129) cmd ::= CREATE TABLE create_table_args */
{ 188, -3 }, /* (130) cmd ::= CREATE TABLE create_stable_args */
{ 188, -3 }, /* (131) cmd ::= CREATE STABLE create_stable_args */
{ 188, -3 }, /* (132) cmd ::= CREATE TABLE create_table_list */
{ 229, -1 }, /* (133) create_table_list ::= create_from_stable */
{ 229, -2 }, /* (134) create_table_list ::= create_table_list create_from_stable */
{ 227, -6 }, /* (135) create_table_args ::= ifnotexists ids cpxName LP columnlist RP */
{ 228, -10 }, /* (136) create_stable_args ::= ifnotexists ids cpxName LP columnlist RP TAGS LP columnlist RP */
{ 230, -10 }, /* (137) create_from_stable ::= ifnotexists ids cpxName USING ids cpxName TAGS LP tagitemlist RP */
{ 230, -13 }, /* (138) create_from_stable ::= ifnotexists ids cpxName USING ids cpxName LP tagNamelist RP TAGS LP tagitemlist RP */
{ 232, -3 }, /* (139) tagNamelist ::= tagNamelist COMMA ids */
{ 232, -1 }, /* (140) tagNamelist ::= ids */
{ 227, -5 }, /* (141) create_table_args ::= ifnotexists ids cpxName AS select */
{ 231, -3 }, /* (142) columnlist ::= columnlist COMMA column */
{ 231, -1 }, /* (143) columnlist ::= column */
{ 234, -2 }, /* (144) column ::= ids typename */
{ 209, -3 }, /* (145) tagitemlist ::= tagitemlist COMMA tagitem */
{ 209, -1 }, /* (146) tagitemlist ::= tagitem */
{ 235, -1 }, /* (147) tagitem ::= INTEGER */
{ 235, -1 }, /* (148) tagitem ::= FLOAT */
{ 235, -1 }, /* (149) tagitem ::= STRING */
{ 235, -1 }, /* (150) tagitem ::= BOOL */
{ 235, -1 }, /* (151) tagitem ::= NULL */
{ 235, -2 }, /* (152) tagitem ::= MINUS INTEGER */
{ 235, -2 }, /* (153) tagitem ::= MINUS FLOAT */
{ 235, -2 }, /* (154) tagitem ::= PLUS INTEGER */
{ 235, -2 }, /* (155) tagitem ::= PLUS FLOAT */
{ 233, -13 }, /* (156) select ::= SELECT selcollist from where_opt interval_opt session_option fill_opt sliding_opt groupby_opt orderby_opt having_opt slimit_opt limit_opt */
{ 233, -3 }, /* (157) select ::= LP select RP */
{ 248, -1 }, /* (158) union ::= select */
{ 248, -4 }, /* (159) union ::= union UNION ALL select */
{ 188, -1 }, /* (160) cmd ::= union */
{ 233, -2 }, /* (161) select ::= SELECT selcollist */
{ 249, -2 }, /* (162) sclp ::= selcollist COMMA */
{ 249, 0 }, /* (163) sclp ::= */
{ 236, -4 }, /* (164) selcollist ::= sclp distinct expr as */
{ 236, -2 }, /* (165) selcollist ::= sclp STAR */
{ 252, -2 }, /* (166) as ::= AS ids */
{ 252, -1 }, /* (167) as ::= ids */
{ 252, 0 }, /* (168) as ::= */
{ 250, -1 }, /* (169) distinct ::= DISTINCT */
{ 250, 0 }, /* (170) distinct ::= */
{ 237, -2 }, /* (171) from ::= FROM tablelist */
{ 237, -4 }, /* (172) from ::= FROM LP union RP */
{ 253, -2 }, /* (173) tablelist ::= ids cpxName */
{ 253, -3 }, /* (174) tablelist ::= ids cpxName ids */
{ 253, -4 }, /* (175) tablelist ::= tablelist COMMA ids cpxName */
{ 253, -5 }, /* (176) tablelist ::= tablelist COMMA ids cpxName ids */
{ 254, -1 }, /* (177) tmvar ::= VARIABLE */
{ 239, -4 }, /* (178) interval_opt ::= INTERVAL LP tmvar RP */
{ 239, -6 }, /* (179) interval_opt ::= INTERVAL LP tmvar COMMA tmvar RP */
{ 239, 0 }, /* (180) interval_opt ::= */
{ 240, 0 }, /* (181) session_option ::= */
{ 240, -7 }, /* (182) session_option ::= SESSION LP ids cpxName COMMA tmvar RP */
{ 241, 0 }, /* (183) fill_opt ::= */
{ 241, -6 }, /* (184) fill_opt ::= FILL LP ID COMMA tagitemlist RP */
{ 241, -4 }, /* (185) fill_opt ::= FILL LP ID RP */
{ 242, -4 }, /* (186) sliding_opt ::= SLIDING LP tmvar RP */
{ 242, 0 }, /* (187) sliding_opt ::= */
{ 244, 0 }, /* (188) orderby_opt ::= */
{ 244, -3 }, /* (189) orderby_opt ::= ORDER BY sortlist */
{ 255, -4 }, /* (190) sortlist ::= sortlist COMMA item sortorder */
{ 255, -2 }, /* (191) sortlist ::= item sortorder */
{ 257, -2 }, /* (192) item ::= ids cpxName */
{ 258, -1 }, /* (193) sortorder ::= ASC */
{ 258, -1 }, /* (194) sortorder ::= DESC */
{ 258, 0 }, /* (195) sortorder ::= */
{ 243, 0 }, /* (196) groupby_opt ::= */
{ 243, -3 }, /* (197) groupby_opt ::= GROUP BY grouplist */
{ 259, -3 }, /* (198) grouplist ::= grouplist COMMA item */
{ 259, -1 }, /* (199) grouplist ::= item */
{ 245, 0 }, /* (200) having_opt ::= */
{ 245, -2 }, /* (201) having_opt ::= HAVING expr */
{ 247, 0 }, /* (202) limit_opt ::= */
{ 247, -2 }, /* (203) limit_opt ::= LIMIT signed */
{ 247, -4 }, /* (204) limit_opt ::= LIMIT signed OFFSET signed */
{ 247, -4 }, /* (205) limit_opt ::= LIMIT signed COMMA signed */
{ 246, 0 }, /* (206) slimit_opt ::= */
{ 246, -2 }, /* (207) slimit_opt ::= SLIMIT signed */
{ 246, -4 }, /* (208) slimit_opt ::= SLIMIT signed SOFFSET signed */
{ 246, -4 }, /* (209) slimit_opt ::= SLIMIT signed COMMA signed */
{ 238, 0 }, /* (210) where_opt ::= */
{ 238, -2 }, /* (211) where_opt ::= WHERE expr */
{ 251, -3 }, /* (212) expr ::= LP expr RP */
{ 251, -1 }, /* (213) expr ::= ID */
{ 251, -3 }, /* (214) expr ::= ID DOT ID */
{ 251, -3 }, /* (215) expr ::= ID DOT STAR */
{ 251, -1 }, /* (216) expr ::= INTEGER */
{ 251, -2 }, /* (217) expr ::= MINUS INTEGER */
{ 251, -2 }, /* (218) expr ::= PLUS INTEGER */
{ 251, -1 }, /* (219) expr ::= FLOAT */
{ 251, -2 }, /* (220) expr ::= MINUS FLOAT */
{ 251, -2 }, /* (221) expr ::= PLUS FLOAT */
{ 251, -1 }, /* (222) expr ::= STRING */
{ 251, -1 }, /* (223) expr ::= NOW */
{ 251, -1 }, /* (224) expr ::= VARIABLE */
{ 251, -1 }, /* (225) expr ::= BOOL */
{ 251, -4 }, /* (226) expr ::= ID LP exprlist RP */
{ 251, -4 }, /* (227) expr ::= ID LP STAR RP */
{ 251, -3 }, /* (228) expr ::= expr IS NULL */
{ 251, -4 }, /* (229) expr ::= expr IS NOT NULL */
{ 251, -3 }, /* (230) expr ::= expr LT expr */
{ 251, -3 }, /* (231) expr ::= expr GT expr */
{ 251, -3 }, /* (232) expr ::= expr LE expr */
{ 251, -3 }, /* (233) expr ::= expr GE expr */
{ 251, -3 }, /* (234) expr ::= expr NE expr */
{ 251, -3 }, /* (235) expr ::= expr EQ expr */
{ 251, -5 }, /* (236) expr ::= expr BETWEEN expr AND expr */
{ 251, -3 }, /* (237) expr ::= expr AND expr */
{ 251, -3 }, /* (238) expr ::= expr OR expr */
{ 251, -3 }, /* (239) expr ::= expr PLUS expr */
{ 251, -3 }, /* (240) expr ::= expr MINUS expr */
{ 251, -3 }, /* (241) expr ::= expr STAR expr */
{ 251, -3 }, /* (242) expr ::= expr SLASH expr */
{ 251, -3 }, /* (243) expr ::= expr REM expr */
{ 251, -3 }, /* (244) expr ::= expr LIKE expr */
{ 251, -5 }, /* (245) expr ::= expr IN LP exprlist RP */
{ 260, -3 }, /* (246) exprlist ::= exprlist COMMA expritem */
{ 260, -1 }, /* (247) exprlist ::= expritem */
{ 261, -1 }, /* (248) expritem ::= expr */
{ 261, 0 }, /* (249) expritem ::= */
{ 188, -3 }, /* (250) cmd ::= RESET QUERY CACHE */
{ 188, -7 }, /* (251) cmd ::= ALTER TABLE ids cpxName ADD COLUMN columnlist */
{ 188, -7 }, /* (252) cmd ::= ALTER TABLE ids cpxName DROP COLUMN ids */
{ 188, -7 }, /* (253) cmd ::= ALTER TABLE ids cpxName ADD TAG columnlist */
{ 188, -7 }, /* (254) cmd ::= ALTER TABLE ids cpxName DROP TAG ids */
{ 188, -8 }, /* (255) cmd ::= ALTER TABLE ids cpxName CHANGE TAG ids ids */
{ 188, -9 }, /* (256) cmd ::= ALTER TABLE ids cpxName SET TAG ids EQ tagitem */
{ 188, -7 }, /* (257) cmd ::= ALTER STABLE ids cpxName ADD COLUMN columnlist */
{ 188, -7 }, /* (258) cmd ::= ALTER STABLE ids cpxName DROP COLUMN ids */
{ 188, -7 }, /* (259) cmd ::= ALTER STABLE ids cpxName ADD TAG columnlist */
{ 188, -7 }, /* (260) cmd ::= ALTER STABLE ids cpxName DROP TAG ids */
{ 188, -8 }, /* (261) cmd ::= ALTER STABLE ids cpxName CHANGE TAG ids ids */
{ 188, -3 }, /* (262) cmd ::= KILL CONNECTION INTEGER */
{ 188, -5 }, /* (263) cmd ::= KILL STREAM INTEGER COLON INTEGER */
{ 188, -5 }, /* (264) cmd ::= KILL QUERY INTEGER COLON INTEGER */
{ 188, -1 }, /* (0) program ::= cmd */
{ 189, -2 }, /* (1) cmd ::= SHOW DATABASES */
{ 189, -2 }, /* (2) cmd ::= SHOW TOPICS */
{ 189, -2 }, /* (3) cmd ::= SHOW MNODES */
{ 189, -2 }, /* (4) cmd ::= SHOW DNODES */
{ 189, -2 }, /* (5) cmd ::= SHOW ACCOUNTS */
{ 189, -2 }, /* (6) cmd ::= SHOW USERS */
{ 189, -2 }, /* (7) cmd ::= SHOW MODULES */
{ 189, -2 }, /* (8) cmd ::= SHOW QUERIES */
{ 189, -2 }, /* (9) cmd ::= SHOW CONNECTIONS */
{ 189, -2 }, /* (10) cmd ::= SHOW STREAMS */
{ 189, -2 }, /* (11) cmd ::= SHOW VARIABLES */
{ 189, -2 }, /* (12) cmd ::= SHOW SCORES */
{ 189, -2 }, /* (13) cmd ::= SHOW GRANTS */
{ 189, -2 }, /* (14) cmd ::= SHOW VNODES */
{ 189, -3 }, /* (15) cmd ::= SHOW VNODES IPTOKEN */
{ 190, 0 }, /* (16) dbPrefix ::= */
{ 190, -2 }, /* (17) dbPrefix ::= ids DOT */
{ 192, 0 }, /* (18) cpxName ::= */
{ 192, -2 }, /* (19) cpxName ::= DOT ids */
{ 189, -5 }, /* (20) cmd ::= SHOW CREATE TABLE ids cpxName */
{ 189, -4 }, /* (21) cmd ::= SHOW CREATE DATABASE ids */
{ 189, -3 }, /* (22) cmd ::= SHOW dbPrefix TABLES */
{ 189, -5 }, /* (23) cmd ::= SHOW dbPrefix TABLES LIKE ids */
{ 189, -3 }, /* (24) cmd ::= SHOW dbPrefix STABLES */
{ 189, -5 }, /* (25) cmd ::= SHOW dbPrefix STABLES LIKE ids */
{ 189, -3 }, /* (26) cmd ::= SHOW dbPrefix VGROUPS */
{ 189, -4 }, /* (27) cmd ::= SHOW dbPrefix VGROUPS ids */
{ 189, -5 }, /* (28) cmd ::= DROP TABLE ifexists ids cpxName */
{ 189, -5 }, /* (29) cmd ::= DROP STABLE ifexists ids cpxName */
{ 189, -4 }, /* (30) cmd ::= DROP DATABASE ifexists ids */
{ 189, -4 }, /* (31) cmd ::= DROP TOPIC ifexists ids */
{ 189, -3 }, /* (32) cmd ::= DROP DNODE ids */
{ 189, -3 }, /* (33) cmd ::= DROP USER ids */
{ 189, -3 }, /* (34) cmd ::= DROP ACCOUNT ids */
{ 189, -2 }, /* (35) cmd ::= USE ids */
{ 189, -3 }, /* (36) cmd ::= DESCRIBE ids cpxName */
{ 189, -5 }, /* (37) cmd ::= ALTER USER ids PASS ids */
{ 189, -5 }, /* (38) cmd ::= ALTER USER ids PRIVILEGE ids */
{ 189, -4 }, /* (39) cmd ::= ALTER DNODE ids ids */
{ 189, -5 }, /* (40) cmd ::= ALTER DNODE ids ids ids */
{ 189, -3 }, /* (41) cmd ::= ALTER LOCAL ids */
{ 189, -4 }, /* (42) cmd ::= ALTER LOCAL ids ids */
{ 189, -4 }, /* (43) cmd ::= ALTER DATABASE ids alter_db_optr */
{ 189, -4 }, /* (44) cmd ::= ALTER TOPIC ids alter_topic_optr */
{ 189, -4 }, /* (45) cmd ::= ALTER ACCOUNT ids acct_optr */
{ 189, -6 }, /* (46) cmd ::= ALTER ACCOUNT ids PASS ids acct_optr */
{ 191, -1 }, /* (47) ids ::= ID */
{ 191, -1 }, /* (48) ids ::= STRING */
{ 193, -2 }, /* (49) ifexists ::= IF EXISTS */
{ 193, 0 }, /* (50) ifexists ::= */
{ 197, -3 }, /* (51) ifnotexists ::= IF NOT EXISTS */
{ 197, 0 }, /* (52) ifnotexists ::= */
{ 189, -3 }, /* (53) cmd ::= CREATE DNODE ids */
{ 189, -6 }, /* (54) cmd ::= CREATE ACCOUNT ids PASS ids acct_optr */
{ 189, -5 }, /* (55) cmd ::= CREATE DATABASE ifnotexists ids db_optr */
{ 189, -5 }, /* (56) cmd ::= CREATE TOPIC ifnotexists ids topic_optr */
{ 189, -5 }, /* (57) cmd ::= CREATE USER ids PASS ids */
{ 200, 0 }, /* (58) pps ::= */
{ 200, -2 }, /* (59) pps ::= PPS INTEGER */
{ 201, 0 }, /* (60) tseries ::= */
{ 201, -2 }, /* (61) tseries ::= TSERIES INTEGER */
{ 202, 0 }, /* (62) dbs ::= */
{ 202, -2 }, /* (63) dbs ::= DBS INTEGER */
{ 203, 0 }, /* (64) streams ::= */
{ 203, -2 }, /* (65) streams ::= STREAMS INTEGER */
{ 204, 0 }, /* (66) storage ::= */
{ 204, -2 }, /* (67) storage ::= STORAGE INTEGER */
{ 205, 0 }, /* (68) qtime ::= */
{ 205, -2 }, /* (69) qtime ::= QTIME INTEGER */
{ 206, 0 }, /* (70) users ::= */
{ 206, -2 }, /* (71) users ::= USERS INTEGER */
{ 207, 0 }, /* (72) conns ::= */
{ 207, -2 }, /* (73) conns ::= CONNS INTEGER */
{ 208, 0 }, /* (74) state ::= */
{ 208, -2 }, /* (75) state ::= STATE ids */
{ 196, -9 }, /* (76) acct_optr ::= pps tseries storage streams qtime dbs users conns state */
{ 209, -2 }, /* (77) keep ::= KEEP tagitemlist */
{ 211, -2 }, /* (78) cache ::= CACHE INTEGER */
{ 212, -2 }, /* (79) replica ::= REPLICA INTEGER */
{ 213, -2 }, /* (80) quorum ::= QUORUM INTEGER */
{ 214, -2 }, /* (81) days ::= DAYS INTEGER */
{ 215, -2 }, /* (82) minrows ::= MINROWS INTEGER */
{ 216, -2 }, /* (83) maxrows ::= MAXROWS INTEGER */
{ 217, -2 }, /* (84) blocks ::= BLOCKS INTEGER */
{ 218, -2 }, /* (85) ctime ::= CTIME INTEGER */
{ 219, -2 }, /* (86) wal ::= WAL INTEGER */
{ 220, -2 }, /* (87) fsync ::= FSYNC INTEGER */
{ 221, -2 }, /* (88) comp ::= COMP INTEGER */
{ 222, -2 }, /* (89) prec ::= PRECISION STRING */
{ 223, -2 }, /* (90) update ::= UPDATE INTEGER */
{ 224, -2 }, /* (91) cachelast ::= CACHELAST INTEGER */
{ 225, -2 }, /* (92) partitions ::= PARTITIONS INTEGER */
{ 198, 0 }, /* (93) db_optr ::= */
{ 198, -2 }, /* (94) db_optr ::= db_optr cache */
{ 198, -2 }, /* (95) db_optr ::= db_optr replica */
{ 198, -2 }, /* (96) db_optr ::= db_optr quorum */
{ 198, -2 }, /* (97) db_optr ::= db_optr days */
{ 198, -2 }, /* (98) db_optr ::= db_optr minrows */
{ 198, -2 }, /* (99) db_optr ::= db_optr maxrows */
{ 198, -2 }, /* (100) db_optr ::= db_optr blocks */
{ 198, -2 }, /* (101) db_optr ::= db_optr ctime */
{ 198, -2 }, /* (102) db_optr ::= db_optr wal */
{ 198, -2 }, /* (103) db_optr ::= db_optr fsync */
{ 198, -2 }, /* (104) db_optr ::= db_optr comp */
{ 198, -2 }, /* (105) db_optr ::= db_optr prec */
{ 198, -2 }, /* (106) db_optr ::= db_optr keep */
{ 198, -2 }, /* (107) db_optr ::= db_optr update */
{ 198, -2 }, /* (108) db_optr ::= db_optr cachelast */
{ 199, -1 }, /* (109) topic_optr ::= db_optr */
{ 199, -2 }, /* (110) topic_optr ::= topic_optr partitions */
{ 194, 0 }, /* (111) alter_db_optr ::= */
{ 194, -2 }, /* (112) alter_db_optr ::= alter_db_optr replica */
{ 194, -2 }, /* (113) alter_db_optr ::= alter_db_optr quorum */
{ 194, -2 }, /* (114) alter_db_optr ::= alter_db_optr keep */
{ 194, -2 }, /* (115) alter_db_optr ::= alter_db_optr blocks */
{ 194, -2 }, /* (116) alter_db_optr ::= alter_db_optr comp */
{ 194, -2 }, /* (117) alter_db_optr ::= alter_db_optr wal */
{ 194, -2 }, /* (118) alter_db_optr ::= alter_db_optr fsync */
{ 194, -2 }, /* (119) alter_db_optr ::= alter_db_optr update */
{ 194, -2 }, /* (120) alter_db_optr ::= alter_db_optr cachelast */
{ 195, -1 }, /* (121) alter_topic_optr ::= alter_db_optr */
{ 195, -2 }, /* (122) alter_topic_optr ::= alter_topic_optr partitions */
{ 226, -1 }, /* (123) typename ::= ids */
{ 226, -4 }, /* (124) typename ::= ids LP signed RP */
{ 226, -2 }, /* (125) typename ::= ids UNSIGNED */
{ 227, -1 }, /* (126) signed ::= INTEGER */
{ 227, -2 }, /* (127) signed ::= PLUS INTEGER */
{ 227, -2 }, /* (128) signed ::= MINUS INTEGER */
{ 189, -3 }, /* (129) cmd ::= CREATE TABLE create_table_args */
{ 189, -3 }, /* (130) cmd ::= CREATE TABLE create_stable_args */
{ 189, -3 }, /* (131) cmd ::= CREATE STABLE create_stable_args */
{ 189, -3 }, /* (132) cmd ::= CREATE TABLE create_table_list */
{ 230, -1 }, /* (133) create_table_list ::= create_from_stable */
{ 230, -2 }, /* (134) create_table_list ::= create_table_list create_from_stable */
{ 228, -6 }, /* (135) create_table_args ::= ifnotexists ids cpxName LP columnlist RP */
{ 229, -10 }, /* (136) create_stable_args ::= ifnotexists ids cpxName LP columnlist RP TAGS LP columnlist RP */
{ 231, -10 }, /* (137) create_from_stable ::= ifnotexists ids cpxName USING ids cpxName TAGS LP tagitemlist RP */
{ 231, -13 }, /* (138) create_from_stable ::= ifnotexists ids cpxName USING ids cpxName LP tagNamelist RP TAGS LP tagitemlist RP */
{ 233, -3 }, /* (139) tagNamelist ::= tagNamelist COMMA ids */
{ 233, -1 }, /* (140) tagNamelist ::= ids */
{ 228, -5 }, /* (141) create_table_args ::= ifnotexists ids cpxName AS select */
{ 232, -3 }, /* (142) columnlist ::= columnlist COMMA column */
{ 232, -1 }, /* (143) columnlist ::= column */
{ 235, -2 }, /* (144) column ::= ids typename */
{ 210, -3 }, /* (145) tagitemlist ::= tagitemlist COMMA tagitem */
{ 210, -1 }, /* (146) tagitemlist ::= tagitem */
{ 236, -1 }, /* (147) tagitem ::= INTEGER */
{ 236, -1 }, /* (148) tagitem ::= FLOAT */
{ 236, -1 }, /* (149) tagitem ::= STRING */
{ 236, -1 }, /* (150) tagitem ::= BOOL */
{ 236, -1 }, /* (151) tagitem ::= NULL */
{ 236, -2 }, /* (152) tagitem ::= MINUS INTEGER */
{ 236, -2 }, /* (153) tagitem ::= MINUS FLOAT */
{ 236, -2 }, /* (154) tagitem ::= PLUS INTEGER */
{ 236, -2 }, /* (155) tagitem ::= PLUS FLOAT */
{ 234, -13 }, /* (156) select ::= SELECT selcollist from where_opt interval_opt session_option fill_opt sliding_opt groupby_opt orderby_opt having_opt slimit_opt limit_opt */
{ 234, -3 }, /* (157) select ::= LP select RP */
{ 249, -1 }, /* (158) union ::= select */
{ 249, -4 }, /* (159) union ::= union UNION ALL select */
{ 189, -1 }, /* (160) cmd ::= union */
{ 234, -2 }, /* (161) select ::= SELECT selcollist */
{ 250, -2 }, /* (162) sclp ::= selcollist COMMA */
{ 250, 0 }, /* (163) sclp ::= */
{ 237, -4 }, /* (164) selcollist ::= sclp distinct expr as */
{ 237, -2 }, /* (165) selcollist ::= sclp STAR */
{ 253, -2 }, /* (166) as ::= AS ids */
{ 253, -1 }, /* (167) as ::= ids */
{ 253, 0 }, /* (168) as ::= */
{ 251, -1 }, /* (169) distinct ::= DISTINCT */
{ 251, 0 }, /* (170) distinct ::= */
{ 238, -2 }, /* (171) from ::= FROM tablelist */
{ 238, -4 }, /* (172) from ::= FROM LP union RP */
{ 254, -2 }, /* (173) tablelist ::= ids cpxName */
{ 254, -3 }, /* (174) tablelist ::= ids cpxName ids */
{ 254, -4 }, /* (175) tablelist ::= tablelist COMMA ids cpxName */
{ 254, -5 }, /* (176) tablelist ::= tablelist COMMA ids cpxName ids */
{ 255, -1 }, /* (177) tmvar ::= VARIABLE */
{ 240, -4 }, /* (178) interval_opt ::= INTERVAL LP tmvar RP */
{ 240, -6 }, /* (179) interval_opt ::= INTERVAL LP tmvar COMMA tmvar RP */
{ 240, 0 }, /* (180) interval_opt ::= */
{ 241, 0 }, /* (181) session_option ::= */
{ 241, -7 }, /* (182) session_option ::= SESSION LP ids cpxName COMMA tmvar RP */
{ 242, 0 }, /* (183) fill_opt ::= */
{ 242, -6 }, /* (184) fill_opt ::= FILL LP ID COMMA tagitemlist RP */
{ 242, -4 }, /* (185) fill_opt ::= FILL LP ID RP */
{ 243, -4 }, /* (186) sliding_opt ::= SLIDING LP tmvar RP */
{ 243, 0 }, /* (187) sliding_opt ::= */
{ 245, 0 }, /* (188) orderby_opt ::= */
{ 245, -3 }, /* (189) orderby_opt ::= ORDER BY sortlist */
{ 256, -4 }, /* (190) sortlist ::= sortlist COMMA item sortorder */
{ 256, -2 }, /* (191) sortlist ::= item sortorder */
{ 258, -2 }, /* (192) item ::= ids cpxName */
{ 259, -1 }, /* (193) sortorder ::= ASC */
{ 259, -1 }, /* (194) sortorder ::= DESC */
{ 259, 0 }, /* (195) sortorder ::= */
{ 244, 0 }, /* (196) groupby_opt ::= */
{ 244, -3 }, /* (197) groupby_opt ::= GROUP BY grouplist */
{ 260, -3 }, /* (198) grouplist ::= grouplist COMMA item */
{ 260, -1 }, /* (199) grouplist ::= item */
{ 246, 0 }, /* (200) having_opt ::= */
{ 246, -2 }, /* (201) having_opt ::= HAVING expr */
{ 248, 0 }, /* (202) limit_opt ::= */
{ 248, -2 }, /* (203) limit_opt ::= LIMIT signed */
{ 248, -4 }, /* (204) limit_opt ::= LIMIT signed OFFSET signed */
{ 248, -4 }, /* (205) limit_opt ::= LIMIT signed COMMA signed */
{ 247, 0 }, /* (206) slimit_opt ::= */
{ 247, -2 }, /* (207) slimit_opt ::= SLIMIT signed */
{ 247, -4 }, /* (208) slimit_opt ::= SLIMIT signed SOFFSET signed */
{ 247, -4 }, /* (209) slimit_opt ::= SLIMIT signed COMMA signed */
{ 239, 0 }, /* (210) where_opt ::= */
{ 239, -2 }, /* (211) where_opt ::= WHERE expr */
{ 252, -3 }, /* (212) expr ::= LP expr RP */
{ 252, -1 }, /* (213) expr ::= ID */
{ 252, -3 }, /* (214) expr ::= ID DOT ID */
{ 252, -3 }, /* (215) expr ::= ID DOT STAR */
{ 252, -1 }, /* (216) expr ::= INTEGER */
{ 252, -2 }, /* (217) expr ::= MINUS INTEGER */
{ 252, -2 }, /* (218) expr ::= PLUS INTEGER */
{ 252, -1 }, /* (219) expr ::= FLOAT */
{ 252, -2 }, /* (220) expr ::= MINUS FLOAT */
{ 252, -2 }, /* (221) expr ::= PLUS FLOAT */
{ 252, -1 }, /* (222) expr ::= STRING */
{ 252, -1 }, /* (223) expr ::= NOW */
{ 252, -1 }, /* (224) expr ::= VARIABLE */
{ 252, -1 }, /* (225) expr ::= BOOL */
{ 252, -4 }, /* (226) expr ::= ID LP exprlist RP */
{ 252, -4 }, /* (227) expr ::= ID LP STAR RP */
{ 252, -3 }, /* (228) expr ::= expr IS NULL */
{ 252, -4 }, /* (229) expr ::= expr IS NOT NULL */
{ 252, -3 }, /* (230) expr ::= expr LT expr */
{ 252, -3 }, /* (231) expr ::= expr GT expr */
{ 252, -3 }, /* (232) expr ::= expr LE expr */
{ 252, -3 }, /* (233) expr ::= expr GE expr */
{ 252, -3 }, /* (234) expr ::= expr NE expr */
{ 252, -3 }, /* (235) expr ::= expr EQ expr */
{ 252, -5 }, /* (236) expr ::= expr BETWEEN expr AND expr */
{ 252, -3 }, /* (237) expr ::= expr AND expr */
{ 252, -3 }, /* (238) expr ::= expr OR expr */
{ 252, -3 }, /* (239) expr ::= expr PLUS expr */
{ 252, -3 }, /* (240) expr ::= expr MINUS expr */
{ 252, -3 }, /* (241) expr ::= expr STAR expr */
{ 252, -3 }, /* (242) expr ::= expr SLASH expr */
{ 252, -3 }, /* (243) expr ::= expr REM expr */
{ 252, -3 }, /* (244) expr ::= expr LIKE expr */
{ 252, -5 }, /* (245) expr ::= expr IN LP exprlist RP */
{ 261, -3 }, /* (246) exprlist ::= exprlist COMMA expritem */
{ 261, -1 }, /* (247) exprlist ::= expritem */
{ 262, -1 }, /* (248) expritem ::= expr */
{ 262, 0 }, /* (249) expritem ::= */
{ 189, -3 }, /* (250) cmd ::= RESET QUERY CACHE */
{ 189, -3 }, /* (251) cmd ::= SYNCDB ids REPLICA */
{ 189, -7 }, /* (252) cmd ::= ALTER TABLE ids cpxName ADD COLUMN columnlist */
{ 189, -7 }, /* (253) cmd ::= ALTER TABLE ids cpxName DROP COLUMN ids */
{ 189, -7 }, /* (254) cmd ::= ALTER TABLE ids cpxName ADD TAG columnlist */
{ 189, -7 }, /* (255) cmd ::= ALTER TABLE ids cpxName DROP TAG ids */
{ 189, -8 }, /* (256) cmd ::= ALTER TABLE ids cpxName CHANGE TAG ids ids */
{ 189, -9 }, /* (257) cmd ::= ALTER TABLE ids cpxName SET TAG ids EQ tagitem */
{ 189, -7 }, /* (258) cmd ::= ALTER STABLE ids cpxName ADD COLUMN columnlist */
{ 189, -7 }, /* (259) cmd ::= ALTER STABLE ids cpxName DROP COLUMN ids */
{ 189, -7 }, /* (260) cmd ::= ALTER STABLE ids cpxName ADD TAG columnlist */
{ 189, -7 }, /* (261) cmd ::= ALTER STABLE ids cpxName DROP TAG ids */
{ 189, -8 }, /* (262) cmd ::= ALTER STABLE ids cpxName CHANGE TAG ids ids */
{ 189, -3 }, /* (263) cmd ::= KILL CONNECTION INTEGER */
{ 189, -5 }, /* (264) cmd ::= KILL STREAM INTEGER COLON INTEGER */
{ 189, -5 }, /* (265) cmd ::= KILL QUERY INTEGER COLON INTEGER */
};
static void yy_accept(yyParser*); /* Forward Declaration */
......@@ -2252,13 +2256,13 @@ static void yy_reduce(
break;
case 43: /* cmd ::= ALTER DATABASE ids alter_db_optr */
case 44: /* cmd ::= ALTER TOPIC ids alter_topic_optr */ yytestcase(yyruleno==44);
{ SStrToken t = {0}; setCreateDbInfo(pInfo, TSDB_SQL_ALTER_DB, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy94, &t);}
{ SStrToken t = {0}; setCreateDbInfo(pInfo, TSDB_SQL_ALTER_DB, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy322, &t);}
break;
case 45: /* cmd ::= ALTER ACCOUNT ids acct_optr */
{ setCreateAcctSql(pInfo, TSDB_SQL_ALTER_ACCT, &yymsp[-1].minor.yy0, NULL, &yymsp[0].minor.yy419);}
{ setCreateAcctSql(pInfo, TSDB_SQL_ALTER_ACCT, &yymsp[-1].minor.yy0, NULL, &yymsp[0].minor.yy351);}
break;
case 46: /* 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.yy419);}
{ setCreateAcctSql(pInfo, TSDB_SQL_ALTER_ACCT, &yymsp[-3].minor.yy0, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy351);}
break;
case 47: /* ids ::= ID */
case 48: /* ids ::= STRING */ yytestcase(yyruleno==48);
......@@ -2280,11 +2284,11 @@ static void yy_reduce(
{ setDCLSqlElems(pInfo, TSDB_SQL_CREATE_DNODE, 1, &yymsp[0].minor.yy0);}
break;
case 54: /* 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.yy419);}
{ setCreateAcctSql(pInfo, TSDB_SQL_CREATE_ACCT, &yymsp[-3].minor.yy0, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy351);}
break;
case 55: /* cmd ::= CREATE DATABASE ifnotexists ids db_optr */
case 56: /* cmd ::= CREATE TOPIC ifnotexists ids topic_optr */ yytestcase(yyruleno==56);
{ setCreateDbInfo(pInfo, TSDB_SQL_CREATE_DB, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy94, &yymsp[-2].minor.yy0);}
{ setCreateDbInfo(pInfo, TSDB_SQL_CREATE_DB, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy322, &yymsp[-2].minor.yy0);}
break;
case 57: /* cmd ::= CREATE USER ids PASS ids */
{ setCreateUserSql(pInfo, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0);}
......@@ -2313,20 +2317,20 @@ static void yy_reduce(
break;
case 76: /* acct_optr ::= pps tseries storage streams qtime dbs users conns state */
{
yylhsminor.yy419.maxUsers = (yymsp[-2].minor.yy0.n>0)?atoi(yymsp[-2].minor.yy0.z):-1;
yylhsminor.yy419.maxDbs = (yymsp[-3].minor.yy0.n>0)?atoi(yymsp[-3].minor.yy0.z):-1;
yylhsminor.yy419.maxTimeSeries = (yymsp[-7].minor.yy0.n>0)?atoi(yymsp[-7].minor.yy0.z):-1;
yylhsminor.yy419.maxStreams = (yymsp[-5].minor.yy0.n>0)?atoi(yymsp[-5].minor.yy0.z):-1;
yylhsminor.yy419.maxPointsPerSecond = (yymsp[-8].minor.yy0.n>0)?atoi(yymsp[-8].minor.yy0.z):-1;
yylhsminor.yy419.maxStorage = (yymsp[-6].minor.yy0.n>0)?strtoll(yymsp[-6].minor.yy0.z, NULL, 10):-1;
yylhsminor.yy419.maxQueryTime = (yymsp[-4].minor.yy0.n>0)?strtoll(yymsp[-4].minor.yy0.z, NULL, 10):-1;
yylhsminor.yy419.maxConnections = (yymsp[-1].minor.yy0.n>0)?atoi(yymsp[-1].minor.yy0.z):-1;
yylhsminor.yy419.stat = yymsp[0].minor.yy0;
}
yymsp[-8].minor.yy419 = yylhsminor.yy419;
yylhsminor.yy351.maxUsers = (yymsp[-2].minor.yy0.n>0)?atoi(yymsp[-2].minor.yy0.z):-1;
yylhsminor.yy351.maxDbs = (yymsp[-3].minor.yy0.n>0)?atoi(yymsp[-3].minor.yy0.z):-1;
yylhsminor.yy351.maxTimeSeries = (yymsp[-7].minor.yy0.n>0)?atoi(yymsp[-7].minor.yy0.z):-1;
yylhsminor.yy351.maxStreams = (yymsp[-5].minor.yy0.n>0)?atoi(yymsp[-5].minor.yy0.z):-1;
yylhsminor.yy351.maxPointsPerSecond = (yymsp[-8].minor.yy0.n>0)?atoi(yymsp[-8].minor.yy0.z):-1;
yylhsminor.yy351.maxStorage = (yymsp[-6].minor.yy0.n>0)?strtoll(yymsp[-6].minor.yy0.z, NULL, 10):-1;
yylhsminor.yy351.maxQueryTime = (yymsp[-4].minor.yy0.n>0)?strtoll(yymsp[-4].minor.yy0.z, NULL, 10):-1;
yylhsminor.yy351.maxConnections = (yymsp[-1].minor.yy0.n>0)?atoi(yymsp[-1].minor.yy0.z):-1;
yylhsminor.yy351.stat = yymsp[0].minor.yy0;
}
yymsp[-8].minor.yy351 = yylhsminor.yy351;
break;
case 77: /* keep ::= KEEP tagitemlist */
{ yymsp[-1].minor.yy429 = yymsp[0].minor.yy429; }
{ yymsp[-1].minor.yy159 = yymsp[0].minor.yy159; }
break;
case 78: /* cache ::= CACHE INTEGER */
case 79: /* replica ::= REPLICA INTEGER */ yytestcase(yyruleno==79);
......@@ -2346,234 +2350,234 @@ static void yy_reduce(
{ yymsp[-1].minor.yy0 = yymsp[0].minor.yy0; }
break;
case 93: /* db_optr ::= */
{setDefaultCreateDbOption(&yymsp[1].minor.yy94); yymsp[1].minor.yy94.dbType = TSDB_DB_TYPE_DEFAULT;}
{setDefaultCreateDbOption(&yymsp[1].minor.yy322); yymsp[1].minor.yy322.dbType = TSDB_DB_TYPE_DEFAULT;}
break;
case 94: /* db_optr ::= db_optr cache */
{ yylhsminor.yy94 = yymsp[-1].minor.yy94; yylhsminor.yy94.cacheBlockSize = strtol(yymsp[0].minor.yy0.z, NULL, 10); }
yymsp[-1].minor.yy94 = yylhsminor.yy94;
{ yylhsminor.yy322 = yymsp[-1].minor.yy322; yylhsminor.yy322.cacheBlockSize = strtol(yymsp[0].minor.yy0.z, NULL, 10); }
yymsp[-1].minor.yy322 = yylhsminor.yy322;
break;
case 95: /* db_optr ::= db_optr replica */
case 112: /* alter_db_optr ::= alter_db_optr replica */ yytestcase(yyruleno==112);
{ yylhsminor.yy94 = yymsp[-1].minor.yy94; yylhsminor.yy94.replica = strtol(yymsp[0].minor.yy0.z, NULL, 10); }
yymsp[-1].minor.yy94 = yylhsminor.yy94;
{ yylhsminor.yy322 = yymsp[-1].minor.yy322; yylhsminor.yy322.replica = strtol(yymsp[0].minor.yy0.z, NULL, 10); }
yymsp[-1].minor.yy322 = yylhsminor.yy322;
break;
case 96: /* db_optr ::= db_optr quorum */
case 113: /* alter_db_optr ::= alter_db_optr quorum */ yytestcase(yyruleno==113);
{ yylhsminor.yy94 = yymsp[-1].minor.yy94; yylhsminor.yy94.quorum = strtol(yymsp[0].minor.yy0.z, NULL, 10); }
yymsp[-1].minor.yy94 = yylhsminor.yy94;
{ yylhsminor.yy322 = yymsp[-1].minor.yy322; yylhsminor.yy322.quorum = strtol(yymsp[0].minor.yy0.z, NULL, 10); }
yymsp[-1].minor.yy322 = yylhsminor.yy322;
break;
case 97: /* db_optr ::= db_optr days */
{ yylhsminor.yy94 = yymsp[-1].minor.yy94; yylhsminor.yy94.daysPerFile = strtol(yymsp[0].minor.yy0.z, NULL, 10); }
yymsp[-1].minor.yy94 = yylhsminor.yy94;
{ yylhsminor.yy322 = yymsp[-1].minor.yy322; yylhsminor.yy322.daysPerFile = strtol(yymsp[0].minor.yy0.z, NULL, 10); }
yymsp[-1].minor.yy322 = yylhsminor.yy322;
break;
case 98: /* db_optr ::= db_optr minrows */
{ yylhsminor.yy94 = yymsp[-1].minor.yy94; yylhsminor.yy94.minRowsPerBlock = strtod(yymsp[0].minor.yy0.z, NULL); }
yymsp[-1].minor.yy94 = yylhsminor.yy94;
{ yylhsminor.yy322 = yymsp[-1].minor.yy322; yylhsminor.yy322.minRowsPerBlock = strtod(yymsp[0].minor.yy0.z, NULL); }
yymsp[-1].minor.yy322 = yylhsminor.yy322;
break;
case 99: /* db_optr ::= db_optr maxrows */
{ yylhsminor.yy94 = yymsp[-1].minor.yy94; yylhsminor.yy94.maxRowsPerBlock = strtod(yymsp[0].minor.yy0.z, NULL); }
yymsp[-1].minor.yy94 = yylhsminor.yy94;
{ yylhsminor.yy322 = yymsp[-1].minor.yy322; yylhsminor.yy322.maxRowsPerBlock = strtod(yymsp[0].minor.yy0.z, NULL); }
yymsp[-1].minor.yy322 = yylhsminor.yy322;
break;
case 100: /* db_optr ::= db_optr blocks */
case 115: /* alter_db_optr ::= alter_db_optr blocks */ yytestcase(yyruleno==115);
{ yylhsminor.yy94 = yymsp[-1].minor.yy94; yylhsminor.yy94.numOfBlocks = strtol(yymsp[0].minor.yy0.z, NULL, 10); }
yymsp[-1].minor.yy94 = yylhsminor.yy94;
{ yylhsminor.yy322 = yymsp[-1].minor.yy322; yylhsminor.yy322.numOfBlocks = strtol(yymsp[0].minor.yy0.z, NULL, 10); }
yymsp[-1].minor.yy322 = yylhsminor.yy322;
break;
case 101: /* db_optr ::= db_optr ctime */
{ yylhsminor.yy94 = yymsp[-1].minor.yy94; yylhsminor.yy94.commitTime = strtol(yymsp[0].minor.yy0.z, NULL, 10); }
yymsp[-1].minor.yy94 = yylhsminor.yy94;
{ yylhsminor.yy322 = yymsp[-1].minor.yy322; yylhsminor.yy322.commitTime = strtol(yymsp[0].minor.yy0.z, NULL, 10); }
yymsp[-1].minor.yy322 = yylhsminor.yy322;
break;
case 102: /* db_optr ::= db_optr wal */
case 117: /* alter_db_optr ::= alter_db_optr wal */ yytestcase(yyruleno==117);
{ yylhsminor.yy94 = yymsp[-1].minor.yy94; yylhsminor.yy94.walLevel = strtol(yymsp[0].minor.yy0.z, NULL, 10); }
yymsp[-1].minor.yy94 = yylhsminor.yy94;
{ yylhsminor.yy322 = yymsp[-1].minor.yy322; yylhsminor.yy322.walLevel = strtol(yymsp[0].minor.yy0.z, NULL, 10); }
yymsp[-1].minor.yy322 = yylhsminor.yy322;
break;
case 103: /* db_optr ::= db_optr fsync */
case 118: /* alter_db_optr ::= alter_db_optr fsync */ yytestcase(yyruleno==118);
{ yylhsminor.yy94 = yymsp[-1].minor.yy94; yylhsminor.yy94.fsyncPeriod = strtol(yymsp[0].minor.yy0.z, NULL, 10); }
yymsp[-1].minor.yy94 = yylhsminor.yy94;
{ yylhsminor.yy322 = yymsp[-1].minor.yy322; yylhsminor.yy322.fsyncPeriod = strtol(yymsp[0].minor.yy0.z, NULL, 10); }
yymsp[-1].minor.yy322 = yylhsminor.yy322;
break;
case 104: /* db_optr ::= db_optr comp */
case 116: /* alter_db_optr ::= alter_db_optr comp */ yytestcase(yyruleno==116);
{ yylhsminor.yy94 = yymsp[-1].minor.yy94; yylhsminor.yy94.compressionLevel = strtol(yymsp[0].minor.yy0.z, NULL, 10); }
yymsp[-1].minor.yy94 = yylhsminor.yy94;
{ yylhsminor.yy322 = yymsp[-1].minor.yy322; yylhsminor.yy322.compressionLevel = strtol(yymsp[0].minor.yy0.z, NULL, 10); }
yymsp[-1].minor.yy322 = yylhsminor.yy322;
break;
case 105: /* db_optr ::= db_optr prec */
{ yylhsminor.yy94 = yymsp[-1].minor.yy94; yylhsminor.yy94.precision = yymsp[0].minor.yy0; }
yymsp[-1].minor.yy94 = yylhsminor.yy94;
{ yylhsminor.yy322 = yymsp[-1].minor.yy322; yylhsminor.yy322.precision = yymsp[0].minor.yy0; }
yymsp[-1].minor.yy322 = yylhsminor.yy322;
break;
case 106: /* db_optr ::= db_optr keep */
case 114: /* alter_db_optr ::= alter_db_optr keep */ yytestcase(yyruleno==114);
{ yylhsminor.yy94 = yymsp[-1].minor.yy94; yylhsminor.yy94.keep = yymsp[0].minor.yy429; }
yymsp[-1].minor.yy94 = yylhsminor.yy94;
{ yylhsminor.yy322 = yymsp[-1].minor.yy322; yylhsminor.yy322.keep = yymsp[0].minor.yy159; }
yymsp[-1].minor.yy322 = yylhsminor.yy322;
break;
case 107: /* db_optr ::= db_optr update */
case 119: /* alter_db_optr ::= alter_db_optr update */ yytestcase(yyruleno==119);
{ yylhsminor.yy94 = yymsp[-1].minor.yy94; yylhsminor.yy94.update = strtol(yymsp[0].minor.yy0.z, NULL, 10); }
yymsp[-1].minor.yy94 = yylhsminor.yy94;
{ yylhsminor.yy322 = yymsp[-1].minor.yy322; yylhsminor.yy322.update = strtol(yymsp[0].minor.yy0.z, NULL, 10); }
yymsp[-1].minor.yy322 = yylhsminor.yy322;
break;
case 108: /* db_optr ::= db_optr cachelast */
case 120: /* alter_db_optr ::= alter_db_optr cachelast */ yytestcase(yyruleno==120);
{ yylhsminor.yy94 = yymsp[-1].minor.yy94; yylhsminor.yy94.cachelast = strtol(yymsp[0].minor.yy0.z, NULL, 10); }
yymsp[-1].minor.yy94 = yylhsminor.yy94;
{ yylhsminor.yy322 = yymsp[-1].minor.yy322; yylhsminor.yy322.cachelast = strtol(yymsp[0].minor.yy0.z, NULL, 10); }
yymsp[-1].minor.yy322 = yylhsminor.yy322;
break;
case 109: /* topic_optr ::= db_optr */
case 121: /* alter_topic_optr ::= alter_db_optr */ yytestcase(yyruleno==121);
{ yylhsminor.yy94 = yymsp[0].minor.yy94; yylhsminor.yy94.dbType = TSDB_DB_TYPE_TOPIC; }
yymsp[0].minor.yy94 = yylhsminor.yy94;
{ yylhsminor.yy322 = yymsp[0].minor.yy322; yylhsminor.yy322.dbType = TSDB_DB_TYPE_TOPIC; }
yymsp[0].minor.yy322 = yylhsminor.yy322;
break;
case 110: /* topic_optr ::= topic_optr partitions */
case 122: /* alter_topic_optr ::= alter_topic_optr partitions */ yytestcase(yyruleno==122);
{ yylhsminor.yy94 = yymsp[-1].minor.yy94; yylhsminor.yy94.partitions = strtol(yymsp[0].minor.yy0.z, NULL, 10); }
yymsp[-1].minor.yy94 = yylhsminor.yy94;
{ yylhsminor.yy322 = yymsp[-1].minor.yy322; yylhsminor.yy322.partitions = strtol(yymsp[0].minor.yy0.z, NULL, 10); }
yymsp[-1].minor.yy322 = yylhsminor.yy322;
break;
case 111: /* alter_db_optr ::= */
{ setDefaultCreateDbOption(&yymsp[1].minor.yy94); yymsp[1].minor.yy94.dbType = TSDB_DB_TYPE_DEFAULT;}
{ setDefaultCreateDbOption(&yymsp[1].minor.yy322); yymsp[1].minor.yy322.dbType = TSDB_DB_TYPE_DEFAULT;}
break;
case 123: /* typename ::= ids */
{
yymsp[0].minor.yy0.type = 0;
tSetColumnType (&yylhsminor.yy451, &yymsp[0].minor.yy0);
tSetColumnType (&yylhsminor.yy407, &yymsp[0].minor.yy0);
}
yymsp[0].minor.yy451 = yylhsminor.yy451;
yymsp[0].minor.yy407 = yylhsminor.yy407;
break;
case 124: /* typename ::= ids LP signed RP */
{
if (yymsp[-1].minor.yy481 <= 0) {
if (yymsp[-1].minor.yy317 <= 0) {
yymsp[-3].minor.yy0.type = 0;
tSetColumnType(&yylhsminor.yy451, &yymsp[-3].minor.yy0);
tSetColumnType(&yylhsminor.yy407, &yymsp[-3].minor.yy0);
} else {
yymsp[-3].minor.yy0.type = -yymsp[-1].minor.yy481; // negative value of name length
tSetColumnType(&yylhsminor.yy451, &yymsp[-3].minor.yy0);
yymsp[-3].minor.yy0.type = -yymsp[-1].minor.yy317; // negative value of name length
tSetColumnType(&yylhsminor.yy407, &yymsp[-3].minor.yy0);
}
}
yymsp[-3].minor.yy451 = yylhsminor.yy451;
yymsp[-3].minor.yy407 = yylhsminor.yy407;
break;
case 125: /* typename ::= ids UNSIGNED */
{
yymsp[-1].minor.yy0.type = 0;
yymsp[-1].minor.yy0.n = ((yymsp[0].minor.yy0.z + yymsp[0].minor.yy0.n) - yymsp[-1].minor.yy0.z);
tSetColumnType (&yylhsminor.yy451, &yymsp[-1].minor.yy0);
tSetColumnType (&yylhsminor.yy407, &yymsp[-1].minor.yy0);
}
yymsp[-1].minor.yy451 = yylhsminor.yy451;
yymsp[-1].minor.yy407 = yylhsminor.yy407;
break;
case 126: /* signed ::= INTEGER */
{ yylhsminor.yy481 = strtol(yymsp[0].minor.yy0.z, NULL, 10); }
yymsp[0].minor.yy481 = yylhsminor.yy481;
{ yylhsminor.yy317 = strtol(yymsp[0].minor.yy0.z, NULL, 10); }
yymsp[0].minor.yy317 = yylhsminor.yy317;
break;
case 127: /* signed ::= PLUS INTEGER */
{ yymsp[-1].minor.yy481 = strtol(yymsp[0].minor.yy0.z, NULL, 10); }
{ yymsp[-1].minor.yy317 = strtol(yymsp[0].minor.yy0.z, NULL, 10); }
break;
case 128: /* signed ::= MINUS INTEGER */
{ yymsp[-1].minor.yy481 = -strtol(yymsp[0].minor.yy0.z, NULL, 10);}
{ yymsp[-1].minor.yy317 = -strtol(yymsp[0].minor.yy0.z, NULL, 10);}
break;
case 132: /* cmd ::= CREATE TABLE create_table_list */
{ pInfo->type = TSDB_SQL_CREATE_TABLE; pInfo->pCreateTableInfo = yymsp[0].minor.yy194;}
{ pInfo->type = TSDB_SQL_CREATE_TABLE; pInfo->pCreateTableInfo = yymsp[0].minor.yy14;}
break;
case 133: /* create_table_list ::= create_from_stable */
{
SCreateTableSql* pCreateTable = calloc(1, sizeof(SCreateTableSql));
pCreateTable->childTableInfo = taosArrayInit(4, sizeof(SCreatedTableInfo));
taosArrayPush(pCreateTable->childTableInfo, &yymsp[0].minor.yy252);
taosArrayPush(pCreateTable->childTableInfo, &yymsp[0].minor.yy206);
pCreateTable->type = TSQL_CREATE_TABLE_FROM_STABLE;
yylhsminor.yy194 = pCreateTable;
yylhsminor.yy14 = pCreateTable;
}
yymsp[0].minor.yy194 = yylhsminor.yy194;
yymsp[0].minor.yy14 = yylhsminor.yy14;
break;
case 134: /* create_table_list ::= create_table_list create_from_stable */
{
taosArrayPush(yymsp[-1].minor.yy194->childTableInfo, &yymsp[0].minor.yy252);
yylhsminor.yy194 = yymsp[-1].minor.yy194;
taosArrayPush(yymsp[-1].minor.yy14->childTableInfo, &yymsp[0].minor.yy206);
yylhsminor.yy14 = yymsp[-1].minor.yy14;
}
yymsp[-1].minor.yy194 = yylhsminor.yy194;
yymsp[-1].minor.yy14 = yylhsminor.yy14;
break;
case 135: /* create_table_args ::= ifnotexists ids cpxName LP columnlist RP */
{
yylhsminor.yy194 = tSetCreateTableInfo(yymsp[-1].minor.yy429, NULL, NULL, TSQL_CREATE_TABLE);
setSqlInfo(pInfo, yylhsminor.yy194, NULL, TSDB_SQL_CREATE_TABLE);
yylhsminor.yy14 = tSetCreateTableInfo(yymsp[-1].minor.yy159, NULL, NULL, TSQL_CREATE_TABLE);
setSqlInfo(pInfo, yylhsminor.yy14, 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.yy194 = yylhsminor.yy194;
yymsp[-5].minor.yy14 = yylhsminor.yy14;
break;
case 136: /* create_stable_args ::= ifnotexists ids cpxName LP columnlist RP TAGS LP columnlist RP */
{
yylhsminor.yy194 = tSetCreateTableInfo(yymsp[-5].minor.yy429, yymsp[-1].minor.yy429, NULL, TSQL_CREATE_STABLE);
setSqlInfo(pInfo, yylhsminor.yy194, NULL, TSDB_SQL_CREATE_TABLE);
yylhsminor.yy14 = tSetCreateTableInfo(yymsp[-5].minor.yy159, yymsp[-1].minor.yy159, NULL, TSQL_CREATE_STABLE);
setSqlInfo(pInfo, yylhsminor.yy14, 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.yy194 = yylhsminor.yy194;
yymsp[-9].minor.yy14 = yylhsminor.yy14;
break;
case 137: /* create_from_stable ::= ifnotexists ids cpxName USING ids cpxName TAGS LP tagitemlist RP */
{
yymsp[-5].minor.yy0.n += yymsp[-4].minor.yy0.n;
yymsp[-8].minor.yy0.n += yymsp[-7].minor.yy0.n;
yylhsminor.yy252 = createNewChildTableInfo(&yymsp[-5].minor.yy0, NULL, yymsp[-1].minor.yy429, &yymsp[-8].minor.yy0, &yymsp[-9].minor.yy0);
yylhsminor.yy206 = createNewChildTableInfo(&yymsp[-5].minor.yy0, NULL, yymsp[-1].minor.yy159, &yymsp[-8].minor.yy0, &yymsp[-9].minor.yy0);
}
yymsp[-9].minor.yy252 = yylhsminor.yy252;
yymsp[-9].minor.yy206 = yylhsminor.yy206;
break;
case 138: /* create_from_stable ::= ifnotexists ids cpxName USING ids cpxName LP tagNamelist RP TAGS LP tagitemlist RP */
{
yymsp[-8].minor.yy0.n += yymsp[-7].minor.yy0.n;
yymsp[-11].minor.yy0.n += yymsp[-10].minor.yy0.n;
yylhsminor.yy252 = createNewChildTableInfo(&yymsp[-8].minor.yy0, yymsp[-5].minor.yy429, yymsp[-1].minor.yy429, &yymsp[-11].minor.yy0, &yymsp[-12].minor.yy0);
yylhsminor.yy206 = createNewChildTableInfo(&yymsp[-8].minor.yy0, yymsp[-5].minor.yy159, yymsp[-1].minor.yy159, &yymsp[-11].minor.yy0, &yymsp[-12].minor.yy0);
}
yymsp[-12].minor.yy252 = yylhsminor.yy252;
yymsp[-12].minor.yy206 = yylhsminor.yy206;
break;
case 139: /* tagNamelist ::= tagNamelist COMMA ids */
{taosArrayPush(yymsp[-2].minor.yy429, &yymsp[0].minor.yy0); yylhsminor.yy429 = yymsp[-2].minor.yy429; }
yymsp[-2].minor.yy429 = yylhsminor.yy429;
{taosArrayPush(yymsp[-2].minor.yy159, &yymsp[0].minor.yy0); yylhsminor.yy159 = yymsp[-2].minor.yy159; }
yymsp[-2].minor.yy159 = yylhsminor.yy159;
break;
case 140: /* tagNamelist ::= ids */
{yylhsminor.yy429 = taosArrayInit(4, sizeof(SStrToken)); taosArrayPush(yylhsminor.yy429, &yymsp[0].minor.yy0);}
yymsp[0].minor.yy429 = yylhsminor.yy429;
{yylhsminor.yy159 = taosArrayInit(4, sizeof(SStrToken)); taosArrayPush(yylhsminor.yy159, &yymsp[0].minor.yy0);}
yymsp[0].minor.yy159 = yylhsminor.yy159;
break;
case 141: /* create_table_args ::= ifnotexists ids cpxName AS select */
{
yylhsminor.yy194 = tSetCreateTableInfo(NULL, NULL, yymsp[0].minor.yy254, TSQL_CREATE_STREAM);
setSqlInfo(pInfo, yylhsminor.yy194, NULL, TSDB_SQL_CREATE_TABLE);
yylhsminor.yy14 = tSetCreateTableInfo(NULL, NULL, yymsp[0].minor.yy272, TSQL_CREATE_STREAM);
setSqlInfo(pInfo, yylhsminor.yy14, 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.yy194 = yylhsminor.yy194;
yymsp[-4].minor.yy14 = yylhsminor.yy14;
break;
case 142: /* columnlist ::= columnlist COMMA column */
{taosArrayPush(yymsp[-2].minor.yy429, &yymsp[0].minor.yy451); yylhsminor.yy429 = yymsp[-2].minor.yy429; }
yymsp[-2].minor.yy429 = yylhsminor.yy429;
{taosArrayPush(yymsp[-2].minor.yy159, &yymsp[0].minor.yy407); yylhsminor.yy159 = yymsp[-2].minor.yy159; }
yymsp[-2].minor.yy159 = yylhsminor.yy159;
break;
case 143: /* columnlist ::= column */
{yylhsminor.yy429 = taosArrayInit(4, sizeof(TAOS_FIELD)); taosArrayPush(yylhsminor.yy429, &yymsp[0].minor.yy451);}
yymsp[0].minor.yy429 = yylhsminor.yy429;
{yylhsminor.yy159 = taosArrayInit(4, sizeof(TAOS_FIELD)); taosArrayPush(yylhsminor.yy159, &yymsp[0].minor.yy407);}
yymsp[0].minor.yy159 = yylhsminor.yy159;
break;
case 144: /* column ::= ids typename */
{
tSetColumnInfo(&yylhsminor.yy451, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy451);
tSetColumnInfo(&yylhsminor.yy407, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy407);
}
yymsp[-1].minor.yy451 = yylhsminor.yy451;
yymsp[-1].minor.yy407 = yylhsminor.yy407;
break;
case 145: /* tagitemlist ::= tagitemlist COMMA tagitem */
{ yylhsminor.yy429 = tVariantListAppend(yymsp[-2].minor.yy429, &yymsp[0].minor.yy218, -1); }
yymsp[-2].minor.yy429 = yylhsminor.yy429;
{ yylhsminor.yy159 = tVariantListAppend(yymsp[-2].minor.yy159, &yymsp[0].minor.yy488, -1); }
yymsp[-2].minor.yy159 = yylhsminor.yy159;
break;
case 146: /* tagitemlist ::= tagitem */
{ yylhsminor.yy429 = tVariantListAppend(NULL, &yymsp[0].minor.yy218, -1); }
yymsp[0].minor.yy429 = yylhsminor.yy429;
{ yylhsminor.yy159 = tVariantListAppend(NULL, &yymsp[0].minor.yy488, -1); }
yymsp[0].minor.yy159 = yylhsminor.yy159;
break;
case 147: /* tagitem ::= INTEGER */
case 148: /* tagitem ::= FLOAT */ yytestcase(yyruleno==148);
case 149: /* tagitem ::= STRING */ yytestcase(yyruleno==149);
case 150: /* tagitem ::= BOOL */ yytestcase(yyruleno==150);
{ toTSDBType(yymsp[0].minor.yy0.type); tVariantCreate(&yylhsminor.yy218, &yymsp[0].minor.yy0); }
yymsp[0].minor.yy218 = yylhsminor.yy218;
{ toTSDBType(yymsp[0].minor.yy0.type); tVariantCreate(&yylhsminor.yy488, &yymsp[0].minor.yy0); }
yymsp[0].minor.yy488 = yylhsminor.yy488;
break;
case 151: /* tagitem ::= NULL */
{ yymsp[0].minor.yy0.type = 0; tVariantCreate(&yylhsminor.yy218, &yymsp[0].minor.yy0); }
yymsp[0].minor.yy218 = yylhsminor.yy218;
{ yymsp[0].minor.yy0.type = 0; tVariantCreate(&yylhsminor.yy488, &yymsp[0].minor.yy0); }
yymsp[0].minor.yy488 = yylhsminor.yy488;
break;
case 152: /* tagitem ::= MINUS INTEGER */
case 153: /* tagitem ::= MINUS FLOAT */ yytestcase(yyruleno==153);
......@@ -2583,56 +2587,56 @@ static void yy_reduce(
yymsp[-1].minor.yy0.n += yymsp[0].minor.yy0.n;
yymsp[-1].minor.yy0.type = yymsp[0].minor.yy0.type;
toTSDBType(yymsp[-1].minor.yy0.type);
tVariantCreate(&yylhsminor.yy218, &yymsp[-1].minor.yy0);
tVariantCreate(&yylhsminor.yy488, &yymsp[-1].minor.yy0);
}
yymsp[-1].minor.yy218 = yylhsminor.yy218;
yymsp[-1].minor.yy488 = yylhsminor.yy488;
break;
case 156: /* select ::= SELECT selcollist from where_opt interval_opt session_option fill_opt sliding_opt groupby_opt orderby_opt having_opt slimit_opt limit_opt */
{
yylhsminor.yy254 = tSetQuerySqlNode(&yymsp[-12].minor.yy0, yymsp[-11].minor.yy429, yymsp[-10].minor.yy70, yymsp[-9].minor.yy170, yymsp[-4].minor.yy429, yymsp[-3].minor.yy429, &yymsp[-8].minor.yy220, &yymsp[-7].minor.yy87, &yymsp[-5].minor.yy0, yymsp[-6].minor.yy429, &yymsp[0].minor.yy18, &yymsp[-1].minor.yy18);
yylhsminor.yy272 = tSetQuerySqlNode(&yymsp[-12].minor.yy0, yymsp[-11].minor.yy159, yymsp[-10].minor.yy514, yymsp[-9].minor.yy118, yymsp[-4].minor.yy159, yymsp[-3].minor.yy159, &yymsp[-8].minor.yy184, &yymsp[-7].minor.yy249, &yymsp[-5].minor.yy0, yymsp[-6].minor.yy159, &yymsp[0].minor.yy440, &yymsp[-1].minor.yy440);
}
yymsp[-12].minor.yy254 = yylhsminor.yy254;
yymsp[-12].minor.yy272 = yylhsminor.yy272;
break;
case 157: /* select ::= LP select RP */
{yymsp[-2].minor.yy254 = yymsp[-1].minor.yy254;}
{yymsp[-2].minor.yy272 = yymsp[-1].minor.yy272;}
break;
case 158: /* union ::= select */
{ yylhsminor.yy141 = setSubclause(NULL, yymsp[0].minor.yy254); }
yymsp[0].minor.yy141 = yylhsminor.yy141;
{ yylhsminor.yy391 = setSubclause(NULL, yymsp[0].minor.yy272); }
yymsp[0].minor.yy391 = yylhsminor.yy391;
break;
case 159: /* union ::= union UNION ALL select */
{ yylhsminor.yy141 = appendSelectClause(yymsp[-3].minor.yy141, yymsp[0].minor.yy254); }
yymsp[-3].minor.yy141 = yylhsminor.yy141;
{ yylhsminor.yy391 = appendSelectClause(yymsp[-3].minor.yy391, yymsp[0].minor.yy272); }
yymsp[-3].minor.yy391 = yylhsminor.yy391;
break;
case 160: /* cmd ::= union */
{ setSqlInfo(pInfo, yymsp[0].minor.yy141, NULL, TSDB_SQL_SELECT); }
{ setSqlInfo(pInfo, yymsp[0].minor.yy391, NULL, TSDB_SQL_SELECT); }
break;
case 161: /* select ::= SELECT selcollist */
{
yylhsminor.yy254 = tSetQuerySqlNode(&yymsp[-1].minor.yy0, yymsp[0].minor.yy429, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
yylhsminor.yy272 = tSetQuerySqlNode(&yymsp[-1].minor.yy0, yymsp[0].minor.yy159, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
}
yymsp[-1].minor.yy254 = yylhsminor.yy254;
yymsp[-1].minor.yy272 = yylhsminor.yy272;
break;
case 162: /* sclp ::= selcollist COMMA */
{yylhsminor.yy429 = yymsp[-1].minor.yy429;}
yymsp[-1].minor.yy429 = yylhsminor.yy429;
{yylhsminor.yy159 = yymsp[-1].minor.yy159;}
yymsp[-1].minor.yy159 = yylhsminor.yy159;
break;
case 163: /* sclp ::= */
case 188: /* orderby_opt ::= */ yytestcase(yyruleno==188);
{yymsp[1].minor.yy429 = 0;}
{yymsp[1].minor.yy159 = 0;}
break;
case 164: /* selcollist ::= sclp distinct expr as */
{
yylhsminor.yy429 = tSqlExprListAppend(yymsp[-3].minor.yy429, yymsp[-1].minor.yy170, yymsp[-2].minor.yy0.n? &yymsp[-2].minor.yy0:0, yymsp[0].minor.yy0.n?&yymsp[0].minor.yy0:0);
yylhsminor.yy159 = tSqlExprListAppend(yymsp[-3].minor.yy159, yymsp[-1].minor.yy118, yymsp[-2].minor.yy0.n? &yymsp[-2].minor.yy0:0, yymsp[0].minor.yy0.n?&yymsp[0].minor.yy0:0);
}
yymsp[-3].minor.yy429 = yylhsminor.yy429;
yymsp[-3].minor.yy159 = yylhsminor.yy159;
break;
case 165: /* selcollist ::= sclp STAR */
{
tSqlExpr *pNode = tSqlExprCreateIdValue(NULL, TK_ALL);
yylhsminor.yy429 = tSqlExprListAppend(yymsp[-1].minor.yy429, pNode, 0, 0);
yylhsminor.yy159 = tSqlExprListAppend(yymsp[-1].minor.yy159, pNode, 0, 0);
}
yymsp[-1].minor.yy429 = yylhsminor.yy429;
yymsp[-1].minor.yy159 = yylhsminor.yy159;
break;
case 166: /* as ::= AS ids */
{ yymsp[-1].minor.yy0 = yymsp[0].minor.yy0; }
......@@ -2649,35 +2653,35 @@ static void yy_reduce(
yymsp[0].minor.yy0 = yylhsminor.yy0;
break;
case 171: /* from ::= FROM tablelist */
{yymsp[-1].minor.yy70 = yymsp[0].minor.yy429;}
{yymsp[-1].minor.yy514 = yymsp[0].minor.yy159;}
break;
case 172: /* from ::= FROM LP union RP */
{yymsp[-3].minor.yy70 = yymsp[-1].minor.yy141;}
{yymsp[-3].minor.yy514 = yymsp[-1].minor.yy391;}
break;
case 173: /* tablelist ::= ids cpxName */
{
toTSDBType(yymsp[-1].minor.yy0.type);
yymsp[-1].minor.yy0.n += yymsp[0].minor.yy0.n;
yylhsminor.yy429 = setTableNameList(NULL, &yymsp[-1].minor.yy0, NULL);
yylhsminor.yy159 = setTableNameList(NULL, &yymsp[-1].minor.yy0, NULL);
}
yymsp[-1].minor.yy429 = yylhsminor.yy429;
yymsp[-1].minor.yy159 = yylhsminor.yy159;
break;
case 174: /* tablelist ::= ids cpxName ids */
{
toTSDBType(yymsp[-2].minor.yy0.type);
toTSDBType(yymsp[0].minor.yy0.type);
yymsp[-2].minor.yy0.n += yymsp[-1].minor.yy0.n;
yylhsminor.yy429 = setTableNameList(NULL, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0);
yylhsminor.yy159 = setTableNameList(NULL, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0);
}
yymsp[-2].minor.yy429 = yylhsminor.yy429;
yymsp[-2].minor.yy159 = yylhsminor.yy159;
break;
case 175: /* tablelist ::= tablelist COMMA ids cpxName */
{
toTSDBType(yymsp[-1].minor.yy0.type);
yymsp[-1].minor.yy0.n += yymsp[0].minor.yy0.n;
yylhsminor.yy429 = setTableNameList(yymsp[-3].minor.yy429, &yymsp[-1].minor.yy0, NULL);
yylhsminor.yy159 = setTableNameList(yymsp[-3].minor.yy159, &yymsp[-1].minor.yy0, NULL);
}
yymsp[-3].minor.yy429 = yylhsminor.yy429;
yymsp[-3].minor.yy159 = yylhsminor.yy159;
break;
case 176: /* tablelist ::= tablelist COMMA ids cpxName ids */
{
......@@ -2685,35 +2689,35 @@ static void yy_reduce(
toTSDBType(yymsp[0].minor.yy0.type);
yymsp[-2].minor.yy0.n += yymsp[-1].minor.yy0.n;
yylhsminor.yy429 = setTableNameList(yymsp[-4].minor.yy429, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0);
yylhsminor.yy159 = setTableNameList(yymsp[-4].minor.yy159, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0);
}
yymsp[-4].minor.yy429 = yylhsminor.yy429;
yymsp[-4].minor.yy159 = yylhsminor.yy159;
break;
case 177: /* tmvar ::= VARIABLE */
{yylhsminor.yy0 = yymsp[0].minor.yy0;}
yymsp[0].minor.yy0 = yylhsminor.yy0;
break;
case 178: /* interval_opt ::= INTERVAL LP tmvar RP */
{yymsp[-3].minor.yy220.interval = yymsp[-1].minor.yy0; yymsp[-3].minor.yy220.offset.n = 0;}
{yymsp[-3].minor.yy184.interval = yymsp[-1].minor.yy0; yymsp[-3].minor.yy184.offset.n = 0;}
break;
case 179: /* interval_opt ::= INTERVAL LP tmvar COMMA tmvar RP */
{yymsp[-5].minor.yy220.interval = yymsp[-3].minor.yy0; yymsp[-5].minor.yy220.offset = yymsp[-1].minor.yy0;}
{yymsp[-5].minor.yy184.interval = yymsp[-3].minor.yy0; yymsp[-5].minor.yy184.offset = yymsp[-1].minor.yy0;}
break;
case 180: /* interval_opt ::= */
{memset(&yymsp[1].minor.yy220, 0, sizeof(yymsp[1].minor.yy220));}
{memset(&yymsp[1].minor.yy184, 0, sizeof(yymsp[1].minor.yy184));}
break;
case 181: /* session_option ::= */
{yymsp[1].minor.yy87.col.n = 0; yymsp[1].minor.yy87.gap.n = 0;}
{yymsp[1].minor.yy249.col.n = 0; yymsp[1].minor.yy249.gap.n = 0;}
break;
case 182: /* session_option ::= SESSION LP ids cpxName COMMA tmvar RP */
{
yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n;
yymsp[-6].minor.yy87.col = yymsp[-4].minor.yy0;
yymsp[-6].minor.yy87.gap = yymsp[-1].minor.yy0;
yymsp[-6].minor.yy249.col = yymsp[-4].minor.yy0;
yymsp[-6].minor.yy249.gap = yymsp[-1].minor.yy0;
}
break;
case 183: /* fill_opt ::= */
{ yymsp[1].minor.yy429 = 0; }
{ yymsp[1].minor.yy159 = 0; }
break;
case 184: /* fill_opt ::= FILL LP ID COMMA tagitemlist RP */
{
......@@ -2721,14 +2725,14 @@ static void yy_reduce(
toTSDBType(yymsp[-3].minor.yy0.type);
tVariantCreate(&A, &yymsp[-3].minor.yy0);
tVariantListInsert(yymsp[-1].minor.yy429, &A, -1, 0);
yymsp[-5].minor.yy429 = yymsp[-1].minor.yy429;
tVariantListInsert(yymsp[-1].minor.yy159, &A, -1, 0);
yymsp[-5].minor.yy159 = yymsp[-1].minor.yy159;
}
break;
case 185: /* fill_opt ::= FILL LP ID RP */
{
toTSDBType(yymsp[-1].minor.yy0.type);
yymsp[-3].minor.yy429 = tVariantListAppendToken(NULL, &yymsp[-1].minor.yy0, -1);
yymsp[-3].minor.yy159 = tVariantListAppendToken(NULL, &yymsp[-1].minor.yy0, -1);
}
break;
case 186: /* sliding_opt ::= SLIDING LP tmvar RP */
......@@ -2738,238 +2742,241 @@ static void yy_reduce(
{yymsp[1].minor.yy0.n = 0; yymsp[1].minor.yy0.z = NULL; yymsp[1].minor.yy0.type = 0; }
break;
case 189: /* orderby_opt ::= ORDER BY sortlist */
{yymsp[-2].minor.yy429 = yymsp[0].minor.yy429;}
{yymsp[-2].minor.yy159 = yymsp[0].minor.yy159;}
break;
case 190: /* sortlist ::= sortlist COMMA item sortorder */
{
yylhsminor.yy429 = tVariantListAppend(yymsp[-3].minor.yy429, &yymsp[-1].minor.yy218, yymsp[0].minor.yy116);
yylhsminor.yy159 = tVariantListAppend(yymsp[-3].minor.yy159, &yymsp[-1].minor.yy488, yymsp[0].minor.yy20);
}
yymsp[-3].minor.yy429 = yylhsminor.yy429;
yymsp[-3].minor.yy159 = yylhsminor.yy159;
break;
case 191: /* sortlist ::= item sortorder */
{
yylhsminor.yy429 = tVariantListAppend(NULL, &yymsp[-1].minor.yy218, yymsp[0].minor.yy116);
yylhsminor.yy159 = tVariantListAppend(NULL, &yymsp[-1].minor.yy488, yymsp[0].minor.yy20);
}
yymsp[-1].minor.yy429 = yylhsminor.yy429;
yymsp[-1].minor.yy159 = yylhsminor.yy159;
break;
case 192: /* item ::= ids cpxName */
{
toTSDBType(yymsp[-1].minor.yy0.type);
yymsp[-1].minor.yy0.n += yymsp[0].minor.yy0.n;
tVariantCreate(&yylhsminor.yy218, &yymsp[-1].minor.yy0);
tVariantCreate(&yylhsminor.yy488, &yymsp[-1].minor.yy0);
}
yymsp[-1].minor.yy218 = yylhsminor.yy218;
yymsp[-1].minor.yy488 = yylhsminor.yy488;
break;
case 193: /* sortorder ::= ASC */
{ yymsp[0].minor.yy116 = TSDB_ORDER_ASC; }
{ yymsp[0].minor.yy20 = TSDB_ORDER_ASC; }
break;
case 194: /* sortorder ::= DESC */
{ yymsp[0].minor.yy116 = TSDB_ORDER_DESC;}
{ yymsp[0].minor.yy20 = TSDB_ORDER_DESC;}
break;
case 195: /* sortorder ::= */
{ yymsp[1].minor.yy116 = TSDB_ORDER_ASC; }
{ yymsp[1].minor.yy20 = TSDB_ORDER_ASC; }
break;
case 196: /* groupby_opt ::= */
{ yymsp[1].minor.yy429 = 0;}
{ yymsp[1].minor.yy159 = 0;}
break;
case 197: /* groupby_opt ::= GROUP BY grouplist */
{ yymsp[-2].minor.yy429 = yymsp[0].minor.yy429;}
{ yymsp[-2].minor.yy159 = yymsp[0].minor.yy159;}
break;
case 198: /* grouplist ::= grouplist COMMA item */
{
yylhsminor.yy429 = tVariantListAppend(yymsp[-2].minor.yy429, &yymsp[0].minor.yy218, -1);
yylhsminor.yy159 = tVariantListAppend(yymsp[-2].minor.yy159, &yymsp[0].minor.yy488, -1);
}
yymsp[-2].minor.yy429 = yylhsminor.yy429;
yymsp[-2].minor.yy159 = yylhsminor.yy159;
break;
case 199: /* grouplist ::= item */
{
yylhsminor.yy429 = tVariantListAppend(NULL, &yymsp[0].minor.yy218, -1);
yylhsminor.yy159 = tVariantListAppend(NULL, &yymsp[0].minor.yy488, -1);
}
yymsp[0].minor.yy429 = yylhsminor.yy429;
yymsp[0].minor.yy159 = yylhsminor.yy159;
break;
case 200: /* having_opt ::= */
case 210: /* where_opt ::= */ yytestcase(yyruleno==210);
case 249: /* expritem ::= */ yytestcase(yyruleno==249);
{yymsp[1].minor.yy170 = 0;}
{yymsp[1].minor.yy118 = 0;}
break;
case 201: /* having_opt ::= HAVING expr */
case 211: /* where_opt ::= WHERE expr */ yytestcase(yyruleno==211);
{yymsp[-1].minor.yy170 = yymsp[0].minor.yy170;}
{yymsp[-1].minor.yy118 = yymsp[0].minor.yy118;}
break;
case 202: /* limit_opt ::= */
case 206: /* slimit_opt ::= */ yytestcase(yyruleno==206);
{yymsp[1].minor.yy18.limit = -1; yymsp[1].minor.yy18.offset = 0;}
{yymsp[1].minor.yy440.limit = -1; yymsp[1].minor.yy440.offset = 0;}
break;
case 203: /* limit_opt ::= LIMIT signed */
case 207: /* slimit_opt ::= SLIMIT signed */ yytestcase(yyruleno==207);
{yymsp[-1].minor.yy18.limit = yymsp[0].minor.yy481; yymsp[-1].minor.yy18.offset = 0;}
{yymsp[-1].minor.yy440.limit = yymsp[0].minor.yy317; yymsp[-1].minor.yy440.offset = 0;}
break;
case 204: /* limit_opt ::= LIMIT signed OFFSET signed */
{ yymsp[-3].minor.yy18.limit = yymsp[-2].minor.yy481; yymsp[-3].minor.yy18.offset = yymsp[0].minor.yy481;}
{ yymsp[-3].minor.yy440.limit = yymsp[-2].minor.yy317; yymsp[-3].minor.yy440.offset = yymsp[0].minor.yy317;}
break;
case 205: /* limit_opt ::= LIMIT signed COMMA signed */
{ yymsp[-3].minor.yy18.limit = yymsp[0].minor.yy481; yymsp[-3].minor.yy18.offset = yymsp[-2].minor.yy481;}
{ yymsp[-3].minor.yy440.limit = yymsp[0].minor.yy317; yymsp[-3].minor.yy440.offset = yymsp[-2].minor.yy317;}
break;
case 208: /* slimit_opt ::= SLIMIT signed SOFFSET signed */
{yymsp[-3].minor.yy18.limit = yymsp[-2].minor.yy481; yymsp[-3].minor.yy18.offset = yymsp[0].minor.yy481;}
{yymsp[-3].minor.yy440.limit = yymsp[-2].minor.yy317; yymsp[-3].minor.yy440.offset = yymsp[0].minor.yy317;}
break;
case 209: /* slimit_opt ::= SLIMIT signed COMMA signed */
{yymsp[-3].minor.yy18.limit = yymsp[0].minor.yy481; yymsp[-3].minor.yy18.offset = yymsp[-2].minor.yy481;}
{yymsp[-3].minor.yy440.limit = yymsp[0].minor.yy317; yymsp[-3].minor.yy440.offset = yymsp[-2].minor.yy317;}
break;
case 212: /* expr ::= LP expr RP */
{yylhsminor.yy170 = yymsp[-1].minor.yy170; yylhsminor.yy170->token.z = yymsp[-2].minor.yy0.z; yylhsminor.yy170->token.n = (yymsp[0].minor.yy0.z - yymsp[-2].minor.yy0.z + 1);}
yymsp[-2].minor.yy170 = yylhsminor.yy170;
{yylhsminor.yy118 = yymsp[-1].minor.yy118; yylhsminor.yy118->token.z = yymsp[-2].minor.yy0.z; yylhsminor.yy118->token.n = (yymsp[0].minor.yy0.z - yymsp[-2].minor.yy0.z + 1);}
yymsp[-2].minor.yy118 = yylhsminor.yy118;
break;
case 213: /* expr ::= ID */
{ yylhsminor.yy170 = tSqlExprCreateIdValue(&yymsp[0].minor.yy0, TK_ID);}
yymsp[0].minor.yy170 = yylhsminor.yy170;
{ yylhsminor.yy118 = tSqlExprCreateIdValue(&yymsp[0].minor.yy0, TK_ID);}
yymsp[0].minor.yy118 = yylhsminor.yy118;
break;
case 214: /* expr ::= ID DOT ID */
{ yymsp[-2].minor.yy0.n += (1+yymsp[0].minor.yy0.n); yylhsminor.yy170 = tSqlExprCreateIdValue(&yymsp[-2].minor.yy0, TK_ID);}
yymsp[-2].minor.yy170 = yylhsminor.yy170;
{ yymsp[-2].minor.yy0.n += (1+yymsp[0].minor.yy0.n); yylhsminor.yy118 = tSqlExprCreateIdValue(&yymsp[-2].minor.yy0, TK_ID);}
yymsp[-2].minor.yy118 = yylhsminor.yy118;
break;
case 215: /* expr ::= ID DOT STAR */
{ yymsp[-2].minor.yy0.n += (1+yymsp[0].minor.yy0.n); yylhsminor.yy170 = tSqlExprCreateIdValue(&yymsp[-2].minor.yy0, TK_ALL);}
yymsp[-2].minor.yy170 = yylhsminor.yy170;
{ yymsp[-2].minor.yy0.n += (1+yymsp[0].minor.yy0.n); yylhsminor.yy118 = tSqlExprCreateIdValue(&yymsp[-2].minor.yy0, TK_ALL);}
yymsp[-2].minor.yy118 = yylhsminor.yy118;
break;
case 216: /* expr ::= INTEGER */
{ yylhsminor.yy170 = tSqlExprCreateIdValue(&yymsp[0].minor.yy0, TK_INTEGER);}
yymsp[0].minor.yy170 = yylhsminor.yy170;
{ yylhsminor.yy118 = tSqlExprCreateIdValue(&yymsp[0].minor.yy0, TK_INTEGER);}
yymsp[0].minor.yy118 = yylhsminor.yy118;
break;
case 217: /* expr ::= MINUS INTEGER */
case 218: /* expr ::= PLUS INTEGER */ yytestcase(yyruleno==218);
{ yymsp[-1].minor.yy0.n += yymsp[0].minor.yy0.n; yymsp[-1].minor.yy0.type = TK_INTEGER; yylhsminor.yy170 = tSqlExprCreateIdValue(&yymsp[-1].minor.yy0, TK_INTEGER);}
yymsp[-1].minor.yy170 = yylhsminor.yy170;
{ yymsp[-1].minor.yy0.n += yymsp[0].minor.yy0.n; yymsp[-1].minor.yy0.type = TK_INTEGER; yylhsminor.yy118 = tSqlExprCreateIdValue(&yymsp[-1].minor.yy0, TK_INTEGER);}
yymsp[-1].minor.yy118 = yylhsminor.yy118;
break;
case 219: /* expr ::= FLOAT */
{ yylhsminor.yy170 = tSqlExprCreateIdValue(&yymsp[0].minor.yy0, TK_FLOAT);}
yymsp[0].minor.yy170 = yylhsminor.yy170;
{ yylhsminor.yy118 = tSqlExprCreateIdValue(&yymsp[0].minor.yy0, TK_FLOAT);}
yymsp[0].minor.yy118 = yylhsminor.yy118;
break;
case 220: /* expr ::= MINUS FLOAT */
case 221: /* expr ::= PLUS FLOAT */ yytestcase(yyruleno==221);
{ yymsp[-1].minor.yy0.n += yymsp[0].minor.yy0.n; yymsp[-1].minor.yy0.type = TK_FLOAT; yylhsminor.yy170 = tSqlExprCreateIdValue(&yymsp[-1].minor.yy0, TK_FLOAT);}
yymsp[-1].minor.yy170 = yylhsminor.yy170;
{ yymsp[-1].minor.yy0.n += yymsp[0].minor.yy0.n; yymsp[-1].minor.yy0.type = TK_FLOAT; yylhsminor.yy118 = tSqlExprCreateIdValue(&yymsp[-1].minor.yy0, TK_FLOAT);}
yymsp[-1].minor.yy118 = yylhsminor.yy118;
break;
case 222: /* expr ::= STRING */
{ yylhsminor.yy170 = tSqlExprCreateIdValue(&yymsp[0].minor.yy0, TK_STRING);}
yymsp[0].minor.yy170 = yylhsminor.yy170;
{ yylhsminor.yy118 = tSqlExprCreateIdValue(&yymsp[0].minor.yy0, TK_STRING);}
yymsp[0].minor.yy118 = yylhsminor.yy118;
break;
case 223: /* expr ::= NOW */
{ yylhsminor.yy170 = tSqlExprCreateIdValue(&yymsp[0].minor.yy0, TK_NOW); }
yymsp[0].minor.yy170 = yylhsminor.yy170;
{ yylhsminor.yy118 = tSqlExprCreateIdValue(&yymsp[0].minor.yy0, TK_NOW); }
yymsp[0].minor.yy118 = yylhsminor.yy118;
break;
case 224: /* expr ::= VARIABLE */
{ yylhsminor.yy170 = tSqlExprCreateIdValue(&yymsp[0].minor.yy0, TK_VARIABLE);}
yymsp[0].minor.yy170 = yylhsminor.yy170;
{ yylhsminor.yy118 = tSqlExprCreateIdValue(&yymsp[0].minor.yy0, TK_VARIABLE);}
yymsp[0].minor.yy118 = yylhsminor.yy118;
break;
case 225: /* expr ::= BOOL */
{ yylhsminor.yy170 = tSqlExprCreateIdValue(&yymsp[0].minor.yy0, TK_BOOL);}
yymsp[0].minor.yy170 = yylhsminor.yy170;
{ yylhsminor.yy118 = tSqlExprCreateIdValue(&yymsp[0].minor.yy0, TK_BOOL);}
yymsp[0].minor.yy118 = yylhsminor.yy118;
break;
case 226: /* expr ::= ID LP exprlist RP */
{ yylhsminor.yy170 = tSqlExprCreateFunction(yymsp[-1].minor.yy429, &yymsp[-3].minor.yy0, &yymsp[0].minor.yy0, yymsp[-3].minor.yy0.type); }
yymsp[-3].minor.yy170 = yylhsminor.yy170;
{ yylhsminor.yy118 = tSqlExprCreateFunction(yymsp[-1].minor.yy159, &yymsp[-3].minor.yy0, &yymsp[0].minor.yy0, yymsp[-3].minor.yy0.type); }
yymsp[-3].minor.yy118 = yylhsminor.yy118;
break;
case 227: /* expr ::= ID LP STAR RP */
{ yylhsminor.yy170 = tSqlExprCreateFunction(NULL, &yymsp[-3].minor.yy0, &yymsp[0].minor.yy0, yymsp[-3].minor.yy0.type); }
yymsp[-3].minor.yy170 = yylhsminor.yy170;
{ yylhsminor.yy118 = tSqlExprCreateFunction(NULL, &yymsp[-3].minor.yy0, &yymsp[0].minor.yy0, yymsp[-3].minor.yy0.type); }
yymsp[-3].minor.yy118 = yylhsminor.yy118;
break;
case 228: /* expr ::= expr IS NULL */
{yylhsminor.yy170 = tSqlExprCreate(yymsp[-2].minor.yy170, NULL, TK_ISNULL);}
yymsp[-2].minor.yy170 = yylhsminor.yy170;
{yylhsminor.yy118 = tSqlExprCreate(yymsp[-2].minor.yy118, NULL, TK_ISNULL);}
yymsp[-2].minor.yy118 = yylhsminor.yy118;
break;
case 229: /* expr ::= expr IS NOT NULL */
{yylhsminor.yy170 = tSqlExprCreate(yymsp[-3].minor.yy170, NULL, TK_NOTNULL);}
yymsp[-3].minor.yy170 = yylhsminor.yy170;
{yylhsminor.yy118 = tSqlExprCreate(yymsp[-3].minor.yy118, NULL, TK_NOTNULL);}
yymsp[-3].minor.yy118 = yylhsminor.yy118;
break;
case 230: /* expr ::= expr LT expr */
{yylhsminor.yy170 = tSqlExprCreate(yymsp[-2].minor.yy170, yymsp[0].minor.yy170, TK_LT);}
yymsp[-2].minor.yy170 = yylhsminor.yy170;
{yylhsminor.yy118 = tSqlExprCreate(yymsp[-2].minor.yy118, yymsp[0].minor.yy118, TK_LT);}
yymsp[-2].minor.yy118 = yylhsminor.yy118;
break;
case 231: /* expr ::= expr GT expr */
{yylhsminor.yy170 = tSqlExprCreate(yymsp[-2].minor.yy170, yymsp[0].minor.yy170, TK_GT);}
yymsp[-2].minor.yy170 = yylhsminor.yy170;
{yylhsminor.yy118 = tSqlExprCreate(yymsp[-2].minor.yy118, yymsp[0].minor.yy118, TK_GT);}
yymsp[-2].minor.yy118 = yylhsminor.yy118;
break;
case 232: /* expr ::= expr LE expr */
{yylhsminor.yy170 = tSqlExprCreate(yymsp[-2].minor.yy170, yymsp[0].minor.yy170, TK_LE);}
yymsp[-2].minor.yy170 = yylhsminor.yy170;
{yylhsminor.yy118 = tSqlExprCreate(yymsp[-2].minor.yy118, yymsp[0].minor.yy118, TK_LE);}
yymsp[-2].minor.yy118 = yylhsminor.yy118;
break;
case 233: /* expr ::= expr GE expr */
{yylhsminor.yy170 = tSqlExprCreate(yymsp[-2].minor.yy170, yymsp[0].minor.yy170, TK_GE);}
yymsp[-2].minor.yy170 = yylhsminor.yy170;
{yylhsminor.yy118 = tSqlExprCreate(yymsp[-2].minor.yy118, yymsp[0].minor.yy118, TK_GE);}
yymsp[-2].minor.yy118 = yylhsminor.yy118;
break;
case 234: /* expr ::= expr NE expr */
{yylhsminor.yy170 = tSqlExprCreate(yymsp[-2].minor.yy170, yymsp[0].minor.yy170, TK_NE);}
yymsp[-2].minor.yy170 = yylhsminor.yy170;
{yylhsminor.yy118 = tSqlExprCreate(yymsp[-2].minor.yy118, yymsp[0].minor.yy118, TK_NE);}
yymsp[-2].minor.yy118 = yylhsminor.yy118;
break;
case 235: /* expr ::= expr EQ expr */
{yylhsminor.yy170 = tSqlExprCreate(yymsp[-2].minor.yy170, yymsp[0].minor.yy170, TK_EQ);}
yymsp[-2].minor.yy170 = yylhsminor.yy170;
{yylhsminor.yy118 = tSqlExprCreate(yymsp[-2].minor.yy118, yymsp[0].minor.yy118, TK_EQ);}
yymsp[-2].minor.yy118 = yylhsminor.yy118;
break;
case 236: /* expr ::= expr BETWEEN expr AND expr */
{ tSqlExpr* X2 = tSqlExprClone(yymsp[-4].minor.yy170); yylhsminor.yy170 = tSqlExprCreate(tSqlExprCreate(yymsp[-4].minor.yy170, yymsp[-2].minor.yy170, TK_GE), tSqlExprCreate(X2, yymsp[0].minor.yy170, TK_LE), TK_AND);}
yymsp[-4].minor.yy170 = yylhsminor.yy170;
{ tSqlExpr* X2 = tSqlExprClone(yymsp[-4].minor.yy118); yylhsminor.yy118 = tSqlExprCreate(tSqlExprCreate(yymsp[-4].minor.yy118, yymsp[-2].minor.yy118, TK_GE), tSqlExprCreate(X2, yymsp[0].minor.yy118, TK_LE), TK_AND);}
yymsp[-4].minor.yy118 = yylhsminor.yy118;
break;
case 237: /* expr ::= expr AND expr */
{yylhsminor.yy170 = tSqlExprCreate(yymsp[-2].minor.yy170, yymsp[0].minor.yy170, TK_AND);}
yymsp[-2].minor.yy170 = yylhsminor.yy170;
{yylhsminor.yy118 = tSqlExprCreate(yymsp[-2].minor.yy118, yymsp[0].minor.yy118, TK_AND);}
yymsp[-2].minor.yy118 = yylhsminor.yy118;
break;
case 238: /* expr ::= expr OR expr */
{yylhsminor.yy170 = tSqlExprCreate(yymsp[-2].minor.yy170, yymsp[0].minor.yy170, TK_OR); }
yymsp[-2].minor.yy170 = yylhsminor.yy170;
{yylhsminor.yy118 = tSqlExprCreate(yymsp[-2].minor.yy118, yymsp[0].minor.yy118, TK_OR); }
yymsp[-2].minor.yy118 = yylhsminor.yy118;
break;
case 239: /* expr ::= expr PLUS expr */
{yylhsminor.yy170 = tSqlExprCreate(yymsp[-2].minor.yy170, yymsp[0].minor.yy170, TK_PLUS); }
yymsp[-2].minor.yy170 = yylhsminor.yy170;
{yylhsminor.yy118 = tSqlExprCreate(yymsp[-2].minor.yy118, yymsp[0].minor.yy118, TK_PLUS); }
yymsp[-2].minor.yy118 = yylhsminor.yy118;
break;
case 240: /* expr ::= expr MINUS expr */
{yylhsminor.yy170 = tSqlExprCreate(yymsp[-2].minor.yy170, yymsp[0].minor.yy170, TK_MINUS); }
yymsp[-2].minor.yy170 = yylhsminor.yy170;
{yylhsminor.yy118 = tSqlExprCreate(yymsp[-2].minor.yy118, yymsp[0].minor.yy118, TK_MINUS); }
yymsp[-2].minor.yy118 = yylhsminor.yy118;
break;
case 241: /* expr ::= expr STAR expr */
{yylhsminor.yy170 = tSqlExprCreate(yymsp[-2].minor.yy170, yymsp[0].minor.yy170, TK_STAR); }
yymsp[-2].minor.yy170 = yylhsminor.yy170;
{yylhsminor.yy118 = tSqlExprCreate(yymsp[-2].minor.yy118, yymsp[0].minor.yy118, TK_STAR); }
yymsp[-2].minor.yy118 = yylhsminor.yy118;
break;
case 242: /* expr ::= expr SLASH expr */
{yylhsminor.yy170 = tSqlExprCreate(yymsp[-2].minor.yy170, yymsp[0].minor.yy170, TK_DIVIDE);}
yymsp[-2].minor.yy170 = yylhsminor.yy170;
{yylhsminor.yy118 = tSqlExprCreate(yymsp[-2].minor.yy118, yymsp[0].minor.yy118, TK_DIVIDE);}
yymsp[-2].minor.yy118 = yylhsminor.yy118;
break;
case 243: /* expr ::= expr REM expr */
{yylhsminor.yy170 = tSqlExprCreate(yymsp[-2].minor.yy170, yymsp[0].minor.yy170, TK_REM); }
yymsp[-2].minor.yy170 = yylhsminor.yy170;
{yylhsminor.yy118 = tSqlExprCreate(yymsp[-2].minor.yy118, yymsp[0].minor.yy118, TK_REM); }
yymsp[-2].minor.yy118 = yylhsminor.yy118;
break;
case 244: /* expr ::= expr LIKE expr */
{yylhsminor.yy170 = tSqlExprCreate(yymsp[-2].minor.yy170, yymsp[0].minor.yy170, TK_LIKE); }
yymsp[-2].minor.yy170 = yylhsminor.yy170;
{yylhsminor.yy118 = tSqlExprCreate(yymsp[-2].minor.yy118, yymsp[0].minor.yy118, TK_LIKE); }
yymsp[-2].minor.yy118 = yylhsminor.yy118;
break;
case 245: /* expr ::= expr IN LP exprlist RP */
{yylhsminor.yy170 = tSqlExprCreate(yymsp[-4].minor.yy170, (tSqlExpr*)yymsp[-1].minor.yy429, TK_IN); }
yymsp[-4].minor.yy170 = yylhsminor.yy170;
{yylhsminor.yy118 = tSqlExprCreate(yymsp[-4].minor.yy118, (tSqlExpr*)yymsp[-1].minor.yy159, TK_IN); }
yymsp[-4].minor.yy118 = yylhsminor.yy118;
break;
case 246: /* exprlist ::= exprlist COMMA expritem */
{yylhsminor.yy429 = tSqlExprListAppend(yymsp[-2].minor.yy429,yymsp[0].minor.yy170,0, 0);}
yymsp[-2].minor.yy429 = yylhsminor.yy429;
{yylhsminor.yy159 = tSqlExprListAppend(yymsp[-2].minor.yy159,yymsp[0].minor.yy118,0, 0);}
yymsp[-2].minor.yy159 = yylhsminor.yy159;
break;
case 247: /* exprlist ::= expritem */
{yylhsminor.yy429 = tSqlExprListAppend(0,yymsp[0].minor.yy170,0, 0);}
yymsp[0].minor.yy429 = yylhsminor.yy429;
{yylhsminor.yy159 = tSqlExprListAppend(0,yymsp[0].minor.yy118,0, 0);}
yymsp[0].minor.yy159 = yylhsminor.yy159;
break;
case 248: /* expritem ::= expr */
{yylhsminor.yy170 = yymsp[0].minor.yy170;}
yymsp[0].minor.yy170 = yylhsminor.yy170;
{yylhsminor.yy118 = yymsp[0].minor.yy118;}
yymsp[0].minor.yy118 = yylhsminor.yy118;
break;
case 250: /* cmd ::= RESET QUERY CACHE */
{ setDCLSqlElems(pInfo, TSDB_SQL_RESET_CACHE, 0);}
break;
case 251: /* cmd ::= ALTER TABLE ids cpxName ADD COLUMN columnlist */
case 251: /* cmd ::= SYNCDB ids REPLICA */
{ setDCLSqlElems(pInfo, TSDB_SQL_SYNC_DB_REPLICA, 1, &yymsp[-1].minor.yy0);}
break;
case 252: /* cmd ::= ALTER TABLE ids cpxName ADD COLUMN columnlist */
{
yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n;
SAlterTableInfo* pAlterTable = tSetAlterTableInfo(&yymsp[-4].minor.yy0, yymsp[0].minor.yy429, NULL, TSDB_ALTER_TABLE_ADD_COLUMN, -1);
SAlterTableInfo* pAlterTable = tSetAlterTableInfo(&yymsp[-4].minor.yy0, yymsp[0].minor.yy159, NULL, TSDB_ALTER_TABLE_ADD_COLUMN, -1);
setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE);
}
break;
case 252: /* cmd ::= ALTER TABLE ids cpxName DROP COLUMN ids */
case 253: /* cmd ::= ALTER TABLE ids cpxName DROP COLUMN ids */
{
yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n;
......@@ -2980,14 +2987,14 @@ static void yy_reduce(
setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE);
}
break;
case 253: /* cmd ::= ALTER TABLE ids cpxName ADD TAG columnlist */
case 254: /* cmd ::= ALTER TABLE ids cpxName ADD TAG columnlist */
{
yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n;
SAlterTableInfo* pAlterTable = tSetAlterTableInfo(&yymsp[-4].minor.yy0, yymsp[0].minor.yy429, NULL, TSDB_ALTER_TABLE_ADD_TAG_COLUMN, -1);
SAlterTableInfo* pAlterTable = tSetAlterTableInfo(&yymsp[-4].minor.yy0, yymsp[0].minor.yy159, NULL, TSDB_ALTER_TABLE_ADD_TAG_COLUMN, -1);
setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE);
}
break;
case 254: /* cmd ::= ALTER TABLE ids cpxName DROP TAG ids */
case 255: /* cmd ::= ALTER TABLE ids cpxName DROP TAG ids */
{
yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n;
......@@ -2998,7 +3005,7 @@ static void yy_reduce(
setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE);
}
break;
case 255: /* cmd ::= ALTER TABLE ids cpxName CHANGE TAG ids ids */
case 256: /* cmd ::= ALTER TABLE ids cpxName CHANGE TAG ids ids */
{
yymsp[-5].minor.yy0.n += yymsp[-4].minor.yy0.n;
......@@ -3012,26 +3019,26 @@ static void yy_reduce(
setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE);
}
break;
case 256: /* cmd ::= ALTER TABLE ids cpxName SET TAG ids EQ tagitem */
case 257: /* cmd ::= ALTER TABLE ids cpxName SET TAG ids EQ tagitem */
{
yymsp[-6].minor.yy0.n += yymsp[-5].minor.yy0.n;
toTSDBType(yymsp[-2].minor.yy0.type);
SArray* A = tVariantListAppendToken(NULL, &yymsp[-2].minor.yy0, -1);
A = tVariantListAppend(A, &yymsp[0].minor.yy218, -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);
}
break;
case 257: /* cmd ::= ALTER STABLE ids cpxName ADD COLUMN columnlist */
case 258: /* cmd ::= ALTER STABLE ids cpxName ADD COLUMN columnlist */
{
yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n;
SAlterTableInfo* pAlterTable = tSetAlterTableInfo(&yymsp[-4].minor.yy0, yymsp[0].minor.yy429, NULL, TSDB_ALTER_TABLE_ADD_COLUMN, TSDB_SUPER_TABLE);
SAlterTableInfo* pAlterTable = tSetAlterTableInfo(&yymsp[-4].minor.yy0, yymsp[0].minor.yy159, NULL, TSDB_ALTER_TABLE_ADD_COLUMN, TSDB_SUPER_TABLE);
setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE);
}
break;
case 258: /* cmd ::= ALTER STABLE ids cpxName DROP COLUMN ids */
case 259: /* cmd ::= ALTER STABLE ids cpxName DROP COLUMN ids */
{
yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n;
......@@ -3042,14 +3049,14 @@ static void yy_reduce(
setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE);
}
break;
case 259: /* cmd ::= ALTER STABLE ids cpxName ADD TAG columnlist */
case 260: /* cmd ::= ALTER STABLE ids cpxName ADD TAG columnlist */
{
yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n;
SAlterTableInfo* pAlterTable = tSetAlterTableInfo(&yymsp[-4].minor.yy0, yymsp[0].minor.yy429, NULL, TSDB_ALTER_TABLE_ADD_TAG_COLUMN, TSDB_SUPER_TABLE);
SAlterTableInfo* pAlterTable = tSetAlterTableInfo(&yymsp[-4].minor.yy0, yymsp[0].minor.yy159, NULL, TSDB_ALTER_TABLE_ADD_TAG_COLUMN, TSDB_SUPER_TABLE);
setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE);
}
break;
case 260: /* cmd ::= ALTER STABLE ids cpxName DROP TAG ids */
case 261: /* cmd ::= ALTER STABLE ids cpxName DROP TAG ids */
{
yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n;
......@@ -3060,7 +3067,7 @@ static void yy_reduce(
setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE);
}
break;
case 261: /* cmd ::= ALTER STABLE ids cpxName CHANGE TAG ids ids */
case 262: /* cmd ::= ALTER STABLE ids cpxName CHANGE TAG ids ids */
{
yymsp[-5].minor.yy0.n += yymsp[-4].minor.yy0.n;
......@@ -3074,13 +3081,13 @@ static void yy_reduce(
setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE);
}
break;
case 262: /* cmd ::= KILL CONNECTION INTEGER */
case 263: /* cmd ::= KILL CONNECTION INTEGER */
{setKillSql(pInfo, TSDB_SQL_KILL_CONNECTION, &yymsp[0].minor.yy0);}
break;
case 263: /* cmd ::= KILL STREAM INTEGER COLON INTEGER */
case 264: /* cmd ::= KILL STREAM INTEGER COLON INTEGER */
{yymsp[-2].minor.yy0.n += (yymsp[-1].minor.yy0.n + yymsp[0].minor.yy0.n); setKillSql(pInfo, TSDB_SQL_KILL_STREAM, &yymsp[-2].minor.yy0);}
break;
case 264: /* cmd ::= KILL QUERY INTEGER COLON INTEGER */
case 265: /* cmd ::= KILL QUERY INTEGER COLON INTEGER */
{yymsp[-2].minor.yy0.n += (yymsp[-1].minor.yy0.n + yymsp[0].minor.yy0.n); setKillSql(pInfo, TSDB_SQL_KILL_QUERY, &yymsp[-2].minor.yy0);}
break;
default:
......
......@@ -38,7 +38,7 @@
"insert_rows": 100,
"multi_thread_write_one_tbl": "no",
"number_of_tbl_in_one_sql": 0,
"rows_per_tbl": 3,
"interlace_rows": 3,
"max_sql_len": 1024,
"disorder_ratio": 0,
"disorder_range": 1000,
......
......@@ -68,20 +68,14 @@ function prepareBuild {
rm -rf $CURR_DIR/../../../../release/*
fi
if [ ! -e $DOCKER_DIR/TDengine-server-$VERSION-Linux-x64.tar.gz ] || [ ! -e $DOCKER_DIR/TDengine-arbitrator-$VERSION-Linux-x64.tar.gz ]; then
cd $CURR_DIR/../../../../packaging
echo $CURR_DIR
echo $IN_TDINTERNAL
echo "generating TDeninger packages"
if [[ "$CURR_DIR" == *"$IN_TDINTERNAL"* ]]; then
pwd
./release.sh -v cluster -n $VERSION >> /dev/null 2>&1
else
pwd
./release.sh -v edge -n $VERSION >> /dev/null 2>&1
fi
cd $CURR_DIR/../../../../packaging
if [[ "$CURR_DIR" == *"$IN_TDINTERNAL"* ]]; then
if [[ "$CURR_DIR" == *"$IN_TDINTERNAL"* ]]; then
if [ ! -e $DOCKER_DIR/TDengine-enterprise-server-$VERSION-Linux-x64.tar.gz ] || [ ! -e $DOCKER_DIR/TDengine-enterprise-arbitrator-$VERSION-Linux-x64.tar.gz ]; then
echo "generating TDeninge enterprise packages"
./release.sh -v cluster -n $VERSION >> /dev/null 2>&1
if [ ! -e $CURR_DIR/../../../../release/TDengine-enterprise-server-$VERSION-Linux-x64.tar.gz ]; then
echo "no TDengine install package found"
exit 1
......@@ -91,7 +85,17 @@ function prepareBuild {
echo "no arbitrator install package found"
exit 1
fi
else
cd $CURR_DIR/../../../../release
mv TDengine-enterprise-server-$VERSION-Linux-x64.tar.gz $DOCKER_DIR
mv TDengine-enterprise-arbitrator-$VERSION-Linux-x64.tar.gz $DOCKER_DIR
fi
else
if [ ! -e $DOCKER_DIR/TDengine-server-$VERSION-Linux-x64.tar.gz ] || [ ! -e $DOCKER_DIR/TDengine-arbitrator-$VERSION-Linux-x64.tar.gz ]; then
echo "generating TDeninge community packages"
./release.sh -v edge -n $VERSION >> /dev/null 2>&1
if [ ! -e $CURR_DIR/../../../../release/TDengine-server-$VERSION-Linux-x64.tar.gz ]; then
echo "no TDengine install package found"
exit 1
......@@ -101,16 +105,11 @@ function prepareBuild {
echo "no arbitrator install package found"
exit 1
fi
fi
cd $CURR_DIR/../../../../release
if [[ "$CURR_DIR" == *"$IN_TDINTERNAL"* ]]; then
mv TDengine-enterprise-server-$VERSION-Linux-x64.tar.gz $DOCKER_DIR
mv TDengine-enterprise-arbitrator-$VERSION-Linux-x64.tar.gz $DOCKER_DIR
else
cd $CURR_DIR/../../../../release
mv TDengine-server-$VERSION-Linux-x64.tar.gz $DOCKER_DIR
mv TDengine-arbitrator-$VERSION-Linux-x64.tar.gz $DOCKER_DIR
fi
fi
fi
rm -rf $DOCKER_DIR/*.yml
......
......@@ -39,7 +39,7 @@
"insert_rows": 100000,
"multi_thread_write_one_tbl": "no",
"number_of_tbl_in_one_sql": 1,
"rows_per_tbl": 100,
"interlace_rows": 100,
"max_sql_len": 1024000,
"disorder_ratio": 0,
"disorder_range": 1000,
......
......@@ -198,6 +198,7 @@ python3 ./test.py -f query/queryWithTaosdKilled.py
python3 ./test.py -f query/floatCompare.py
python3 ./test.py -f query/query1970YearsAf.py
python3 ./test.py -f query/bug3351.py
python3 ./test.py -f query/bug3375.py
......@@ -234,16 +235,6 @@ python3 client/twoClients.py
python3 test.py -f query/queryInterval.py
python3 test.py -f query/queryFillTest.py
# tools
python3 test.py -f tools/taosdemoTest.py
python3 test.py -f tools/taosdemoTestWithoutMetric.py
python3 test.py -f tools/taosdemoTestWithJson.py
python3 test.py -f tools/taosdemoTestLimitOffset.py
python3 test.py -f tools/taosdumpTest.py
python3 test.py -f tools/taosdemoTest2.py
python3 test.py -f tools/taosdemoTestSampleData.py
python3 test.py -f tools/taosdemoTestInterlace.py
# subscribe
python3 test.py -f subscribe/singlemeter.py
#python3 test.py -f subscribe/stability.py
......@@ -253,6 +244,18 @@ python3 test.py -f subscribe/supertable.py
#======================p3-end===============
#======================p4-start===============
# tools
python3 test.py -f tools/taosdumpTest.py
python3 test.py -f tools/taosdemoTest.py
python3 test.py -f tools/taosdemoTestWithoutMetric.py
python3 test.py -f tools/taosdemoTestWithJson.py
python3 test.py -f tools/taosdemoTestLimitOffset.py
python3 test.py -f tools/taosdemoTest2.py
python3 test.py -f tools/taosdemoTestSampleData.py
python3 test.py -f tools/taosdemoTestInterlace.py
python3 test.py -f tools/taosdemoTestQuery.py
python3 ./test.py -f update/merge_commit_data-0.py
# wal
python3 ./test.py -f wal/addOldWalTest.py
......
###################################################################
# Copyright (c) 2016 by TAOS Technologies, Inc.
# All rights reserved.
#
# This file is proprietary and confidential to TAOS Technologies.
# No part of this file may be reproduced, stored, transmitted,
# disclosed or used in any form or by any means other than as
# expressly provided by the written permission from Jianhui Tao
#
###################################################################
# -*- coding: utf-8 -*-
import sys
from util.log import *
from util.cases import *
from util.sql import *
from util.dnodes import *
class TDTestCase:
def init(self, conn, logSql):
tdLog.debug("start to execute %s" % __file__)
tdSql.init(conn.cursor(), logSql)
def run(self):
tdSql.prepare()
tdSql.execute("drop database if exists db")
tdSql.execute("create database if not exists db keep 36500")
tdSql.execute("use db")
tdLog.printNoPrefix("==========step1:create table && insert data")
tdSql.execute(
"create table stb1 (ts timestamp, c11 int) TAGS(t11 int, t12 int )"
)
tdSql.execute(
"create table stb2 (ts timestamp, c21 int) TAGS(t21 int, t22 int )"
)
tdSql.execute("create table t10 using stb1 tags(1, 10)")
tdSql.execute("create table t20 using stb2 tags(1, 12)")
tdSql.execute("insert into t10 values (1600000000000, 1)")
tdSql.execute("insert into t10 values (1610000000000, 2)")
tdSql.execute("insert into t20 values (1600000000000, 3)")
tdSql.execute("insert into t20 values (1610000000000, 4)")
tdLog.printNoPrefix("==========step2:query crash test")
tdSql.query("select stb1.c11, stb1.t11, stb1.t12 from stb2,stb1 where stb2.t21 = stb1.t11 and stb1.ts = stb2.ts")
tdSql.checkRows(2)
tdSql.query("select stb2.c21, stb2.t21, stb2.t21 from stb1, stb2 where stb2.t21 = stb1.t11 and stb1.ts = stb2.ts")
tdSql.checkRows(2)
tdSql.query("select top(stb2.c21,2) from stb1, stb2 where stb2.t21 = stb1.t11 and stb1.ts = stb2.ts")
tdSql.checkRows(2)
tdSql.query("select last(stb2.c21) from stb1, stb2 where stb2.t21 = stb1.t11 and stb1.ts = stb2.ts")
tdSql.checkRows(1)
def stop(self):
tdSql.close()
tdLog.success("%s successfully executed" % __file__)
tdCases.addWindows(__file__, TDTestCase())
tdCases.addLinux(__file__, TDTestCase())
\ No newline at end of file
......@@ -18,6 +18,7 @@ import json
import subprocess
import datetime
from util.log import *
from util.sql import *
from util.cases import *
......@@ -39,6 +40,7 @@ class TDTestCase:
tdLog.debug(f"binPath {binPath}")
binPath = os.path.realpath(binPath)
tdLog.debug(f"binPath real path {binPath}")
if path == "":
self.path = os.path.abspath(binPath + "../../")
else:
......@@ -187,12 +189,12 @@ class TDTestCase:
"select * from t9 where t9.ts > '1969-12-31 22:00:00.000' and t9.ts <'1970-01-01 02:00:00.000' "
)
tdSql.checkRows(719)
tdSql.query(
"select * from t0,t1 where t0.ts=t1.ts and t1.ts >= '1970-01-01 00:00:00.000' "
)
tdSql.checkRows(680)
tdSql.query(
"select diff(col1) from t0 where t0.ts >= '1970-01-01 00:00:00.000' "
)
......@@ -251,5 +253,6 @@ class TDTestCase:
tdSql.close()
tdLog.success(f"{__file__} successfully executed")
tdCases.addLinux(__file__, TDTestCase())
tdCases.addWindows(__file__, TDTestCase())
tdCases.addWindows(__file__, TDTestCase())
\ No newline at end of file
......@@ -10,7 +10,7 @@
"result_file": "./insert_res.txt",
"confirm_parameter_prompt": "no",
"insert_interval": 5000,
"rows_per_tbl": 50,
"interlace_rows": 50,
"num_of_records_per_req": 100,
"max_sql_len": 1024000,
"databases": [{
......@@ -42,7 +42,7 @@
"insert_mode": "taosc",
"insert_rows": 250,
"multi_thread_write_one_tbl": "no",
"rows_per_tbl": 80,
"interlace_rows": 80,
"max_sql_len": 1024000,
"disorder_ratio": 0,
"disorder_range": 1000,
......
{
"filetype": "query",
"cfgdir": "/etc/taos",
"host": "127.0.0.1",
"port": 6030,
"user": "root",
"password": "taosdata",
"confirm_parameter_prompt": "no",
"databases": "test",
"query_times": 1,
"super_table_query": {
"stblname": "meters",
"query_interval": 10,
"threads": 8,
"sqls": [
{
"sql": "select last_row(ts) from xxxx",
"result": ""
}
]
}
}
###################################################################
##################################################################
# Copyright (c) 2016 by TAOS Technologies, Inc.
# All rights reserved.
#
......@@ -25,9 +25,6 @@ class TDTestCase:
tdLog.debug("start to execute %s" % __file__)
tdSql.init(conn.cursor(), logSql)
self.numberOfTables = 10000
self.numberOfRecords = 100
def getBuildPath(self):
selfPath = os.path.dirname(os.path.realpath(__file__))
......
###################################################################
# Copyright (c) 2016 by TAOS Technologies, Inc.
# All rights reserved.
#
# This file is proprietary and confidential to TAOS Technologies.
# No part of this file may be reproduced, stored, transmitted,
# disclosed or used in any form or by any means other than as
# expressly provided by the written permission from Jianhui Tao
#
###################################################################
# -*- coding: utf-8 -*-
import sys
import os
import time
from util.log import *
from util.cases import *
from util.sql import *
from util.dnodes import *
import subprocess
class TDTestCase:
def init(self, conn, logSql):
tdLog.debug("start to execute %s" % __file__)
tdSql.init(conn.cursor(), logSql)
self.numberOfTables = 1000
self.numberOfRecords = 100
def getBuildPath(self):
selfPath = os.path.dirname(os.path.realpath(__file__))
if ("community" in selfPath):
projPath = selfPath[:selfPath.find("community")]
else:
projPath = selfPath[:selfPath.find("tests")]
for root, dirs, files in os.walk(projPath):
if ("taosd" in files):
rootRealPath = os.path.dirname(os.path.realpath(root))
if ("packaging" not in rootRealPath):
buildPath = root[:len(root) - len("/build/bin")]
break
return buildPath
def run(self):
tdSql.prepare()
buildPath = self.getBuildPath()
if (buildPath == ""):
tdLog.exit("taosd not found!")
else:
tdLog.info("taosd found in %s" % buildPath)
binPath = buildPath + "/build/bin/"
os.system("%staosdemo -y -t %d -n %d" %
(binPath, self.numberOfTables, self.numberOfRecords))
print("Sleep 2 seconds..")
time.sleep(2)
os.system('%staosdemo -f tools/query.json ' % binPath)
# taosdemoCmd = '%staosdemo -f tools/query.json ' % binPath
# threads = subprocess.check_output(
# taosdemoCmd, shell=True).decode("utf-8")
# print("threads: %d" % int(threads))
# if (int(threads) != 8):
# caller = inspect.getframeinfo(inspect.stack()[0][0])
# tdLog.exit(
# "%s(%d) failed: expected threads 8, actual %d" %
# (caller.filename, caller.lineno, int(threads)))
#
def stop(self):
tdSql.close()
tdLog.success("%s successfully executed" % __file__)
tdCases.addWindows(__file__, TDTestCase())
tdCases.addLinux(__file__, TDTestCase())
......@@ -100,7 +100,10 @@ function runSimCaseOneByOnefq {
cp -r ../../sim ~/sim_`date "+%Y_%m_%d_%H:%M:%S" `
rm -rf ../../sim/case.log
fi
exit 8
dohavecore $2
if [[ $2 == 1 ]];then
exit 8
fi
fi
end_time=`date +%s`
echo execution time of $case was `expr $end_time - $start_time`s. | tee -a out.log
......@@ -169,10 +172,13 @@ function runPyCaseOneByOnefq() {
out_log=`tail -1 pytest-out.log `
if [[ $out_log =~ 'failed' ]];then
cp -r ../../sim ~/sim_`date "+%Y_%m_%d_%H:%M:%S" `
echo '=====================log====================='
echo '=====================log===================== '
cat ../../sim/case.log
rm -rf ../../sim/case.log
exit 8
dohavecore $2
if [[ $2 == 1 ]];then
exit 8
fi
fi
echo execution time of $case was `expr $end_time - $start_time`s. | tee -a pytest-out.log
else
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册