提交 eeba8d02 编写于 作者: A Alex Duan

[TS-238]<feature>(tsdb): init delete function

上级 b8ae42ff
......@@ -1153,7 +1153,7 @@ static int32_t tscCheckIfCreateTable(char **sqlstr, SSqlObj *pSql, char** boundC
code = validateTableName(tableToken.z, tableToken.n, &sTblToken, &dbIncluded2);
if (code != TSDB_CODE_SUCCESS) {
return tscInvalidOperationMsg(pInsertParam->msg, "invalid table name", *sqlstr);
return tscInvalidOperationMsg(pInsertParam->msg, STR_INVALID_TABLE_NAME, *sqlstr);
}
int32_t ret = tscSetTableFullName(&pTableMetaInfo->name, &sTblToken, pSql, dbIncluded2);
......@@ -1441,7 +1441,7 @@ int tsParseInsertSql(SSqlObj *pSql) {
bool dbIncluded = false;
// Check if the table name available or not
if (validateTableName(sToken.z, sToken.n, &sTblToken, &dbIncluded) != TSDB_CODE_SUCCESS) {
code = tscInvalidOperationMsg(pInsertParam->msg, "table name invalid", sToken.z);
code = tscInvalidOperationMsg(pInsertParam->msg, STR_INVALID_TABLE_NAME, sToken.z);
goto _clean;
}
......
......@@ -100,7 +100,7 @@ static int32_t validateStateWindowNode(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, SS
static int32_t addProjectionExprAndResultField(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, tSqlExprItem* pItem, bool outerQuery, bool timeWindowQuery);
static int32_t validateWhereNode(SQueryInfo* pQueryInfo, tSqlExpr** pExpr, SSqlObj* pSql, bool joinQuery);
static int32_t validateWhereNode(SQueryInfo* pQueryInfo, tSqlExpr** pExpr, SSqlObj* pSql, bool joinQuery, bool delData);
static int32_t validateFillNode(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, SSqlNode* pSqlNode);
static int32_t validateRangeNode(SSqlObj* pSql, SQueryInfo* pQueryInfo, SSqlNode* pSqlNode);
static int32_t validateOrderbyNode(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, SSqlNode* pSqlNode, SSchema* pSchema);
......@@ -759,8 +759,6 @@ int32_t tscValidateSqlInfo(SSqlObj* pSql, struct SSqlInfo* pInfo) {
}
case TSDB_SQL_DESCRIBE_TABLE: {
const char* msg1 = "invalid table name";
SStrToken* pToken = taosArrayGet(pInfo->pMiscInfo->a, 0);
bool dbIncluded = false;
char buf[TSDB_TABLE_FNAME_LEN];
......@@ -768,7 +766,7 @@ int32_t tscValidateSqlInfo(SSqlObj* pSql, struct SSqlInfo* pInfo) {
sTblToken.z = buf;
if (validateTableName(pToken->z, pToken->n, &sTblToken, &dbIncluded) != TSDB_CODE_SUCCESS) {
return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg1);
return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), STR_INVALID_TABLE_NAME);
}
// additional msg has been attached already
......@@ -781,8 +779,6 @@ int32_t tscValidateSqlInfo(SSqlObj* pSql, struct SSqlInfo* pInfo) {
}
case TSDB_SQL_SHOW_CREATE_STABLE:
case TSDB_SQL_SHOW_CREATE_TABLE: {
const char* msg1 = "invalid table name";
SStrToken* pToken = taosArrayGet(pInfo->pMiscInfo->a, 0);
bool dbIncluded = false;
......@@ -791,7 +787,7 @@ int32_t tscValidateSqlInfo(SSqlObj* pSql, struct SSqlInfo* pInfo) {
sTblToken.z = buf;
if (validateTableName(pToken->z, pToken->n, &sTblToken, &dbIncluded) != TSDB_CODE_SUCCESS) {
return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg1);
return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), STR_INVALID_TABLE_NAME);
}
code = tscSetTableFullName(&pTableMetaInfo->name, &sTblToken, pSql, dbIncluded);
......@@ -1050,6 +1046,39 @@ int32_t tscValidateSqlInfo(SSqlObj* pSql, struct SSqlInfo* pInfo) {
}
break;
}
case TSDB_SQL_DELETE_DATA: {
// CHECK AND SET TABLE NAME
SStrToken* tbName = &pInfo->pDelData->tableName;
bool dbIncluded = false;
char buf[TSDB_TABLE_FNAME_LEN];
SStrToken sTblToken;
sTblToken.z = buf;
// check
if (validateTableName(tbName->z, tbName->n, &sTblToken, &dbIncluded) != TSDB_CODE_SUCCESS) {
return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), STR_INVALID_TABLE_NAME);
}
// set
code = tscSetTableFullName(&pTableMetaInfo->name, &sTblToken, pSql, dbIncluded);
if (code != TSDB_CODE_SUCCESS) {
return code;
}
// get table meta
code = tscGetTableMeta(pSql, pTableMetaInfo);
if (code != TSDB_CODE_SUCCESS) {
return code ; // async load table meta
}
// CHECK AND SET WHERE
if (pInfo->pDelData->pWhere) {
// origin check
pQueryInfo = tscGetQueryInfo(pCmd);
if (validateWhereNode(pQueryInfo, &pInfo->pDelData->pWhere, pSql, false, true) != TSDB_CODE_SUCCESS) {
return TSDB_CODE_TSC_INVALID_OPERATION;
}
}
break;
}
default:
return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), "not support sql expression");
}
......@@ -4801,7 +4830,7 @@ static int32_t getColQueryCondExpr(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, tSqlEx
};
if (pQueryInfo->colCond == NULL) {
pQueryInfo->colCond = taosArrayInit(2, sizeof(SCond));
pQueryInfo->colCond = taosArrayInit(2, sizeof(STblCond));
}
taosArrayPush(pQueryInfo->colCond, &cond);
......@@ -5577,12 +5606,13 @@ void convertWhereStringCharset(tSqlExpr* pRight){
static int32_t handleExprInQueryCond(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, tSqlExpr** pExpr, SCondExpr* pCondExpr,
int32_t* type, int32_t* tbIdx, int32_t parentOptr, tSqlExpr** columnExpr,
tSqlExpr** tsExpr, bool joinQuery) {
tSqlExpr** tsExpr, bool joinQuery, bool delData) {
const char* msg1 = "table query cannot use tags filter";
const char* msg2 = "illegal column name";
const char* msg4 = "too many join tables";
const char* msg5 = "not support ordinary column join";
const char* msg6 = "illegal condition expression";
const char* msg7 = "only allow first timestamp column and tag column";
tSqlExpr* pLeft = (*pExpr)->pLeft;
tSqlExpr* pRight = (*pExpr)->pRight;
......@@ -5607,6 +5637,16 @@ static int32_t handleExprInQueryCond(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, tSql
STableMetaInfo* pTableMetaInfo = tscGetMetaInfo(pQueryInfo, index.tableIndex);
STableMeta* pTableMeta = pTableMetaInfo->pTableMeta;
SSchema* pSchema = tscGetTableColumnSchema(pTableMeta, index.columnIndex);
// delete where condition check , column must ts or tag
if (delData) {
if (!((pSchema->colId == PRIMARYKEY_TIMESTAMP_COL_INDEX && pSchema->type == TSDB_DATA_TYPE_TIMESTAMP) ||
index.columnIndex >= tscGetNumOfColumns(pTableMeta) ||
index.columnIndex == TSDB_TBNAME_COLUMN_INDEX)) {
return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg7);
}
}
// validate the null expression
int32_t code = validateNullExpr(*pExpr, pTableMeta, index.columnIndex, tscGetErrorMsgPayload(pCmd));
......@@ -5626,8 +5666,6 @@ static int32_t handleExprInQueryCond(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, tSql
return code;
}
SSchema* pSchema = tscGetTableColumnSchema(pTableMeta, index.columnIndex);
if (pSchema->type == TSDB_DATA_TYPE_NCHAR){
convertWhereStringCharset(pRight);
}
......@@ -5776,7 +5814,7 @@ static int32_t handleExprInQueryCond(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, tSql
int32_t getQueryCondExpr(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, tSqlExpr** pExpr, SCondExpr* pCondExpr,
int32_t* type, int32_t* tbIdx, int32_t parentOptr, tSqlExpr** columnExpr,
tSqlExpr** tsExpr, bool joinQuery) {
tSqlExpr** tsExpr, bool joinQuery, bool delData) {
if (pExpr == NULL) {
return TSDB_CODE_SUCCESS;
}
......@@ -5808,12 +5846,12 @@ int32_t getQueryCondExpr(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, tSqlExpr** pExpr
int32_t rightTbIdx = 0;
if (!tSqlExprIsParentOfLeaf(*pExpr)) {
ret = getQueryCondExpr(pCmd, pQueryInfo, &(*pExpr)->pLeft, pCondExpr, type ? &leftType : NULL, &leftTbIdx, (*pExpr)->tokenId, &columnLeft, &tsLeft, joinQuery);
ret = getQueryCondExpr(pCmd, pQueryInfo, &(*pExpr)->pLeft, pCondExpr, type ? &leftType : NULL, &leftTbIdx, (*pExpr)->tokenId, &columnLeft, &tsLeft, joinQuery, delData);
if (ret != TSDB_CODE_SUCCESS) {
goto err_ret;
}
ret = getQueryCondExpr(pCmd, pQueryInfo, &(*pExpr)->pRight, pCondExpr, type ? &rightType : NULL, &rightTbIdx, (*pExpr)->tokenId, &columnRight, &tsRight, joinQuery);
ret = getQueryCondExpr(pCmd, pQueryInfo, &(*pExpr)->pRight, pCondExpr, type ? &rightType : NULL, &rightTbIdx, (*pExpr)->tokenId, &columnRight, &tsRight, joinQuery, delData);
if (ret != TSDB_CODE_SUCCESS) {
goto err_ret;
}
......@@ -5868,7 +5906,7 @@ int32_t getQueryCondExpr(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, tSqlExpr** pExpr
goto err_ret;
}
ret = handleExprInQueryCond(pCmd, pQueryInfo, pExpr, pCondExpr, type, tbIdx, parentOptr, columnExpr, tsExpr, joinQuery);
ret = handleExprInQueryCond(pCmd, pQueryInfo, pExpr, pCondExpr, type, tbIdx, parentOptr, columnExpr, tsExpr, joinQuery, delData);
if (ret) {
goto err_ret;
}
......@@ -6415,7 +6453,7 @@ _ret:
int32_t validateWhereNode(SQueryInfo* pQueryInfo, tSqlExpr** pExpr, SSqlObj* pSql, bool joinQuery) {
int32_t validateWhereNode(SQueryInfo* pQueryInfo, tSqlExpr** pExpr, SSqlObj* pSql, bool joinQuery, bool delData) {
if (pExpr == NULL) {
return TSDB_CODE_SUCCESS;
}
......@@ -6443,7 +6481,7 @@ int32_t validateWhereNode(SQueryInfo* pQueryInfo, tSqlExpr** pExpr, SSqlObj* pSq
}
#endif
if ((ret = getQueryCondExpr(&pSql->cmd, pQueryInfo, pExpr, &condExpr, etype, &tbIdx, (*pExpr)->tokenId, &condExpr.pColumnCond, &condExpr.pTimewindow, joinQuery)) != TSDB_CODE_SUCCESS) {
if ((ret = getQueryCondExpr(&pSql->cmd, pQueryInfo, pExpr, &condExpr, etype, &tbIdx, (*pExpr)->tokenId, &condExpr.pColumnCond, &condExpr.pTimewindow, joinQuery, delData)) != TSDB_CODE_SUCCESS) {
goto PARSE_WHERE_EXIT;
}
......@@ -8928,7 +8966,6 @@ int32_t doCheckForCreateTable(SSqlObj* pSql, int32_t subClauseIndex, SSqlInfo* p
}
int32_t doCheckForCreateFromStable(SSqlObj* pSql, SSqlInfo* pInfo) {
const char* msg1 = "invalid table name";
const char* msg3 = "tag value too long";
const char* msg4 = "illegal value or data overflow";
const char* msg5 = "tags number not matched";
......@@ -8964,7 +9001,7 @@ int32_t doCheckForCreateFromStable(SSqlObj* pSql, SSqlInfo* pInfo) {
int32_t code = validateTableName(pToken->z, pToken->n, &sTblToken, &dbIncluded);
if (code != TSDB_CODE_SUCCESS) {
return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg1);
return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), STR_INVALID_TABLE_NAME);
}
code = tscSetTableFullName(&pStableMetaInfo->name, &sTblToken, pSql, dbIncluded);
......@@ -9171,7 +9208,7 @@ int32_t doCheckForCreateFromStable(SSqlObj* pSql, SSqlInfo* pInfo) {
bool dbIncluded2 = false;
// table name
if (tscValidateName(&(pCreateTableInfo->name), true, &dbIncluded2) != TSDB_CODE_SUCCESS) {
return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg1);
return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), STR_INVALID_TABLE_NAME);
}
STableMetaInfo* pTableMetaInfo = tscGetMetaInfo(pQueryInfo, TABLE_INDEX);
......@@ -9183,7 +9220,7 @@ int32_t doCheckForCreateFromStable(SSqlObj* pSql, SSqlInfo* pInfo) {
pCreateTableInfo->fullname = calloc(1, tNameLen(&pTableMetaInfo->name) + 1);
ret = tNameExtractFullName(&pTableMetaInfo->name, pCreateTableInfo->fullname);
if (ret != TSDB_CODE_SUCCESS) {
return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg1);
return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), STR_INVALID_TABLE_NAME);
}
}
......@@ -9191,7 +9228,6 @@ int32_t doCheckForCreateFromStable(SSqlObj* pSql, SSqlInfo* pInfo) {
}
int32_t doCheckForStream(SSqlObj* pSql, SSqlInfo* pInfo) {
const char* msg1 = "invalid table name";
const char* msg2 = "functions not allowed in CQ";
const char* msg3 = "fill only available for interval query";
const char* msg4 = "fill option not supported in stream computing";
......@@ -9215,14 +9251,14 @@ int32_t doCheckForStream(SSqlObj* pSql, SSqlInfo* pInfo) {
bool dbIncluded1 = false;
if (tscValidateName(pName, true, &dbIncluded1) != TSDB_CODE_SUCCESS) {
return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg1);
return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), STR_INVALID_TABLE_NAME);
}
// check to valid and create to name
if(pInfo->pCreateTableInfo->to.n > 0) {
bool dbInclude = false;
if (tscValidateName(&pInfo->pCreateTableInfo->to, false, &dbInclude) != TSDB_CODE_SUCCESS) {
return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg1);
return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), STR_INVALID_TABLE_NAME);
}
int32_t code = tscSetTableFullName(&pInfo->pCreateTableInfo->toSName, &pInfo->pCreateTableInfo->to, pSql, dbInclude);
if(code != TSDB_CODE_SUCCESS) {
......@@ -9249,7 +9285,7 @@ int32_t doCheckForStream(SSqlObj* pSql, SSqlInfo* pInfo) {
int32_t code = validateTableName(srcToken.z, srcToken.n, &sTblToken, &dbIncluded2);
if (code != TSDB_CODE_SUCCESS) {
return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg1);
return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), STR_INVALID_TABLE_NAME);
}
code = tscSetTableFullName(&pTableMetaInfo->name, &sTblToken, pSql, dbIncluded2);
......@@ -9269,7 +9305,7 @@ int32_t doCheckForStream(SSqlObj* pSql, SSqlInfo* pInfo) {
int32_t joinQuery = (pSqlNode->from != NULL && taosArrayGetSize(pSqlNode->from->list) > 1);
if (pSqlNode->pWhere != NULL) { // query condition in stream computing
if (validateWhereNode(pQueryInfo, &pSqlNode->pWhere, pSql, joinQuery) != TSDB_CODE_SUCCESS) {
if (validateWhereNode(pQueryInfo, &pSqlNode->pWhere, pSql, joinQuery, false) != TSDB_CODE_SUCCESS) {
return TSDB_CODE_TSC_INVALID_OPERATION;
}
}
......@@ -9681,7 +9717,6 @@ int32_t validateHavingClause(SQueryInfo* pQueryInfo, tSqlExpr* pExpr, SSqlCmd* p
}
static int32_t getTableNameFromSqlNode(SSqlNode* pSqlNode, SArray* tableNameList, char* msgBuf, SSqlObj* pSql) {
const char* msg1 = "invalid table name";
int32_t numOfTables = (int32_t) taosArrayGetSize(pSqlNode->from->list);
assert(pSqlNode->from->type == SQL_NODE_FROM_TABLELIST);
......@@ -9691,7 +9726,7 @@ static int32_t getTableNameFromSqlNode(SSqlNode* pSqlNode, SArray* tableNameList
SStrToken* t = &item->tableName;
if (t->type == TK_INTEGER || t->type == TK_FLOAT) {
return invalidOperationMsg(msgBuf, msg1);
return invalidOperationMsg(msgBuf, STR_INVALID_TABLE_NAME);
}
bool dbIncluded = false;
......@@ -9700,7 +9735,7 @@ static int32_t getTableNameFromSqlNode(SSqlNode* pSqlNode, SArray* tableNameList
sTblToken.z = buf;
if (validateTableName(t->z, t->n, &sTblToken, &dbIncluded) != TSDB_CODE_SUCCESS) {
return invalidOperationMsg(msgBuf, msg1);
return invalidOperationMsg(msgBuf, STR_INVALID_TABLE_NAME);
}
SName name = {0};
......@@ -9959,7 +9994,6 @@ _end:
}
static int32_t doLoadAllTableMeta(SSqlObj* pSql, SQueryInfo* pQueryInfo, SSqlNode* pSqlNode, int32_t numOfTables) {
const char* msg1 = "invalid table name";
const char* msg2 = "invalid table alias name";
const char* msg3 = "alias name too long";
const char* msg4 = "self join not allowed";
......@@ -9980,7 +10014,7 @@ static int32_t doLoadAllTableMeta(SSqlObj* pSql, SQueryInfo* pQueryInfo, SSqlNod
SStrToken *oriName = &item->tableName;
if (oriName->type == TK_INTEGER || oriName->type == TK_FLOAT) {
return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg1);
return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), STR_INVALID_TABLE_NAME);
}
bool dbIncluded = false;
......@@ -9989,7 +10023,7 @@ static int32_t doLoadAllTableMeta(SSqlObj* pSql, SQueryInfo* pQueryInfo, SSqlNod
sTblToken.z = buf;
if (validateTableName(oriName->z, oriName->n, &sTblToken, &dbIncluded) != TSDB_CODE_SUCCESS) {
return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg1);
return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), STR_INVALID_TABLE_NAME);
}
STableMetaInfo* pTableMetaInfo = tscGetMetaInfo(pQueryInfo, i);
......@@ -10258,7 +10292,7 @@ int32_t validateSqlNode(SSqlObj* pSql, SSqlNode* pSqlNode, SQueryInfo* pQueryInf
// validate the query filter condition info
if (pSqlNode->pWhere != NULL) {
if (validateWhereNode(pQueryInfo, &pSqlNode->pWhere, pSql, joinQuery) != TSDB_CODE_SUCCESS) {
if (validateWhereNode(pQueryInfo, &pSqlNode->pWhere, pSql, joinQuery, false) != TSDB_CODE_SUCCESS) {
return TSDB_CODE_TSC_INVALID_OPERATION;
}
} else {
......@@ -10363,7 +10397,7 @@ int32_t validateSqlNode(SSqlObj* pSql, SSqlNode* pSqlNode, SQueryInfo* pQueryInf
pQueryInfo->onlyHasTagCond = true;
// set where info
if (pSqlNode->pWhere != NULL) {
if (validateWhereNode(pQueryInfo, &pSqlNode->pWhere, pSql, joinQuery) != TSDB_CODE_SUCCESS) {
if (validateWhereNode(pQueryInfo, &pSqlNode->pWhere, pSql, joinQuery, false) != TSDB_CODE_SUCCESS) {
return TSDB_CODE_TSC_INVALID_OPERATION;
}
......
......@@ -3313,6 +3313,77 @@ int tscGetSTableVgroupInfo(SSqlObj *pSql, SQueryInfo* pQueryInfo) {
return code;
}
// Super Table
int buildSTableDelDataMsg(SSqlObj *pSql, SSqlCmd* pCmd, SQueryInfo* pQueryInfo, STableMetaInfo* pTableMetaInfo, SSqlInfo *pInfo) {
return 0;
}
// Normal Child Table
int buildTableDelDataMsg(SSqlObj* pSql, SSqlCmd* pCmd, SQueryInfo* pQueryInfo, STableMetaInfo* pTableMetaInfo, SSqlInfo *pInfo) {
STableMeta* pTableMeta = pTableMetaInfo->pTableMeta;
// pSql->cmd.payloadLen is set during copying data into payload
pCmd->msgType = TSDB_MSG_TYPE_SUBMIT;
SNewVgroupInfo vgroupInfo = {0};
taosHashGetClone(UTIL_GET_VGROUPMAP(pSql), &pTableMeta->vgId, sizeof(pTableMeta->vgId), NULL, &vgroupInfo);
tscDumpEpSetFromVgroupInfo(&pSql->epSet, &vgroupInfo);
tscDebug("0x%"PRIx64" table deldata submit msg built, numberOfEP:%d", pSql->self, pSql->epSet.numOfEps);
// set payload
size_t payloadLen = sizeof(SMsgDesc) + sizeof(SSubmitMsg) + sizeof(SSubmitBlk) + sizeof(SControlData);
int32_t ret = tscAllocPayload(pCmd, payloadLen);
if (ret != TSDB_CODE_SUCCESS) {
return ret;
}
pCmd->payloadLen = payloadLen;
char* p = pCmd->payload;
SMsgDesc* pMsgDesc = (SMsgDesc* )p;
p += sizeof(SMsgDesc);
SSubmitMsg* pSubmitMsg = (SSubmitMsg* )p;
p += sizeof(SSubmitMsg);
SSubmitBlk* pSubmitBlk = (SSubmitBlk*)p;
p += sizeof(SSubmitBlk);
SControlData* pControlData = (SControlData* )p;
// SMsgDesc
pMsgDesc->numOfVnodes = htonl(1);
// SSubmitMsg
int32_t size = pCmd->payloadLen - sizeof(SMsgDesc);
pSubmitMsg->header.vgId = htonl(pTableMeta->vgId);
pSubmitMsg->header.contLen = htonl(size);
pSubmitMsg->length = pSubmitMsg->header.contLen;
pSubmitMsg->numOfBlocks = htonl(1);
// SSubmitBlk
pSubmitBlk->flag = FLAG_BLK_CONTROL; // this is control block
pSubmitBlk->tid = htonl(pTableMeta->id.tid);
pSubmitBlk->uid = htobe64(pTableMeta->id.uid);
pSubmitBlk->numOfRows = htons(1);
pSubmitBlk->schemaLen = 0; // only server return TSDB_CODE_TDB_TABLE_RECONFIGURE need schema attached
pSubmitBlk->sversion = htonl(pTableMeta->sversion);
pSubmitBlk->dataLen = htonl(sizeof(SControlData));
// SControlData
pControlData->command = htonl(CMD_DELETE_DATA);
pControlData->win.skey = htobe64(pQueryInfo->window.skey);
pControlData->win.ekey = htobe64(pQueryInfo->window.ekey);
return TSDB_CODE_SUCCESS;
}
int tscBuildDelDataMsg(SSqlObj *pSql, SSqlInfo *pInfo) {
SSqlCmd *pCmd = &pSql->cmd;
SQueryInfo *pQueryInfo = tscGetQueryInfo(pCmd);
STableMetaInfo *pTableMetaInfo = tscGetMetaInfo(pQueryInfo, 0);
if(UTIL_TABLE_IS_SUPER_TABLE(pTableMetaInfo)) {
return buildSTableDelDataMsg(pSql, pCmd, pQueryInfo, pTableMetaInfo, pInfo);
} else {
return buildTableDelDataMsg(pSql, pCmd, pQueryInfo, pTableMetaInfo, pInfo);
}
}
void tscInitMsgsFp() {
tscBuildMsg[TSDB_SQL_SELECT] = tscBuildQueryMsg;
tscBuildMsg[TSDB_SQL_INSERT] = tscBuildSubmitMsg;
......@@ -3352,6 +3423,7 @@ void tscInitMsgsFp() {
tscBuildMsg[TSDB_SQL_KILL_QUERY] = tscBuildKillMsg;
tscBuildMsg[TSDB_SQL_KILL_STREAM] = tscBuildKillMsg;
tscBuildMsg[TSDB_SQL_KILL_CONNECTION] = tscBuildKillMsg;
tscBuildMsg[TSDB_SQL_DELETE_DATA] = tscBuildDelDataMsg;
tscProcessMsgRsp[TSDB_SQL_SELECT] = tscProcessQueryRsp;
tscProcessMsgRsp[TSDB_SQL_FETCH] = tscProcessRetrieveRspFromNode;
......
......@@ -35,6 +35,7 @@ enum {
TSDB_DEFINE_SQL_TYPE( TSDB_SQL_SELECT, "select" )
TSDB_DEFINE_SQL_TYPE( TSDB_SQL_FETCH, "fetch" )
TSDB_DEFINE_SQL_TYPE( TSDB_SQL_INSERT, "insert" )
TSDB_DEFINE_SQL_TYPE( TSDB_SQL_DELETE_DATA, "delete-data" )
TSDB_DEFINE_SQL_TYPE( TSDB_SQL_UPDATE_TAGS_VAL, "update-tag-val" )
// the SQL below is for mgmt node
......
......@@ -141,4 +141,7 @@ int32_t tNameSetAcctId(SName* dst, const char* acct);
int32_t tNameSetDbName(SName* dst, const char* acct, SStrToken* dbToken);
// define uniform string
#define STR_INVALID_TABLE_NAME "invalid table name"
#endif // TDENGINE_NAME_H
......@@ -513,7 +513,7 @@ static void cqProcessStreamRes(void *param, TAOS_RES *tres, TAOS_ROW row) {
pBlk->tid = htonl(pObj->tid);
pBlk->numOfRows = htons(1);
pBlk->sversion = htonl(pSchema->version);
pBlk->padding = 0;
pBlk->flag = 0;
pHead->len = sizeof(SSubmitMsg) + sizeof(SSubmitBlk) + memRowDataTLen(trow);
......
......@@ -17,6 +17,7 @@
#include "os.h"
#include "tqueue.h"
#include "dnodeVWrite.h"
#include "tthread.h"
typedef struct {
taos_qall qall;
......@@ -161,6 +162,29 @@ void dnodeFreeVWriteQueue(void *pWqueue) {
taosCloseQueue(pWqueue);
}
void* waitingResultThread(void* param) {
SVWriteMsg* pWrite = (SVWriteMsg* )param;
int32_t ret = sem_wait(pWrite->rspRet.psem_rsp);
if(ret == 0) {
// success
}
sem_destroy(pWrite->rspRet.psem_rsp);
// wait ok
SRpcMsg rpcRsp = {
.handle = pWrite->rpcMsg.handle,
.pCont = pWrite->rspRet.rsp,
.contLen = pWrite->rspRet.len,
.code = pWrite->code,
};
rpcSendResponse(&rpcRsp);
// remove from thread manager
vnodeRemoveWait(pWrite->pVnode, pWrite);
vnodeFreeFromWQueue(pWrite->pVnode, pWrite);
return NULL;
}
void dnodeSendRpcVWriteRsp(void *pVnode, void *wparam, int32_t code) {
if (wparam == NULL) return;
SVWriteMsg *pWrite = wparam;
......@@ -170,6 +194,7 @@ void dnodeSendRpcVWriteRsp(void *pVnode, void *wparam, int32_t code) {
if (count <= 1) return;
if(pWrite->rspRet.psem_rsp == 0) {
SRpcMsg rpcRsp = {
.handle = pWrite->rpcMsg.handle,
.pCont = pWrite->rspRet.rsp,
......@@ -179,6 +204,12 @@ void dnodeSendRpcVWriteRsp(void *pVnode, void *wparam, int32_t code) {
rpcSendResponse(&rpcRsp);
vnodeFreeFromWQueue(pVnode, pWrite);
} else {
// need async to wait result in another thread
pthread_t* thread = taosCreateThread(waitingResultThread, pWrite);
// add to wait thread manager
vnodeAddWait(pVnode, thread, pWrite->rspRet.psem_rsp, pWrite);
}
}
static void *dnodeProcessVWriteQueue(void *wparam) {
......
......@@ -120,6 +120,10 @@ TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_CM_DROP_TP, "drop-tp" )
TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_CM_USE_TP, "use-tp" )
TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_CM_ALTER_TP, "alter-tp" )
// delete
TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_DELDATA, "delete-data" )
#ifndef TAOS_MESSAGE_C
TSDB_MSG_TYPE_MAX // 105
#endif
......@@ -195,6 +199,9 @@ enum _mgmt_table {
#define TSDB_COL_IS_UD_COL(f) ((f&(~(TSDB_COL_NULL))) == TSDB_COL_UDC)
#define TSDB_COL_REQ_NULL(f) (((f)&TSDB_COL_NULL) != 0)
// SSubmitBlk->flag define
#define FLAG_BLK_CONTROL 0x00000001 // SSubmitBlk is a control block to submit
#define IS_CONTROL_BLOCK(x) (x->flag & FLAG_BLK_CONTROL)
extern char *taosMsg[];
......@@ -219,7 +226,7 @@ typedef struct SMsgHead {
typedef struct SSubmitBlk {
uint64_t uid; // table unique id
int32_t tid; // table id
int32_t padding; // TODO just for padding here
int32_t flag; // extend special information, can see FLAG_BLK_??? define
int32_t sversion; // data schema version
int32_t dataLen; // data part length, not including the SSubmitBlk head
int32_t schemaLen; // schema length, if length is 0, no schema exists
......@@ -996,6 +1003,12 @@ typedef struct {
char value[];
} STLV;
#define CMD_DELETE_DATA 0x00000001
typedef struct SControlData{
uint32_t command; // see define CMD_???
STimeWindow win;
} SControlData;
enum {
TLV_TYPE_END_MARK = -1,
//TLV_TYPE_DUMMY = 1,
......
......@@ -160,7 +160,7 @@ typedef struct {
*
* @return the number of points inserted, -1 for failure and the error number is set
*/
int32_t tsdbInsertData(STsdbRepo *repo, SSubmitMsg *pMsg, SShellSubmitRspMsg *pRsp);
int32_t tsdbInsertData(STsdbRepo *repo, SSubmitMsg *pMsg, SShellSubmitRspMsg *pRsp, sem_t* pSem);
// -- FOR QUERY TIME SERIES DATA
......
......@@ -177,48 +177,49 @@
#define TK_CONNECTION 159
#define TK_STREAM 160
#define TK_COLON 161
#define TK_ABORT 162
#define TK_AFTER 163
#define TK_ATTACH 164
#define TK_BEFORE 165
#define TK_BEGIN 166
#define TK_CASCADE 167
#define TK_CLUSTER 168
#define TK_CONFLICT 169
#define TK_COPY 170
#define TK_DEFERRED 171
#define TK_DELIMITERS 172
#define TK_DETACH 173
#define TK_EACH 174
#define TK_END 175
#define TK_EXPLAIN 176
#define TK_FAIL 177
#define TK_FOR 178
#define TK_IGNORE 179
#define TK_IMMEDIATE 180
#define TK_INITIALLY 181
#define TK_INSTEAD 182
#define TK_KEY 183
#define TK_OF 184
#define TK_RAISE 185
#define TK_REPLACE 186
#define TK_RESTRICT 187
#define TK_ROW 188
#define TK_STATEMENT 189
#define TK_TRIGGER 190
#define TK_VIEW 191
#define TK_IPTOKEN 192
#define TK_SEMI 193
#define TK_NONE 194
#define TK_PREV 195
#define TK_LINEAR 196
#define TK_IMPORT 197
#define TK_TBNAME 198
#define TK_JOIN 199
#define TK_INSERT 200
#define TK_INTO 201
#define TK_VALUES 202
#define TK_FILE 203
#define TK_DELETE 162
#define TK_ABORT 163
#define TK_AFTER 164
#define TK_ATTACH 165
#define TK_BEFORE 166
#define TK_BEGIN 167
#define TK_CASCADE 168
#define TK_CLUSTER 169
#define TK_CONFLICT 170
#define TK_COPY 171
#define TK_DEFERRED 172
#define TK_DELIMITERS 173
#define TK_DETACH 174
#define TK_EACH 175
#define TK_END 176
#define TK_EXPLAIN 177
#define TK_FAIL 178
#define TK_FOR 179
#define TK_IGNORE 180
#define TK_IMMEDIATE 181
#define TK_INITIALLY 182
#define TK_INSTEAD 183
#define TK_KEY 184
#define TK_OF 185
#define TK_RAISE 186
#define TK_REPLACE 187
#define TK_RESTRICT 188
#define TK_ROW 189
#define TK_STATEMENT 190
#define TK_TRIGGER 191
#define TK_VIEW 192
#define TK_IPTOKEN 193
#define TK_SEMI 194
#define TK_NONE 195
#define TK_PREV 196
#define TK_LINEAR 197
#define TK_IMPORT 198
#define TK_TBNAME 199
#define TK_JOIN 200
#define TK_INSERT 201
#define TK_INTO 202
#define TK_VALUES 203
#define TK_FILE 204
#define TK_SPACE 300
......
......@@ -32,6 +32,7 @@ typedef struct {
int32_t len;
void * rsp;
void * qhandle; // used by query and retrieve msg
sem_t* psem_rsp; // if it is not zero, need wait result with async
} SRspRet;
typedef struct {
......@@ -58,6 +59,13 @@ typedef struct {
SWalHead walHead;
} SVWriteMsg;
typedef struct {
int32_t startTime;
pthread_t* pthread;
sem_t* psem;
void* param;
} SWaitThread;
// vnodeStatus
extern char *vnodeStatus[];
......@@ -98,6 +106,10 @@ int32_t vnodeWriteToRQueue(void *pVnode, void *pCont, int32_t contLen, int8_t qt
void vnodeFreeFromRQueue(void *pVnode, SVReadMsg *pRead);
int32_t vnodeProcessRead(void *pVnode, SVReadMsg *pRead);
// wait thread
void vnodeAddWait(void* pVnode, pthread_t* pthread, sem_t* psem, void* param);
void vnodeRemoveWait(void* pVnode, void* param);
#ifdef __cplusplus
}
#endif
......
......@@ -252,6 +252,12 @@ typedef struct SMiscInfo {
};
} SMiscInfo;
typedef struct SDelData {
bool existsCheck;
SStrToken tableName;
struct tSqlExpr* pWhere;
} SDelData;
typedef struct SSqlInfo {
int32_t type;
bool valid;
......@@ -262,6 +268,7 @@ typedef struct SSqlInfo {
SCreateTableSql *pCreateTableInfo;
SAlterTableInfo *pAlterInfo;
SMiscInfo *pMiscInfo;
SDelData *pDelData;
};
} SSqlInfo;
......@@ -364,6 +371,9 @@ void tSetDbName(SStrToken *pCpxName, SStrToken *pDb);
void tSetColumnInfo(TAOS_FIELD *pField, SStrToken *pName, TAOS_FIELD *pType);
void tSetColumnType(TAOS_FIELD *pField, SStrToken *type);
// malloc new SDelData and set with args
SDelData *tGetDelData(SStrToken *pTableName, SStrToken* existsCheck, tSqlExpr* pWhere);
/**
*
* @param yyp The parser
......
......@@ -984,6 +984,15 @@ cmd ::= KILL CONNECTION INTEGER(Y). {setKillSql(pInfo, TSDB_SQL_KILL_CONNECTIO
cmd ::= KILL STREAM INTEGER(X) COLON(Z) INTEGER(Y). {X.n += (Z.n + Y.n); setKillSql(pInfo, TSDB_SQL_KILL_STREAM, &X);}
cmd ::= KILL QUERY INTEGER(X) COLON(Z) INTEGER(Y). {X.n += (Z.n + Y.n); setKillSql(pInfo, TSDB_SQL_KILL_QUERY, &X);}
//////////////////////////////////// DEL TRUNCATE TABLE /////////////////////////////////////
//1 DELETE FROM TBNAME/STBNAME WHERE TS AND TAG CONDICTION
cmd ::= DELETE FROM ifexists(Y) ids(X) cpxName(Z) where_opt(W). {
X.n += Z.n;
SDelData * pDelData = tGetDelData(&X, &Y, W);
setSqlInfo(pInfo, pDelData, NULL, TSDB_SQL_DELETE_DATA);
}
%fallback ID ABORT AFTER ASC ATTACH BEFORE BEGIN CASCADE CLUSTER CONFLICT COPY DATABASE DEFERRED
DELIMITERS DESC DETACH EACH END EXPLAIN FAIL FOR GLOB IGNORE IMMEDIATE INITIALLY INSTEAD
LIKE MATCH NMATCH KEY OF OFFSET RAISE REPLACE RESTRICT ROW STATEMENT TRIGGER VIEW ALL
......
......@@ -1310,6 +1310,22 @@ void setDropDbTableInfo(SSqlInfo *pInfo, int32_t type, SStrToken* pToken, SStrTo
pInfo->pMiscInfo->tableType = tableType;
}
void setTruncateTableInfo(SSqlInfo *pInfo, int32_t type, SStrToken* pToken, SStrToken* existsCheck, int16_t dbType, int16_t tableType) {
pInfo->type = type;
if (pInfo->pMiscInfo == NULL) {
pInfo->pMiscInfo = (SMiscInfo *)calloc(1, sizeof(SMiscInfo));
pInfo->pMiscInfo->a = taosArrayInit(4, sizeof(SStrToken));
}
taosArrayPush(pInfo->pMiscInfo->a, pToken);
pInfo->pMiscInfo->existsCheck = (existsCheck->n == 1);
pInfo->pMiscInfo->dbType = dbType;
pInfo->pMiscInfo->tableType = tableType;
}
void setDropFuncInfo(SSqlInfo *pInfo, int32_t type, SStrToken* pToken) {
pInfo->type = type;
......@@ -1474,3 +1490,15 @@ void setDefaultCreateTopicOption(SCreateDbInfo *pDBInfo) {
pDBInfo->dbType = TSDB_DB_TYPE_TOPIC;
pDBInfo->partitions = TSDB_DEFAULT_DB_PARTITON_OPTION;
}
// malloc new SDelData and set with args
SDelData* tGetDelData(SStrToken* pTableName, SStrToken* existsCheck, tSqlExpr* pWhere) {
// malloc
SDelData* pDelData = (SDelData *) calloc(1, sizeof(SDelData));
// set value
pDelData->existsCheck = (existsCheck->n == 1);
pDelData->tableName = *pTableName;
pDelData->pWhere = pWhere;
return pDelData;
}
\ No newline at end of file
......@@ -100,30 +100,30 @@
#endif
/************* Begin control #defines *****************************************/
#define YYCODETYPE unsigned short int
#define YYNOCODE 290
#define YYNOCODE 291
#define YYACTIONTYPE unsigned short int
#define ParseTOKENTYPE SStrToken
typedef union {
int yyinit;
ParseTOKENTYPE yy0;
SRelationInfo* yy84;
SArray* yy161;
SSessionWindowVal yy219;
TAOS_FIELD yy223;
SCreateAcctInfo yy231;
SSqlNode* yy276;
SIntervalVal yy300;
SCreateDbInfo yy302;
SCreatedTableInfo yy356;
int64_t yy369;
SLimitVal yy394;
SRangeVal yy420;
int yy452;
SCreateTableSql* yy462;
int32_t yy520;
tVariant yy526;
tSqlExpr* yy546;
SWindowStateVal yy548;
SLimitVal yy6;
SSqlNode* yy86;
tVariant yy110;
TAOS_FIELD yy115;
tSqlExpr* yy142;
SIntervalVal yy238;
SSessionWindowVal yy319;
SRelationInfo* yy328;
SRangeVal yy330;
SCreateDbInfo yy436;
SCreatedTableInfo yy480;
int32_t yy508;
SCreateAcctInfo yy517;
SArray* yy525;
int64_t yy543;
SWindowStateVal yy546;
SCreateTableSql* yy572;
int yy580;
} YYMINORTYPE;
#ifndef YYSTACKDEPTH
#define YYSTACKDEPTH 100
......@@ -139,18 +139,17 @@ typedef union {
#define ParseCTX_FETCH
#define ParseCTX_STORE
#define YYFALLBACK 1
#define YYNSTATE 398
#define YYNRULE 320
#define YYNRULE_WITH_ACTION 320
#define YYNTOKEN 204
#define YY_MAX_SHIFT 397
#define YY_MIN_SHIFTREDUCE 625
#define YY_MAX_SHIFTREDUCE 944
#define YY_ERROR_ACTION 945
#define YY_ACCEPT_ACTION 946
#define YY_NO_ACTION 947
#define YY_MIN_REDUCE 948
#define YY_MAX_REDUCE 1267
#define YYNSTATE 403
#define YYNRULE 321
#define YYNTOKEN 205
#define YY_MAX_SHIFT 402
#define YY_MIN_SHIFTREDUCE 631
#define YY_MAX_SHIFTREDUCE 951
#define YY_ERROR_ACTION 952
#define YY_ACCEPT_ACTION 953
#define YY_NO_ACTION 954
#define YY_MIN_REDUCE 955
#define YY_MAX_REDUCE 1275
/************* End control #defines *******************************************/
#define YY_NLOOKAHEAD ((int)(sizeof(yy_lookahead)/sizeof(yy_lookahead[0])))
......@@ -217,318 +216,322 @@ typedef union {
** yy_default[] Default action for each state.
**
*********** Begin parsing tables **********************************************/
#define YY_ACTTAB_COUNT (865)
#define YY_ACTTAB_COUNT (872)
static const YYACTIONTYPE yy_action[] = {
/* 0 */ 105, 676, 1097, 1131, 946, 397, 262, 760, 676, 677,
/* 10 */ 1183, 712, 1184, 314, 37, 38, 677, 41, 42, 396,
/* 20 */ 243, 265, 31, 30, 29, 1089, 163, 40, 347, 45,
/* 30 */ 43, 46, 44, 1086, 1087, 55, 1090, 36, 35, 372,
/* 40 */ 371, 34, 33, 32, 37, 38, 252, 41, 42, 258,
/* 50 */ 85, 265, 31, 30, 29, 24, 1122, 40, 347, 45,
/* 60 */ 43, 46, 44, 318, 100, 1241, 99, 36, 35, 218,
/* 70 */ 214, 34, 33, 32, 288, 1128, 131, 125, 136, 1241,
/* 80 */ 1241, 1243, 1244, 135, 1088, 141, 144, 134, 37, 38,
/* 90 */ 88, 41, 42, 51, 138, 265, 31, 30, 29, 295,
/* 100 */ 294, 40, 347, 45, 43, 46, 44, 343, 34, 33,
/* 110 */ 32, 36, 35, 343, 216, 34, 33, 32, 37, 38,
/* 120 */ 58, 41, 42, 59, 1241, 265, 31, 30, 29, 275,
/* 130 */ 676, 40, 347, 45, 43, 46, 44, 880, 677, 883,
/* 140 */ 185, 36, 35, 676, 217, 34, 33, 32, 13, 37,
/* 150 */ 39, 677, 41, 42, 1241, 382, 265, 31, 30, 29,
/* 160 */ 1106, 874, 40, 347, 45, 43, 46, 44, 245, 395,
/* 170 */ 393, 653, 36, 35, 59, 1104, 34, 33, 32, 209,
/* 180 */ 207, 205, 107, 86, 390, 1034, 204, 151, 150, 149,
/* 190 */ 148, 626, 627, 628, 629, 630, 631, 632, 633, 634,
/* 200 */ 635, 636, 637, 638, 639, 160, 250, 244, 38, 1263,
/* 210 */ 41, 42, 345, 1107, 265, 31, 30, 29, 280, 255,
/* 220 */ 40, 347, 45, 43, 46, 44, 1104, 284, 283, 317,
/* 230 */ 36, 35, 1, 187, 34, 33, 32, 223, 41, 42,
/* 240 */ 268, 178, 265, 31, 30, 29, 1255, 1241, 40, 347,
/* 250 */ 45, 43, 46, 44, 879, 296, 882, 888, 36, 35,
/* 260 */ 304, 94, 34, 33, 32, 67, 341, 389, 388, 340,
/* 270 */ 339, 338, 387, 337, 336, 335, 386, 334, 385, 384,
/* 280 */ 25, 59, 1065, 1053, 1054, 1055, 1056, 1057, 1058, 1059,
/* 290 */ 1060, 1061, 1062, 1063, 1064, 1066, 1067, 222, 224, 237,
/* 300 */ 890, 68, 297, 878, 230, 881, 352, 884, 1241, 1122,
/* 310 */ 147, 146, 145, 229, 181, 237, 890, 355, 94, 878,
/* 320 */ 269, 881, 267, 884, 358, 357, 256, 246, 59, 45,
/* 330 */ 43, 46, 44, 1104, 225, 241, 242, 36, 35, 349,
/* 340 */ 261, 34, 33, 32, 1241, 59, 5, 62, 189, 1194,
/* 350 */ 1122, 241, 242, 188, 114, 119, 110, 118, 68, 788,
/* 360 */ 274, 1233, 785, 257, 786, 108, 787, 266, 247, 1232,
/* 370 */ 1107, 1241, 330, 359, 889, 67, 1193, 389, 388, 1241,
/* 380 */ 1104, 287, 387, 84, 47, 285, 386, 822, 385, 384,
/* 390 */ 238, 825, 1231, 346, 270, 271, 1073, 1103, 1071, 1072,
/* 400 */ 47, 1091, 1241, 1074, 218, 59, 59, 1075, 59, 1076,
/* 410 */ 1077, 59, 161, 895, 1241, 345, 1244, 239, 79, 300,
/* 420 */ 301, 891, 885, 887, 36, 35, 59, 1241, 34, 33,
/* 430 */ 32, 218, 264, 159, 157, 156, 133, 891, 885, 887,
/* 440 */ 276, 1241, 273, 1244, 367, 366, 886, 59, 382, 59,
/* 450 */ 360, 361, 806, 362, 6, 240, 368, 1104, 1104, 220,
/* 460 */ 1104, 80, 886, 1104, 221, 1241, 226, 219, 275, 1241,
/* 470 */ 854, 369, 227, 228, 1241, 232, 1241, 1241, 1104, 186,
/* 480 */ 789, 272, 1241, 1241, 91, 1241, 233, 92, 234, 275,
/* 490 */ 259, 275, 370, 231, 374, 215, 1241, 1107, 1241, 1104,
/* 500 */ 348, 1104, 1105, 1241, 996, 1241, 248, 834, 835, 1006,
/* 510 */ 1181, 199, 1182, 102, 997, 101, 199, 103, 3, 200,
/* 520 */ 289, 199, 803, 831, 291, 299, 298, 291, 841, 842,
/* 530 */ 853, 76, 89, 770, 60, 322, 772, 165, 324, 771,
/* 540 */ 810, 54, 71, 48, 919, 892, 351, 60, 263, 60,
/* 550 */ 71, 10, 106, 71, 15, 675, 14, 83, 9, 9,
/* 560 */ 124, 17, 123, 16, 795, 793, 796, 794, 350, 9,
/* 570 */ 364, 363, 253, 19, 325, 18, 77, 130, 21, 129,
/* 580 */ 20, 143, 142, 1190, 1189, 254, 373, 162, 877, 759,
/* 590 */ 1102, 1130, 26, 1173, 1141, 1138, 1172, 1139, 1123, 292,
/* 600 */ 1143, 164, 169, 1098, 310, 1171, 1170, 180, 182, 1096,
/* 610 */ 183, 184, 1011, 158, 821, 327, 328, 303, 329, 332,
/* 620 */ 333, 69, 212, 65, 344, 1005, 249, 170, 356, 1262,
/* 630 */ 305, 307, 121, 1261, 1258, 190, 81, 365, 1254, 1120,
/* 640 */ 127, 1253, 78, 1250, 191, 1031, 66, 319, 171, 61,
/* 650 */ 70, 213, 28, 993, 315, 173, 137, 309, 313, 991,
/* 660 */ 139, 311, 140, 172, 306, 989, 988, 277, 202, 203,
/* 670 */ 985, 984, 983, 982, 302, 981, 980, 27, 979, 206,
/* 680 */ 208, 971, 210, 968, 211, 964, 87, 331, 290, 1100,
/* 690 */ 90, 95, 308, 383, 376, 132, 375, 377, 378, 379,
/* 700 */ 82, 380, 381, 260, 391, 944, 326, 279, 943, 282,
/* 710 */ 942, 278, 235, 236, 281, 925, 924, 115, 1010, 1009,
/* 720 */ 116, 286, 321, 291, 11, 293, 987, 93, 798, 52,
/* 730 */ 96, 830, 986, 193, 1032, 194, 195, 192, 196, 198,
/* 740 */ 197, 152, 828, 153, 978, 977, 320, 1069, 154, 1033,
/* 750 */ 155, 74, 176, 174, 175, 177, 970, 53, 179, 969,
/* 760 */ 1079, 2, 4, 824, 823, 75, 166, 827, 832, 843,
/* 770 */ 167, 168, 837, 97, 251, 839, 98, 312, 63, 350,
/* 780 */ 316, 12, 104, 49, 22, 23, 323, 64, 107, 109,
/* 790 */ 56, 111, 50, 112, 690, 725, 723, 722, 721, 57,
/* 800 */ 113, 719, 718, 717, 714, 680, 342, 117, 7, 916,
/* 810 */ 914, 894, 917, 893, 915, 8, 896, 354, 120, 72,
/* 820 */ 122, 60, 353, 792, 73, 762, 126, 128, 761, 758,
/* 830 */ 706, 704, 696, 702, 791, 698, 700, 694, 692, 728,
/* 840 */ 727, 726, 724, 720, 716, 715, 201, 643, 948, 678,
/* 850 */ 652, 392, 650, 947, 947, 947, 947, 947, 947, 947,
/* 860 */ 947, 947, 947, 947, 394,
/* 0 */ 106, 682, 401, 247, 953, 402, 266, 1129, 682, 683,
/* 10 */ 1190, 718, 1191, 319, 37, 38, 683, 41, 42, 395,
/* 20 */ 1041, 269, 31, 30, 29, 250, 167, 40, 352, 45,
/* 30 */ 43, 46, 44, 1093, 1094, 55, 1097, 36, 35, 24,
/* 40 */ 220, 34, 33, 32, 37, 38, 256, 41, 42, 1248,
/* 50 */ 1248, 269, 31, 30, 29, 221, 1129, 40, 352, 45,
/* 60 */ 43, 46, 44, 323, 101, 1248, 100, 36, 35, 222,
/* 70 */ 218, 34, 33, 32, 293, 766, 132, 126, 137, 1248,
/* 80 */ 1248, 1250, 1251, 136, 1113, 142, 145, 135, 37, 38,
/* 90 */ 89, 41, 42, 51, 139, 269, 31, 30, 29, 300,
/* 100 */ 299, 40, 352, 45, 43, 46, 44, 377, 376, 348,
/* 110 */ 182, 36, 35, 1138, 227, 34, 33, 32, 37, 38,
/* 120 */ 58, 41, 42, 59, 1248, 269, 31, 30, 29, 309,
/* 130 */ 228, 40, 352, 45, 43, 46, 44, 34, 33, 32,
/* 140 */ 1248, 36, 35, 682, 229, 34, 33, 32, 13, 37,
/* 150 */ 39, 683, 41, 42, 1248, 809, 269, 31, 30, 29,
/* 160 */ 1270, 880, 40, 352, 45, 43, 46, 44, 249, 400,
/* 170 */ 398, 659, 36, 35, 59, 1111, 34, 33, 32, 213,
/* 180 */ 211, 209, 108, 87, 10, 1135, 208, 152, 151, 150,
/* 190 */ 149, 632, 633, 634, 635, 636, 637, 638, 639, 640,
/* 200 */ 641, 642, 643, 644, 645, 161, 254, 248, 38, 59,
/* 210 */ 41, 42, 387, 1114, 269, 31, 30, 29, 285, 259,
/* 220 */ 40, 352, 45, 43, 46, 44, 1111, 289, 288, 682,
/* 230 */ 36, 35, 1262, 261, 34, 33, 32, 683, 41, 42,
/* 240 */ 1114, 294, 269, 31, 30, 29, 1240, 1239, 40, 352,
/* 250 */ 45, 43, 46, 44, 260, 60, 1248, 1248, 36, 35,
/* 260 */ 59, 1111, 34, 33, 32, 67, 346, 394, 393, 345,
/* 270 */ 344, 343, 392, 342, 341, 340, 391, 339, 390, 389,
/* 280 */ 1072, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068,
/* 290 */ 1069, 1070, 1071, 1073, 1074, 241, 896, 25, 1096, 884,
/* 300 */ 1238, 887, 95, 890, 794, 364, 134, 791, 301, 792,
/* 310 */ 1248, 793, 1111, 243, 226, 244, 241, 896, 387, 263,
/* 320 */ 884, 234, 887, 1248, 890, 1248, 1114, 148, 147, 146,
/* 330 */ 233, 245, 246, 104, 360, 95, 5, 62, 193, 274,
/* 340 */ 275, 224, 68, 192, 115, 120, 111, 119, 90, 837,
/* 350 */ 828, 1248, 245, 246, 831, 1129, 354, 45, 43, 46,
/* 360 */ 44, 272, 335, 169, 59, 36, 35, 278, 225, 34,
/* 370 */ 33, 32, 302, 251, 67, 68, 394, 393, 1248, 230,
/* 380 */ 47, 392, 305, 306, 59, 391, 348, 390, 389, 1248,
/* 390 */ 36, 35, 265, 351, 34, 33, 32, 886, 292, 889,
/* 400 */ 85, 47, 885, 59, 888, 59, 270, 242, 59, 365,
/* 410 */ 1188, 282, 1189, 59, 223, 350, 1111, 897, 891, 893,
/* 420 */ 1080, 1003, 1078, 1079, 1248, 795, 276, 1081, 203, 366,
/* 430 */ 812, 1082, 268, 1083, 1084, 1201, 1111, 1104, 897, 891,
/* 440 */ 893, 273, 892, 271, 59, 363, 362, 280, 367, 277,
/* 450 */ 373, 372, 371, 374, 6, 1111, 222, 1111, 375, 109,
/* 460 */ 1111, 840, 841, 892, 231, 1111, 1248, 59, 1251, 252,
/* 470 */ 222, 160, 158, 157, 1248, 232, 86, 236, 237, 860,
/* 480 */ 1248, 238, 1251, 235, 262, 1248, 279, 1248, 1248, 379,
/* 490 */ 219, 1248, 279, 1248, 279, 1098, 1111, 189, 279, 76,
/* 500 */ 1248, 1013, 92, 190, 103, 353, 102, 93, 203, 1112,
/* 510 */ 1095, 304, 303, 1004, 847, 1, 191, 894, 816, 1110,
/* 520 */ 203, 848, 895, 3, 204, 79, 350, 776, 71, 54,
/* 530 */ 267, 327, 778, 356, 329, 48, 777, 925, 898, 859,
/* 540 */ 357, 60, 296, 322, 77, 60, 71, 296, 107, 681,
/* 550 */ 71, 9, 9, 83, 15, 355, 14, 125, 801, 124,
/* 560 */ 802, 1200, 330, 9, 17, 799, 16, 800, 80, 257,
/* 570 */ 883, 369, 368, 1197, 19, 131, 18, 130, 21, 1196,
/* 580 */ 20, 144, 143, 258, 378, 765, 185, 163, 290, 165,
/* 590 */ 166, 1109, 1137, 26, 1148, 1145, 1130, 1146, 297, 1105,
/* 600 */ 1150, 168, 173, 315, 1180, 1179, 1178, 1177, 184, 186,
/* 610 */ 1103, 1275, 159, 187, 188, 1018, 332, 333, 396, 334,
/* 620 */ 337, 338, 827, 69, 216, 65, 349, 81, 27, 308,
/* 630 */ 1012, 253, 310, 361, 312, 1269, 122, 1268, 1265, 194,
/* 640 */ 370, 1127, 1261, 128, 1260, 1257, 195, 901, 1038, 66,
/* 650 */ 78, 174, 324, 61, 28, 70, 320, 318, 175, 217,
/* 660 */ 1000, 138, 998, 140, 141, 996, 995, 281, 206, 178,
/* 670 */ 207, 992, 991, 990, 316, 989, 988, 987, 986, 210,
/* 680 */ 212, 314, 978, 214, 975, 215, 311, 971, 307, 88,
/* 690 */ 336, 162, 388, 84, 295, 1107, 91, 96, 313, 133,
/* 700 */ 380, 381, 382, 383, 384, 82, 385, 386, 164, 950,
/* 710 */ 264, 331, 283, 284, 949, 286, 239, 287, 948, 931,
/* 720 */ 240, 930, 1017, 1016, 116, 117, 291, 296, 11, 326,
/* 730 */ 94, 804, 298, 52, 97, 836, 994, 993, 74, 198,
/* 740 */ 985, 1039, 200, 196, 197, 199, 201, 202, 153, 2,
/* 750 */ 154, 325, 1076, 155, 984, 1040, 156, 834, 53, 179,
/* 760 */ 180, 176, 177, 183, 181, 977, 4, 976, 833, 1086,
/* 770 */ 830, 829, 75, 172, 838, 170, 255, 849, 171, 63,
/* 780 */ 843, 98, 355, 845, 99, 317, 321, 105, 22, 64,
/* 790 */ 23, 12, 49, 328, 56, 108, 50, 110, 113, 696,
/* 800 */ 731, 112, 729, 728, 727, 57, 114, 725, 724, 723,
/* 810 */ 720, 686, 347, 118, 7, 922, 920, 900, 923, 899,
/* 820 */ 921, 358, 8, 902, 359, 72, 121, 60, 123, 73,
/* 830 */ 768, 127, 798, 767, 129, 764, 712, 710, 702, 708,
/* 840 */ 704, 706, 797, 700, 698, 734, 733, 732, 730, 726,
/* 850 */ 722, 721, 205, 684, 649, 955, 658, 656, 954, 397,
/* 860 */ 954, 954, 954, 954, 954, 954, 954, 954, 954, 954,
/* 870 */ 954, 399,
};
static const YYCODETYPE yy_lookahead[] = {
/* 0 */ 214, 1, 206, 206, 204, 205, 213, 5, 1, 9,
/* 10 */ 285, 5, 287, 288, 14, 15, 9, 17, 18, 206,
/* 20 */ 207, 21, 22, 23, 24, 0, 206, 27, 28, 29,
/* 30 */ 30, 31, 32, 247, 248, 249, 250, 37, 38, 37,
/* 40 */ 38, 41, 42, 43, 14, 15, 1, 17, 18, 253,
/* 50 */ 214, 21, 22, 23, 24, 277, 256, 27, 28, 29,
/* 60 */ 30, 31, 32, 284, 285, 287, 287, 37, 38, 277,
/* 70 */ 277, 41, 42, 43, 274, 278, 66, 67, 68, 287,
/* 80 */ 287, 289, 289, 73, 248, 75, 76, 77, 14, 15,
/* 90 */ 90, 17, 18, 86, 84, 21, 22, 23, 24, 279,
/* 100 */ 280, 27, 28, 29, 30, 31, 32, 88, 41, 42,
/* 110 */ 43, 37, 38, 88, 277, 41, 42, 43, 14, 15,
/* 120 */ 90, 17, 18, 206, 287, 21, 22, 23, 24, 206,
/* 130 */ 1, 27, 28, 29, 30, 31, 32, 5, 9, 7,
/* 140 */ 217, 37, 38, 1, 277, 41, 42, 43, 86, 14,
/* 150 */ 15, 9, 17, 18, 287, 94, 21, 22, 23, 24,
/* 160 */ 259, 87, 27, 28, 29, 30, 31, 32, 251, 69,
/* 170 */ 70, 71, 37, 38, 206, 258, 41, 42, 43, 66,
/* 180 */ 67, 68, 120, 121, 228, 229, 73, 74, 75, 76,
/* 0 */ 215, 1, 207, 208, 205, 206, 214, 257, 1, 9,
/* 10 */ 286, 5, 288, 289, 14, 15, 9, 17, 18, 229,
/* 20 */ 230, 21, 22, 23, 24, 275, 207, 27, 28, 29,
/* 30 */ 30, 31, 32, 248, 249, 250, 251, 37, 38, 278,
/* 40 */ 278, 41, 42, 43, 14, 15, 1, 17, 18, 288,
/* 50 */ 288, 21, 22, 23, 24, 278, 257, 27, 28, 29,
/* 60 */ 30, 31, 32, 285, 286, 288, 288, 37, 38, 278,
/* 70 */ 278, 41, 42, 43, 275, 5, 66, 67, 68, 288,
/* 80 */ 288, 290, 290, 73, 260, 75, 76, 77, 14, 15,
/* 90 */ 90, 17, 18, 86, 84, 21, 22, 23, 24, 280,
/* 100 */ 281, 27, 28, 29, 30, 31, 32, 37, 38, 88,
/* 110 */ 265, 37, 38, 207, 278, 41, 42, 43, 14, 15,
/* 120 */ 90, 17, 18, 207, 288, 21, 22, 23, 24, 284,
/* 130 */ 278, 27, 28, 29, 30, 31, 32, 41, 42, 43,
/* 140 */ 288, 37, 38, 1, 278, 41, 42, 43, 86, 14,
/* 150 */ 15, 9, 17, 18, 288, 101, 21, 22, 23, 24,
/* 160 */ 260, 87, 27, 28, 29, 30, 31, 32, 252, 69,
/* 170 */ 70, 71, 37, 38, 207, 259, 41, 42, 43, 66,
/* 180 */ 67, 68, 120, 121, 130, 279, 73, 74, 75, 76,
/* 190 */ 77, 49, 50, 51, 52, 53, 54, 55, 56, 57,
/* 200 */ 58, 59, 60, 61, 62, 63, 252, 65, 15, 259,
/* 210 */ 17, 18, 47, 259, 21, 22, 23, 24, 150, 251,
/* 220 */ 27, 28, 29, 30, 31, 32, 258, 159, 160, 64,
/* 230 */ 37, 38, 215, 216, 41, 42, 43, 277, 17, 18,
/* 240 */ 72, 264, 21, 22, 23, 24, 259, 287, 27, 28,
/* 250 */ 29, 30, 31, 32, 5, 282, 7, 125, 37, 38,
/* 260 */ 283, 86, 41, 42, 43, 102, 103, 104, 105, 106,
/* 200 */ 58, 59, 60, 61, 62, 63, 253, 65, 15, 207,
/* 210 */ 17, 18, 94, 260, 21, 22, 23, 24, 150, 252,
/* 220 */ 27, 28, 29, 30, 31, 32, 259, 159, 160, 1,
/* 230 */ 37, 38, 260, 253, 41, 42, 43, 9, 17, 18,
/* 240 */ 260, 87, 21, 22, 23, 24, 278, 278, 27, 28,
/* 250 */ 29, 30, 31, 32, 252, 101, 288, 288, 37, 38,
/* 260 */ 207, 259, 41, 42, 43, 102, 103, 104, 105, 106,
/* 270 */ 107, 108, 109, 110, 111, 112, 113, 114, 115, 116,
/* 280 */ 48, 206, 230, 231, 232, 233, 234, 235, 236, 237,
/* 290 */ 238, 239, 240, 241, 242, 243, 244, 65, 277, 1,
/* 300 */ 2, 126, 282, 5, 72, 7, 16, 9, 287, 256,
/* 310 */ 78, 79, 80, 81, 254, 1, 2, 85, 86, 5,
/* 320 */ 152, 7, 154, 9, 156, 157, 251, 274, 206, 29,
/* 330 */ 30, 31, 32, 258, 277, 37, 38, 37, 38, 41,
/* 340 */ 213, 41, 42, 43, 287, 206, 66, 67, 68, 246,
/* 350 */ 256, 37, 38, 73, 74, 75, 76, 77, 126, 2,
/* 360 */ 72, 277, 5, 252, 7, 214, 9, 213, 274, 277,
/* 370 */ 259, 287, 92, 251, 125, 102, 246, 104, 105, 287,
/* 380 */ 258, 149, 109, 151, 86, 206, 113, 5, 115, 116,
/* 390 */ 158, 9, 277, 25, 37, 38, 230, 258, 232, 233,
/* 400 */ 86, 250, 287, 237, 277, 206, 206, 241, 206, 243,
/* 410 */ 244, 206, 206, 123, 287, 47, 289, 277, 101, 37,
/* 420 */ 38, 123, 124, 125, 37, 38, 206, 287, 41, 42,
/* 430 */ 43, 277, 64, 66, 67, 68, 82, 123, 124, 125,
/* 440 */ 152, 287, 154, 289, 156, 157, 148, 206, 94, 206,
/* 450 */ 251, 251, 41, 251, 86, 277, 251, 258, 258, 277,
/* 460 */ 258, 144, 148, 258, 277, 287, 277, 277, 206, 287,
/* 470 */ 80, 251, 277, 277, 287, 277, 287, 287, 258, 217,
/* 480 */ 123, 124, 287, 287, 87, 287, 277, 87, 277, 206,
/* 490 */ 252, 206, 251, 277, 251, 277, 287, 259, 287, 258,
/* 500 */ 217, 258, 217, 287, 212, 287, 124, 132, 133, 212,
/* 510 */ 285, 219, 287, 285, 212, 287, 219, 260, 210, 211,
/* 520 */ 87, 219, 101, 87, 127, 37, 38, 127, 87, 87,
/* 530 */ 140, 101, 275, 87, 101, 87, 87, 101, 87, 87,
/* 540 */ 129, 86, 101, 101, 87, 87, 25, 101, 1, 101,
/* 550 */ 101, 130, 101, 101, 153, 87, 155, 86, 101, 101,
/* 560 */ 153, 153, 155, 155, 5, 5, 7, 7, 47, 101,
/* 570 */ 37, 38, 246, 153, 119, 155, 146, 153, 153, 155,
/* 580 */ 155, 82, 83, 246, 246, 246, 246, 206, 41, 118,
/* 590 */ 206, 206, 276, 286, 206, 206, 286, 206, 256, 256,
/* 600 */ 206, 206, 206, 256, 206, 286, 286, 261, 206, 206,
/* 610 */ 206, 206, 206, 64, 125, 206, 206, 281, 206, 206,
/* 620 */ 206, 206, 206, 206, 206, 206, 281, 272, 206, 206,
/* 630 */ 281, 281, 206, 206, 206, 206, 143, 206, 206, 273,
/* 640 */ 206, 206, 145, 206, 206, 206, 206, 138, 271, 206,
/* 650 */ 206, 206, 142, 206, 141, 269, 206, 134, 136, 206,
/* 660 */ 206, 135, 206, 270, 137, 206, 206, 206, 206, 206,
/* 670 */ 206, 206, 206, 206, 131, 206, 206, 147, 206, 206,
/* 680 */ 206, 206, 206, 206, 206, 206, 122, 93, 208, 208,
/* 690 */ 208, 208, 208, 117, 55, 100, 99, 96, 98, 59,
/* 700 */ 208, 97, 95, 208, 88, 5, 208, 5, 5, 5,
/* 710 */ 5, 161, 208, 208, 161, 104, 103, 214, 218, 218,
/* 720 */ 214, 150, 119, 127, 86, 101, 208, 128, 87, 86,
/* 730 */ 101, 87, 208, 225, 227, 221, 224, 226, 222, 220,
/* 740 */ 223, 209, 125, 209, 208, 208, 255, 245, 209, 229,
/* 750 */ 209, 101, 266, 268, 267, 265, 208, 263, 262, 208,
/* 760 */ 245, 215, 210, 5, 5, 86, 86, 125, 87, 87,
/* 770 */ 86, 101, 87, 86, 1, 87, 86, 86, 101, 47,
/* 780 */ 1, 86, 90, 86, 139, 139, 119, 101, 120, 82,
/* 790 */ 91, 90, 86, 74, 5, 9, 5, 5, 5, 91,
/* 800 */ 90, 5, 5, 5, 5, 89, 16, 82, 86, 9,
/* 810 */ 9, 87, 9, 87, 9, 86, 123, 63, 155, 17,
/* 820 */ 155, 101, 28, 125, 17, 5, 155, 155, 5, 87,
/* 830 */ 5, 5, 5, 5, 125, 5, 5, 5, 5, 5,
/* 840 */ 5, 5, 5, 5, 5, 5, 101, 64, 0, 89,
/* 850 */ 9, 22, 9, 290, 290, 290, 290, 290, 290, 290,
/* 860 */ 290, 290, 290, 290, 22, 290, 290, 290, 290, 290,
/* 870 */ 290, 290, 290, 290, 290, 290, 290, 290, 290, 290,
/* 880 */ 290, 290, 290, 290, 290, 290, 290, 290, 290, 290,
/* 890 */ 290, 290, 290, 290, 290, 290, 290, 290, 290, 290,
/* 900 */ 290, 290, 290, 290, 290, 290, 290, 290, 290, 290,
/* 910 */ 290, 290, 290, 290, 290, 290, 290, 290, 290, 290,
/* 920 */ 290, 290, 290, 290, 290, 290, 290, 290, 290, 290,
/* 930 */ 290, 290, 290, 290, 290, 290, 290, 290, 290, 290,
/* 940 */ 290, 290, 290, 290, 290, 290, 290, 290, 290, 290,
/* 950 */ 290, 290, 290, 290, 290, 290, 290, 290, 290, 290,
/* 960 */ 290, 290, 290, 290, 290, 290, 290, 290, 290, 290,
/* 970 */ 290, 290, 290, 290, 290, 290, 290, 290, 290, 290,
/* 980 */ 290, 290, 290, 290, 290, 290, 290, 290, 290, 290,
/* 990 */ 290, 290, 290, 290, 290, 290, 290, 290, 290, 290,
/* 1000 */ 290, 290, 290, 290, 290, 290, 290, 290, 290, 290,
/* 1010 */ 290, 290, 290, 290, 290, 290, 290, 290, 290, 290,
/* 1020 */ 290, 290, 290, 290, 290, 290, 290, 290, 290, 290,
/* 1030 */ 290, 290, 290, 290, 290, 290, 290, 290, 290, 290,
/* 1040 */ 290, 290, 290, 290, 290, 290, 290, 290, 290, 290,
/* 1050 */ 290, 290, 290, 290, 290, 290, 290, 290, 290, 290,
/* 1060 */ 290, 290, 290, 290, 290, 290, 290, 290, 290,
/* 280 */ 231, 232, 233, 234, 235, 236, 237, 238, 239, 240,
/* 290 */ 241, 242, 243, 244, 245, 1, 2, 48, 0, 5,
/* 300 */ 278, 7, 86, 9, 2, 252, 82, 5, 283, 7,
/* 310 */ 288, 9, 259, 278, 65, 278, 1, 2, 94, 253,
/* 320 */ 5, 72, 7, 288, 9, 288, 260, 78, 79, 80,
/* 330 */ 81, 37, 38, 261, 85, 86, 66, 67, 68, 37,
/* 340 */ 38, 278, 126, 73, 74, 75, 76, 77, 276, 87,
/* 350 */ 5, 288, 37, 38, 9, 257, 41, 29, 30, 31,
/* 360 */ 32, 72, 92, 101, 207, 37, 38, 72, 278, 41,
/* 370 */ 42, 43, 283, 275, 102, 126, 104, 105, 288, 278,
/* 380 */ 86, 109, 37, 38, 207, 113, 88, 115, 116, 288,
/* 390 */ 37, 38, 214, 25, 41, 42, 43, 5, 149, 7,
/* 400 */ 151, 86, 5, 207, 7, 207, 214, 158, 207, 252,
/* 410 */ 286, 162, 288, 207, 278, 47, 259, 123, 124, 125,
/* 420 */ 231, 213, 233, 234, 288, 123, 124, 238, 220, 252,
/* 430 */ 41, 242, 64, 244, 245, 247, 259, 207, 123, 124,
/* 440 */ 125, 152, 148, 154, 207, 156, 157, 152, 252, 154,
/* 450 */ 252, 156, 157, 252, 86, 259, 278, 259, 252, 215,
/* 460 */ 259, 132, 133, 148, 278, 259, 288, 207, 290, 124,
/* 470 */ 278, 66, 67, 68, 288, 278, 215, 278, 278, 80,
/* 480 */ 288, 278, 290, 278, 254, 288, 207, 288, 288, 252,
/* 490 */ 278, 288, 207, 288, 207, 251, 259, 218, 207, 101,
/* 500 */ 288, 213, 87, 218, 286, 218, 288, 87, 220, 218,
/* 510 */ 249, 37, 38, 213, 87, 216, 217, 125, 129, 259,
/* 520 */ 220, 87, 125, 211, 212, 101, 47, 87, 101, 86,
/* 530 */ 1, 87, 87, 25, 87, 101, 87, 87, 87, 140,
/* 540 */ 16, 101, 127, 64, 146, 101, 101, 127, 101, 87,
/* 550 */ 101, 101, 101, 86, 153, 47, 155, 153, 5, 155,
/* 560 */ 7, 247, 119, 101, 153, 5, 155, 7, 144, 247,
/* 570 */ 41, 37, 38, 247, 153, 153, 155, 155, 153, 247,
/* 580 */ 155, 82, 83, 247, 247, 118, 255, 207, 207, 207,
/* 590 */ 207, 207, 207, 277, 207, 207, 257, 207, 257, 257,
/* 600 */ 207, 207, 207, 207, 287, 287, 287, 287, 262, 207,
/* 610 */ 207, 263, 64, 207, 207, 207, 207, 207, 88, 207,
/* 620 */ 207, 207, 125, 207, 207, 207, 207, 143, 147, 282,
/* 630 */ 207, 282, 282, 207, 282, 207, 207, 207, 207, 207,
/* 640 */ 207, 274, 207, 207, 207, 207, 207, 123, 207, 207,
/* 650 */ 145, 273, 138, 207, 142, 207, 141, 136, 272, 207,
/* 660 */ 207, 207, 207, 207, 207, 207, 207, 207, 207, 269,
/* 670 */ 207, 207, 207, 207, 135, 207, 207, 207, 207, 207,
/* 680 */ 207, 134, 207, 207, 207, 207, 137, 207, 131, 122,
/* 690 */ 93, 209, 117, 210, 209, 209, 209, 209, 209, 100,
/* 700 */ 99, 55, 96, 98, 59, 209, 97, 95, 130, 5,
/* 710 */ 209, 209, 161, 5, 5, 161, 209, 5, 5, 104,
/* 720 */ 209, 103, 219, 219, 215, 215, 150, 127, 86, 119,
/* 730 */ 128, 87, 101, 86, 101, 87, 209, 209, 101, 222,
/* 740 */ 209, 228, 223, 227, 226, 225, 224, 221, 210, 216,
/* 750 */ 210, 256, 246, 210, 209, 230, 210, 125, 264, 268,
/* 760 */ 267, 271, 270, 263, 266, 209, 211, 209, 125, 246,
/* 770 */ 5, 5, 86, 101, 87, 86, 1, 87, 86, 101,
/* 780 */ 87, 86, 47, 87, 86, 86, 1, 90, 139, 101,
/* 790 */ 139, 86, 86, 119, 91, 120, 86, 82, 74, 5,
/* 800 */ 9, 90, 5, 5, 5, 91, 90, 5, 5, 5,
/* 810 */ 5, 89, 16, 82, 86, 9, 9, 87, 9, 87,
/* 820 */ 9, 28, 86, 123, 63, 17, 155, 101, 155, 17,
/* 830 */ 5, 155, 125, 5, 155, 87, 5, 5, 5, 5,
/* 840 */ 5, 5, 125, 5, 5, 5, 5, 5, 5, 5,
/* 850 */ 5, 5, 101, 89, 64, 0, 9, 9, 291, 22,
/* 860 */ 291, 291, 291, 291, 291, 291, 291, 291, 291, 291,
/* 870 */ 291, 22, 291, 291, 291, 291, 291, 291, 291, 291,
/* 880 */ 291, 291, 291, 291, 291, 291, 291, 291, 291, 291,
/* 890 */ 291, 291, 291, 291, 291, 291, 291, 291, 291, 291,
/* 900 */ 291, 291, 291, 291, 291, 291, 291, 291, 291, 291,
/* 910 */ 291, 291, 291, 291, 291, 291, 291, 291, 291, 291,
/* 920 */ 291, 291, 291, 291, 291, 291, 291, 291, 291, 291,
/* 930 */ 291, 291, 291, 291, 291, 291, 291, 291, 291, 291,
/* 940 */ 291, 291, 291, 291, 291, 291, 291, 291, 291, 291,
/* 950 */ 291, 291, 291, 291, 291, 291, 291, 291, 291, 291,
/* 960 */ 291, 291, 291, 291, 291, 291, 291, 291, 291, 291,
/* 970 */ 291, 291, 291, 291, 291, 291, 291, 291, 291, 291,
/* 980 */ 291, 291, 291, 291, 291, 291, 291, 291, 291, 291,
/* 990 */ 291, 291, 291, 291, 291, 291, 291, 291, 291, 291,
/* 1000 */ 291, 291, 291, 291, 291, 291, 291, 291, 291, 291,
/* 1010 */ 291, 291, 291, 291, 291, 291, 291, 291, 291, 291,
/* 1020 */ 291, 291, 291, 291, 291, 291, 291, 291, 291, 291,
/* 1030 */ 291, 291, 291, 291, 291, 291, 291, 291, 291, 291,
/* 1040 */ 291, 291, 291, 291, 291, 291, 291, 291, 291, 291,
/* 1050 */ 291, 291, 291, 291, 291, 291, 291, 291, 291, 291,
/* 1060 */ 291, 291, 291, 291, 291, 291, 291, 291, 291, 291,
/* 1070 */ 291, 291, 291, 291, 291, 291, 291,
};
#define YY_SHIFT_COUNT (397)
#define YY_SHIFT_COUNT (402)
#define YY_SHIFT_MIN (0)
#define YY_SHIFT_MAX (848)
#define YY_SHIFT_MAX (855)
static const unsigned short int yy_shift_ofst[] = {
/* 0 */ 232, 163, 163, 273, 273, 19, 298, 314, 314, 314,
/* 10 */ 7, 129, 129, 129, 129, 129, 129, 129, 129, 129,
/* 20 */ 129, 129, 45, 45, 0, 142, 314, 314, 314, 314,
/* 30 */ 314, 314, 314, 314, 314, 314, 314, 314, 314, 314,
/* 40 */ 314, 314, 314, 314, 314, 314, 314, 314, 357, 357,
/* 50 */ 357, 175, 175, 375, 129, 25, 129, 129, 129, 129,
/* 60 */ 129, 354, 19, 45, 45, 61, 61, 6, 865, 865,
/* 70 */ 865, 357, 357, 357, 382, 382, 2, 2, 2, 2,
/* 80 */ 2, 2, 62, 2, 129, 129, 129, 129, 129, 411,
/* 90 */ 129, 129, 129, 175, 175, 129, 129, 129, 129, 390,
/* 100 */ 390, 390, 390, 421, 175, 129, 129, 129, 129, 129,
/* 110 */ 129, 129, 129, 129, 129, 129, 129, 129, 129, 129,
/* 120 */ 129, 129, 129, 129, 129, 129, 129, 129, 129, 129,
/* 130 */ 129, 129, 129, 129, 129, 129, 129, 129, 129, 129,
/* 140 */ 129, 129, 129, 129, 129, 129, 129, 129, 129, 129,
/* 150 */ 129, 129, 129, 129, 129, 129, 129, 129, 129, 129,
/* 160 */ 129, 549, 549, 549, 549, 489, 489, 489, 489, 549,
/* 170 */ 493, 497, 509, 510, 513, 522, 526, 523, 527, 543,
/* 180 */ 530, 564, 549, 549, 549, 594, 594, 576, 19, 19,
/* 190 */ 549, 549, 595, 597, 639, 601, 600, 640, 604, 607,
/* 200 */ 576, 6, 549, 549, 616, 616, 549, 616, 549, 616,
/* 210 */ 549, 549, 865, 865, 30, 74, 104, 104, 104, 135,
/* 220 */ 193, 221, 280, 300, 300, 300, 300, 300, 300, 10,
/* 230 */ 113, 387, 387, 387, 387, 168, 288, 368, 68, 67,
/* 240 */ 67, 132, 249, 100, 367, 433, 397, 400, 488, 436,
/* 250 */ 441, 442, 165, 430, 317, 446, 448, 449, 451, 452,
/* 260 */ 455, 457, 458, 521, 547, 290, 468, 401, 407, 408,
/* 270 */ 559, 560, 533, 420, 424, 471, 425, 499, 700, 550,
/* 280 */ 702, 703, 553, 704, 705, 611, 613, 571, 596, 603,
/* 290 */ 638, 599, 641, 643, 624, 629, 644, 650, 617, 642,
/* 300 */ 758, 759, 679, 681, 680, 682, 684, 685, 670, 687,
/* 310 */ 688, 690, 773, 691, 677, 645, 732, 779, 686, 646,
/* 320 */ 692, 695, 603, 697, 667, 706, 668, 707, 699, 701,
/* 330 */ 719, 789, 708, 710, 786, 791, 792, 793, 796, 797,
/* 340 */ 798, 799, 716, 790, 725, 800, 801, 722, 724, 726,
/* 350 */ 803, 805, 693, 729, 794, 754, 802, 663, 665, 720,
/* 360 */ 720, 720, 720, 698, 709, 807, 671, 672, 720, 720,
/* 370 */ 720, 820, 823, 742, 720, 825, 826, 827, 828, 830,
/* 380 */ 831, 832, 833, 834, 835, 836, 837, 838, 839, 840,
/* 390 */ 745, 760, 841, 829, 843, 842, 783, 848,
/* 0 */ 249, 163, 163, 272, 272, 21, 315, 294, 294, 294,
/* 10 */ 7, 228, 228, 228, 228, 228, 228, 228, 228, 228,
/* 20 */ 228, 228, 45, 45, 0, 142, 294, 294, 294, 294,
/* 30 */ 294, 294, 294, 294, 294, 294, 294, 294, 294, 294,
/* 40 */ 294, 294, 294, 294, 294, 294, 294, 294, 302, 302,
/* 50 */ 302, 216, 216, 329, 228, 298, 228, 228, 228, 228,
/* 60 */ 228, 224, 21, 45, 45, 118, 118, 6, 872, 872,
/* 70 */ 872, 302, 302, 302, 345, 345, 70, 70, 70, 70,
/* 80 */ 70, 70, 62, 70, 228, 228, 228, 228, 228, 228,
/* 90 */ 389, 228, 228, 228, 216, 216, 228, 228, 228, 228,
/* 100 */ 399, 399, 399, 399, 54, 216, 228, 228, 228, 228,
/* 110 */ 228, 228, 228, 228, 228, 228, 228, 228, 228, 228,
/* 120 */ 228, 228, 228, 228, 228, 228, 228, 228, 228, 228,
/* 130 */ 228, 228, 228, 228, 228, 228, 228, 228, 228, 228,
/* 140 */ 228, 228, 228, 228, 228, 228, 228, 228, 228, 228,
/* 150 */ 228, 228, 228, 228, 228, 228, 228, 228, 228, 228,
/* 160 */ 228, 228, 481, 548, 530, 548, 548, 548, 548, 497,
/* 170 */ 497, 497, 497, 548, 484, 505, 514, 512, 515, 521,
/* 180 */ 539, 547, 549, 557, 481, 567, 548, 548, 548, 597,
/* 190 */ 597, 575, 21, 21, 548, 548, 599, 601, 646, 606,
/* 200 */ 605, 645, 609, 612, 575, 6, 548, 548, 530, 530,
/* 210 */ 548, 530, 548, 530, 548, 548, 872, 872, 30, 74,
/* 220 */ 104, 104, 104, 135, 193, 221, 270, 328, 328, 328,
/* 230 */ 328, 328, 328, 10, 113, 353, 353, 353, 353, 289,
/* 240 */ 295, 368, 68, 96, 96, 392, 397, 100, 405, 154,
/* 250 */ 415, 420, 474, 262, 427, 434, 479, 398, 424, 440,
/* 260 */ 444, 445, 447, 449, 443, 450, 451, 508, 529, 524,
/* 270 */ 462, 401, 404, 411, 553, 560, 534, 421, 422, 467,
/* 280 */ 425, 499, 578, 704, 551, 708, 709, 554, 712, 713,
/* 290 */ 615, 618, 576, 600, 610, 642, 602, 644, 647, 631,
/* 300 */ 633, 648, 637, 632, 643, 765, 766, 686, 687, 689,
/* 310 */ 690, 692, 693, 672, 695, 696, 698, 775, 699, 678,
/* 320 */ 649, 735, 785, 688, 651, 697, 705, 610, 706, 674,
/* 330 */ 710, 675, 715, 703, 711, 724, 794, 714, 716, 791,
/* 340 */ 797, 798, 799, 802, 803, 804, 805, 722, 796, 731,
/* 350 */ 806, 807, 728, 730, 732, 809, 811, 700, 736, 793,
/* 360 */ 761, 808, 671, 673, 726, 726, 726, 726, 707, 717,
/* 370 */ 812, 676, 679, 726, 726, 726, 825, 828, 748, 726,
/* 380 */ 831, 832, 833, 834, 835, 836, 838, 839, 840, 841,
/* 390 */ 842, 843, 844, 845, 846, 751, 764, 847, 837, 848,
/* 400 */ 849, 790, 855,
};
#define YY_REDUCE_COUNT (213)
#define YY_REDUCE_MIN (-275)
#define YY_REDUCE_MAX (552)
#define YY_REDUCE_COUNT (217)
#define YY_REDUCE_MIN (-276)
#define YY_REDUCE_MAX (558)
static const short yy_reduce_ofst[] = {
/* 0 */ -200, 52, 52, 166, 166, -214, -207, 127, 154, -208,
/* 10 */ -180, -83, -32, 75, 122, 199, 200, 202, 205, 220,
/* 20 */ 241, 243, -275, -221, -203, -187, -222, -163, -133, -40,
/* 30 */ 21, 57, 84, 92, 115, 140, 178, 182, 187, 189,
/* 40 */ 190, 195, 196, 198, 209, 211, 216, 218, -46, 111,
/* 50 */ 238, 53, 94, -23, -204, 151, -77, 262, 283, 285,
/* 60 */ 139, 292, -164, 225, 228, 297, 302, -44, 257, 17,
/* 70 */ 308, -99, -50, -13, -27, 20, 103, 130, 326, 337,
/* 80 */ 338, 339, 60, 340, 179, 206, 381, 384, 385, 316,
/* 90 */ 388, 389, 391, 342, 343, 394, 395, 396, 398, 307,
/* 100 */ 310, 319, 320, 346, 347, 402, 403, 404, 405, 406,
/* 110 */ 409, 410, 412, 413, 414, 415, 416, 417, 418, 419,
/* 120 */ 422, 423, 426, 427, 428, 429, 431, 432, 434, 435,
/* 130 */ 437, 438, 439, 440, 443, 444, 445, 447, 450, 453,
/* 140 */ 454, 456, 459, 460, 461, 462, 463, 464, 465, 466,
/* 150 */ 467, 469, 470, 472, 473, 474, 475, 476, 477, 478,
/* 160 */ 479, 480, 481, 482, 483, 336, 345, 349, 350, 484,
/* 170 */ 366, 355, 377, 393, 386, 485, 487, 486, 490, 494,
/* 180 */ 496, 491, 492, 495, 498, 500, 501, 502, 503, 506,
/* 190 */ 504, 505, 507, 511, 508, 514, 512, 516, 517, 519,
/* 200 */ 515, 520, 518, 524, 532, 534, 536, 539, 537, 541,
/* 210 */ 548, 551, 546, 552,
/* 0 */ -201, 49, 49, 189, 189, -215, -208, 178, 192, -209,
/* 10 */ -181, -84, -33, 2, 53, 157, 177, 196, 198, 201,
/* 20 */ 206, 237, -276, -222, -94, -205, -239, -238, -223, -164,
/* 30 */ -148, -134, -32, -31, 22, 35, 37, 63, 90, 101,
/* 40 */ 136, 186, 197, 199, 200, 203, 205, 212, -47, -20,
/* 50 */ 66, -250, 98, -155, 230, 244, 279, 285, 287, 291,
/* 60 */ 260, 208, 261, 124, 218, 288, 300, -210, 72, 299,
/* 70 */ 312, -176, -100, -28, 25, 89, 188, 314, 322, 326,
/* 80 */ 332, 336, 331, 337, 380, 381, 382, 383, 384, 385,
/* 90 */ 316, 387, 388, 390, 339, 341, 393, 394, 395, 396,
/* 100 */ 317, 318, 319, 320, 346, 342, 402, 403, 406, 407,
/* 110 */ 408, 409, 410, 412, 413, 414, 416, 417, 418, 419,
/* 120 */ 423, 426, 428, 429, 430, 431, 432, 433, 435, 436,
/* 130 */ 437, 438, 439, 441, 442, 446, 448, 452, 453, 454,
/* 140 */ 455, 456, 457, 458, 459, 460, 461, 463, 464, 465,
/* 150 */ 466, 468, 469, 470, 471, 472, 473, 475, 476, 477,
/* 160 */ 478, 480, 348, 482, 483, 485, 486, 487, 488, 347,
/* 170 */ 349, 350, 352, 489, 367, 378, 386, 490, 492, 400,
/* 180 */ 491, 493, 498, 494, 500, 495, 496, 501, 502, 503,
/* 190 */ 504, 506, 509, 510, 507, 511, 513, 516, 518, 517,
/* 200 */ 520, 519, 522, 526, 523, 525, 527, 528, 538, 540,
/* 210 */ 531, 543, 545, 546, 556, 558, 533, 555,
};
static const YYACTIONTYPE yy_default[] = {
/* 0 */ 945, 1068, 1007, 1078, 994, 1004, 1246, 1246, 1246, 1246,
/* 10 */ 945, 945, 945, 945, 945, 945, 945, 945, 945, 945,
/* 20 */ 945, 945, 945, 945, 1132, 965, 945, 945, 945, 945,
/* 30 */ 945, 945, 945, 945, 945, 945, 945, 945, 945, 945,
/* 40 */ 945, 945, 945, 945, 945, 945, 945, 945, 945, 945,
/* 50 */ 945, 945, 945, 1156, 945, 1004, 945, 945, 945, 945,
/* 60 */ 945, 1014, 1004, 945, 945, 1014, 1014, 945, 1127, 1052,
/* 70 */ 1070, 945, 945, 945, 945, 945, 945, 945, 945, 945,
/* 80 */ 945, 945, 1099, 945, 945, 945, 945, 945, 945, 1134,
/* 90 */ 1140, 1137, 945, 945, 945, 1142, 945, 945, 945, 1178,
/* 100 */ 1178, 1178, 1178, 1125, 945, 945, 945, 945, 945, 945,
/* 110 */ 945, 945, 945, 945, 945, 945, 945, 945, 945, 945,
/* 120 */ 945, 945, 945, 945, 945, 945, 945, 945, 945, 945,
/* 130 */ 945, 945, 945, 945, 945, 945, 945, 992, 945, 990,
/* 140 */ 945, 945, 945, 945, 945, 945, 945, 945, 945, 945,
/* 150 */ 945, 945, 945, 945, 945, 945, 945, 945, 945, 945,
/* 160 */ 963, 967, 967, 967, 967, 945, 945, 945, 945, 967,
/* 170 */ 1187, 1191, 1168, 1185, 1179, 1163, 1161, 1159, 1167, 1152,
/* 180 */ 1195, 1101, 967, 967, 967, 1012, 1012, 1008, 1004, 1004,
/* 190 */ 967, 967, 1030, 1028, 1026, 1018, 1024, 1020, 1022, 1016,
/* 200 */ 995, 945, 967, 967, 1002, 1002, 967, 1002, 967, 1002,
/* 210 */ 967, 967, 1052, 1070, 1245, 945, 1196, 1186, 1245, 945,
/* 220 */ 1228, 1227, 945, 1236, 1235, 1234, 1226, 1225, 1224, 945,
/* 230 */ 945, 1220, 1223, 1222, 1221, 945, 945, 1198, 945, 1230,
/* 240 */ 1229, 945, 945, 945, 945, 945, 945, 945, 1149, 945,
/* 250 */ 945, 945, 1174, 1192, 1188, 945, 945, 945, 945, 945,
/* 260 */ 945, 945, 945, 1199, 945, 945, 945, 945, 945, 945,
/* 270 */ 945, 945, 1113, 945, 945, 1080, 945, 945, 945, 945,
/* 280 */ 945, 945, 945, 945, 945, 945, 945, 945, 1124, 945,
/* 290 */ 945, 945, 945, 945, 1136, 1135, 945, 945, 945, 945,
/* 300 */ 945, 945, 945, 945, 945, 945, 945, 945, 945, 945,
/* 310 */ 945, 945, 945, 945, 1180, 945, 1175, 945, 1169, 945,
/* 320 */ 945, 945, 1092, 945, 945, 945, 945, 945, 945, 945,
/* 330 */ 945, 945, 945, 945, 945, 945, 945, 945, 945, 945,
/* 340 */ 945, 945, 945, 945, 945, 945, 945, 945, 945, 945,
/* 350 */ 945, 945, 945, 945, 945, 945, 945, 945, 945, 1264,
/* 360 */ 1259, 1260, 1257, 945, 945, 945, 945, 945, 1256, 1251,
/* 370 */ 1252, 945, 945, 945, 1249, 945, 945, 945, 945, 945,
/* 380 */ 945, 945, 945, 945, 945, 945, 945, 945, 945, 945,
/* 390 */ 1036, 945, 945, 974, 945, 972, 945, 945,
/* 0 */ 952, 1075, 1014, 1085, 1001, 1011, 1253, 1253, 1253, 1253,
/* 10 */ 952, 952, 952, 952, 952, 952, 952, 952, 952, 952,
/* 20 */ 952, 952, 952, 952, 1139, 972, 952, 952, 952, 952,
/* 30 */ 952, 952, 952, 952, 952, 952, 952, 952, 952, 952,
/* 40 */ 952, 952, 952, 952, 952, 952, 952, 952, 952, 952,
/* 50 */ 952, 952, 952, 1163, 952, 1011, 952, 952, 952, 952,
/* 60 */ 952, 1021, 1011, 952, 952, 1021, 1021, 952, 1134, 1059,
/* 70 */ 1077, 952, 952, 952, 952, 952, 952, 952, 952, 952,
/* 80 */ 952, 952, 1106, 952, 952, 952, 952, 952, 952, 952,
/* 90 */ 1141, 1147, 1144, 952, 952, 952, 1149, 952, 952, 952,
/* 100 */ 1185, 1185, 1185, 1185, 1132, 952, 952, 952, 952, 952,
/* 110 */ 952, 952, 952, 952, 952, 952, 952, 952, 952, 952,
/* 120 */ 952, 952, 952, 952, 952, 952, 952, 952, 952, 952,
/* 130 */ 952, 952, 952, 952, 952, 952, 952, 952, 999, 952,
/* 140 */ 997, 952, 952, 952, 952, 952, 952, 952, 952, 952,
/* 150 */ 952, 952, 952, 952, 952, 952, 952, 952, 952, 952,
/* 160 */ 952, 970, 1202, 974, 1009, 974, 974, 974, 974, 952,
/* 170 */ 952, 952, 952, 974, 1194, 1198, 1175, 1192, 1186, 1170,
/* 180 */ 1168, 1166, 1174, 1159, 1202, 1108, 974, 974, 974, 1019,
/* 190 */ 1019, 1015, 1011, 1011, 974, 974, 1037, 1035, 1033, 1025,
/* 200 */ 1031, 1027, 1029, 1023, 1002, 952, 974, 974, 1009, 1009,
/* 210 */ 974, 1009, 974, 1009, 974, 974, 1059, 1077, 1252, 952,
/* 220 */ 1203, 1193, 1252, 952, 1235, 1234, 952, 1243, 1242, 1241,
/* 230 */ 1233, 1232, 1231, 952, 952, 1227, 1230, 1229, 1228, 952,
/* 240 */ 952, 1205, 952, 1237, 1236, 952, 952, 952, 952, 952,
/* 250 */ 952, 952, 1156, 952, 952, 952, 1181, 1199, 1195, 952,
/* 260 */ 952, 952, 952, 952, 952, 952, 952, 1206, 952, 952,
/* 270 */ 952, 952, 952, 952, 952, 952, 1120, 952, 952, 1087,
/* 280 */ 952, 952, 952, 952, 952, 952, 952, 952, 952, 952,
/* 290 */ 952, 952, 952, 1131, 952, 952, 952, 952, 952, 1143,
/* 300 */ 1142, 952, 952, 952, 952, 952, 952, 952, 952, 952,
/* 310 */ 952, 952, 952, 952, 952, 952, 952, 952, 952, 1187,
/* 320 */ 952, 1182, 952, 1176, 952, 952, 952, 1099, 952, 952,
/* 330 */ 952, 952, 952, 952, 952, 952, 952, 952, 952, 952,
/* 340 */ 952, 952, 952, 952, 952, 952, 952, 952, 952, 952,
/* 350 */ 952, 952, 952, 952, 952, 952, 952, 952, 952, 952,
/* 360 */ 952, 952, 952, 952, 1271, 1266, 1267, 1264, 952, 952,
/* 370 */ 952, 952, 952, 1263, 1258, 1259, 952, 952, 952, 1256,
/* 380 */ 952, 952, 952, 952, 952, 952, 952, 952, 952, 952,
/* 390 */ 952, 952, 952, 952, 952, 1043, 952, 952, 981, 952,
/* 400 */ 979, 952, 952,
};
/********** End of lemon-generated parsing tables *****************************/
......@@ -710,6 +713,7 @@ static const YYCODETYPE yyFallback[] = {
0, /* CONNECTION => nothing */
0, /* STREAM => nothing */
0, /* COLON => nothing */
0, /* DELETE => nothing */
1, /* ABORT => ID */
1, /* AFTER => ID */
1, /* ATTACH => ID */
......@@ -1001,134 +1005,135 @@ static const char *const yyTokenName[] = {
/* 159 */ "CONNECTION",
/* 160 */ "STREAM",
/* 161 */ "COLON",
/* 162 */ "ABORT",
/* 163 */ "AFTER",
/* 164 */ "ATTACH",
/* 165 */ "BEFORE",
/* 166 */ "BEGIN",
/* 167 */ "CASCADE",
/* 168 */ "CLUSTER",
/* 169 */ "CONFLICT",
/* 170 */ "COPY",
/* 171 */ "DEFERRED",
/* 172 */ "DELIMITERS",
/* 173 */ "DETACH",
/* 174 */ "EACH",
/* 175 */ "END",
/* 176 */ "EXPLAIN",
/* 177 */ "FAIL",
/* 178 */ "FOR",
/* 179 */ "IGNORE",
/* 180 */ "IMMEDIATE",
/* 181 */ "INITIALLY",
/* 182 */ "INSTEAD",
/* 183 */ "KEY",
/* 184 */ "OF",
/* 185 */ "RAISE",
/* 186 */ "REPLACE",
/* 187 */ "RESTRICT",
/* 188 */ "ROW",
/* 189 */ "STATEMENT",
/* 190 */ "TRIGGER",
/* 191 */ "VIEW",
/* 192 */ "IPTOKEN",
/* 193 */ "SEMI",
/* 194 */ "NONE",
/* 195 */ "PREV",
/* 196 */ "LINEAR",
/* 197 */ "IMPORT",
/* 198 */ "TBNAME",
/* 199 */ "JOIN",
/* 200 */ "INSERT",
/* 201 */ "INTO",
/* 202 */ "VALUES",
/* 203 */ "FILE",
/* 204 */ "program",
/* 205 */ "cmd",
/* 206 */ "ids",
/* 207 */ "dbPrefix",
/* 208 */ "cpxName",
/* 209 */ "ifexists",
/* 210 */ "alter_db_optr",
/* 211 */ "alter_topic_optr",
/* 212 */ "acct_optr",
/* 213 */ "exprlist",
/* 214 */ "ifnotexists",
/* 215 */ "db_optr",
/* 216 */ "topic_optr",
/* 217 */ "typename",
/* 218 */ "bufsize",
/* 219 */ "pps",
/* 220 */ "tseries",
/* 221 */ "dbs",
/* 222 */ "streams",
/* 223 */ "storage",
/* 224 */ "qtime",
/* 225 */ "users",
/* 226 */ "conns",
/* 227 */ "state",
/* 228 */ "intitemlist",
/* 229 */ "intitem",
/* 230 */ "keep",
/* 231 */ "cache",
/* 232 */ "replica",
/* 233 */ "quorum",
/* 234 */ "days",
/* 235 */ "minrows",
/* 236 */ "maxrows",
/* 237 */ "blocks",
/* 238 */ "ctime",
/* 239 */ "wal",
/* 240 */ "fsync",
/* 241 */ "comp",
/* 242 */ "prec",
/* 243 */ "update",
/* 244 */ "cachelast",
/* 245 */ "partitions",
/* 246 */ "signed",
/* 247 */ "create_table_args",
/* 248 */ "create_stable_args",
/* 249 */ "create_table_list",
/* 250 */ "create_from_stable",
/* 251 */ "columnlist",
/* 252 */ "tagitemlist",
/* 253 */ "tagNamelist",
/* 254 */ "to_opt",
/* 255 */ "split_opt",
/* 256 */ "select",
/* 257 */ "to_split",
/* 258 */ "column",
/* 259 */ "tagitem",
/* 260 */ "selcollist",
/* 261 */ "from",
/* 262 */ "where_opt",
/* 263 */ "range_option",
/* 264 */ "interval_option",
/* 265 */ "sliding_opt",
/* 266 */ "session_option",
/* 267 */ "windowstate_option",
/* 268 */ "fill_opt",
/* 269 */ "groupby_opt",
/* 270 */ "having_opt",
/* 271 */ "orderby_opt",
/* 272 */ "slimit_opt",
/* 273 */ "limit_opt",
/* 274 */ "union",
/* 275 */ "sclp",
/* 276 */ "distinct",
/* 277 */ "expr",
/* 278 */ "as",
/* 279 */ "tablelist",
/* 280 */ "sub",
/* 281 */ "tmvar",
/* 282 */ "timestamp",
/* 283 */ "intervalKey",
/* 284 */ "sortlist",
/* 285 */ "item",
/* 286 */ "sortorder",
/* 287 */ "arrow",
/* 288 */ "grouplist",
/* 289 */ "expritem",
/* 162 */ "DELETE",
/* 163 */ "ABORT",
/* 164 */ "AFTER",
/* 165 */ "ATTACH",
/* 166 */ "BEFORE",
/* 167 */ "BEGIN",
/* 168 */ "CASCADE",
/* 169 */ "CLUSTER",
/* 170 */ "CONFLICT",
/* 171 */ "COPY",
/* 172 */ "DEFERRED",
/* 173 */ "DELIMITERS",
/* 174 */ "DETACH",
/* 175 */ "EACH",
/* 176 */ "END",
/* 177 */ "EXPLAIN",
/* 178 */ "FAIL",
/* 179 */ "FOR",
/* 180 */ "IGNORE",
/* 181 */ "IMMEDIATE",
/* 182 */ "INITIALLY",
/* 183 */ "INSTEAD",
/* 184 */ "KEY",
/* 185 */ "OF",
/* 186 */ "RAISE",
/* 187 */ "REPLACE",
/* 188 */ "RESTRICT",
/* 189 */ "ROW",
/* 190 */ "STATEMENT",
/* 191 */ "TRIGGER",
/* 192 */ "VIEW",
/* 193 */ "IPTOKEN",
/* 194 */ "SEMI",
/* 195 */ "NONE",
/* 196 */ "PREV",
/* 197 */ "LINEAR",
/* 198 */ "IMPORT",
/* 199 */ "TBNAME",
/* 200 */ "JOIN",
/* 201 */ "INSERT",
/* 202 */ "INTO",
/* 203 */ "VALUES",
/* 204 */ "FILE",
/* 205 */ "program",
/* 206 */ "cmd",
/* 207 */ "ids",
/* 208 */ "dbPrefix",
/* 209 */ "cpxName",
/* 210 */ "ifexists",
/* 211 */ "alter_db_optr",
/* 212 */ "alter_topic_optr",
/* 213 */ "acct_optr",
/* 214 */ "exprlist",
/* 215 */ "ifnotexists",
/* 216 */ "db_optr",
/* 217 */ "topic_optr",
/* 218 */ "typename",
/* 219 */ "bufsize",
/* 220 */ "pps",
/* 221 */ "tseries",
/* 222 */ "dbs",
/* 223 */ "streams",
/* 224 */ "storage",
/* 225 */ "qtime",
/* 226 */ "users",
/* 227 */ "conns",
/* 228 */ "state",
/* 229 */ "intitemlist",
/* 230 */ "intitem",
/* 231 */ "keep",
/* 232 */ "cache",
/* 233 */ "replica",
/* 234 */ "quorum",
/* 235 */ "days",
/* 236 */ "minrows",
/* 237 */ "maxrows",
/* 238 */ "blocks",
/* 239 */ "ctime",
/* 240 */ "wal",
/* 241 */ "fsync",
/* 242 */ "comp",
/* 243 */ "prec",
/* 244 */ "update",
/* 245 */ "cachelast",
/* 246 */ "partitions",
/* 247 */ "signed",
/* 248 */ "create_table_args",
/* 249 */ "create_stable_args",
/* 250 */ "create_table_list",
/* 251 */ "create_from_stable",
/* 252 */ "columnlist",
/* 253 */ "tagitemlist",
/* 254 */ "tagNamelist",
/* 255 */ "to_opt",
/* 256 */ "split_opt",
/* 257 */ "select",
/* 258 */ "to_split",
/* 259 */ "column",
/* 260 */ "tagitem",
/* 261 */ "selcollist",
/* 262 */ "from",
/* 263 */ "where_opt",
/* 264 */ "range_option",
/* 265 */ "interval_option",
/* 266 */ "sliding_opt",
/* 267 */ "session_option",
/* 268 */ "windowstate_option",
/* 269 */ "fill_opt",
/* 270 */ "groupby_opt",
/* 271 */ "having_opt",
/* 272 */ "orderby_opt",
/* 273 */ "slimit_opt",
/* 274 */ "limit_opt",
/* 275 */ "union",
/* 276 */ "sclp",
/* 277 */ "distinct",
/* 278 */ "expr",
/* 279 */ "as",
/* 280 */ "tablelist",
/* 281 */ "sub",
/* 282 */ "tmvar",
/* 283 */ "timestamp",
/* 284 */ "intervalKey",
/* 285 */ "sortlist",
/* 286 */ "item",
/* 287 */ "sortorder",
/* 288 */ "arrow",
/* 289 */ "grouplist",
/* 290 */ "expritem",
};
#endif /* defined(YYCOVERAGE) || !defined(NDEBUG) */
......@@ -1456,6 +1461,7 @@ static const char *const yyRuleName[] = {
/* 317 */ "cmd ::= KILL CONNECTION INTEGER",
/* 318 */ "cmd ::= KILL STREAM INTEGER COLON INTEGER",
/* 319 */ "cmd ::= KILL QUERY INTEGER COLON INTEGER",
/* 320 */ "cmd ::= DELETE FROM ifexists ids cpxName where_opt",
};
#endif /* NDEBUG */
......@@ -1581,57 +1587,57 @@ static void yy_destructor(
** inside the C code.
*/
/********* Begin destructor definitions ***************************************/
case 213: /* exprlist */
case 260: /* selcollist */
case 275: /* sclp */
case 214: /* exprlist */
case 261: /* selcollist */
case 276: /* sclp */
{
tSqlExprListDestroy((yypminor->yy161));
tSqlExprListDestroy((yypminor->yy525));
}
break;
case 228: /* intitemlist */
case 230: /* keep */
case 251: /* columnlist */
case 252: /* tagitemlist */
case 253: /* tagNamelist */
case 268: /* fill_opt */
case 269: /* groupby_opt */
case 271: /* orderby_opt */
case 284: /* sortlist */
case 288: /* grouplist */
case 229: /* intitemlist */
case 231: /* keep */
case 252: /* columnlist */
case 253: /* tagitemlist */
case 254: /* tagNamelist */
case 269: /* fill_opt */
case 270: /* groupby_opt */
case 272: /* orderby_opt */
case 285: /* sortlist */
case 289: /* grouplist */
{
taosArrayDestroy(&(yypminor->yy161));
taosArrayDestroy(&(yypminor->yy525));
}
break;
case 249: /* create_table_list */
case 250: /* create_table_list */
{
destroyCreateTableSql((yypminor->yy462));
destroyCreateTableSql((yypminor->yy572));
}
break;
case 256: /* select */
case 257: /* select */
{
destroySqlNode((yypminor->yy276));
destroySqlNode((yypminor->yy86));
}
break;
case 261: /* from */
case 279: /* tablelist */
case 280: /* sub */
case 262: /* from */
case 280: /* tablelist */
case 281: /* sub */
{
destroyRelationInfo((yypminor->yy84));
destroyRelationInfo((yypminor->yy328));
}
break;
case 262: /* where_opt */
case 270: /* having_opt */
case 277: /* expr */
case 282: /* timestamp */
case 287: /* arrow */
case 289: /* expritem */
case 263: /* where_opt */
case 271: /* having_opt */
case 278: /* expr */
case 283: /* timestamp */
case 288: /* arrow */
case 290: /* expritem */
{
tSqlExprDestroy((yypminor->yy546));
tSqlExprDestroy((yypminor->yy142));
}
break;
case 274: /* union */
case 275: /* union */
{
destroyAllSqlNode((yypminor->yy161));
destroyAllSqlNode((yypminor->yy525));
}
break;
/********* End destructor definitions *****************************************/
......@@ -1757,18 +1763,15 @@ static YYACTIONTYPE yy_find_shift_action(
do{
i = yy_shift_ofst[stateno];
assert( i>=0 );
assert( i<=YY_ACTTAB_COUNT );
assert( i+YYNTOKEN<=(int)YY_NLOOKAHEAD );
/* assert( i+YYNTOKEN<=(int)YY_NLOOKAHEAD ); */
assert( iLookAhead!=YYNOCODE );
assert( iLookAhead < YYNTOKEN );
i += iLookAhead;
assert( i<(int)YY_NLOOKAHEAD );
if( yy_lookahead[i]!=iLookAhead ){
if( i>=YY_NLOOKAHEAD || yy_lookahead[i]!=iLookAhead ){
#ifdef YYFALLBACK
YYCODETYPE iFallback; /* Fallback token */
assert( iLookAhead<sizeof(yyFallback)/sizeof(yyFallback[0]) );
iFallback = yyFallback[iLookAhead];
if( iFallback!=0 ){
if( iLookAhead<sizeof(yyFallback)/sizeof(yyFallback[0])
&& (iFallback = yyFallback[iLookAhead])!=0 ){
#ifndef NDEBUG
if( yyTraceFILE ){
fprintf(yyTraceFILE, "%sFALLBACK %s => %s\n",
......@@ -1783,8 +1786,16 @@ static YYACTIONTYPE yy_find_shift_action(
#ifdef YYWILDCARD
{
int j = i - iLookAhead + YYWILDCARD;
assert( j<(int)(sizeof(yy_lookahead)/sizeof(yy_lookahead[0])) );
if( yy_lookahead[j]==YYWILDCARD && iLookAhead>0 ){
if(
#if YY_SHIFT_MIN+YYWILDCARD<0
j>=0 &&
#endif
#if YY_SHIFT_MAX+YYWILDCARD>=YY_ACTTAB_COUNT
j<YY_ACTTAB_COUNT &&
#endif
j<(int)(sizeof(yy_lookahead)/sizeof(yy_lookahead[0])) &&
yy_lookahead[j]==YYWILDCARD && iLookAhead>0
){
#ifndef NDEBUG
if( yyTraceFILE ){
fprintf(yyTraceFILE, "%sWILDCARD %s => %s\n",
......@@ -1798,7 +1809,6 @@ static YYACTIONTYPE yy_find_shift_action(
#endif /* YYWILDCARD */
return yy_default[stateno];
}else{
assert( i>=0 && i<sizeof(yy_action)/sizeof(yy_action[0]) );
return yy_action[i];
}
}while(1);
......@@ -1917,654 +1927,334 @@ static void yy_shift(
yyTraceShift(yypParser, yyNewState, "Shift");
}
/* For rule J, yyRuleInfoLhs[J] contains the symbol on the left-hand side
** of that rule */
static const YYCODETYPE yyRuleInfoLhs[] = {
204, /* (0) program ::= cmd */
205, /* (1) cmd ::= SHOW DATABASES */
205, /* (2) cmd ::= SHOW TOPICS */
205, /* (3) cmd ::= SHOW FUNCTIONS */
205, /* (4) cmd ::= SHOW MNODES */
205, /* (5) cmd ::= SHOW DNODES */
205, /* (6) cmd ::= SHOW ACCOUNTS */
205, /* (7) cmd ::= SHOW USERS */
205, /* (8) cmd ::= SHOW MODULES */
205, /* (9) cmd ::= SHOW QUERIES */
205, /* (10) cmd ::= SHOW CONNECTIONS */
205, /* (11) cmd ::= SHOW STREAMS */
205, /* (12) cmd ::= SHOW VARIABLES */
205, /* (13) cmd ::= SHOW SCORES */
205, /* (14) cmd ::= SHOW GRANTS */
205, /* (15) cmd ::= SHOW VNODES */
205, /* (16) cmd ::= SHOW VNODES ids */
207, /* (17) dbPrefix ::= */
207, /* (18) dbPrefix ::= ids DOT */
208, /* (19) cpxName ::= */
208, /* (20) cpxName ::= DOT ids */
205, /* (21) cmd ::= SHOW CREATE TABLE ids cpxName */
205, /* (22) cmd ::= SHOW CREATE STABLE ids cpxName */
205, /* (23) cmd ::= SHOW CREATE DATABASE ids */
205, /* (24) cmd ::= SHOW dbPrefix TABLES */
205, /* (25) cmd ::= SHOW dbPrefix TABLES LIKE STRING */
205, /* (26) cmd ::= SHOW dbPrefix STABLES */
205, /* (27) cmd ::= SHOW dbPrefix STABLES LIKE STRING */
205, /* (28) cmd ::= SHOW dbPrefix VGROUPS */
205, /* (29) cmd ::= DROP TABLE ifexists ids cpxName */
205, /* (30) cmd ::= DROP STABLE ifexists ids cpxName */
205, /* (31) cmd ::= DROP DATABASE ifexists ids */
205, /* (32) cmd ::= DROP TOPIC ifexists ids */
205, /* (33) cmd ::= DROP FUNCTION ids */
205, /* (34) cmd ::= DROP DNODE ids */
205, /* (35) cmd ::= DROP USER ids */
205, /* (36) cmd ::= DROP ACCOUNT ids */
205, /* (37) cmd ::= USE ids */
205, /* (38) cmd ::= DESCRIBE ids cpxName */
205, /* (39) cmd ::= DESC ids cpxName */
205, /* (40) cmd ::= ALTER USER ids PASS ids */
205, /* (41) cmd ::= ALTER USER ids PRIVILEGE ids */
205, /* (42) cmd ::= ALTER DNODE ids ids */
205, /* (43) cmd ::= ALTER DNODE ids ids ids */
205, /* (44) cmd ::= ALTER LOCAL ids */
205, /* (45) cmd ::= ALTER LOCAL ids ids */
205, /* (46) cmd ::= ALTER DATABASE ids alter_db_optr */
205, /* (47) cmd ::= ALTER TOPIC ids alter_topic_optr */
205, /* (48) cmd ::= ALTER ACCOUNT ids acct_optr */
205, /* (49) cmd ::= ALTER ACCOUNT ids PASS ids acct_optr */
205, /* (50) cmd ::= COMPACT VNODES IN LP exprlist RP */
206, /* (51) ids ::= ID */
206, /* (52) ids ::= STRING */
209, /* (53) ifexists ::= IF EXISTS */
209, /* (54) ifexists ::= */
214, /* (55) ifnotexists ::= IF NOT EXISTS */
214, /* (56) ifnotexists ::= */
205, /* (57) cmd ::= CREATE DNODE ids */
205, /* (58) cmd ::= CREATE ACCOUNT ids PASS ids acct_optr */
205, /* (59) cmd ::= CREATE DATABASE ifnotexists ids db_optr */
205, /* (60) cmd ::= CREATE TOPIC ifnotexists ids topic_optr */
205, /* (61) cmd ::= CREATE FUNCTION ids AS ids OUTPUTTYPE typename bufsize */
205, /* (62) cmd ::= CREATE AGGREGATE FUNCTION ids AS ids OUTPUTTYPE typename bufsize */
205, /* (63) cmd ::= CREATE USER ids PASS ids */
218, /* (64) bufsize ::= */
218, /* (65) bufsize ::= BUFSIZE INTEGER */
219, /* (66) pps ::= */
219, /* (67) pps ::= PPS INTEGER */
220, /* (68) tseries ::= */
220, /* (69) tseries ::= TSERIES INTEGER */
221, /* (70) dbs ::= */
221, /* (71) dbs ::= DBS INTEGER */
222, /* (72) streams ::= */
222, /* (73) streams ::= STREAMS INTEGER */
223, /* (74) storage ::= */
223, /* (75) storage ::= STORAGE INTEGER */
224, /* (76) qtime ::= */
224, /* (77) qtime ::= QTIME INTEGER */
225, /* (78) users ::= */
225, /* (79) users ::= USERS INTEGER */
226, /* (80) conns ::= */
226, /* (81) conns ::= CONNS INTEGER */
227, /* (82) state ::= */
227, /* (83) state ::= STATE ids */
212, /* (84) acct_optr ::= pps tseries storage streams qtime dbs users conns state */
228, /* (85) intitemlist ::= intitemlist COMMA intitem */
228, /* (86) intitemlist ::= intitem */
229, /* (87) intitem ::= INTEGER */
230, /* (88) keep ::= KEEP intitemlist */
231, /* (89) cache ::= CACHE INTEGER */
232, /* (90) replica ::= REPLICA INTEGER */
233, /* (91) quorum ::= QUORUM INTEGER */
234, /* (92) days ::= DAYS INTEGER */
235, /* (93) minrows ::= MINROWS INTEGER */
236, /* (94) maxrows ::= MAXROWS INTEGER */
237, /* (95) blocks ::= BLOCKS INTEGER */
238, /* (96) ctime ::= CTIME INTEGER */
239, /* (97) wal ::= WAL INTEGER */
240, /* (98) fsync ::= FSYNC INTEGER */
241, /* (99) comp ::= COMP INTEGER */
242, /* (100) prec ::= PRECISION STRING */
243, /* (101) update ::= UPDATE INTEGER */
244, /* (102) cachelast ::= CACHELAST INTEGER */
245, /* (103) partitions ::= PARTITIONS INTEGER */
215, /* (104) db_optr ::= */
215, /* (105) db_optr ::= db_optr cache */
215, /* (106) db_optr ::= db_optr replica */
215, /* (107) db_optr ::= db_optr quorum */
215, /* (108) db_optr ::= db_optr days */
215, /* (109) db_optr ::= db_optr minrows */
215, /* (110) db_optr ::= db_optr maxrows */
215, /* (111) db_optr ::= db_optr blocks */
215, /* (112) db_optr ::= db_optr ctime */
215, /* (113) db_optr ::= db_optr wal */
215, /* (114) db_optr ::= db_optr fsync */
215, /* (115) db_optr ::= db_optr comp */
215, /* (116) db_optr ::= db_optr prec */
215, /* (117) db_optr ::= db_optr keep */
215, /* (118) db_optr ::= db_optr update */
215, /* (119) db_optr ::= db_optr cachelast */
216, /* (120) topic_optr ::= db_optr */
216, /* (121) topic_optr ::= topic_optr partitions */
210, /* (122) alter_db_optr ::= */
210, /* (123) alter_db_optr ::= alter_db_optr replica */
210, /* (124) alter_db_optr ::= alter_db_optr quorum */
210, /* (125) alter_db_optr ::= alter_db_optr keep */
210, /* (126) alter_db_optr ::= alter_db_optr blocks */
210, /* (127) alter_db_optr ::= alter_db_optr comp */
210, /* (128) alter_db_optr ::= alter_db_optr update */
210, /* (129) alter_db_optr ::= alter_db_optr cachelast */
211, /* (130) alter_topic_optr ::= alter_db_optr */
211, /* (131) alter_topic_optr ::= alter_topic_optr partitions */
217, /* (132) typename ::= ids */
217, /* (133) typename ::= ids LP signed RP */
217, /* (134) typename ::= ids UNSIGNED */
246, /* (135) signed ::= INTEGER */
246, /* (136) signed ::= PLUS INTEGER */
246, /* (137) signed ::= MINUS INTEGER */
205, /* (138) cmd ::= CREATE TABLE create_table_args */
205, /* (139) cmd ::= CREATE TABLE create_stable_args */
205, /* (140) cmd ::= CREATE STABLE create_stable_args */
205, /* (141) cmd ::= CREATE TABLE create_table_list */
249, /* (142) create_table_list ::= create_from_stable */
249, /* (143) create_table_list ::= create_table_list create_from_stable */
247, /* (144) create_table_args ::= ifnotexists ids cpxName LP columnlist RP */
248, /* (145) create_stable_args ::= ifnotexists ids cpxName LP columnlist RP TAGS LP columnlist RP */
250, /* (146) create_from_stable ::= ifnotexists ids cpxName USING ids cpxName TAGS LP tagitemlist RP */
250, /* (147) create_from_stable ::= ifnotexists ids cpxName USING ids cpxName LP tagNamelist RP TAGS LP tagitemlist RP */
253, /* (148) tagNamelist ::= tagNamelist COMMA ids */
253, /* (149) tagNamelist ::= ids */
247, /* (150) create_table_args ::= ifnotexists ids cpxName to_opt split_opt AS select */
254, /* (151) to_opt ::= */
254, /* (152) to_opt ::= TO ids cpxName */
255, /* (153) split_opt ::= */
255, /* (154) split_opt ::= SPLIT ids */
251, /* (155) columnlist ::= columnlist COMMA column */
251, /* (156) columnlist ::= column */
258, /* (157) column ::= ids typename */
252, /* (158) tagitemlist ::= tagitemlist COMMA tagitem */
252, /* (159) tagitemlist ::= tagitem */
259, /* (160) tagitem ::= INTEGER */
259, /* (161) tagitem ::= FLOAT */
259, /* (162) tagitem ::= STRING */
259, /* (163) tagitem ::= BOOL */
259, /* (164) tagitem ::= NULL */
259, /* (165) tagitem ::= NOW */
259, /* (166) tagitem ::= NOW PLUS VARIABLE */
259, /* (167) tagitem ::= NOW MINUS VARIABLE */
259, /* (168) tagitem ::= MINUS INTEGER */
259, /* (169) tagitem ::= MINUS FLOAT */
259, /* (170) tagitem ::= PLUS INTEGER */
259, /* (171) tagitem ::= PLUS FLOAT */
256, /* (172) select ::= SELECT selcollist from where_opt range_option interval_option sliding_opt session_option windowstate_option fill_opt groupby_opt having_opt orderby_opt slimit_opt limit_opt */
256, /* (173) select ::= LP select RP */
274, /* (174) union ::= select */
274, /* (175) union ::= union UNION ALL select */
205, /* (176) cmd ::= union */
256, /* (177) select ::= SELECT selcollist */
275, /* (178) sclp ::= selcollist COMMA */
275, /* (179) sclp ::= */
260, /* (180) selcollist ::= sclp distinct expr as */
260, /* (181) selcollist ::= sclp STAR */
278, /* (182) as ::= AS ids */
278, /* (183) as ::= ids */
278, /* (184) as ::= */
276, /* (185) distinct ::= DISTINCT */
276, /* (186) distinct ::= */
261, /* (187) from ::= FROM tablelist */
261, /* (188) from ::= FROM sub */
280, /* (189) sub ::= LP union RP */
280, /* (190) sub ::= LP union RP ids */
280, /* (191) sub ::= sub COMMA LP union RP ids */
279, /* (192) tablelist ::= ids cpxName */
279, /* (193) tablelist ::= ids cpxName ids */
279, /* (194) tablelist ::= tablelist COMMA ids cpxName */
279, /* (195) tablelist ::= tablelist COMMA ids cpxName ids */
281, /* (196) tmvar ::= VARIABLE */
282, /* (197) timestamp ::= INTEGER */
282, /* (198) timestamp ::= MINUS INTEGER */
282, /* (199) timestamp ::= PLUS INTEGER */
282, /* (200) timestamp ::= STRING */
282, /* (201) timestamp ::= NOW */
282, /* (202) timestamp ::= NOW PLUS VARIABLE */
282, /* (203) timestamp ::= NOW MINUS VARIABLE */
263, /* (204) range_option ::= */
263, /* (205) range_option ::= RANGE LP timestamp COMMA timestamp RP */
264, /* (206) interval_option ::= intervalKey LP tmvar RP */
264, /* (207) interval_option ::= intervalKey LP tmvar COMMA tmvar RP */
264, /* (208) interval_option ::= */
283, /* (209) intervalKey ::= INTERVAL */
283, /* (210) intervalKey ::= EVERY */
266, /* (211) session_option ::= */
266, /* (212) session_option ::= SESSION LP ids cpxName COMMA tmvar RP */
267, /* (213) windowstate_option ::= */
267, /* (214) windowstate_option ::= STATE_WINDOW LP ids RP */
268, /* (215) fill_opt ::= */
268, /* (216) fill_opt ::= FILL LP ID COMMA tagitemlist RP */
268, /* (217) fill_opt ::= FILL LP ID RP */
265, /* (218) sliding_opt ::= SLIDING LP tmvar RP */
265, /* (219) sliding_opt ::= */
271, /* (220) orderby_opt ::= */
271, /* (221) orderby_opt ::= ORDER BY sortlist */
284, /* (222) sortlist ::= sortlist COMMA item sortorder */
284, /* (223) sortlist ::= sortlist COMMA arrow sortorder */
284, /* (224) sortlist ::= item sortorder */
284, /* (225) sortlist ::= arrow sortorder */
285, /* (226) item ::= ID */
285, /* (227) item ::= ID DOT ID */
286, /* (228) sortorder ::= ASC */
286, /* (229) sortorder ::= DESC */
286, /* (230) sortorder ::= */
269, /* (231) groupby_opt ::= */
269, /* (232) groupby_opt ::= GROUP BY grouplist */
288, /* (233) grouplist ::= grouplist COMMA item */
288, /* (234) grouplist ::= grouplist COMMA arrow */
288, /* (235) grouplist ::= item */
288, /* (236) grouplist ::= arrow */
270, /* (237) having_opt ::= */
270, /* (238) having_opt ::= HAVING expr */
273, /* (239) limit_opt ::= */
273, /* (240) limit_opt ::= LIMIT signed */
273, /* (241) limit_opt ::= LIMIT signed OFFSET signed */
273, /* (242) limit_opt ::= LIMIT signed COMMA signed */
272, /* (243) slimit_opt ::= */
272, /* (244) slimit_opt ::= SLIMIT signed */
272, /* (245) slimit_opt ::= SLIMIT signed SOFFSET signed */
272, /* (246) slimit_opt ::= SLIMIT signed COMMA signed */
262, /* (247) where_opt ::= */
262, /* (248) where_opt ::= WHERE expr */
277, /* (249) expr ::= LP expr RP */
277, /* (250) expr ::= ID */
277, /* (251) expr ::= ID DOT ID */
277, /* (252) expr ::= ID DOT STAR */
277, /* (253) expr ::= INTEGER */
277, /* (254) expr ::= MINUS INTEGER */
277, /* (255) expr ::= PLUS INTEGER */
277, /* (256) expr ::= FLOAT */
277, /* (257) expr ::= MINUS FLOAT */
277, /* (258) expr ::= PLUS FLOAT */
277, /* (259) expr ::= STRING */
277, /* (260) expr ::= NOW */
277, /* (261) expr ::= TODAY */
277, /* (262) expr ::= VARIABLE */
277, /* (263) expr ::= PLUS VARIABLE */
277, /* (264) expr ::= MINUS VARIABLE */
277, /* (265) expr ::= BOOL */
277, /* (266) expr ::= NULL */
277, /* (267) expr ::= ID LP exprlist RP */
277, /* (268) expr ::= ID LP STAR RP */
277, /* (269) expr ::= ID LP expr AS typename RP */
277, /* (270) expr ::= expr IS NULL */
277, /* (271) expr ::= expr IS NOT NULL */
277, /* (272) expr ::= expr LT expr */
277, /* (273) expr ::= expr GT expr */
277, /* (274) expr ::= expr LE expr */
277, /* (275) expr ::= expr GE expr */
277, /* (276) expr ::= expr NE expr */
277, /* (277) expr ::= expr EQ expr */
277, /* (278) expr ::= expr BETWEEN expr AND expr */
277, /* (279) expr ::= expr AND expr */
277, /* (280) expr ::= expr OR expr */
277, /* (281) expr ::= expr PLUS expr */
277, /* (282) expr ::= expr MINUS expr */
277, /* (283) expr ::= expr STAR expr */
277, /* (284) expr ::= expr SLASH expr */
277, /* (285) expr ::= expr REM expr */
277, /* (286) expr ::= expr LIKE expr */
277, /* (287) expr ::= expr MATCH expr */
277, /* (288) expr ::= expr NMATCH expr */
277, /* (289) expr ::= ID CONTAINS STRING */
277, /* (290) expr ::= ID DOT ID CONTAINS STRING */
287, /* (291) arrow ::= ID ARROW STRING */
287, /* (292) arrow ::= ID DOT ID ARROW STRING */
277, /* (293) expr ::= arrow */
277, /* (294) expr ::= expr IN LP exprlist RP */
213, /* (295) exprlist ::= exprlist COMMA expritem */
213, /* (296) exprlist ::= expritem */
289, /* (297) expritem ::= expr */
289, /* (298) expritem ::= */
205, /* (299) cmd ::= RESET QUERY CACHE */
205, /* (300) cmd ::= SYNCDB ids REPLICA */
205, /* (301) cmd ::= ALTER TABLE ids cpxName ADD COLUMN columnlist */
205, /* (302) cmd ::= ALTER TABLE ids cpxName DROP COLUMN ids */
205, /* (303) cmd ::= ALTER TABLE ids cpxName MODIFY COLUMN columnlist */
205, /* (304) cmd ::= ALTER TABLE ids cpxName ADD TAG columnlist */
205, /* (305) cmd ::= ALTER TABLE ids cpxName DROP TAG ids */
205, /* (306) cmd ::= ALTER TABLE ids cpxName CHANGE TAG ids ids */
205, /* (307) cmd ::= ALTER TABLE ids cpxName SET TAG ids EQ tagitem */
205, /* (308) cmd ::= ALTER TABLE ids cpxName MODIFY TAG columnlist */
205, /* (309) cmd ::= ALTER STABLE ids cpxName ADD COLUMN columnlist */
205, /* (310) cmd ::= ALTER STABLE ids cpxName DROP COLUMN ids */
205, /* (311) cmd ::= ALTER STABLE ids cpxName MODIFY COLUMN columnlist */
205, /* (312) cmd ::= ALTER STABLE ids cpxName ADD TAG columnlist */
205, /* (313) cmd ::= ALTER STABLE ids cpxName DROP TAG ids */
205, /* (314) cmd ::= ALTER STABLE ids cpxName CHANGE TAG ids ids */
205, /* (315) cmd ::= ALTER STABLE ids cpxName SET TAG ids EQ tagitem */
205, /* (316) cmd ::= ALTER STABLE ids cpxName MODIFY TAG columnlist */
205, /* (317) cmd ::= KILL CONNECTION INTEGER */
205, /* (318) cmd ::= KILL STREAM INTEGER COLON INTEGER */
205, /* (319) cmd ::= KILL QUERY INTEGER COLON INTEGER */
};
/* For rule J, yyRuleInfoNRhs[J] contains the negative of the number
** of symbols on the right-hand side of that rule. */
static const signed char yyRuleInfoNRhs[] = {
-1, /* (0) program ::= cmd */
-2, /* (1) cmd ::= SHOW DATABASES */
-2, /* (2) cmd ::= SHOW TOPICS */
-2, /* (3) cmd ::= SHOW FUNCTIONS */
-2, /* (4) cmd ::= SHOW MNODES */
-2, /* (5) cmd ::= SHOW DNODES */
-2, /* (6) cmd ::= SHOW ACCOUNTS */
-2, /* (7) cmd ::= SHOW USERS */
-2, /* (8) cmd ::= SHOW MODULES */
-2, /* (9) cmd ::= SHOW QUERIES */
-2, /* (10) cmd ::= SHOW CONNECTIONS */
-2, /* (11) cmd ::= SHOW STREAMS */
-2, /* (12) cmd ::= SHOW VARIABLES */
-2, /* (13) cmd ::= SHOW SCORES */
-2, /* (14) cmd ::= SHOW GRANTS */
-2, /* (15) cmd ::= SHOW VNODES */
-3, /* (16) cmd ::= SHOW VNODES ids */
0, /* (17) dbPrefix ::= */
-2, /* (18) dbPrefix ::= ids DOT */
0, /* (19) cpxName ::= */
-2, /* (20) cpxName ::= DOT ids */
-5, /* (21) cmd ::= SHOW CREATE TABLE ids cpxName */
-5, /* (22) cmd ::= SHOW CREATE STABLE ids cpxName */
-4, /* (23) cmd ::= SHOW CREATE DATABASE ids */
-3, /* (24) cmd ::= SHOW dbPrefix TABLES */
-5, /* (25) cmd ::= SHOW dbPrefix TABLES LIKE STRING */
-3, /* (26) cmd ::= SHOW dbPrefix STABLES */
-5, /* (27) cmd ::= SHOW dbPrefix STABLES LIKE STRING */
-3, /* (28) cmd ::= SHOW dbPrefix VGROUPS */
-5, /* (29) cmd ::= DROP TABLE ifexists ids cpxName */
-5, /* (30) cmd ::= DROP STABLE ifexists ids cpxName */
-4, /* (31) cmd ::= DROP DATABASE ifexists ids */
-4, /* (32) cmd ::= DROP TOPIC ifexists ids */
-3, /* (33) cmd ::= DROP FUNCTION ids */
-3, /* (34) cmd ::= DROP DNODE ids */
-3, /* (35) cmd ::= DROP USER ids */
-3, /* (36) cmd ::= DROP ACCOUNT ids */
-2, /* (37) cmd ::= USE ids */
-3, /* (38) cmd ::= DESCRIBE ids cpxName */
-3, /* (39) cmd ::= DESC ids cpxName */
-5, /* (40) cmd ::= ALTER USER ids PASS ids */
-5, /* (41) cmd ::= ALTER USER ids PRIVILEGE ids */
-4, /* (42) cmd ::= ALTER DNODE ids ids */
-5, /* (43) cmd ::= ALTER DNODE ids ids ids */
-3, /* (44) cmd ::= ALTER LOCAL ids */
-4, /* (45) cmd ::= ALTER LOCAL ids ids */
-4, /* (46) cmd ::= ALTER DATABASE ids alter_db_optr */
-4, /* (47) cmd ::= ALTER TOPIC ids alter_topic_optr */
-4, /* (48) cmd ::= ALTER ACCOUNT ids acct_optr */
-6, /* (49) cmd ::= ALTER ACCOUNT ids PASS ids acct_optr */
-6, /* (50) cmd ::= COMPACT VNODES IN LP exprlist RP */
-1, /* (51) ids ::= ID */
-1, /* (52) ids ::= STRING */
-2, /* (53) ifexists ::= IF EXISTS */
0, /* (54) ifexists ::= */
-3, /* (55) ifnotexists ::= IF NOT EXISTS */
0, /* (56) ifnotexists ::= */
-3, /* (57) cmd ::= CREATE DNODE ids */
-6, /* (58) cmd ::= CREATE ACCOUNT ids PASS ids acct_optr */
-5, /* (59) cmd ::= CREATE DATABASE ifnotexists ids db_optr */
-5, /* (60) cmd ::= CREATE TOPIC ifnotexists ids topic_optr */
-8, /* (61) cmd ::= CREATE FUNCTION ids AS ids OUTPUTTYPE typename bufsize */
-9, /* (62) cmd ::= CREATE AGGREGATE FUNCTION ids AS ids OUTPUTTYPE typename bufsize */
-5, /* (63) cmd ::= CREATE USER ids PASS ids */
0, /* (64) bufsize ::= */
-2, /* (65) bufsize ::= BUFSIZE INTEGER */
0, /* (66) pps ::= */
-2, /* (67) pps ::= PPS INTEGER */
0, /* (68) tseries ::= */
-2, /* (69) tseries ::= TSERIES INTEGER */
0, /* (70) dbs ::= */
-2, /* (71) dbs ::= DBS INTEGER */
0, /* (72) streams ::= */
-2, /* (73) streams ::= STREAMS INTEGER */
0, /* (74) storage ::= */
-2, /* (75) storage ::= STORAGE INTEGER */
0, /* (76) qtime ::= */
-2, /* (77) qtime ::= QTIME INTEGER */
0, /* (78) users ::= */
-2, /* (79) users ::= USERS INTEGER */
0, /* (80) conns ::= */
-2, /* (81) conns ::= CONNS INTEGER */
0, /* (82) state ::= */
-2, /* (83) state ::= STATE ids */
-9, /* (84) acct_optr ::= pps tseries storage streams qtime dbs users conns state */
-3, /* (85) intitemlist ::= intitemlist COMMA intitem */
-1, /* (86) intitemlist ::= intitem */
-1, /* (87) intitem ::= INTEGER */
-2, /* (88) keep ::= KEEP intitemlist */
-2, /* (89) cache ::= CACHE INTEGER */
-2, /* (90) replica ::= REPLICA INTEGER */
-2, /* (91) quorum ::= QUORUM INTEGER */
-2, /* (92) days ::= DAYS INTEGER */
-2, /* (93) minrows ::= MINROWS INTEGER */
-2, /* (94) maxrows ::= MAXROWS INTEGER */
-2, /* (95) blocks ::= BLOCKS INTEGER */
-2, /* (96) ctime ::= CTIME INTEGER */
-2, /* (97) wal ::= WAL INTEGER */
-2, /* (98) fsync ::= FSYNC INTEGER */
-2, /* (99) comp ::= COMP INTEGER */
-2, /* (100) prec ::= PRECISION STRING */
-2, /* (101) update ::= UPDATE INTEGER */
-2, /* (102) cachelast ::= CACHELAST INTEGER */
-2, /* (103) partitions ::= PARTITIONS INTEGER */
0, /* (104) db_optr ::= */
-2, /* (105) db_optr ::= db_optr cache */
-2, /* (106) db_optr ::= db_optr replica */
-2, /* (107) db_optr ::= db_optr quorum */
-2, /* (108) db_optr ::= db_optr days */
-2, /* (109) db_optr ::= db_optr minrows */
-2, /* (110) db_optr ::= db_optr maxrows */
-2, /* (111) db_optr ::= db_optr blocks */
-2, /* (112) db_optr ::= db_optr ctime */
-2, /* (113) db_optr ::= db_optr wal */
-2, /* (114) db_optr ::= db_optr fsync */
-2, /* (115) db_optr ::= db_optr comp */
-2, /* (116) db_optr ::= db_optr prec */
-2, /* (117) db_optr ::= db_optr keep */
-2, /* (118) db_optr ::= db_optr update */
-2, /* (119) db_optr ::= db_optr cachelast */
-1, /* (120) topic_optr ::= db_optr */
-2, /* (121) topic_optr ::= topic_optr partitions */
0, /* (122) alter_db_optr ::= */
-2, /* (123) alter_db_optr ::= alter_db_optr replica */
-2, /* (124) alter_db_optr ::= alter_db_optr quorum */
-2, /* (125) alter_db_optr ::= alter_db_optr keep */
-2, /* (126) alter_db_optr ::= alter_db_optr blocks */
-2, /* (127) alter_db_optr ::= alter_db_optr comp */
-2, /* (128) alter_db_optr ::= alter_db_optr update */
-2, /* (129) alter_db_optr ::= alter_db_optr cachelast */
-1, /* (130) alter_topic_optr ::= alter_db_optr */
-2, /* (131) alter_topic_optr ::= alter_topic_optr partitions */
-1, /* (132) typename ::= ids */
-4, /* (133) typename ::= ids LP signed RP */
-2, /* (134) typename ::= ids UNSIGNED */
-1, /* (135) signed ::= INTEGER */
-2, /* (136) signed ::= PLUS INTEGER */
-2, /* (137) signed ::= MINUS INTEGER */
-3, /* (138) cmd ::= CREATE TABLE create_table_args */
-3, /* (139) cmd ::= CREATE TABLE create_stable_args */
-3, /* (140) cmd ::= CREATE STABLE create_stable_args */
-3, /* (141) cmd ::= CREATE TABLE create_table_list */
-1, /* (142) create_table_list ::= create_from_stable */
-2, /* (143) create_table_list ::= create_table_list create_from_stable */
-6, /* (144) create_table_args ::= ifnotexists ids cpxName LP columnlist RP */
-10, /* (145) create_stable_args ::= ifnotexists ids cpxName LP columnlist RP TAGS LP columnlist RP */
-10, /* (146) create_from_stable ::= ifnotexists ids cpxName USING ids cpxName TAGS LP tagitemlist RP */
-13, /* (147) create_from_stable ::= ifnotexists ids cpxName USING ids cpxName LP tagNamelist RP TAGS LP tagitemlist RP */
-3, /* (148) tagNamelist ::= tagNamelist COMMA ids */
-1, /* (149) tagNamelist ::= ids */
-7, /* (150) create_table_args ::= ifnotexists ids cpxName to_opt split_opt AS select */
0, /* (151) to_opt ::= */
-3, /* (152) to_opt ::= TO ids cpxName */
0, /* (153) split_opt ::= */
-2, /* (154) split_opt ::= SPLIT ids */
-3, /* (155) columnlist ::= columnlist COMMA column */
-1, /* (156) columnlist ::= column */
-2, /* (157) column ::= ids typename */
-3, /* (158) tagitemlist ::= tagitemlist COMMA tagitem */
-1, /* (159) tagitemlist ::= tagitem */
-1, /* (160) tagitem ::= INTEGER */
-1, /* (161) tagitem ::= FLOAT */
-1, /* (162) tagitem ::= STRING */
-1, /* (163) tagitem ::= BOOL */
-1, /* (164) tagitem ::= NULL */
-1, /* (165) tagitem ::= NOW */
-3, /* (166) tagitem ::= NOW PLUS VARIABLE */
-3, /* (167) tagitem ::= NOW MINUS VARIABLE */
-2, /* (168) tagitem ::= MINUS INTEGER */
-2, /* (169) tagitem ::= MINUS FLOAT */
-2, /* (170) tagitem ::= PLUS INTEGER */
-2, /* (171) tagitem ::= PLUS FLOAT */
-15, /* (172) select ::= SELECT selcollist from where_opt range_option interval_option sliding_opt session_option windowstate_option fill_opt groupby_opt having_opt orderby_opt slimit_opt limit_opt */
-3, /* (173) select ::= LP select RP */
-1, /* (174) union ::= select */
-4, /* (175) union ::= union UNION ALL select */
-1, /* (176) cmd ::= union */
-2, /* (177) select ::= SELECT selcollist */
-2, /* (178) sclp ::= selcollist COMMA */
0, /* (179) sclp ::= */
-4, /* (180) selcollist ::= sclp distinct expr as */
-2, /* (181) selcollist ::= sclp STAR */
-2, /* (182) as ::= AS ids */
-1, /* (183) as ::= ids */
0, /* (184) as ::= */
-1, /* (185) distinct ::= DISTINCT */
0, /* (186) distinct ::= */
-2, /* (187) from ::= FROM tablelist */
-2, /* (188) from ::= FROM sub */
-3, /* (189) sub ::= LP union RP */
-4, /* (190) sub ::= LP union RP ids */
-6, /* (191) sub ::= sub COMMA LP union RP ids */
-2, /* (192) tablelist ::= ids cpxName */
-3, /* (193) tablelist ::= ids cpxName ids */
-4, /* (194) tablelist ::= tablelist COMMA ids cpxName */
-5, /* (195) tablelist ::= tablelist COMMA ids cpxName ids */
-1, /* (196) tmvar ::= VARIABLE */
-1, /* (197) timestamp ::= INTEGER */
-2, /* (198) timestamp ::= MINUS INTEGER */
-2, /* (199) timestamp ::= PLUS INTEGER */
-1, /* (200) timestamp ::= STRING */
-1, /* (201) timestamp ::= NOW */
-3, /* (202) timestamp ::= NOW PLUS VARIABLE */
-3, /* (203) timestamp ::= NOW MINUS VARIABLE */
0, /* (204) range_option ::= */
-6, /* (205) range_option ::= RANGE LP timestamp COMMA timestamp RP */
-4, /* (206) interval_option ::= intervalKey LP tmvar RP */
-6, /* (207) interval_option ::= intervalKey LP tmvar COMMA tmvar RP */
0, /* (208) interval_option ::= */
-1, /* (209) intervalKey ::= INTERVAL */
-1, /* (210) intervalKey ::= EVERY */
0, /* (211) session_option ::= */
-7, /* (212) session_option ::= SESSION LP ids cpxName COMMA tmvar RP */
0, /* (213) windowstate_option ::= */
-4, /* (214) windowstate_option ::= STATE_WINDOW LP ids RP */
0, /* (215) fill_opt ::= */
-6, /* (216) fill_opt ::= FILL LP ID COMMA tagitemlist RP */
-4, /* (217) fill_opt ::= FILL LP ID RP */
-4, /* (218) sliding_opt ::= SLIDING LP tmvar RP */
0, /* (219) sliding_opt ::= */
0, /* (220) orderby_opt ::= */
-3, /* (221) orderby_opt ::= ORDER BY sortlist */
-4, /* (222) sortlist ::= sortlist COMMA item sortorder */
-4, /* (223) sortlist ::= sortlist COMMA arrow sortorder */
-2, /* (224) sortlist ::= item sortorder */
-2, /* (225) sortlist ::= arrow sortorder */
-1, /* (226) item ::= ID */
-3, /* (227) item ::= ID DOT ID */
-1, /* (228) sortorder ::= ASC */
-1, /* (229) sortorder ::= DESC */
0, /* (230) sortorder ::= */
0, /* (231) groupby_opt ::= */
-3, /* (232) groupby_opt ::= GROUP BY grouplist */
-3, /* (233) grouplist ::= grouplist COMMA item */
-3, /* (234) grouplist ::= grouplist COMMA arrow */
-1, /* (235) grouplist ::= item */
-1, /* (236) grouplist ::= arrow */
0, /* (237) having_opt ::= */
-2, /* (238) having_opt ::= HAVING expr */
0, /* (239) limit_opt ::= */
-2, /* (240) limit_opt ::= LIMIT signed */
-4, /* (241) limit_opt ::= LIMIT signed OFFSET signed */
-4, /* (242) limit_opt ::= LIMIT signed COMMA signed */
0, /* (243) slimit_opt ::= */
-2, /* (244) slimit_opt ::= SLIMIT signed */
-4, /* (245) slimit_opt ::= SLIMIT signed SOFFSET signed */
-4, /* (246) slimit_opt ::= SLIMIT signed COMMA signed */
0, /* (247) where_opt ::= */
-2, /* (248) where_opt ::= WHERE expr */
-3, /* (249) expr ::= LP expr RP */
-1, /* (250) expr ::= ID */
-3, /* (251) expr ::= ID DOT ID */
-3, /* (252) expr ::= ID DOT STAR */
-1, /* (253) expr ::= INTEGER */
-2, /* (254) expr ::= MINUS INTEGER */
-2, /* (255) expr ::= PLUS INTEGER */
-1, /* (256) expr ::= FLOAT */
-2, /* (257) expr ::= MINUS FLOAT */
-2, /* (258) expr ::= PLUS FLOAT */
-1, /* (259) expr ::= STRING */
-1, /* (260) expr ::= NOW */
-1, /* (261) expr ::= TODAY */
-1, /* (262) expr ::= VARIABLE */
-2, /* (263) expr ::= PLUS VARIABLE */
-2, /* (264) expr ::= MINUS VARIABLE */
-1, /* (265) expr ::= BOOL */
-1, /* (266) expr ::= NULL */
-4, /* (267) expr ::= ID LP exprlist RP */
-4, /* (268) expr ::= ID LP STAR RP */
-6, /* (269) expr ::= ID LP expr AS typename RP */
-3, /* (270) expr ::= expr IS NULL */
-4, /* (271) expr ::= expr IS NOT NULL */
-3, /* (272) expr ::= expr LT expr */
-3, /* (273) expr ::= expr GT expr */
-3, /* (274) expr ::= expr LE expr */
-3, /* (275) expr ::= expr GE expr */
-3, /* (276) expr ::= expr NE expr */
-3, /* (277) expr ::= expr EQ expr */
-5, /* (278) expr ::= expr BETWEEN expr AND expr */
-3, /* (279) expr ::= expr AND expr */
-3, /* (280) expr ::= expr OR expr */
-3, /* (281) expr ::= expr PLUS expr */
-3, /* (282) expr ::= expr MINUS expr */
-3, /* (283) expr ::= expr STAR expr */
-3, /* (284) expr ::= expr SLASH expr */
-3, /* (285) expr ::= expr REM expr */
-3, /* (286) expr ::= expr LIKE expr */
-3, /* (287) expr ::= expr MATCH expr */
-3, /* (288) expr ::= expr NMATCH expr */
-3, /* (289) expr ::= ID CONTAINS STRING */
-5, /* (290) expr ::= ID DOT ID CONTAINS STRING */
-3, /* (291) arrow ::= ID ARROW STRING */
-5, /* (292) arrow ::= ID DOT ID ARROW STRING */
-1, /* (293) expr ::= arrow */
-5, /* (294) expr ::= expr IN LP exprlist RP */
-3, /* (295) exprlist ::= exprlist COMMA expritem */
-1, /* (296) exprlist ::= expritem */
-1, /* (297) expritem ::= expr */
0, /* (298) expritem ::= */
-3, /* (299) cmd ::= RESET QUERY CACHE */
-3, /* (300) cmd ::= SYNCDB ids REPLICA */
-7, /* (301) cmd ::= ALTER TABLE ids cpxName ADD COLUMN columnlist */
-7, /* (302) cmd ::= ALTER TABLE ids cpxName DROP COLUMN ids */
-7, /* (303) cmd ::= ALTER TABLE ids cpxName MODIFY COLUMN columnlist */
-7, /* (304) cmd ::= ALTER TABLE ids cpxName ADD TAG columnlist */
-7, /* (305) cmd ::= ALTER TABLE ids cpxName DROP TAG ids */
-8, /* (306) cmd ::= ALTER TABLE ids cpxName CHANGE TAG ids ids */
-9, /* (307) cmd ::= ALTER TABLE ids cpxName SET TAG ids EQ tagitem */
-7, /* (308) cmd ::= ALTER TABLE ids cpxName MODIFY TAG columnlist */
-7, /* (309) cmd ::= ALTER STABLE ids cpxName ADD COLUMN columnlist */
-7, /* (310) cmd ::= ALTER STABLE ids cpxName DROP COLUMN ids */
-7, /* (311) cmd ::= ALTER STABLE ids cpxName MODIFY COLUMN columnlist */
-7, /* (312) cmd ::= ALTER STABLE ids cpxName ADD TAG columnlist */
-7, /* (313) cmd ::= ALTER STABLE ids cpxName DROP TAG ids */
-8, /* (314) cmd ::= ALTER STABLE ids cpxName CHANGE TAG ids ids */
-9, /* (315) cmd ::= ALTER STABLE ids cpxName SET TAG ids EQ tagitem */
-7, /* (316) cmd ::= ALTER STABLE ids cpxName MODIFY TAG columnlist */
-3, /* (317) cmd ::= KILL CONNECTION INTEGER */
-5, /* (318) cmd ::= KILL STREAM INTEGER COLON INTEGER */
-5, /* (319) cmd ::= KILL QUERY INTEGER COLON INTEGER */
/* The following table contains information about every rule that
** is used during the reduce.
*/
static const struct {
YYCODETYPE lhs; /* Symbol on the left-hand side of the rule */
signed char nrhs; /* Negative of the number of RHS symbols in the rule */
} yyRuleInfo[] = {
{ 205, -1 }, /* (0) program ::= cmd */
{ 206, -2 }, /* (1) cmd ::= SHOW DATABASES */
{ 206, -2 }, /* (2) cmd ::= SHOW TOPICS */
{ 206, -2 }, /* (3) cmd ::= SHOW FUNCTIONS */
{ 206, -2 }, /* (4) cmd ::= SHOW MNODES */
{ 206, -2 }, /* (5) cmd ::= SHOW DNODES */
{ 206, -2 }, /* (6) cmd ::= SHOW ACCOUNTS */
{ 206, -2 }, /* (7) cmd ::= SHOW USERS */
{ 206, -2 }, /* (8) cmd ::= SHOW MODULES */
{ 206, -2 }, /* (9) cmd ::= SHOW QUERIES */
{ 206, -2 }, /* (10) cmd ::= SHOW CONNECTIONS */
{ 206, -2 }, /* (11) cmd ::= SHOW STREAMS */
{ 206, -2 }, /* (12) cmd ::= SHOW VARIABLES */
{ 206, -2 }, /* (13) cmd ::= SHOW SCORES */
{ 206, -2 }, /* (14) cmd ::= SHOW GRANTS */
{ 206, -2 }, /* (15) cmd ::= SHOW VNODES */
{ 206, -3 }, /* (16) cmd ::= SHOW VNODES ids */
{ 208, 0 }, /* (17) dbPrefix ::= */
{ 208, -2 }, /* (18) dbPrefix ::= ids DOT */
{ 209, 0 }, /* (19) cpxName ::= */
{ 209, -2 }, /* (20) cpxName ::= DOT ids */
{ 206, -5 }, /* (21) cmd ::= SHOW CREATE TABLE ids cpxName */
{ 206, -5 }, /* (22) cmd ::= SHOW CREATE STABLE ids cpxName */
{ 206, -4 }, /* (23) cmd ::= SHOW CREATE DATABASE ids */
{ 206, -3 }, /* (24) cmd ::= SHOW dbPrefix TABLES */
{ 206, -5 }, /* (25) cmd ::= SHOW dbPrefix TABLES LIKE STRING */
{ 206, -3 }, /* (26) cmd ::= SHOW dbPrefix STABLES */
{ 206, -5 }, /* (27) cmd ::= SHOW dbPrefix STABLES LIKE STRING */
{ 206, -3 }, /* (28) cmd ::= SHOW dbPrefix VGROUPS */
{ 206, -5 }, /* (29) cmd ::= DROP TABLE ifexists ids cpxName */
{ 206, -5 }, /* (30) cmd ::= DROP STABLE ifexists ids cpxName */
{ 206, -4 }, /* (31) cmd ::= DROP DATABASE ifexists ids */
{ 206, -4 }, /* (32) cmd ::= DROP TOPIC ifexists ids */
{ 206, -3 }, /* (33) cmd ::= DROP FUNCTION ids */
{ 206, -3 }, /* (34) cmd ::= DROP DNODE ids */
{ 206, -3 }, /* (35) cmd ::= DROP USER ids */
{ 206, -3 }, /* (36) cmd ::= DROP ACCOUNT ids */
{ 206, -2 }, /* (37) cmd ::= USE ids */
{ 206, -3 }, /* (38) cmd ::= DESCRIBE ids cpxName */
{ 206, -3 }, /* (39) cmd ::= DESC ids cpxName */
{ 206, -5 }, /* (40) cmd ::= ALTER USER ids PASS ids */
{ 206, -5 }, /* (41) cmd ::= ALTER USER ids PRIVILEGE ids */
{ 206, -4 }, /* (42) cmd ::= ALTER DNODE ids ids */
{ 206, -5 }, /* (43) cmd ::= ALTER DNODE ids ids ids */
{ 206, -3 }, /* (44) cmd ::= ALTER LOCAL ids */
{ 206, -4 }, /* (45) cmd ::= ALTER LOCAL ids ids */
{ 206, -4 }, /* (46) cmd ::= ALTER DATABASE ids alter_db_optr */
{ 206, -4 }, /* (47) cmd ::= ALTER TOPIC ids alter_topic_optr */
{ 206, -4 }, /* (48) cmd ::= ALTER ACCOUNT ids acct_optr */
{ 206, -6 }, /* (49) cmd ::= ALTER ACCOUNT ids PASS ids acct_optr */
{ 206, -6 }, /* (50) cmd ::= COMPACT VNODES IN LP exprlist RP */
{ 207, -1 }, /* (51) ids ::= ID */
{ 207, -1 }, /* (52) ids ::= STRING */
{ 210, -2 }, /* (53) ifexists ::= IF EXISTS */
{ 210, 0 }, /* (54) ifexists ::= */
{ 215, -3 }, /* (55) ifnotexists ::= IF NOT EXISTS */
{ 215, 0 }, /* (56) ifnotexists ::= */
{ 206, -3 }, /* (57) cmd ::= CREATE DNODE ids */
{ 206, -6 }, /* (58) cmd ::= CREATE ACCOUNT ids PASS ids acct_optr */
{ 206, -5 }, /* (59) cmd ::= CREATE DATABASE ifnotexists ids db_optr */
{ 206, -5 }, /* (60) cmd ::= CREATE TOPIC ifnotexists ids topic_optr */
{ 206, -8 }, /* (61) cmd ::= CREATE FUNCTION ids AS ids OUTPUTTYPE typename bufsize */
{ 206, -9 }, /* (62) cmd ::= CREATE AGGREGATE FUNCTION ids AS ids OUTPUTTYPE typename bufsize */
{ 206, -5 }, /* (63) cmd ::= CREATE USER ids PASS ids */
{ 219, 0 }, /* (64) bufsize ::= */
{ 219, -2 }, /* (65) bufsize ::= BUFSIZE INTEGER */
{ 220, 0 }, /* (66) pps ::= */
{ 220, -2 }, /* (67) pps ::= PPS INTEGER */
{ 221, 0 }, /* (68) tseries ::= */
{ 221, -2 }, /* (69) tseries ::= TSERIES INTEGER */
{ 222, 0 }, /* (70) dbs ::= */
{ 222, -2 }, /* (71) dbs ::= DBS INTEGER */
{ 223, 0 }, /* (72) streams ::= */
{ 223, -2 }, /* (73) streams ::= STREAMS INTEGER */
{ 224, 0 }, /* (74) storage ::= */
{ 224, -2 }, /* (75) storage ::= STORAGE INTEGER */
{ 225, 0 }, /* (76) qtime ::= */
{ 225, -2 }, /* (77) qtime ::= QTIME INTEGER */
{ 226, 0 }, /* (78) users ::= */
{ 226, -2 }, /* (79) users ::= USERS INTEGER */
{ 227, 0 }, /* (80) conns ::= */
{ 227, -2 }, /* (81) conns ::= CONNS INTEGER */
{ 228, 0 }, /* (82) state ::= */
{ 228, -2 }, /* (83) state ::= STATE ids */
{ 213, -9 }, /* (84) acct_optr ::= pps tseries storage streams qtime dbs users conns state */
{ 229, -3 }, /* (85) intitemlist ::= intitemlist COMMA intitem */
{ 229, -1 }, /* (86) intitemlist ::= intitem */
{ 230, -1 }, /* (87) intitem ::= INTEGER */
{ 231, -2 }, /* (88) keep ::= KEEP intitemlist */
{ 232, -2 }, /* (89) cache ::= CACHE INTEGER */
{ 233, -2 }, /* (90) replica ::= REPLICA INTEGER */
{ 234, -2 }, /* (91) quorum ::= QUORUM INTEGER */
{ 235, -2 }, /* (92) days ::= DAYS INTEGER */
{ 236, -2 }, /* (93) minrows ::= MINROWS INTEGER */
{ 237, -2 }, /* (94) maxrows ::= MAXROWS INTEGER */
{ 238, -2 }, /* (95) blocks ::= BLOCKS INTEGER */
{ 239, -2 }, /* (96) ctime ::= CTIME INTEGER */
{ 240, -2 }, /* (97) wal ::= WAL INTEGER */
{ 241, -2 }, /* (98) fsync ::= FSYNC INTEGER */
{ 242, -2 }, /* (99) comp ::= COMP INTEGER */
{ 243, -2 }, /* (100) prec ::= PRECISION STRING */
{ 244, -2 }, /* (101) update ::= UPDATE INTEGER */
{ 245, -2 }, /* (102) cachelast ::= CACHELAST INTEGER */
{ 246, -2 }, /* (103) partitions ::= PARTITIONS INTEGER */
{ 216, 0 }, /* (104) db_optr ::= */
{ 216, -2 }, /* (105) db_optr ::= db_optr cache */
{ 216, -2 }, /* (106) db_optr ::= db_optr replica */
{ 216, -2 }, /* (107) db_optr ::= db_optr quorum */
{ 216, -2 }, /* (108) db_optr ::= db_optr days */
{ 216, -2 }, /* (109) db_optr ::= db_optr minrows */
{ 216, -2 }, /* (110) db_optr ::= db_optr maxrows */
{ 216, -2 }, /* (111) db_optr ::= db_optr blocks */
{ 216, -2 }, /* (112) db_optr ::= db_optr ctime */
{ 216, -2 }, /* (113) db_optr ::= db_optr wal */
{ 216, -2 }, /* (114) db_optr ::= db_optr fsync */
{ 216, -2 }, /* (115) db_optr ::= db_optr comp */
{ 216, -2 }, /* (116) db_optr ::= db_optr prec */
{ 216, -2 }, /* (117) db_optr ::= db_optr keep */
{ 216, -2 }, /* (118) db_optr ::= db_optr update */
{ 216, -2 }, /* (119) db_optr ::= db_optr cachelast */
{ 217, -1 }, /* (120) topic_optr ::= db_optr */
{ 217, -2 }, /* (121) topic_optr ::= topic_optr partitions */
{ 211, 0 }, /* (122) alter_db_optr ::= */
{ 211, -2 }, /* (123) alter_db_optr ::= alter_db_optr replica */
{ 211, -2 }, /* (124) alter_db_optr ::= alter_db_optr quorum */
{ 211, -2 }, /* (125) alter_db_optr ::= alter_db_optr keep */
{ 211, -2 }, /* (126) alter_db_optr ::= alter_db_optr blocks */
{ 211, -2 }, /* (127) alter_db_optr ::= alter_db_optr comp */
{ 211, -2 }, /* (128) alter_db_optr ::= alter_db_optr update */
{ 211, -2 }, /* (129) alter_db_optr ::= alter_db_optr cachelast */
{ 212, -1 }, /* (130) alter_topic_optr ::= alter_db_optr */
{ 212, -2 }, /* (131) alter_topic_optr ::= alter_topic_optr partitions */
{ 218, -1 }, /* (132) typename ::= ids */
{ 218, -4 }, /* (133) typename ::= ids LP signed RP */
{ 218, -2 }, /* (134) typename ::= ids UNSIGNED */
{ 247, -1 }, /* (135) signed ::= INTEGER */
{ 247, -2 }, /* (136) signed ::= PLUS INTEGER */
{ 247, -2 }, /* (137) signed ::= MINUS INTEGER */
{ 206, -3 }, /* (138) cmd ::= CREATE TABLE create_table_args */
{ 206, -3 }, /* (139) cmd ::= CREATE TABLE create_stable_args */
{ 206, -3 }, /* (140) cmd ::= CREATE STABLE create_stable_args */
{ 206, -3 }, /* (141) cmd ::= CREATE TABLE create_table_list */
{ 250, -1 }, /* (142) create_table_list ::= create_from_stable */
{ 250, -2 }, /* (143) create_table_list ::= create_table_list create_from_stable */
{ 248, -6 }, /* (144) create_table_args ::= ifnotexists ids cpxName LP columnlist RP */
{ 249, -10 }, /* (145) create_stable_args ::= ifnotexists ids cpxName LP columnlist RP TAGS LP columnlist RP */
{ 251, -10 }, /* (146) create_from_stable ::= ifnotexists ids cpxName USING ids cpxName TAGS LP tagitemlist RP */
{ 251, -13 }, /* (147) create_from_stable ::= ifnotexists ids cpxName USING ids cpxName LP tagNamelist RP TAGS LP tagitemlist RP */
{ 254, -3 }, /* (148) tagNamelist ::= tagNamelist COMMA ids */
{ 254, -1 }, /* (149) tagNamelist ::= ids */
{ 248, -7 }, /* (150) create_table_args ::= ifnotexists ids cpxName to_opt split_opt AS select */
{ 255, 0 }, /* (151) to_opt ::= */
{ 255, -3 }, /* (152) to_opt ::= TO ids cpxName */
{ 256, 0 }, /* (153) split_opt ::= */
{ 256, -2 }, /* (154) split_opt ::= SPLIT ids */
{ 252, -3 }, /* (155) columnlist ::= columnlist COMMA column */
{ 252, -1 }, /* (156) columnlist ::= column */
{ 259, -2 }, /* (157) column ::= ids typename */
{ 253, -3 }, /* (158) tagitemlist ::= tagitemlist COMMA tagitem */
{ 253, -1 }, /* (159) tagitemlist ::= tagitem */
{ 260, -1 }, /* (160) tagitem ::= INTEGER */
{ 260, -1 }, /* (161) tagitem ::= FLOAT */
{ 260, -1 }, /* (162) tagitem ::= STRING */
{ 260, -1 }, /* (163) tagitem ::= BOOL */
{ 260, -1 }, /* (164) tagitem ::= NULL */
{ 260, -1 }, /* (165) tagitem ::= NOW */
{ 260, -3 }, /* (166) tagitem ::= NOW PLUS VARIABLE */
{ 260, -3 }, /* (167) tagitem ::= NOW MINUS VARIABLE */
{ 260, -2 }, /* (168) tagitem ::= MINUS INTEGER */
{ 260, -2 }, /* (169) tagitem ::= MINUS FLOAT */
{ 260, -2 }, /* (170) tagitem ::= PLUS INTEGER */
{ 260, -2 }, /* (171) tagitem ::= PLUS FLOAT */
{ 257, -15 }, /* (172) select ::= SELECT selcollist from where_opt range_option interval_option sliding_opt session_option windowstate_option fill_opt groupby_opt having_opt orderby_opt slimit_opt limit_opt */
{ 257, -3 }, /* (173) select ::= LP select RP */
{ 275, -1 }, /* (174) union ::= select */
{ 275, -4 }, /* (175) union ::= union UNION ALL select */
{ 206, -1 }, /* (176) cmd ::= union */
{ 257, -2 }, /* (177) select ::= SELECT selcollist */
{ 276, -2 }, /* (178) sclp ::= selcollist COMMA */
{ 276, 0 }, /* (179) sclp ::= */
{ 261, -4 }, /* (180) selcollist ::= sclp distinct expr as */
{ 261, -2 }, /* (181) selcollist ::= sclp STAR */
{ 279, -2 }, /* (182) as ::= AS ids */
{ 279, -1 }, /* (183) as ::= ids */
{ 279, 0 }, /* (184) as ::= */
{ 277, -1 }, /* (185) distinct ::= DISTINCT */
{ 277, 0 }, /* (186) distinct ::= */
{ 262, -2 }, /* (187) from ::= FROM tablelist */
{ 262, -2 }, /* (188) from ::= FROM sub */
{ 281, -3 }, /* (189) sub ::= LP union RP */
{ 281, -4 }, /* (190) sub ::= LP union RP ids */
{ 281, -6 }, /* (191) sub ::= sub COMMA LP union RP ids */
{ 280, -2 }, /* (192) tablelist ::= ids cpxName */
{ 280, -3 }, /* (193) tablelist ::= ids cpxName ids */
{ 280, -4 }, /* (194) tablelist ::= tablelist COMMA ids cpxName */
{ 280, -5 }, /* (195) tablelist ::= tablelist COMMA ids cpxName ids */
{ 282, -1 }, /* (196) tmvar ::= VARIABLE */
{ 283, -1 }, /* (197) timestamp ::= INTEGER */
{ 283, -2 }, /* (198) timestamp ::= MINUS INTEGER */
{ 283, -2 }, /* (199) timestamp ::= PLUS INTEGER */
{ 283, -1 }, /* (200) timestamp ::= STRING */
{ 283, -1 }, /* (201) timestamp ::= NOW */
{ 283, -3 }, /* (202) timestamp ::= NOW PLUS VARIABLE */
{ 283, -3 }, /* (203) timestamp ::= NOW MINUS VARIABLE */
{ 264, 0 }, /* (204) range_option ::= */
{ 264, -6 }, /* (205) range_option ::= RANGE LP timestamp COMMA timestamp RP */
{ 265, -4 }, /* (206) interval_option ::= intervalKey LP tmvar RP */
{ 265, -6 }, /* (207) interval_option ::= intervalKey LP tmvar COMMA tmvar RP */
{ 265, 0 }, /* (208) interval_option ::= */
{ 284, -1 }, /* (209) intervalKey ::= INTERVAL */
{ 284, -1 }, /* (210) intervalKey ::= EVERY */
{ 267, 0 }, /* (211) session_option ::= */
{ 267, -7 }, /* (212) session_option ::= SESSION LP ids cpxName COMMA tmvar RP */
{ 268, 0 }, /* (213) windowstate_option ::= */
{ 268, -4 }, /* (214) windowstate_option ::= STATE_WINDOW LP ids RP */
{ 269, 0 }, /* (215) fill_opt ::= */
{ 269, -6 }, /* (216) fill_opt ::= FILL LP ID COMMA tagitemlist RP */
{ 269, -4 }, /* (217) fill_opt ::= FILL LP ID RP */
{ 266, -4 }, /* (218) sliding_opt ::= SLIDING LP tmvar RP */
{ 266, 0 }, /* (219) sliding_opt ::= */
{ 272, 0 }, /* (220) orderby_opt ::= */
{ 272, -3 }, /* (221) orderby_opt ::= ORDER BY sortlist */
{ 285, -4 }, /* (222) sortlist ::= sortlist COMMA item sortorder */
{ 285, -4 }, /* (223) sortlist ::= sortlist COMMA arrow sortorder */
{ 285, -2 }, /* (224) sortlist ::= item sortorder */
{ 285, -2 }, /* (225) sortlist ::= arrow sortorder */
{ 286, -1 }, /* (226) item ::= ID */
{ 286, -3 }, /* (227) item ::= ID DOT ID */
{ 287, -1 }, /* (228) sortorder ::= ASC */
{ 287, -1 }, /* (229) sortorder ::= DESC */
{ 287, 0 }, /* (230) sortorder ::= */
{ 270, 0 }, /* (231) groupby_opt ::= */
{ 270, -3 }, /* (232) groupby_opt ::= GROUP BY grouplist */
{ 289, -3 }, /* (233) grouplist ::= grouplist COMMA item */
{ 289, -3 }, /* (234) grouplist ::= grouplist COMMA arrow */
{ 289, -1 }, /* (235) grouplist ::= item */
{ 289, -1 }, /* (236) grouplist ::= arrow */
{ 271, 0 }, /* (237) having_opt ::= */
{ 271, -2 }, /* (238) having_opt ::= HAVING expr */
{ 274, 0 }, /* (239) limit_opt ::= */
{ 274, -2 }, /* (240) limit_opt ::= LIMIT signed */
{ 274, -4 }, /* (241) limit_opt ::= LIMIT signed OFFSET signed */
{ 274, -4 }, /* (242) limit_opt ::= LIMIT signed COMMA signed */
{ 273, 0 }, /* (243) slimit_opt ::= */
{ 273, -2 }, /* (244) slimit_opt ::= SLIMIT signed */
{ 273, -4 }, /* (245) slimit_opt ::= SLIMIT signed SOFFSET signed */
{ 273, -4 }, /* (246) slimit_opt ::= SLIMIT signed COMMA signed */
{ 263, 0 }, /* (247) where_opt ::= */
{ 263, -2 }, /* (248) where_opt ::= WHERE expr */
{ 278, -3 }, /* (249) expr ::= LP expr RP */
{ 278, -1 }, /* (250) expr ::= ID */
{ 278, -3 }, /* (251) expr ::= ID DOT ID */
{ 278, -3 }, /* (252) expr ::= ID DOT STAR */
{ 278, -1 }, /* (253) expr ::= INTEGER */
{ 278, -2 }, /* (254) expr ::= MINUS INTEGER */
{ 278, -2 }, /* (255) expr ::= PLUS INTEGER */
{ 278, -1 }, /* (256) expr ::= FLOAT */
{ 278, -2 }, /* (257) expr ::= MINUS FLOAT */
{ 278, -2 }, /* (258) expr ::= PLUS FLOAT */
{ 278, -1 }, /* (259) expr ::= STRING */
{ 278, -1 }, /* (260) expr ::= NOW */
{ 278, -1 }, /* (261) expr ::= TODAY */
{ 278, -1 }, /* (262) expr ::= VARIABLE */
{ 278, -2 }, /* (263) expr ::= PLUS VARIABLE */
{ 278, -2 }, /* (264) expr ::= MINUS VARIABLE */
{ 278, -1 }, /* (265) expr ::= BOOL */
{ 278, -1 }, /* (266) expr ::= NULL */
{ 278, -4 }, /* (267) expr ::= ID LP exprlist RP */
{ 278, -4 }, /* (268) expr ::= ID LP STAR RP */
{ 278, -6 }, /* (269) expr ::= ID LP expr AS typename RP */
{ 278, -3 }, /* (270) expr ::= expr IS NULL */
{ 278, -4 }, /* (271) expr ::= expr IS NOT NULL */
{ 278, -3 }, /* (272) expr ::= expr LT expr */
{ 278, -3 }, /* (273) expr ::= expr GT expr */
{ 278, -3 }, /* (274) expr ::= expr LE expr */
{ 278, -3 }, /* (275) expr ::= expr GE expr */
{ 278, -3 }, /* (276) expr ::= expr NE expr */
{ 278, -3 }, /* (277) expr ::= expr EQ expr */
{ 278, -5 }, /* (278) expr ::= expr BETWEEN expr AND expr */
{ 278, -3 }, /* (279) expr ::= expr AND expr */
{ 278, -3 }, /* (280) expr ::= expr OR expr */
{ 278, -3 }, /* (281) expr ::= expr PLUS expr */
{ 278, -3 }, /* (282) expr ::= expr MINUS expr */
{ 278, -3 }, /* (283) expr ::= expr STAR expr */
{ 278, -3 }, /* (284) expr ::= expr SLASH expr */
{ 278, -3 }, /* (285) expr ::= expr REM expr */
{ 278, -3 }, /* (286) expr ::= expr LIKE expr */
{ 278, -3 }, /* (287) expr ::= expr MATCH expr */
{ 278, -3 }, /* (288) expr ::= expr NMATCH expr */
{ 278, -3 }, /* (289) expr ::= ID CONTAINS STRING */
{ 278, -5 }, /* (290) expr ::= ID DOT ID CONTAINS STRING */
{ 288, -3 }, /* (291) arrow ::= ID ARROW STRING */
{ 288, -5 }, /* (292) arrow ::= ID DOT ID ARROW STRING */
{ 278, -1 }, /* (293) expr ::= arrow */
{ 278, -5 }, /* (294) expr ::= expr IN LP exprlist RP */
{ 214, -3 }, /* (295) exprlist ::= exprlist COMMA expritem */
{ 214, -1 }, /* (296) exprlist ::= expritem */
{ 290, -1 }, /* (297) expritem ::= expr */
{ 290, 0 }, /* (298) expritem ::= */
{ 206, -3 }, /* (299) cmd ::= RESET QUERY CACHE */
{ 206, -3 }, /* (300) cmd ::= SYNCDB ids REPLICA */
{ 206, -7 }, /* (301) cmd ::= ALTER TABLE ids cpxName ADD COLUMN columnlist */
{ 206, -7 }, /* (302) cmd ::= ALTER TABLE ids cpxName DROP COLUMN ids */
{ 206, -7 }, /* (303) cmd ::= ALTER TABLE ids cpxName MODIFY COLUMN columnlist */
{ 206, -7 }, /* (304) cmd ::= ALTER TABLE ids cpxName ADD TAG columnlist */
{ 206, -7 }, /* (305) cmd ::= ALTER TABLE ids cpxName DROP TAG ids */
{ 206, -8 }, /* (306) cmd ::= ALTER TABLE ids cpxName CHANGE TAG ids ids */
{ 206, -9 }, /* (307) cmd ::= ALTER TABLE ids cpxName SET TAG ids EQ tagitem */
{ 206, -7 }, /* (308) cmd ::= ALTER TABLE ids cpxName MODIFY TAG columnlist */
{ 206, -7 }, /* (309) cmd ::= ALTER STABLE ids cpxName ADD COLUMN columnlist */
{ 206, -7 }, /* (310) cmd ::= ALTER STABLE ids cpxName DROP COLUMN ids */
{ 206, -7 }, /* (311) cmd ::= ALTER STABLE ids cpxName MODIFY COLUMN columnlist */
{ 206, -7 }, /* (312) cmd ::= ALTER STABLE ids cpxName ADD TAG columnlist */
{ 206, -7 }, /* (313) cmd ::= ALTER STABLE ids cpxName DROP TAG ids */
{ 206, -8 }, /* (314) cmd ::= ALTER STABLE ids cpxName CHANGE TAG ids ids */
{ 206, -9 }, /* (315) cmd ::= ALTER STABLE ids cpxName SET TAG ids EQ tagitem */
{ 206, -7 }, /* (316) cmd ::= ALTER STABLE ids cpxName MODIFY TAG columnlist */
{ 206, -3 }, /* (317) cmd ::= KILL CONNECTION INTEGER */
{ 206, -5 }, /* (318) cmd ::= KILL STREAM INTEGER COLON INTEGER */
{ 206, -5 }, /* (319) cmd ::= KILL QUERY INTEGER COLON INTEGER */
{ 206, -6 }, /* (320) cmd ::= DELETE FROM ifexists ids cpxName where_opt */
};
static void yy_accept(yyParser*); /* Forward Declaration */
......@@ -2596,17 +2286,14 @@ static YYACTIONTYPE yy_reduce(
yymsp = yypParser->yytos;
#ifndef NDEBUG
if( yyTraceFILE && yyruleno<(int)(sizeof(yyRuleName)/sizeof(yyRuleName[0])) ){
yysize = yyRuleInfoNRhs[yyruleno];
yysize = yyRuleInfo[yyruleno].nrhs;
if( yysize ){
fprintf(yyTraceFILE, "%sReduce %d [%s]%s, pop back to state %d.\n",
fprintf(yyTraceFILE, "%sReduce %d [%s], go to state %d.\n",
yyTracePrompt,
yyruleno, yyRuleName[yyruleno],
yyruleno<YYNRULE_WITH_ACTION ? "" : " without external action",
yymsp[yysize].stateno);
yyruleno, yyRuleName[yyruleno], yymsp[yysize].stateno);
}else{
fprintf(yyTraceFILE, "%sReduce %d [%s]%s.\n",
yyTracePrompt, yyruleno, yyRuleName[yyruleno],
yyruleno<YYNRULE_WITH_ACTION ? "" : " without external action");
fprintf(yyTraceFILE, "%sReduce %d [%s].\n",
yyTracePrompt, yyruleno, yyRuleName[yyruleno]);
}
}
#endif /* NDEBUG */
......@@ -2614,7 +2301,7 @@ static YYACTIONTYPE yy_reduce(
/* Check that the stack is large enough to grow by a single entry
** if the RHS of the rule is empty. This ensures that there is room
** enough on the stack to push the LHS value */
if( yyRuleInfoNRhs[yyruleno]==0 ){
if( yyRuleInfo[yyruleno].nrhs==0 ){
#ifdef YYTRACKMAXSTACKDEPTH
if( (int)(yypParser->yytos - yypParser->yystack)>yypParser->yyhwm ){
yypParser->yyhwm++;
......@@ -2827,16 +2514,16 @@ static YYACTIONTYPE yy_reduce(
break;
case 46: /* cmd ::= ALTER DATABASE ids alter_db_optr */
case 47: /* cmd ::= ALTER TOPIC ids alter_topic_optr */ yytestcase(yyruleno==47);
{ SStrToken t = {0}; setCreateDbInfo(pInfo, TSDB_SQL_ALTER_DB, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy302, &t);}
{ SStrToken t = {0}; setCreateDbInfo(pInfo, TSDB_SQL_ALTER_DB, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy436, &t);}
break;
case 48: /* cmd ::= ALTER ACCOUNT ids acct_optr */
{ setCreateAcctSql(pInfo, TSDB_SQL_ALTER_ACCT, &yymsp[-1].minor.yy0, NULL, &yymsp[0].minor.yy231);}
{ setCreateAcctSql(pInfo, TSDB_SQL_ALTER_ACCT, &yymsp[-1].minor.yy0, NULL, &yymsp[0].minor.yy517);}
break;
case 49: /* 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.yy231);}
{ setCreateAcctSql(pInfo, TSDB_SQL_ALTER_ACCT, &yymsp[-3].minor.yy0, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy517);}
break;
case 50: /* cmd ::= COMPACT VNODES IN LP exprlist RP */
{ setCompactVnodeSql(pInfo, TSDB_SQL_COMPACT_VNODE, yymsp[-1].minor.yy161);}
{ setCompactVnodeSql(pInfo, TSDB_SQL_COMPACT_VNODE, yymsp[-1].minor.yy525);}
break;
case 51: /* ids ::= ID */
case 52: /* ids ::= STRING */ yytestcase(yyruleno==52);
......@@ -2858,17 +2545,17 @@ static YYACTIONTYPE yy_reduce(
{ setDCLSqlElems(pInfo, TSDB_SQL_CREATE_DNODE, 1, &yymsp[0].minor.yy0);}
break;
case 58: /* 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.yy231);}
{ setCreateAcctSql(pInfo, TSDB_SQL_CREATE_ACCT, &yymsp[-3].minor.yy0, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy517);}
break;
case 59: /* cmd ::= CREATE DATABASE ifnotexists ids db_optr */
case 60: /* cmd ::= CREATE TOPIC ifnotexists ids topic_optr */ yytestcase(yyruleno==60);
{ setCreateDbInfo(pInfo, TSDB_SQL_CREATE_DB, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy302, &yymsp[-2].minor.yy0);}
{ setCreateDbInfo(pInfo, TSDB_SQL_CREATE_DB, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy436, &yymsp[-2].minor.yy0);}
break;
case 61: /* cmd ::= CREATE FUNCTION ids AS ids OUTPUTTYPE typename bufsize */
{ setCreateFuncInfo(pInfo, TSDB_SQL_CREATE_FUNCTION, &yymsp[-5].minor.yy0, &yymsp[-3].minor.yy0, &yymsp[-1].minor.yy223, &yymsp[0].minor.yy0, 1);}
{ setCreateFuncInfo(pInfo, TSDB_SQL_CREATE_FUNCTION, &yymsp[-5].minor.yy0, &yymsp[-3].minor.yy0, &yymsp[-1].minor.yy115, &yymsp[0].minor.yy0, 1);}
break;
case 62: /* cmd ::= CREATE AGGREGATE FUNCTION ids AS ids OUTPUTTYPE typename bufsize */
{ setCreateFuncInfo(pInfo, TSDB_SQL_CREATE_FUNCTION, &yymsp[-5].minor.yy0, &yymsp[-3].minor.yy0, &yymsp[-1].minor.yy223, &yymsp[0].minor.yy0, 2);}
{ setCreateFuncInfo(pInfo, TSDB_SQL_CREATE_FUNCTION, &yymsp[-5].minor.yy0, &yymsp[-3].minor.yy0, &yymsp[-1].minor.yy115, &yymsp[0].minor.yy0, 2);}
break;
case 63: /* cmd ::= CREATE USER ids PASS ids */
{ setCreateUserSql(pInfo, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0);}
......@@ -2899,38 +2586,38 @@ static YYACTIONTYPE yy_reduce(
break;
case 84: /* acct_optr ::= pps tseries storage streams qtime dbs users conns state */
{
yylhsminor.yy231.maxUsers = (yymsp[-2].minor.yy0.n>0)?atoi(yymsp[-2].minor.yy0.z):-1;
yylhsminor.yy231.maxDbs = (yymsp[-3].minor.yy0.n>0)?atoi(yymsp[-3].minor.yy0.z):-1;
yylhsminor.yy231.maxTimeSeries = (yymsp[-7].minor.yy0.n>0)?atoi(yymsp[-7].minor.yy0.z):-1;
yylhsminor.yy231.maxStreams = (yymsp[-5].minor.yy0.n>0)?atoi(yymsp[-5].minor.yy0.z):-1;
yylhsminor.yy231.maxPointsPerSecond = (yymsp[-8].minor.yy0.n>0)?atoi(yymsp[-8].minor.yy0.z):-1;
yylhsminor.yy231.maxStorage = (yymsp[-6].minor.yy0.n>0)?strtoll(yymsp[-6].minor.yy0.z, NULL, 10):-1;
yylhsminor.yy231.maxQueryTime = (yymsp[-4].minor.yy0.n>0)?strtoll(yymsp[-4].minor.yy0.z, NULL, 10):-1;
yylhsminor.yy231.maxConnections = (yymsp[-1].minor.yy0.n>0)?atoi(yymsp[-1].minor.yy0.z):-1;
yylhsminor.yy231.stat = yymsp[0].minor.yy0;
yylhsminor.yy517.maxUsers = (yymsp[-2].minor.yy0.n>0)?atoi(yymsp[-2].minor.yy0.z):-1;
yylhsminor.yy517.maxDbs = (yymsp[-3].minor.yy0.n>0)?atoi(yymsp[-3].minor.yy0.z):-1;
yylhsminor.yy517.maxTimeSeries = (yymsp[-7].minor.yy0.n>0)?atoi(yymsp[-7].minor.yy0.z):-1;
yylhsminor.yy517.maxStreams = (yymsp[-5].minor.yy0.n>0)?atoi(yymsp[-5].minor.yy0.z):-1;
yylhsminor.yy517.maxPointsPerSecond = (yymsp[-8].minor.yy0.n>0)?atoi(yymsp[-8].minor.yy0.z):-1;
yylhsminor.yy517.maxStorage = (yymsp[-6].minor.yy0.n>0)?strtoll(yymsp[-6].minor.yy0.z, NULL, 10):-1;
yylhsminor.yy517.maxQueryTime = (yymsp[-4].minor.yy0.n>0)?strtoll(yymsp[-4].minor.yy0.z, NULL, 10):-1;
yylhsminor.yy517.maxConnections = (yymsp[-1].minor.yy0.n>0)?atoi(yymsp[-1].minor.yy0.z):-1;
yylhsminor.yy517.stat = yymsp[0].minor.yy0;
}
yymsp[-8].minor.yy231 = yylhsminor.yy231;
yymsp[-8].minor.yy517 = yylhsminor.yy517;
break;
case 85: /* intitemlist ::= intitemlist COMMA intitem */
case 158: /* tagitemlist ::= tagitemlist COMMA tagitem */ yytestcase(yyruleno==158);
{ yylhsminor.yy161 = tVariantListAppend(yymsp[-2].minor.yy161, &yymsp[0].minor.yy526, -1); }
yymsp[-2].minor.yy161 = yylhsminor.yy161;
{ yylhsminor.yy525 = tVariantListAppend(yymsp[-2].minor.yy525, &yymsp[0].minor.yy110, -1); }
yymsp[-2].minor.yy525 = yylhsminor.yy525;
break;
case 86: /* intitemlist ::= intitem */
case 159: /* tagitemlist ::= tagitem */ yytestcase(yyruleno==159);
{ yylhsminor.yy161 = tVariantListAppend(NULL, &yymsp[0].minor.yy526, -1); }
yymsp[0].minor.yy161 = yylhsminor.yy161;
{ yylhsminor.yy525 = tVariantListAppend(NULL, &yymsp[0].minor.yy110, -1); }
yymsp[0].minor.yy525 = yylhsminor.yy525;
break;
case 87: /* intitem ::= INTEGER */
case 160: /* tagitem ::= INTEGER */ yytestcase(yyruleno==160);
case 161: /* tagitem ::= FLOAT */ yytestcase(yyruleno==161);
case 162: /* tagitem ::= STRING */ yytestcase(yyruleno==162);
case 163: /* tagitem ::= BOOL */ yytestcase(yyruleno==163);
{ toTSDBType(yymsp[0].minor.yy0.type); tVariantCreate(&yylhsminor.yy526, &yymsp[0].minor.yy0); }
yymsp[0].minor.yy526 = yylhsminor.yy526;
{ toTSDBType(yymsp[0].minor.yy0.type); tVariantCreate(&yylhsminor.yy110, &yymsp[0].minor.yy0); }
yymsp[0].minor.yy110 = yylhsminor.yy110;
break;
case 88: /* keep ::= KEEP intitemlist */
{ yymsp[-1].minor.yy161 = yymsp[0].minor.yy161; }
{ yymsp[-1].minor.yy525 = yymsp[0].minor.yy525; }
break;
case 89: /* cache ::= CACHE INTEGER */
case 90: /* replica ::= REPLICA INTEGER */ yytestcase(yyruleno==90);
......@@ -2950,200 +2637,200 @@ static YYACTIONTYPE yy_reduce(
{ yymsp[-1].minor.yy0 = yymsp[0].minor.yy0; }
break;
case 104: /* db_optr ::= */
{setDefaultCreateDbOption(&yymsp[1].minor.yy302); yymsp[1].minor.yy302.dbType = TSDB_DB_TYPE_DEFAULT;}
{setDefaultCreateDbOption(&yymsp[1].minor.yy436); yymsp[1].minor.yy436.dbType = TSDB_DB_TYPE_DEFAULT;}
break;
case 105: /* db_optr ::= db_optr cache */
{ yylhsminor.yy302 = yymsp[-1].minor.yy302; yylhsminor.yy302.cacheBlockSize = strtol(yymsp[0].minor.yy0.z, NULL, 10); }
yymsp[-1].minor.yy302 = yylhsminor.yy302;
{ yylhsminor.yy436 = yymsp[-1].minor.yy436; yylhsminor.yy436.cacheBlockSize = strtol(yymsp[0].minor.yy0.z, NULL, 10); }
yymsp[-1].minor.yy436 = yylhsminor.yy436;
break;
case 106: /* db_optr ::= db_optr replica */
case 123: /* alter_db_optr ::= alter_db_optr replica */ yytestcase(yyruleno==123);
{ yylhsminor.yy302 = yymsp[-1].minor.yy302; yylhsminor.yy302.replica = strtol(yymsp[0].minor.yy0.z, NULL, 10); }
yymsp[-1].minor.yy302 = yylhsminor.yy302;
{ yylhsminor.yy436 = yymsp[-1].minor.yy436; yylhsminor.yy436.replica = strtol(yymsp[0].minor.yy0.z, NULL, 10); }
yymsp[-1].minor.yy436 = yylhsminor.yy436;
break;
case 107: /* db_optr ::= db_optr quorum */
case 124: /* alter_db_optr ::= alter_db_optr quorum */ yytestcase(yyruleno==124);
{ yylhsminor.yy302 = yymsp[-1].minor.yy302; yylhsminor.yy302.quorum = strtol(yymsp[0].minor.yy0.z, NULL, 10); }
yymsp[-1].minor.yy302 = yylhsminor.yy302;
{ yylhsminor.yy436 = yymsp[-1].minor.yy436; yylhsminor.yy436.quorum = strtol(yymsp[0].minor.yy0.z, NULL, 10); }
yymsp[-1].minor.yy436 = yylhsminor.yy436;
break;
case 108: /* db_optr ::= db_optr days */
{ yylhsminor.yy302 = yymsp[-1].minor.yy302; yylhsminor.yy302.daysPerFile = strtol(yymsp[0].minor.yy0.z, NULL, 10); }
yymsp[-1].minor.yy302 = yylhsminor.yy302;
{ yylhsminor.yy436 = yymsp[-1].minor.yy436; yylhsminor.yy436.daysPerFile = strtol(yymsp[0].minor.yy0.z, NULL, 10); }
yymsp[-1].minor.yy436 = yylhsminor.yy436;
break;
case 109: /* db_optr ::= db_optr minrows */
{ yylhsminor.yy302 = yymsp[-1].minor.yy302; yylhsminor.yy302.minRowsPerBlock = strtod(yymsp[0].minor.yy0.z, NULL); }
yymsp[-1].minor.yy302 = yylhsminor.yy302;
{ yylhsminor.yy436 = yymsp[-1].minor.yy436; yylhsminor.yy436.minRowsPerBlock = strtod(yymsp[0].minor.yy0.z, NULL); }
yymsp[-1].minor.yy436 = yylhsminor.yy436;
break;
case 110: /* db_optr ::= db_optr maxrows */
{ yylhsminor.yy302 = yymsp[-1].minor.yy302; yylhsminor.yy302.maxRowsPerBlock = strtod(yymsp[0].minor.yy0.z, NULL); }
yymsp[-1].minor.yy302 = yylhsminor.yy302;
{ yylhsminor.yy436 = yymsp[-1].minor.yy436; yylhsminor.yy436.maxRowsPerBlock = strtod(yymsp[0].minor.yy0.z, NULL); }
yymsp[-1].minor.yy436 = yylhsminor.yy436;
break;
case 111: /* db_optr ::= db_optr blocks */
case 126: /* alter_db_optr ::= alter_db_optr blocks */ yytestcase(yyruleno==126);
{ yylhsminor.yy302 = yymsp[-1].minor.yy302; yylhsminor.yy302.numOfBlocks = strtol(yymsp[0].minor.yy0.z, NULL, 10); }
yymsp[-1].minor.yy302 = yylhsminor.yy302;
{ yylhsminor.yy436 = yymsp[-1].minor.yy436; yylhsminor.yy436.numOfBlocks = strtol(yymsp[0].minor.yy0.z, NULL, 10); }
yymsp[-1].minor.yy436 = yylhsminor.yy436;
break;
case 112: /* db_optr ::= db_optr ctime */
{ yylhsminor.yy302 = yymsp[-1].minor.yy302; yylhsminor.yy302.commitTime = strtol(yymsp[0].minor.yy0.z, NULL, 10); }
yymsp[-1].minor.yy302 = yylhsminor.yy302;
{ yylhsminor.yy436 = yymsp[-1].minor.yy436; yylhsminor.yy436.commitTime = strtol(yymsp[0].minor.yy0.z, NULL, 10); }
yymsp[-1].minor.yy436 = yylhsminor.yy436;
break;
case 113: /* db_optr ::= db_optr wal */
{ yylhsminor.yy302 = yymsp[-1].minor.yy302; yylhsminor.yy302.walLevel = strtol(yymsp[0].minor.yy0.z, NULL, 10); }
yymsp[-1].minor.yy302 = yylhsminor.yy302;
{ yylhsminor.yy436 = yymsp[-1].minor.yy436; yylhsminor.yy436.walLevel = strtol(yymsp[0].minor.yy0.z, NULL, 10); }
yymsp[-1].minor.yy436 = yylhsminor.yy436;
break;
case 114: /* db_optr ::= db_optr fsync */
{ yylhsminor.yy302 = yymsp[-1].minor.yy302; yylhsminor.yy302.fsyncPeriod = strtol(yymsp[0].minor.yy0.z, NULL, 10); }
yymsp[-1].minor.yy302 = yylhsminor.yy302;
{ yylhsminor.yy436 = yymsp[-1].minor.yy436; yylhsminor.yy436.fsyncPeriod = strtol(yymsp[0].minor.yy0.z, NULL, 10); }
yymsp[-1].minor.yy436 = yylhsminor.yy436;
break;
case 115: /* db_optr ::= db_optr comp */
case 127: /* alter_db_optr ::= alter_db_optr comp */ yytestcase(yyruleno==127);
{ yylhsminor.yy302 = yymsp[-1].minor.yy302; yylhsminor.yy302.compressionLevel = strtol(yymsp[0].minor.yy0.z, NULL, 10); }
yymsp[-1].minor.yy302 = yylhsminor.yy302;
{ yylhsminor.yy436 = yymsp[-1].minor.yy436; yylhsminor.yy436.compressionLevel = strtol(yymsp[0].minor.yy0.z, NULL, 10); }
yymsp[-1].minor.yy436 = yylhsminor.yy436;
break;
case 116: /* db_optr ::= db_optr prec */
{ yylhsminor.yy302 = yymsp[-1].minor.yy302; yylhsminor.yy302.precision = yymsp[0].minor.yy0; }
yymsp[-1].minor.yy302 = yylhsminor.yy302;
{ yylhsminor.yy436 = yymsp[-1].minor.yy436; yylhsminor.yy436.precision = yymsp[0].minor.yy0; }
yymsp[-1].minor.yy436 = yylhsminor.yy436;
break;
case 117: /* db_optr ::= db_optr keep */
case 125: /* alter_db_optr ::= alter_db_optr keep */ yytestcase(yyruleno==125);
{ yylhsminor.yy302 = yymsp[-1].minor.yy302; yylhsminor.yy302.keep = yymsp[0].minor.yy161; }
yymsp[-1].minor.yy302 = yylhsminor.yy302;
{ yylhsminor.yy436 = yymsp[-1].minor.yy436; yylhsminor.yy436.keep = yymsp[0].minor.yy525; }
yymsp[-1].minor.yy436 = yylhsminor.yy436;
break;
case 118: /* db_optr ::= db_optr update */
case 128: /* alter_db_optr ::= alter_db_optr update */ yytestcase(yyruleno==128);
{ yylhsminor.yy302 = yymsp[-1].minor.yy302; yylhsminor.yy302.update = strtol(yymsp[0].minor.yy0.z, NULL, 10); }
yymsp[-1].minor.yy302 = yylhsminor.yy302;
{ yylhsminor.yy436 = yymsp[-1].minor.yy436; yylhsminor.yy436.update = strtol(yymsp[0].minor.yy0.z, NULL, 10); }
yymsp[-1].minor.yy436 = yylhsminor.yy436;
break;
case 119: /* db_optr ::= db_optr cachelast */
case 129: /* alter_db_optr ::= alter_db_optr cachelast */ yytestcase(yyruleno==129);
{ yylhsminor.yy302 = yymsp[-1].minor.yy302; yylhsminor.yy302.cachelast = strtol(yymsp[0].minor.yy0.z, NULL, 10); }
yymsp[-1].minor.yy302 = yylhsminor.yy302;
{ yylhsminor.yy436 = yymsp[-1].minor.yy436; yylhsminor.yy436.cachelast = strtol(yymsp[0].minor.yy0.z, NULL, 10); }
yymsp[-1].minor.yy436 = yylhsminor.yy436;
break;
case 120: /* topic_optr ::= db_optr */
case 130: /* alter_topic_optr ::= alter_db_optr */ yytestcase(yyruleno==130);
{ yylhsminor.yy302 = yymsp[0].minor.yy302; yylhsminor.yy302.dbType = TSDB_DB_TYPE_TOPIC; }
yymsp[0].minor.yy302 = yylhsminor.yy302;
{ yylhsminor.yy436 = yymsp[0].minor.yy436; yylhsminor.yy436.dbType = TSDB_DB_TYPE_TOPIC; }
yymsp[0].minor.yy436 = yylhsminor.yy436;
break;
case 121: /* topic_optr ::= topic_optr partitions */
case 131: /* alter_topic_optr ::= alter_topic_optr partitions */ yytestcase(yyruleno==131);
{ yylhsminor.yy302 = yymsp[-1].minor.yy302; yylhsminor.yy302.partitions = strtol(yymsp[0].minor.yy0.z, NULL, 10); }
yymsp[-1].minor.yy302 = yylhsminor.yy302;
{ yylhsminor.yy436 = yymsp[-1].minor.yy436; yylhsminor.yy436.partitions = strtol(yymsp[0].minor.yy0.z, NULL, 10); }
yymsp[-1].minor.yy436 = yylhsminor.yy436;
break;
case 122: /* alter_db_optr ::= */
{ setDefaultCreateDbOption(&yymsp[1].minor.yy302); yymsp[1].minor.yy302.dbType = TSDB_DB_TYPE_DEFAULT;}
{ setDefaultCreateDbOption(&yymsp[1].minor.yy436); yymsp[1].minor.yy436.dbType = TSDB_DB_TYPE_DEFAULT;}
break;
case 132: /* typename ::= ids */
{
yymsp[0].minor.yy0.type = 0;
tSetColumnType (&yylhsminor.yy223, &yymsp[0].minor.yy0);
tSetColumnType (&yylhsminor.yy115, &yymsp[0].minor.yy0);
}
yymsp[0].minor.yy223 = yylhsminor.yy223;
yymsp[0].minor.yy115 = yylhsminor.yy115;
break;
case 133: /* typename ::= ids LP signed RP */
{
if (yymsp[-1].minor.yy369 <= 0) {
if (yymsp[-1].minor.yy543 <= 0) {
yymsp[-3].minor.yy0.type = 0;
tSetColumnType(&yylhsminor.yy223, &yymsp[-3].minor.yy0);
tSetColumnType(&yylhsminor.yy115, &yymsp[-3].minor.yy0);
} else {
yymsp[-3].minor.yy0.type = -yymsp[-1].minor.yy369; // negative value of name length
tSetColumnType(&yylhsminor.yy223, &yymsp[-3].minor.yy0);
yymsp[-3].minor.yy0.type = -yymsp[-1].minor.yy543; // negative value of name length
tSetColumnType(&yylhsminor.yy115, &yymsp[-3].minor.yy0);
}
}
yymsp[-3].minor.yy223 = yylhsminor.yy223;
yymsp[-3].minor.yy115 = yylhsminor.yy115;
break;
case 134: /* typename ::= ids UNSIGNED */
{
yymsp[-1].minor.yy0.type = 0;
yymsp[-1].minor.yy0.n = ((yymsp[0].minor.yy0.z + yymsp[0].minor.yy0.n) - yymsp[-1].minor.yy0.z);
tSetColumnType (&yylhsminor.yy223, &yymsp[-1].minor.yy0);
tSetColumnType (&yylhsminor.yy115, &yymsp[-1].minor.yy0);
}
yymsp[-1].minor.yy223 = yylhsminor.yy223;
yymsp[-1].minor.yy115 = yylhsminor.yy115;
break;
case 135: /* signed ::= INTEGER */
{ yylhsminor.yy369 = strtol(yymsp[0].minor.yy0.z, NULL, 10); }
yymsp[0].minor.yy369 = yylhsminor.yy369;
{ yylhsminor.yy543 = strtol(yymsp[0].minor.yy0.z, NULL, 10); }
yymsp[0].minor.yy543 = yylhsminor.yy543;
break;
case 136: /* signed ::= PLUS INTEGER */
{ yymsp[-1].minor.yy369 = strtol(yymsp[0].minor.yy0.z, NULL, 10); }
{ yymsp[-1].minor.yy543 = strtol(yymsp[0].minor.yy0.z, NULL, 10); }
break;
case 137: /* signed ::= MINUS INTEGER */
{ yymsp[-1].minor.yy369 = -strtol(yymsp[0].minor.yy0.z, NULL, 10);}
{ yymsp[-1].minor.yy543 = -strtol(yymsp[0].minor.yy0.z, NULL, 10);}
break;
case 141: /* cmd ::= CREATE TABLE create_table_list */
{ pInfo->type = TSDB_SQL_CREATE_TABLE; pInfo->pCreateTableInfo = yymsp[0].minor.yy462;}
{ pInfo->type = TSDB_SQL_CREATE_TABLE; pInfo->pCreateTableInfo = yymsp[0].minor.yy572;}
break;
case 142: /* create_table_list ::= create_from_stable */
{
SCreateTableSql* pCreateTable = calloc(1, sizeof(SCreateTableSql));
pCreateTable->childTableInfo = taosArrayInit(4, sizeof(SCreatedTableInfo));
taosArrayPush(pCreateTable->childTableInfo, &yymsp[0].minor.yy356);
taosArrayPush(pCreateTable->childTableInfo, &yymsp[0].minor.yy480);
pCreateTable->type = TSQL_CREATE_TABLE_FROM_STABLE;
yylhsminor.yy462 = pCreateTable;
yylhsminor.yy572 = pCreateTable;
}
yymsp[0].minor.yy462 = yylhsminor.yy462;
yymsp[0].minor.yy572 = yylhsminor.yy572;
break;
case 143: /* create_table_list ::= create_table_list create_from_stable */
{
taosArrayPush(yymsp[-1].minor.yy462->childTableInfo, &yymsp[0].minor.yy356);
yylhsminor.yy462 = yymsp[-1].minor.yy462;
taosArrayPush(yymsp[-1].minor.yy572->childTableInfo, &yymsp[0].minor.yy480);
yylhsminor.yy572 = yymsp[-1].minor.yy572;
}
yymsp[-1].minor.yy462 = yylhsminor.yy462;
yymsp[-1].minor.yy572 = yylhsminor.yy572;
break;
case 144: /* create_table_args ::= ifnotexists ids cpxName LP columnlist RP */
{
yylhsminor.yy462 = tSetCreateTableInfo(yymsp[-1].minor.yy161, NULL, NULL, TSQL_CREATE_TABLE);
setSqlInfo(pInfo, yylhsminor.yy462, NULL, TSDB_SQL_CREATE_TABLE);
yylhsminor.yy572 = tSetCreateTableInfo(yymsp[-1].minor.yy525, NULL, NULL, TSQL_CREATE_TABLE);
setSqlInfo(pInfo, yylhsminor.yy572, NULL, TSDB_SQL_CREATE_TABLE);
yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n;
setCreatedTableName(pInfo, &yymsp[-4].minor.yy0, &yymsp[-5].minor.yy0);
}
yymsp[-5].minor.yy462 = yylhsminor.yy462;
yymsp[-5].minor.yy572 = yylhsminor.yy572;
break;
case 145: /* create_stable_args ::= ifnotexists ids cpxName LP columnlist RP TAGS LP columnlist RP */
{
yylhsminor.yy462 = tSetCreateTableInfo(yymsp[-5].minor.yy161, yymsp[-1].minor.yy161, NULL, TSQL_CREATE_STABLE);
setSqlInfo(pInfo, yylhsminor.yy462, NULL, TSDB_SQL_CREATE_TABLE);
yylhsminor.yy572 = tSetCreateTableInfo(yymsp[-5].minor.yy525, yymsp[-1].minor.yy525, NULL, TSQL_CREATE_STABLE);
setSqlInfo(pInfo, yylhsminor.yy572, NULL, TSDB_SQL_CREATE_TABLE);
yymsp[-8].minor.yy0.n += yymsp[-7].minor.yy0.n;
setCreatedTableName(pInfo, &yymsp[-8].minor.yy0, &yymsp[-9].minor.yy0);
}
yymsp[-9].minor.yy462 = yylhsminor.yy462;
yymsp[-9].minor.yy572 = yylhsminor.yy572;
break;
case 146: /* create_from_stable ::= ifnotexists ids cpxName USING ids cpxName TAGS LP tagitemlist RP */
{
yymsp[-5].minor.yy0.n += yymsp[-4].minor.yy0.n;
yymsp[-8].minor.yy0.n += yymsp[-7].minor.yy0.n;
yylhsminor.yy356 = createNewChildTableInfo(&yymsp[-5].minor.yy0, NULL, yymsp[-1].minor.yy161, &yymsp[-8].minor.yy0, &yymsp[-9].minor.yy0);
yylhsminor.yy480 = createNewChildTableInfo(&yymsp[-5].minor.yy0, NULL, yymsp[-1].minor.yy525, &yymsp[-8].minor.yy0, &yymsp[-9].minor.yy0);
}
yymsp[-9].minor.yy356 = yylhsminor.yy356;
yymsp[-9].minor.yy480 = yylhsminor.yy480;
break;
case 147: /* create_from_stable ::= ifnotexists ids cpxName USING ids cpxName LP tagNamelist RP TAGS LP tagitemlist RP */
{
yymsp[-8].minor.yy0.n += yymsp[-7].minor.yy0.n;
yymsp[-11].minor.yy0.n += yymsp[-10].minor.yy0.n;
yylhsminor.yy356 = createNewChildTableInfo(&yymsp[-8].minor.yy0, yymsp[-5].minor.yy161, yymsp[-1].minor.yy161, &yymsp[-11].minor.yy0, &yymsp[-12].minor.yy0);
yylhsminor.yy480 = createNewChildTableInfo(&yymsp[-8].minor.yy0, yymsp[-5].minor.yy525, yymsp[-1].minor.yy525, &yymsp[-11].minor.yy0, &yymsp[-12].minor.yy0);
}
yymsp[-12].minor.yy356 = yylhsminor.yy356;
yymsp[-12].minor.yy480 = yylhsminor.yy480;
break;
case 148: /* tagNamelist ::= tagNamelist COMMA ids */
{taosArrayPush(yymsp[-2].minor.yy161, &yymsp[0].minor.yy0); yylhsminor.yy161 = yymsp[-2].minor.yy161; }
yymsp[-2].minor.yy161 = yylhsminor.yy161;
{taosArrayPush(yymsp[-2].minor.yy525, &yymsp[0].minor.yy0); yylhsminor.yy525 = yymsp[-2].minor.yy525; }
yymsp[-2].minor.yy525 = yylhsminor.yy525;
break;
case 149: /* tagNamelist ::= ids */
{yylhsminor.yy161 = taosArrayInit(4, sizeof(SStrToken)); taosArrayPush(yylhsminor.yy161, &yymsp[0].minor.yy0);}
yymsp[0].minor.yy161 = yylhsminor.yy161;
{yylhsminor.yy525 = taosArrayInit(4, sizeof(SStrToken)); taosArrayPush(yylhsminor.yy525, &yymsp[0].minor.yy0);}
yymsp[0].minor.yy525 = yylhsminor.yy525;
break;
case 150: /* create_table_args ::= ifnotexists ids cpxName to_opt split_opt AS select */
{
yylhsminor.yy462 = tSetCreateTableInfo(NULL, NULL, yymsp[0].minor.yy276, TSQL_CREATE_STREAM);
setSqlInfo(pInfo, yylhsminor.yy462, NULL, TSDB_SQL_CREATE_TABLE);
yylhsminor.yy572 = tSetCreateTableInfo(NULL, NULL, yymsp[0].minor.yy86, TSQL_CREATE_STREAM);
setSqlInfo(pInfo, yylhsminor.yy572, NULL, TSDB_SQL_CREATE_TABLE);
setCreatedStreamOpt(pInfo, &yymsp[-3].minor.yy0, &yymsp[-2].minor.yy0);
yymsp[-5].minor.yy0.n += yymsp[-4].minor.yy0.n;
setCreatedTableName(pInfo, &yymsp[-5].minor.yy0, &yymsp[-6].minor.yy0);
}
yymsp[-6].minor.yy462 = yylhsminor.yy462;
yymsp[-6].minor.yy572 = yylhsminor.yy572;
break;
case 151: /* to_opt ::= */
case 153: /* split_opt ::= */ yytestcase(yyruleno==153);
......@@ -3159,37 +2846,37 @@ static YYACTIONTYPE yy_reduce(
{ yymsp[-1].minor.yy0 = yymsp[0].minor.yy0;}
break;
case 155: /* columnlist ::= columnlist COMMA column */
{taosArrayPush(yymsp[-2].minor.yy161, &yymsp[0].minor.yy223); yylhsminor.yy161 = yymsp[-2].minor.yy161; }
yymsp[-2].minor.yy161 = yylhsminor.yy161;
{taosArrayPush(yymsp[-2].minor.yy525, &yymsp[0].minor.yy115); yylhsminor.yy525 = yymsp[-2].minor.yy525; }
yymsp[-2].minor.yy525 = yylhsminor.yy525;
break;
case 156: /* columnlist ::= column */
{yylhsminor.yy161 = taosArrayInit(4, sizeof(TAOS_FIELD)); taosArrayPush(yylhsminor.yy161, &yymsp[0].minor.yy223);}
yymsp[0].minor.yy161 = yylhsminor.yy161;
{yylhsminor.yy525 = taosArrayInit(4, sizeof(TAOS_FIELD)); taosArrayPush(yylhsminor.yy525, &yymsp[0].minor.yy115);}
yymsp[0].minor.yy525 = yylhsminor.yy525;
break;
case 157: /* column ::= ids typename */
{
tSetColumnInfo(&yylhsminor.yy223, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy223);
tSetColumnInfo(&yylhsminor.yy115, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy115);
}
yymsp[-1].minor.yy223 = yylhsminor.yy223;
yymsp[-1].minor.yy115 = yylhsminor.yy115;
break;
case 164: /* tagitem ::= NULL */
{ yymsp[0].minor.yy0.type = 0; tVariantCreate(&yylhsminor.yy526, &yymsp[0].minor.yy0); }
yymsp[0].minor.yy526 = yylhsminor.yy526;
{ yymsp[0].minor.yy0.type = 0; tVariantCreate(&yylhsminor.yy110, &yymsp[0].minor.yy0); }
yymsp[0].minor.yy110 = yylhsminor.yy110;
break;
case 165: /* tagitem ::= NOW */
{ yymsp[0].minor.yy0.type = TSDB_DATA_TYPE_TIMESTAMP; tVariantCreateExt(&yylhsminor.yy526, &yymsp[0].minor.yy0, TK_NOW, true);}
yymsp[0].minor.yy526 = yylhsminor.yy526;
{ yymsp[0].minor.yy0.type = TSDB_DATA_TYPE_TIMESTAMP; tVariantCreateExt(&yylhsminor.yy110, &yymsp[0].minor.yy0, TK_NOW, true);}
yymsp[0].minor.yy110 = yylhsminor.yy110;
break;
case 166: /* tagitem ::= NOW PLUS VARIABLE */
{
yymsp[0].minor.yy0.type = TSDB_DATA_TYPE_TIMESTAMP;
tVariantCreateExt(&yymsp[-2].minor.yy526, &yymsp[0].minor.yy0, TK_PLUS, true);
tVariantCreateExt(&yymsp[-2].minor.yy110, &yymsp[0].minor.yy0, TK_PLUS, true);
}
break;
case 167: /* tagitem ::= NOW MINUS VARIABLE */
{
yymsp[0].minor.yy0.type = TSDB_DATA_TYPE_TIMESTAMP;
tVariantCreateExt(&yymsp[-2].minor.yy526, &yymsp[0].minor.yy0, TK_MINUS, true);
tVariantCreateExt(&yymsp[-2].minor.yy110, &yymsp[0].minor.yy0, TK_MINUS, true);
}
break;
case 168: /* tagitem ::= MINUS INTEGER */
......@@ -3200,56 +2887,56 @@ static YYACTIONTYPE yy_reduce(
yymsp[-1].minor.yy0.n += yymsp[0].minor.yy0.n;
yymsp[-1].minor.yy0.type = yymsp[0].minor.yy0.type;
toTSDBType(yymsp[-1].minor.yy0.type);
tVariantCreate(&yylhsminor.yy526, &yymsp[-1].minor.yy0);
tVariantCreate(&yylhsminor.yy110, &yymsp[-1].minor.yy0);
}
yymsp[-1].minor.yy526 = yylhsminor.yy526;
yymsp[-1].minor.yy110 = yylhsminor.yy110;
break;
case 172: /* select ::= SELECT selcollist from where_opt range_option interval_option sliding_opt session_option windowstate_option fill_opt groupby_opt having_opt orderby_opt slimit_opt limit_opt */
{
yylhsminor.yy276 = tSetQuerySqlNode(&yymsp[-14].minor.yy0, yymsp[-13].minor.yy161, yymsp[-12].minor.yy84, yymsp[-11].minor.yy546, yymsp[-4].minor.yy161, yymsp[-2].minor.yy161, &yymsp[-9].minor.yy300, &yymsp[-7].minor.yy219, &yymsp[-6].minor.yy548, &yymsp[-8].minor.yy0, yymsp[-5].minor.yy161, &yymsp[0].minor.yy394, &yymsp[-1].minor.yy394, yymsp[-3].minor.yy546, &yymsp[-10].minor.yy420);
yylhsminor.yy86 = tSetQuerySqlNode(&yymsp[-14].minor.yy0, yymsp[-13].minor.yy525, yymsp[-12].minor.yy328, yymsp[-11].minor.yy142, yymsp[-4].minor.yy525, yymsp[-2].minor.yy525, &yymsp[-9].minor.yy238, &yymsp[-7].minor.yy319, &yymsp[-6].minor.yy546, &yymsp[-8].minor.yy0, yymsp[-5].minor.yy525, &yymsp[0].minor.yy6, &yymsp[-1].minor.yy6, yymsp[-3].minor.yy142, &yymsp[-10].minor.yy330);
}
yymsp[-14].minor.yy276 = yylhsminor.yy276;
yymsp[-14].minor.yy86 = yylhsminor.yy86;
break;
case 173: /* select ::= LP select RP */
{yymsp[-2].minor.yy276 = yymsp[-1].minor.yy276;}
{yymsp[-2].minor.yy86 = yymsp[-1].minor.yy86;}
break;
case 174: /* union ::= select */
{ yylhsminor.yy161 = setSubclause(NULL, yymsp[0].minor.yy276); }
yymsp[0].minor.yy161 = yylhsminor.yy161;
{ yylhsminor.yy525 = setSubclause(NULL, yymsp[0].minor.yy86); }
yymsp[0].minor.yy525 = yylhsminor.yy525;
break;
case 175: /* union ::= union UNION ALL select */
{ yylhsminor.yy161 = appendSelectClause(yymsp[-3].minor.yy161, yymsp[0].minor.yy276); }
yymsp[-3].minor.yy161 = yylhsminor.yy161;
{ yylhsminor.yy525 = appendSelectClause(yymsp[-3].minor.yy525, yymsp[0].minor.yy86); }
yymsp[-3].minor.yy525 = yylhsminor.yy525;
break;
case 176: /* cmd ::= union */
{ setSqlInfo(pInfo, yymsp[0].minor.yy161, NULL, TSDB_SQL_SELECT); }
{ setSqlInfo(pInfo, yymsp[0].minor.yy525, NULL, TSDB_SQL_SELECT); }
break;
case 177: /* select ::= SELECT selcollist */
{
yylhsminor.yy276 = tSetQuerySqlNode(&yymsp[-1].minor.yy0, yymsp[0].minor.yy161, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
yylhsminor.yy86 = tSetQuerySqlNode(&yymsp[-1].minor.yy0, yymsp[0].minor.yy525, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
}
yymsp[-1].minor.yy276 = yylhsminor.yy276;
yymsp[-1].minor.yy86 = yylhsminor.yy86;
break;
case 178: /* sclp ::= selcollist COMMA */
{yylhsminor.yy161 = yymsp[-1].minor.yy161;}
yymsp[-1].minor.yy161 = yylhsminor.yy161;
{yylhsminor.yy525 = yymsp[-1].minor.yy525;}
yymsp[-1].minor.yy525 = yylhsminor.yy525;
break;
case 179: /* sclp ::= */
case 220: /* orderby_opt ::= */ yytestcase(yyruleno==220);
{yymsp[1].minor.yy161 = 0;}
{yymsp[1].minor.yy525 = 0;}
break;
case 180: /* selcollist ::= sclp distinct expr as */
{
yylhsminor.yy161 = tSqlExprListAppend(yymsp[-3].minor.yy161, yymsp[-1].minor.yy546, yymsp[-2].minor.yy0.n? &yymsp[-2].minor.yy0:0, yymsp[0].minor.yy0.n?&yymsp[0].minor.yy0:0);
yylhsminor.yy525 = tSqlExprListAppend(yymsp[-3].minor.yy525, yymsp[-1].minor.yy142, yymsp[-2].minor.yy0.n? &yymsp[-2].minor.yy0:0, yymsp[0].minor.yy0.n?&yymsp[0].minor.yy0:0);
}
yymsp[-3].minor.yy161 = yylhsminor.yy161;
yymsp[-3].minor.yy525 = yylhsminor.yy525;
break;
case 181: /* selcollist ::= sclp STAR */
{
tSqlExpr *pNode = tSqlExprCreateIdValue(pInfo, NULL, TK_ALL);
yylhsminor.yy161 = tSqlExprListAppend(yymsp[-1].minor.yy161, pNode, 0, 0);
yylhsminor.yy525 = tSqlExprListAppend(yymsp[-1].minor.yy525, pNode, 0, 0);
}
yymsp[-1].minor.yy161 = yylhsminor.yy161;
yymsp[-1].minor.yy525 = yylhsminor.yy525;
break;
case 182: /* as ::= AS ids */
{ yymsp[-1].minor.yy0 = yymsp[0].minor.yy0; }
......@@ -3267,114 +2954,114 @@ static YYACTIONTYPE yy_reduce(
break;
case 187: /* from ::= FROM tablelist */
case 188: /* from ::= FROM sub */ yytestcase(yyruleno==188);
{yymsp[-1].minor.yy84 = yymsp[0].minor.yy84;}
{yymsp[-1].minor.yy328 = yymsp[0].minor.yy328;}
break;
case 189: /* sub ::= LP union RP */
{yymsp[-2].minor.yy84 = addSubqueryElem(NULL, yymsp[-1].minor.yy161, NULL);}
{yymsp[-2].minor.yy328 = addSubqueryElem(NULL, yymsp[-1].minor.yy525, NULL);}
break;
case 190: /* sub ::= LP union RP ids */
{yymsp[-3].minor.yy84 = addSubqueryElem(NULL, yymsp[-2].minor.yy161, &yymsp[0].minor.yy0);}
{yymsp[-3].minor.yy328 = addSubqueryElem(NULL, yymsp[-2].minor.yy525, &yymsp[0].minor.yy0);}
break;
case 191: /* sub ::= sub COMMA LP union RP ids */
{yylhsminor.yy84 = addSubqueryElem(yymsp[-5].minor.yy84, yymsp[-2].minor.yy161, &yymsp[0].minor.yy0);}
yymsp[-5].minor.yy84 = yylhsminor.yy84;
{yylhsminor.yy328 = addSubqueryElem(yymsp[-5].minor.yy328, yymsp[-2].minor.yy525, &yymsp[0].minor.yy0);}
yymsp[-5].minor.yy328 = yylhsminor.yy328;
break;
case 192: /* tablelist ::= ids cpxName */
{
yymsp[-1].minor.yy0.n += yymsp[0].minor.yy0.n;
yylhsminor.yy84 = setTableNameList(NULL, &yymsp[-1].minor.yy0, NULL);
yylhsminor.yy328 = setTableNameList(NULL, &yymsp[-1].minor.yy0, NULL);
}
yymsp[-1].minor.yy84 = yylhsminor.yy84;
yymsp[-1].minor.yy328 = yylhsminor.yy328;
break;
case 193: /* tablelist ::= ids cpxName ids */
{
yymsp[-2].minor.yy0.n += yymsp[-1].minor.yy0.n;
yylhsminor.yy84 = setTableNameList(NULL, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0);
yylhsminor.yy328 = setTableNameList(NULL, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0);
}
yymsp[-2].minor.yy84 = yylhsminor.yy84;
yymsp[-2].minor.yy328 = yylhsminor.yy328;
break;
case 194: /* tablelist ::= tablelist COMMA ids cpxName */
{
yymsp[-1].minor.yy0.n += yymsp[0].minor.yy0.n;
yylhsminor.yy84 = setTableNameList(yymsp[-3].minor.yy84, &yymsp[-1].minor.yy0, NULL);
yylhsminor.yy328 = setTableNameList(yymsp[-3].minor.yy328, &yymsp[-1].minor.yy0, NULL);
}
yymsp[-3].minor.yy84 = yylhsminor.yy84;
yymsp[-3].minor.yy328 = yylhsminor.yy328;
break;
case 195: /* tablelist ::= tablelist COMMA ids cpxName ids */
{
yymsp[-2].minor.yy0.n += yymsp[-1].minor.yy0.n;
yylhsminor.yy84 = setTableNameList(yymsp[-4].minor.yy84, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0);
yylhsminor.yy328 = setTableNameList(yymsp[-4].minor.yy328, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0);
}
yymsp[-4].minor.yy84 = yylhsminor.yy84;
yymsp[-4].minor.yy328 = yylhsminor.yy328;
break;
case 196: /* tmvar ::= VARIABLE */
{yylhsminor.yy0 = yymsp[0].minor.yy0;}
yymsp[0].minor.yy0 = yylhsminor.yy0;
break;
case 197: /* timestamp ::= INTEGER */
{ yylhsminor.yy546 = tSqlExprCreateTimestamp(&yymsp[0].minor.yy0, TK_INTEGER);}
yymsp[0].minor.yy546 = yylhsminor.yy546;
{ yylhsminor.yy142 = tSqlExprCreateTimestamp(&yymsp[0].minor.yy0, TK_INTEGER);}
yymsp[0].minor.yy142 = yylhsminor.yy142;
break;
case 198: /* timestamp ::= MINUS INTEGER */
case 199: /* timestamp ::= PLUS INTEGER */ yytestcase(yyruleno==199);
{ yymsp[-1].minor.yy0.n += yymsp[0].minor.yy0.n; yymsp[-1].minor.yy0.type = TK_INTEGER; yylhsminor.yy546 = tSqlExprCreateTimestamp(&yymsp[-1].minor.yy0, TK_INTEGER);}
yymsp[-1].minor.yy546 = yylhsminor.yy546;
{ yymsp[-1].minor.yy0.n += yymsp[0].minor.yy0.n; yymsp[-1].minor.yy0.type = TK_INTEGER; yylhsminor.yy142 = tSqlExprCreateTimestamp(&yymsp[-1].minor.yy0, TK_INTEGER);}
yymsp[-1].minor.yy142 = yylhsminor.yy142;
break;
case 200: /* timestamp ::= STRING */
{ yylhsminor.yy546 = tSqlExprCreateTimestamp(&yymsp[0].minor.yy0, TK_STRING);}
yymsp[0].minor.yy546 = yylhsminor.yy546;
{ yylhsminor.yy142 = tSqlExprCreateTimestamp(&yymsp[0].minor.yy0, TK_STRING);}
yymsp[0].minor.yy142 = yylhsminor.yy142;
break;
case 201: /* timestamp ::= NOW */
{ yylhsminor.yy546 = tSqlExprCreateTimestamp(&yymsp[0].minor.yy0, TK_NOW); }
yymsp[0].minor.yy546 = yylhsminor.yy546;
{ yylhsminor.yy142 = tSqlExprCreateTimestamp(&yymsp[0].minor.yy0, TK_NOW); }
yymsp[0].minor.yy142 = yylhsminor.yy142;
break;
case 202: /* timestamp ::= NOW PLUS VARIABLE */
{yymsp[-2].minor.yy546 = tSqlExprCreateTimestamp(&yymsp[0].minor.yy0, TK_PLUS); }
{yymsp[-2].minor.yy142 = tSqlExprCreateTimestamp(&yymsp[0].minor.yy0, TK_PLUS); }
break;
case 203: /* timestamp ::= NOW MINUS VARIABLE */
{yymsp[-2].minor.yy546 = tSqlExprCreateTimestamp(&yymsp[0].minor.yy0, TK_MINUS); }
{yymsp[-2].minor.yy142 = tSqlExprCreateTimestamp(&yymsp[0].minor.yy0, TK_MINUS); }
break;
case 204: /* range_option ::= */
{yymsp[1].minor.yy420.start = 0; yymsp[1].minor.yy420.end = 0;}
{yymsp[1].minor.yy330.start = 0; yymsp[1].minor.yy330.end = 0;}
break;
case 205: /* range_option ::= RANGE LP timestamp COMMA timestamp RP */
{yymsp[-5].minor.yy420.start = yymsp[-3].minor.yy546; yymsp[-5].minor.yy420.end = yymsp[-1].minor.yy546;}
{yymsp[-5].minor.yy330.start = yymsp[-3].minor.yy142; yymsp[-5].minor.yy330.end = yymsp[-1].minor.yy142;}
break;
case 206: /* interval_option ::= intervalKey LP tmvar RP */
{yylhsminor.yy300.interval = yymsp[-1].minor.yy0; yylhsminor.yy300.offset.n = 0; yylhsminor.yy300.token = yymsp[-3].minor.yy520;}
yymsp[-3].minor.yy300 = yylhsminor.yy300;
{yylhsminor.yy238.interval = yymsp[-1].minor.yy0; yylhsminor.yy238.offset.n = 0; yylhsminor.yy238.token = yymsp[-3].minor.yy508;}
yymsp[-3].minor.yy238 = yylhsminor.yy238;
break;
case 207: /* interval_option ::= intervalKey LP tmvar COMMA tmvar RP */
{yylhsminor.yy300.interval = yymsp[-3].minor.yy0; yylhsminor.yy300.offset = yymsp[-1].minor.yy0; yylhsminor.yy300.token = yymsp[-5].minor.yy520;}
yymsp[-5].minor.yy300 = yylhsminor.yy300;
{yylhsminor.yy238.interval = yymsp[-3].minor.yy0; yylhsminor.yy238.offset = yymsp[-1].minor.yy0; yylhsminor.yy238.token = yymsp[-5].minor.yy508;}
yymsp[-5].minor.yy238 = yylhsminor.yy238;
break;
case 208: /* interval_option ::= */
{memset(&yymsp[1].minor.yy300, 0, sizeof(yymsp[1].minor.yy300));}
{memset(&yymsp[1].minor.yy238, 0, sizeof(yymsp[1].minor.yy238));}
break;
case 209: /* intervalKey ::= INTERVAL */
{yymsp[0].minor.yy520 = TK_INTERVAL;}
{yymsp[0].minor.yy508 = TK_INTERVAL;}
break;
case 210: /* intervalKey ::= EVERY */
{yymsp[0].minor.yy520 = TK_EVERY; }
{yymsp[0].minor.yy508 = TK_EVERY; }
break;
case 211: /* session_option ::= */
{yymsp[1].minor.yy219.col.n = 0; yymsp[1].minor.yy219.gap.n = 0;}
{yymsp[1].minor.yy319.col.n = 0; yymsp[1].minor.yy319.gap.n = 0;}
break;
case 212: /* session_option ::= SESSION LP ids cpxName COMMA tmvar RP */
{
yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n;
yymsp[-6].minor.yy219.col = yymsp[-4].minor.yy0;
yymsp[-6].minor.yy219.gap = yymsp[-1].minor.yy0;
yymsp[-6].minor.yy319.col = yymsp[-4].minor.yy0;
yymsp[-6].minor.yy319.gap = yymsp[-1].minor.yy0;
}
break;
case 213: /* windowstate_option ::= */
{ yymsp[1].minor.yy548.col.n = 0; yymsp[1].minor.yy548.col.z = NULL;}
{ yymsp[1].minor.yy546.col.n = 0; yymsp[1].minor.yy546.col.z = NULL;}
break;
case 214: /* windowstate_option ::= STATE_WINDOW LP ids RP */
{ yymsp[-3].minor.yy548.col = yymsp[-1].minor.yy0; }
{ yymsp[-3].minor.yy546.col = yymsp[-1].minor.yy0; }
break;
case 215: /* fill_opt ::= */
{ yymsp[1].minor.yy161 = 0; }
{ yymsp[1].minor.yy525 = 0; }
break;
case 216: /* fill_opt ::= FILL LP ID COMMA tagitemlist RP */
{
......@@ -3382,14 +3069,14 @@ static YYACTIONTYPE yy_reduce(
toTSDBType(yymsp[-3].minor.yy0.type);
tVariantCreate(&A, &yymsp[-3].minor.yy0);
tVariantListInsert(yymsp[-1].minor.yy161, &A, -1, 0);
yymsp[-5].minor.yy161 = yymsp[-1].minor.yy161;
tVariantListInsert(yymsp[-1].minor.yy525, &A, -1, 0);
yymsp[-5].minor.yy525 = yymsp[-1].minor.yy525;
}
break;
case 217: /* fill_opt ::= FILL LP ID RP */
{
toTSDBType(yymsp[-1].minor.yy0.type);
yymsp[-3].minor.yy161 = tVariantListAppendToken(NULL, &yymsp[-1].minor.yy0, -1, true);
yymsp[-3].minor.yy525 = tVariantListAppendToken(NULL, &yymsp[-1].minor.yy0, -1, true);
}
break;
case 218: /* sliding_opt ::= SLIDING LP tmvar RP */
......@@ -3399,298 +3086,298 @@ static YYACTIONTYPE yy_reduce(
{yymsp[1].minor.yy0.n = 0; yymsp[1].minor.yy0.z = NULL; yymsp[1].minor.yy0.type = 0; }
break;
case 221: /* orderby_opt ::= ORDER BY sortlist */
{yymsp[-2].minor.yy161 = yymsp[0].minor.yy161;}
{yymsp[-2].minor.yy525 = yymsp[0].minor.yy525;}
break;
case 222: /* sortlist ::= sortlist COMMA item sortorder */
{
yylhsminor.yy161 = commonItemAppend(yymsp[-3].minor.yy161, &yymsp[-1].minor.yy526, NULL, false, yymsp[0].minor.yy452);
yylhsminor.yy525 = commonItemAppend(yymsp[-3].minor.yy525, &yymsp[-1].minor.yy110, NULL, false, yymsp[0].minor.yy580);
}
yymsp[-3].minor.yy161 = yylhsminor.yy161;
yymsp[-3].minor.yy525 = yylhsminor.yy525;
break;
case 223: /* sortlist ::= sortlist COMMA arrow sortorder */
{
yylhsminor.yy161 = commonItemAppend(yymsp[-3].minor.yy161, NULL, yymsp[-1].minor.yy546, true, yymsp[0].minor.yy452);
yylhsminor.yy525 = commonItemAppend(yymsp[-3].minor.yy525, NULL, yymsp[-1].minor.yy142, true, yymsp[0].minor.yy580);
}
yymsp[-3].minor.yy161 = yylhsminor.yy161;
yymsp[-3].minor.yy525 = yylhsminor.yy525;
break;
case 224: /* sortlist ::= item sortorder */
{
yylhsminor.yy161 = commonItemAppend(NULL, &yymsp[-1].minor.yy526, NULL, false, yymsp[0].minor.yy452);
yylhsminor.yy525 = commonItemAppend(NULL, &yymsp[-1].minor.yy110, NULL, false, yymsp[0].minor.yy580);
}
yymsp[-1].minor.yy161 = yylhsminor.yy161;
yymsp[-1].minor.yy525 = yylhsminor.yy525;
break;
case 225: /* sortlist ::= arrow sortorder */
{
yylhsminor.yy161 = commonItemAppend(NULL, NULL, yymsp[-1].minor.yy546, true, yymsp[0].minor.yy452);
yylhsminor.yy525 = commonItemAppend(NULL, NULL, yymsp[-1].minor.yy142, true, yymsp[0].minor.yy580);
}
yymsp[-1].minor.yy161 = yylhsminor.yy161;
yymsp[-1].minor.yy525 = yylhsminor.yy525;
break;
case 226: /* item ::= ID */
{
toTSDBType(yymsp[0].minor.yy0.type);
tVariantCreate(&yylhsminor.yy526, &yymsp[0].minor.yy0);
tVariantCreate(&yylhsminor.yy110, &yymsp[0].minor.yy0);
}
yymsp[0].minor.yy526 = yylhsminor.yy526;
yymsp[0].minor.yy110 = yylhsminor.yy110;
break;
case 227: /* item ::= ID DOT ID */
{
toTSDBType(yymsp[-2].minor.yy0.type);
yymsp[-2].minor.yy0.n += (1+yymsp[0].minor.yy0.n);
tVariantCreate(&yylhsminor.yy526, &yymsp[-2].minor.yy0);
tVariantCreate(&yylhsminor.yy110, &yymsp[-2].minor.yy0);
}
yymsp[-2].minor.yy526 = yylhsminor.yy526;
yymsp[-2].minor.yy110 = yylhsminor.yy110;
break;
case 228: /* sortorder ::= ASC */
{ yymsp[0].minor.yy452 = TSDB_ORDER_ASC; }
{ yymsp[0].minor.yy580 = TSDB_ORDER_ASC; }
break;
case 229: /* sortorder ::= DESC */
{ yymsp[0].minor.yy452 = TSDB_ORDER_DESC;}
{ yymsp[0].minor.yy580 = TSDB_ORDER_DESC;}
break;
case 230: /* sortorder ::= */
{ yymsp[1].minor.yy452 = TSDB_ORDER_ASC; }
{ yymsp[1].minor.yy580 = TSDB_ORDER_ASC; }
break;
case 231: /* groupby_opt ::= */
{ yymsp[1].minor.yy161 = 0;}
{ yymsp[1].minor.yy525 = 0;}
break;
case 232: /* groupby_opt ::= GROUP BY grouplist */
{ yymsp[-2].minor.yy161 = yymsp[0].minor.yy161;}
{ yymsp[-2].minor.yy525 = yymsp[0].minor.yy525;}
break;
case 233: /* grouplist ::= grouplist COMMA item */
{
yylhsminor.yy161 = commonItemAppend(yymsp[-2].minor.yy161, &yymsp[0].minor.yy526, NULL, false, -1);
yylhsminor.yy525 = commonItemAppend(yymsp[-2].minor.yy525, &yymsp[0].minor.yy110, NULL, false, -1);
}
yymsp[-2].minor.yy161 = yylhsminor.yy161;
yymsp[-2].minor.yy525 = yylhsminor.yy525;
break;
case 234: /* grouplist ::= grouplist COMMA arrow */
{
yylhsminor.yy161 = commonItemAppend(yymsp[-2].minor.yy161, NULL, yymsp[0].minor.yy546, true, -1);
yylhsminor.yy525 = commonItemAppend(yymsp[-2].minor.yy525, NULL, yymsp[0].minor.yy142, true, -1);
}
yymsp[-2].minor.yy161 = yylhsminor.yy161;
yymsp[-2].minor.yy525 = yylhsminor.yy525;
break;
case 235: /* grouplist ::= item */
{
yylhsminor.yy161 = commonItemAppend(NULL, &yymsp[0].minor.yy526, NULL, false, -1);
yylhsminor.yy525 = commonItemAppend(NULL, &yymsp[0].minor.yy110, NULL, false, -1);
}
yymsp[0].minor.yy161 = yylhsminor.yy161;
yymsp[0].minor.yy525 = yylhsminor.yy525;
break;
case 236: /* grouplist ::= arrow */
{
yylhsminor.yy161 = commonItemAppend(NULL, NULL, yymsp[0].minor.yy546, true, -1);
yylhsminor.yy525 = commonItemAppend(NULL, NULL, yymsp[0].minor.yy142, true, -1);
}
yymsp[0].minor.yy161 = yylhsminor.yy161;
yymsp[0].minor.yy525 = yylhsminor.yy525;
break;
case 237: /* having_opt ::= */
case 247: /* where_opt ::= */ yytestcase(yyruleno==247);
case 298: /* expritem ::= */ yytestcase(yyruleno==298);
{yymsp[1].minor.yy546 = 0;}
{yymsp[1].minor.yy142 = 0;}
break;
case 238: /* having_opt ::= HAVING expr */
case 248: /* where_opt ::= WHERE expr */ yytestcase(yyruleno==248);
{yymsp[-1].minor.yy546 = yymsp[0].minor.yy546;}
{yymsp[-1].minor.yy142 = yymsp[0].minor.yy142;}
break;
case 239: /* limit_opt ::= */
case 243: /* slimit_opt ::= */ yytestcase(yyruleno==243);
{yymsp[1].minor.yy394.limit = -1; yymsp[1].minor.yy394.offset = 0;}
{yymsp[1].minor.yy6.limit = -1; yymsp[1].minor.yy6.offset = 0;}
break;
case 240: /* limit_opt ::= LIMIT signed */
case 244: /* slimit_opt ::= SLIMIT signed */ yytestcase(yyruleno==244);
{yymsp[-1].minor.yy394.limit = yymsp[0].minor.yy369; yymsp[-1].minor.yy394.offset = 0;}
{yymsp[-1].minor.yy6.limit = yymsp[0].minor.yy543; yymsp[-1].minor.yy6.offset = 0;}
break;
case 241: /* limit_opt ::= LIMIT signed OFFSET signed */
{ yymsp[-3].minor.yy394.limit = yymsp[-2].minor.yy369; yymsp[-3].minor.yy394.offset = yymsp[0].minor.yy369;}
{ yymsp[-3].minor.yy6.limit = yymsp[-2].minor.yy543; yymsp[-3].minor.yy6.offset = yymsp[0].minor.yy543;}
break;
case 242: /* limit_opt ::= LIMIT signed COMMA signed */
{ yymsp[-3].minor.yy394.limit = yymsp[0].minor.yy369; yymsp[-3].minor.yy394.offset = yymsp[-2].minor.yy369;}
{ yymsp[-3].minor.yy6.limit = yymsp[0].minor.yy543; yymsp[-3].minor.yy6.offset = yymsp[-2].minor.yy543;}
break;
case 245: /* slimit_opt ::= SLIMIT signed SOFFSET signed */
{yymsp[-3].minor.yy394.limit = yymsp[-2].minor.yy369; yymsp[-3].minor.yy394.offset = yymsp[0].minor.yy369;}
{yymsp[-3].minor.yy6.limit = yymsp[-2].minor.yy543; yymsp[-3].minor.yy6.offset = yymsp[0].minor.yy543;}
break;
case 246: /* slimit_opt ::= SLIMIT signed COMMA signed */
{yymsp[-3].minor.yy394.limit = yymsp[0].minor.yy369; yymsp[-3].minor.yy394.offset = yymsp[-2].minor.yy369;}
{yymsp[-3].minor.yy6.limit = yymsp[0].minor.yy543; yymsp[-3].minor.yy6.offset = yymsp[-2].minor.yy543;}
break;
case 249: /* expr ::= LP expr RP */
{yylhsminor.yy546 = yymsp[-1].minor.yy546; yylhsminor.yy546->exprToken.z = yymsp[-2].minor.yy0.z; yylhsminor.yy546->exprToken.n = (yymsp[0].minor.yy0.z - yymsp[-2].minor.yy0.z + 1);}
yymsp[-2].minor.yy546 = yylhsminor.yy546;
{yylhsminor.yy142 = yymsp[-1].minor.yy142; yylhsminor.yy142->exprToken.z = yymsp[-2].minor.yy0.z; yylhsminor.yy142->exprToken.n = (yymsp[0].minor.yy0.z - yymsp[-2].minor.yy0.z + 1);}
yymsp[-2].minor.yy142 = yylhsminor.yy142;
break;
case 250: /* expr ::= ID */
{ yylhsminor.yy546 = tSqlExprCreateIdValue(pInfo, &yymsp[0].minor.yy0, TK_ID);}
yymsp[0].minor.yy546 = yylhsminor.yy546;
{ yylhsminor.yy142 = tSqlExprCreateIdValue(pInfo, &yymsp[0].minor.yy0, TK_ID);}
yymsp[0].minor.yy142 = yylhsminor.yy142;
break;
case 251: /* expr ::= ID DOT ID */
{ yymsp[-2].minor.yy0.n += (1+yymsp[0].minor.yy0.n); yylhsminor.yy546 = tSqlExprCreateIdValue(pInfo, &yymsp[-2].minor.yy0, TK_ID);}
yymsp[-2].minor.yy546 = yylhsminor.yy546;
{ yymsp[-2].minor.yy0.n += (1+yymsp[0].minor.yy0.n); yylhsminor.yy142 = tSqlExprCreateIdValue(pInfo, &yymsp[-2].minor.yy0, TK_ID);}
yymsp[-2].minor.yy142 = yylhsminor.yy142;
break;
case 252: /* expr ::= ID DOT STAR */
{ yymsp[-2].minor.yy0.n += (1+yymsp[0].minor.yy0.n); yylhsminor.yy546 = tSqlExprCreateIdValue(pInfo, &yymsp[-2].minor.yy0, TK_ALL);}
yymsp[-2].minor.yy546 = yylhsminor.yy546;
{ yymsp[-2].minor.yy0.n += (1+yymsp[0].minor.yy0.n); yylhsminor.yy142 = tSqlExprCreateIdValue(pInfo, &yymsp[-2].minor.yy0, TK_ALL);}
yymsp[-2].minor.yy142 = yylhsminor.yy142;
break;
case 253: /* expr ::= INTEGER */
{ yylhsminor.yy546 = tSqlExprCreateIdValue(pInfo, &yymsp[0].minor.yy0, TK_INTEGER);}
yymsp[0].minor.yy546 = yylhsminor.yy546;
{ yylhsminor.yy142 = tSqlExprCreateIdValue(pInfo, &yymsp[0].minor.yy0, TK_INTEGER);}
yymsp[0].minor.yy142 = yylhsminor.yy142;
break;
case 254: /* expr ::= MINUS INTEGER */
case 255: /* expr ::= PLUS INTEGER */ yytestcase(yyruleno==255);
{ yymsp[-1].minor.yy0.n += yymsp[0].minor.yy0.n; yymsp[-1].minor.yy0.type = TK_INTEGER; yylhsminor.yy546 = tSqlExprCreateIdValue(pInfo, &yymsp[-1].minor.yy0, TK_INTEGER);}
yymsp[-1].minor.yy546 = yylhsminor.yy546;
{ yymsp[-1].minor.yy0.n += yymsp[0].minor.yy0.n; yymsp[-1].minor.yy0.type = TK_INTEGER; yylhsminor.yy142 = tSqlExprCreateIdValue(pInfo, &yymsp[-1].minor.yy0, TK_INTEGER);}
yymsp[-1].minor.yy142 = yylhsminor.yy142;
break;
case 256: /* expr ::= FLOAT */
{ yylhsminor.yy546 = tSqlExprCreateIdValue(pInfo, &yymsp[0].minor.yy0, TK_FLOAT);}
yymsp[0].minor.yy546 = yylhsminor.yy546;
{ yylhsminor.yy142 = tSqlExprCreateIdValue(pInfo, &yymsp[0].minor.yy0, TK_FLOAT);}
yymsp[0].minor.yy142 = yylhsminor.yy142;
break;
case 257: /* expr ::= MINUS FLOAT */
case 258: /* expr ::= PLUS FLOAT */ yytestcase(yyruleno==258);
{ yymsp[-1].minor.yy0.n += yymsp[0].minor.yy0.n; yymsp[-1].minor.yy0.type = TK_FLOAT; yylhsminor.yy546 = tSqlExprCreateIdValue(pInfo, &yymsp[-1].minor.yy0, TK_FLOAT);}
yymsp[-1].minor.yy546 = yylhsminor.yy546;
{ yymsp[-1].minor.yy0.n += yymsp[0].minor.yy0.n; yymsp[-1].minor.yy0.type = TK_FLOAT; yylhsminor.yy142 = tSqlExprCreateIdValue(pInfo, &yymsp[-1].minor.yy0, TK_FLOAT);}
yymsp[-1].minor.yy142 = yylhsminor.yy142;
break;
case 259: /* expr ::= STRING */
{ yylhsminor.yy546 = tSqlExprCreateIdValue(pInfo, &yymsp[0].minor.yy0, TK_STRING);}
yymsp[0].minor.yy546 = yylhsminor.yy546;
{ yylhsminor.yy142 = tSqlExprCreateIdValue(pInfo, &yymsp[0].minor.yy0, TK_STRING);}
yymsp[0].minor.yy142 = yylhsminor.yy142;
break;
case 260: /* expr ::= NOW */
{ yylhsminor.yy546 = tSqlExprCreateIdValue(pInfo, &yymsp[0].minor.yy0, TK_NOW); }
yymsp[0].minor.yy546 = yylhsminor.yy546;
{ yylhsminor.yy142 = tSqlExprCreateIdValue(pInfo, &yymsp[0].minor.yy0, TK_NOW); }
yymsp[0].minor.yy142 = yylhsminor.yy142;
break;
case 261: /* expr ::= TODAY */
{ yylhsminor.yy546 = tSqlExprCreateIdValue(pInfo, &yymsp[0].minor.yy0, TK_TODAY); }
yymsp[0].minor.yy546 = yylhsminor.yy546;
{ yylhsminor.yy142 = tSqlExprCreateIdValue(pInfo, &yymsp[0].minor.yy0, TK_TODAY); }
yymsp[0].minor.yy142 = yylhsminor.yy142;
break;
case 262: /* expr ::= VARIABLE */
{ yylhsminor.yy546 = tSqlExprCreateIdValue(pInfo, &yymsp[0].minor.yy0, TK_VARIABLE);}
yymsp[0].minor.yy546 = yylhsminor.yy546;
{ yylhsminor.yy142 = tSqlExprCreateIdValue(pInfo, &yymsp[0].minor.yy0, TK_VARIABLE);}
yymsp[0].minor.yy142 = yylhsminor.yy142;
break;
case 263: /* expr ::= PLUS VARIABLE */
case 264: /* expr ::= MINUS VARIABLE */ yytestcase(yyruleno==264);
{ yymsp[-1].minor.yy0.n += yymsp[0].minor.yy0.n; yymsp[-1].minor.yy0.type = TK_VARIABLE; yylhsminor.yy546 = tSqlExprCreateIdValue(pInfo, &yymsp[-1].minor.yy0, TK_VARIABLE);}
yymsp[-1].minor.yy546 = yylhsminor.yy546;
{ yymsp[-1].minor.yy0.n += yymsp[0].minor.yy0.n; yymsp[-1].minor.yy0.type = TK_VARIABLE; yylhsminor.yy142 = tSqlExprCreateIdValue(pInfo, &yymsp[-1].minor.yy0, TK_VARIABLE);}
yymsp[-1].minor.yy142 = yylhsminor.yy142;
break;
case 265: /* expr ::= BOOL */
{ yylhsminor.yy546 = tSqlExprCreateIdValue(pInfo, &yymsp[0].minor.yy0, TK_BOOL);}
yymsp[0].minor.yy546 = yylhsminor.yy546;
{ yylhsminor.yy142 = tSqlExprCreateIdValue(pInfo, &yymsp[0].minor.yy0, TK_BOOL);}
yymsp[0].minor.yy142 = yylhsminor.yy142;
break;
case 266: /* expr ::= NULL */
{ yylhsminor.yy546 = tSqlExprCreateIdValue(pInfo, &yymsp[0].minor.yy0, TK_NULL);}
yymsp[0].minor.yy546 = yylhsminor.yy546;
{ yylhsminor.yy142 = tSqlExprCreateIdValue(pInfo, &yymsp[0].minor.yy0, TK_NULL);}
yymsp[0].minor.yy142 = yylhsminor.yy142;
break;
case 267: /* expr ::= ID LP exprlist RP */
{ tStrTokenAppend(pInfo->funcs, &yymsp[-3].minor.yy0); yylhsminor.yy546 = tSqlExprCreateFunction(yymsp[-1].minor.yy161, &yymsp[-3].minor.yy0, &yymsp[0].minor.yy0, yymsp[-3].minor.yy0.type); }
yymsp[-3].minor.yy546 = yylhsminor.yy546;
{ tStrTokenAppend(pInfo->funcs, &yymsp[-3].minor.yy0); yylhsminor.yy142 = tSqlExprCreateFunction(yymsp[-1].minor.yy525, &yymsp[-3].minor.yy0, &yymsp[0].minor.yy0, yymsp[-3].minor.yy0.type); }
yymsp[-3].minor.yy142 = yylhsminor.yy142;
break;
case 268: /* expr ::= ID LP STAR RP */
{ tStrTokenAppend(pInfo->funcs, &yymsp[-3].minor.yy0); yylhsminor.yy546 = tSqlExprCreateFunction(NULL, &yymsp[-3].minor.yy0, &yymsp[0].minor.yy0, yymsp[-3].minor.yy0.type); }
yymsp[-3].minor.yy546 = yylhsminor.yy546;
{ tStrTokenAppend(pInfo->funcs, &yymsp[-3].minor.yy0); yylhsminor.yy142 = tSqlExprCreateFunction(NULL, &yymsp[-3].minor.yy0, &yymsp[0].minor.yy0, yymsp[-3].minor.yy0.type); }
yymsp[-3].minor.yy142 = yylhsminor.yy142;
break;
case 269: /* expr ::= ID LP expr AS typename RP */
{ tStrTokenAppend(pInfo->funcs, &yymsp[-5].minor.yy0); yylhsminor.yy546 = tSqlExprCreateFuncWithParams(pInfo, yymsp[-3].minor.yy546, &yymsp[-1].minor.yy223, &yymsp[-5].minor.yy0, &yymsp[0].minor.yy0, yymsp[-5].minor.yy0.type); }
yymsp[-5].minor.yy546 = yylhsminor.yy546;
{ tStrTokenAppend(pInfo->funcs, &yymsp[-5].minor.yy0); yylhsminor.yy142 = tSqlExprCreateFuncWithParams(pInfo, yymsp[-3].minor.yy142, &yymsp[-1].minor.yy115, &yymsp[-5].minor.yy0, &yymsp[0].minor.yy0, yymsp[-5].minor.yy0.type); }
yymsp[-5].minor.yy142 = yylhsminor.yy142;
break;
case 270: /* expr ::= expr IS NULL */
{yylhsminor.yy546 = tSqlExprCreate(yymsp[-2].minor.yy546, NULL, TK_ISNULL);}
yymsp[-2].minor.yy546 = yylhsminor.yy546;
{yylhsminor.yy142 = tSqlExprCreate(yymsp[-2].minor.yy142, NULL, TK_ISNULL);}
yymsp[-2].minor.yy142 = yylhsminor.yy142;
break;
case 271: /* expr ::= expr IS NOT NULL */
{yylhsminor.yy546 = tSqlExprCreate(yymsp[-3].minor.yy546, NULL, TK_NOTNULL);}
yymsp[-3].minor.yy546 = yylhsminor.yy546;
{yylhsminor.yy142 = tSqlExprCreate(yymsp[-3].minor.yy142, NULL, TK_NOTNULL);}
yymsp[-3].minor.yy142 = yylhsminor.yy142;
break;
case 272: /* expr ::= expr LT expr */
{yylhsminor.yy546 = tSqlExprCreate(yymsp[-2].minor.yy546, yymsp[0].minor.yy546, TK_LT);}
yymsp[-2].minor.yy546 = yylhsminor.yy546;
{yylhsminor.yy142 = tSqlExprCreate(yymsp[-2].minor.yy142, yymsp[0].minor.yy142, TK_LT);}
yymsp[-2].minor.yy142 = yylhsminor.yy142;
break;
case 273: /* expr ::= expr GT expr */
{yylhsminor.yy546 = tSqlExprCreate(yymsp[-2].minor.yy546, yymsp[0].minor.yy546, TK_GT);}
yymsp[-2].minor.yy546 = yylhsminor.yy546;
{yylhsminor.yy142 = tSqlExprCreate(yymsp[-2].minor.yy142, yymsp[0].minor.yy142, TK_GT);}
yymsp[-2].minor.yy142 = yylhsminor.yy142;
break;
case 274: /* expr ::= expr LE expr */
{yylhsminor.yy546 = tSqlExprCreate(yymsp[-2].minor.yy546, yymsp[0].minor.yy546, TK_LE);}
yymsp[-2].minor.yy546 = yylhsminor.yy546;
{yylhsminor.yy142 = tSqlExprCreate(yymsp[-2].minor.yy142, yymsp[0].minor.yy142, TK_LE);}
yymsp[-2].minor.yy142 = yylhsminor.yy142;
break;
case 275: /* expr ::= expr GE expr */
{yylhsminor.yy546 = tSqlExprCreate(yymsp[-2].minor.yy546, yymsp[0].minor.yy546, TK_GE);}
yymsp[-2].minor.yy546 = yylhsminor.yy546;
{yylhsminor.yy142 = tSqlExprCreate(yymsp[-2].minor.yy142, yymsp[0].minor.yy142, TK_GE);}
yymsp[-2].minor.yy142 = yylhsminor.yy142;
break;
case 276: /* expr ::= expr NE expr */
{yylhsminor.yy546 = tSqlExprCreate(yymsp[-2].minor.yy546, yymsp[0].minor.yy546, TK_NE);}
yymsp[-2].minor.yy546 = yylhsminor.yy546;
{yylhsminor.yy142 = tSqlExprCreate(yymsp[-2].minor.yy142, yymsp[0].minor.yy142, TK_NE);}
yymsp[-2].minor.yy142 = yylhsminor.yy142;
break;
case 277: /* expr ::= expr EQ expr */
{yylhsminor.yy546 = tSqlExprCreate(yymsp[-2].minor.yy546, yymsp[0].minor.yy546, TK_EQ);}
yymsp[-2].minor.yy546 = yylhsminor.yy546;
{yylhsminor.yy142 = tSqlExprCreate(yymsp[-2].minor.yy142, yymsp[0].minor.yy142, TK_EQ);}
yymsp[-2].minor.yy142 = yylhsminor.yy142;
break;
case 278: /* expr ::= expr BETWEEN expr AND expr */
{ tSqlExpr* X2 = tSqlExprClone(yymsp[-4].minor.yy546); yylhsminor.yy546 = tSqlExprCreate(tSqlExprCreate(yymsp[-4].minor.yy546, yymsp[-2].minor.yy546, TK_GE), tSqlExprCreate(X2, yymsp[0].minor.yy546, TK_LE), TK_AND);}
yymsp[-4].minor.yy546 = yylhsminor.yy546;
{ tSqlExpr* X2 = tSqlExprClone(yymsp[-4].minor.yy142); yylhsminor.yy142 = tSqlExprCreate(tSqlExprCreate(yymsp[-4].minor.yy142, yymsp[-2].minor.yy142, TK_GE), tSqlExprCreate(X2, yymsp[0].minor.yy142, TK_LE), TK_AND);}
yymsp[-4].minor.yy142 = yylhsminor.yy142;
break;
case 279: /* expr ::= expr AND expr */
{yylhsminor.yy546 = tSqlExprCreate(yymsp[-2].minor.yy546, yymsp[0].minor.yy546, TK_AND);}
yymsp[-2].minor.yy546 = yylhsminor.yy546;
{yylhsminor.yy142 = tSqlExprCreate(yymsp[-2].minor.yy142, yymsp[0].minor.yy142, TK_AND);}
yymsp[-2].minor.yy142 = yylhsminor.yy142;
break;
case 280: /* expr ::= expr OR expr */
{yylhsminor.yy546 = tSqlExprCreate(yymsp[-2].minor.yy546, yymsp[0].minor.yy546, TK_OR); }
yymsp[-2].minor.yy546 = yylhsminor.yy546;
{yylhsminor.yy142 = tSqlExprCreate(yymsp[-2].minor.yy142, yymsp[0].minor.yy142, TK_OR); }
yymsp[-2].minor.yy142 = yylhsminor.yy142;
break;
case 281: /* expr ::= expr PLUS expr */
{yylhsminor.yy546 = tSqlExprCreate(yymsp[-2].minor.yy546, yymsp[0].minor.yy546, TK_PLUS); }
yymsp[-2].minor.yy546 = yylhsminor.yy546;
{yylhsminor.yy142 = tSqlExprCreate(yymsp[-2].minor.yy142, yymsp[0].minor.yy142, TK_PLUS); }
yymsp[-2].minor.yy142 = yylhsminor.yy142;
break;
case 282: /* expr ::= expr MINUS expr */
{yylhsminor.yy546 = tSqlExprCreate(yymsp[-2].minor.yy546, yymsp[0].minor.yy546, TK_MINUS); }
yymsp[-2].minor.yy546 = yylhsminor.yy546;
{yylhsminor.yy142 = tSqlExprCreate(yymsp[-2].minor.yy142, yymsp[0].minor.yy142, TK_MINUS); }
yymsp[-2].minor.yy142 = yylhsminor.yy142;
break;
case 283: /* expr ::= expr STAR expr */
{yylhsminor.yy546 = tSqlExprCreate(yymsp[-2].minor.yy546, yymsp[0].minor.yy546, TK_STAR); }
yymsp[-2].minor.yy546 = yylhsminor.yy546;
{yylhsminor.yy142 = tSqlExprCreate(yymsp[-2].minor.yy142, yymsp[0].minor.yy142, TK_STAR); }
yymsp[-2].minor.yy142 = yylhsminor.yy142;
break;
case 284: /* expr ::= expr SLASH expr */
{yylhsminor.yy546 = tSqlExprCreate(yymsp[-2].minor.yy546, yymsp[0].minor.yy546, TK_DIVIDE);}
yymsp[-2].minor.yy546 = yylhsminor.yy546;
{yylhsminor.yy142 = tSqlExprCreate(yymsp[-2].minor.yy142, yymsp[0].minor.yy142, TK_DIVIDE);}
yymsp[-2].minor.yy142 = yylhsminor.yy142;
break;
case 285: /* expr ::= expr REM expr */
{yylhsminor.yy546 = tSqlExprCreate(yymsp[-2].minor.yy546, yymsp[0].minor.yy546, TK_REM); }
yymsp[-2].minor.yy546 = yylhsminor.yy546;
{yylhsminor.yy142 = tSqlExprCreate(yymsp[-2].minor.yy142, yymsp[0].minor.yy142, TK_REM); }
yymsp[-2].minor.yy142 = yylhsminor.yy142;
break;
case 286: /* expr ::= expr LIKE expr */
{yylhsminor.yy546 = tSqlExprCreate(yymsp[-2].minor.yy546, yymsp[0].minor.yy546, TK_LIKE); }
yymsp[-2].minor.yy546 = yylhsminor.yy546;
{yylhsminor.yy142 = tSqlExprCreate(yymsp[-2].minor.yy142, yymsp[0].minor.yy142, TK_LIKE); }
yymsp[-2].minor.yy142 = yylhsminor.yy142;
break;
case 287: /* expr ::= expr MATCH expr */
{yylhsminor.yy546 = tSqlExprCreate(yymsp[-2].minor.yy546, yymsp[0].minor.yy546, TK_MATCH); }
yymsp[-2].minor.yy546 = yylhsminor.yy546;
{yylhsminor.yy142 = tSqlExprCreate(yymsp[-2].minor.yy142, yymsp[0].minor.yy142, TK_MATCH); }
yymsp[-2].minor.yy142 = yylhsminor.yy142;
break;
case 288: /* expr ::= expr NMATCH expr */
{yylhsminor.yy546 = tSqlExprCreate(yymsp[-2].minor.yy546, yymsp[0].minor.yy546, TK_NMATCH); }
yymsp[-2].minor.yy546 = yylhsminor.yy546;
{yylhsminor.yy142 = tSqlExprCreate(yymsp[-2].minor.yy142, yymsp[0].minor.yy142, TK_NMATCH); }
yymsp[-2].minor.yy142 = yylhsminor.yy142;
break;
case 289: /* expr ::= ID CONTAINS STRING */
{ tSqlExpr* S = tSqlExprCreateIdValue(pInfo, &yymsp[-2].minor.yy0, TK_ID); tSqlExpr* M = tSqlExprCreateIdValue(pInfo, &yymsp[0].minor.yy0, TK_STRING); yylhsminor.yy546 = tSqlExprCreate(S, M, TK_CONTAINS); }
yymsp[-2].minor.yy546 = yylhsminor.yy546;
{ tSqlExpr* S = tSqlExprCreateIdValue(pInfo, &yymsp[-2].minor.yy0, TK_ID); tSqlExpr* M = tSqlExprCreateIdValue(pInfo, &yymsp[0].minor.yy0, TK_STRING); yylhsminor.yy142 = tSqlExprCreate(S, M, TK_CONTAINS); }
yymsp[-2].minor.yy142 = yylhsminor.yy142;
break;
case 290: /* expr ::= ID DOT ID CONTAINS STRING */
{ yymsp[-4].minor.yy0.n += (1+yymsp[-2].minor.yy0.n); tSqlExpr* S = tSqlExprCreateIdValue(pInfo, &yymsp[-4].minor.yy0, TK_ID); tSqlExpr* M = tSqlExprCreateIdValue(pInfo, &yymsp[0].minor.yy0, TK_STRING); yylhsminor.yy546 = tSqlExprCreate(S, M, TK_CONTAINS); }
yymsp[-4].minor.yy546 = yylhsminor.yy546;
{ yymsp[-4].minor.yy0.n += (1+yymsp[-2].minor.yy0.n); tSqlExpr* S = tSqlExprCreateIdValue(pInfo, &yymsp[-4].minor.yy0, TK_ID); tSqlExpr* M = tSqlExprCreateIdValue(pInfo, &yymsp[0].minor.yy0, TK_STRING); yylhsminor.yy142 = tSqlExprCreate(S, M, TK_CONTAINS); }
yymsp[-4].minor.yy142 = yylhsminor.yy142;
break;
case 291: /* arrow ::= ID ARROW STRING */
{tSqlExpr* S = tSqlExprCreateIdValue(pInfo, &yymsp[-2].minor.yy0, TK_ID); tSqlExpr* M = tSqlExprCreateIdValue(pInfo, &yymsp[0].minor.yy0, TK_STRING); yylhsminor.yy546 = tSqlExprCreate(S, M, TK_ARROW); }
yymsp[-2].minor.yy546 = yylhsminor.yy546;
{tSqlExpr* S = tSqlExprCreateIdValue(pInfo, &yymsp[-2].minor.yy0, TK_ID); tSqlExpr* M = tSqlExprCreateIdValue(pInfo, &yymsp[0].minor.yy0, TK_STRING); yylhsminor.yy142 = tSqlExprCreate(S, M, TK_ARROW); }
yymsp[-2].minor.yy142 = yylhsminor.yy142;
break;
case 292: /* arrow ::= ID DOT ID ARROW STRING */
{yymsp[-4].minor.yy0.n += (1+yymsp[-2].minor.yy0.n); tSqlExpr* S = tSqlExprCreateIdValue(pInfo, &yymsp[-4].minor.yy0, TK_ID); tSqlExpr* M = tSqlExprCreateIdValue(pInfo, &yymsp[0].minor.yy0, TK_STRING); yylhsminor.yy546 = tSqlExprCreate(S, M, TK_ARROW); }
yymsp[-4].minor.yy546 = yylhsminor.yy546;
{yymsp[-4].minor.yy0.n += (1+yymsp[-2].minor.yy0.n); tSqlExpr* S = tSqlExprCreateIdValue(pInfo, &yymsp[-4].minor.yy0, TK_ID); tSqlExpr* M = tSqlExprCreateIdValue(pInfo, &yymsp[0].minor.yy0, TK_STRING); yylhsminor.yy142 = tSqlExprCreate(S, M, TK_ARROW); }
yymsp[-4].minor.yy142 = yylhsminor.yy142;
break;
case 293: /* expr ::= arrow */
case 297: /* expritem ::= expr */ yytestcase(yyruleno==297);
{yylhsminor.yy546 = yymsp[0].minor.yy546;}
yymsp[0].minor.yy546 = yylhsminor.yy546;
{yylhsminor.yy142 = yymsp[0].minor.yy142;}
yymsp[0].minor.yy142 = yylhsminor.yy142;
break;
case 294: /* expr ::= expr IN LP exprlist RP */
{yylhsminor.yy546 = tSqlExprCreate(yymsp[-4].minor.yy546, (tSqlExpr*)yymsp[-1].minor.yy161, TK_IN); }
yymsp[-4].minor.yy546 = yylhsminor.yy546;
{yylhsminor.yy142 = tSqlExprCreate(yymsp[-4].minor.yy142, (tSqlExpr*)yymsp[-1].minor.yy525, TK_IN); }
yymsp[-4].minor.yy142 = yylhsminor.yy142;
break;
case 295: /* exprlist ::= exprlist COMMA expritem */
{yylhsminor.yy161 = tSqlExprListAppend(yymsp[-2].minor.yy161,yymsp[0].minor.yy546,0, 0);}
yymsp[-2].minor.yy161 = yylhsminor.yy161;
{yylhsminor.yy525 = tSqlExprListAppend(yymsp[-2].minor.yy525,yymsp[0].minor.yy142,0, 0);}
yymsp[-2].minor.yy525 = yylhsminor.yy525;
break;
case 296: /* exprlist ::= expritem */
{yylhsminor.yy161 = tSqlExprListAppend(0,yymsp[0].minor.yy546,0, 0);}
yymsp[0].minor.yy161 = yylhsminor.yy161;
{yylhsminor.yy525 = tSqlExprListAppend(0,yymsp[0].minor.yy142,0, 0);}
yymsp[0].minor.yy525 = yylhsminor.yy525;
break;
case 299: /* cmd ::= RESET QUERY CACHE */
{ setDCLSqlElems(pInfo, TSDB_SQL_RESET_CACHE, 0);}
......@@ -3701,7 +3388,7 @@ static YYACTIONTYPE yy_reduce(
case 301: /* cmd ::= ALTER TABLE ids cpxName ADD COLUMN columnlist */
{
yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n;
SAlterTableInfo* pAlterTable = tSetAlterTableInfo(&yymsp[-4].minor.yy0, yymsp[0].minor.yy161, NULL, TSDB_ALTER_TABLE_ADD_COLUMN, -1);
SAlterTableInfo* pAlterTable = tSetAlterTableInfo(&yymsp[-4].minor.yy0, yymsp[0].minor.yy525, NULL, TSDB_ALTER_TABLE_ADD_COLUMN, -1);
setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE);
}
break;
......@@ -3719,14 +3406,14 @@ static YYACTIONTYPE yy_reduce(
case 303: /* cmd ::= ALTER TABLE ids cpxName MODIFY COLUMN columnlist */
{
yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n;
SAlterTableInfo* pAlterTable = tSetAlterTableInfo(&yymsp[-4].minor.yy0, yymsp[0].minor.yy161, NULL, TSDB_ALTER_TABLE_CHANGE_COLUMN, -1);
SAlterTableInfo* pAlterTable = tSetAlterTableInfo(&yymsp[-4].minor.yy0, yymsp[0].minor.yy525, NULL, TSDB_ALTER_TABLE_CHANGE_COLUMN, -1);
setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE);
}
break;
case 304: /* cmd ::= ALTER TABLE ids cpxName ADD TAG columnlist */
{
yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n;
SAlterTableInfo* pAlterTable = tSetAlterTableInfo(&yymsp[-4].minor.yy0, yymsp[0].minor.yy161, NULL, TSDB_ALTER_TABLE_ADD_TAG_COLUMN, -1);
SAlterTableInfo* pAlterTable = tSetAlterTableInfo(&yymsp[-4].minor.yy0, yymsp[0].minor.yy525, NULL, TSDB_ALTER_TABLE_ADD_TAG_COLUMN, -1);
setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE);
}
break;
......@@ -3761,7 +3448,7 @@ static YYACTIONTYPE yy_reduce(
toTSDBType(yymsp[-2].minor.yy0.type);
SArray* A = tVariantListAppendToken(NULL, &yymsp[-2].minor.yy0, -1, false);
A = tVariantListAppend(A, &yymsp[0].minor.yy526, -1);
A = tVariantListAppend(A, &yymsp[0].minor.yy110, -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);
......@@ -3770,14 +3457,14 @@ static YYACTIONTYPE yy_reduce(
case 308: /* cmd ::= ALTER TABLE ids cpxName MODIFY TAG columnlist */
{
yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n;
SAlterTableInfo* pAlterTable = tSetAlterTableInfo(&yymsp[-4].minor.yy0, yymsp[0].minor.yy161, NULL, TSDB_ALTER_TABLE_MODIFY_TAG_COLUMN, -1);
SAlterTableInfo* pAlterTable = tSetAlterTableInfo(&yymsp[-4].minor.yy0, yymsp[0].minor.yy525, NULL, TSDB_ALTER_TABLE_MODIFY_TAG_COLUMN, -1);
setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE);
}
break;
case 309: /* cmd ::= ALTER STABLE ids cpxName ADD COLUMN columnlist */
{
yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n;
SAlterTableInfo* pAlterTable = tSetAlterTableInfo(&yymsp[-4].minor.yy0, yymsp[0].minor.yy161, NULL, TSDB_ALTER_TABLE_ADD_COLUMN, TSDB_SUPER_TABLE);
SAlterTableInfo* pAlterTable = tSetAlterTableInfo(&yymsp[-4].minor.yy0, yymsp[0].minor.yy525, NULL, TSDB_ALTER_TABLE_ADD_COLUMN, TSDB_SUPER_TABLE);
setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE);
}
break;
......@@ -3795,14 +3482,14 @@ static YYACTIONTYPE yy_reduce(
case 311: /* cmd ::= ALTER STABLE ids cpxName MODIFY COLUMN columnlist */
{
yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n;
SAlterTableInfo* pAlterTable = tSetAlterTableInfo(&yymsp[-4].minor.yy0, yymsp[0].minor.yy161, NULL, TSDB_ALTER_TABLE_CHANGE_COLUMN, TSDB_SUPER_TABLE);
SAlterTableInfo* pAlterTable = tSetAlterTableInfo(&yymsp[-4].minor.yy0, yymsp[0].minor.yy525, NULL, TSDB_ALTER_TABLE_CHANGE_COLUMN, TSDB_SUPER_TABLE);
setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE);
}
break;
case 312: /* cmd ::= ALTER STABLE ids cpxName ADD TAG columnlist */
{
yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n;
SAlterTableInfo* pAlterTable = tSetAlterTableInfo(&yymsp[-4].minor.yy0, yymsp[0].minor.yy161, NULL, TSDB_ALTER_TABLE_ADD_TAG_COLUMN, TSDB_SUPER_TABLE);
SAlterTableInfo* pAlterTable = tSetAlterTableInfo(&yymsp[-4].minor.yy0, yymsp[0].minor.yy525, NULL, TSDB_ALTER_TABLE_ADD_TAG_COLUMN, TSDB_SUPER_TABLE);
setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE);
}
break;
......@@ -3837,7 +3524,7 @@ static YYACTIONTYPE yy_reduce(
toTSDBType(yymsp[-2].minor.yy0.type);
SArray* A = tVariantListAppendToken(NULL, &yymsp[-2].minor.yy0, -1, false);
A = tVariantListAppend(A, &yymsp[0].minor.yy526, -1);
A = tVariantListAppend(A, &yymsp[0].minor.yy110, -1);
SAlterTableInfo* pAlterTable = tSetAlterTableInfo(&yymsp[-6].minor.yy0, NULL, A, TSDB_ALTER_TABLE_UPDATE_TAG_VAL, TSDB_SUPER_TABLE);
setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE);
......@@ -3846,7 +3533,7 @@ static YYACTIONTYPE yy_reduce(
case 316: /* cmd ::= ALTER STABLE ids cpxName MODIFY TAG columnlist */
{
yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n;
SAlterTableInfo* pAlterTable = tSetAlterTableInfo(&yymsp[-4].minor.yy0, yymsp[0].minor.yy161, NULL, TSDB_ALTER_TABLE_MODIFY_TAG_COLUMN, TSDB_SUPER_TABLE);
SAlterTableInfo* pAlterTable = tSetAlterTableInfo(&yymsp[-4].minor.yy0, yymsp[0].minor.yy525, NULL, TSDB_ALTER_TABLE_MODIFY_TAG_COLUMN, TSDB_SUPER_TABLE);
setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE);
}
break;
......@@ -3859,13 +3546,20 @@ static YYACTIONTYPE yy_reduce(
case 319: /* cmd ::= KILL QUERY INTEGER COLON INTEGER */
{yymsp[-2].minor.yy0.n += (yymsp[-1].minor.yy0.n + yymsp[0].minor.yy0.n); setKillSql(pInfo, TSDB_SQL_KILL_QUERY, &yymsp[-2].minor.yy0);}
break;
case 320: /* cmd ::= DELETE FROM ifexists ids cpxName where_opt */
{
yymsp[-2].minor.yy0.n += yymsp[-1].minor.yy0.n;
SDelData * pDelData = tGetDelData(&yymsp[-2].minor.yy0, &yymsp[-3].minor.yy0, yymsp[0].minor.yy142);
setSqlInfo(pInfo, pDelData, NULL, TSDB_SQL_DELETE_DATA);
}
break;
default:
break;
/********** End reduce actions ************************************************/
};
assert( yyruleno<sizeof(yyRuleInfoLhs)/sizeof(yyRuleInfoLhs[0]) );
yygoto = yyRuleInfoLhs[yyruleno];
yysize = yyRuleInfoNRhs[yyruleno];
assert( yyruleno<sizeof(yyRuleInfo)/sizeof(yyRuleInfo[0]) );
yygoto = yyRuleInfo[yyruleno].lhs;
yysize = yyRuleInfo[yyruleno].nrhs;
yyact = yy_find_reduce_action(yymsp[yysize].stateno,(YYCODETYPE)yygoto);
/* There are no SHIFTREDUCE actions on nonterminals because the table
......@@ -4167,10 +3861,11 @@ void Parse(
*/
int ParseFallback(int iToken){
#ifdef YYFALLBACK
assert( iToken<(int)(sizeof(yyFallback)/sizeof(yyFallback[0])) );
if( iToken<(int)(sizeof(yyFallback)/sizeof(yyFallback[0])) ){
return yyFallback[iToken];
}
#else
(void)iToken;
return 0;
#endif
return 0;
}
......@@ -49,15 +49,17 @@ static int tsdbInitSubmitMsgIter(SSubmitMsg *pMsg, SSubmitMsgIter *pIte
static int tsdbGetSubmitMsgNext(SSubmitMsgIter *pIter, SSubmitBlk **pPBlock);
static int tsdbCheckTableSchema(STsdbRepo *pRepo, SSubmitBlk *pBlock, STable *pTable);
static int tsdbUpdateTableLatestInfo(STsdbRepo *pRepo, STable *pTable, SMemRow row);
static int32_t tsdbInsertControlData(STsdbRepo* pRepo, SSubmitBlk* pBlock, SShellSubmitRspMsg *pRsp, sem_t* pSem);
static FORCE_INLINE int tsdbCheckRowRange(STsdbRepo *pRepo, STable *pTable, SMemRow row, TSKEY minKey, TSKEY maxKey,
TSKEY now);
int32_t tsdbInsertData(STsdbRepo *repo, SSubmitMsg *pMsg, SShellSubmitRspMsg *pRsp) {
int32_t tsdbInsertData(STsdbRepo *repo, SSubmitMsg *pMsg, SShellSubmitRspMsg *pRsp, sem_t* pSem) {
STsdbRepo * pRepo = repo;
SSubmitMsgIter msgIter = {0};
SSubmitBlk * pBlock = NULL;
int32_t affectedrows = 0, numOfRows = 0;
int32_t ret = TSDB_CODE_SUCCESS;
if (tsdbScanAndConvertSubmitMsg(pRepo, pMsg) < 0) {
if (terrno != TSDB_CODE_TDB_TABLE_RECONFIGURE) {
......@@ -70,9 +72,17 @@ int32_t tsdbInsertData(STsdbRepo *repo, SSubmitMsg *pMsg, SShellSubmitRspMsg *pR
while (true) {
tsdbGetSubmitMsgNext(&msgIter, &pBlock);
if (pBlock == NULL) break;
if (IS_CONTROL_BLOCK(pBlock)) {
// COMMAND DATA BLOCK
ret = tsdbInsertControlData(pRepo, pBlock, pRsp, pSem);
// all control msg is one SSubmitMsg, so need return
return ret;
} else {
// INSERT DATA BLOCK
if (tsdbInsertDataToTable(pRepo, pBlock, &affectedrows) < 0) {
return -1;
}
}
numOfRows += pBlock->numOfRows;
}
......@@ -82,7 +92,7 @@ int32_t tsdbInsertData(STsdbRepo *repo, SSubmitMsg *pMsg, SShellSubmitRspMsg *pR
}
if (tsdbCheckCommit(pRepo) < 0) return -1;
return 0;
return ret;
}
// ---------------- INTERNAL FUNCTIONS ----------------
......@@ -702,6 +712,8 @@ static int tsdbScanAndConvertSubmitMsg(STsdbRepo *pRepo, SSubmitMsg *pMsg) {
}
}
// check each row time invalid if not control block
if (!IS_CONTROL_BLOCK(pBlock)) {
tsdbInitSubmitBlkIter(pBlock, &blkIter);
while ((row = tsdbGetSubmitBlkNext(&blkIter)) != NULL) {
if (tsdbCheckRowRange(pRepo, pTable, row, minKey, maxKey, now) < 0) {
......@@ -709,6 +721,7 @@ static int tsdbScanAndConvertSubmitMsg(STsdbRepo *pRepo, SSubmitMsg *pMsg) {
}
}
}
}
if (terrno != TSDB_CODE_SUCCESS) return -1;
return 0;
......@@ -1082,3 +1095,39 @@ static int tsdbUpdateTableLatestInfo(STsdbRepo *pRepo, STable *pTable, SMemRow r
return 0;
}
// Delete Data
int32_t tsdbInsertDeleteData(STsdbRepo* pRepo, SControlData* pCtlData, SShellSubmitRspMsg *pRsp, sem_t* pSem) {
pRsp->affectedRows = htonl(99);
// INIT SEM
int32_t ret = sem_init(pSem, 0, 0);
if(ret != 0) {
return TAOS_SYSTEM_ERROR(ret);
}
// CREATE DELETE MEMTABLE
// FORCE COMMIT ALL MEM AND IMEM
return 0;
}
// Control Data
int32_t tsdbInsertControlData(STsdbRepo* pRepo, SSubmitBlk* pBlock, SShellSubmitRspMsg *pRsp, sem_t* pSem) {
int32_t ret = TSDB_CODE_SUCCESS;
assert(pBlock->dataLen == sizeof(SControlData));
SControlData* pCtlData = (SControlData* )pBlock->data;
// anti-serialize
pCtlData->command = htonl(pCtlData->command);
pCtlData->win.skey = htobe64(pCtlData->win.skey);
pCtlData->win.ekey = htobe64(pCtlData->win.ekey);
if(pCtlData->command == CMD_DELETE_DATA) {
ret = tsdbInsertDeleteData(pRepo, pCtlData, pRsp, pSem);
}
return ret;
}
\ No newline at end of file
......@@ -400,8 +400,8 @@ static int tsdbInitTruncateH(STruncateH *pTruncateH, STsdbRepo *pRepo) {
static void tsdbDestroyTruncateH(STruncateH *pTruncateH) {
pTruncateH->pDCols = tdFreeDataCols(pTruncateH->pDCols);
pTruncateH->aSupBlk = taosArrayDestroy(pTruncateH->aSupBlk);
pTruncateH->aBlkIdx = taosArrayDestroy(pTruncateH->aBlkIdx);
pTruncateH->aSupBlk = taosArrayDestroy(&pTruncateH->aSupBlk);
pTruncateH->aBlkIdx = taosArrayDestroy(&pTruncateH->aBlkIdx);
tsdbDestroyTruncateTblArray(pTruncateH);
tsdbDestroyReadH(&(pTruncateH->readh));
tsdbCloseDFileSet(TSDB_TRUNCATE_WSET(pTruncateH));
......@@ -453,7 +453,7 @@ static void tsdbDestroyTruncateTblArray(STruncateH *pTruncateH) {
tfree(pTblHandle->pInfo);
}
pTruncateH->tblArray = taosArrayDestroy(pTruncateH->tblArray);
pTruncateH->tblArray = taosArrayDestroy(&pTruncateH->tblArray);
}
static int tsdbCacheFSetIndex(STruncateH *pTruncateH) {
......
......@@ -74,7 +74,7 @@ static int insertData(SInsertInfo *pInfo) {
pBlock->tid = htonl(pBlock->tid);
pBlock->sversion = htonl(pBlock->sversion);
pBlock->padding = htonl(pBlock->padding);
pBlock->flag = htonl(pBlock->flag);
pMsg->length = htonl(pMsg->length);
pMsg->numOfBlocks = htonl(pMsg->numOfBlocks);
......
......@@ -47,6 +47,8 @@ void *taosAllocateQitem(int size);
void taosFreeQitem(void *item);
int taosWriteQitem(taos_queue, int type, void *item);
int taosReadQitem(taos_queue, int *type, void **pitem);
// special type search Qitem
int taosSearchQitem(taos_queue, int type, void **pitem);
taos_qall taosAllocateQall();
void taosFreeQall(taos_qall);
......
......@@ -160,6 +160,47 @@ int taosReadQitem(taos_queue param, int *type, void **pitem) {
return code;
}
// search Qitem with type
int taosSearchQitem(taos_queue param, int type, void **pitem) {
STaosQueue *queue = (STaosQueue *)param;
STaosQnode *pNode = NULL;
STaosQnode *pPre = NULL;
int code = 0;
pthread_mutex_lock(&queue->mutex);
pNode = queue->head;
while (pNode) {
if(pNode->type == type) {
// found
*pitem = pNode->item;
if(pPre == NULL) {
queue->head = pNode->next;
} else {
pPre->next = pNode->next;
}
if (queue->head == NULL)
queue->tail = NULL;
// reduce number
queue->numOfItems--;
if (queue->qset) {
atomic_sub_fetch_32(&queue->qset->numOfItems, 1);
}
code = 1;
uDebug("item:%p is read out from queue:%p, type:%d items:%d", *pitem, queue, type, queue->numOfItems);
break;
}
// move next
pPre = pNode;
pNode = pNode->next;
}
pthread_mutex_unlock(&queue->mutex);
return code;
}
void *taosAllocateQall() {
void *p = calloc(sizeof(STaosQall), 1);
return p;
......
......@@ -228,7 +228,8 @@ static SKeyword keywordTable[] = {
{"RANGE", TK_RANGE},
{"CONTAINS", TK_CONTAINS},
{"TO", TK_TO},
{"SPLIT", TK_SPLIT}
{"SPLIT", TK_SPLIT},
{"DELETE", TK_DELETE}
};
static const char isIdChar[] = {
......
......@@ -75,6 +75,7 @@ typedef struct {
tsem_t sem;
char db[TSDB_ACCT_ID_LEN + TSDB_DB_NAME_LEN];
pthread_mutex_t statusMutex;
void * tqueue; // async threads queue
} SVnodeObj;
#ifdef __cplusplus
......
......@@ -29,6 +29,9 @@
#include "vnodeWorker.h"
#include "vnodeBackup.h"
#include "vnodeMain.h"
#include "tqueue.h"
#include "tthread.h"
#include "tcrc32c.h"
static int32_t vnodeProcessTsdbStatus(void *arg, int32_t status, int32_t eno);
......@@ -465,6 +468,42 @@ int32_t vnodeOpen(int32_t vgId) {
return TSDB_CODE_SUCCESS;
}
#define LOOP_CNT 10
void freeWaitThread(SVnodeObj* pVnode) {
// check wait thread empty
int type = 0;
SWaitThread* pWaitThread = NULL;
while(taosReadQitem(pVnode->tqueue, &type, (void** )&pWaitThread) > 0) {
// thread is running
int32_t loop = LOOP_CNT;
while (taosThreadRunning(pWaitThread->pthread)) {
// only post once
if(loop == LOOP_CNT)
tsem_post(pWaitThread->psem);
taosMsleep(50);
loop -= 1;
if(loop == 0 )
break;
}
// free all
if(loop == 0) {
// thread not stop , so need kill
taosDestoryThread(pWaitThread->pthread);
// write msg need remove from queue
SVWriteMsg* pWrite = (SVWriteMsg* )pWaitThread->param;
if (pWrite)
vnodeFreeFromWQueue(pWrite->pVnode, pWrite);
} else {
free(pWaitThread->pthread);
}
tsem_destroy(pWaitThread->psem);
taosFreeQitem(pWaitThread);
}
taosCloseQueue(pVnode->tqueue);
}
int32_t vnodeClose(int32_t vgId) {
SVnodeObj *pVnode = vnodeAcquireNotClose(vgId);
if (pVnode == NULL) return 0;
......@@ -475,6 +514,10 @@ int32_t vnodeClose(int32_t vgId) {
pVnode->preClose = 1;
// wait result threads need deal
if(pVnode->tqueue)
freeWaitThread(pVnode);
vDebug("vgId:%d, vnode will be closed, pVnode:%p", pVnode->vgId, pVnode);
vnodeRelease(pVnode);
vnodeCleanUp(pVnode);
......@@ -614,3 +657,37 @@ static int32_t vnodeProcessTsdbStatus(void *arg, int32_t status, int32_t eno) {
return 0;
}
// wait thread
void vnodeAddWait(void* vparam, pthread_t* pthread, sem_t* psem, void* param) {
SVnodeObj* pVnode = (SVnodeObj* )vparam;
if(pVnode->tqueue == NULL) {
pVnode->tqueue = taosOpenQueue();
}
SWaitThread* pWaitThread = (SWaitThread* )taosAllocateQitem(sizeof(SWaitThread));
pWaitThread->pthread = pthread;
pWaitThread->startTime = taosGetTimestampSec();
pWaitThread->psem = psem;
pWaitThread->param = param;
int32_t crc = crc32c_sf(0, (crc_stream)pWaitThread, sizeof(void* ));
taosWriteQitem(pVnode->tqueue, crc, pWaitThread);
}
// called in wait thread
void vnodeRemoveWait(void* vparam, void* param) {
SVnodeObj* pVnode = (SVnodeObj* )vparam;
int32_t crc = crc32c_sf(0, (crc_stream)param, sizeof(void* ));
SWaitThread* pWaitThread = NULL;
taosSearchQitem(pVnode->tqueue, crc, (void** )&pWaitThread);
if (pWaitThread == NULL) {
// not found
return ;
}
// free thread
free(pWaitThread->pthread);
taosFreeQitem(pWaitThread);
}
\ No newline at end of file
......@@ -169,7 +169,7 @@ static int32_t vnodeProcessSubmitMsg(SVnodeObj *pVnode, void *pCont, SRspRet *pR
pRsp = pRet->rsp;
}
if (tsdbInsertData(pVnode->tsdb, pCont, pRsp) < 0) {
if (tsdbInsertData(pVnode->tsdb, pCont, pRsp, pRet->psem_rsp) < 0) {
code = terrno;
} else {
if (pRsp != NULL) atomic_fetch_add_64(&tsSubmitReqSucNum, 1);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册