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