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

Merge branch 'develop' into feature/TD-1380

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