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