提交 ebc1fd6c 编写于 作者: W wpan

support escape string as table name

上级 694132ed
......@@ -169,7 +169,7 @@ bool tscQueryBlockInfo(SQueryInfo* pQueryInfo);
SExprInfo* tscAddFuncInSelectClause(SQueryInfo* pQueryInfo, int32_t outputColIndex, int16_t functionId,
SColumnIndex* pIndex, SSchema* pColSchema, int16_t colType, int16_t colId);
int32_t tscSetTableFullName(SName* pName, SStrToken* pzTableName, SSqlObj* pSql);
int32_t tscSetTableFullName(SName* pName, SStrToken* pzTableName, SSqlObj* pSql, bool dbIncluded);
void tscClearInterpInfo(SQueryInfo* pQueryInfo);
bool tscIsInsertData(char* sqlstr);
......@@ -240,7 +240,7 @@ void tscColumnListCopyAll(SArray* dst, const SArray* src);
void convertQueryResult(SSqlRes* pRes, SQueryInfo* pQueryInfo, uint64_t objId, bool convertNchar);
void tscDequoteAndTrimToken(SStrToken* pToken);
int32_t tscValidateName(SStrToken* pToken, bool escapeEnabled);
int32_t tscValidateName(SStrToken* pToken, bool escapeEnabled, bool *dbIncluded);
void tscIncStreamExecutionCount(void* pStream);
......
......@@ -898,6 +898,18 @@ static int32_t doParseInsertStatement(SInsertStatementParam *pInsertParam, char
return TSDB_CODE_SUCCESS;
}
int validateTableName(char *tblName, int len, SStrToken* psTblToken, bool *dbIncluded) {
tstrncpy(psTblToken->z, tblName, TSDB_TABLE_FNAME_LEN);
psTblToken->n = len;
psTblToken->type = TK_ID;
tGetToken(psTblToken->z, &psTblToken->type);
return tscValidateName(psTblToken, true, dbIncluded);
}
static int32_t tscCheckIfCreateTable(char **sqlstr, SSqlObj *pSql, char** boundColumn) {
int32_t index = 0;
SStrToken sToken = {0};
......@@ -960,13 +972,27 @@ static int32_t tscCheckIfCreateTable(char **sqlstr, SSqlObj *pSql, char** boundC
sToken = tStrGetToken(sql, &index, false);
sql += index;
if (sToken.type == TK_ILLEGAL) {
return tscSQLSyntaxErrMsg(pCmd->payload, NULL, sql);
}
//the source super table is moved to the secondary position of the pTableMetaInfo list
if (pQueryInfo->numOfTables < 2) {
tscAddEmptyMetaInfo(pQueryInfo);
}
bool dbIncluded1 = false;
char buf[TSDB_TABLE_FNAME_LEN];
SStrToken sTblToken;
sTblToken.z = buf;
code = validateTableName(sToken.z, sToken.n, &sTblToken, &dbIncluded1);
if (code != TSDB_CODE_SUCCESS) {
return code;
}
STableMetaInfo *pSTableMetaInfo = tscGetMetaInfo(pQueryInfo, STABLE_INDEX);
code = tscSetTableFullName(&pSTableMetaInfo->name, &sToken, pSql);
code = tscSetTableFullName(&pSTableMetaInfo->name, &sTblToken, pSql, dbIncluded1);
if (code != TSDB_CODE_SUCCESS) {
return code;
}
......@@ -980,7 +1006,7 @@ static int32_t tscCheckIfCreateTable(char **sqlstr, SSqlObj *pSql, char** boundC
}
if (!UTIL_TABLE_IS_SUPER_TABLE(pSTableMetaInfo)) {
return tscInvalidOperationMsg(pInsertParam->msg, "create table only from super table is allowed", sToken.z);
return tscInvalidOperationMsg(pInsertParam->msg, "create table only from super table is allowed", sTblToken.z);
}
SSchema *pTagSchema = tscGetTableTagSchema(pSTableMetaInfo->pTableMeta);
......@@ -1136,12 +1162,16 @@ static int32_t tscCheckIfCreateTable(char **sqlstr, SSqlObj *pSql, char** boundC
}
sql = sToken.z;
bool dbIncluded2 = false;
if (tscValidateName(&tableToken, true) != TSDB_CODE_SUCCESS) {
sTblToken.z = buf;
code = validateTableName(tableToken.z, tableToken.n, &sTblToken, &dbIncluded2);
if (code != TSDB_CODE_SUCCESS) {
return tscInvalidOperationMsg(pInsertParam->msg, "invalid table name", *sqlstr);
}
int32_t ret = tscSetTableFullName(&pTableMetaInfo->name, &tableToken, pSql);
int32_t ret = tscSetTableFullName(&pTableMetaInfo->name, &sTblToken, pSql, dbIncluded2);
if (ret != TSDB_CODE_SUCCESS) {
return ret;
}
......@@ -1171,16 +1201,6 @@ static int32_t tscCheckIfCreateTable(char **sqlstr, SSqlObj *pSql, char** boundC
return code;
}
int validateTableName(char *tblName, int len, SStrToken* psTblToken) {
tstrncpy(psTblToken->z, tblName, TSDB_TABLE_FNAME_LEN);
psTblToken->n = len;
psTblToken->type = TK_ID;
tGetToken(psTblToken->z, &psTblToken->type);
return tscValidateName(psTblToken, true);
}
static int32_t validateDataSource(SInsertStatementParam *pInsertParam, int32_t type, const char *sql) {
uint32_t *insertType = &pInsertParam->insertType;
if (*insertType == TSDB_QUERY_TYPE_STMT_INSERT && type == TSDB_QUERY_TYPE_INSERT) {
......@@ -1401,13 +1421,14 @@ int tsParseInsertSql(SSqlObj *pSql) {
char buf[TSDB_TABLE_FNAME_LEN];
SStrToken sTblToken;
sTblToken.z = buf;
bool dbIncluded = false;
// Check if the table name available or not
if (validateTableName(sToken.z, sToken.n, &sTblToken) != TSDB_CODE_SUCCESS) {
if (validateTableName(sToken.z, sToken.n, &sTblToken, &dbIncluded) != TSDB_CODE_SUCCESS) {
code = tscInvalidOperationMsg(pInsertParam->msg, "table name invalid", sToken.z);
goto _clean;
}
if ((code = tscSetTableFullName(&pTableMetaInfo->name, &sTblToken, pSql)) != TSDB_CODE_SUCCESS) {
if ((code = tscSetTableFullName(&pTableMetaInfo->name, &sTblToken, pSql, dbIncluded)) != TSDB_CODE_SUCCESS) {
goto _clean;
}
......
......@@ -558,8 +558,10 @@ static int32_t retrieveTableMeta(TAOS* taos, char* tableName, STableMeta** pTabl
registerSqlObj(pSql);
SStrToken tableToken = {.z = tableNameLowerCase, .n = (uint32_t)strlen(tableNameLowerCase), .type = TK_ID};
tGetToken(tableNameLowerCase, &tableToken.type);
bool dbIncluded = false;
// Check if the table name available or not
if (tscValidateName(&tableToken, true) != TSDB_CODE_SUCCESS) {
if (tscValidateName(&tableToken, true, &dbIncluded) != TSDB_CODE_SUCCESS) {
code = TSDB_CODE_TSC_INVALID_TABLE_ID_LENGTH;
sprintf(pSql->cmd.payload, "table name is invalid");
tscFreeRegisteredSqlObj(pSql);
......@@ -567,7 +569,7 @@ static int32_t retrieveTableMeta(TAOS* taos, char* tableName, STableMeta** pTabl
}
SName sname = {0};
if ((code = tscSetTableFullName(&sname, &tableToken, pSql)) != TSDB_CODE_SUCCESS) {
if ((code = tscSetTableFullName(&sname, &tableToken, pSql, dbIncluded)) != TSDB_CODE_SUCCESS) {
tscFreeRegisteredSqlObj(pSql);
return code;
}
......
......@@ -1585,9 +1585,10 @@ int taos_stmt_set_tbname_tags(TAOS_STMT* stmt, const char* name, TAOS_BIND* tags
SSqlObj* pSql = pStmt->pSql;
SSqlCmd* pCmd = &pSql->cmd;
uint32_t nameLen = (uint32_t)strlen(name);
if (name == NULL) {
tscError("0x%"PRIx64" name is NULL", pSql->self);
if (name == NULL || nameLen <= 0) {
tscError("0x%"PRIx64" tbname is NULL", pSql->self);
STMT_RET(invalidOperationMsg(tscGetErrorMsgPayload(&pStmt->pSql->cmd), "name is NULL"));
}
......@@ -1603,6 +1604,19 @@ int taos_stmt_set_tbname_tags(TAOS_STMT* stmt, const char* name, TAOS_BIND* tags
pStmt->last = STMT_SETTBNAME;
SStrToken tname = {0};
tname.type = TK_STRING;
tname.z = (char *)name;
tname.n = (uint32_t)strlen(name);
bool dbIncluded = false;
// Check if the table name available or not
if (tscValidateName(&tname, true, &dbIncluded) != TSDB_CODE_SUCCESS) {
tscError("0x%"PRIx64" tbname[%s] is invalid", pSql->self, name);
STMT_RET(invalidOperationMsg(tscGetErrorMsgPayload(&pStmt->pSql->cmd), "name is invalid"));
}
uint64_t* uid = (uint64_t*)taosHashGet(pStmt->mtb.pTableHash, name, strlen(name));
if (uid != NULL) {
pStmt->mtb.currentUid = *uid;
......@@ -1632,13 +1646,9 @@ int taos_stmt_set_tbname_tags(TAOS_STMT* stmt, const char* name, TAOS_BIND* tags
STableMeta* pTableMeta = pTableMetaInfo->pTableMeta;
char sTableName[TSDB_TABLE_FNAME_LEN] = {0};
tstrncpy(sTableName, pTableMeta->sTableName, sizeof(sTableName));
SStrToken tname = {0};
tname.type = TK_STRING;
tname.z = (char *)name;
tname.n = (uint32_t)strlen(name);
SName fullname = {0};
tscSetTableFullName(&fullname, &tname, pSql);
tscSetTableFullName(&fullname, &tname, pSql, dbIncluded);
memcpy(&pTableMetaInfo->name, &fullname, sizeof(fullname));
......
......@@ -142,6 +142,8 @@ static int32_t checkQueryRangeForFill(SSqlCmd* pCmd, SQueryInfo* pQueryInfo);
static int32_t loadAllTableMeta(SSqlObj* pSql, struct SSqlInfo* pInfo);
static tSqlExpr* extractExprForSTable(SSqlCmd* pCmd, tSqlExpr** pExpr, SQueryInfo* pQueryInfo, int32_t tableIndex);
int validateTableName(char *tblName, int len, SStrToken* psTblToken, bool *dbIncluded);
static bool isTimeWindowQuery(SQueryInfo* pQueryInfo) {
return pQueryInfo->interval.interval > 0 || pQueryInfo->sessionWindow.gap > 0;
}
......@@ -568,7 +570,9 @@ int32_t tscValidateSqlInfo(SSqlObj* pSql, struct SSqlInfo* pInfo) {
SStrToken* pzName = taosArrayGet(pInfo->pMiscInfo->a, 0);
bool escapeEnabled = (pInfo->type == TSDB_SQL_DROP_TABLE) ? true: false;
if ((pInfo->type != TSDB_SQL_DROP_DNODE) && (tscValidateName(pzName, escapeEnabled) != TSDB_CODE_SUCCESS)) {
bool dbIncluded = false;
if ((pInfo->type != TSDB_SQL_DROP_DNODE) && (tscValidateName(pzName, escapeEnabled, &dbIncluded) != TSDB_CODE_SUCCESS)) {
return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg2);
}
......@@ -582,7 +586,7 @@ int32_t tscValidateSqlInfo(SSqlObj* pSql, struct SSqlInfo* pInfo) {
} else if (pInfo->type == TSDB_SQL_DROP_TABLE) {
assert(taosArrayGetSize(pInfo->pMiscInfo->a) == 1);
code = tscSetTableFullName(&pTableMetaInfo->name, pzName, pSql);
code = tscSetTableFullName(&pTableMetaInfo->name, pzName, pSql, dbIncluded);
if(code != TSDB_CODE_SUCCESS) {
return code;
}
......@@ -606,7 +610,7 @@ int32_t tscValidateSqlInfo(SSqlObj* pSql, struct SSqlInfo* pInfo) {
const char* msg = "invalid db name";
SStrToken* pToken = taosArrayGet(pInfo->pMiscInfo->a, 0);
if (tscValidateName(pToken, false) != TSDB_CODE_SUCCESS) {
if (tscValidateName(pToken, false, NULL) != TSDB_CODE_SUCCESS) {
return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg);
}
......@@ -653,7 +657,7 @@ int32_t tscValidateSqlInfo(SSqlObj* pSql, struct SSqlInfo* pInfo) {
char buf[TSDB_DB_NAME_LEN] = {0};
SStrToken token = taosTokenDup(&pCreateDB->dbname, buf, tListLen(buf));
if (tscValidateName(&token, false) != TSDB_CODE_SUCCESS) {
if (tscValidateName(&token, false, NULL) != TSDB_CODE_SUCCESS) {
return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg1);
}
......@@ -700,7 +704,7 @@ int32_t tscValidateSqlInfo(SSqlObj* pSql, struct SSqlInfo* pInfo) {
return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg3);
}
if (tscValidateName(pName, false) != TSDB_CODE_SUCCESS) {
if (tscValidateName(pName, false, NULL) != TSDB_CODE_SUCCESS) {
return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg2);
}
......@@ -722,11 +726,13 @@ int32_t tscValidateSqlInfo(SSqlObj* pSql, struct SSqlInfo* pInfo) {
const char* msg1 = "invalid table name";
SStrToken* pToken = taosArrayGet(pInfo->pMiscInfo->a, 0);
if (tscValidateName(pToken, true) != TSDB_CODE_SUCCESS) {
bool dbIncluded = false;
if (tscValidateName(pToken, true, &dbIncluded) != TSDB_CODE_SUCCESS) {
return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg1);
}
// additional msg has been attached already
code = tscSetTableFullName(&pTableMetaInfo->name, pToken, pSql);
code = tscSetTableFullName(&pTableMetaInfo->name, pToken, pSql, dbIncluded);
if (code != TSDB_CODE_SUCCESS) {
return code;
}
......@@ -738,11 +744,13 @@ int32_t tscValidateSqlInfo(SSqlObj* pSql, struct SSqlInfo* pInfo) {
const char* msg1 = "invalid table name";
SStrToken* pToken = taosArrayGet(pInfo->pMiscInfo->a, 0);
if (tscValidateName(pToken, true) != TSDB_CODE_SUCCESS) {
bool dbIncluded = false;
if (tscValidateName(pToken, true, &dbIncluded) != TSDB_CODE_SUCCESS) {
return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg1);
}
code = tscSetTableFullName(&pTableMetaInfo->name, pToken, pSql);
code = tscSetTableFullName(&pTableMetaInfo->name, pToken, pSql, dbIncluded);
if (code != TSDB_CODE_SUCCESS) {
return code;
}
......@@ -753,7 +761,8 @@ int32_t tscValidateSqlInfo(SSqlObj* pSql, struct SSqlInfo* pInfo) {
const char* msg1 = "invalid database name";
SStrToken* pToken = taosArrayGet(pInfo->pMiscInfo->a, 0);
if (tscValidateName(pToken, false) != TSDB_CODE_SUCCESS) {
if (tscValidateName(pToken, false, NULL) != TSDB_CODE_SUCCESS) {
return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg1);
}
......@@ -817,7 +826,7 @@ int32_t tscValidateSqlInfo(SSqlObj* pSql, struct SSqlInfo* pInfo) {
return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg3);
}
if (tscValidateName(pName, false) != TSDB_CODE_SUCCESS) {
if (tscValidateName(pName, false, NULL) != TSDB_CODE_SUCCESS) {
return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg2);
}
......@@ -1337,7 +1346,7 @@ int32_t parseSlidingClause(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, SStrToken* pSl
return TSDB_CODE_SUCCESS;
}
int32_t tscSetTableFullName(SName* pName, SStrToken* pTableName, SSqlObj* pSql) {
int32_t tscSetTableFullName(SName* pName, SStrToken* pTableName, SSqlObj* pSql, bool dbIncluded) {
const char* msg1 = "name too long";
const char* msg2 = "acctId too long";
const char* msg3 = "no acctId";
......@@ -1346,7 +1355,12 @@ int32_t tscSetTableFullName(SName* pName, SStrToken* pTableName, SSqlObj* pSql)
SSqlCmd* pCmd = &pSql->cmd;
int32_t code = TSDB_CODE_SUCCESS;
int32_t idx = getDelimiterIndex(pTableName);
int32_t idx = -1;
if (dbIncluded) {
idx = getDelimiterIndex(pTableName);
}
if (idx != -1) { // db has been specified in sql string so we ignore current db path
char* acctId = getAccountId(pSql);
if (acctId == NULL || strlen(acctId) <= 0) {
......@@ -3206,8 +3220,7 @@ int32_t setShowInfo(SSqlObj* pSql, struct SSqlInfo* pInfo) {
if (pDbPrefixToken->n <= 0) {
return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg5);
}
if (tscValidateName(pDbPrefixToken, false) != TSDB_CODE_SUCCESS) {
if (tscValidateName(pDbPrefixToken, false, NULL) != TSDB_CODE_SUCCESS) {
return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg1);
}
......@@ -5866,12 +5879,13 @@ int32_t setAlterTableInfo(SSqlObj* pSql, struct SSqlInfo* pInfo) {
SQueryInfo* pQueryInfo = tscGetQueryInfo(pCmd);
STableMetaInfo* pTableMetaInfo = tscGetMetaInfo(pQueryInfo, DEFAULT_TABLE_INDEX);
bool dbIncluded = false;
if (tscValidateName(&(pAlterSQL->name, true)) != TSDB_CODE_SUCCESS) {
if (tscValidateName(&(pAlterSQL->name), true, &dbIncluded) != TSDB_CODE_SUCCESS) {
return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg1);
}
code = tscSetTableFullName(&pTableMetaInfo->name, &(pAlterSQL->name), pSql);
code = tscSetTableFullName(&pTableMetaInfo->name, &(pAlterSQL->name), pSql, dbIncluded);
if (code != TSDB_CODE_SUCCESS) {
return code;
}
......@@ -7421,12 +7435,13 @@ int32_t doCheckForCreateTable(SSqlObj* pSql, int32_t subClauseIndex, SSqlInfo* p
// if sql specifies db, use it, otherwise use default db
SStrToken* pzTableName = &(pCreateTable->name);
if (tscValidateName(pzTableName, true) != TSDB_CODE_SUCCESS) {
bool dbIncluded = false;
if (tscValidateName(pzTableName, true, &dbIncluded) != TSDB_CODE_SUCCESS) {
return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg1);
}
int32_t code = tscSetTableFullName(&pTableMetaInfo->name, pzTableName, pSql);
int32_t code = tscSetTableFullName(&pTableMetaInfo->name, pzTableName, pSql, dbIncluded);
if(code != TSDB_CODE_SUCCESS) {
return code;
}
......@@ -7486,11 +7501,13 @@ int32_t doCheckForCreateFromStable(SSqlObj* pSql, SSqlInfo* pInfo) {
SCreatedTableInfo* pCreateTableInfo = taosArrayGet(pCreateTable->childTableInfo, j);
SStrToken* pToken = &pCreateTableInfo->stableName;
if (tscValidateName(pToken, true) != TSDB_CODE_SUCCESS) {
bool dbIncluded = false;
if (tscValidateName(pToken, true, &dbIncluded) != TSDB_CODE_SUCCESS) {
return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg1);
}
int32_t code = tscSetTableFullName(&pStableMetaInfo->name, pToken, pSql);
int32_t code = tscSetTableFullName(&pStableMetaInfo->name, pToken, pSql, dbIncluded);
if (code != TSDB_CODE_SUCCESS) {
return code;
}
......@@ -7659,14 +7676,15 @@ int32_t doCheckForCreateFromStable(SSqlObj* pSql, SSqlInfo* pInfo) {
kvRowCpy(pTag->data, row);
free(row);
bool dbIncluded2 = false;
// table name
if (tscValidateName(&(pCreateTableInfo->name, true)) != TSDB_CODE_SUCCESS) {
if (tscValidateName(&(pCreateTableInfo->name), true, &dbIncluded2) != TSDB_CODE_SUCCESS) {
return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg1);
}
STableMetaInfo* pTableMetaInfo = tscGetMetaInfo(pQueryInfo, TABLE_INDEX);
ret = tscSetTableFullName(&pTableMetaInfo->name, &pCreateTableInfo->name, pSql);
ret = tscSetTableFullName(&pTableMetaInfo->name, &pCreateTableInfo->name, pSql, dbIncluded2);
if (ret != TSDB_CODE_SUCCESS) {
return ret;
}
......@@ -7703,8 +7721,9 @@ int32_t doCheckForStream(SSqlObj* pSql, SSqlInfo* pInfo) {
// if sql specifies db, use it, otherwise use default db
SStrToken* pName = &(pCreateTable->name);
SSqlNode* pSqlNode = pCreateTable->pSelect;
bool dbIncluded1 = false;
if (tscValidateName(pName, true) != TSDB_CODE_SUCCESS) {
if (tscValidateName(pName, true, &dbIncluded1) != TSDB_CODE_SUCCESS) {
return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg1);
}
......@@ -7719,11 +7738,13 @@ int32_t doCheckForStream(SSqlObj* pSql, SSqlInfo* pInfo) {
SRelElementPair* p1 = taosArrayGet(pFromInfo->list, 0);
SStrToken srcToken = {.z = p1->tableName.z, .n = p1->tableName.n, .type = TK_STRING};
if (tscValidateName(&srcToken, true) != TSDB_CODE_SUCCESS) {
bool dbIncluded2 = false;
if (tscValidateName(&srcToken, true, &dbIncluded2) != TSDB_CODE_SUCCESS) {
return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg1);
}
int32_t code = tscSetTableFullName(&pTableMetaInfo->name, &srcToken, pSql);
int32_t code = tscSetTableFullName(&pTableMetaInfo->name, &srcToken, pSql, dbIncluded2);
if (code != TSDB_CODE_SUCCESS) {
return code;
}
......@@ -7765,7 +7786,7 @@ int32_t doCheckForStream(SSqlObj* pSql, SSqlInfo* pInfo) {
}
// set the created table[stream] name
code = tscSetTableFullName(&pTableMetaInfo->name, pName, pSql);
code = tscSetTableFullName(&pTableMetaInfo->name, pName, pSql, dbIncluded1);
if (code != TSDB_CODE_SUCCESS) {
return code;
}
......@@ -8156,14 +8177,18 @@ static int32_t getTableNameFromSqlNode(SSqlNode* pSqlNode, SArray* tableNameList
if (t->type == TK_INTEGER || t->type == TK_FLOAT) {
return invalidOperationMsg(msgBuf, msg1);
}
tscDequoteAndTrimToken(t);
if (tscValidateName(t, true) != TSDB_CODE_SUCCESS) {
bool dbIncluded = false;
char buf[TSDB_TABLE_FNAME_LEN];
SStrToken sTblToken;
sTblToken.z = buf;
if (validateTableName(t->z, t->n, &sTblToken, &dbIncluded) != TSDB_CODE_SUCCESS) {
return invalidOperationMsg(msgBuf, msg1);
}
SName name = {0};
int32_t code = tscSetTableFullName(&name, t, pSql);
int32_t code = tscSetTableFullName(&name, &sTblToken, pSql, dbIncluded);
if (code != TSDB_CODE_SUCCESS) {
return code;
}
......@@ -8418,12 +8443,14 @@ static int32_t doLoadAllTableMeta(SSqlObj* pSql, SQueryInfo* pQueryInfo, SSqlNod
}
tscDequoteAndTrimToken(oriName);
if (tscValidateName(oriName, true) != TSDB_CODE_SUCCESS) {
bool dbIncluded = false;
if (tscValidateName(oriName, true, &dbIncluded) != TSDB_CODE_SUCCESS) {
return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg1);
}
STableMetaInfo* pTableMetaInfo = tscGetMetaInfo(pQueryInfo, i);
code = tscSetTableFullName(&pTableMetaInfo->name, oriName, pSql);
code = tscSetTableFullName(&pTableMetaInfo->name, oriName, pSql, dbIncluded);
if (code != TSDB_CODE_SUCCESS) {
return code;
}
......@@ -8435,7 +8462,7 @@ static int32_t doLoadAllTableMeta(SSqlObj* pSql, SQueryInfo* pQueryInfo, SSqlNod
}
tscDequoteAndTrimToken(aliasName);
if (tscValidateName(aliasName, false) != TSDB_CODE_SUCCESS || aliasName->n >= TSDB_TABLE_NAME_LEN) {
if (tscValidateName(aliasName, false, NULL) != TSDB_CODE_SUCCESS || aliasName->n >= TSDB_TABLE_NAME_LEN) {
return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg3);
}
......
......@@ -2869,7 +2869,7 @@ int32_t getMultiTableMetaFromMnode(SSqlObj *pSql, SArray* pNameList, SArray* pVg
for(int32_t i = 0; i < numOfTable; ++i) {
char* name = taosArrayGetP(pNameList, i);
if (i < numOfTable - 1 || numOfVgroupList > 0 || numOfUdf > 0) {
len = sprintf(start, "%s,", name);
len = sprintf(start, "%s·", name);
} else {
len = sprintf(start, "%s", name);
}
......@@ -2880,7 +2880,7 @@ int32_t getMultiTableMetaFromMnode(SSqlObj *pSql, SArray* pNameList, SArray* pVg
for(int32_t i = 0; i < numOfVgroupList; ++i) {
char* name = taosArrayGetP(pVgroupNameList, i);
if (i < numOfVgroupList - 1 || numOfUdf > 0) {
len = sprintf(start, "%s,", name);
len = sprintf(start, "%s·", name);
} else {
len = sprintf(start, "%s", name);
}
......@@ -2891,7 +2891,7 @@ int32_t getMultiTableMetaFromMnode(SSqlObj *pSql, SArray* pNameList, SArray* pVg
for(int32_t i = 0; i < numOfUdf; ++i) {
SUdfInfo * u = taosArrayGet(pUdfList, i);
if (i < numOfUdf - 1) {
len = sprintf(start, "%s,", u->name);
len = sprintf(start, "%s·", u->name);
} else {
len = sprintf(start, "%s", u->name);
}
......
......@@ -2730,13 +2730,13 @@ void tscColumnListDestroy(SArray* pColumnList) {
* 'first_part.second_part'
*
*/
static int32_t validateQuoteToken(SStrToken* pToken) {
static int32_t validateQuoteToken(SStrToken* pToken, bool escapeEnabled, bool *dbIncluded) {
tscDequoteAndTrimToken(pToken);
int32_t k = tGetToken(pToken->z, &pToken->type);
if (pToken->type == TK_STRING) {
return tscValidateName(pToken);
return tscValidateName(pToken, escapeEnabled, dbIncluded);
}
if (k != pToken->n || pToken->type != TK_ID) {
......@@ -2833,15 +2833,24 @@ void tscRmEscapeAndTrimToken(SStrToken* pToken) {
int32_t tscValidateName(SStrToken* pToken, bool escapeEnabled) {
int32_t tscValidateName(SStrToken* pToken, bool escapeEnabled, bool *dbIncluded) {
if (pToken == NULL || pToken->z == NULL
|| (escapeEnabled && pToken->type != TK_STRING && pToken->type != TK_ID && pToken->type != TK_ESCAPE)
|| ((!escapeEnabled) && pToken->type != TK_STRING && pToken->type != TK_ID)) {
return TSDB_CODE_TSC_INVALID_OPERATION;
}
char* sep = strnchr(pToken->z, TS_PATH_DELIMITER[0], pToken->n, true);
char* sep = NULL;
if (escapeEnabled) {
sep = tableNameGetPosition(pToken, TS_PATH_DELIMITER[0]);
} else {
sep = strnchr(pToken->z, TS_PATH_DELIMITER[0], pToken->n, true);
}
if (sep == NULL) { // single part
if (dbIncluded) *dbIncluded = false;
if (pToken->type == TK_STRING) {
tscDequoteAndTrimToken(pToken);
......@@ -2852,14 +2861,14 @@ int32_t tscValidateName(SStrToken* pToken, bool escapeEnabled) {
// single token, validate it
if (len == pToken->n) {
return validateQuoteToken(pToken);
return validateQuoteToken(pToken, escapeEnabled, NULL);
} else {
sep = strnchr(pToken->z, TS_PATH_DELIMITER[0], pToken->n, true);
if (sep == NULL) {
return TSDB_CODE_TSC_INVALID_OPERATION;
}
return tscValidateName(pToken);
return tscValidateName(pToken, escapeEnabled, NULL);
}
} else if (escapeEnabled && pToken->type == TK_ESCAPE) {
tscRmEscapeAndTrimToken(pToken);
......@@ -2872,6 +2881,9 @@ int32_t tscValidateName(SStrToken* pToken, bool escapeEnabled) {
} else { // two part
int32_t oldLen = pToken->n;
char* pStr = pToken->z;
bool firstPartQuote = false;
if (dbIncluded) *dbIncluded = true;
if (pToken->type == TK_SPACE) {
pToken->n = (uint32_t)strtrim(pToken->z);
......@@ -2886,8 +2898,13 @@ int32_t tscValidateName(SStrToken* pToken, bool escapeEnabled) {
return TSDB_CODE_TSC_INVALID_OPERATION;
}
if (pToken->type == TK_STRING && validateQuoteToken(pToken) != TSDB_CODE_SUCCESS) {
return TSDB_CODE_TSC_INVALID_OPERATION;
if (pToken->type == TK_STRING) {
if (validateQuoteToken(pToken, escapeEnabled, NULL) != TSDB_CODE_SUCCESS) {
return TSDB_CODE_TSC_INVALID_OPERATION;
} else {
tscStrToLower(pToken->z,pToken->n);
firstPartQuote = true;
}
}
int32_t firstPartLen = pToken->n;
......@@ -2900,18 +2917,20 @@ int32_t tscValidateName(SStrToken* pToken, bool escapeEnabled) {
return TSDB_CODE_TSC_INVALID_OPERATION;
}
if (pToken->type == TK_STRING && validateQuoteToken(pToken) != TSDB_CODE_SUCCESS) {
return TSDB_CODE_TSC_INVALID_OPERATION;
if (pToken->type == TK_STRING) {
if (validateQuoteToken(pToken, escapeEnabled, NULL) != TSDB_CODE_SUCCESS) {
return TSDB_CODE_TSC_INVALID_OPERATION;
} else {
tscStrToLower(pToken->z,pToken->n);
}
}
if (escapeEnabled && pToken->type == TK_ESCAPE) {
tscRmEscapeAndTrimToken(pToken);
}
xxxxxxxtolower
// re-build the whole name string
if (pStr[firstPartLen] == TS_PATH_DELIMITER[0]) {
if (!firstPartQuote) {
// first part do not have quote do nothing
} else {
pStr[firstPartLen] = TS_PATH_DELIMITER[0];
......@@ -2921,8 +2940,6 @@ int32_t tscValidateName(SStrToken* pToken, bool escapeEnabled) {
}
pToken->n += (firstPartLen + sizeof(TS_PATH_DELIMITER[0]));
pToken->z = pStr;
tscStrToLower(pToken->z,pToken->n);
}
return TSDB_CODE_SUCCESS;
......@@ -5036,14 +5053,16 @@ static int32_t doAddTableName(char* nextStr, char** str, SArray* pNameArray, SSq
SStrToken sToken = {.n = len, .type = TK_ID, .z = tablename};
tGetToken(tablename, &sToken.type);
bool dbIncluded = false;
// Check if the table name available or not
if (tscValidateName(&sToken, true) != TSDB_CODE_SUCCESS) {
if (tscValidateName(&sToken, true, &dbIncluded) != TSDB_CODE_SUCCESS) {
sprintf(pCmd->payload, "table name is invalid");
return TSDB_CODE_TSC_INVALID_TABLE_ID_LENGTH;
}
SName name = {0};
if ((code = tscSetTableFullName(&name, &sToken, pSql)) != TSDB_CODE_SUCCESS) {
if ((code = tscSetTableFullName(&name, &sToken, pSql, dbIncluded)) != TSDB_CODE_SUCCESS) {
return code;
}
......
......@@ -92,6 +92,8 @@ size_t tableIdPrefix(const char* name, char* prefix, int32_t len);
void extractTableNameFromToken(SStrToken *pToken, SStrToken* pTable);
char *tableNameGetPosition(SStrToken* pToken, char target);
SSchema tGetUserSpecifiedColumnSchema(tVariant* pVal, SStrToken* exprStr, const char* name);
bool tscValidateTableNameLength(size_t len);
......
......@@ -151,6 +151,39 @@ int64_t taosGetIntervalStartTimestamp(int64_t startTime, int64_t slidingTime, in
#endif
char *tableNameGetPosition(SStrToken* pToken, char target) {
bool inEscape = false;
bool inQuota = false;
char quotaStr = 0;
for (uint32_t i = 0; i < pToken->n; ++i) {
if (*(pToken->z + i) == target && (!inEscape) && (!inQuota)) {
return pToken->z + i;
}
if (*(pToken->z + i) == TS_ESCAPE_CHAR) {
if (!inQuota) {
inEscape = !inEscape;
}
}
if (*(pToken->z + i) == '\'' || *(pToken->z + i) == '"') {
if (!inEscape) {
if (!inQuota) {
quotaStr = *(pToken->z + i);
inQuota = !inQuota;
} else if (quotaStr == *(pToken->z + i)) {
inQuota = !inQuota;
}
}
}
}
return NULL;
}
/*
* tablePrefix.columnName
* extract table name and save it in pTable, with only column name in pToken
......@@ -162,12 +195,17 @@ void extractTableNameFromToken(SStrToken* pToken, SStrToken* pTable) {
return;
}
char* r = strnchr(pToken->z, sep, pToken->n, false);
if (r != NULL) { // record the table name token
pTable->n = (uint32_t)(r - pToken->z);
pTable->z = pToken->z;
char* r = tableNameGetPosition(pToken, sep);
if (r != NULL) { // record the table name token
if (pToken->z[0] == TS_ESCAPE_CHAR && *(r - 1) == TS_ESCAPE_CHAR) {
pTable->n = (uint32_t)(r - pToken->z - 2);
pTable->z = pToken->z + 1;
} else {
pTable->n = (uint32_t)(r - pToken->z);
pTable->z = pToken->z;
}
r += 1;
pToken->n -= (uint32_t)(r - pToken->z);
pToken->z = r;
......
......@@ -98,6 +98,7 @@ extern const int32_t TYPE_BYTES[15];
#define TSDB_ERR -1
#define TS_PATH_DELIMITER "."
#define TS_ESCAPE_CHAR '`'
#define TSDB_TIME_PRECISION_MILLI 0
#define TSDB_TIME_PRECISION_MICRO 1
......
......@@ -216,6 +216,7 @@
#define TK_SPACE 300
#define TK_COMMENT 301
#define TK_ILLEGAL 302
......
......@@ -2973,7 +2973,7 @@ static int32_t mnodeProcessMultiTableMetaMsg(SMnodeMsg *pMsg) {
int32_t num = 0;
int32_t code = TSDB_CODE_SUCCESS;
char* str = strndup(pInfo->tableNames, contLen);
char** nameList = strsplit(str, ",", &num);
char** nameList = strsplit(str, "·", &num);
SArray* pList = taosArrayInit(4, POINTER_BYTES);
SMultiTableMeta *pMultiMeta = NULL;
......
......@@ -694,6 +694,8 @@ expr(A) ::= LP(X) expr(Y) RP(Z). {A = Y; A->exprToken.z = X.z; A->exprToke
expr(A) ::= ID(X). { A = tSqlExprCreateIdValue(&X, TK_ID);}
expr(A) ::= ID(X) DOT ID(Y). { X.n += (1+Y.n); A = tSqlExprCreateIdValue(&X, TK_ID);}
expr(A) ::= ID(X) DOT STAR(Y). { X.n += (1+Y.n); A = tSqlExprCreateIdValue(&X, TK_ALL);}
expr(A) ::= ESCAPE(X) DOT ID(Y). { X.n += (1+Y.n); A = tSqlExprCreateIdValue(&X, TK_ID);}
expr(A) ::= ESCAPE(X) DOT STAR(Y). { X.n += (1+Y.n); A = tSqlExprCreateIdValue(&X, TK_ALL);}
expr(A) ::= INTEGER(X). { A = tSqlExprCreateIdValue(&X, TK_INTEGER);}
expr(A) ::= MINUS(X) INTEGER(Y). { X.n += Y.n; X.type = TK_INTEGER; A = tSqlExprCreateIdValue(&X, TK_INTEGER);}
......
......@@ -138,18 +138,18 @@ typedef union {
#define ParseCTX_FETCH
#define ParseCTX_STORE
#define YYFALLBACK 1
#define YYNSTATE 356
#define YYNRULE 298
#define YYNRULE_WITH_ACTION 298
#define YYNSTATE 358
#define YYNRULE 300
#define YYNRULE_WITH_ACTION 300
#define YYNTOKEN 198
#define YY_MAX_SHIFT 355
#define YY_MIN_SHIFTREDUCE 568
#define YY_MAX_SHIFTREDUCE 865
#define YY_ERROR_ACTION 866
#define YY_ACCEPT_ACTION 867
#define YY_NO_ACTION 868
#define YY_MIN_REDUCE 869
#define YY_MAX_REDUCE 1166
#define YY_MAX_SHIFT 357
#define YY_MIN_SHIFTREDUCE 572
#define YY_MAX_SHIFTREDUCE 871
#define YY_ERROR_ACTION 872
#define YY_ACCEPT_ACTION 873
#define YY_NO_ACTION 874
#define YY_MIN_REDUCE 875
#define YY_MAX_REDUCE 1174
/************* End control #defines *******************************************/
#define YY_NLOOKAHEAD ((int)(sizeof(yy_lookahead)/sizeof(yy_lookahead[0])))
......@@ -216,88 +216,88 @@ typedef union {
** yy_default[] Default action for each state.
**
*********** Begin parsing tables **********************************************/
#define YY_ACTTAB_COUNT (795)
#define YY_ACTTAB_COUNT (800)
static const YYACTIONTYPE yy_action[] = {
/* 0 */ 36, 620, 239, 620, 353, 162, 238, 266, 929, 621,
/* 10 */ 808, 621, 811, 75, 76, 353, 79, 80, 104, 929,
/* 20 */ 242, 69, 68, 67, 620, 78, 311, 83, 81, 84,
/* 30 */ 82, 243, 621, 660, 353, 74, 73, 217, 929, 72,
/* 40 */ 71, 70, 75, 76, 353, 79, 80, 237, 929, 242,
/* 50 */ 69, 68, 67, 195, 78, 311, 83, 81, 84, 82,
/* 60 */ 162, 162, 198, 927, 74, 73, 198, 896, 72, 71,
/* 70 */ 70, 75, 76, 1143, 79, 80, 196, 1143, 242, 69,
/* 80 */ 68, 67, 1089, 78, 311, 83, 81, 84, 82, 97,
/* 90 */ 627, 198, 353, 74, 73, 292, 929, 72, 71, 70,
/* 100 */ 620, 1051, 1143, 75, 77, 228, 79, 80, 621, 1029,
/* 110 */ 242, 69, 68, 67, 802, 78, 311, 83, 81, 84,
/* 120 */ 82, 72, 71, 70, 353, 74, 73, 214, 929, 72,
/* 130 */ 71, 70, 815, 191, 190, 189, 285, 1090, 107, 283,
/* 140 */ 188, 151, 150, 149, 148, 12, 569, 570, 571, 572,
/* 150 */ 573, 574, 575, 576, 577, 578, 579, 580, 581, 582,
/* 160 */ 156, 76, 223, 79, 80, 354, 222, 242, 69, 68,
/* 170 */ 67, 1048, 78, 311, 83, 81, 84, 82, 1012, 1013,
/* 180 */ 51, 1016, 74, 73, 54, 341, 72, 71, 70, 79,
/* 190 */ 80, 162, 103, 242, 69, 68, 67, 245, 78, 311,
/* 200 */ 83, 81, 84, 82, 352, 351, 154, 353, 74, 73,
/* 210 */ 215, 929, 72, 71, 70, 60, 307, 348, 347, 306,
/* 220 */ 305, 304, 346, 303, 302, 301, 345, 300, 344, 343,
/* 230 */ 61, 224, 708, 202, 37, 1026, 991, 979, 980, 981,
/* 240 */ 982, 983, 984, 985, 986, 987, 988, 989, 990, 992,
/* 250 */ 993, 201, 353, 241, 817, 909, 929, 806, 209, 809,
/* 260 */ 309, 812, 331, 330, 147, 18, 17, 208, 109, 241,
/* 270 */ 817, 316, 103, 806, 246, 809, 244, 812, 319, 318,
/* 280 */ 203, 83, 81, 84, 82, 198, 1042, 220, 221, 74,
/* 290 */ 73, 312, 918, 72, 71, 70, 1142, 240, 60, 185,
/* 300 */ 348, 347, 225, 220, 221, 346, 6, 57, 177, 345,
/* 310 */ 61, 344, 343, 176, 118, 123, 114, 122, 353, 7,
/* 320 */ 732, 908, 929, 729, 1042, 730, 353, 731, 250, 99,
/* 330 */ 929, 1023, 263, 296, 96, 620, 85, 16, 15, 138,
/* 340 */ 226, 216, 204, 621, 137, 54, 143, 146, 136, 867,
/* 350 */ 355, 1100, 85, 247, 248, 140, 999, 353, 997, 998,
/* 360 */ 900, 929, 353, 1000, 54, 899, 929, 1001, 171, 1002,
/* 370 */ 1003, 353, 818, 813, 891, 929, 54, 74, 73, 814,
/* 380 */ 235, 72, 71, 70, 54, 54, 273, 353, 818, 813,
/* 390 */ 890, 929, 232, 1015, 54, 814, 1026, 271, 270, 54,
/* 400 */ 54, 1042, 54, 748, 256, 252, 313, 249, 54, 326,
/* 410 */ 325, 233, 1137, 260, 259, 1026, 234, 264, 45, 27,
/* 420 */ 1029, 251, 627, 320, 111, 236, 14, 1026, 807, 1029,
/* 430 */ 810, 321, 322, 927, 173, 1026, 1026, 894, 733, 734,
/* 440 */ 54, 323, 22, 21, 155, 1026, 327, 328, 927, 329,
/* 450 */ 1026, 1026, 930, 1026, 13, 333, 767, 768, 110, 1026,
/* 460 */ 251, 135, 1017, 251, 932, 10, 784, 349, 960, 745,
/* 470 */ 919, 185, 98, 174, 341, 265, 1027, 185, 804, 309,
/* 480 */ 1, 175, 3, 186, 100, 101, 764, 774, 775, 752,
/* 490 */ 55, 1025, 89, 718, 288, 5, 92, 720, 50, 1014,
/* 500 */ 290, 157, 86, 39, 719, 840, 819, 1136, 55, 55,
/* 510 */ 619, 821, 86, 95, 1135, 112, 805, 145, 144, 86,
/* 520 */ 38, 38, 267, 267, 783, 38, 218, 29, 128, 28,
/* 530 */ 127, 31, 291, 30, 90, 737, 93, 738, 735, 219,
/* 540 */ 736, 199, 33, 133, 32, 132, 707, 200, 205, 197,
/* 550 */ 816, 206, 35, 207, 34, 211, 212, 213, 210, 194,
/* 560 */ 1028, 1162, 1154, 1099, 230, 1096, 1095, 231, 332, 64,
/* 570 */ 261, 1050, 1061, 1058, 1059, 1063, 161, 1043, 1082, 268,
/* 580 */ 1081, 108, 279, 1024, 889, 172, 1022, 937, 763, 293,
/* 590 */ 272, 297, 227, 274, 282, 280, 163, 294, 295, 94,
/* 600 */ 91, 1040, 286, 276, 164, 298, 299, 62, 66, 165,
/* 610 */ 192, 58, 284, 310, 166, 167, 931, 317, 1161, 168,
/* 620 */ 278, 169, 125, 170, 1160, 275, 1157, 324, 1153, 65,
/* 630 */ 130, 1152, 1149, 957, 59, 56, 63, 342, 193, 915,
/* 640 */ 139, 913, 141, 142, 911, 910, 253, 907, 906, 905,
/* 650 */ 904, 903, 902, 901, 898, 892, 885, 134, 334, 277,
/* 660 */ 1083, 335, 336, 337, 338, 339, 340, 350, 865, 254,
/* 670 */ 255, 864, 257, 258, 863, 267, 846, 845, 23, 936,
/* 680 */ 935, 119, 120, 262, 740, 102, 287, 46, 152, 269,
/* 690 */ 153, 180, 958, 19, 20, 178, 184, 179, 181, 182,
/* 700 */ 4, 183, 2, 765, 11, 158, 160, 776, 995, 959,
/* 710 */ 159, 229, 770, 105, 47, 772, 106, 281, 49, 24,
/* 720 */ 1005, 25, 26, 48, 40, 41, 113, 289, 115, 13,
/* 730 */ 116, 638, 52, 53, 117, 671, 673, 670, 669, 667,
/* 740 */ 666, 665, 662, 624, 308, 8, 9, 121, 822, 820,
/* 750 */ 314, 315, 124, 55, 87, 126, 88, 710, 709, 706,
/* 760 */ 654, 129, 131, 652, 644, 650, 646, 648, 642, 640,
/* 770 */ 676, 675, 674, 672, 668, 664, 663, 187, 622, 44,
/* 780 */ 586, 869, 868, 868, 868, 868, 868, 868, 868, 868,
/* 790 */ 868, 868, 868, 42, 43,
/* 0 */ 36, 624, 239, 624, 355, 162, 238, 267, 935, 625,
/* 10 */ 814, 625, 817, 75, 76, 355, 79, 80, 104, 935,
/* 20 */ 243, 69, 68, 67, 624, 78, 312, 83, 81, 84,
/* 30 */ 82, 244, 625, 664, 355, 74, 73, 217, 935, 72,
/* 40 */ 71, 70, 75, 76, 355, 79, 80, 237, 935, 243,
/* 50 */ 69, 68, 67, 195, 78, 312, 83, 81, 84, 82,
/* 60 */ 162, 162, 198, 933, 74, 73, 198, 902, 72, 71,
/* 70 */ 70, 75, 76, 1151, 79, 80, 196, 1151, 243, 69,
/* 80 */ 68, 67, 1095, 78, 312, 83, 81, 84, 82, 97,
/* 90 */ 631, 198, 355, 74, 73, 293, 935, 72, 71, 70,
/* 100 */ 624, 1057, 1151, 75, 77, 228, 79, 80, 625, 1035,
/* 110 */ 243, 69, 68, 67, 806, 78, 312, 83, 81, 84,
/* 120 */ 82, 72, 71, 70, 355, 74, 73, 214, 935, 72,
/* 130 */ 71, 70, 821, 191, 190, 189, 286, 1096, 107, 284,
/* 140 */ 188, 151, 150, 149, 148, 12, 573, 574, 575, 576,
/* 150 */ 577, 578, 579, 580, 581, 582, 583, 584, 585, 586,
/* 160 */ 156, 76, 223, 79, 80, 356, 222, 243, 69, 68,
/* 170 */ 67, 1054, 78, 312, 83, 81, 84, 82, 1018, 1019,
/* 180 */ 51, 1022, 74, 73, 54, 343, 72, 71, 70, 79,
/* 190 */ 80, 162, 103, 243, 69, 68, 67, 246, 78, 312,
/* 200 */ 83, 81, 84, 82, 354, 353, 154, 355, 74, 73,
/* 210 */ 215, 935, 72, 71, 70, 60, 308, 350, 349, 307,
/* 220 */ 306, 305, 348, 304, 303, 302, 347, 301, 346, 345,
/* 230 */ 61, 224, 712, 1021, 37, 1032, 997, 985, 986, 987,
/* 240 */ 988, 989, 990, 991, 992, 993, 994, 995, 996, 998,
/* 250 */ 999, 201, 355, 242, 823, 915, 935, 812, 209, 815,
/* 260 */ 1034, 818, 333, 332, 147, 18, 17, 208, 109, 242,
/* 270 */ 823, 318, 103, 812, 247, 815, 245, 818, 321, 320,
/* 280 */ 54, 83, 81, 84, 82, 198, 1048, 220, 221, 74,
/* 290 */ 73, 313, 310, 72, 71, 70, 1150, 100, 60, 251,
/* 300 */ 350, 349, 225, 220, 221, 348, 6, 57, 177, 347,
/* 310 */ 61, 346, 345, 176, 118, 123, 114, 122, 355, 310,
/* 320 */ 736, 914, 935, 733, 234, 734, 355, 735, 1035, 99,
/* 330 */ 935, 1031, 264, 297, 96, 268, 85, 16, 15, 138,
/* 340 */ 314, 216, 873, 357, 137, 171, 143, 146, 136, 813,
/* 350 */ 624, 816, 85, 248, 249, 140, 314, 1005, 625, 1003,
/* 360 */ 1004, 74, 73, 274, 1006, 72, 71, 70, 1007, 54,
/* 370 */ 1008, 1009, 824, 819, 54, 54, 253, 54, 250, 820,
/* 380 */ 328, 327, 355, 54, 54, 906, 935, 355, 824, 819,
/* 390 */ 905, 935, 771, 772, 1048, 820, 355, 272, 271, 897,
/* 400 */ 935, 355, 54, 54, 896, 935, 27, 752, 54, 54,
/* 410 */ 265, 111, 22, 21, 155, 236, 232, 1029, 110, 1035,
/* 420 */ 1032, 233, 322, 933, 323, 1032, 1032, 900, 1032, 14,
/* 430 */ 324, 325, 98, 45, 1032, 1032, 257, 631, 737, 738,
/* 440 */ 933, 13, 351, 966, 936, 261, 260, 10, 1048, 329,
/* 450 */ 330, 924, 788, 1032, 1032, 331, 335, 252, 185, 1032,
/* 460 */ 1032, 135, 252, 252, 226, 1023, 235, 1, 175, 749,
/* 470 */ 173, 822, 266, 938, 343, 174, 1033, 925, 3, 186,
/* 480 */ 185, 1020, 101, 768, 185, 778, 779, 55, 89, 92,
/* 490 */ 722, 289, 724, 756, 291, 5, 723, 50, 157, 846,
/* 500 */ 86, 39, 825, 810, 808, 55, 55, 86, 315, 112,
/* 510 */ 787, 86, 241, 623, 38, 95, 741, 38, 742, 29,
/* 520 */ 268, 28, 202, 128, 31, 127, 30, 203, 38, 93,
/* 530 */ 90, 292, 145, 144, 7, 739, 204, 740, 33, 1145,
/* 540 */ 32, 811, 809, 133, 35, 132, 34, 1144, 711, 1143,
/* 550 */ 218, 219, 199, 200, 205, 197, 206, 207, 211, 212,
/* 560 */ 1170, 213, 210, 194, 1162, 1106, 1105, 230, 64, 1102,
/* 570 */ 1101, 231, 334, 262, 1088, 1087, 273, 1056, 1067, 1064,
/* 580 */ 1065, 1049, 269, 1069, 161, 280, 895, 172, 1030, 767,
/* 590 */ 227, 1028, 943, 294, 295, 108, 94, 91, 287, 296,
/* 600 */ 1046, 163, 299, 300, 62, 164, 66, 275, 192, 277,
/* 610 */ 58, 285, 311, 827, 165, 937, 319, 166, 1169, 125,
/* 620 */ 1168, 1165, 326, 1161, 130, 1160, 1157, 963, 283, 59,
/* 630 */ 56, 281, 63, 193, 921, 139, 919, 141, 142, 917,
/* 640 */ 916, 254, 913, 912, 911, 910, 909, 908, 907, 904,
/* 650 */ 279, 898, 276, 891, 298, 65, 278, 1089, 344, 134,
/* 660 */ 337, 336, 338, 339, 341, 340, 342, 352, 871, 255,
/* 670 */ 256, 870, 258, 259, 869, 268, 852, 851, 23, 942,
/* 680 */ 941, 119, 120, 263, 744, 102, 152, 288, 153, 19,
/* 690 */ 20, 179, 964, 180, 183, 178, 182, 181, 184, 2,
/* 700 */ 4, 46, 270, 11, 965, 769, 158, 159, 1001, 780,
/* 710 */ 774, 160, 105, 229, 776, 106, 49, 169, 167, 168,
/* 720 */ 170, 1011, 282, 24, 25, 26, 47, 48, 40, 41,
/* 730 */ 290, 113, 13, 52, 116, 115, 642, 53, 117, 677,
/* 740 */ 675, 674, 673, 671, 670, 669, 666, 628, 309, 826,
/* 750 */ 121, 8, 240, 828, 316, 9, 317, 55, 87, 124,
/* 760 */ 126, 88, 714, 713, 129, 131, 710, 658, 656, 648,
/* 770 */ 654, 650, 652, 646, 644, 680, 679, 678, 676, 672,
/* 780 */ 668, 667, 187, 626, 44, 590, 875, 874, 874, 874,
/* 790 */ 874, 874, 874, 874, 874, 874, 874, 874, 42, 43,
};
static const YYCODETYPE yy_lookahead[] = {
/* 0 */ 269, 1, 209, 1, 200, 200, 209, 203, 204, 9,
......@@ -323,63 +323,63 @@ static const YYCODETYPE yy_lookahead[] = {
/* 200 */ 27, 28, 29, 30, 67, 68, 69, 200, 35, 36,
/* 210 */ 203, 204, 39, 40, 41, 101, 102, 103, 104, 105,
/* 220 */ 106, 107, 108, 109, 110, 111, 112, 113, 114, 115,
/* 230 */ 122, 247, 5, 269, 46, 251, 226, 227, 228, 229,
/* 230 */ 122, 247, 5, 0, 46, 251, 226, 227, 228, 229,
/* 240 */ 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
/* 250 */ 240, 63, 200, 1, 2, 203, 204, 5, 70, 7,
/* 260 */ 86, 9, 35, 36, 76, 77, 78, 79, 277, 1,
/* 260 */ 252, 9, 35, 36, 76, 77, 78, 79, 277, 1,
/* 270 */ 2, 83, 84, 5, 147, 7, 149, 9, 151, 152,
/* 280 */ 269, 27, 28, 29, 30, 269, 250, 35, 36, 35,
/* 290 */ 36, 39, 208, 39, 40, 41, 280, 62, 101, 215,
/* 280 */ 200, 27, 28, 29, 30, 269, 250, 35, 36, 35,
/* 290 */ 36, 39, 86, 39, 40, 41, 280, 85, 101, 70,
/* 300 */ 103, 104, 266, 35, 36, 108, 64, 65, 66, 112,
/* 310 */ 122, 114, 115, 71, 72, 73, 74, 75, 200, 84,
/* 320 */ 2, 203, 204, 5, 250, 7, 200, 9, 70, 203,
/* 330 */ 204, 200, 144, 91, 146, 1, 84, 64, 65, 66,
/* 340 */ 266, 153, 269, 9, 71, 200, 73, 74, 75, 198,
/* 350 */ 199, 242, 84, 35, 36, 82, 226, 200, 228, 229,
/* 360 */ 203, 204, 200, 233, 200, 203, 204, 237, 256, 239,
/* 370 */ 240, 200, 120, 121, 203, 204, 200, 35, 36, 127,
/* 380 */ 249, 39, 40, 41, 200, 200, 274, 200, 120, 121,
/* 390 */ 203, 204, 247, 0, 200, 127, 251, 271, 272, 200,
/* 400 */ 200, 250, 200, 39, 145, 147, 15, 149, 200, 151,
/* 410 */ 152, 247, 269, 154, 155, 251, 248, 266, 84, 84,
/* 420 */ 252, 200, 88, 247, 89, 248, 210, 251, 5, 252,
/* 430 */ 7, 247, 247, 200, 213, 251, 251, 204, 120, 121,
/* 440 */ 200, 247, 64, 65, 66, 251, 247, 247, 200, 247,
/* 450 */ 251, 251, 204, 251, 119, 247, 128, 129, 253, 251,
/* 460 */ 200, 80, 246, 200, 208, 210, 78, 224, 225, 100,
/* 470 */ 208, 215, 267, 213, 93, 85, 213, 215, 1, 86,
/* 480 */ 211, 212, 206, 207, 85, 85, 85, 85, 85, 125,
/* 490 */ 100, 251, 100, 85, 85, 126, 100, 85, 84, 244,
/* 500 */ 85, 100, 100, 100, 85, 85, 85, 269, 100, 100,
/* 510 */ 85, 120, 100, 84, 269, 100, 39, 80, 81, 100,
/* 520 */ 100, 100, 123, 123, 136, 100, 269, 148, 148, 150,
/* 530 */ 150, 148, 118, 150, 142, 5, 140, 7, 5, 269,
/* 540 */ 7, 269, 148, 148, 150, 150, 117, 269, 269, 269,
/* 550 */ 127, 269, 148, 269, 150, 269, 269, 269, 269, 269,
/* 560 */ 252, 252, 252, 242, 242, 242, 242, 242, 242, 268,
/* 570 */ 200, 200, 200, 200, 200, 200, 200, 250, 278, 250,
/* 580 */ 278, 62, 200, 250, 200, 254, 200, 200, 127, 200,
/* 590 */ 273, 92, 273, 273, 132, 131, 264, 200, 200, 139,
/* 600 */ 141, 265, 134, 273, 263, 200, 200, 200, 138, 262,
/* 610 */ 200, 200, 137, 200, 261, 260, 200, 200, 200, 259,
/* 620 */ 130, 258, 200, 257, 200, 133, 200, 200, 200, 143,
/* 630 */ 200, 200, 200, 200, 200, 200, 200, 116, 200, 200,
/* 310 */ 122, 114, 115, 71, 72, 73, 74, 75, 200, 86,
/* 320 */ 2, 203, 204, 5, 248, 7, 200, 9, 252, 203,
/* 330 */ 204, 251, 144, 91, 146, 123, 84, 64, 65, 66,
/* 340 */ 88, 153, 198, 199, 71, 256, 73, 74, 75, 5,
/* 350 */ 1, 7, 84, 35, 36, 82, 88, 226, 9, 228,
/* 360 */ 229, 35, 36, 274, 233, 39, 40, 41, 237, 200,
/* 370 */ 239, 240, 120, 121, 200, 200, 147, 200, 149, 127,
/* 380 */ 151, 152, 200, 200, 200, 203, 204, 200, 120, 121,
/* 390 */ 203, 204, 128, 129, 250, 127, 200, 271, 272, 203,
/* 400 */ 204, 200, 200, 200, 203, 204, 84, 39, 200, 200,
/* 410 */ 266, 89, 64, 65, 66, 248, 247, 200, 253, 252,
/* 420 */ 251, 247, 247, 200, 247, 251, 251, 204, 251, 210,
/* 430 */ 247, 247, 267, 84, 251, 251, 145, 88, 120, 121,
/* 440 */ 200, 119, 224, 225, 204, 154, 155, 210, 250, 247,
/* 450 */ 247, 208, 78, 251, 251, 247, 247, 200, 215, 251,
/* 460 */ 251, 80, 200, 200, 266, 246, 249, 211, 212, 100,
/* 470 */ 213, 127, 85, 208, 93, 213, 213, 208, 206, 207,
/* 480 */ 215, 244, 85, 85, 215, 85, 85, 100, 100, 100,
/* 490 */ 85, 85, 85, 125, 85, 126, 85, 84, 100, 85,
/* 500 */ 100, 100, 85, 1, 1, 100, 100, 100, 15, 100,
/* 510 */ 136, 100, 62, 85, 100, 84, 5, 100, 7, 148,
/* 520 */ 123, 150, 269, 148, 148, 150, 150, 269, 100, 140,
/* 530 */ 142, 118, 80, 81, 84, 5, 269, 7, 148, 269,
/* 540 */ 150, 39, 39, 148, 148, 150, 150, 269, 117, 269,
/* 550 */ 269, 269, 269, 269, 269, 269, 269, 269, 269, 269,
/* 560 */ 252, 269, 269, 269, 252, 242, 242, 242, 268, 242,
/* 570 */ 242, 242, 242, 200, 278, 278, 273, 200, 200, 200,
/* 580 */ 200, 250, 250, 200, 200, 200, 200, 254, 250, 127,
/* 590 */ 273, 200, 200, 200, 200, 62, 139, 141, 134, 200,
/* 600 */ 265, 264, 200, 200, 200, 263, 138, 273, 200, 273,
/* 610 */ 200, 137, 200, 120, 262, 200, 200, 261, 200, 200,
/* 620 */ 200, 200, 200, 200, 200, 200, 200, 200, 132, 200,
/* 630 */ 200, 131, 200, 200, 200, 200, 200, 200, 200, 200,
/* 640 */ 200, 200, 200, 200, 200, 200, 200, 200, 200, 200,
/* 650 */ 200, 200, 200, 200, 200, 200, 200, 99, 98, 202,
/* 660 */ 202, 53, 95, 97, 57, 96, 94, 86, 5, 156,
/* 650 */ 130, 200, 133, 200, 92, 143, 202, 202, 116, 99,
/* 660 */ 53, 98, 95, 97, 96, 57, 94, 86, 5, 156,
/* 670 */ 5, 5, 156, 5, 5, 123, 103, 102, 84, 214,
/* 680 */ 214, 210, 210, 145, 85, 124, 118, 84, 205, 100,
/* 690 */ 205, 217, 223, 205, 205, 222, 216, 221, 220, 218,
/* 700 */ 206, 219, 211, 85, 100, 84, 100, 85, 241, 225,
/* 710 */ 84, 1, 85, 84, 100, 85, 84, 84, 255, 135,
/* 720 */ 241, 135, 84, 100, 84, 84, 80, 118, 89, 119,
/* 730 */ 72, 5, 90, 90, 89, 5, 9, 5, 5, 5,
/* 740 */ 5, 5, 5, 87, 15, 84, 84, 80, 120, 85,
/* 750 */ 26, 61, 150, 100, 16, 150, 16, 5, 5, 85,
/* 760 */ 5, 150, 150, 5, 5, 5, 5, 5, 5, 5,
/* 770 */ 5, 5, 5, 5, 5, 5, 5, 100, 87, 62,
/* 780 */ 62, 0, 281, 281, 281, 281, 281, 281, 281, 281,
/* 790 */ 281, 281, 281, 21, 21, 281, 281, 281, 281, 281,
/* 680 */ 214, 210, 210, 145, 85, 124, 205, 118, 205, 205,
/* 690 */ 205, 221, 223, 217, 219, 222, 218, 220, 216, 211,
/* 700 */ 206, 84, 100, 100, 225, 85, 84, 84, 241, 85,
/* 710 */ 85, 100, 84, 1, 85, 84, 255, 258, 260, 259,
/* 720 */ 257, 241, 84, 135, 135, 84, 100, 100, 84, 84,
/* 730 */ 118, 80, 119, 90, 72, 89, 5, 90, 89, 9,
/* 740 */ 5, 5, 5, 5, 5, 5, 5, 87, 15, 85,
/* 750 */ 80, 84, 62, 120, 26, 84, 61, 100, 16, 150,
/* 760 */ 150, 16, 5, 5, 150, 150, 85, 5, 5, 5,
/* 770 */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* 780 */ 5, 5, 100, 87, 62, 62, 0, 281, 281, 281,
/* 790 */ 281, 281, 281, 281, 281, 281, 281, 281, 21, 21,
/* 800 */ 281, 281, 281, 281, 281, 281, 281, 281, 281, 281,
/* 810 */ 281, 281, 281, 281, 281, 281, 281, 281, 281, 281,
/* 820 */ 281, 281, 281, 281, 281, 281, 281, 281, 281, 281,
......@@ -399,111 +399,111 @@ static const YYCODETYPE yy_lookahead[] = {
/* 960 */ 281, 281, 281, 281, 281, 281, 281, 281, 281, 281,
/* 970 */ 281, 281, 281, 281, 281, 281, 281, 281, 281, 281,
/* 980 */ 281, 281, 281, 281, 281, 281, 281, 281, 281, 281,
/* 990 */ 281, 281, 281,
/* 990 */ 281, 281, 281, 281, 281, 281, 281, 281,
};
#define YY_SHIFT_COUNT (355)
#define YY_SHIFT_COUNT (357)
#define YY_SHIFT_MIN (0)
#define YY_SHIFT_MAX (781)
#define YY_SHIFT_MAX (786)
static const unsigned short int yy_shift_ofst[] = {
/* 0 */ 188, 114, 114, 197, 197, 334, 174, 252, 268, 268,
/* 0 */ 188, 114, 114, 197, 197, 349, 206, 252, 268, 268,
/* 10 */ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
/* 20 */ 2, 2, 2, 23, 23, 23, 23, 23, 23, 23,
/* 30 */ 23, 23, 23, 23, 23, 23, 0, 99, 268, 318,
/* 40 */ 318, 318, 2, 2, 2, 108, 108, 23, 23, 328,
/* 50 */ 23, 393, 23, 23, 23, 23, 381, 174, 92, 92,
/* 60 */ 28, 795, 795, 795, 268, 268, 268, 268, 268, 268,
/* 40 */ 318, 318, 2, 2, 2, 108, 108, 23, 23, 264,
/* 50 */ 23, 233, 23, 23, 23, 23, 381, 206, 92, 92,
/* 60 */ 28, 800, 800, 800, 268, 268, 268, 268, 268, 268,
/* 70 */ 268, 268, 268, 268, 268, 268, 268, 268, 268, 268,
/* 80 */ 268, 268, 268, 268, 268, 268, 318, 318, 318, 227,
/* 90 */ 227, 227, 227, 227, 227, 227, 23, 23, 364, 23,
/* 100 */ 23, 23, 108, 108, 23, 23, 23, 388, 23, 388,
/* 90 */ 227, 227, 227, 227, 227, 227, 23, 23, 368, 23,
/* 100 */ 23, 23, 108, 108, 23, 23, 23, 374, 23, 374,
/* 110 */ 369, 108, 23, 23, 23, 23, 23, 23, 23, 23,
/* 120 */ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
/* 130 */ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
/* 140 */ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
/* 150 */ 23, 23, 23, 23, 23, 23, 23, 461, 461, 461,
/* 160 */ 461, 519, 519, 460, 459, 468, 470, 475, 462, 464,
/* 170 */ 490, 492, 486, 499, 499, 521, 174, 174, 558, 560,
/* 180 */ 608, 567, 566, 607, 569, 572, 521, 28, 581, 581,
/* 190 */ 581, 581, 795, 795, 29, 58, 58, 90, 58, 147,
/* 150 */ 23, 23, 23, 23, 23, 23, 23, 462, 462, 462,
/* 160 */ 462, 533, 533, 457, 456, 464, 468, 474, 496, 500,
/* 170 */ 520, 519, 512, 562, 562, 542, 206, 206, 560, 563,
/* 180 */ 607, 567, 566, 608, 568, 572, 542, 28, 581, 581,
/* 190 */ 581, 581, 800, 800, 29, 58, 58, 90, 58, 147,
/* 200 */ 173, 242, 254, 254, 254, 254, 254, 254, 273, 69,
/* 210 */ 342, 342, 342, 342, 127, 258, 259, 335, 82, 82,
/* 220 */ 5, 423, 137, 378, 390, 399, 400, 401, 402, 403,
/* 230 */ 392, 396, 408, 409, 412, 415, 419, 414, 420, 421,
/* 240 */ 477, 235, 391, 425, 379, 380, 383, 530, 533, 394,
/* 250 */ 395, 429, 404, 437, 663, 513, 665, 666, 516, 668,
/* 260 */ 669, 573, 575, 538, 552, 568, 594, 561, 599, 603,
/* 270 */ 589, 604, 618, 621, 622, 626, 627, 606, 629, 630,
/* 280 */ 632, 710, 633, 614, 584, 623, 586, 638, 568, 640,
/* 290 */ 609, 641, 610, 646, 642, 639, 658, 726, 643, 645,
/* 300 */ 727, 730, 732, 733, 734, 735, 736, 737, 656, 729,
/* 310 */ 667, 661, 664, 628, 662, 724, 690, 738, 602, 605,
/* 320 */ 653, 653, 653, 653, 740, 611, 612, 653, 653, 653,
/* 330 */ 752, 753, 674, 653, 755, 758, 759, 760, 761, 762,
/* 340 */ 763, 764, 765, 766, 767, 768, 769, 770, 771, 677,
/* 350 */ 691, 772, 773, 717, 718, 781,
/* 210 */ 326, 326, 326, 326, 127, 229, 291, 322, 82, 82,
/* 220 */ 5, 344, 137, 348, 387, 212, 397, 398, 400, 401,
/* 230 */ 388, 389, 405, 406, 407, 409, 411, 413, 414, 417,
/* 240 */ 502, 503, 450, 493, 428, 371, 375, 376, 511, 530,
/* 250 */ 390, 395, 431, 396, 452, 663, 513, 665, 666, 516,
/* 260 */ 668, 669, 573, 575, 538, 552, 569, 594, 561, 599,
/* 270 */ 617, 602, 603, 620, 622, 624, 623, 625, 611, 628,
/* 280 */ 629, 631, 712, 638, 626, 588, 627, 589, 641, 569,
/* 290 */ 644, 612, 645, 613, 651, 643, 646, 662, 731, 647,
/* 300 */ 649, 730, 735, 736, 737, 738, 739, 740, 741, 660,
/* 310 */ 733, 670, 667, 664, 690, 633, 671, 728, 695, 742,
/* 320 */ 609, 610, 657, 657, 657, 657, 745, 614, 615, 657,
/* 330 */ 657, 657, 757, 758, 681, 657, 762, 763, 764, 765,
/* 340 */ 766, 767, 768, 769, 770, 771, 772, 773, 774, 775,
/* 350 */ 776, 682, 696, 777, 778, 722, 723, 786,
};
#define YY_REDUCE_COUNT (193)
#define YY_REDUCE_MIN (-269)
#define YY_REDUCE_MAX (494)
static const short yy_reduce_ofst[] = {
/* 0 */ 151, 10, 10, 130, 130, 126, -65, -207, -203, -178,
/* 10 */ -196, -185, -166, -156, -108, -76, 7, 52, 118, 157,
/* 20 */ 162, 171, 187, -16, -140, -139, 145, 164, 176, 184,
/* 30 */ 185, 194, 199, 200, 202, 208, -99, -35, 16, -143,
/* 40 */ 168, 177, -137, 233, 248, 36, 74, -195, -9, 112,
/* 50 */ 131, 216, 221, 260, 263, 240, 84, 255, 256, 262,
/* 60 */ 243, 205, 269, 276, -269, -216, -193, -36, 11, 73,
/* 70 */ 143, 238, 245, 257, 270, 272, 278, 279, 280, 282,
/* 80 */ 284, 286, 287, 288, 289, 290, 308, 309, 310, 109,
/* 90 */ 321, 322, 323, 324, 325, 326, 370, 371, 301, 372,
/* 100 */ 373, 374, 327, 329, 375, 376, 382, 300, 384, 302,
/* 110 */ 331, 333, 386, 387, 389, 397, 398, 405, 406, 407,
/* 120 */ 410, 411, 413, 416, 417, 418, 422, 424, 426, 427,
/* 130 */ 428, 430, 431, 432, 433, 434, 435, 436, 438, 439,
/* 140 */ 440, 441, 442, 443, 444, 445, 446, 447, 448, 449,
/* 150 */ 450, 451, 452, 453, 454, 455, 456, 317, 319, 320,
/* 160 */ 330, 457, 458, 336, 332, 341, 347, 353, 355, 360,
/* 170 */ 363, 366, 463, 465, 466, 467, 471, 472, 469, 473,
/* 180 */ 476, 474, 478, 481, 482, 480, 479, 484, 483, 485,
/* 190 */ 488, 489, 491, 494,
/* 0 */ 144, 10, 10, 131, 131, 126, -65, -207, -203, -178,
/* 10 */ -196, -185, -166, -156, -108, -76, 7, 52, 118, 182,
/* 20 */ 187, 196, 201, -16, -140, -139, 169, 174, 175, 177,
/* 30 */ 183, 184, 202, 203, 208, 209, -99, -35, 16, -143,
/* 40 */ 76, 167, -137, 223, 240, 36, 198, -195, -9, 89,
/* 50 */ 217, 219, 257, 262, 263, 80, 243, 237, 265, 269,
/* 60 */ 218, 165, 256, 272, -269, -216, -193, 253, 258, 267,
/* 70 */ 270, 278, 280, 281, 282, 283, 284, 285, 286, 287,
/* 80 */ 288, 289, 290, 292, 293, 294, 8, 308, 312, 323,
/* 90 */ 324, 325, 327, 328, 329, 330, 373, 377, 300, 378,
/* 100 */ 379, 380, 331, 332, 383, 384, 385, 296, 386, 297,
/* 110 */ 333, 338, 391, 392, 393, 394, 399, 402, 403, 404,
/* 120 */ 408, 410, 412, 415, 416, 418, 419, 420, 421, 422,
/* 130 */ 423, 424, 425, 426, 427, 429, 430, 432, 433, 434,
/* 140 */ 435, 436, 437, 438, 439, 440, 441, 442, 443, 444,
/* 150 */ 445, 446, 447, 448, 449, 451, 453, 303, 317, 334,
/* 160 */ 336, 454, 455, 335, 337, 342, 352, 356, 458, 460,
/* 170 */ 459, 463, 461, 465, 466, 467, 471, 472, 469, 473,
/* 180 */ 470, 476, 477, 478, 475, 482, 480, 479, 481, 483,
/* 190 */ 484, 485, 488, 494,
};
static const YYACTIONTYPE yy_default[] = {
/* 0 */ 866, 994, 933, 1004, 916, 866, 926, 1145, 1145, 1145,
/* 10 */ 866, 866, 866, 866, 866, 866, 866, 866, 866, 866,
/* 20 */ 866, 866, 866, 866, 866, 866, 866, 866, 866, 866,
/* 30 */ 866, 866, 866, 866, 866, 866, 1052, 886, 1145, 866,
/* 40 */ 866, 866, 866, 866, 866, 866, 866, 866, 866, 1067,
/* 50 */ 866, 926, 866, 866, 866, 866, 940, 926, 940, 940,
/* 60 */ 866, 1047, 978, 996, 866, 866, 866, 866, 866, 866,
/* 70 */ 866, 866, 866, 866, 866, 866, 866, 866, 866, 866,
/* 80 */ 866, 866, 866, 866, 866, 866, 866, 866, 866, 866,
/* 90 */ 866, 866, 866, 866, 866, 866, 866, 866, 1054, 1060,
/* 100 */ 1057, 866, 866, 866, 1062, 866, 866, 1086, 866, 1086,
/* 110 */ 1045, 866, 866, 866, 866, 866, 866, 866, 866, 866,
/* 120 */ 866, 866, 866, 866, 866, 866, 866, 866, 866, 866,
/* 130 */ 866, 866, 866, 866, 866, 866, 866, 866, 866, 914,
/* 140 */ 866, 912, 866, 866, 866, 866, 866, 866, 866, 866,
/* 150 */ 866, 866, 866, 866, 897, 866, 884, 866, 866, 866,
/* 160 */ 866, 888, 888, 1093, 1097, 1079, 1091, 1087, 1074, 1072,
/* 170 */ 1070, 1078, 1101, 938, 938, 934, 926, 926, 956, 954,
/* 180 */ 952, 944, 950, 946, 948, 942, 917, 866, 924, 924,
/* 190 */ 924, 924, 978, 996, 866, 1102, 1092, 866, 1144, 1132,
/* 200 */ 1131, 866, 1140, 1139, 1138, 1130, 1129, 1128, 866, 866,
/* 210 */ 1124, 1127, 1126, 1125, 866, 866, 866, 866, 1134, 1133,
/* 220 */ 866, 866, 866, 866, 866, 866, 866, 866, 866, 866,
/* 230 */ 1098, 1094, 866, 866, 866, 866, 866, 866, 866, 866,
/* 240 */ 866, 1104, 866, 866, 866, 866, 866, 866, 866, 866,
/* 250 */ 866, 1006, 866, 866, 866, 866, 866, 866, 866, 866,
/* 260 */ 866, 866, 866, 866, 1044, 866, 866, 866, 866, 866,
/* 270 */ 1056, 1055, 866, 866, 866, 866, 866, 866, 866, 866,
/* 280 */ 866, 866, 866, 1088, 866, 1080, 866, 866, 1018, 866,
/* 290 */ 866, 866, 866, 866, 866, 866, 866, 866, 866, 866,
/* 300 */ 866, 866, 866, 866, 866, 866, 866, 866, 866, 866,
/* 310 */ 866, 866, 866, 866, 866, 866, 866, 866, 866, 866,
/* 320 */ 1163, 1158, 1159, 1156, 866, 866, 866, 1155, 1150, 1151,
/* 330 */ 866, 866, 866, 1148, 866, 866, 866, 866, 866, 866,
/* 340 */ 866, 866, 866, 866, 866, 866, 866, 866, 866, 962,
/* 350 */ 866, 895, 893, 927, 866, 866,
/* 0 */ 872, 1000, 939, 1010, 922, 872, 932, 1153, 1153, 1153,
/* 10 */ 872, 872, 872, 872, 872, 872, 872, 872, 872, 872,
/* 20 */ 872, 872, 872, 872, 872, 872, 872, 872, 872, 872,
/* 30 */ 872, 872, 872, 872, 872, 872, 1058, 892, 1153, 872,
/* 40 */ 872, 872, 872, 872, 872, 872, 872, 872, 872, 1073,
/* 50 */ 872, 932, 872, 872, 872, 872, 946, 932, 946, 946,
/* 60 */ 872, 1053, 984, 1002, 872, 872, 872, 872, 872, 872,
/* 70 */ 872, 872, 872, 872, 872, 872, 872, 872, 872, 872,
/* 80 */ 872, 872, 872, 872, 872, 872, 872, 872, 872, 872,
/* 90 */ 872, 872, 872, 872, 872, 872, 872, 872, 1060, 1066,
/* 100 */ 1063, 872, 872, 872, 1068, 872, 872, 1092, 872, 1092,
/* 110 */ 1051, 872, 872, 872, 872, 872, 872, 872, 872, 872,
/* 120 */ 872, 872, 872, 872, 872, 872, 872, 872, 872, 872,
/* 130 */ 872, 872, 872, 872, 872, 872, 872, 872, 872, 920,
/* 140 */ 872, 918, 872, 872, 872, 872, 872, 872, 872, 872,
/* 150 */ 872, 872, 872, 872, 903, 872, 890, 872, 872, 872,
/* 160 */ 872, 894, 894, 1099, 1103, 1085, 1097, 1093, 1080, 1078,
/* 170 */ 1076, 1084, 1107, 944, 944, 940, 932, 932, 962, 960,
/* 180 */ 958, 950, 956, 952, 954, 948, 923, 872, 930, 930,
/* 190 */ 930, 930, 984, 1002, 872, 1108, 1098, 872, 1152, 1140,
/* 200 */ 1139, 872, 1148, 1147, 1146, 1138, 1137, 1136, 872, 872,
/* 210 */ 1132, 1135, 1134, 1133, 872, 872, 872, 872, 1142, 1141,
/* 220 */ 872, 872, 872, 872, 872, 872, 872, 872, 872, 872,
/* 230 */ 1104, 1100, 872, 872, 872, 872, 872, 872, 872, 872,
/* 240 */ 872, 872, 1110, 872, 872, 872, 872, 872, 872, 872,
/* 250 */ 872, 872, 1012, 872, 872, 872, 872, 872, 872, 872,
/* 260 */ 872, 872, 872, 872, 872, 1050, 872, 872, 872, 872,
/* 270 */ 872, 1062, 1061, 872, 872, 872, 872, 872, 872, 872,
/* 280 */ 872, 872, 872, 872, 1094, 872, 1086, 872, 872, 1024,
/* 290 */ 872, 872, 872, 872, 872, 872, 872, 872, 872, 872,
/* 300 */ 872, 872, 872, 872, 872, 872, 872, 872, 872, 872,
/* 310 */ 872, 872, 872, 872, 872, 872, 872, 872, 872, 872,
/* 320 */ 872, 872, 1171, 1166, 1167, 1164, 872, 872, 872, 1163,
/* 330 */ 1158, 1159, 872, 872, 872, 1156, 872, 872, 872, 872,
/* 340 */ 872, 872, 872, 872, 872, 872, 872, 872, 872, 872,
/* 350 */ 872, 968, 872, 901, 899, 933, 872, 872,
};
/********** End of lemon-generated parsing tables *****************************/
......@@ -1334,66 +1334,68 @@ static const char *const yyRuleName[] = {
/* 235 */ "expr ::= ID",
/* 236 */ "expr ::= ID DOT ID",
/* 237 */ "expr ::= ID DOT STAR",
/* 238 */ "expr ::= INTEGER",
/* 239 */ "expr ::= MINUS INTEGER",
/* 240 */ "expr ::= PLUS INTEGER",
/* 241 */ "expr ::= FLOAT",
/* 242 */ "expr ::= MINUS FLOAT",
/* 243 */ "expr ::= PLUS FLOAT",
/* 244 */ "expr ::= STRING",
/* 245 */ "expr ::= NOW",
/* 246 */ "expr ::= VARIABLE",
/* 247 */ "expr ::= PLUS VARIABLE",
/* 248 */ "expr ::= MINUS VARIABLE",
/* 249 */ "expr ::= BOOL",
/* 250 */ "expr ::= NULL",
/* 251 */ "expr ::= ID LP exprlist RP",
/* 252 */ "expr ::= ID LP STAR RP",
/* 253 */ "expr ::= expr IS NULL",
/* 254 */ "expr ::= expr IS NOT NULL",
/* 255 */ "expr ::= expr LT expr",
/* 256 */ "expr ::= expr GT expr",
/* 257 */ "expr ::= expr LE expr",
/* 258 */ "expr ::= expr GE expr",
/* 259 */ "expr ::= expr NE expr",
/* 260 */ "expr ::= expr EQ expr",
/* 261 */ "expr ::= expr BETWEEN expr AND expr",
/* 262 */ "expr ::= expr AND expr",
/* 263 */ "expr ::= expr OR expr",
/* 264 */ "expr ::= expr PLUS expr",
/* 265 */ "expr ::= expr MINUS expr",
/* 266 */ "expr ::= expr STAR expr",
/* 267 */ "expr ::= expr SLASH expr",
/* 268 */ "expr ::= expr REM expr",
/* 269 */ "expr ::= expr LIKE expr",
/* 270 */ "expr ::= expr MATCH expr",
/* 271 */ "expr ::= expr NMATCH expr",
/* 272 */ "expr ::= expr IN LP exprlist RP",
/* 273 */ "exprlist ::= exprlist COMMA expritem",
/* 274 */ "exprlist ::= expritem",
/* 275 */ "expritem ::= expr",
/* 276 */ "expritem ::=",
/* 277 */ "cmd ::= RESET QUERY CACHE",
/* 278 */ "cmd ::= SYNCDB ids REPLICA",
/* 279 */ "cmd ::= ALTER TABLE ftblname ADD COLUMN columnlist",
/* 280 */ "cmd ::= ALTER TABLE ftblname DROP COLUMN ids",
/* 281 */ "cmd ::= ALTER TABLE ftblname MODIFY COLUMN columnlist",
/* 282 */ "cmd ::= ALTER TABLE ftblname ADD TAG columnlist",
/* 283 */ "cmd ::= ALTER TABLE ftblname DROP TAG ids",
/* 284 */ "cmd ::= ALTER TABLE ftblname CHANGE TAG ids ids",
/* 285 */ "cmd ::= ALTER TABLE ftblname SET TAG ids EQ tagitem",
/* 286 */ "cmd ::= ALTER TABLE ftblname MODIFY TAG columnlist",
/* 287 */ "cmd ::= ALTER STABLE ftblname ADD COLUMN columnlist",
/* 288 */ "cmd ::= ALTER STABLE ftblname DROP COLUMN ids",
/* 289 */ "cmd ::= ALTER STABLE ftblname MODIFY COLUMN columnlist",
/* 290 */ "cmd ::= ALTER STABLE ftblname ADD TAG columnlist",
/* 291 */ "cmd ::= ALTER STABLE ftblname DROP TAG ids",
/* 292 */ "cmd ::= ALTER STABLE ftblname CHANGE TAG ids ids",
/* 293 */ "cmd ::= ALTER STABLE ftblname SET TAG ids EQ tagitem",
/* 294 */ "cmd ::= ALTER STABLE ftblname MODIFY TAG columnlist",
/* 295 */ "cmd ::= KILL CONNECTION INTEGER",
/* 296 */ "cmd ::= KILL STREAM INTEGER COLON INTEGER",
/* 297 */ "cmd ::= KILL QUERY INTEGER COLON INTEGER",
/* 238 */ "expr ::= ESCAPE DOT ID",
/* 239 */ "expr ::= ESCAPE DOT STAR",
/* 240 */ "expr ::= INTEGER",
/* 241 */ "expr ::= MINUS INTEGER",
/* 242 */ "expr ::= PLUS INTEGER",
/* 243 */ "expr ::= FLOAT",
/* 244 */ "expr ::= MINUS FLOAT",
/* 245 */ "expr ::= PLUS FLOAT",
/* 246 */ "expr ::= STRING",
/* 247 */ "expr ::= NOW",
/* 248 */ "expr ::= VARIABLE",
/* 249 */ "expr ::= PLUS VARIABLE",
/* 250 */ "expr ::= MINUS VARIABLE",
/* 251 */ "expr ::= BOOL",
/* 252 */ "expr ::= NULL",
/* 253 */ "expr ::= ID LP exprlist RP",
/* 254 */ "expr ::= ID LP STAR RP",
/* 255 */ "expr ::= expr IS NULL",
/* 256 */ "expr ::= expr IS NOT NULL",
/* 257 */ "expr ::= expr LT expr",
/* 258 */ "expr ::= expr GT expr",
/* 259 */ "expr ::= expr LE expr",
/* 260 */ "expr ::= expr GE expr",
/* 261 */ "expr ::= expr NE expr",
/* 262 */ "expr ::= expr EQ expr",
/* 263 */ "expr ::= expr BETWEEN expr AND expr",
/* 264 */ "expr ::= expr AND expr",
/* 265 */ "expr ::= expr OR expr",
/* 266 */ "expr ::= expr PLUS expr",
/* 267 */ "expr ::= expr MINUS expr",
/* 268 */ "expr ::= expr STAR expr",
/* 269 */ "expr ::= expr SLASH expr",
/* 270 */ "expr ::= expr REM expr",
/* 271 */ "expr ::= expr LIKE expr",
/* 272 */ "expr ::= expr MATCH expr",
/* 273 */ "expr ::= expr NMATCH expr",
/* 274 */ "expr ::= expr IN LP exprlist RP",
/* 275 */ "exprlist ::= exprlist COMMA expritem",
/* 276 */ "exprlist ::= expritem",
/* 277 */ "expritem ::= expr",
/* 278 */ "expritem ::=",
/* 279 */ "cmd ::= RESET QUERY CACHE",
/* 280 */ "cmd ::= SYNCDB ids REPLICA",
/* 281 */ "cmd ::= ALTER TABLE ftblname ADD COLUMN columnlist",
/* 282 */ "cmd ::= ALTER TABLE ftblname DROP COLUMN ids",
/* 283 */ "cmd ::= ALTER TABLE ftblname MODIFY COLUMN columnlist",
/* 284 */ "cmd ::= ALTER TABLE ftblname ADD TAG columnlist",
/* 285 */ "cmd ::= ALTER TABLE ftblname DROP TAG ids",
/* 286 */ "cmd ::= ALTER TABLE ftblname CHANGE TAG ids ids",
/* 287 */ "cmd ::= ALTER TABLE ftblname SET TAG ids EQ tagitem",
/* 288 */ "cmd ::= ALTER TABLE ftblname MODIFY TAG columnlist",
/* 289 */ "cmd ::= ALTER STABLE ftblname ADD COLUMN columnlist",
/* 290 */ "cmd ::= ALTER STABLE ftblname DROP COLUMN ids",
/* 291 */ "cmd ::= ALTER STABLE ftblname MODIFY COLUMN columnlist",
/* 292 */ "cmd ::= ALTER STABLE ftblname ADD TAG columnlist",
/* 293 */ "cmd ::= ALTER STABLE ftblname DROP TAG ids",
/* 294 */ "cmd ::= ALTER STABLE ftblname CHANGE TAG ids ids",
/* 295 */ "cmd ::= ALTER STABLE ftblname SET TAG ids EQ tagitem",
/* 296 */ "cmd ::= ALTER STABLE ftblname MODIFY TAG columnlist",
/* 297 */ "cmd ::= KILL CONNECTION INTEGER",
/* 298 */ "cmd ::= KILL STREAM INTEGER COLON INTEGER",
/* 299 */ "cmd ::= KILL QUERY INTEGER COLON INTEGER",
};
#endif /* NDEBUG */
......@@ -2099,66 +2101,68 @@ static const YYCODETYPE yyRuleInfoLhs[] = {
269, /* (235) expr ::= ID */
269, /* (236) expr ::= ID DOT ID */
269, /* (237) expr ::= ID DOT STAR */
269, /* (238) expr ::= INTEGER */
269, /* (239) expr ::= MINUS INTEGER */
269, /* (240) expr ::= PLUS INTEGER */
269, /* (241) expr ::= FLOAT */
269, /* (242) expr ::= MINUS FLOAT */
269, /* (243) expr ::= PLUS FLOAT */
269, /* (244) expr ::= STRING */
269, /* (245) expr ::= NOW */
269, /* (246) expr ::= VARIABLE */
269, /* (247) expr ::= PLUS VARIABLE */
269, /* (248) expr ::= MINUS VARIABLE */
269, /* (249) expr ::= BOOL */
269, /* (250) expr ::= NULL */
269, /* (251) expr ::= ID LP exprlist RP */
269, /* (252) expr ::= ID LP STAR RP */
269, /* (253) expr ::= expr IS NULL */
269, /* (254) expr ::= expr IS NOT NULL */
269, /* (255) expr ::= expr LT expr */
269, /* (256) expr ::= expr GT expr */
269, /* (257) expr ::= expr LE expr */
269, /* (258) expr ::= expr GE expr */
269, /* (259) expr ::= expr NE expr */
269, /* (260) expr ::= expr EQ expr */
269, /* (261) expr ::= expr BETWEEN expr AND expr */
269, /* (262) expr ::= expr AND expr */
269, /* (263) expr ::= expr OR expr */
269, /* (264) expr ::= expr PLUS expr */
269, /* (265) expr ::= expr MINUS expr */
269, /* (266) expr ::= expr STAR expr */
269, /* (267) expr ::= expr SLASH expr */
269, /* (268) expr ::= expr REM expr */
269, /* (269) expr ::= expr LIKE expr */
269, /* (270) expr ::= expr MATCH expr */
269, /* (271) expr ::= expr NMATCH expr */
269, /* (272) expr ::= expr IN LP exprlist RP */
209, /* (273) exprlist ::= exprlist COMMA expritem */
209, /* (274) exprlist ::= expritem */
280, /* (275) expritem ::= expr */
280, /* (276) expritem ::= */
199, /* (277) cmd ::= RESET QUERY CACHE */
199, /* (278) cmd ::= SYNCDB ids REPLICA */
199, /* (279) cmd ::= ALTER TABLE ftblname ADD COLUMN columnlist */
199, /* (280) cmd ::= ALTER TABLE ftblname DROP COLUMN ids */
199, /* (281) cmd ::= ALTER TABLE ftblname MODIFY COLUMN columnlist */
199, /* (282) cmd ::= ALTER TABLE ftblname ADD TAG columnlist */
199, /* (283) cmd ::= ALTER TABLE ftblname DROP TAG ids */
199, /* (284) cmd ::= ALTER TABLE ftblname CHANGE TAG ids ids */
199, /* (285) cmd ::= ALTER TABLE ftblname SET TAG ids EQ tagitem */
199, /* (286) cmd ::= ALTER TABLE ftblname MODIFY TAG columnlist */
199, /* (287) cmd ::= ALTER STABLE ftblname ADD COLUMN columnlist */
199, /* (288) cmd ::= ALTER STABLE ftblname DROP COLUMN ids */
199, /* (289) cmd ::= ALTER STABLE ftblname MODIFY COLUMN columnlist */
199, /* (290) cmd ::= ALTER STABLE ftblname ADD TAG columnlist */
199, /* (291) cmd ::= ALTER STABLE ftblname DROP TAG ids */
199, /* (292) cmd ::= ALTER STABLE ftblname CHANGE TAG ids ids */
199, /* (293) cmd ::= ALTER STABLE ftblname SET TAG ids EQ tagitem */
199, /* (294) cmd ::= ALTER STABLE ftblname MODIFY TAG columnlist */
199, /* (295) cmd ::= KILL CONNECTION INTEGER */
199, /* (296) cmd ::= KILL STREAM INTEGER COLON INTEGER */
199, /* (297) cmd ::= KILL QUERY INTEGER COLON INTEGER */
269, /* (238) expr ::= ESCAPE DOT ID */
269, /* (239) expr ::= ESCAPE DOT STAR */
269, /* (240) expr ::= INTEGER */
269, /* (241) expr ::= MINUS INTEGER */
269, /* (242) expr ::= PLUS INTEGER */
269, /* (243) expr ::= FLOAT */
269, /* (244) expr ::= MINUS FLOAT */
269, /* (245) expr ::= PLUS FLOAT */
269, /* (246) expr ::= STRING */
269, /* (247) expr ::= NOW */
269, /* (248) expr ::= VARIABLE */
269, /* (249) expr ::= PLUS VARIABLE */
269, /* (250) expr ::= MINUS VARIABLE */
269, /* (251) expr ::= BOOL */
269, /* (252) expr ::= NULL */
269, /* (253) expr ::= ID LP exprlist RP */
269, /* (254) expr ::= ID LP STAR RP */
269, /* (255) expr ::= expr IS NULL */
269, /* (256) expr ::= expr IS NOT NULL */
269, /* (257) expr ::= expr LT expr */
269, /* (258) expr ::= expr GT expr */
269, /* (259) expr ::= expr LE expr */
269, /* (260) expr ::= expr GE expr */
269, /* (261) expr ::= expr NE expr */
269, /* (262) expr ::= expr EQ expr */
269, /* (263) expr ::= expr BETWEEN expr AND expr */
269, /* (264) expr ::= expr AND expr */
269, /* (265) expr ::= expr OR expr */
269, /* (266) expr ::= expr PLUS expr */
269, /* (267) expr ::= expr MINUS expr */
269, /* (268) expr ::= expr STAR expr */
269, /* (269) expr ::= expr SLASH expr */
269, /* (270) expr ::= expr REM expr */
269, /* (271) expr ::= expr LIKE expr */
269, /* (272) expr ::= expr MATCH expr */
269, /* (273) expr ::= expr NMATCH expr */
269, /* (274) expr ::= expr IN LP exprlist RP */
209, /* (275) exprlist ::= exprlist COMMA expritem */
209, /* (276) exprlist ::= expritem */
280, /* (277) expritem ::= expr */
280, /* (278) expritem ::= */
199, /* (279) cmd ::= RESET QUERY CACHE */
199, /* (280) cmd ::= SYNCDB ids REPLICA */
199, /* (281) cmd ::= ALTER TABLE ftblname ADD COLUMN columnlist */
199, /* (282) cmd ::= ALTER TABLE ftblname DROP COLUMN ids */
199, /* (283) cmd ::= ALTER TABLE ftblname MODIFY COLUMN columnlist */
199, /* (284) cmd ::= ALTER TABLE ftblname ADD TAG columnlist */
199, /* (285) cmd ::= ALTER TABLE ftblname DROP TAG ids */
199, /* (286) cmd ::= ALTER TABLE ftblname CHANGE TAG ids ids */
199, /* (287) cmd ::= ALTER TABLE ftblname SET TAG ids EQ tagitem */
199, /* (288) cmd ::= ALTER TABLE ftblname MODIFY TAG columnlist */
199, /* (289) cmd ::= ALTER STABLE ftblname ADD COLUMN columnlist */
199, /* (290) cmd ::= ALTER STABLE ftblname DROP COLUMN ids */
199, /* (291) cmd ::= ALTER STABLE ftblname MODIFY COLUMN columnlist */
199, /* (292) cmd ::= ALTER STABLE ftblname ADD TAG columnlist */
199, /* (293) cmd ::= ALTER STABLE ftblname DROP TAG ids */
199, /* (294) cmd ::= ALTER STABLE ftblname CHANGE TAG ids ids */
199, /* (295) cmd ::= ALTER STABLE ftblname SET TAG ids EQ tagitem */
199, /* (296) cmd ::= ALTER STABLE ftblname MODIFY TAG columnlist */
199, /* (297) cmd ::= KILL CONNECTION INTEGER */
199, /* (298) cmd ::= KILL STREAM INTEGER COLON INTEGER */
199, /* (299) cmd ::= KILL QUERY INTEGER COLON INTEGER */
};
/* For rule J, yyRuleInfoNRhs[J] contains the negative of the number
......@@ -2402,66 +2406,68 @@ static const signed char yyRuleInfoNRhs[] = {
-1, /* (235) expr ::= ID */
-3, /* (236) expr ::= ID DOT ID */
-3, /* (237) expr ::= ID DOT STAR */
-1, /* (238) expr ::= INTEGER */
-2, /* (239) expr ::= MINUS INTEGER */
-2, /* (240) expr ::= PLUS INTEGER */
-1, /* (241) expr ::= FLOAT */
-2, /* (242) expr ::= MINUS FLOAT */
-2, /* (243) expr ::= PLUS FLOAT */
-1, /* (244) expr ::= STRING */
-1, /* (245) expr ::= NOW */
-1, /* (246) expr ::= VARIABLE */
-2, /* (247) expr ::= PLUS VARIABLE */
-2, /* (248) expr ::= MINUS VARIABLE */
-1, /* (249) expr ::= BOOL */
-1, /* (250) expr ::= NULL */
-4, /* (251) expr ::= ID LP exprlist RP */
-4, /* (252) expr ::= ID LP STAR RP */
-3, /* (253) expr ::= expr IS NULL */
-4, /* (254) expr ::= expr IS NOT NULL */
-3, /* (255) expr ::= expr LT expr */
-3, /* (256) expr ::= expr GT expr */
-3, /* (257) expr ::= expr LE expr */
-3, /* (258) expr ::= expr GE expr */
-3, /* (259) expr ::= expr NE expr */
-3, /* (260) expr ::= expr EQ expr */
-5, /* (261) expr ::= expr BETWEEN expr AND expr */
-3, /* (262) expr ::= expr AND expr */
-3, /* (263) expr ::= expr OR expr */
-3, /* (264) expr ::= expr PLUS expr */
-3, /* (265) expr ::= expr MINUS expr */
-3, /* (266) expr ::= expr STAR expr */
-3, /* (267) expr ::= expr SLASH expr */
-3, /* (268) expr ::= expr REM expr */
-3, /* (269) expr ::= expr LIKE expr */
-3, /* (270) expr ::= expr MATCH expr */
-3, /* (271) expr ::= expr NMATCH expr */
-5, /* (272) expr ::= expr IN LP exprlist RP */
-3, /* (273) exprlist ::= exprlist COMMA expritem */
-1, /* (274) exprlist ::= expritem */
-1, /* (275) expritem ::= expr */
0, /* (276) expritem ::= */
-3, /* (277) cmd ::= RESET QUERY CACHE */
-3, /* (278) cmd ::= SYNCDB ids REPLICA */
-6, /* (279) cmd ::= ALTER TABLE ftblname ADD COLUMN columnlist */
-6, /* (280) cmd ::= ALTER TABLE ftblname DROP COLUMN ids */
-6, /* (281) cmd ::= ALTER TABLE ftblname MODIFY COLUMN columnlist */
-6, /* (282) cmd ::= ALTER TABLE ftblname ADD TAG columnlist */
-6, /* (283) cmd ::= ALTER TABLE ftblname DROP TAG ids */
-7, /* (284) cmd ::= ALTER TABLE ftblname CHANGE TAG ids ids */
-8, /* (285) cmd ::= ALTER TABLE ftblname SET TAG ids EQ tagitem */
-6, /* (286) cmd ::= ALTER TABLE ftblname MODIFY TAG columnlist */
-6, /* (287) cmd ::= ALTER STABLE ftblname ADD COLUMN columnlist */
-6, /* (288) cmd ::= ALTER STABLE ftblname DROP COLUMN ids */
-6, /* (289) cmd ::= ALTER STABLE ftblname MODIFY COLUMN columnlist */
-6, /* (290) cmd ::= ALTER STABLE ftblname ADD TAG columnlist */
-6, /* (291) cmd ::= ALTER STABLE ftblname DROP TAG ids */
-7, /* (292) cmd ::= ALTER STABLE ftblname CHANGE TAG ids ids */
-8, /* (293) cmd ::= ALTER STABLE ftblname SET TAG ids EQ tagitem */
-6, /* (294) cmd ::= ALTER STABLE ftblname MODIFY TAG columnlist */
-3, /* (295) cmd ::= KILL CONNECTION INTEGER */
-5, /* (296) cmd ::= KILL STREAM INTEGER COLON INTEGER */
-5, /* (297) cmd ::= KILL QUERY INTEGER COLON INTEGER */
-3, /* (238) expr ::= ESCAPE DOT ID */
-3, /* (239) expr ::= ESCAPE DOT STAR */
-1, /* (240) expr ::= INTEGER */
-2, /* (241) expr ::= MINUS INTEGER */
-2, /* (242) expr ::= PLUS INTEGER */
-1, /* (243) expr ::= FLOAT */
-2, /* (244) expr ::= MINUS FLOAT */
-2, /* (245) expr ::= PLUS FLOAT */
-1, /* (246) expr ::= STRING */
-1, /* (247) expr ::= NOW */
-1, /* (248) expr ::= VARIABLE */
-2, /* (249) expr ::= PLUS VARIABLE */
-2, /* (250) expr ::= MINUS VARIABLE */
-1, /* (251) expr ::= BOOL */
-1, /* (252) expr ::= NULL */
-4, /* (253) expr ::= ID LP exprlist RP */
-4, /* (254) expr ::= ID LP STAR RP */
-3, /* (255) expr ::= expr IS NULL */
-4, /* (256) expr ::= expr IS NOT NULL */
-3, /* (257) expr ::= expr LT expr */
-3, /* (258) expr ::= expr GT expr */
-3, /* (259) expr ::= expr LE expr */
-3, /* (260) expr ::= expr GE expr */
-3, /* (261) expr ::= expr NE expr */
-3, /* (262) expr ::= expr EQ expr */
-5, /* (263) expr ::= expr BETWEEN expr AND expr */
-3, /* (264) expr ::= expr AND expr */
-3, /* (265) expr ::= expr OR expr */
-3, /* (266) expr ::= expr PLUS expr */
-3, /* (267) expr ::= expr MINUS expr */
-3, /* (268) expr ::= expr STAR expr */
-3, /* (269) expr ::= expr SLASH expr */
-3, /* (270) expr ::= expr REM expr */
-3, /* (271) expr ::= expr LIKE expr */
-3, /* (272) expr ::= expr MATCH expr */
-3, /* (273) expr ::= expr NMATCH expr */
-5, /* (274) expr ::= expr IN LP exprlist RP */
-3, /* (275) exprlist ::= exprlist COMMA expritem */
-1, /* (276) exprlist ::= expritem */
-1, /* (277) expritem ::= expr */
0, /* (278) expritem ::= */
-3, /* (279) cmd ::= RESET QUERY CACHE */
-3, /* (280) cmd ::= SYNCDB ids REPLICA */
-6, /* (281) cmd ::= ALTER TABLE ftblname ADD COLUMN columnlist */
-6, /* (282) cmd ::= ALTER TABLE ftblname DROP COLUMN ids */
-6, /* (283) cmd ::= ALTER TABLE ftblname MODIFY COLUMN columnlist */
-6, /* (284) cmd ::= ALTER TABLE ftblname ADD TAG columnlist */
-6, /* (285) cmd ::= ALTER TABLE ftblname DROP TAG ids */
-7, /* (286) cmd ::= ALTER TABLE ftblname CHANGE TAG ids ids */
-8, /* (287) cmd ::= ALTER TABLE ftblname SET TAG ids EQ tagitem */
-6, /* (288) cmd ::= ALTER TABLE ftblname MODIFY TAG columnlist */
-6, /* (289) cmd ::= ALTER STABLE ftblname ADD COLUMN columnlist */
-6, /* (290) cmd ::= ALTER STABLE ftblname DROP COLUMN ids */
-6, /* (291) cmd ::= ALTER STABLE ftblname MODIFY COLUMN columnlist */
-6, /* (292) cmd ::= ALTER STABLE ftblname ADD TAG columnlist */
-6, /* (293) cmd ::= ALTER STABLE ftblname DROP TAG ids */
-7, /* (294) cmd ::= ALTER STABLE ftblname CHANGE TAG ids ids */
-8, /* (295) cmd ::= ALTER STABLE ftblname SET TAG ids EQ tagitem */
-6, /* (296) cmd ::= ALTER STABLE ftblname MODIFY TAG columnlist */
-3, /* (297) cmd ::= KILL CONNECTION INTEGER */
-5, /* (298) cmd ::= KILL STREAM INTEGER COLON INTEGER */
-5, /* (299) cmd ::= KILL QUERY INTEGER COLON INTEGER */
};
static void yy_accept(yyParser*); /* Forward Declaration */
......@@ -3291,7 +3297,7 @@ static YYACTIONTYPE yy_reduce(
break;
case 222: /* having_opt ::= */
case 232: /* where_opt ::= */ yytestcase(yyruleno==232);
case 276: /* expritem ::= */ yytestcase(yyruleno==276);
case 278: /* expritem ::= */ yytestcase(yyruleno==278);
{yymsp[1].minor.yy44 = 0;}
break;
case 223: /* having_opt ::= HAVING expr */
......@@ -3327,169 +3333,171 @@ static YYACTIONTYPE yy_reduce(
yymsp[0].minor.yy44 = yylhsminor.yy44;
break;
case 236: /* expr ::= ID DOT ID */
case 238: /* expr ::= ESCAPE DOT ID */ yytestcase(yyruleno==238);
{ yymsp[-2].minor.yy0.n += (1+yymsp[0].minor.yy0.n); yylhsminor.yy44 = tSqlExprCreateIdValue(&yymsp[-2].minor.yy0, TK_ID);}
yymsp[-2].minor.yy44 = yylhsminor.yy44;
break;
case 237: /* expr ::= ID DOT STAR */
case 239: /* expr ::= ESCAPE DOT STAR */ yytestcase(yyruleno==239);
{ yymsp[-2].minor.yy0.n += (1+yymsp[0].minor.yy0.n); yylhsminor.yy44 = tSqlExprCreateIdValue(&yymsp[-2].minor.yy0, TK_ALL);}
yymsp[-2].minor.yy44 = yylhsminor.yy44;
break;
case 238: /* expr ::= INTEGER */
case 240: /* expr ::= INTEGER */
{ yylhsminor.yy44 = tSqlExprCreateIdValue(&yymsp[0].minor.yy0, TK_INTEGER);}
yymsp[0].minor.yy44 = yylhsminor.yy44;
break;
case 239: /* expr ::= MINUS INTEGER */
case 240: /* expr ::= PLUS INTEGER */ yytestcase(yyruleno==240);
case 241: /* expr ::= MINUS INTEGER */
case 242: /* expr ::= PLUS INTEGER */ yytestcase(yyruleno==242);
{ yymsp[-1].minor.yy0.n += yymsp[0].minor.yy0.n; yymsp[-1].minor.yy0.type = TK_INTEGER; yylhsminor.yy44 = tSqlExprCreateIdValue(&yymsp[-1].minor.yy0, TK_INTEGER);}
yymsp[-1].minor.yy44 = yylhsminor.yy44;
break;
case 241: /* expr ::= FLOAT */
case 243: /* expr ::= FLOAT */
{ yylhsminor.yy44 = tSqlExprCreateIdValue(&yymsp[0].minor.yy0, TK_FLOAT);}
yymsp[0].minor.yy44 = yylhsminor.yy44;
break;
case 242: /* expr ::= MINUS FLOAT */
case 243: /* expr ::= PLUS FLOAT */ yytestcase(yyruleno==243);
case 244: /* expr ::= MINUS FLOAT */
case 245: /* expr ::= PLUS FLOAT */ yytestcase(yyruleno==245);
{ yymsp[-1].minor.yy0.n += yymsp[0].minor.yy0.n; yymsp[-1].minor.yy0.type = TK_FLOAT; yylhsminor.yy44 = tSqlExprCreateIdValue(&yymsp[-1].minor.yy0, TK_FLOAT);}
yymsp[-1].minor.yy44 = yylhsminor.yy44;
break;
case 244: /* expr ::= STRING */
case 246: /* expr ::= STRING */
{ yylhsminor.yy44 = tSqlExprCreateIdValue(&yymsp[0].minor.yy0, TK_STRING);}
yymsp[0].minor.yy44 = yylhsminor.yy44;
break;
case 245: /* expr ::= NOW */
case 247: /* expr ::= NOW */
{ yylhsminor.yy44 = tSqlExprCreateIdValue(&yymsp[0].minor.yy0, TK_NOW); }
yymsp[0].minor.yy44 = yylhsminor.yy44;
break;
case 246: /* expr ::= VARIABLE */
case 248: /* expr ::= VARIABLE */
{ yylhsminor.yy44 = tSqlExprCreateIdValue(&yymsp[0].minor.yy0, TK_VARIABLE);}
yymsp[0].minor.yy44 = yylhsminor.yy44;
break;
case 247: /* expr ::= PLUS VARIABLE */
case 248: /* expr ::= MINUS VARIABLE */ yytestcase(yyruleno==248);
case 249: /* expr ::= PLUS VARIABLE */
case 250: /* expr ::= MINUS VARIABLE */ yytestcase(yyruleno==250);
{ yymsp[-1].minor.yy0.n += yymsp[0].minor.yy0.n; yymsp[-1].minor.yy0.type = TK_VARIABLE; yylhsminor.yy44 = tSqlExprCreateIdValue(&yymsp[-1].minor.yy0, TK_VARIABLE);}
yymsp[-1].minor.yy44 = yylhsminor.yy44;
break;
case 249: /* expr ::= BOOL */
case 251: /* expr ::= BOOL */
{ yylhsminor.yy44 = tSqlExprCreateIdValue(&yymsp[0].minor.yy0, TK_BOOL);}
yymsp[0].minor.yy44 = yylhsminor.yy44;
break;
case 250: /* expr ::= NULL */
case 252: /* expr ::= NULL */
{ yylhsminor.yy44 = tSqlExprCreateIdValue(&yymsp[0].minor.yy0, TK_NULL);}
yymsp[0].minor.yy44 = yylhsminor.yy44;
break;
case 251: /* expr ::= ID LP exprlist RP */
case 253: /* expr ::= ID LP exprlist RP */
{ tStrTokenAppend(pInfo->funcs, &yymsp[-3].minor.yy0); yylhsminor.yy44 = tSqlExprCreateFunction(yymsp[-1].minor.yy247, &yymsp[-3].minor.yy0, &yymsp[0].minor.yy0, yymsp[-3].minor.yy0.type); }
yymsp[-3].minor.yy44 = yylhsminor.yy44;
break;
case 252: /* expr ::= ID LP STAR RP */
case 254: /* expr ::= ID LP STAR RP */
{ tStrTokenAppend(pInfo->funcs, &yymsp[-3].minor.yy0); yylhsminor.yy44 = tSqlExprCreateFunction(NULL, &yymsp[-3].minor.yy0, &yymsp[0].minor.yy0, yymsp[-3].minor.yy0.type); }
yymsp[-3].minor.yy44 = yylhsminor.yy44;
break;
case 253: /* expr ::= expr IS NULL */
case 255: /* expr ::= expr IS NULL */
{yylhsminor.yy44 = tSqlExprCreate(yymsp[-2].minor.yy44, NULL, TK_ISNULL);}
yymsp[-2].minor.yy44 = yylhsminor.yy44;
break;
case 254: /* expr ::= expr IS NOT NULL */
case 256: /* expr ::= expr IS NOT NULL */
{yylhsminor.yy44 = tSqlExprCreate(yymsp[-3].minor.yy44, NULL, TK_NOTNULL);}
yymsp[-3].minor.yy44 = yylhsminor.yy44;
break;
case 255: /* expr ::= expr LT expr */
case 257: /* expr ::= expr LT expr */
{yylhsminor.yy44 = tSqlExprCreate(yymsp[-2].minor.yy44, yymsp[0].minor.yy44, TK_LT);}
yymsp[-2].minor.yy44 = yylhsminor.yy44;
break;
case 256: /* expr ::= expr GT expr */
case 258: /* expr ::= expr GT expr */
{yylhsminor.yy44 = tSqlExprCreate(yymsp[-2].minor.yy44, yymsp[0].minor.yy44, TK_GT);}
yymsp[-2].minor.yy44 = yylhsminor.yy44;
break;
case 257: /* expr ::= expr LE expr */
case 259: /* expr ::= expr LE expr */
{yylhsminor.yy44 = tSqlExprCreate(yymsp[-2].minor.yy44, yymsp[0].minor.yy44, TK_LE);}
yymsp[-2].minor.yy44 = yylhsminor.yy44;
break;
case 258: /* expr ::= expr GE expr */
case 260: /* expr ::= expr GE expr */
{yylhsminor.yy44 = tSqlExprCreate(yymsp[-2].minor.yy44, yymsp[0].minor.yy44, TK_GE);}
yymsp[-2].minor.yy44 = yylhsminor.yy44;
break;
case 259: /* expr ::= expr NE expr */
case 261: /* expr ::= expr NE expr */
{yylhsminor.yy44 = tSqlExprCreate(yymsp[-2].minor.yy44, yymsp[0].minor.yy44, TK_NE);}
yymsp[-2].minor.yy44 = yylhsminor.yy44;
break;
case 260: /* expr ::= expr EQ expr */
case 262: /* expr ::= expr EQ expr */
{yylhsminor.yy44 = tSqlExprCreate(yymsp[-2].minor.yy44, yymsp[0].minor.yy44, TK_EQ);}
yymsp[-2].minor.yy44 = yylhsminor.yy44;
break;
case 261: /* expr ::= expr BETWEEN expr AND expr */
case 263: /* expr ::= expr BETWEEN expr AND expr */
{ tSqlExpr* X2 = tSqlExprClone(yymsp[-4].minor.yy44); yylhsminor.yy44 = tSqlExprCreate(tSqlExprCreate(yymsp[-4].minor.yy44, yymsp[-2].minor.yy44, TK_GE), tSqlExprCreate(X2, yymsp[0].minor.yy44, TK_LE), TK_AND);}
yymsp[-4].minor.yy44 = yylhsminor.yy44;
break;
case 262: /* expr ::= expr AND expr */
case 264: /* expr ::= expr AND expr */
{yylhsminor.yy44 = tSqlExprCreate(yymsp[-2].minor.yy44, yymsp[0].minor.yy44, TK_AND);}
yymsp[-2].minor.yy44 = yylhsminor.yy44;
break;
case 263: /* expr ::= expr OR expr */
case 265: /* expr ::= expr OR expr */
{yylhsminor.yy44 = tSqlExprCreate(yymsp[-2].minor.yy44, yymsp[0].minor.yy44, TK_OR); }
yymsp[-2].minor.yy44 = yylhsminor.yy44;
break;
case 264: /* expr ::= expr PLUS expr */
case 266: /* expr ::= expr PLUS expr */
{yylhsminor.yy44 = tSqlExprCreate(yymsp[-2].minor.yy44, yymsp[0].minor.yy44, TK_PLUS); }
yymsp[-2].minor.yy44 = yylhsminor.yy44;
break;
case 265: /* expr ::= expr MINUS expr */
case 267: /* expr ::= expr MINUS expr */
{yylhsminor.yy44 = tSqlExprCreate(yymsp[-2].minor.yy44, yymsp[0].minor.yy44, TK_MINUS); }
yymsp[-2].minor.yy44 = yylhsminor.yy44;
break;
case 266: /* expr ::= expr STAR expr */
case 268: /* expr ::= expr STAR expr */
{yylhsminor.yy44 = tSqlExprCreate(yymsp[-2].minor.yy44, yymsp[0].minor.yy44, TK_STAR); }
yymsp[-2].minor.yy44 = yylhsminor.yy44;
break;
case 267: /* expr ::= expr SLASH expr */
case 269: /* expr ::= expr SLASH expr */
{yylhsminor.yy44 = tSqlExprCreate(yymsp[-2].minor.yy44, yymsp[0].minor.yy44, TK_DIVIDE);}
yymsp[-2].minor.yy44 = yylhsminor.yy44;
break;
case 268: /* expr ::= expr REM expr */
case 270: /* expr ::= expr REM expr */
{yylhsminor.yy44 = tSqlExprCreate(yymsp[-2].minor.yy44, yymsp[0].minor.yy44, TK_REM); }
yymsp[-2].minor.yy44 = yylhsminor.yy44;
break;
case 269: /* expr ::= expr LIKE expr */
case 271: /* expr ::= expr LIKE expr */
{yylhsminor.yy44 = tSqlExprCreate(yymsp[-2].minor.yy44, yymsp[0].minor.yy44, TK_LIKE); }
yymsp[-2].minor.yy44 = yylhsminor.yy44;
break;
case 270: /* expr ::= expr MATCH expr */
case 272: /* expr ::= expr MATCH expr */
{yylhsminor.yy44 = tSqlExprCreate(yymsp[-2].minor.yy44, yymsp[0].minor.yy44, TK_MATCH); }
yymsp[-2].minor.yy44 = yylhsminor.yy44;
break;
case 271: /* expr ::= expr NMATCH expr */
case 273: /* expr ::= expr NMATCH expr */
{yylhsminor.yy44 = tSqlExprCreate(yymsp[-2].minor.yy44, yymsp[0].minor.yy44, TK_NMATCH); }
yymsp[-2].minor.yy44 = yylhsminor.yy44;
break;
case 272: /* expr ::= expr IN LP exprlist RP */
case 274: /* expr ::= expr IN LP exprlist RP */
{yylhsminor.yy44 = tSqlExprCreate(yymsp[-4].minor.yy44, (tSqlExpr*)yymsp[-1].minor.yy247, TK_IN); }
yymsp[-4].minor.yy44 = yylhsminor.yy44;
break;
case 273: /* exprlist ::= exprlist COMMA expritem */
case 275: /* exprlist ::= exprlist COMMA expritem */
{yylhsminor.yy247 = tSqlExprListAppend(yymsp[-2].minor.yy247,yymsp[0].minor.yy44,0, 0);}
yymsp[-2].minor.yy247 = yylhsminor.yy247;
break;
case 274: /* exprlist ::= expritem */
case 276: /* exprlist ::= expritem */
{yylhsminor.yy247 = tSqlExprListAppend(0,yymsp[0].minor.yy44,0, 0);}
yymsp[0].minor.yy247 = yylhsminor.yy247;
break;
case 275: /* expritem ::= expr */
case 277: /* expritem ::= expr */
{yylhsminor.yy44 = yymsp[0].minor.yy44;}
yymsp[0].minor.yy44 = yylhsminor.yy44;
break;
case 277: /* cmd ::= RESET QUERY CACHE */
case 279: /* cmd ::= RESET QUERY CACHE */
{ setDCLSqlElems(pInfo, TSDB_SQL_RESET_CACHE, 0);}
break;
case 278: /* cmd ::= SYNCDB ids REPLICA */
case 280: /* cmd ::= SYNCDB ids REPLICA */
{ setDCLSqlElems(pInfo, TSDB_SQL_SYNC_DB_REPLICA, 1, &yymsp[-1].minor.yy0);}
break;
case 279: /* cmd ::= ALTER TABLE ftblname ADD COLUMN columnlist */
case 281: /* cmd ::= ALTER TABLE ftblname ADD COLUMN columnlist */
{
SAlterTableInfo* pAlterTable = tSetAlterTableInfo(&yymsp[-3].minor.yy0, yymsp[0].minor.yy247, NULL, TSDB_ALTER_TABLE_ADD_COLUMN, -1);
setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE);
}
break;
case 280: /* cmd ::= ALTER TABLE ftblname DROP COLUMN ids */
case 282: /* cmd ::= ALTER TABLE ftblname DROP COLUMN ids */
{
toTSDBType(yymsp[0].minor.yy0.type);
SArray* K = tVariantListAppendToken(NULL, &yymsp[0].minor.yy0, -1);
......@@ -3498,19 +3506,19 @@ static YYACTIONTYPE yy_reduce(
setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE);
}
break;
case 281: /* cmd ::= ALTER TABLE ftblname MODIFY COLUMN columnlist */
case 283: /* cmd ::= ALTER TABLE ftblname MODIFY COLUMN columnlist */
{
SAlterTableInfo* pAlterTable = tSetAlterTableInfo(&yymsp[-3].minor.yy0, yymsp[0].minor.yy247, NULL, TSDB_ALTER_TABLE_CHANGE_COLUMN, -1);
setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE);
}
break;
case 282: /* cmd ::= ALTER TABLE ftblname ADD TAG columnlist */
case 284: /* cmd ::= ALTER TABLE ftblname ADD TAG columnlist */
{
SAlterTableInfo* pAlterTable = tSetAlterTableInfo(&yymsp[-3].minor.yy0, yymsp[0].minor.yy247, NULL, TSDB_ALTER_TABLE_ADD_TAG_COLUMN, -1);
setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE);
}
break;
case 283: /* cmd ::= ALTER TABLE ftblname DROP TAG ids */
case 285: /* cmd ::= ALTER TABLE ftblname DROP TAG ids */
{
toTSDBType(yymsp[0].minor.yy0.type);
SArray* A = tVariantListAppendToken(NULL, &yymsp[0].minor.yy0, -1);
......@@ -3519,7 +3527,7 @@ static YYACTIONTYPE yy_reduce(
setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE);
}
break;
case 284: /* cmd ::= ALTER TABLE ftblname CHANGE TAG ids ids */
case 286: /* cmd ::= ALTER TABLE ftblname CHANGE TAG ids ids */
{
toTSDBType(yymsp[-1].minor.yy0.type);
......@@ -3532,7 +3540,7 @@ static YYACTIONTYPE yy_reduce(
setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE);
}
break;
case 285: /* cmd ::= ALTER TABLE ftblname SET TAG ids EQ tagitem */
case 287: /* cmd ::= ALTER TABLE ftblname SET TAG ids EQ tagitem */
{
toTSDBType(yymsp[-2].minor.yy0.type);
......@@ -3543,19 +3551,19 @@ static YYACTIONTYPE yy_reduce(
setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE);
}
break;
case 286: /* cmd ::= ALTER TABLE ftblname MODIFY TAG columnlist */
case 288: /* cmd ::= ALTER TABLE ftblname MODIFY TAG columnlist */
{
SAlterTableInfo* pAlterTable = tSetAlterTableInfo(&yymsp[-3].minor.yy0, yymsp[0].minor.yy247, NULL, TSDB_ALTER_TABLE_MODIFY_TAG_COLUMN, -1);
setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE);
}
break;
case 287: /* cmd ::= ALTER STABLE ftblname ADD COLUMN columnlist */
case 289: /* cmd ::= ALTER STABLE ftblname ADD COLUMN columnlist */
{
SAlterTableInfo* pAlterTable = tSetAlterTableInfo(&yymsp[-3].minor.yy0, yymsp[0].minor.yy247, NULL, TSDB_ALTER_TABLE_ADD_COLUMN, TSDB_SUPER_TABLE);
setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE);
}
break;
case 288: /* cmd ::= ALTER STABLE ftblname DROP COLUMN ids */
case 290: /* cmd ::= ALTER STABLE ftblname DROP COLUMN ids */
{
toTSDBType(yymsp[0].minor.yy0.type);
......@@ -3565,19 +3573,19 @@ static YYACTIONTYPE yy_reduce(
setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE);
}
break;
case 289: /* cmd ::= ALTER STABLE ftblname MODIFY COLUMN columnlist */
case 291: /* cmd ::= ALTER STABLE ftblname MODIFY COLUMN columnlist */
{
SAlterTableInfo* pAlterTable = tSetAlterTableInfo(&yymsp[-3].minor.yy0, yymsp[0].minor.yy247, NULL, TSDB_ALTER_TABLE_CHANGE_COLUMN, TSDB_SUPER_TABLE);
setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE);
}
break;
case 290: /* cmd ::= ALTER STABLE ftblname ADD TAG columnlist */
case 292: /* cmd ::= ALTER STABLE ftblname ADD TAG columnlist */
{
SAlterTableInfo* pAlterTable = tSetAlterTableInfo(&yymsp[-3].minor.yy0, yymsp[0].minor.yy247, NULL, TSDB_ALTER_TABLE_ADD_TAG_COLUMN, TSDB_SUPER_TABLE);
setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE);
}
break;
case 291: /* cmd ::= ALTER STABLE ftblname DROP TAG ids */
case 293: /* cmd ::= ALTER STABLE ftblname DROP TAG ids */
{
toTSDBType(yymsp[0].minor.yy0.type);
......@@ -3587,7 +3595,7 @@ static YYACTIONTYPE yy_reduce(
setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE);
}
break;
case 292: /* cmd ::= ALTER STABLE ftblname CHANGE TAG ids ids */
case 294: /* cmd ::= ALTER STABLE ftblname CHANGE TAG ids ids */
{
toTSDBType(yymsp[-1].minor.yy0.type);
......@@ -3600,7 +3608,7 @@ static YYACTIONTYPE yy_reduce(
setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE);
}
break;
case 293: /* cmd ::= ALTER STABLE ftblname SET TAG ids EQ tagitem */
case 295: /* cmd ::= ALTER STABLE ftblname SET TAG ids EQ tagitem */
{
toTSDBType(yymsp[-2].minor.yy0.type);
......@@ -3611,19 +3619,19 @@ static YYACTIONTYPE yy_reduce(
setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE);
}
break;
case 294: /* cmd ::= ALTER STABLE ftblname MODIFY TAG columnlist */
case 296: /* cmd ::= ALTER STABLE ftblname MODIFY TAG columnlist */
{
SAlterTableInfo* pAlterTable = tSetAlterTableInfo(&yymsp[-3].minor.yy0, yymsp[0].minor.yy247, NULL, TSDB_ALTER_TABLE_MODIFY_TAG_COLUMN, TSDB_SUPER_TABLE);
setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE);
}
break;
case 295: /* cmd ::= KILL CONNECTION INTEGER */
case 297: /* cmd ::= KILL CONNECTION INTEGER */
{setKillSql(pInfo, TSDB_SQL_KILL_CONNECTION, &yymsp[0].minor.yy0);}
break;
case 296: /* cmd ::= KILL STREAM INTEGER COLON INTEGER */
case 298: /* cmd ::= KILL STREAM INTEGER COLON INTEGER */
{yymsp[-2].minor.yy0.n += (yymsp[-1].minor.yy0.n + yymsp[0].minor.yy0.n); setKillSql(pInfo, TSDB_SQL_KILL_STREAM, &yymsp[-2].minor.yy0);}
break;
case 297: /* cmd ::= KILL QUERY INTEGER COLON INTEGER */
case 299: /* cmd ::= KILL QUERY INTEGER COLON INTEGER */
{yymsp[-2].minor.yy0.n += (yymsp[-1].minor.yy0.n + yymsp[0].minor.yy0.n); setKillSql(pInfo, TSDB_SQL_KILL_QUERY, &yymsp[-2].minor.yy0);}
break;
default:
......
......@@ -23,7 +23,7 @@ int32_t testValidateName(char* name) {
token.type = 0;
tGetToken(name, &token.type);
return tscValidateName(&token, false);
return tscValidateName(&token, false, NULL);
}
}
......
......@@ -223,3 +223,4 @@ run general/db/show_create_db.sim
run general/db/show_create_table.sim
run general/parser/like.sim
run general/parser/regex.sim
run general/parser/tbname_escape.sim
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册