未验证 提交 2450d598 编写于 作者: X Xiaoyu Wang 提交者: GitHub

Merge pull request #14450 from taosdata/feature/3.0_debug_wxy

fix: some problems of parser and planner
...@@ -22,8 +22,8 @@ extern "C" { ...@@ -22,8 +22,8 @@ extern "C" {
#include "tdef.h" #include "tdef.h"
#define nodeType(nodeptr) (((const SNode*)(nodeptr))->type) #define nodeType(nodeptr) (((const SNode*)(nodeptr))->type)
#define setNodeType(nodeptr, type) (((SNode*)(nodeptr))->type = (type)) #define setNodeType(nodeptr, nodetype) (((SNode*)(nodeptr))->type = (nodetype))
#define LIST_LENGTH(l) (NULL != (l) ? (l)->length : 0) #define LIST_LENGTH(l) (NULL != (l) ? (l)->length : 0)
...@@ -118,6 +118,7 @@ typedef enum ENodeType { ...@@ -118,6 +118,7 @@ typedef enum ENodeType {
QUERY_NODE_DROP_TABLE_STMT, QUERY_NODE_DROP_TABLE_STMT,
QUERY_NODE_DROP_SUPER_TABLE_STMT, QUERY_NODE_DROP_SUPER_TABLE_STMT,
QUERY_NODE_ALTER_TABLE_STMT, QUERY_NODE_ALTER_TABLE_STMT,
QUERY_NODE_ALTER_SUPER_TABLE_STMT,
QUERY_NODE_CREATE_USER_STMT, QUERY_NODE_CREATE_USER_STMT,
QUERY_NODE_ALTER_USER_STMT, QUERY_NODE_ALTER_USER_STMT,
QUERY_NODE_DROP_USER_STMT, QUERY_NODE_DROP_USER_STMT,
......
...@@ -25,6 +25,8 @@ extern "C" { ...@@ -25,6 +25,8 @@ extern "C" {
typedef struct SFilterInfo SFilterInfo; typedef struct SFilterInfo SFilterInfo;
int32_t scalarGetOperatorResultType(SDataType left, SDataType right, EOperatorType op, SDataType* pRes);
/* /*
pNode will be freed in API; pNode will be freed in API;
*pRes need to freed in caller *pRes need to freed in caller
......
...@@ -578,6 +578,7 @@ int32_t* taosGetErrno(); ...@@ -578,6 +578,7 @@ int32_t* taosGetErrno();
#define TSDB_CODE_PAR_INVALID_TABLE_OPTION TAOS_DEF_ERROR_CODE(0, 0x265C) #define TSDB_CODE_PAR_INVALID_TABLE_OPTION TAOS_DEF_ERROR_CODE(0, 0x265C)
#define TSDB_CODE_PAR_INVALID_INTERP_CLAUSE TAOS_DEF_ERROR_CODE(0, 0x265D) #define TSDB_CODE_PAR_INVALID_INTERP_CLAUSE TAOS_DEF_ERROR_CODE(0, 0x265D)
#define TSDB_CODE_PAR_NO_VALID_FUNC_IN_WIN TAOS_DEF_ERROR_CODE(0, 0x265E) #define TSDB_CODE_PAR_NO_VALID_FUNC_IN_WIN TAOS_DEF_ERROR_CODE(0, 0x265E)
#define TSDB_CODE_PAR_ONLY_SUPPORT_SINGLE_TABLE TAOS_DEF_ERROR_CODE(0, 0x265F)
//planner //planner
#define TSDB_CODE_PLAN_INTERNAL_ERROR TAOS_DEF_ERROR_CODE(0, 0x2700) #define TSDB_CODE_PLAN_INTERNAL_ERROR TAOS_DEF_ERROR_CODE(0, 0x2700)
......
...@@ -19,8 +19,8 @@ ...@@ -19,8 +19,8 @@
#include "querynodes.h" #include "querynodes.h"
#include "taos.h" #include "taos.h"
#include "taoserror.h" #include "taoserror.h"
#include "thash.h"
#include "tdatablock.h" #include "tdatablock.h"
#include "thash.h"
static SNode* makeNode(ENodeType type, size_t size) { static SNode* makeNode(ENodeType type, size_t size) {
SNode* p = taosMemoryCalloc(1, size); SNode* p = taosMemoryCalloc(1, size);
...@@ -1497,13 +1497,18 @@ typedef struct SCollectFuncsCxt { ...@@ -1497,13 +1497,18 @@ typedef struct SCollectFuncsCxt {
int32_t errCode; int32_t errCode;
FFuncClassifier classifier; FFuncClassifier classifier;
SNodeList* pFuncs; SNodeList* pFuncs;
SHashObj* pAliasName;
} SCollectFuncsCxt; } SCollectFuncsCxt;
static EDealRes collectFuncs(SNode* pNode, void* pContext) { static EDealRes collectFuncs(SNode* pNode, void* pContext) {
SCollectFuncsCxt* pCxt = (SCollectFuncsCxt*)pContext; SCollectFuncsCxt* pCxt = (SCollectFuncsCxt*)pContext;
if (QUERY_NODE_FUNCTION == nodeType(pNode) && pCxt->classifier(((SFunctionNode*)pNode)->funcId) && if (QUERY_NODE_FUNCTION == nodeType(pNode) && pCxt->classifier(((SFunctionNode*)pNode)->funcId) &&
!(((SExprNode*)pNode)->orderAlias)) { !(((SExprNode*)pNode)->orderAlias)) {
pCxt->errCode = nodesListStrictAppend(pCxt->pFuncs, nodesCloneNode(pNode)); SExprNode* pExpr = (SExprNode*)pNode;
if (NULL == taosHashGet(pCxt->pAliasName, pExpr->aliasName, strlen(pExpr->aliasName))) {
pCxt->errCode = nodesListStrictAppend(pCxt->pFuncs, nodesCloneNode(pNode));
taosHashPut(pCxt->pAliasName, pExpr->aliasName, strlen(pExpr->aliasName), &pExpr, POINTER_BYTES);
}
return (TSDB_CODE_SUCCESS == pCxt->errCode ? DEAL_RES_IGNORE_CHILD : DEAL_RES_ERROR); return (TSDB_CODE_SUCCESS == pCxt->errCode ? DEAL_RES_IGNORE_CHILD : DEAL_RES_ERROR);
} }
return DEAL_RES_CONTINUE; return DEAL_RES_CONTINUE;
...@@ -1515,23 +1520,27 @@ int32_t nodesCollectFuncs(SSelectStmt* pSelect, ESqlClause clause, FFuncClassifi ...@@ -1515,23 +1520,27 @@ int32_t nodesCollectFuncs(SSelectStmt* pSelect, ESqlClause clause, FFuncClassifi
} }
SCollectFuncsCxt cxt = { SCollectFuncsCxt cxt = {
.errCode = TSDB_CODE_SUCCESS, .classifier = classifier, .pFuncs = (NULL == *pFuncs ? nodesMakeList() : *pFuncs)}; .errCode = TSDB_CODE_SUCCESS,
.classifier = classifier,
.pFuncs = (NULL == *pFuncs ? nodesMakeList() : *pFuncs),
.pAliasName = taosHashInit(4, taosGetDefaultHashFunction(TSDB_DATA_TYPE_VARCHAR), false, false)};
if (NULL == cxt.pFuncs) { if (NULL == cxt.pFuncs) {
return TSDB_CODE_OUT_OF_MEMORY; return TSDB_CODE_OUT_OF_MEMORY;
} }
*pFuncs = NULL; *pFuncs = NULL;
nodesWalkSelectStmt(pSelect, clause, collectFuncs, &cxt); nodesWalkSelectStmt(pSelect, clause, collectFuncs, &cxt);
if (TSDB_CODE_SUCCESS != cxt.errCode) { if (TSDB_CODE_SUCCESS == cxt.errCode) {
nodesDestroyList(cxt.pFuncs); if (LIST_LENGTH(cxt.pFuncs) > 0) {
return cxt.errCode; *pFuncs = cxt.pFuncs;
} } else {
if (LIST_LENGTH(cxt.pFuncs) > 0) { nodesDestroyList(cxt.pFuncs);
*pFuncs = cxt.pFuncs; }
} else { } else {
nodesDestroyList(cxt.pFuncs); nodesDestroyList(cxt.pFuncs);
} }
taosHashCleanup(cxt.pAliasName);
return TSDB_CODE_SUCCESS; return cxt.errCode;
} }
typedef struct SCollectSpecialNodesCxt { typedef struct SCollectSpecialNodesCxt {
......
...@@ -154,6 +154,7 @@ SNode* createAlterTableDropCol(SAstCreateContext* pCxt, SNode* pRealTable, int8_ ...@@ -154,6 +154,7 @@ SNode* createAlterTableDropCol(SAstCreateContext* pCxt, SNode* pRealTable, int8_
SNode* createAlterTableRenameCol(SAstCreateContext* pCxt, SNode* pRealTable, int8_t alterType, SToken* pOldColName, SNode* createAlterTableRenameCol(SAstCreateContext* pCxt, SNode* pRealTable, int8_t alterType, SToken* pOldColName,
SToken* pNewColName); SToken* pNewColName);
SNode* createAlterTableSetTag(SAstCreateContext* pCxt, SNode* pRealTable, SToken* pTagName, SNode* pVal); SNode* createAlterTableSetTag(SAstCreateContext* pCxt, SNode* pRealTable, SToken* pTagName, SNode* pVal);
SNode* setAlterSuperTableType(SNode* pStmt);
SNode* createUseDatabaseStmt(SAstCreateContext* pCxt, SToken* pDbName); SNode* createUseDatabaseStmt(SAstCreateContext* pCxt, SToken* pDbName);
SNode* createShowStmt(SAstCreateContext* pCxt, ENodeType type); SNode* createShowStmt(SAstCreateContext* pCxt, ENodeType type);
SNode* createShowStmtWithCond(SAstCreateContext* pCxt, ENodeType type, SNode* pDbName, SNode* pTbName, SNode* createShowStmtWithCond(SAstCreateContext* pCxt, ENodeType type, SNode* pDbName, SNode* pTbName,
......
...@@ -53,6 +53,7 @@ typedef struct SParseMetaCache { ...@@ -53,6 +53,7 @@ typedef struct SParseMetaCache {
} SParseMetaCache; } SParseMetaCache;
int32_t generateSyntaxErrMsg(SMsgBuf* pBuf, int32_t errCode, ...); int32_t generateSyntaxErrMsg(SMsgBuf* pBuf, int32_t errCode, ...);
int32_t generateSyntaxErrMsgExt(SMsgBuf* pBuf, int32_t errCode, const char* pFormat, ...);
int32_t buildInvalidOperationMsg(SMsgBuf* pMsgBuf, const char* msg); int32_t buildInvalidOperationMsg(SMsgBuf* pMsgBuf, const char* msg);
int32_t buildSyntaxErrMsg(SMsgBuf* pBuf, const char* additionalInfo, const char* sourceStr); int32_t buildSyntaxErrMsg(SMsgBuf* pBuf, const char* additionalInfo, const char* sourceStr);
......
...@@ -232,7 +232,7 @@ cmd ::= DROP TABLE multi_drop_clause(A). ...@@ -232,7 +232,7 @@ cmd ::= DROP TABLE multi_drop_clause(A).
cmd ::= DROP STABLE exists_opt(A) full_table_name(B). { pCxt->pRootNode = createDropSuperTableStmt(pCxt, A, B); } cmd ::= DROP STABLE exists_opt(A) full_table_name(B). { pCxt->pRootNode = createDropSuperTableStmt(pCxt, A, B); }
cmd ::= ALTER TABLE alter_table_clause(A). { pCxt->pRootNode = A; } cmd ::= ALTER TABLE alter_table_clause(A). { pCxt->pRootNode = A; }
cmd ::= ALTER STABLE alter_table_clause(A). { pCxt->pRootNode = A; } cmd ::= ALTER STABLE alter_table_clause(A). { pCxt->pRootNode = setAlterSuperTableType(A); }
alter_table_clause(A) ::= full_table_name(B) alter_table_options(C). { A = createAlterTableModifyOptions(pCxt, B, C); } alter_table_clause(A) ::= full_table_name(B) alter_table_options(C). { A = createAlterTableModifyOptions(pCxt, B, C); }
alter_table_clause(A) ::= alter_table_clause(A) ::=
...@@ -259,7 +259,7 @@ multi_create_clause(A) ::= multi_create_clause(B) create_subtable_clause(C). ...@@ -259,7 +259,7 @@ multi_create_clause(A) ::= multi_create_clause(B) create_subtable_clause(C).
create_subtable_clause(A) ::= create_subtable_clause(A) ::=
not_exists_opt(B) full_table_name(C) USING full_table_name(D) not_exists_opt(B) full_table_name(C) USING full_table_name(D)
specific_tags_opt(E) TAGS NK_LP literal_list(F) NK_RP table_options(G). { A = createCreateSubTableClause(pCxt, B, C, D, E, F, G); } specific_tags_opt(E) TAGS NK_LP expression_list(F) NK_RP table_options(G). { A = createCreateSubTableClause(pCxt, B, C, D, E, F, G); }
%type multi_drop_clause { SNodeList* } %type multi_drop_clause { SNodeList* }
%destructor multi_drop_clause { nodesDestroyList($$); } %destructor multi_drop_clause { nodesDestroyList($$); }
......
...@@ -1127,6 +1127,11 @@ SNode* createAlterTableSetTag(SAstCreateContext* pCxt, SNode* pRealTable, SToken ...@@ -1127,6 +1127,11 @@ SNode* createAlterTableSetTag(SAstCreateContext* pCxt, SNode* pRealTable, SToken
return createAlterTableStmtFinalize(pRealTable, pStmt); return createAlterTableStmtFinalize(pRealTable, pStmt);
} }
SNode* setAlterSuperTableType(SNode* pStmt) {
setNodeType(pStmt, QUERY_NODE_ALTER_SUPER_TABLE_STMT);
return pStmt;
}
SNode* createUseDatabaseStmt(SAstCreateContext* pCxt, SToken* pDbName) { SNode* createUseDatabaseStmt(SAstCreateContext* pCxt, SToken* pDbName) {
CHECK_PARSER_STATUS(pCxt); CHECK_PARSER_STATUS(pCxt);
if (!checkDbName(pCxt, pDbName, false)) { if (!checkDbName(pCxt, pDbName, false)) {
......
...@@ -247,6 +247,10 @@ static int32_t collectMetaKeyFromAlterTable(SCollectMetaKeyCxt* pCxt, SAlterTabl ...@@ -247,6 +247,10 @@ static int32_t collectMetaKeyFromAlterTable(SCollectMetaKeyCxt* pCxt, SAlterTabl
return code; return code;
} }
static int32_t collectMetaKeyFromAlterStable(SCollectMetaKeyCxt* pCxt, SAlterTableStmt* pStmt) {
return reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache);
}
static int32_t collectMetaKeyFromUseDatabase(SCollectMetaKeyCxt* pCxt, SUseDatabaseStmt* pStmt) { static int32_t collectMetaKeyFromUseDatabase(SCollectMetaKeyCxt* pCxt, SUseDatabaseStmt* pStmt) {
return reserveDbVgVersionInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache); return reserveDbVgVersionInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
} }
...@@ -483,6 +487,8 @@ static int32_t collectMetaKeyFromQuery(SCollectMetaKeyCxt* pCxt, SNode* pStmt) { ...@@ -483,6 +487,8 @@ static int32_t collectMetaKeyFromQuery(SCollectMetaKeyCxt* pCxt, SNode* pStmt) {
return collectMetaKeyFromDropTable(pCxt, (SDropTableStmt*)pStmt); return collectMetaKeyFromDropTable(pCxt, (SDropTableStmt*)pStmt);
case QUERY_NODE_ALTER_TABLE_STMT: case QUERY_NODE_ALTER_TABLE_STMT:
return collectMetaKeyFromAlterTable(pCxt, (SAlterTableStmt*)pStmt); return collectMetaKeyFromAlterTable(pCxt, (SAlterTableStmt*)pStmt);
case QUERY_NODE_ALTER_SUPER_TABLE_STMT:
return collectMetaKeyFromAlterStable(pCxt, (SAlterTableStmt*)pStmt);
case QUERY_NODE_USE_DATABASE_STMT: case QUERY_NODE_USE_DATABASE_STMT:
return collectMetaKeyFromUseDatabase(pCxt, (SUseDatabaseStmt*)pStmt); return collectMetaKeyFromUseDatabase(pCxt, (SUseDatabaseStmt*)pStmt);
case QUERY_NODE_CREATE_INDEX_STMT: case QUERY_NODE_CREATE_INDEX_STMT:
......
...@@ -48,6 +48,12 @@ ...@@ -48,6 +48,12 @@
pSql += sToken.n; \ pSql += sToken.n; \
} while (TK_NK_SPACE == sToken.type) } while (TK_NK_SPACE == sToken.type)
typedef struct SInsertParseBaseContext {
SParseContext* pComCxt;
char* pSql;
SMsgBuf msg;
} SInsertParseBaseContext;
typedef struct SInsertParseContext { typedef struct SInsertParseContext {
SParseContext* pComCxt; // input SParseContext* pComCxt; // input
char* pSql; // input char* pSql; // input
...@@ -1105,6 +1111,32 @@ static int32_t storeTableMeta(SInsertParseContext* pCxt, SHashObj* pHash, SName* ...@@ -1105,6 +1111,32 @@ static int32_t storeTableMeta(SInsertParseContext* pCxt, SHashObj* pHash, SName*
return taosHashPut(pHash, pName, len, &pBackup, POINTER_BYTES); return taosHashPut(pHash, pName, len, &pBackup, POINTER_BYTES);
} }
static int32_t skipParentheses(SInsertParseSyntaxCxt* pCxt) {
SToken sToken;
int32_t expectRightParenthesis = 1;
while (1) {
NEXT_TOKEN(pCxt->pSql, sToken);
if (TK_NK_LP == sToken.type) {
++expectRightParenthesis;
} else if (TK_NK_RP == sToken.type && 0 == --expectRightParenthesis) {
break;
}
if (0 == sToken.n) {
return buildSyntaxErrMsg(&pCxt->msg, ") expected", NULL);
}
}
return TSDB_CODE_SUCCESS;
}
static int32_t skipBoundColumns(SInsertParseSyntaxCxt* pCxt) { return skipParentheses(pCxt); }
static int32_t ignoreBoundColumns(SInsertParseContext* pCxt) {
SInsertParseSyntaxCxt cxt = {.pComCxt = pCxt->pComCxt, .pSql = pCxt->pSql, .msg = pCxt->msg, .pMetaCache = NULL};
int32_t code = skipBoundColumns(&cxt);
pCxt->pSql = cxt.pSql;
return code;
}
static int32_t skipUsingClause(SInsertParseSyntaxCxt* pCxt); static int32_t skipUsingClause(SInsertParseSyntaxCxt* pCxt);
// pSql -> stb_name [(tag1_name, ...)] TAGS (tag1_value, ...) // pSql -> stb_name [(tag1_name, ...)] TAGS (tag1_value, ...)
...@@ -1453,12 +1485,29 @@ static int32_t parseInsertBody(SInsertParseContext* pCxt) { ...@@ -1453,12 +1485,29 @@ static int32_t parseInsertBody(SInsertParseContext* pCxt) {
tNameGetFullDbName(&name, dbFName); tNameGetFullDbName(&name, dbFName);
CHECK_CODE(taosHashPut(pCxt->pDbFNameHashObj, dbFName, strlen(dbFName), dbFName, sizeof(dbFName))); CHECK_CODE(taosHashPut(pCxt->pDbFNameHashObj, dbFName, strlen(dbFName), dbFName, sizeof(dbFName)));
bool existedUsing = false;
// USING clause // USING clause
if (TK_USING == sToken.type) { if (TK_USING == sToken.type) {
existedUsing = true;
CHECK_CODE(parseUsingClause(pCxt, &name, tbFName)); CHECK_CODE(parseUsingClause(pCxt, &name, tbFName));
NEXT_TOKEN(pCxt->pSql, sToken); NEXT_TOKEN(pCxt->pSql, sToken);
autoCreateTbl = true; autoCreateTbl = true;
} else { }
char* pBoundColsStart = NULL;
if (TK_NK_LP == sToken.type) {
// pSql -> field1_name, ...)
pBoundColsStart = pCxt->pSql;
CHECK_CODE(ignoreBoundColumns(pCxt));
// CHECK_CODE(parseBoundColumns(pCxt, &dataBuf->boundColumnInfo, getTableColumnSchema(pCxt->pTableMeta)));
NEXT_TOKEN(pCxt->pSql, sToken);
}
if (TK_USING == sToken.type) {
CHECK_CODE(parseUsingClause(pCxt, &name, tbFName));
NEXT_TOKEN(pCxt->pSql, sToken);
autoCreateTbl = true;
} else if (!existedUsing) {
CHECK_CODE(getTableMeta(pCxt, &name, dbFName)); CHECK_CODE(getTableMeta(pCxt, &name, dbFName));
} }
...@@ -1467,10 +1516,11 @@ static int32_t parseInsertBody(SInsertParseContext* pCxt) { ...@@ -1467,10 +1516,11 @@ static int32_t parseInsertBody(SInsertParseContext* pCxt) {
sizeof(SSubmitBlk), getTableInfo(pCxt->pTableMeta).rowSize, pCxt->pTableMeta, sizeof(SSubmitBlk), getTableInfo(pCxt->pTableMeta).rowSize, pCxt->pTableMeta,
&dataBuf, NULL, &pCxt->createTblReq)); &dataBuf, NULL, &pCxt->createTblReq));
if (TK_NK_LP == sToken.type) { if (NULL != pBoundColsStart) {
// pSql -> field1_name, ...) char* pCurrPos = pCxt->pSql;
pCxt->pSql = pBoundColsStart;
CHECK_CODE(parseBoundColumns(pCxt, &dataBuf->boundColumnInfo, getTableColumnSchema(pCxt->pTableMeta))); CHECK_CODE(parseBoundColumns(pCxt, &dataBuf->boundColumnInfo, getTableColumnSchema(pCxt->pTableMeta)));
NEXT_TOKEN(pCxt->pSql, sToken); pCxt->pSql = pCurrPos;
} }
if (TK_VALUES == sToken.type) { if (TK_VALUES == sToken.type) {
...@@ -1610,25 +1660,6 @@ int32_t parseInsertSql(SParseContext* pContext, SQuery** pQuery, SParseMetaCache ...@@ -1610,25 +1660,6 @@ int32_t parseInsertSql(SParseContext* pContext, SQuery** pQuery, SParseMetaCache
return code; return code;
} }
static int32_t skipParentheses(SInsertParseSyntaxCxt* pCxt) {
SToken sToken;
int32_t expectRightParenthesis = 1;
while (1) {
NEXT_TOKEN(pCxt->pSql, sToken);
if (TK_NK_LP == sToken.type) {
++expectRightParenthesis;
} else if (TK_NK_RP == sToken.type && 0 == --expectRightParenthesis) {
break;
}
if (0 == sToken.n) {
return buildSyntaxErrMsg(&pCxt->msg, ") expected", NULL);
}
}
return TSDB_CODE_SUCCESS;
}
static int32_t skipBoundColumns(SInsertParseSyntaxCxt* pCxt) { return skipParentheses(pCxt); }
// pSql -> (field1_value, ...) [(field1_value2, ...) ...] // pSql -> (field1_value, ...) [(field1_value2, ...) ...]
static int32_t skipValuesClause(SInsertParseSyntaxCxt* pCxt) { static int32_t skipValuesClause(SInsertParseSyntaxCxt* pCxt) {
int32_t numOfRows = 0; int32_t numOfRows = 0;
...@@ -1717,15 +1748,15 @@ static int32_t parseInsertBodySyntax(SInsertParseSyntaxCxt* pCxt) { ...@@ -1717,15 +1748,15 @@ static int32_t parseInsertBodySyntax(SInsertParseSyntaxCxt* pCxt) {
SToken tbnameToken = sToken; SToken tbnameToken = sToken;
NEXT_TOKEN(pCxt->pSql, sToken); NEXT_TOKEN(pCxt->pSql, sToken);
bool existedUsing = false;
// USING clause // USING clause
if (TK_USING == sToken.type) { if (TK_USING == sToken.type) {
existedUsing = true;
CHECK_CODE(collectAutoCreateTableMetaKey(pCxt, &tbnameToken)); CHECK_CODE(collectAutoCreateTableMetaKey(pCxt, &tbnameToken));
NEXT_TOKEN(pCxt->pSql, sToken); NEXT_TOKEN(pCxt->pSql, sToken);
CHECK_CODE(collectTableMetaKey(pCxt, &sToken)); CHECK_CODE(collectTableMetaKey(pCxt, &sToken));
CHECK_CODE(skipUsingClause(pCxt)); CHECK_CODE(skipUsingClause(pCxt));
NEXT_TOKEN(pCxt->pSql, sToken); NEXT_TOKEN(pCxt->pSql, sToken);
} else {
CHECK_CODE(collectTableMetaKey(pCxt, &tbnameToken));
} }
if (TK_NK_LP == sToken.type) { if (TK_NK_LP == sToken.type) {
...@@ -1734,6 +1765,17 @@ static int32_t parseInsertBodySyntax(SInsertParseSyntaxCxt* pCxt) { ...@@ -1734,6 +1765,17 @@ static int32_t parseInsertBodySyntax(SInsertParseSyntaxCxt* pCxt) {
NEXT_TOKEN(pCxt->pSql, sToken); NEXT_TOKEN(pCxt->pSql, sToken);
} }
if (TK_USING == sToken.type && !existedUsing) {
existedUsing = true;
CHECK_CODE(collectAutoCreateTableMetaKey(pCxt, &tbnameToken));
NEXT_TOKEN(pCxt->pSql, sToken);
CHECK_CODE(collectTableMetaKey(pCxt, &sToken));
CHECK_CODE(skipUsingClause(pCxt));
NEXT_TOKEN(pCxt->pSql, sToken);
} else {
CHECK_CODE(collectTableMetaKey(pCxt, &tbnameToken));
}
if (TK_VALUES == sToken.type) { if (TK_VALUES == sToken.type) {
// pSql -> (field1_value, ...) [(field1_value2, ...) ...] // pSql -> (field1_value, ...) [(field1_value2, ...) ...]
CHECK_CODE(skipValuesClause(pCxt)); CHECK_CODE(skipValuesClause(pCxt));
......
...@@ -121,8 +121,8 @@ static int32_t getTableMetaImpl(STranslateContext* pCxt, const SName* pName, STa ...@@ -121,8 +121,8 @@ static int32_t getTableMetaImpl(STranslateContext* pCxt, const SName* pName, STa
} }
} }
if (TSDB_CODE_SUCCESS != code) { if (TSDB_CODE_SUCCESS != code) {
parserError("catalogGetTableMeta error, code:%s, dbName:%s, tbName:%s", tstrerror(code), pName->dbname, parserError("0x%" PRIx64 " catalogGetTableMeta error, code:%s, dbName:%s, tbName:%s", pCxt->pParseCxt->requestId,
pName->tname); tstrerror(code), pName->dbname, pName->tname);
} }
return code; return code;
} }
...@@ -150,8 +150,8 @@ static int32_t getTableCfg(STranslateContext* pCxt, const SName* pName, STableCf ...@@ -150,8 +150,8 @@ static int32_t getTableCfg(STranslateContext* pCxt, const SName* pName, STableCf
} }
} }
if (TSDB_CODE_SUCCESS != code) { if (TSDB_CODE_SUCCESS != code) {
parserError("catalogRefreshGetTableCfg error, code:%s, dbName:%s, tbName:%s", tstrerror(code), pName->dbname, parserError("0x%" PRIx64 " catalogRefreshGetTableCfg error, code:%s, dbName:%s, tbName:%s",
pName->tname); pCxt->pParseCxt->requestId, tstrerror(code), pName->dbname, pName->tname);
} }
return code; return code;
} }
...@@ -173,8 +173,8 @@ static int32_t refreshGetTableMeta(STranslateContext* pCxt, const char* pDbName, ...@@ -173,8 +173,8 @@ static int32_t refreshGetTableMeta(STranslateContext* pCxt, const char* pDbName,
code = catalogRefreshGetTableMeta(pParCxt->pCatalog, &conn, &name, pMeta, false); code = catalogRefreshGetTableMeta(pParCxt->pCatalog, &conn, &name, pMeta, false);
} }
if (TSDB_CODE_SUCCESS != code) { if (TSDB_CODE_SUCCESS != code) {
parserError("catalogRefreshGetTableMeta error, code:%s, dbName:%s, tbName:%s", tstrerror(code), pDbName, parserError("0x%" PRIx64 " catalogRefreshGetTableMeta error, code:%s, dbName:%s, tbName:%s",
pTableName); pCxt->pParseCxt->requestId, tstrerror(code), pDbName, pTableName);
} }
return code; return code;
} }
...@@ -196,7 +196,8 @@ static int32_t getDBVgInfoImpl(STranslateContext* pCxt, const SName* pName, SArr ...@@ -196,7 +196,8 @@ static int32_t getDBVgInfoImpl(STranslateContext* pCxt, const SName* pName, SArr
} }
} }
if (TSDB_CODE_SUCCESS != code) { if (TSDB_CODE_SUCCESS != code) {
parserError("catalogGetDBVgInfo error, code:%s, dbFName:%s", tstrerror(code), fullDbName); parserError("0x%" PRIx64 " catalogGetDBVgInfo error, code:%s, dbFName:%s", pCxt->pParseCxt->requestId,
tstrerror(code), fullDbName);
} }
return code; return code;
} }
...@@ -227,8 +228,8 @@ static int32_t getTableHashVgroupImpl(STranslateContext* pCxt, const SName* pNam ...@@ -227,8 +228,8 @@ static int32_t getTableHashVgroupImpl(STranslateContext* pCxt, const SName* pNam
} }
} }
if (TSDB_CODE_SUCCESS != code) { if (TSDB_CODE_SUCCESS != code) {
parserError("catalogGetTableHashVgroup error, code:%s, dbName:%s, tbName:%s", tstrerror(code), pName->dbname, parserError("0x%" PRIx64 " catalogGetTableHashVgroup error, code:%s, dbName:%s, tbName:%s",
pName->tname); pCxt->pParseCxt->requestId, tstrerror(code), pName->dbname, pName->tname);
} }
return code; return code;
} }
...@@ -251,7 +252,8 @@ static int32_t getDBVgVersion(STranslateContext* pCxt, const char* pDbFName, int ...@@ -251,7 +252,8 @@ static int32_t getDBVgVersion(STranslateContext* pCxt, const char* pDbFName, int
} }
} }
if (TSDB_CODE_SUCCESS != code) { if (TSDB_CODE_SUCCESS != code) {
parserError("catalogGetDBVgVersion error, code:%s, dbFName:%s", tstrerror(code), pDbFName); parserError("0x%" PRIx64 " catalogGetDBVgVersion error, code:%s, dbFName:%s", pCxt->pParseCxt->requestId,
tstrerror(code), pDbFName);
} }
return code; return code;
} }
...@@ -276,7 +278,8 @@ static int32_t getDBCfg(STranslateContext* pCxt, const char* pDbName, SDbCfgInfo ...@@ -276,7 +278,8 @@ static int32_t getDBCfg(STranslateContext* pCxt, const char* pDbName, SDbCfgInfo
} }
} }
if (TSDB_CODE_SUCCESS != code) { if (TSDB_CODE_SUCCESS != code) {
parserError("catalogGetDBCfg error, code:%s, dbFName:%s", tstrerror(code), dbFname); parserError("0x%" PRIx64 " catalogGetDBCfg error, code:%s, dbFName:%s", pCxt->pParseCxt->requestId, tstrerror(code),
dbFname);
} }
return code; return code;
} }
...@@ -303,6 +306,10 @@ static int32_t getUdfInfo(STranslateContext* pCxt, SFunctionNode* pFunc) { ...@@ -303,6 +306,10 @@ static int32_t getUdfInfo(STranslateContext* pCxt, SFunctionNode* pFunc) {
pFunc->udfBufSize = funcInfo.bufSize; pFunc->udfBufSize = funcInfo.bufSize;
tFreeSFuncInfo(&funcInfo); tFreeSFuncInfo(&funcInfo);
} }
if (TSDB_CODE_SUCCESS != code) {
parserError("0x%" PRIx64 " catalogGetUdfInfo error, code:%s, funcName:%s", pCxt->pParseCxt->requestId,
tstrerror(code), pFunc->functionName);
}
return code; return code;
} }
...@@ -323,7 +330,8 @@ static int32_t getTableIndex(STranslateContext* pCxt, const SName* pName, SArray ...@@ -323,7 +330,8 @@ static int32_t getTableIndex(STranslateContext* pCxt, const SName* pName, SArray
code = catalogGetTableIndex(pParCxt->pCatalog, &conn, pName, pIndexes); code = catalogGetTableIndex(pParCxt->pCatalog, &conn, pName, pIndexes);
} }
if (TSDB_CODE_SUCCESS != code) { if (TSDB_CODE_SUCCESS != code) {
parserError("getTableIndex error, code:%s, dbName:%s, tbName:%s", tstrerror(code), pName->dbname, pName->tname); parserError("0x%" PRIx64 " getTableIndex error, code:%s, dbName:%s, tbName:%s", pCxt->pParseCxt->requestId,
tstrerror(code), pName->dbname, pName->tname);
} }
return code; return code;
} }
...@@ -341,7 +349,7 @@ static int32_t getDnodeList(STranslateContext* pCxt, SArray** pDnodes) { ...@@ -341,7 +349,7 @@ static int32_t getDnodeList(STranslateContext* pCxt, SArray** pDnodes) {
code = catalogGetDnodeList(pParCxt->pCatalog, &conn, pDnodes); code = catalogGetDnodeList(pParCxt->pCatalog, &conn, pDnodes);
} }
if (TSDB_CODE_SUCCESS != code) { if (TSDB_CODE_SUCCESS != code) {
parserError("getDnodeList error, code:%s", tstrerror(code)); parserError("0x%" PRIx64 " getDnodeList error, code:%s", pCxt->pParseCxt->requestId, tstrerror(code));
} }
return code; return code;
} }
...@@ -707,7 +715,7 @@ static EDealRes translateColumnUseAlias(STranslateContext* pCxt, SColumnNode** p ...@@ -707,7 +715,7 @@ static EDealRes translateColumnUseAlias(STranslateContext* pCxt, SColumnNode** p
} }
static EDealRes translateColumn(STranslateContext* pCxt, SColumnNode** pCol) { static EDealRes translateColumn(STranslateContext* pCxt, SColumnNode** pCol) {
if (isSelectStmt(pCxt->pCurrStmt) && NULL == ((SSelectStmt*)pCxt->pCurrStmt)->pFromTable) { if (NULL == pCxt->pCurrStmt || isSelectStmt(pCxt->pCurrStmt) && NULL == ((SSelectStmt*)pCxt->pCurrStmt)->pFromTable) {
return generateDealNodeErrMsg(pCxt, TSDB_CODE_PAR_INVALID_COLUMN, (*pCol)->colName); return generateDealNodeErrMsg(pCxt, TSDB_CODE_PAR_INVALID_COLUMN, (*pCol)->colName);
} }
...@@ -1248,6 +1256,22 @@ static int32_t translateForbidGroupByFunc(STranslateContext* pCxt, SFunctionNode ...@@ -1248,6 +1256,22 @@ static int32_t translateForbidGroupByFunc(STranslateContext* pCxt, SFunctionNode
return TSDB_CODE_SUCCESS; return TSDB_CODE_SUCCESS;
} }
static int32_t translateRepeatScanFunc(STranslateContext* pCxt, SFunctionNode* pFunc) {
if (!fmIsRepeatScanFunc(pFunc->funcId)) {
return TSDB_CODE_SUCCESS;
}
if (isSelectStmt(pCxt->pCurrStmt) && NULL != ((SSelectStmt*)pCxt->pCurrStmt)->pFromTable) {
SNode* pTable = ((SSelectStmt*)pCxt->pCurrStmt)->pFromTable;
if (QUERY_NODE_REAL_TABLE == nodeType(pTable) &&
(TSDB_CHILD_TABLE == ((SRealTableNode*)pTable)->pMeta->tableType ||
TSDB_NORMAL_TABLE == ((SRealTableNode*)pTable)->pMeta->tableType)) {
return TSDB_CODE_SUCCESS;
}
}
return generateSyntaxErrMsgExt(&pCxt->msgBuf, TSDB_CODE_PAR_ONLY_SUPPORT_SINGLE_TABLE,
"%s is only supported in single table query", pFunc->functionName);
}
static void setFuncClassification(SNode* pCurrStmt, SFunctionNode* pFunc) { static void setFuncClassification(SNode* pCurrStmt, SFunctionNode* pFunc) {
if (NULL != pCurrStmt && QUERY_NODE_SELECT_STMT == nodeType(pCurrStmt)) { if (NULL != pCurrStmt && QUERY_NODE_SELECT_STMT == nodeType(pCurrStmt)) {
SSelectStmt* pSelect = (SSelectStmt*)pCurrStmt; SSelectStmt* pSelect = (SSelectStmt*)pCurrStmt;
...@@ -1370,6 +1394,9 @@ static int32_t translateNoramlFunction(STranslateContext* pCxt, SFunctionNode* p ...@@ -1370,6 +1394,9 @@ static int32_t translateNoramlFunction(STranslateContext* pCxt, SFunctionNode* p
if (TSDB_CODE_SUCCESS == code) { if (TSDB_CODE_SUCCESS == code) {
code = translateForbidGroupByFunc(pCxt, pFunc); code = translateForbidGroupByFunc(pCxt, pFunc);
} }
if (TSDB_CODE_SUCCESS == code) {
code = translateRepeatScanFunc(pCxt, pFunc);
}
if (TSDB_CODE_SUCCESS == code) { if (TSDB_CODE_SUCCESS == code) {
setFuncClassification(pCxt->pCurrStmt, pFunc); setFuncClassification(pCxt->pCurrStmt, pFunc);
} }
...@@ -2760,6 +2787,7 @@ static int32_t translateDeleteWhere(STranslateContext* pCxt, SDeleteStmt* pDelet ...@@ -2760,6 +2787,7 @@ static int32_t translateDeleteWhere(STranslateContext* pCxt, SDeleteStmt* pDelet
} }
static int32_t translateDelete(STranslateContext* pCxt, SDeleteStmt* pDelete) { static int32_t translateDelete(STranslateContext* pCxt, SDeleteStmt* pDelete) {
pCxt->pCurrStmt = (SNode*)pDelete;
int32_t code = translateFrom(pCxt, pDelete->pFromTable); int32_t code = translateFrom(pCxt, pDelete->pFromTable);
if (TSDB_CODE_SUCCESS == code) { if (TSDB_CODE_SUCCESS == code) {
code = translateDeleteWhere(pCxt, pDelete); code = translateDeleteWhere(pCxt, pDelete);
...@@ -3743,12 +3771,24 @@ static int32_t buildAlterSuperTableReq(STranslateContext* pCxt, SAlterTableStmt* ...@@ -3743,12 +3771,24 @@ static int32_t buildAlterSuperTableReq(STranslateContext* pCxt, SAlterTableStmt*
return TSDB_CODE_SUCCESS; return TSDB_CODE_SUCCESS;
} }
static SSchema* getColSchema(STableMeta* pTableMeta, const char* pTagName) { static SSchema* getColSchema(STableMeta* pTableMeta, const char* pColName) {
int32_t numOfFields = getNumOfTags(pTableMeta) + getNumOfColumns(pTableMeta); int32_t numOfFields = getNumOfTags(pTableMeta) + getNumOfColumns(pTableMeta);
for (int32_t i = 0; i < numOfFields; ++i) { for (int32_t i = 0; i < numOfFields; ++i) {
SSchema* pTagSchema = pTableMeta->schema + i; SSchema* pSchema = pTableMeta->schema + i;
if (0 == strcmp(pTagName, pTagSchema->name)) { if (0 == strcmp(pColName, pSchema->name)) {
return pTagSchema; return pSchema;
}
}
return NULL;
}
static SSchema* getTagSchema(STableMeta* pTableMeta, const char* pTagName) {
int32_t numOfTags = getNumOfTags(pTableMeta);
SSchema* pTagsSchema = getTableTagSchema(pTableMeta);
for (int32_t i = 0; i < numOfTags; ++i) {
SSchema* pSchema = pTagsSchema + i;
if (0 == strcmp(pTagName, pSchema->name)) {
return pSchema;
} }
} }
return NULL; return NULL;
...@@ -3756,22 +3796,48 @@ static SSchema* getColSchema(STableMeta* pTableMeta, const char* pTagName) { ...@@ -3756,22 +3796,48 @@ static SSchema* getColSchema(STableMeta* pTableMeta, const char* pTagName) {
static int32_t checkAlterSuperTable(STranslateContext* pCxt, SAlterTableStmt* pStmt) { static int32_t checkAlterSuperTable(STranslateContext* pCxt, SAlterTableStmt* pStmt) {
if (TSDB_ALTER_TABLE_UPDATE_TAG_VAL == pStmt->alterType || TSDB_ALTER_TABLE_UPDATE_COLUMN_NAME == pStmt->alterType) { if (TSDB_ALTER_TABLE_UPDATE_TAG_VAL == pStmt->alterType || TSDB_ALTER_TABLE_UPDATE_COLUMN_NAME == pStmt->alterType) {
return generateSyntaxErrMsgExt(&pCxt->msgBuf, TSDB_CODE_PAR_INVALID_ALTER_TABLE,
"Set tag value only available for child table");
}
if (pStmt->alterType == TSDB_ALTER_TABLE_UPDATE_OPTIONS && -1 != pStmt->pOptions->ttl) {
return generateSyntaxErrMsg(&pCxt->msgBuf, TSDB_CODE_PAR_INVALID_ALTER_TABLE); return generateSyntaxErrMsg(&pCxt->msgBuf, TSDB_CODE_PAR_INVALID_ALTER_TABLE);
} }
if (pStmt->dataType.type == TSDB_DATA_TYPE_JSON && pStmt->alterType == TSDB_ALTER_TABLE_ADD_TAG) {
return generateSyntaxErrMsg(&pCxt->msgBuf, TSDB_CODE_PAR_ONLY_ONE_JSON_TAG);
}
if (pStmt->dataType.type == TSDB_DATA_TYPE_JSON && pStmt->alterType == TSDB_ALTER_TABLE_ADD_COLUMN) {
return generateSyntaxErrMsg(&pCxt->msgBuf, TSDB_CODE_PAR_INVALID_COL_JSON);
}
STableMeta* pTableMeta = NULL;
int32_t code = getTableMeta(pCxt, pStmt->dbName, pStmt->tableName, &pTableMeta);
if (TSDB_CODE_SUCCESS != code) {
return code;
}
SSchema* pTagsSchema = getTableTagSchema(pTableMeta);
if (getNumOfTags(pTableMeta) == 1 && pTagsSchema->type == TSDB_DATA_TYPE_JSON &&
(pStmt->alterType == TSDB_ALTER_TABLE_ADD_TAG || pStmt->alterType == TSDB_ALTER_TABLE_DROP_TAG ||
pStmt->alterType == TSDB_ALTER_TABLE_UPDATE_TAG_BYTES)) {
return generateSyntaxErrMsg(&pCxt->msgBuf, TSDB_CODE_PAR_ONLY_ONE_JSON_TAG);
}
if (TSDB_ALTER_TABLE_UPDATE_COLUMN_BYTES == pStmt->alterType || if (TSDB_ALTER_TABLE_UPDATE_COLUMN_BYTES == pStmt->alterType ||
TSDB_ALTER_TABLE_UPDATE_TAG_BYTES == pStmt->alterType) { TSDB_ALTER_TABLE_UPDATE_TAG_BYTES == pStmt->alterType) {
STableMeta* pTableMeta = NULL; if (TSDB_SUPER_TABLE != pTableMeta->tableType) {
int32_t code = getTableMeta(pCxt, pStmt->dbName, pStmt->tableName, &pTableMeta); return generateSyntaxErrMsgExt(&pCxt->msgBuf, TSDB_CODE_PAR_INVALID_ALTER_TABLE, "Table is not super table");
if (TSDB_CODE_SUCCESS == code) { }
SSchema* pSchema = getColSchema(pTableMeta, pStmt->colName);
if (NULL == pSchema) { SSchema* pSchema = getColSchema(pTableMeta, pStmt->colName);
code = generateSyntaxErrMsg(&pCxt->msgBuf, TSDB_CODE_PAR_INVALID_COLUMN, pStmt->colName); if (NULL == pSchema) {
} else if (!IS_VAR_DATA_TYPE(pSchema->type) || pSchema->type != pStmt->dataType.type || return generateSyntaxErrMsg(&pCxt->msgBuf, TSDB_CODE_PAR_INVALID_COLUMN, pStmt->colName);
pSchema->bytes >= calcTypeBytes(pStmt->dataType)) { } else if (!IS_VAR_DATA_TYPE(pSchema->type) || pSchema->type != pStmt->dataType.type ||
code = generateSyntaxErrMsg(&pCxt->msgBuf, TSDB_CODE_PAR_INVALID_MODIFY_COL); pSchema->bytes >= calcTypeBytes(pStmt->dataType)) {
} return generateSyntaxErrMsg(&pCxt->msgBuf, TSDB_CODE_PAR_INVALID_MODIFY_COL);
} }
return code;
} }
return TSDB_CODE_SUCCESS; return TSDB_CODE_SUCCESS;
} }
...@@ -4455,6 +4521,7 @@ static int32_t translateQuery(STranslateContext* pCxt, SNode* pNode) { ...@@ -4455,6 +4521,7 @@ static int32_t translateQuery(STranslateContext* pCxt, SNode* pNode) {
code = translateDropSuperTable(pCxt, (SDropSuperTableStmt*)pNode); code = translateDropSuperTable(pCxt, (SDropSuperTableStmt*)pNode);
break; break;
case QUERY_NODE_ALTER_TABLE_STMT: case QUERY_NODE_ALTER_TABLE_STMT:
case QUERY_NODE_ALTER_SUPER_TABLE_STMT:
code = translateAlterSuperTable(pCxt, (SAlterTableStmt*)pNode); code = translateAlterSuperTable(pCxt, (SAlterTableStmt*)pNode);
break; break;
case QUERY_NODE_CREATE_USER_STMT: case QUERY_NODE_CREATE_USER_STMT:
...@@ -5222,30 +5289,62 @@ static void addCreateTbReqIntoVgroup(int32_t acctId, SHashObj* pVgroupHashmap, S ...@@ -5222,30 +5289,62 @@ static void addCreateTbReqIntoVgroup(int32_t acctId, SHashObj* pVgroupHashmap, S
} }
} }
static int32_t createValueFromFunction(STranslateContext* pCxt, SFunctionNode* pFunc, SValueNode** pVal) { static SDataType schemaToDataType(uint8_t precision, SSchema* pSchema) {
int32_t code = getFuncInfo(pCxt, pFunc); SDataType dt = {.type = pSchema->type, .bytes = pSchema->bytes, .precision = precision, .scale = 0};
return dt;
}
static int32_t createCastFuncForTag(STranslateContext* pCxt, SNode* pNode, SDataType dt, SNode** pCast) {
SNode* pExpr = nodesCloneNode(pNode);
if (NULL == pExpr) {
return TSDB_CODE_OUT_OF_MEMORY;
}
int32_t code = translateExpr(pCxt, &pExpr);
if (TSDB_CODE_SUCCESS == code) { if (TSDB_CODE_SUCCESS == code) {
code = scalarCalculateConstants((SNode*)pFunc, (SNode**)pVal); code = createCastFunc(pCxt, pExpr, dt, pCast);
}
if (TSDB_CODE_SUCCESS != code) {
nodesDestroyNode(pExpr);
} }
return code; return code;
} }
static SDataType schemaToDataType(uint8_t precision, SSchema* pSchema) { static int32_t createTagValFromExpr(STranslateContext* pCxt, SDataType targetDt, SNode* pNode, SValueNode** pVal) {
SDataType dt = {.type = pSchema->type, .bytes = pSchema->bytes, .precision = precision, .scale = 0}; SNode* pCast = NULL;
return dt; int32_t code = createCastFuncForTag(pCxt, pNode, targetDt, &pCast);
SNode* pNew = NULL;
if (TSDB_CODE_SUCCESS == code) {
code = scalarCalculateConstants(pCast, &pNew);
}
if (TSDB_CODE_SUCCESS == code) {
pCast = pNew;
if (QUERY_NODE_VALUE != nodeType(pCast)) {
code = generateSyntaxErrMsg(&pCxt->msgBuf, TSDB_CODE_PAR_WRONG_VALUE_TYPE, ((SExprNode*)pNode)->aliasName);
}
}
if (TSDB_CODE_SUCCESS == code) {
*pVal = (SValueNode*)pCast;
} else {
nodesDestroyNode(pCast);
}
return code;
}
static int32_t createTagValFromVal(STranslateContext* pCxt, SDataType targetDt, SNode* pNode, SValueNode** pVal) {
*pVal = (SValueNode*)nodesCloneNode(pNode);
if (NULL == *pVal) {
return TSDB_CODE_OUT_OF_MEMORY;
}
return DEAL_RES_ERROR == translateValueImpl(pCxt, *pVal, targetDt) ? pCxt->errCode : TSDB_CODE_SUCCESS;
} }
static int32_t translateTagVal(STranslateContext* pCxt, uint8_t precision, SSchema* pSchema, SNode* pNode, static int32_t createTagVal(STranslateContext* pCxt, uint8_t precision, SSchema* pSchema, SNode* pNode,
SValueNode** pVal) { SValueNode** pVal) {
if (QUERY_NODE_FUNCTION == nodeType(pNode)) { if (QUERY_NODE_VALUE == nodeType(pNode)) {
return createValueFromFunction(pCxt, (SFunctionNode*)pNode, pVal); return createTagValFromVal(pCxt, schemaToDataType(precision, pSchema), pNode, pVal);
} else if (QUERY_NODE_VALUE == nodeType(pNode)) {
return (DEAL_RES_ERROR == translateValueImpl(pCxt, (SValueNode*)pNode, schemaToDataType(precision, pSchema))
? pCxt->errCode
: TSDB_CODE_SUCCESS);
} else { } else {
// return generateSyntaxErrMsg(&pCxt->msgBuf, TSDB_CODE_PAR_WRONG_VALUE_TYPE, ((SExprNode*)pNode)->aliasName); return createTagValFromExpr(pCxt, schemaToDataType(precision, pSchema), pNode, pVal);
return TSDB_CODE_FAILED;
} }
} }
...@@ -5285,56 +5384,45 @@ static int32_t buildKVRowForBindTags(STranslateContext* pCxt, SCreateSubTableCla ...@@ -5285,56 +5384,45 @@ static int32_t buildKVRowForBindTags(STranslateContext* pCxt, SCreateSubTableCla
if (NULL == pTagArray) { if (NULL == pTagArray) {
return TSDB_CODE_OUT_OF_MEMORY; return TSDB_CODE_OUT_OF_MEMORY;
} }
int32_t code = TSDB_CODE_SUCCESS;
SSchema* pTagSchema = getTableTagSchema(pSuperTableMeta); int32_t code = TSDB_CODE_SUCCESS;
SNode * pTag = NULL, *pNode = NULL;
bool isJson = false; bool isJson = false;
SNodeList* pVals = NULL;
SNode * pTag = NULL, *pNode = NULL;
FORBOTH(pTag, pStmt->pSpecificTags, pNode, pStmt->pValsOfTags) { FORBOTH(pTag, pStmt->pSpecificTags, pNode, pStmt->pValsOfTags) {
SColumnNode* pCol = (SColumnNode*)pTag; SColumnNode* pCol = (SColumnNode*)pTag;
SSchema* pSchema = NULL; SSchema* pSchema = getTagSchema(pSuperTableMeta, pCol->colName);
for (int32_t i = 0; i < numOfTags; ++i) {
if (0 == strcmp(pCol->colName, pTagSchema[i].name)) {
pSchema = pTagSchema + i;
break;
}
}
if (NULL == pSchema) { if (NULL == pSchema) {
code = generateSyntaxErrMsg(&pCxt->msgBuf, TSDB_CODE_PAR_INVALID_TAG_NAME, pCol->colName); code = generateSyntaxErrMsg(&pCxt->msgBuf, TSDB_CODE_PAR_INVALID_TAG_NAME, pCol->colName);
goto end;
} }
SValueNode* pVal = NULL; SValueNode* pVal = NULL;
code = translateTagVal(pCxt, pSuperTableMeta->tableInfo.precision, pSchema, pNode, &pVal); if (TSDB_CODE_SUCCESS == code) {
if (TSDB_CODE_SUCCESS != code) { code = createTagVal(pCxt, pSuperTableMeta->tableInfo.precision, pSchema, pNode, &pVal);
goto end;
} }
if (TSDB_CODE_SUCCESS == code) {
if (NULL == pVal) { if (pSchema->type == TSDB_DATA_TYPE_JSON) {
pVal = (SValueNode*)pNode; isJson = true;
} else { code = buildJsonTagVal(pCxt, pSchema, pVal, pTagArray, ppTag);
REPLACE_LIST2_NODE(pVal); } else if (pVal->node.resType.type != TSDB_DATA_TYPE_NULL) {
code = buildNormalTagVal(pCxt, pSchema, pVal, pTagArray);
}
} }
if (TSDB_CODE_SUCCESS == code) {
if (pSchema->type == TSDB_DATA_TYPE_JSON) { code = nodesListMakeAppend(&pVals, (SNode*)pVal);
isJson = true; }
code = buildJsonTagVal(pCxt, pSchema, pVal, pTagArray, ppTag); if (TSDB_CODE_SUCCESS != code) {
} else if (pVal->node.resType.type != TSDB_DATA_TYPE_NULL) { break;
code = buildNormalTagVal(pCxt, pSchema, pVal, pTagArray);
} }
} }
if (!isJson) code = tTagNew(pTagArray, 1, false, ppTag); if (TSDB_CODE_SUCCESS == code && !isJson) {
code = tTagNew(pTagArray, 1, false, ppTag);
end:
if (isJson) {
for (int i = 0; i < taosArrayGetSize(pTagArray); ++i) {
STagVal* p = (STagVal*)taosArrayGet(pTagArray, i);
if (IS_VAR_DATA_TYPE(p->type)) {
taosMemoryFree(p->pData);
}
}
} }
nodesDestroyList(pVals);
taosArrayDestroy(pTagArray); taosArrayDestroy(pTagArray);
return TSDB_CODE_SUCCESS; return code;
} }
static int32_t buildKVRowForAllTags(STranslateContext* pCxt, SCreateSubTableClause* pStmt, STableMeta* pSuperTableMeta, static int32_t buildKVRowForAllTags(STranslateContext* pCxt, SCreateSubTableClause* pStmt, STableMeta* pSuperTableMeta,
...@@ -5343,64 +5431,52 @@ static int32_t buildKVRowForAllTags(STranslateContext* pCxt, SCreateSubTableClau ...@@ -5343,64 +5431,52 @@ static int32_t buildKVRowForAllTags(STranslateContext* pCxt, SCreateSubTableClau
return generateSyntaxErrMsg(&pCxt->msgBuf, TSDB_CODE_PAR_TAGS_NOT_MATCHED); return generateSyntaxErrMsg(&pCxt->msgBuf, TSDB_CODE_PAR_TAGS_NOT_MATCHED);
} }
SSchema* pTagSchemas = getTableTagSchema(pSuperTableMeta); SArray* pTagArray = taosArrayInit(LIST_LENGTH(pStmt->pValsOfTags), sizeof(STagVal));
SNode* pNode; if (NULL == pTagArray) {
int32_t code = TSDB_CODE_SUCCESS; return TSDB_CODE_OUT_OF_MEMORY;
int32_t index = 0;
SArray* pTagArray = taosArrayInit(LIST_LENGTH(pStmt->pValsOfTags), sizeof(STagVal));
if (!pTagArray) {
return generateSyntaxErrMsg(&pCxt->msgBuf, TSDB_CODE_TSC_OUT_OF_MEMORY);
} }
bool isJson = false; int32_t code = TSDB_CODE_SUCCESS;
bool isJson = false;
int32_t index = 0;
SSchema* pTagSchemas = getTableTagSchema(pSuperTableMeta);
SNodeList* pVals = NULL;
SNode* pNode;
FOREACH(pNode, pStmt->pValsOfTags) { FOREACH(pNode, pStmt->pValsOfTags) {
SValueNode* pVal = NULL; SValueNode* pVal = NULL;
SSchema* pTagSchema = pTagSchemas + index; SSchema* pTagSchema = pTagSchemas + index;
code = translateTagVal(pCxt, pSuperTableMeta->tableInfo.precision, pTagSchema, pNode, &pVal); code = createTagVal(pCxt, pSuperTableMeta->tableInfo.precision, pTagSchema, pNode, &pVal);
if (TSDB_CODE_SUCCESS != code) { if (TSDB_CODE_SUCCESS == code) {
goto end; if (pTagSchema->type == TSDB_DATA_TYPE_JSON) {
isJson = true;
code = buildJsonTagVal(pCxt, pTagSchema, pVal, pTagArray, ppTag);
} else if (pVal->node.resType.type != TSDB_DATA_TYPE_NULL && !pVal->isNull) {
char* tmpVal = nodesGetValueFromNode(pVal);
STagVal val = {.cid = pTagSchema->colId, .type = pTagSchema->type};
if (IS_VAR_DATA_TYPE(pTagSchema->type)) {
val.pData = varDataVal(tmpVal);
val.nData = varDataLen(tmpVal);
} else {
memcpy(&val.i64, tmpVal, pTagSchema->bytes);
}
taosArrayPush(pTagArray, &val);
}
} }
if (NULL == pVal) { if (TSDB_CODE_SUCCESS == code) {
pVal = (SValueNode*)pNode; code = nodesListMakeAppend(&pVals, (SNode*)pVal);
} else {
REPLACE_NODE(pVal);
} }
if (pTagSchema->type == TSDB_DATA_TYPE_JSON) { if (TSDB_CODE_SUCCESS != code) {
if (pVal->literal && strlen(pVal->literal) > (TSDB_MAX_JSON_TAG_LEN - VARSTR_HEADER_SIZE) / TSDB_NCHAR_SIZE) { break;
code = buildSyntaxErrMsg(&pCxt->msgBuf, "json string too long than 4095", pVal->literal);
goto end;
}
isJson = true;
code = parseJsontoTagData(pVal->literal, pTagArray, ppTag, &pCxt->msgBuf);
if (code != TSDB_CODE_SUCCESS) {
goto end;
}
} else if (pVal->node.resType.type != TSDB_DATA_TYPE_NULL && !pVal->isNull) {
char* tmpVal = nodesGetValueFromNode(pVal);
STagVal val = {.cid = pTagSchema->colId, .type = pTagSchema->type};
if (IS_VAR_DATA_TYPE(pTagSchema->type)) {
val.pData = varDataVal(tmpVal);
val.nData = varDataLen(tmpVal);
} else {
memcpy(&val.i64, tmpVal, pTagSchema->bytes);
}
taosArrayPush(pTagArray, &val);
} }
++index; ++index;
} }
if (!isJson) code = tTagNew(pTagArray, 1, false, ppTag);
end: if (TSDB_CODE_SUCCESS == code && !isJson) {
if (isJson) { code = tTagNew(pTagArray, 1, false, ppTag);
for (int i = 0; i < taosArrayGetSize(pTagArray); ++i) {
STagVal* p = (STagVal*)taosArrayGet(pTagArray, i);
if (IS_VAR_DATA_TYPE(p->type)) {
taosMemoryFree(p->pData);
}
}
} }
nodesDestroyList(pVals);
taosArrayDestroy(pTagArray); taosArrayDestroy(pTagArray);
return code; return code;
} }
...@@ -5898,15 +5974,6 @@ static int32_t rewriteAlterTableImpl(STranslateContext* pCxt, SAlterTableStmt* p ...@@ -5898,15 +5974,6 @@ static int32_t rewriteAlterTableImpl(STranslateContext* pCxt, SAlterTableStmt* p
} }
if (TSDB_SUPER_TABLE == pTableMeta->tableType) { if (TSDB_SUPER_TABLE == pTableMeta->tableType) {
SSchema* pTagsSchema = getTableTagSchema(pTableMeta);
if (getNumOfTags(pTableMeta) == 1 && pTagsSchema->type == TSDB_DATA_TYPE_JSON &&
(pStmt->alterType == TSDB_ALTER_TABLE_ADD_TAG || pStmt->alterType == TSDB_ALTER_TABLE_DROP_TAG ||
pStmt->alterType == TSDB_ALTER_TABLE_UPDATE_TAG_BYTES)) {
return generateSyntaxErrMsg(&pCxt->msgBuf, TSDB_CODE_PAR_ONLY_ONE_JSON_TAG);
}
if (pStmt->alterType == TSDB_ALTER_TABLE_UPDATE_OPTIONS && -1 != pStmt->pOptions->ttl) {
return generateSyntaxErrMsg(&pCxt->msgBuf, TSDB_CODE_PAR_INVALID_ALTER_TABLE);
}
return TSDB_CODE_SUCCESS; return TSDB_CODE_SUCCESS;
} else if (TSDB_CHILD_TABLE != pTableMeta->tableType && TSDB_NORMAL_TABLE != pTableMeta->tableType) { } else if (TSDB_CHILD_TABLE != pTableMeta->tableType && TSDB_NORMAL_TABLE != pTableMeta->tableType) {
return generateSyntaxErrMsg(&pCxt->msgBuf, TSDB_CODE_PAR_INVALID_ALTER_TABLE); return generateSyntaxErrMsg(&pCxt->msgBuf, TSDB_CODE_PAR_INVALID_ALTER_TABLE);
...@@ -5929,10 +5996,6 @@ static int32_t rewriteAlterTableImpl(STranslateContext* pCxt, SAlterTableStmt* p ...@@ -5929,10 +5996,6 @@ static int32_t rewriteAlterTableImpl(STranslateContext* pCxt, SAlterTableStmt* p
static int32_t rewriteAlterTable(STranslateContext* pCxt, SQuery* pQuery) { static int32_t rewriteAlterTable(STranslateContext* pCxt, SQuery* pQuery) {
SAlterTableStmt* pStmt = (SAlterTableStmt*)pQuery->pRoot; SAlterTableStmt* pStmt = (SAlterTableStmt*)pQuery->pRoot;
if (pStmt->dataType.type == TSDB_DATA_TYPE_JSON && pStmt->alterType == TSDB_ALTER_TABLE_ADD_TAG) {
return generateSyntaxErrMsg(&pCxt->msgBuf, TSDB_CODE_PAR_ONLY_ONE_JSON_TAG);
}
if (pStmt->dataType.type == TSDB_DATA_TYPE_JSON && pStmt->alterType == TSDB_ALTER_TABLE_ADD_COLUMN) { if (pStmt->dataType.type == TSDB_DATA_TYPE_JSON && pStmt->alterType == TSDB_ALTER_TABLE_ADD_COLUMN) {
return generateSyntaxErrMsg(&pCxt->msgBuf, TSDB_CODE_PAR_INVALID_COL_JSON); return generateSyntaxErrMsg(&pCxt->msgBuf, TSDB_CODE_PAR_INVALID_COL_JSON);
} }
......
...@@ -215,13 +215,21 @@ int32_t generateSyntaxErrMsg(SMsgBuf* pBuf, int32_t errCode, ...) { ...@@ -215,13 +215,21 @@ int32_t generateSyntaxErrMsg(SMsgBuf* pBuf, int32_t errCode, ...) {
return errCode; return errCode;
} }
int32_t generateSyntaxErrMsgExt(SMsgBuf* pBuf, int32_t errCode, const char* pFormat, ...) {
va_list vArgList;
va_start(vArgList, pFormat);
vsnprintf(pBuf->buf, pBuf->len, pFormat, vArgList);
va_end(vArgList);
return errCode;
}
int32_t buildInvalidOperationMsg(SMsgBuf* pBuf, const char* msg) { int32_t buildInvalidOperationMsg(SMsgBuf* pBuf, const char* msg) {
strncpy(pBuf->buf, msg, pBuf->len); strncpy(pBuf->buf, msg, pBuf->len);
return TSDB_CODE_TSC_INVALID_OPERATION; return TSDB_CODE_TSC_INVALID_OPERATION;
} }
int32_t buildSyntaxErrMsg(SMsgBuf* pBuf, const char* additionalInfo, const char* sourceStr) { int32_t buildSyntaxErrMsg(SMsgBuf* pBuf, const char* additionalInfo, const char* sourceStr) {
if(pBuf == NULL) return TSDB_CODE_TSC_SQL_SYNTAX_ERROR; if (pBuf == NULL) return TSDB_CODE_TSC_SQL_SYNTAX_ERROR;
const char* msgFormat1 = "syntax error near \'%s\'"; const char* msgFormat1 = "syntax error near \'%s\'";
const char* msgFormat2 = "syntax error near \'%s\' (%s)"; const char* msgFormat2 = "syntax error near \'%s\' (%s)";
const char* msgFormat3 = "%s"; const char* msgFormat3 = "%s";
......
...@@ -216,609 +216,635 @@ typedef union { ...@@ -216,609 +216,635 @@ typedef union {
** yy_default[] Default action for each state. ** yy_default[] Default action for each state.
** **
*********** Begin parsing tables **********************************************/ *********** Begin parsing tables **********************************************/
#define YY_ACTTAB_COUNT (2471) #define YY_ACTTAB_COUNT (2609)
static const YYACTIONTYPE yy_action[] = { static const YYACTIONTYPE yy_action[] = {
/* 0 */ 422, 1670, 423, 1475, 294, 1744, 1438, 430, 317, 423, /* 0 */ 422, 1563, 423, 1475, 1900, 430, 1438, 423, 1475, 69,
/* 10 */ 1475, 1563, 39, 37, 1505, 338, 1741, 69, 1619, 1621, /* 10 */ 69, 379, 40, 38, 1744, 141, 1775, 1899, 541, 1531,
/* 20 */ 326, 1441, 1238, 1744, 1900, 1565, 334, 525, 373, 379, /* 20 */ 333, 1897, 1238, 115, 534, 1741, 41, 39, 37, 36,
/* 30 */ 115, 1674, 1775, 1313, 1741, 1236, 1741, 1899, 1552, 1569, /* 30 */ 35, 1570, 1569, 1313, 101, 1236, 1565, 100, 99, 98,
/* 40 */ 518, 1897, 101, 1737, 1743, 100, 99, 98, 97, 96, /* 40 */ 97, 96, 95, 94, 93, 92, 120, 1741, 297, 544,
/* 50 */ 95, 94, 93, 92, 570, 119, 1308, 987, 1757, 14, /* 50 */ 1745, 1737, 1743, 322, 338, 1757, 1308, 1619, 1621, 14,
/* 60 */ 61, 1737, 1743, 1737, 1743, 1244, 297, 343, 1900, 39, /* 60 */ 544, 1741, 533, 562, 439, 1244, 343, 546, 1263, 40,
/* 70 */ 37, 1376, 570, 439, 570, 474, 473, 326, 517, 1238, /* 70 */ 38, 1376, 541, 1737, 1743, 1552, 1900, 333, 140, 1238,
/* 80 */ 472, 157, 1, 116, 469, 1897, 1775, 468, 467, 466, /* 80 */ 1452, 167, 1, 1775, 544, 562, 118, 1737, 1743, 158,
/* 90 */ 1313, 1004, 1236, 1003, 528, 117, 439, 991, 992, 1727, /* 90 */ 1313, 569, 1236, 1897, 373, 464, 1727, 1900, 568, 562,
/* 100 */ 479, 548, 1380, 310, 649, 566, 458, 1900, 1262, 527, /* 100 */ 120, 245, 1842, 540, 649, 539, 67, 1900, 1900, 66,
/* 110 */ 153, 1842, 1843, 1308, 1847, 489, 14, 552, 1315, 1316, /* 110 */ 1898, 44, 546, 1308, 1897, 1056, 14, 463, 1315, 1316,
/* 120 */ 157, 1005, 1244, 1550, 1897, 329, 412, 1788, 1671, 202, /* 120 */ 157, 159, 1244, 1788, 1897, 1897, 1263, 87, 1758, 571,
/* 130 */ 88, 1758, 551, 1760, 1761, 547, 60, 570, 60, 2, /* 130 */ 1760, 1761, 567, 439, 562, 1900, 60, 1834, 1380, 2,
/* 140 */ 1834, 525, 210, 482, 319, 1830, 152, 476, 30, 240, /* 140 */ 118, 300, 1830, 541, 1262, 1058, 43, 1262, 157, 151,
/* 150 */ 652, 311, 201, 309, 308, 140, 462, 1452, 156, 421, /* 150 */ 652, 210, 1897, 1900, 543, 153, 1842, 1843, 1004, 1847,
/* 160 */ 464, 649, 425, 1239, 262, 1237, 1860, 43, 60, 119, /* 160 */ 1003, 649, 1613, 1239, 262, 1237, 159, 31, 255, 987,
/* 170 */ 73, 330, 171, 170, 566, 1315, 1316, 55, 149, 138, /* 170 */ 1897, 120, 535, 458, 320, 1315, 1316, 60, 149, 73,
/* 180 */ 54, 604, 463, 642, 638, 634, 630, 260, 1576, 1242, /* 180 */ 604, 203, 138, 642, 638, 634, 630, 260, 1005, 1242,
/* 190 */ 1243, 519, 1291, 1292, 1294, 1295, 1296, 1297, 1298, 544, /* 190 */ 1243, 1576, 1291, 1292, 1294, 1295, 1296, 1297, 1298, 564,
/* 200 */ 568, 1306, 1307, 1309, 1310, 1311, 1312, 1314, 1317, 117, /* 200 */ 560, 1306, 1307, 1309, 1310, 1311, 1312, 1314, 1317, 991,
/* 210 */ 1263, 1669, 85, 1323, 294, 254, 372, 167, 371, 1262, /* 210 */ 992, 118, 85, 1323, 421, 225, 372, 425, 371, 1262,
/* 220 */ 1239, 160, 1237, 427, 154, 1842, 1843, 1900, 1847, 1260, /* 220 */ 1239, 160, 1237, 412, 1136, 1137, 154, 1842, 1843, 1261,
/* 230 */ 1745, 33, 32, 504, 1263, 40, 38, 36, 35, 34, /* 230 */ 1847, 34, 33, 310, 505, 41, 39, 37, 36, 35,
/* 240 */ 158, 1741, 67, 525, 1897, 66, 1242, 1243, 563, 1291, /* 240 */ 71, 299, 319, 541, 507, 1671, 1242, 1243, 514, 1291,
/* 250 */ 1292, 1294, 1295, 1296, 1297, 1298, 544, 568, 1306, 1307, /* 250 */ 1292, 1294, 1295, 1296, 1297, 1298, 564, 560, 1306, 1307,
/* 260 */ 1309, 1310, 1311, 1312, 1314, 1317, 39, 37, 1737, 1743, /* 260 */ 1309, 1310, 1311, 1312, 1314, 1317, 40, 38, 1440, 171,
/* 270 */ 488, 119, 490, 1900, 326, 160, 1238, 160, 69, 570, /* 270 */ 170, 120, 1626, 1674, 333, 160, 1238, 216, 217, 321,
/* 280 */ 212, 1293, 300, 486, 60, 484, 157, 1313, 101, 1236, /* 280 */ 212, 311, 301, 309, 308, 160, 462, 1313, 1624, 1236,
/* 290 */ 1897, 100, 99, 98, 97, 96, 95, 94, 93, 92, /* 290 */ 464, 530, 110, 109, 108, 107, 106, 105, 104, 103,
/* 300 */ 1570, 1211, 151, 205, 1900, 552, 1276, 160, 1136, 1137, /* 300 */ 102, 1211, 1463, 205, 517, 429, 1276, 517, 425, 517,
/* 310 */ 1308, 117, 1900, 14, 1335, 1613, 1672, 1898, 1262, 1244, /* 310 */ 1308, 118, 463, 14, 1335, 111, 160, 1293, 111, 1244,
/* 320 */ 602, 1897, 566, 39, 37, 157, 155, 1842, 1843, 1897, /* 320 */ 162, 61, 460, 40, 38, 465, 155, 1842, 1843, 60,
/* 330 */ 1847, 326, 604, 1238, 1502, 1004, 2, 1003, 1261, 129, /* 330 */ 1847, 333, 1574, 1238, 1502, 1574, 2, 1574, 299, 427,
/* 340 */ 128, 599, 598, 597, 1313, 78, 1236, 1094, 593, 592, /* 340 */ 1462, 507, 1244, 1727, 1313, 1260, 1236, 1094, 593, 592,
/* 350 */ 591, 1098, 590, 1100, 1101, 589, 1103, 586, 649, 1109, /* 350 */ 591, 1098, 590, 1100, 1101, 589, 1103, 586, 649, 1109,
/* 360 */ 583, 1111, 1112, 580, 577, 1005, 1567, 1308, 1336, 36, /* 360 */ 583, 1111, 1112, 580, 577, 1550, 517, 1308, 1336, 536,
/* 370 */ 35, 34, 1315, 1316, 1664, 1463, 1244, 40, 38, 36, /* 370 */ 531, 600, 1315, 1316, 1617, 1461, 1244, 377, 37, 36,
/* 380 */ 35, 34, 33, 32, 42, 169, 40, 38, 36, 35, /* 380 */ 35, 1727, 34, 33, 1620, 1621, 41, 39, 37, 36,
/* 390 */ 34, 1341, 1293, 8, 541, 626, 625, 624, 341, 596, /* 390 */ 35, 1341, 1293, 8, 1574, 626, 625, 624, 341, 60,
/* 400 */ 623, 622, 621, 121, 616, 615, 614, 613, 612, 611, /* 400 */ 623, 622, 621, 121, 616, 615, 614, 613, 612, 611,
/* 410 */ 610, 609, 131, 605, 141, 649, 1727, 1239, 1531, 1237, /* 410 */ 610, 609, 131, 605, 596, 649, 1727, 1239, 1849, 1237,
/* 420 */ 33, 32, 1397, 160, 40, 38, 36, 35, 34, 1315, /* 420 */ 34, 33, 1397, 604, 41, 39, 37, 36, 35, 1315,
/* 430 */ 1316, 1551, 29, 324, 1330, 1331, 1332, 1333, 1334, 1338, /* 430 */ 1316, 1551, 30, 331, 1330, 1331, 1332, 1333, 1334, 1338,
/* 440 */ 1339, 1340, 600, 1242, 1243, 1617, 1291, 1292, 1294, 1295, /* 440 */ 1339, 1340, 1846, 1242, 1243, 607, 1291, 1292, 1294, 1295,
/* 450 */ 1296, 1297, 1298, 544, 568, 1306, 1307, 1309, 1310, 1311, /* 450 */ 1296, 1297, 1298, 564, 560, 1306, 1307, 1309, 1310, 1311,
/* 460 */ 1312, 1314, 1317, 511, 1395, 1396, 1398, 1399, 1056, 567, /* 460 */ 1312, 1314, 1317, 527, 1395, 1396, 1398, 1399, 160, 517,
/* 470 */ 474, 473, 138, 1337, 1239, 472, 1237, 1264, 116, 469, /* 470 */ 474, 473, 471, 470, 1239, 472, 1237, 1559, 116, 469,
/* 480 */ 111, 1577, 468, 467, 466, 33, 32, 460, 1244, 40, /* 480 */ 378, 84, 468, 467, 466, 34, 33, 11, 10, 41,
/* 490 */ 38, 36, 35, 34, 607, 1407, 1342, 1574, 1058, 1462, /* 490 */ 39, 37, 36, 35, 117, 1407, 1004, 1574, 1003, 209,
/* 500 */ 1242, 1243, 203, 1291, 1292, 1294, 1295, 1296, 1297, 1298, /* 500 */ 1242, 1243, 1566, 1291, 1292, 1294, 1295, 1296, 1297, 1298,
/* 510 */ 544, 568, 1306, 1307, 1309, 1310, 1311, 1312, 1314, 1317, /* 510 */ 564, 560, 1306, 1307, 1309, 1310, 1311, 1312, 1314, 1317,
/* 520 */ 39, 37, 1318, 160, 1327, 602, 1620, 1621, 326, 1433, /* 520 */ 40, 38, 1318, 336, 479, 602, 1005, 72, 333, 1433,
/* 530 */ 1238, 567, 160, 471, 470, 189, 300, 27, 245, 246, /* 530 */ 1238, 138, 160, 1505, 504, 189, 301, 1561, 160, 489,
/* 540 */ 1727, 1313, 162, 1236, 129, 128, 599, 598, 597, 144, /* 540 */ 1576, 1313, 339, 1236, 129, 128, 599, 598, 597, 144,
/* 550 */ 1559, 525, 567, 1626, 456, 452, 448, 444, 188, 1574, /* 550 */ 138, 517, 497, 202, 456, 452, 448, 444, 188, 1576,
/* 560 */ 331, 71, 305, 111, 1308, 556, 1265, 336, 1335, 1624, /* 560 */ 77, 517, 382, 517, 1308, 620, 618, 482, 1335, 1349,
/* 570 */ 465, 11, 10, 1244, 339, 138, 497, 39, 37, 119, /* 570 */ 490, 476, 397, 1244, 398, 1900, 201, 40, 38, 1574,
/* 580 */ 1574, 1561, 138, 70, 1576, 326, 186, 1238, 33, 32, /* 580 */ 1626, 1567, 517, 70, 58, 333, 186, 1238, 157, 1574,
/* 590 */ 9, 1576, 40, 38, 36, 35, 34, 84, 1313, 305, /* 590 */ 9, 1574, 1897, 438, 474, 473, 1625, 364, 1313, 472,
/* 600 */ 1236, 529, 556, 1757, 567, 567, 464, 232, 1626, 1461, /* 600 */ 1236, 55, 116, 469, 54, 517, 468, 467, 466, 7,
/* 610 */ 120, 1460, 649, 1626, 567, 377, 378, 1432, 1566, 117, /* 610 */ 1574, 1900, 649, 1670, 517, 294, 1571, 1432, 517, 366,
/* 620 */ 337, 1308, 1336, 22, 1625, 382, 1315, 1316, 463, 1624, /* 620 */ 362, 1308, 1336, 1373, 157, 1703, 1315, 1316, 1897, 498,
/* 630 */ 1244, 1775, 1574, 1574, 230, 1842, 524, 1262, 523, 549, /* 630 */ 1244, 34, 33, 1574, 1460, 41, 39, 37, 36, 35,
/* 640 */ 1459, 1900, 1574, 364, 1727, 1341, 548, 9, 185, 178, /* 640 */ 991, 992, 1574, 1626, 1459, 1341, 1574, 9, 185, 178,
/* 650 */ 1727, 183, 1727, 1349, 159, 435, 33, 32, 1897, 514, /* 650 */ 337, 183, 1849, 1264, 517, 435, 34, 33, 1458, 1624,
/* 660 */ 40, 38, 36, 35, 34, 366, 362, 429, 58, 649, /* 660 */ 41, 39, 37, 36, 35, 502, 23, 1664, 517, 649,
/* 670 */ 425, 1239, 1788, 1237, 176, 142, 1758, 551, 1760, 1761, /* 670 */ 1669, 1239, 294, 1237, 176, 1727, 1845, 215, 169, 515,
/* 680 */ 547, 1727, 570, 1315, 1316, 1549, 29, 324, 1330, 1331, /* 680 */ 1457, 550, 1574, 1315, 1316, 1727, 30, 331, 1330, 1331,
/* 690 */ 1332, 1333, 1334, 1338, 1339, 1340, 213, 1242, 1243, 1458, /* 690 */ 1332, 1333, 1334, 1338, 1339, 1340, 1574, 1242, 1243, 1727,
/* 700 */ 1291, 1292, 1294, 1295, 1296, 1297, 1298, 544, 568, 1306, /* 700 */ 1291, 1292, 1294, 1295, 1296, 1297, 1298, 564, 560, 1306,
/* 710 */ 1307, 1309, 1310, 1311, 1312, 1314, 1317, 1440, 267, 530, /* 710 */ 1307, 1309, 1310, 1311, 1312, 1314, 1317, 1441, 34, 33,
/* 720 */ 1914, 1604, 567, 567, 567, 620, 618, 1557, 1239, 601, /* 720 */ 488, 1727, 41, 39, 37, 36, 35, 1849, 1239, 601,
/* 730 */ 1237, 1387, 1617, 397, 398, 438, 206, 520, 515, 1715, /* 730 */ 1237, 1387, 1617, 486, 267, 484, 1456, 1604, 101, 1219,
/* 740 */ 1727, 110, 109, 108, 107, 106, 105, 104, 103, 102, /* 740 */ 1220, 100, 99, 98, 97, 96, 95, 94, 93, 92,
/* 750 */ 1574, 1574, 1574, 525, 1242, 1243, 543, 1291, 1292, 1294, /* 750 */ 608, 1844, 1546, 541, 1242, 1243, 1715, 1291, 1292, 1294,
/* 760 */ 1295, 1296, 1297, 1298, 544, 568, 1306, 1307, 1309, 1310, /* 760 */ 1295, 1296, 1297, 1298, 564, 560, 1306, 1307, 1309, 1310,
/* 770 */ 1311, 1312, 1314, 1317, 39, 37, 296, 1238, 1260, 602, /* 770 */ 1311, 1312, 1314, 1317, 40, 38, 296, 1727, 1260, 553,
/* 780 */ 567, 119, 326, 567, 1238, 405, 352, 1457, 417, 1849, /* 780 */ 517, 120, 333, 247, 1238, 405, 1453, 1455, 417, 517,
/* 790 */ 1236, 1571, 1849, 595, 1703, 1313, 1373, 1236, 129, 128, /* 790 */ 1369, 516, 602, 1276, 1454, 1313, 1265, 1236, 1557, 505,
/* 800 */ 599, 598, 597, 529, 1456, 390, 567, 418, 1574, 392, /* 800 */ 256, 1337, 546, 352, 1451, 390, 1262, 418, 1574, 392,
/* 810 */ 1293, 1574, 244, 1846, 991, 992, 1845, 498, 1308, 1453, /* 810 */ 1672, 129, 128, 599, 598, 597, 1247, 1574, 1308, 548,
/* 820 */ 1244, 117, 567, 7, 1455, 1849, 1532, 1244, 1727, 1854, /* 820 */ 517, 118, 1854, 1369, 1342, 45, 4, 1244, 1727, 52,
/* 830 */ 1369, 1454, 194, 502, 1574, 192, 230, 1842, 524, 383, /* 830 */ 501, 340, 1450, 138, 1449, 1727, 245, 1842, 540, 383,
/* 840 */ 523, 26, 235, 1900, 2, 1727, 533, 33, 32, 1844, /* 840 */ 539, 1372, 1577, 1900, 2, 1727, 34, 33, 1574, 528,
/* 850 */ 1574, 40, 38, 36, 35, 34, 157, 28, 512, 649, /* 850 */ 41, 39, 37, 36, 35, 194, 157, 206, 192, 1448,
/* 860 */ 1897, 44, 4, 33, 32, 1727, 649, 40, 38, 36, /* 860 */ 1897, 1238, 1447, 34, 33, 28, 649, 41, 39, 37,
/* 870 */ 35, 34, 1727, 457, 1219, 1220, 1451, 52, 501, 416, /* 870 */ 36, 35, 1446, 1727, 1236, 1727, 563, 1246, 551, 416,
/* 880 */ 1315, 1316, 411, 410, 409, 408, 407, 404, 403, 402, /* 880 */ 1315, 1316, 411, 410, 409, 408, 407, 404, 403, 402,
/* 890 */ 401, 400, 396, 395, 394, 393, 387, 386, 385, 384, /* 890 */ 401, 400, 396, 395, 394, 393, 387, 386, 385, 384,
/* 900 */ 1492, 381, 380, 531, 196, 567, 1450, 195, 567, 139, /* 900 */ 1727, 381, 380, 1727, 1244, 27, 1445, 11, 10, 139,
/* 910 */ 536, 608, 1449, 1546, 273, 491, 564, 1727, 1239, 565, /* 910 */ 619, 34, 33, 1727, 273, 41, 39, 37, 36, 35,
/* 920 */ 1237, 198, 475, 200, 197, 1239, 199, 1237, 271, 57, /* 920 */ 1549, 196, 1435, 1436, 195, 1239, 227, 1237, 271, 57,
/* 930 */ 11, 10, 56, 1574, 33, 32, 1574, 1448, 40, 38, /* 930 */ 1444, 1492, 56, 1443, 198, 200, 42, 197, 199, 558,
/* 940 */ 36, 35, 34, 1757, 1242, 1243, 1447, 1727, 172, 1446, /* 940 */ 1532, 1747, 214, 649, 1757, 595, 1250, 1727, 172, 250,
/* 950 */ 1445, 1242, 1243, 1727, 1291, 1292, 1294, 1295, 1296, 1297, /* 950 */ 367, 1242, 1243, 475, 1291, 1292, 1294, 1295, 1296, 1297,
/* 960 */ 1298, 544, 568, 1306, 1307, 1309, 1310, 1311, 1312, 1314, /* 960 */ 1298, 564, 560, 1306, 1307, 1309, 1310, 1311, 1312, 1314,
/* 970 */ 1317, 1775, 567, 60, 567, 1435, 1436, 209, 1727, 549, /* 970 */ 1317, 1727, 1775, 60, 1727, 123, 1187, 1749, 554, 1293,
/* 980 */ 1444, 1487, 224, 256, 1727, 340, 548, 1727, 33, 32, /* 980 */ 569, 491, 218, 29, 1487, 1727, 1485, 568, 137, 34,
/* 990 */ 1727, 1727, 40, 38, 36, 35, 34, 1443, 1776, 619, /* 990 */ 33, 457, 126, 41, 39, 37, 36, 35, 127, 50,
/* 1000 */ 1574, 529, 1574, 477, 1369, 72, 1747, 1247, 1246, 1276, /* 1000 */ 231, 546, 1239, 42, 1237, 42, 477, 1249, 480, 42,
/* 1010 */ 50, 86, 1788, 217, 1372, 87, 1758, 551, 1760, 1761, /* 1010 */ 239, 86, 1788, 575, 602, 510, 87, 1758, 571, 1760,
/* 1020 */ 547, 1727, 570, 1485, 1757, 1834, 1476, 33, 32, 299, /* 1020 */ 1761, 567, 1757, 562, 1481, 1776, 1834, 342, 1242, 1243,
/* 1030 */ 1830, 40, 38, 36, 35, 34, 1481, 342, 1727, 367, /* 1030 */ 300, 1830, 224, 129, 128, 599, 598, 597, 1087, 1394,
/* 1040 */ 1614, 1900, 1749, 534, 1757, 480, 64, 63, 376, 41, /* 1040 */ 234, 126, 1900, 1343, 127, 1299, 64, 63, 376, 266,
/* 1050 */ 1394, 166, 1775, 219, 159, 41, 83, 370, 1897, 1864, /* 1050 */ 1775, 166, 112, 1115, 83, 157, 1028, 370, 545, 1897,
/* 1060 */ 549, 1028, 229, 526, 41, 1727, 80, 548, 242, 234, /* 1060 */ 1476, 1614, 126, 1727, 80, 568, 1864, 542, 244, 1327,
/* 1070 */ 295, 237, 1775, 360, 123, 358, 354, 350, 163, 345, /* 1070 */ 295, 249, 644, 360, 252, 358, 354, 350, 163, 345,
/* 1080 */ 528, 239, 529, 3, 644, 1727, 5, 548, 126, 1343, /* 1080 */ 254, 1119, 3, 1757, 1126, 5, 1029, 1260, 347, 344,
/* 1090 */ 344, 1029, 1260, 1788, 127, 1299, 87, 1758, 551, 1760, /* 1090 */ 1788, 351, 1124, 306, 88, 1758, 571, 1760, 1761, 567,
/* 1100 */ 1761, 547, 50, 570, 1187, 347, 1834, 351, 247, 537, /* 1100 */ 1757, 562, 130, 1056, 1834, 307, 1203, 263, 326, 1830,
/* 1110 */ 299, 1830, 160, 1788, 559, 306, 88, 1758, 551, 1760, /* 1110 */ 152, 1775, 160, 399, 1666, 168, 406, 413, 414, 545,
/* 1120 */ 1761, 547, 1900, 570, 1056, 307, 1834, 1203, 253, 263, /* 1120 */ 415, 419, 156, 1266, 1727, 420, 568, 428, 1775, 1269,
/* 1130 */ 319, 1830, 152, 575, 1087, 157, 1757, 1250, 1249, 1897, /* 1130 */ 1860, 175, 431, 177, 1268, 432, 569, 433, 1270, 180,
/* 1140 */ 126, 127, 266, 112, 126, 399, 1666, 168, 406, 414, /* 1140 */ 434, 1727, 436, 568, 182, 1267, 184, 437, 68, 440,
/* 1150 */ 413, 415, 1861, 419, 1266, 420, 428, 1269, 432, 431, /* 1150 */ 187, 1788, 461, 1757, 459, 88, 1758, 571, 1760, 1761,
/* 1160 */ 175, 177, 1268, 433, 1775, 1270, 434, 1267, 180, 137, /* 1160 */ 567, 1564, 562, 492, 264, 1834, 124, 191, 1788, 326,
/* 1170 */ 436, 182, 549, 1115, 437, 184, 68, 1727, 440, 548, /* 1170 */ 1830, 152, 88, 1758, 571, 1760, 1761, 567, 298, 562,
/* 1180 */ 1119, 1126, 459, 1124, 130, 187, 461, 91, 1564, 191, /* 1180 */ 91, 1775, 1834, 1560, 193, 132, 326, 1830, 1913, 569,
/* 1190 */ 1560, 298, 1708, 193, 132, 133, 1562, 1558, 264, 1757, /* 1190 */ 133, 1861, 1562, 1558, 1727, 134, 568, 1868, 135, 324,
/* 1200 */ 134, 204, 135, 492, 493, 1788, 207, 316, 88, 1758, /* 1200 */ 323, 1708, 204, 207, 493, 499, 496, 503, 1757, 1252,
/* 1210 */ 551, 1760, 1761, 547, 496, 570, 499, 503, 1834, 1265, /* 1210 */ 525, 211, 506, 511, 1707, 316, 512, 220, 1676, 508,
/* 1220 */ 211, 513, 319, 1830, 1913, 1875, 1757, 1775, 1865, 508, /* 1220 */ 1313, 1788, 1245, 318, 222, 88, 1758, 571, 1760, 1761,
/* 1230 */ 555, 510, 1874, 1868, 215, 549, 333, 332, 218, 318, /* 1230 */ 567, 125, 562, 513, 76, 1834, 1775, 265, 1575, 326,
/* 1240 */ 1727, 516, 548, 6, 509, 522, 1252, 1856, 223, 507, /* 1240 */ 1830, 1913, 1265, 1308, 569, 1865, 521, 529, 1875, 1727,
/* 1250 */ 228, 146, 506, 1369, 1775, 225, 118, 1313, 1264, 1245, /* 1250 */ 1891, 568, 1244, 1874, 1856, 229, 538, 523, 233, 524,
/* 1260 */ 320, 538, 549, 1850, 18, 124, 535, 1727, 1788, 548, /* 1260 */ 325, 532, 6, 522, 520, 519, 1369, 119, 1264, 552,
/* 1270 */ 125, 88, 1758, 551, 1760, 1761, 547, 226, 570, 227, /* 1270 */ 555, 19, 1757, 146, 238, 243, 1788, 1850, 327, 78,
/* 1280 */ 1308, 1834, 553, 554, 1707, 319, 1830, 1913, 1815, 1244, /* 1280 */ 88, 1758, 571, 1760, 1761, 567, 1757, 562, 240, 242,
/* 1290 */ 1676, 1896, 557, 328, 561, 1788, 1891, 1757, 88, 1758, /* 1290 */ 1834, 526, 241, 248, 326, 1830, 1913, 1896, 1757, 573,
/* 1300 */ 551, 1760, 1761, 547, 1916, 570, 532, 233, 1834, 539, /* 1300 */ 1775, 1618, 268, 549, 645, 1853, 1547, 251, 569, 556,
/* 1310 */ 236, 560, 319, 1830, 1913, 238, 265, 251, 562, 77, /* 1310 */ 1916, 253, 259, 1727, 1775, 568, 646, 1815, 648, 51,
/* 1320 */ 249, 1575, 79, 1853, 268, 1775, 573, 259, 571, 1547, /* 1320 */ 145, 270, 569, 272, 1721, 281, 1775, 1727, 291, 568,
/* 1330 */ 1618, 645, 646, 549, 648, 145, 270, 272, 1727, 1721, /* 1330 */ 290, 1720, 62, 1719, 569, 346, 1716, 348, 349, 1727,
/* 1340 */ 548, 289, 291, 290, 1720, 62, 1719, 346, 1716, 348, /* 1340 */ 1788, 568, 1231, 546, 284, 1758, 571, 1760, 1761, 567,
/* 1350 */ 349, 51, 1231, 1232, 164, 529, 353, 1714, 355, 356, /* 1350 */ 1253, 562, 1248, 1232, 1788, 546, 164, 353, 280, 1758,
/* 1360 */ 357, 1713, 1757, 359, 1712, 361, 1788, 1711, 1710, 280, /* 1360 */ 571, 1760, 1761, 567, 1714, 562, 1788, 1757, 357, 355,
/* 1370 */ 1758, 551, 1760, 1761, 547, 363, 570, 365, 1693, 165, /* 1370 */ 280, 1758, 571, 1760, 1761, 567, 1256, 562, 356, 1713,
/* 1380 */ 368, 369, 1206, 1205, 1687, 1686, 374, 1253, 375, 1248, /* 1380 */ 1712, 359, 537, 361, 1900, 1711, 1710, 560, 1306, 1307,
/* 1390 */ 1775, 1685, 1684, 1175, 1659, 1900, 1658, 1657, 549, 65, /* 1390 */ 1309, 1310, 1311, 1312, 363, 1775, 1900, 159, 365, 1693,
/* 1400 */ 1656, 1655, 1654, 1727, 1653, 548, 1652, 388, 159, 389, /* 1400 */ 368, 1897, 165, 569, 369, 1206, 1205, 1687, 1727, 157,
/* 1410 */ 1651, 1650, 1897, 1256, 391, 1649, 1648, 1647, 1646, 1645, /* 1410 */ 568, 1686, 374, 1897, 375, 1685, 1684, 1175, 1659, 1658,
/* 1420 */ 529, 1644, 1643, 1642, 568, 1306, 1307, 1309, 1310, 1311, /* 1420 */ 1657, 65, 1656, 1655, 1757, 1654, 1653, 1652, 388, 389,
/* 1430 */ 1312, 1788, 1641, 1757, 280, 1758, 551, 1760, 1761, 547, /* 1430 */ 1651, 391, 1650, 1649, 1648, 1788, 1647, 1646, 1645, 89,
/* 1440 */ 1640, 570, 1639, 1638, 1637, 122, 1636, 1635, 1634, 1633, /* 1440 */ 1758, 571, 1760, 1761, 567, 1757, 562, 1644, 1643, 1834,
/* 1450 */ 1632, 1631, 1177, 1630, 1629, 1757, 173, 49, 424, 113, /* 1450 */ 1642, 1641, 1775, 1833, 1830, 1640, 1639, 1638, 1637, 122,
/* 1460 */ 1900, 1775, 1628, 1627, 1504, 1472, 994, 150, 1471, 549, /* 1460 */ 569, 1636, 1635, 1634, 1633, 1727, 1632, 568, 1631, 1630,
/* 1470 */ 114, 993, 426, 157, 1727, 174, 548, 1897, 1701, 1695, /* 1470 */ 1629, 1177, 1628, 1775, 150, 424, 1471, 173, 113, 994,
/* 1480 */ 1683, 181, 1682, 1775, 179, 1668, 1553, 1022, 1503, 1501, /* 1480 */ 174, 566, 1627, 1504, 1472, 993, 1727, 426, 568, 1701,
/* 1490 */ 441, 549, 1499, 1497, 445, 1495, 1727, 1484, 548, 443, /* 1490 */ 1695, 114, 1788, 179, 181, 1682, 89, 1758, 571, 1760,
/* 1500 */ 447, 1483, 1788, 1468, 449, 89, 1758, 551, 1760, 1761, /* 1500 */ 1761, 567, 1683, 562, 1668, 1757, 1834, 1553, 1503, 1501,
/* 1510 */ 547, 451, 570, 442, 446, 1834, 453, 450, 1757, 1833, /* 1510 */ 557, 1830, 441, 1788, 443, 1499, 1497, 288, 1758, 571,
/* 1520 */ 1830, 454, 455, 1555, 1788, 190, 1130, 89, 1758, 551, /* 1520 */ 1760, 1761, 567, 565, 562, 559, 1806, 1022, 442, 445,
/* 1530 */ 1760, 1761, 547, 1129, 570, 1554, 1757, 1834, 1493, 1055, /* 1530 */ 447, 449, 446, 1775, 450, 1495, 451, 455, 453, 454,
/* 1540 */ 1054, 540, 1830, 1053, 1052, 617, 1775, 1049, 1048, 619, /* 1540 */ 1484, 569, 1483, 1468, 1555, 1130, 1727, 1129, 568, 190,
/* 1550 */ 1047, 312, 1488, 313, 546, 1486, 478, 481, 314, 1727, /* 1550 */ 49, 1554, 1055, 1054, 1053, 1052, 617, 619, 1049, 1048,
/* 1560 */ 1467, 548, 483, 1466, 1775, 485, 1465, 487, 90, 1700, /* 1560 */ 1493, 1757, 1047, 312, 1488, 1486, 481, 313, 314, 1467,
/* 1570 */ 1694, 494, 549, 1681, 1213, 53, 136, 1727, 495, 548, /* 1570 */ 478, 483, 1466, 1788, 485, 1465, 487, 142, 1758, 571,
/* 1580 */ 208, 1679, 1680, 1678, 315, 1677, 41, 1788, 15, 1757, /* 1580 */ 1760, 1761, 567, 1757, 562, 1700, 90, 1213, 1694, 1775,
/* 1590 */ 287, 1758, 551, 1760, 1761, 547, 545, 570, 542, 1806, /* 1590 */ 136, 1681, 53, 494, 495, 1679, 315, 569, 1680, 1678,
/* 1600 */ 23, 47, 221, 1409, 216, 1788, 214, 143, 89, 1758, /* 1600 */ 208, 1677, 1727, 1675, 568, 213, 1223, 1667, 15, 221,
/* 1610 */ 551, 1760, 1761, 547, 220, 570, 1393, 1775, 1834, 24, /* 1610 */ 219, 1775, 74, 226, 75, 16, 317, 42, 1254, 569,
/* 1620 */ 222, 1747, 74, 1831, 1386, 549, 231, 500, 45, 25, /* 1620 */ 1409, 547, 1914, 48, 1727, 500, 568, 509, 17, 1788,
/* 1630 */ 1727, 46, 548, 16, 1366, 147, 1365, 1426, 17, 1415, /* 1630 */ 80, 24, 223, 89, 1758, 571, 1760, 1761, 567, 228,
/* 1640 */ 1421, 1420, 321, 1757, 505, 10, 1425, 1424, 322, 148, /* 1640 */ 562, 230, 1391, 1834, 1757, 232, 237, 236, 1831, 13,
/* 1650 */ 1301, 19, 1284, 31, 1757, 1300, 1675, 1667, 1788, 12, /* 1650 */ 143, 1788, 1747, 26, 246, 289, 1758, 571, 1760, 1761,
/* 1660 */ 1328, 288, 1758, 551, 1760, 1761, 547, 161, 570, 20, /* 1660 */ 567, 235, 562, 25, 1757, 1393, 1386, 1366, 79, 47,
/* 1670 */ 250, 1775, 21, 1746, 241, 550, 1391, 1223, 243, 549, /* 1670 */ 1365, 1746, 1775, 147, 18, 1426, 1415, 518, 1421, 10,
/* 1680 */ 248, 255, 1775, 13, 1727, 1303, 548, 1254, 574, 80, /* 1680 */ 569, 1420, 328, 1425, 1424, 1727, 329, 568, 1328, 1284,
/* 1690 */ 549, 75, 558, 252, 572, 1727, 76, 548, 1791, 569, /* 1690 */ 572, 1791, 1775, 20, 1303, 561, 32, 46, 1301, 1300,
/* 1700 */ 48, 1093, 1116, 335, 576, 578, 1113, 579, 581, 1110, /* 1700 */ 569, 148, 161, 12, 21, 1727, 22, 568, 574, 335,
/* 1710 */ 582, 1757, 1788, 584, 585, 283, 1758, 551, 1760, 1761, /* 1710 */ 578, 1116, 1788, 1113, 576, 579, 289, 1758, 571, 1760,
/* 1720 */ 547, 1104, 570, 1788, 1102, 587, 142, 1758, 551, 1760, /* 1720 */ 1761, 567, 1110, 562, 570, 581, 584, 582, 587, 1757,
/* 1730 */ 1761, 547, 1757, 570, 588, 1108, 594, 81, 1125, 1775, /* 1730 */ 1093, 594, 1788, 1125, 1121, 1104, 142, 1758, 571, 1760,
/* 1740 */ 1107, 82, 1106, 1105, 59, 257, 1121, 549, 1020, 1044, /* 1740 */ 1761, 567, 585, 562, 1102, 588, 1108, 1107, 1757, 1020,
/* 1750 */ 1062, 603, 1727, 521, 548, 606, 258, 1042, 1041, 1037, /* 1750 */ 81, 82, 59, 257, 603, 1044, 606, 1775, 258, 1106,
/* 1760 */ 1775, 1040, 1039, 1038, 1036, 1035, 323, 1057, 546, 1059, /* 1760 */ 1105, 1062, 330, 1042, 1041, 569, 1040, 1039, 1038, 1037,
/* 1770 */ 1032, 1915, 1500, 1727, 1757, 548, 1031, 1030, 1027, 1026, /* 1770 */ 1727, 1036, 568, 1035, 1059, 1057, 1775, 1032, 1031, 1030,
/* 1780 */ 1788, 1025, 627, 288, 1758, 551, 1760, 1761, 547, 629, /* 1780 */ 1027, 1915, 1500, 1026, 566, 1025, 627, 1498, 628, 1727,
/* 1790 */ 570, 1498, 628, 631, 633, 632, 1496, 1757, 635, 636, /* 1790 */ 631, 568, 629, 632, 1496, 633, 635, 1788, 637, 636,
/* 1800 */ 637, 1788, 1775, 1494, 287, 1758, 551, 1760, 1761, 547, /* 1800 */ 1494, 289, 1758, 571, 1760, 1761, 567, 639, 562, 640,
/* 1810 */ 549, 570, 639, 1807, 640, 1727, 1482, 548, 641, 643, /* 1810 */ 641, 1482, 643, 984, 1464, 261, 1788, 1757, 647, 650,
/* 1820 */ 984, 1464, 261, 647, 1439, 1775, 1240, 269, 650, 325, /* 1820 */ 288, 1758, 571, 1760, 1761, 567, 1240, 562, 269, 1807,
/* 1830 */ 651, 1439, 1439, 549, 1439, 1439, 1439, 1439, 1727, 1439, /* 1830 */ 651, 1439, 1439, 1757, 1439, 1439, 1439, 1439, 1439, 1439,
/* 1840 */ 548, 1439, 1439, 1788, 1439, 1439, 288, 1758, 551, 1760, /* 1840 */ 1439, 1439, 1439, 1439, 1439, 1775, 1439, 1439, 1439, 1439,
/* 1850 */ 1761, 547, 327, 570, 1757, 1439, 1439, 1439, 1439, 1439, /* 1850 */ 332, 1439, 1439, 569, 1439, 1439, 1439, 1439, 1727, 1439,
/* 1860 */ 1439, 1439, 1439, 1439, 1439, 1757, 1788, 1439, 1439, 288, /* 1860 */ 568, 1775, 1439, 1439, 1439, 1439, 334, 1439, 1439, 569,
/* 1870 */ 1758, 551, 1760, 1761, 547, 1439, 570, 1439, 1439, 1757, /* 1870 */ 1439, 1439, 1439, 1439, 1727, 1757, 568, 1439, 1439, 1439,
/* 1880 */ 1439, 1439, 1775, 1439, 1439, 1439, 1439, 1439, 1439, 1439, /* 1880 */ 1439, 1439, 1439, 1439, 1439, 1788, 1439, 1439, 1439, 289,
/* 1890 */ 549, 1439, 1439, 1775, 1439, 1727, 1439, 548, 1439, 1439, /* 1890 */ 1758, 571, 1760, 1761, 567, 1439, 562, 1439, 1439, 1757,
/* 1900 */ 1439, 549, 1439, 1439, 1439, 1439, 1727, 1775, 548, 1439, /* 1900 */ 1439, 1788, 1439, 1775, 1439, 289, 1758, 571, 1760, 1761,
/* 1910 */ 1439, 1439, 1439, 1439, 1439, 549, 1439, 1439, 1439, 1439, /* 1910 */ 567, 569, 562, 1439, 1439, 1439, 1727, 1439, 568, 1439,
/* 1920 */ 1727, 1757, 548, 1788, 1439, 1439, 274, 1758, 551, 1760, /* 1920 */ 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1775, 1439, 1439,
/* 1930 */ 1761, 547, 1439, 570, 1788, 1757, 1439, 275, 1758, 551, /* 1930 */ 1439, 1439, 1439, 1439, 1439, 569, 1439, 1439, 1439, 1439,
/* 1940 */ 1760, 1761, 547, 1439, 570, 1439, 1757, 1439, 1788, 1775, /* 1940 */ 1727, 1757, 568, 1788, 1439, 1439, 1439, 274, 1758, 571,
/* 1950 */ 1439, 276, 1758, 551, 1760, 1761, 547, 549, 570, 1439, /* 1950 */ 1760, 1761, 567, 1439, 562, 1439, 1439, 1439, 1439, 1439,
/* 1960 */ 1439, 1439, 1727, 1775, 548, 1439, 1439, 1439, 1439, 1439, /* 1960 */ 1439, 1757, 1439, 1439, 1439, 1439, 1439, 1788, 1439, 1775,
/* 1970 */ 1439, 549, 1439, 1439, 1775, 1439, 1727, 1439, 548, 1439, /* 1970 */ 1439, 275, 1758, 571, 1760, 1761, 567, 569, 562, 1439,
/* 1980 */ 1439, 1439, 549, 1439, 1439, 1439, 1439, 1727, 1757, 548, /* 1980 */ 1439, 1439, 1727, 1439, 568, 1439, 1439, 1439, 1439, 1775,
/* 1990 */ 1788, 1439, 1439, 282, 1758, 551, 1760, 1761, 547, 1439, /* 1990 */ 1439, 1439, 1439, 1439, 1439, 1439, 1439, 569, 1439, 1439,
/* 2000 */ 570, 1439, 1439, 1439, 1788, 1439, 1439, 284, 1758, 551, /* 2000 */ 1439, 1439, 1727, 1439, 568, 1439, 1439, 1439, 1439, 1788,
/* 2010 */ 1760, 1761, 547, 1439, 570, 1788, 1775, 1439, 277, 1758, /* 2010 */ 1439, 1439, 1439, 276, 1758, 571, 1760, 1761, 567, 1439,
/* 2020 */ 551, 1760, 1761, 547, 549, 570, 1439, 1439, 1439, 1727, /* 2020 */ 562, 1757, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1788,
/* 2030 */ 1757, 548, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, /* 2030 */ 1439, 1439, 1439, 283, 1758, 571, 1760, 1761, 567, 1439,
/* 2040 */ 1439, 1757, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, /* 2040 */ 562, 1439, 1439, 1439, 1439, 1757, 1439, 1439, 1439, 1775,
/* 2050 */ 1439, 1439, 1439, 1757, 1439, 1439, 1439, 1788, 1775, 1439, /* 2050 */ 1439, 1439, 1439, 1439, 1439, 1439, 1439, 569, 1439, 1439,
/* 2060 */ 285, 1758, 551, 1760, 1761, 547, 549, 570, 1439, 1775, /* 2060 */ 1439, 1439, 1727, 1439, 568, 1439, 1439, 1439, 1439, 1439,
/* 2070 */ 1439, 1727, 1439, 548, 1439, 1439, 1439, 549, 1439, 1439, /* 2070 */ 1439, 1439, 1439, 1775, 1439, 1439, 1439, 1439, 1439, 1439,
/* 2080 */ 1439, 1775, 1727, 1439, 548, 1439, 1439, 1439, 1439, 549, /* 2080 */ 1439, 569, 1439, 1439, 1439, 1439, 1727, 1439, 568, 1788,
/* 2090 */ 1439, 1439, 1439, 1439, 1727, 1439, 548, 1439, 1439, 1788, /* 2090 */ 1439, 1439, 1439, 285, 1758, 571, 1760, 1761, 567, 1439,
/* 2100 */ 1439, 1439, 278, 1758, 551, 1760, 1761, 547, 1757, 570, /* 2100 */ 562, 1757, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439,
/* 2110 */ 1788, 1439, 1439, 286, 1758, 551, 1760, 1761, 547, 1439, /* 2110 */ 1439, 1439, 1439, 1788, 1439, 1439, 1439, 277, 1758, 571,
/* 2120 */ 570, 1439, 1788, 1439, 1439, 279, 1758, 551, 1760, 1761, /* 2120 */ 1760, 1761, 567, 1439, 562, 1757, 1439, 1439, 1439, 1775,
/* 2130 */ 547, 1439, 570, 1439, 1439, 1757, 1775, 1439, 1439, 1439, /* 2130 */ 1439, 1439, 1439, 1439, 1439, 1439, 1439, 569, 1439, 1439,
/* 2140 */ 1439, 1439, 1439, 1439, 549, 1439, 1439, 1439, 1439, 1727, /* 2140 */ 1439, 1439, 1727, 1439, 568, 1439, 1439, 1439, 1439, 1439,
/* 2150 */ 1439, 548, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, /* 2150 */ 1439, 1439, 1439, 1775, 1439, 1439, 1439, 1439, 1439, 1439,
/* 2160 */ 1439, 1439, 1757, 1775, 1439, 1439, 1439, 1439, 1439, 1439, /* 2160 */ 1439, 569, 1439, 1439, 1439, 1439, 1727, 1757, 568, 1788,
/* 2170 */ 1439, 549, 1439, 1439, 1439, 1439, 1727, 1788, 548, 1439, /* 2170 */ 1439, 1439, 1439, 286, 1758, 571, 1760, 1761, 567, 1439,
/* 2180 */ 292, 1758, 551, 1760, 1761, 547, 1439, 570, 1439, 1757, /* 2180 */ 562, 1439, 1439, 1757, 1439, 1439, 1439, 1439, 1439, 1439,
/* 2190 */ 1775, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 549, 1439, /* 2190 */ 1439, 1439, 1439, 1788, 1439, 1775, 1439, 278, 1758, 571,
/* 2200 */ 1439, 1439, 1439, 1727, 1788, 548, 1439, 293, 1758, 551, /* 2200 */ 1760, 1761, 567, 569, 562, 1439, 1439, 1439, 1727, 1439,
/* 2210 */ 1760, 1761, 547, 1439, 570, 1439, 1439, 1775, 1439, 1439, /* 2210 */ 568, 1775, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 569,
/* 2220 */ 1439, 1439, 1439, 1439, 1439, 549, 1439, 1439, 1439, 1439, /* 2220 */ 1439, 1439, 1439, 1439, 1727, 1757, 568, 1439, 1439, 1439,
/* 2230 */ 1727, 1788, 548, 1439, 1769, 1758, 551, 1760, 1761, 547, /* 2230 */ 1439, 1439, 1439, 1439, 1439, 1788, 1439, 1439, 1439, 287,
/* 2240 */ 1439, 570, 1439, 1757, 1439, 1439, 1439, 1439, 1439, 1439, /* 2240 */ 1758, 571, 1760, 1761, 567, 1757, 562, 1439, 1439, 1439,
/* 2250 */ 1439, 1439, 1757, 1439, 1439, 1439, 1439, 1439, 1788, 1439, /* 2250 */ 1439, 1788, 1439, 1775, 1439, 279, 1758, 571, 1760, 1761,
/* 2260 */ 1439, 1768, 1758, 551, 1760, 1761, 547, 1439, 570, 1439, /* 2260 */ 567, 569, 562, 1439, 1439, 1439, 1727, 1439, 568, 1439,
/* 2270 */ 1757, 1775, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 549, /* 2270 */ 1439, 1439, 1439, 1775, 1439, 1439, 1439, 1439, 1439, 1439,
/* 2280 */ 1775, 1439, 1439, 1439, 1727, 1439, 548, 1439, 549, 1439, /* 2280 */ 1439, 569, 1439, 1439, 1439, 1439, 1727, 1439, 568, 1439,
/* 2290 */ 1439, 1439, 1439, 1727, 1439, 548, 1439, 1439, 1775, 1439, /* 2290 */ 1439, 1439, 1439, 1788, 1439, 1439, 1439, 292, 1758, 571,
/* 2300 */ 1439, 1439, 1439, 1439, 1439, 1439, 549, 1439, 1439, 1439, /* 2300 */ 1760, 1761, 567, 1439, 562, 1757, 1439, 1439, 1439, 1439,
/* 2310 */ 1439, 1727, 1788, 548, 1439, 1767, 1758, 551, 1760, 1761, /* 2310 */ 1439, 1439, 1439, 1788, 1439, 1439, 1439, 293, 1758, 571,
/* 2320 */ 547, 1788, 570, 1757, 303, 1758, 551, 1760, 1761, 547, /* 2320 */ 1760, 1761, 567, 1439, 562, 1439, 1439, 1439, 1439, 1757,
/* 2330 */ 1439, 570, 1439, 1439, 1439, 1439, 1439, 1757, 1439, 1788, /* 2330 */ 1439, 1439, 1439, 1775, 1439, 1439, 1439, 1439, 1439, 1439,
/* 2340 */ 1439, 1439, 302, 1758, 551, 1760, 1761, 547, 1439, 570, /* 2340 */ 1439, 569, 1439, 1439, 1439, 1439, 1727, 1439, 568, 1439,
/* 2350 */ 1439, 1775, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 549, /* 2350 */ 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1775, 1439, 1439,
/* 2360 */ 1439, 1439, 1439, 1439, 1727, 1775, 548, 1439, 1439, 1439, /* 2360 */ 1439, 1439, 1439, 1439, 1439, 569, 1439, 1439, 1439, 1439,
/* 2370 */ 1439, 1439, 1439, 549, 1439, 1439, 1439, 1439, 1727, 1439, /* 2370 */ 1727, 1439, 568, 1788, 1439, 1439, 1439, 1769, 1758, 571,
/* 2380 */ 548, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, /* 2380 */ 1760, 1761, 567, 1439, 562, 1757, 1439, 1439, 1439, 1439,
/* 2390 */ 1439, 1757, 1788, 1439, 1439, 304, 1758, 551, 1760, 1761, /* 2390 */ 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1788, 1439, 1439,
/* 2400 */ 547, 1439, 570, 1439, 1439, 1439, 1788, 1439, 1439, 301, /* 2400 */ 1439, 1768, 1758, 571, 1760, 1761, 567, 1439, 562, 1757,
/* 2410 */ 1758, 551, 1760, 1761, 547, 1439, 570, 1439, 1439, 1775, /* 2410 */ 1439, 1439, 1439, 1775, 1439, 1439, 1439, 1439, 1439, 1439,
/* 2420 */ 1439, 1439, 1439, 1439, 1439, 1439, 1439, 549, 1439, 1439, /* 2420 */ 1439, 569, 1439, 1439, 1439, 1439, 1727, 1439, 568, 1439,
/* 2430 */ 1439, 1439, 1727, 1439, 548, 1439, 1439, 1439, 1439, 1439, /* 2430 */ 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1775, 1439, 1439,
/* 2440 */ 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, /* 2440 */ 1439, 1439, 1439, 1439, 1439, 569, 1439, 1439, 1439, 1439,
/* 2450 */ 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, /* 2450 */ 1727, 1757, 568, 1788, 1439, 1439, 1439, 1767, 1758, 571,
/* 2460 */ 1788, 1439, 1439, 281, 1758, 551, 1760, 1761, 547, 1439, /* 2460 */ 1760, 1761, 567, 1439, 562, 1439, 1439, 1757, 1439, 1439,
/* 2470 */ 570, /* 2470 */ 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1788, 1439, 1775,
/* 2480 */ 1439, 304, 1758, 571, 1760, 1761, 567, 569, 562, 1439,
/* 2490 */ 1439, 1439, 1727, 1439, 568, 1775, 1439, 1439, 1439, 1439,
/* 2500 */ 1439, 1439, 1439, 569, 1439, 1439, 1439, 1439, 1727, 1757,
/* 2510 */ 568, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1788,
/* 2520 */ 1439, 1439, 1439, 303, 1758, 571, 1760, 1761, 567, 1757,
/* 2530 */ 562, 1439, 1439, 1439, 1439, 1788, 1439, 1775, 1439, 305,
/* 2540 */ 1758, 571, 1760, 1761, 567, 569, 562, 1439, 1439, 1439,
/* 2550 */ 1727, 1439, 568, 1439, 1439, 1439, 1439, 1775, 1439, 1439,
/* 2560 */ 1439, 1439, 1439, 1439, 1439, 569, 1439, 1439, 1439, 1439,
/* 2570 */ 1727, 1439, 568, 1439, 1439, 1439, 1439, 1788, 1439, 1439,
/* 2580 */ 1439, 302, 1758, 571, 1760, 1761, 567, 1439, 562, 1439,
/* 2590 */ 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1788, 1439, 1439,
/* 2600 */ 1439, 282, 1758, 571, 1760, 1761, 567, 1439, 562,
}; };
static const YYCODETYPE yy_lookahead[] = { static const YYCODETYPE yy_lookahead[] = {
/* 0 */ 259, 308, 261, 262, 311, 285, 252, 259, 288, 261, /* 0 */ 259, 284, 261, 262, 353, 259, 252, 261, 262, 267,
/* 10 */ 262, 284, 12, 13, 0, 294, 296, 267, 297, 298, /* 10 */ 267, 263, 12, 13, 285, 268, 283, 366, 263, 272,
/* 20 */ 20, 0, 22, 285, 353, 285, 288, 263, 313, 263, /* 20 */ 20, 370, 22, 280, 291, 296, 12, 13, 14, 15,
/* 30 */ 280, 0, 283, 33, 296, 35, 296, 366, 0, 289, /* 30 */ 16, 289, 289, 33, 21, 35, 285, 24, 25, 26,
/* 40 */ 291, 370, 21, 323, 324, 24, 25, 26, 27, 28, /* 40 */ 27, 28, 29, 30, 31, 32, 291, 296, 300, 20,
/* 50 */ 29, 30, 31, 32, 334, 291, 56, 4, 255, 59, /* 50 */ 285, 322, 323, 324, 294, 255, 56, 297, 298, 59,
/* 60 */ 4, 323, 324, 323, 324, 65, 300, 313, 353, 12, /* 60 */ 20, 296, 329, 334, 58, 65, 312, 312, 20, 12,
/* 70 */ 13, 14, 334, 58, 334, 61, 62, 20, 329, 22, /* 70 */ 13, 14, 263, 322, 323, 0, 353, 20, 254, 22,
/* 80 */ 66, 366, 82, 69, 70, 370, 283, 73, 74, 75, /* 80 */ 256, 56, 82, 283, 20, 334, 331, 322, 323, 366,
/* 90 */ 33, 20, 35, 22, 291, 331, 58, 44, 45, 296, /* 90 */ 33, 291, 35, 370, 312, 94, 296, 353, 298, 334,
/* 100 */ 4, 298, 14, 37, 104, 20, 35, 353, 20, 345, /* 100 */ 291, 346, 347, 348, 104, 350, 81, 353, 353, 84,
/* 110 */ 346, 347, 348, 56, 350, 19, 59, 298, 118, 119, /* 110 */ 366, 82, 312, 56, 370, 35, 59, 116, 118, 119,
/* 120 */ 366, 50, 65, 0, 370, 306, 76, 324, 309, 33, /* 120 */ 366, 366, 65, 323, 370, 370, 20, 327, 328, 329,
/* 130 */ 327, 328, 329, 330, 331, 332, 82, 334, 82, 82, /* 130 */ 330, 331, 332, 58, 334, 353, 82, 337, 14, 82,
/* 140 */ 337, 263, 56, 47, 341, 342, 343, 51, 338, 339, /* 140 */ 331, 341, 342, 263, 20, 65, 82, 20, 366, 282,
/* 150 */ 19, 85, 56, 87, 88, 254, 90, 256, 355, 260, /* 150 */ 19, 56, 370, 353, 345, 346, 347, 348, 20, 350,
/* 160 */ 94, 104, 263, 163, 33, 165, 363, 82, 82, 291, /* 160 */ 22, 104, 295, 163, 33, 165, 366, 338, 339, 4,
/* 170 */ 84, 275, 122, 123, 20, 118, 119, 81, 47, 283, /* 170 */ 370, 291, 20, 35, 275, 118, 119, 82, 47, 84,
/* 180 */ 84, 58, 116, 52, 53, 54, 55, 56, 292, 189, /* 180 */ 58, 114, 283, 52, 53, 54, 55, 56, 50, 189,
/* 190 */ 190, 20, 192, 193, 194, 195, 196, 197, 198, 199, /* 190 */ 190, 292, 192, 193, 194, 195, 196, 197, 198, 199,
/* 200 */ 200, 201, 202, 203, 204, 205, 206, 207, 208, 331, /* 200 */ 200, 201, 202, 203, 204, 205, 206, 207, 208, 44,
/* 210 */ 20, 308, 81, 14, 311, 84, 162, 56, 164, 20, /* 210 */ 45, 331, 81, 14, 260, 84, 162, 263, 164, 20,
/* 220 */ 163, 221, 165, 14, 346, 347, 348, 353, 350, 20, /* 220 */ 163, 221, 165, 76, 118, 119, 346, 347, 348, 20,
/* 230 */ 285, 8, 9, 313, 20, 12, 13, 14, 15, 16, /* 230 */ 350, 8, 9, 37, 298, 12, 13, 14, 15, 16,
/* 240 */ 366, 296, 81, 263, 370, 84, 189, 190, 117, 192, /* 240 */ 173, 174, 306, 263, 177, 309, 189, 190, 117, 192,
/* 250 */ 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, /* 250 */ 193, 194, 195, 196, 197, 198, 199, 200, 201, 202,
/* 260 */ 203, 204, 205, 206, 207, 208, 12, 13, 323, 324, /* 260 */ 203, 204, 205, 206, 207, 208, 12, 13, 0, 122,
/* 270 */ 21, 291, 313, 353, 20, 221, 22, 221, 267, 334, /* 270 */ 123, 291, 283, 0, 20, 221, 22, 113, 114, 290,
/* 280 */ 149, 193, 59, 34, 82, 36, 366, 33, 21, 35, /* 280 */ 149, 85, 59, 87, 88, 221, 90, 33, 299, 35,
/* 290 */ 370, 24, 25, 26, 27, 28, 29, 30, 31, 32, /* 290 */ 94, 148, 24, 25, 26, 27, 28, 29, 30, 31,
/* 300 */ 289, 170, 282, 172, 353, 298, 83, 221, 118, 119, /* 300 */ 32, 170, 255, 172, 263, 260, 83, 263, 263, 263,
/* 310 */ 56, 331, 353, 59, 91, 295, 309, 366, 20, 65, /* 310 */ 56, 331, 116, 59, 91, 274, 221, 193, 274, 65,
/* 320 */ 94, 370, 20, 12, 13, 366, 346, 347, 348, 370, /* 320 */ 274, 4, 281, 12, 13, 281, 346, 347, 348, 82,
/* 330 */ 350, 20, 58, 22, 0, 20, 82, 22, 20, 113, /* 330 */ 350, 20, 291, 22, 0, 291, 82, 291, 174, 14,
/* 340 */ 114, 115, 116, 117, 33, 265, 35, 95, 96, 97, /* 340 */ 255, 177, 65, 296, 33, 20, 35, 95, 96, 97,
/* 350 */ 98, 99, 100, 101, 102, 103, 104, 105, 104, 107, /* 350 */ 98, 99, 100, 101, 102, 103, 104, 105, 104, 107,
/* 360 */ 108, 109, 110, 111, 112, 50, 286, 56, 145, 14, /* 360 */ 108, 109, 110, 111, 112, 0, 263, 56, 145, 226,
/* 370 */ 15, 16, 118, 119, 291, 255, 65, 12, 13, 14, /* 370 */ 227, 293, 118, 119, 296, 255, 65, 274, 14, 15,
/* 380 */ 15, 16, 8, 9, 82, 302, 12, 13, 14, 15, /* 380 */ 16, 296, 8, 9, 297, 298, 12, 13, 14, 15,
/* 390 */ 16, 168, 193, 82, 59, 61, 62, 63, 64, 93, /* 390 */ 16, 168, 193, 82, 291, 61, 62, 63, 64, 82,
/* 400 */ 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, /* 400 */ 66, 67, 68, 69, 70, 71, 72, 73, 74, 75,
/* 410 */ 76, 77, 78, 79, 268, 104, 296, 163, 272, 165, /* 410 */ 76, 77, 78, 79, 93, 104, 296, 163, 325, 165,
/* 420 */ 8, 9, 189, 221, 12, 13, 14, 15, 16, 118, /* 420 */ 8, 9, 189, 58, 12, 13, 14, 15, 16, 118,
/* 430 */ 119, 0, 209, 210, 211, 212, 213, 214, 215, 216, /* 430 */ 119, 0, 209, 210, 211, 212, 213, 214, 215, 216,
/* 440 */ 217, 218, 293, 189, 190, 296, 192, 193, 194, 195, /* 440 */ 217, 218, 349, 189, 190, 65, 192, 193, 194, 195,
/* 450 */ 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, /* 450 */ 196, 197, 198, 199, 200, 201, 202, 203, 204, 205,
/* 460 */ 206, 207, 208, 230, 231, 232, 233, 234, 35, 263, /* 460 */ 206, 207, 208, 230, 231, 232, 233, 234, 221, 263,
/* 470 */ 61, 62, 283, 145, 163, 66, 165, 20, 69, 70, /* 470 */ 61, 62, 269, 270, 163, 66, 165, 284, 69, 70,
/* 480 */ 274, 292, 73, 74, 75, 8, 9, 281, 65, 12, /* 480 */ 274, 265, 73, 74, 75, 8, 9, 1, 2, 12,
/* 490 */ 13, 14, 15, 16, 65, 83, 168, 291, 65, 255, /* 490 */ 13, 14, 15, 16, 278, 83, 20, 291, 22, 56,
/* 500 */ 189, 190, 114, 192, 193, 194, 195, 196, 197, 198, /* 500 */ 189, 190, 286, 192, 193, 194, 195, 196, 197, 198,
/* 510 */ 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, /* 510 */ 199, 200, 201, 202, 203, 204, 205, 206, 207, 208,
/* 520 */ 12, 13, 14, 221, 189, 94, 297, 298, 20, 155, /* 520 */ 12, 13, 14, 275, 4, 94, 50, 84, 20, 155,
/* 530 */ 22, 263, 221, 269, 270, 33, 59, 209, 113, 114, /* 530 */ 22, 283, 221, 0, 312, 33, 59, 284, 221, 19,
/* 540 */ 296, 33, 274, 35, 113, 114, 115, 116, 117, 47, /* 540 */ 292, 33, 275, 35, 113, 114, 115, 116, 117, 47,
/* 550 */ 284, 263, 263, 283, 52, 53, 54, 55, 56, 291, /* 550 */ 283, 263, 316, 33, 52, 53, 54, 55, 56, 292,
/* 560 */ 290, 173, 174, 274, 56, 177, 20, 275, 91, 299, /* 560 */ 265, 263, 274, 263, 56, 269, 270, 47, 91, 83,
/* 570 */ 281, 1, 2, 65, 275, 283, 317, 12, 13, 291, /* 570 */ 312, 51, 274, 65, 274, 353, 56, 12, 13, 291,
/* 580 */ 291, 284, 283, 81, 292, 20, 84, 22, 8, 9, /* 580 */ 283, 286, 263, 81, 3, 20, 84, 22, 366, 291,
/* 590 */ 82, 292, 12, 13, 14, 15, 16, 265, 33, 174, /* 590 */ 82, 291, 370, 274, 61, 62, 299, 158, 33, 66,
/* 600 */ 35, 313, 177, 255, 263, 263, 94, 150, 283, 255, /* 600 */ 35, 81, 69, 70, 84, 263, 73, 74, 75, 39,
/* 610 */ 278, 255, 104, 283, 263, 274, 274, 243, 286, 331, /* 610 */ 291, 353, 104, 308, 263, 310, 274, 243, 263, 180,
/* 620 */ 290, 56, 145, 43, 299, 274, 118, 119, 116, 299, /* 620 */ 181, 56, 145, 4, 366, 274, 118, 119, 370, 274,
/* 630 */ 65, 283, 291, 291, 346, 347, 348, 20, 350, 291, /* 630 */ 65, 8, 9, 291, 255, 12, 13, 14, 15, 16,
/* 640 */ 255, 353, 291, 158, 296, 168, 298, 82, 146, 147, /* 640 */ 44, 45, 291, 283, 255, 168, 291, 82, 146, 147,
/* 650 */ 296, 149, 296, 83, 366, 153, 8, 9, 370, 148, /* 650 */ 290, 149, 325, 20, 263, 153, 8, 9, 255, 299,
/* 660 */ 12, 13, 14, 15, 16, 180, 181, 260, 3, 104, /* 660 */ 12, 13, 14, 15, 16, 274, 43, 291, 263, 104,
/* 670 */ 263, 163, 324, 165, 172, 327, 328, 329, 330, 331, /* 670 */ 308, 163, 310, 165, 172, 296, 349, 113, 302, 274,
/* 680 */ 332, 296, 334, 118, 119, 0, 209, 210, 211, 212, /* 680 */ 255, 43, 291, 118, 119, 296, 209, 210, 211, 212,
/* 690 */ 213, 214, 215, 216, 217, 218, 150, 189, 190, 255, /* 690 */ 213, 214, 215, 216, 217, 218, 291, 189, 190, 296,
/* 700 */ 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, /* 700 */ 192, 193, 194, 195, 196, 197, 198, 199, 200, 201,
/* 710 */ 202, 203, 204, 205, 206, 207, 208, 0, 276, 371, /* 710 */ 202, 203, 204, 205, 206, 207, 208, 0, 8, 9,
/* 720 */ 372, 279, 263, 263, 263, 269, 270, 284, 163, 293, /* 720 */ 21, 296, 12, 13, 14, 15, 16, 325, 163, 293,
/* 730 */ 165, 83, 296, 274, 274, 274, 284, 226, 227, 0, /* 730 */ 165, 83, 296, 34, 276, 36, 255, 279, 21, 175,
/* 740 */ 296, 24, 25, 26, 27, 28, 29, 30, 31, 32, /* 740 */ 176, 24, 25, 26, 27, 28, 29, 30, 31, 32,
/* 750 */ 291, 291, 291, 263, 189, 190, 284, 192, 193, 194, /* 750 */ 271, 349, 273, 263, 189, 190, 0, 192, 193, 194,
/* 760 */ 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, /* 760 */ 195, 196, 197, 198, 199, 200, 201, 202, 203, 204,
/* 770 */ 205, 206, 207, 208, 12, 13, 18, 22, 20, 94, /* 770 */ 205, 206, 207, 208, 12, 13, 18, 296, 20, 43,
/* 780 */ 263, 291, 20, 263, 22, 27, 47, 255, 30, 325, /* 780 */ 263, 291, 20, 150, 22, 27, 256, 255, 30, 263,
/* 790 */ 35, 274, 325, 284, 274, 33, 4, 35, 113, 114, /* 790 */ 220, 274, 94, 83, 255, 33, 20, 35, 284, 298,
/* 800 */ 115, 116, 117, 313, 255, 47, 263, 49, 291, 51, /* 800 */ 274, 145, 312, 47, 255, 47, 20, 49, 291, 51,
/* 810 */ 193, 291, 113, 349, 44, 45, 349, 274, 56, 256, /* 810 */ 309, 113, 114, 115, 116, 117, 35, 291, 56, 238,
/* 820 */ 65, 331, 263, 39, 255, 325, 272, 65, 296, 219, /* 820 */ 263, 331, 219, 220, 168, 42, 43, 65, 296, 150,
/* 830 */ 220, 255, 86, 274, 291, 89, 346, 347, 348, 81, /* 830 */ 151, 274, 255, 283, 255, 296, 346, 347, 348, 81,
/* 840 */ 350, 2, 373, 353, 82, 296, 43, 8, 9, 349, /* 840 */ 350, 222, 292, 353, 82, 296, 8, 9, 291, 364,
/* 850 */ 291, 12, 13, 14, 15, 16, 366, 2, 364, 104, /* 850 */ 12, 13, 14, 15, 16, 86, 366, 284, 89, 255,
/* 860 */ 370, 42, 43, 8, 9, 296, 104, 12, 13, 14, /* 860 */ 370, 22, 255, 8, 9, 209, 104, 12, 13, 14,
/* 870 */ 15, 16, 296, 264, 175, 176, 255, 150, 151, 121, /* 870 */ 15, 16, 255, 296, 35, 296, 284, 35, 240, 121,
/* 880 */ 118, 119, 124, 125, 126, 127, 128, 129, 130, 131, /* 880 */ 118, 119, 124, 125, 126, 127, 128, 129, 130, 131,
/* 890 */ 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, /* 890 */ 132, 133, 134, 135, 136, 137, 138, 139, 140, 141,
/* 900 */ 0, 143, 144, 238, 86, 263, 255, 89, 263, 18, /* 900 */ 296, 143, 144, 296, 65, 2, 255, 1, 2, 18,
/* 910 */ 43, 271, 255, 273, 23, 320, 274, 296, 163, 274, /* 910 */ 43, 8, 9, 296, 23, 12, 13, 14, 15, 16,
/* 920 */ 165, 86, 22, 86, 89, 163, 89, 165, 37, 38, /* 920 */ 0, 86, 118, 119, 89, 163, 150, 165, 37, 38,
/* 930 */ 1, 2, 41, 291, 8, 9, 291, 255, 12, 13, /* 930 */ 255, 0, 41, 255, 86, 86, 43, 89, 89, 59,
/* 940 */ 14, 15, 16, 255, 189, 190, 255, 296, 57, 255, /* 940 */ 272, 46, 43, 104, 255, 284, 165, 296, 57, 373,
/* 950 */ 255, 189, 190, 296, 192, 193, 194, 195, 196, 197, /* 950 */ 83, 189, 190, 22, 192, 193, 194, 195, 196, 197,
/* 960 */ 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, /* 960 */ 198, 199, 200, 201, 202, 203, 204, 205, 206, 207,
/* 970 */ 208, 283, 263, 82, 263, 118, 119, 56, 296, 291, /* 970 */ 208, 296, 283, 82, 296, 43, 83, 82, 242, 193,
/* 980 */ 255, 0, 360, 274, 296, 274, 298, 296, 8, 9, /* 980 */ 291, 319, 83, 2, 0, 296, 0, 298, 150, 8,
/* 990 */ 296, 296, 12, 13, 14, 15, 16, 255, 283, 43, /* 990 */ 9, 264, 43, 12, 13, 14, 15, 16, 43, 43,
/* 1000 */ 291, 313, 291, 22, 220, 84, 46, 35, 35, 83, /* 1000 */ 43, 312, 163, 43, 165, 43, 22, 165, 22, 43,
/* 1010 */ 43, 120, 324, 43, 222, 327, 328, 329, 330, 331, /* 1010 */ 360, 120, 323, 43, 94, 83, 327, 328, 329, 330,
/* 1020 */ 332, 296, 334, 0, 255, 337, 262, 8, 9, 341, /* 1020 */ 331, 332, 255, 334, 0, 283, 337, 264, 189, 190,
/* 1030 */ 342, 12, 13, 14, 15, 16, 0, 264, 296, 83, /* 1030 */ 341, 342, 83, 113, 114, 115, 116, 117, 83, 83,
/* 1040 */ 295, 353, 82, 240, 255, 22, 155, 156, 157, 43, /* 1040 */ 83, 43, 353, 83, 43, 83, 155, 156, 157, 83,
/* 1050 */ 83, 160, 283, 83, 366, 43, 82, 166, 370, 326, /* 1050 */ 283, 160, 43, 83, 82, 366, 35, 166, 291, 370,
/* 1060 */ 291, 35, 344, 351, 43, 296, 92, 298, 43, 367, /* 1060 */ 262, 295, 43, 296, 92, 298, 326, 351, 344, 189,
/* 1070 */ 179, 367, 283, 182, 43, 184, 185, 186, 187, 188, /* 1070 */ 179, 367, 48, 182, 367, 184, 185, 186, 187, 188,
/* 1080 */ 291, 367, 313, 354, 48, 296, 223, 298, 43, 83, /* 1080 */ 367, 83, 354, 255, 83, 223, 65, 20, 263, 321,
/* 1090 */ 322, 65, 20, 324, 43, 83, 327, 328, 329, 330, /* 1090 */ 323, 47, 83, 320, 327, 328, 329, 330, 331, 332,
/* 1100 */ 331, 332, 43, 334, 83, 263, 337, 47, 83, 242, /* 1100 */ 255, 334, 83, 35, 337, 269, 161, 314, 341, 342,
/* 1110 */ 341, 342, 221, 324, 83, 321, 327, 328, 329, 330, /* 1110 */ 343, 283, 221, 263, 263, 42, 303, 301, 145, 291,
/* 1120 */ 331, 332, 353, 334, 35, 269, 337, 161, 83, 315, /* 1120 */ 301, 263, 355, 20, 296, 257, 298, 257, 283, 20,
/* 1130 */ 341, 342, 343, 43, 83, 366, 255, 165, 165, 370, /* 1130 */ 363, 267, 318, 267, 20, 298, 291, 311, 20, 267,
/* 1140 */ 43, 43, 83, 43, 43, 263, 263, 42, 303, 145, /* 1140 */ 313, 296, 311, 298, 267, 20, 267, 304, 267, 263,
/* 1150 */ 301, 301, 363, 263, 20, 257, 257, 20, 298, 319, /* 1150 */ 267, 323, 283, 255, 257, 327, 328, 329, 330, 331,
/* 1160 */ 267, 267, 20, 312, 283, 20, 314, 20, 267, 150, /* 1160 */ 332, 283, 334, 171, 318, 337, 307, 283, 323, 341,
/* 1170 */ 312, 267, 291, 83, 304, 267, 267, 296, 263, 298, /* 1170 */ 342, 343, 327, 328, 329, 330, 331, 332, 257, 334,
/* 1180 */ 83, 83, 257, 83, 83, 267, 283, 263, 283, 283, /* 1180 */ 263, 283, 337, 283, 283, 283, 341, 342, 343, 291,
/* 1190 */ 283, 257, 296, 283, 283, 283, 283, 283, 319, 255, /* 1190 */ 283, 363, 283, 283, 296, 283, 298, 352, 283, 12,
/* 1200 */ 283, 265, 283, 171, 318, 324, 265, 312, 327, 328, /* 1200 */ 13, 296, 265, 265, 317, 263, 298, 263, 255, 22,
/* 1210 */ 329, 330, 331, 332, 298, 334, 263, 263, 337, 20, /* 1210 */ 228, 265, 296, 147, 296, 311, 305, 291, 296, 296,
/* 1220 */ 265, 229, 341, 342, 343, 359, 255, 283, 326, 296, /* 1220 */ 33, 323, 35, 296, 265, 327, 328, 329, 330, 331,
/* 1230 */ 228, 296, 359, 352, 307, 291, 12, 13, 307, 296, /* 1230 */ 332, 307, 334, 304, 265, 337, 283, 279, 291, 341,
/* 1240 */ 296, 296, 298, 235, 237, 154, 22, 362, 361, 236, /* 1240 */ 342, 343, 20, 56, 291, 326, 296, 229, 359, 296,
/* 1250 */ 322, 359, 224, 220, 283, 358, 291, 33, 20, 35, /* 1250 */ 352, 298, 65, 359, 362, 307, 154, 296, 307, 296,
/* 1260 */ 244, 241, 291, 325, 82, 307, 239, 296, 324, 298, /* 1260 */ 296, 296, 235, 237, 236, 224, 220, 291, 20, 239,
/* 1270 */ 307, 327, 328, 329, 330, 331, 332, 357, 334, 356, /* 1270 */ 241, 82, 255, 359, 361, 321, 323, 325, 244, 82,
/* 1280 */ 56, 337, 296, 296, 296, 341, 342, 343, 340, 65, /* 1280 */ 327, 328, 329, 330, 331, 332, 255, 334, 358, 356,
/* 1290 */ 296, 369, 296, 296, 305, 324, 352, 255, 327, 328, /* 1290 */ 337, 104, 357, 368, 341, 342, 343, 369, 255, 287,
/* 1300 */ 329, 330, 331, 332, 374, 334, 369, 368, 337, 369, /* 1300 */ 283, 296, 263, 369, 36, 352, 273, 368, 291, 369,
/* 1310 */ 368, 147, 341, 342, 343, 368, 279, 265, 304, 265, /* 1310 */ 374, 368, 265, 296, 283, 298, 258, 340, 257, 315,
/* 1320 */ 291, 291, 82, 352, 263, 283, 287, 265, 104, 273, /* 1320 */ 310, 266, 291, 253, 0, 277, 283, 296, 277, 298,
/* 1330 */ 296, 36, 258, 291, 257, 311, 266, 253, 296, 0, /* 1330 */ 277, 0, 42, 0, 291, 73, 0, 35, 183, 296,
/* 1340 */ 298, 277, 277, 277, 0, 42, 0, 73, 0, 35, /* 1340 */ 323, 298, 35, 312, 327, 328, 329, 330, 331, 332,
/* 1350 */ 183, 316, 35, 35, 35, 313, 183, 0, 35, 35, /* 1350 */ 163, 334, 165, 35, 323, 312, 35, 183, 327, 328,
/* 1360 */ 183, 0, 255, 183, 0, 35, 324, 0, 0, 327, /* 1360 */ 329, 330, 331, 332, 0, 334, 323, 255, 183, 35,
/* 1370 */ 328, 329, 330, 331, 332, 22, 334, 35, 0, 82, /* 1370 */ 327, 328, 329, 330, 331, 332, 189, 334, 35, 0,
/* 1380 */ 168, 167, 165, 163, 0, 0, 159, 163, 158, 165, /* 1380 */ 0, 183, 365, 35, 353, 0, 0, 200, 201, 202,
/* 1390 */ 283, 0, 0, 46, 0, 353, 0, 0, 291, 142, /* 1390 */ 203, 204, 205, 206, 22, 283, 353, 366, 35, 0,
/* 1400 */ 0, 0, 0, 296, 0, 298, 0, 137, 366, 35, /* 1400 */ 168, 370, 82, 291, 167, 165, 163, 0, 296, 366,
/* 1410 */ 0, 0, 370, 189, 137, 0, 0, 0, 0, 0, /* 1410 */ 298, 0, 159, 370, 158, 0, 0, 46, 0, 0,
/* 1420 */ 313, 0, 0, 0, 200, 201, 202, 203, 204, 205, /* 1420 */ 0, 142, 0, 0, 255, 0, 0, 0, 137, 35,
/* 1430 */ 206, 324, 0, 255, 327, 328, 329, 330, 331, 332, /* 1430 */ 0, 137, 0, 0, 0, 323, 0, 0, 0, 327,
/* 1440 */ 0, 334, 0, 0, 0, 42, 0, 0, 0, 0, /* 1440 */ 328, 329, 330, 331, 332, 255, 334, 0, 0, 337,
/* 1450 */ 0, 0, 22, 0, 0, 255, 42, 91, 46, 39, /* 1450 */ 0, 0, 283, 341, 342, 0, 0, 0, 0, 42,
/* 1460 */ 353, 283, 0, 0, 0, 0, 14, 43, 0, 291, /* 1460 */ 291, 0, 0, 0, 0, 296, 0, 298, 0, 0,
/* 1470 */ 39, 14, 46, 366, 296, 40, 298, 370, 0, 0, /* 1470 */ 0, 22, 0, 283, 43, 46, 0, 42, 39, 14,
/* 1480 */ 0, 154, 0, 283, 39, 0, 0, 60, 0, 0, /* 1480 */ 40, 291, 0, 0, 0, 14, 296, 46, 298, 0,
/* 1490 */ 35, 291, 0, 0, 35, 0, 296, 0, 298, 39, /* 1490 */ 0, 39, 323, 39, 154, 0, 327, 328, 329, 330,
/* 1500 */ 39, 0, 324, 0, 35, 327, 328, 329, 330, 331, /* 1500 */ 331, 332, 0, 334, 0, 255, 337, 0, 0, 0,
/* 1510 */ 332, 39, 334, 47, 47, 337, 35, 47, 255, 341, /* 1510 */ 341, 342, 35, 323, 39, 0, 0, 327, 328, 329,
/* 1520 */ 342, 47, 39, 0, 324, 89, 35, 327, 328, 329, /* 1520 */ 330, 331, 332, 333, 334, 335, 336, 60, 47, 35,
/* 1530 */ 330, 331, 332, 22, 334, 0, 255, 337, 0, 35, /* 1530 */ 39, 35, 47, 283, 47, 0, 39, 39, 35, 47,
/* 1540 */ 35, 341, 342, 35, 35, 43, 283, 35, 35, 43, /* 1540 */ 0, 291, 0, 0, 0, 35, 296, 22, 298, 89,
/* 1550 */ 35, 22, 0, 22, 291, 0, 49, 35, 22, 296, /* 1550 */ 91, 0, 35, 35, 35, 35, 43, 43, 35, 35,
/* 1560 */ 0, 298, 35, 0, 283, 35, 0, 22, 20, 0, /* 1560 */ 0, 255, 35, 22, 0, 0, 35, 22, 22, 0,
/* 1570 */ 0, 22, 291, 0, 35, 150, 169, 296, 150, 298, /* 1570 */ 49, 35, 0, 323, 35, 0, 22, 327, 328, 329,
/* 1580 */ 147, 0, 0, 0, 150, 0, 43, 324, 225, 255, /* 1580 */ 330, 331, 332, 255, 334, 0, 20, 35, 0, 283,
/* 1590 */ 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, /* 1590 */ 169, 0, 150, 22, 150, 0, 150, 291, 0, 0,
/* 1600 */ 82, 43, 43, 83, 83, 324, 82, 82, 327, 328, /* 1600 */ 147, 0, 296, 0, 298, 83, 178, 0, 82, 39,
/* 1610 */ 329, 330, 331, 332, 82, 334, 83, 283, 337, 82, /* 1610 */ 82, 283, 82, 46, 82, 225, 288, 43, 22, 291,
/* 1620 */ 46, 46, 82, 342, 83, 291, 46, 152, 219, 43, /* 1620 */ 83, 371, 372, 43, 296, 152, 298, 148, 225, 323,
/* 1630 */ 296, 43, 298, 225, 83, 46, 83, 83, 43, 83, /* 1630 */ 92, 82, 146, 327, 328, 329, 330, 331, 332, 82,
/* 1640 */ 35, 35, 35, 255, 310, 2, 35, 35, 35, 46, /* 1640 */ 334, 83, 83, 337, 255, 82, 46, 43, 342, 225,
/* 1650 */ 83, 43, 22, 82, 255, 83, 0, 0, 324, 82, /* 1650 */ 82, 323, 46, 43, 46, 327, 328, 329, 330, 331,
/* 1660 */ 189, 327, 328, 329, 330, 331, 332, 46, 334, 82, /* 1660 */ 332, 82, 334, 82, 255, 83, 83, 83, 82, 43,
/* 1670 */ 39, 283, 82, 46, 83, 191, 83, 178, 82, 291, /* 1670 */ 83, 46, 283, 46, 43, 83, 83, 288, 35, 2,
/* 1680 */ 82, 46, 283, 225, 296, 83, 298, 22, 35, 92, /* 1680 */ 291, 35, 35, 35, 35, 296, 35, 298, 189, 22,
/* 1690 */ 291, 82, 148, 146, 93, 296, 82, 298, 82, 82, /* 1690 */ 93, 82, 283, 43, 83, 82, 82, 219, 83, 83,
/* 1700 */ 82, 22, 83, 35, 82, 35, 83, 82, 35, 83, /* 1700 */ 291, 46, 46, 82, 82, 296, 82, 298, 35, 35,
/* 1710 */ 82, 255, 324, 35, 82, 327, 328, 329, 330, 331, /* 1710 */ 35, 83, 323, 83, 82, 82, 327, 328, 329, 330,
/* 1720 */ 332, 83, 334, 324, 83, 35, 327, 328, 329, 330, /* 1720 */ 331, 332, 83, 334, 191, 35, 35, 82, 35, 255,
/* 1730 */ 331, 332, 255, 334, 82, 106, 94, 82, 35, 283, /* 1730 */ 22, 94, 323, 35, 22, 83, 327, 328, 329, 330,
/* 1740 */ 106, 82, 106, 106, 82, 43, 22, 291, 60, 35, /* 1740 */ 331, 332, 82, 334, 83, 82, 106, 106, 255, 60,
/* 1750 */ 65, 59, 296, 365, 298, 80, 43, 35, 35, 22, /* 1750 */ 82, 82, 82, 43, 59, 35, 80, 283, 43, 106,
/* 1760 */ 283, 35, 35, 35, 35, 35, 310, 35, 291, 65, /* 1760 */ 106, 65, 288, 35, 35, 291, 35, 35, 35, 22,
/* 1770 */ 35, 372, 0, 296, 255, 298, 35, 35, 35, 35, /* 1770 */ 296, 35, 298, 35, 65, 35, 283, 35, 35, 35,
/* 1780 */ 324, 35, 35, 327, 328, 329, 330, 331, 332, 39, /* 1780 */ 35, 372, 0, 35, 291, 35, 35, 0, 47, 296,
/* 1790 */ 334, 0, 47, 35, 39, 47, 0, 255, 35, 47, /* 1790 */ 35, 298, 39, 47, 0, 39, 35, 323, 39, 47,
/* 1800 */ 39, 324, 283, 0, 327, 328, 329, 330, 331, 332, /* 1800 */ 0, 327, 328, 329, 330, 331, 332, 35, 334, 47,
/* 1810 */ 291, 334, 35, 336, 47, 296, 0, 298, 39, 35, /* 1810 */ 39, 0, 35, 35, 0, 22, 323, 255, 21, 21,
/* 1820 */ 35, 0, 22, 21, 375, 283, 22, 22, 21, 310, /* 1820 */ 327, 328, 329, 330, 331, 332, 22, 334, 22, 336,
/* 1830 */ 20, 375, 375, 291, 375, 375, 375, 375, 296, 375, /* 1830 */ 20, 375, 375, 255, 375, 375, 375, 375, 375, 375,
/* 1840 */ 298, 375, 375, 324, 375, 375, 327, 328, 329, 330, /* 1840 */ 375, 375, 375, 375, 375, 283, 375, 375, 375, 375,
/* 1850 */ 331, 332, 310, 334, 255, 375, 375, 375, 375, 375, /* 1850 */ 288, 375, 375, 291, 375, 375, 375, 375, 296, 375,
/* 1860 */ 375, 375, 375, 375, 375, 255, 324, 375, 375, 327, /* 1860 */ 298, 283, 375, 375, 375, 375, 288, 375, 375, 291,
/* 1870 */ 328, 329, 330, 331, 332, 375, 334, 375, 375, 255, /* 1870 */ 375, 375, 375, 375, 296, 255, 298, 375, 375, 375,
/* 1880 */ 375, 375, 283, 375, 375, 375, 375, 375, 375, 375, /* 1880 */ 375, 375, 375, 375, 375, 323, 375, 375, 375, 327,
/* 1890 */ 291, 375, 375, 283, 375, 296, 375, 298, 375, 375, /* 1890 */ 328, 329, 330, 331, 332, 375, 334, 375, 375, 255,
/* 1900 */ 375, 291, 375, 375, 375, 375, 296, 283, 298, 375, /* 1900 */ 375, 323, 375, 283, 375, 327, 328, 329, 330, 331,
/* 1910 */ 375, 375, 375, 375, 375, 291, 375, 375, 375, 375, /* 1910 */ 332, 291, 334, 375, 375, 375, 296, 375, 298, 375,
/* 1920 */ 296, 255, 298, 324, 375, 375, 327, 328, 329, 330, /* 1920 */ 375, 375, 375, 375, 375, 375, 375, 283, 375, 375,
/* 1930 */ 331, 332, 375, 334, 324, 255, 375, 327, 328, 329, /* 1930 */ 375, 375, 375, 375, 375, 291, 375, 375, 375, 375,
/* 1940 */ 330, 331, 332, 375, 334, 375, 255, 375, 324, 283, /* 1940 */ 296, 255, 298, 323, 375, 375, 375, 327, 328, 329,
/* 1950 */ 375, 327, 328, 329, 330, 331, 332, 291, 334, 375, /* 1950 */ 330, 331, 332, 375, 334, 375, 375, 375, 375, 375,
/* 1960 */ 375, 375, 296, 283, 298, 375, 375, 375, 375, 375, /* 1960 */ 375, 255, 375, 375, 375, 375, 375, 323, 375, 283,
/* 1970 */ 375, 291, 375, 375, 283, 375, 296, 375, 298, 375, /* 1970 */ 375, 327, 328, 329, 330, 331, 332, 291, 334, 375,
/* 1980 */ 375, 375, 291, 375, 375, 375, 375, 296, 255, 298, /* 1980 */ 375, 375, 296, 375, 298, 375, 375, 375, 375, 283,
/* 1990 */ 324, 375, 375, 327, 328, 329, 330, 331, 332, 375, /* 1990 */ 375, 375, 375, 375, 375, 375, 375, 291, 375, 375,
/* 2000 */ 334, 375, 375, 375, 324, 375, 375, 327, 328, 329, /* 2000 */ 375, 375, 296, 375, 298, 375, 375, 375, 375, 323,
/* 2010 */ 330, 331, 332, 375, 334, 324, 283, 375, 327, 328, /* 2010 */ 375, 375, 375, 327, 328, 329, 330, 331, 332, 375,
/* 2020 */ 329, 330, 331, 332, 291, 334, 375, 375, 375, 296, /* 2020 */ 334, 255, 375, 375, 375, 375, 375, 375, 375, 323,
/* 2030 */ 255, 298, 375, 375, 375, 375, 375, 375, 375, 375, /* 2030 */ 375, 375, 375, 327, 328, 329, 330, 331, 332, 375,
/* 2040 */ 375, 255, 375, 375, 375, 375, 375, 375, 375, 375, /* 2040 */ 334, 375, 375, 375, 375, 255, 375, 375, 375, 283,
/* 2050 */ 375, 375, 375, 255, 375, 375, 375, 324, 283, 375, /* 2050 */ 375, 375, 375, 375, 375, 375, 375, 291, 375, 375,
/* 2060 */ 327, 328, 329, 330, 331, 332, 291, 334, 375, 283, /* 2060 */ 375, 375, 296, 375, 298, 375, 375, 375, 375, 375,
/* 2070 */ 375, 296, 375, 298, 375, 375, 375, 291, 375, 375, /* 2070 */ 375, 375, 375, 283, 375, 375, 375, 375, 375, 375,
/* 2080 */ 375, 283, 296, 375, 298, 375, 375, 375, 375, 291, /* 2080 */ 375, 291, 375, 375, 375, 375, 296, 375, 298, 323,
/* 2090 */ 375, 375, 375, 375, 296, 375, 298, 375, 375, 324, /* 2090 */ 375, 375, 375, 327, 328, 329, 330, 331, 332, 375,
/* 2100 */ 375, 375, 327, 328, 329, 330, 331, 332, 255, 334, /* 2100 */ 334, 255, 375, 375, 375, 375, 375, 375, 375, 375,
/* 2110 */ 324, 375, 375, 327, 328, 329, 330, 331, 332, 375, /* 2110 */ 375, 375, 375, 323, 375, 375, 375, 327, 328, 329,
/* 2120 */ 334, 375, 324, 375, 375, 327, 328, 329, 330, 331, /* 2120 */ 330, 331, 332, 375, 334, 255, 375, 375, 375, 283,
/* 2130 */ 332, 375, 334, 375, 375, 255, 283, 375, 375, 375, /* 2130 */ 375, 375, 375, 375, 375, 375, 375, 291, 375, 375,
/* 2140 */ 375, 375, 375, 375, 291, 375, 375, 375, 375, 296, /* 2140 */ 375, 375, 296, 375, 298, 375, 375, 375, 375, 375,
/* 2150 */ 375, 298, 375, 375, 375, 375, 375, 375, 375, 375, /* 2150 */ 375, 375, 375, 283, 375, 375, 375, 375, 375, 375,
/* 2160 */ 375, 375, 255, 283, 375, 375, 375, 375, 375, 375, /* 2160 */ 375, 291, 375, 375, 375, 375, 296, 255, 298, 323,
/* 2170 */ 375, 291, 375, 375, 375, 375, 296, 324, 298, 375, /* 2170 */ 375, 375, 375, 327, 328, 329, 330, 331, 332, 375,
/* 2180 */ 327, 328, 329, 330, 331, 332, 375, 334, 375, 255, /* 2180 */ 334, 375, 375, 255, 375, 375, 375, 375, 375, 375,
/* 2190 */ 283, 375, 375, 375, 375, 375, 375, 375, 291, 375, /* 2190 */ 375, 375, 375, 323, 375, 283, 375, 327, 328, 329,
/* 2200 */ 375, 375, 375, 296, 324, 298, 375, 327, 328, 329, /* 2200 */ 330, 331, 332, 291, 334, 375, 375, 375, 296, 375,
/* 2210 */ 330, 331, 332, 375, 334, 375, 375, 283, 375, 375, /* 2210 */ 298, 283, 375, 375, 375, 375, 375, 375, 375, 291,
/* 2220 */ 375, 375, 375, 375, 375, 291, 375, 375, 375, 375, /* 2220 */ 375, 375, 375, 375, 296, 255, 298, 375, 375, 375,
/* 2230 */ 296, 324, 298, 375, 327, 328, 329, 330, 331, 332, /* 2230 */ 375, 375, 375, 375, 375, 323, 375, 375, 375, 327,
/* 2240 */ 375, 334, 375, 255, 375, 375, 375, 375, 375, 375, /* 2240 */ 328, 329, 330, 331, 332, 255, 334, 375, 375, 375,
/* 2250 */ 375, 375, 255, 375, 375, 375, 375, 375, 324, 375, /* 2250 */ 375, 323, 375, 283, 375, 327, 328, 329, 330, 331,
/* 2260 */ 375, 327, 328, 329, 330, 331, 332, 375, 334, 375, /* 2260 */ 332, 291, 334, 375, 375, 375, 296, 375, 298, 375,
/* 2270 */ 255, 283, 375, 375, 375, 375, 375, 375, 375, 291, /* 2270 */ 375, 375, 375, 283, 375, 375, 375, 375, 375, 375,
/* 2280 */ 283, 375, 375, 375, 296, 375, 298, 375, 291, 375, /* 2280 */ 375, 291, 375, 375, 375, 375, 296, 375, 298, 375,
/* 2290 */ 375, 375, 375, 296, 375, 298, 375, 375, 283, 375, /* 2290 */ 375, 375, 375, 323, 375, 375, 375, 327, 328, 329,
/* 2300 */ 375, 375, 375, 375, 375, 375, 291, 375, 375, 375, /* 2300 */ 330, 331, 332, 375, 334, 255, 375, 375, 375, 375,
/* 2310 */ 375, 296, 324, 298, 375, 327, 328, 329, 330, 331, /* 2310 */ 375, 375, 375, 323, 375, 375, 375, 327, 328, 329,
/* 2320 */ 332, 324, 334, 255, 327, 328, 329, 330, 331, 332, /* 2320 */ 330, 331, 332, 375, 334, 375, 375, 375, 375, 255,
/* 2330 */ 375, 334, 375, 375, 375, 375, 375, 255, 375, 324, /* 2330 */ 375, 375, 375, 283, 375, 375, 375, 375, 375, 375,
/* 2340 */ 375, 375, 327, 328, 329, 330, 331, 332, 375, 334, /* 2340 */ 375, 291, 375, 375, 375, 375, 296, 375, 298, 375,
/* 2350 */ 375, 283, 375, 375, 375, 375, 375, 375, 375, 291, /* 2350 */ 375, 375, 375, 375, 375, 375, 375, 283, 375, 375,
/* 2360 */ 375, 375, 375, 375, 296, 283, 298, 375, 375, 375, /* 2360 */ 375, 375, 375, 375, 375, 291, 375, 375, 375, 375,
/* 2370 */ 375, 375, 375, 291, 375, 375, 375, 375, 296, 375, /* 2370 */ 296, 375, 298, 323, 375, 375, 375, 327, 328, 329,
/* 2380 */ 298, 375, 375, 375, 375, 375, 375, 375, 375, 375, /* 2380 */ 330, 331, 332, 375, 334, 255, 375, 375, 375, 375,
/* 2390 */ 375, 255, 324, 375, 375, 327, 328, 329, 330, 331, /* 2390 */ 375, 375, 375, 375, 375, 375, 375, 323, 375, 375,
/* 2400 */ 332, 375, 334, 375, 375, 375, 324, 375, 375, 327, /* 2400 */ 375, 327, 328, 329, 330, 331, 332, 375, 334, 255,
/* 2410 */ 328, 329, 330, 331, 332, 375, 334, 375, 375, 283, /* 2410 */ 375, 375, 375, 283, 375, 375, 375, 375, 375, 375,
/* 2420 */ 375, 375, 375, 375, 375, 375, 375, 291, 375, 375, /* 2420 */ 375, 291, 375, 375, 375, 375, 296, 375, 298, 375,
/* 2430 */ 375, 375, 296, 375, 298, 375, 375, 375, 375, 375, /* 2430 */ 375, 375, 375, 375, 375, 375, 375, 283, 375, 375,
/* 2440 */ 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, /* 2440 */ 375, 375, 375, 375, 375, 291, 375, 375, 375, 375,
/* 2450 */ 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, /* 2450 */ 296, 255, 298, 323, 375, 375, 375, 327, 328, 329,
/* 2460 */ 324, 375, 375, 327, 328, 329, 330, 331, 332, 375, /* 2460 */ 330, 331, 332, 375, 334, 375, 375, 255, 375, 375,
/* 2470 */ 334, /* 2470 */ 375, 375, 375, 375, 375, 375, 375, 323, 375, 283,
/* 2480 */ 375, 327, 328, 329, 330, 331, 332, 291, 334, 375,
/* 2490 */ 375, 375, 296, 375, 298, 283, 375, 375, 375, 375,
/* 2500 */ 375, 375, 375, 291, 375, 375, 375, 375, 296, 255,
/* 2510 */ 298, 375, 375, 375, 375, 375, 375, 375, 375, 323,
/* 2520 */ 375, 375, 375, 327, 328, 329, 330, 331, 332, 255,
/* 2530 */ 334, 375, 375, 375, 375, 323, 375, 283, 375, 327,
/* 2540 */ 328, 329, 330, 331, 332, 291, 334, 375, 375, 375,
/* 2550 */ 296, 375, 298, 375, 375, 375, 375, 283, 375, 375,
/* 2560 */ 375, 375, 375, 375, 375, 291, 375, 375, 375, 375,
/* 2570 */ 296, 375, 298, 375, 375, 375, 375, 323, 375, 375,
/* 2580 */ 375, 327, 328, 329, 330, 331, 332, 375, 334, 375,
/* 2590 */ 375, 375, 375, 375, 375, 375, 375, 323, 375, 375,
/* 2600 */ 375, 327, 328, 329, 330, 331, 332, 375, 334,
}; };
#define YY_SHIFT_COUNT (652) #define YY_SHIFT_COUNT (652)
#define YY_SHIFT_MIN (0) #define YY_SHIFT_MIN (0)
#define YY_SHIFT_MAX (1821) #define YY_SHIFT_MAX (1814)
static const unsigned short int yy_shift_ofst[] = { static const unsigned short int yy_shift_ofst[] = {
/* 0 */ 891, 0, 0, 57, 57, 254, 254, 254, 311, 311, /* 0 */ 891, 0, 0, 57, 57, 254, 254, 254, 311, 311,
/* 10 */ 254, 254, 508, 565, 762, 565, 565, 565, 565, 565, /* 10 */ 254, 254, 508, 565, 762, 565, 565, 565, 565, 565,
/* 20 */ 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, /* 20 */ 565, 565, 565, 565, 565, 565, 565, 565, 565, 565,
/* 30 */ 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, /* 30 */ 565, 565, 565, 565, 565, 565, 565, 565, 565, 565,
/* 40 */ 565, 565, 302, 302, 85, 85, 85, 1224, 1224, 1224, /* 40 */ 565, 565, 565, 64, 64, 29, 29, 29, 1187, 1187,
/* 50 */ 1224, 54, 86, 202, 154, 154, 53, 53, 56, 190, /* 50 */ 1187, 54, 95, 247, 40, 40, 165, 165, 317, 106,
/* 60 */ 202, 202, 154, 154, 154, 154, 154, 154, 154, 154, /* 60 */ 247, 247, 40, 40, 40, 40, 40, 40, 40, 40,
/* 70 */ 15, 154, 154, 154, 171, 214, 298, 154, 154, 298, /* 70 */ 6, 40, 40, 40, 48, 127, 40, 40, 127, 152,
/* 80 */ 154, 298, 298, 298, 154, 274, 758, 223, 477, 477, /* 80 */ 40, 127, 127, 127, 40, 122, 758, 223, 477, 477,
/* 90 */ 267, 409, 755, 755, 755, 755, 755, 755, 755, 755, /* 90 */ 13, 409, 839, 839, 839, 839, 839, 839, 839, 839,
/* 100 */ 755, 755, 755, 755, 755, 755, 755, 755, 755, 755, /* 100 */ 839, 839, 839, 839, 839, 839, 839, 839, 839, 839,
/* 110 */ 755, 66, 190, 209, 209, 38, 433, 457, 457, 457, /* 110 */ 839, 196, 106, 325, 325, 75, 80, 365, 633, 633,
/* 120 */ 123, 433, 318, 214, 31, 31, 298, 298, 423, 423, /* 120 */ 633, 80, 209, 48, 273, 273, 127, 127, 277, 277,
/* 130 */ 306, 429, 252, 252, 252, 252, 252, 252, 252, 131, /* 130 */ 321, 380, 252, 252, 252, 252, 252, 252, 252, 131,
/* 140 */ 21, 14, 374, 233, 71, 388, 511, 88, 199, 315, /* 140 */ 717, 533, 374, 233, 138, 67, 143, 124, 199, 476,
/* 150 */ 770, 512, 546, 610, 784, 610, 819, 665, 665, 665, /* 150 */ 596, 1, 776, 603, 570, 603, 783, 581, 581, 581,
/* 160 */ 792, 617, 863, 1072, 1060, 1089, 966, 1072, 1072, 1105, /* 160 */ 619, 786, 862, 1067, 1044, 1068, 945, 1067, 1067, 1073,
/* 170 */ 1004, 1004, 1072, 1134, 1134, 1137, 15, 214, 15, 1142, /* 170 */ 973, 973, 1067, 1103, 1103, 1109, 6, 48, 6, 1114,
/* 180 */ 1145, 15, 1142, 15, 1147, 15, 15, 1072, 15, 1134, /* 180 */ 1118, 6, 1114, 6, 1125, 6, 6, 1067, 6, 1103,
/* 190 */ 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, /* 190 */ 127, 127, 127, 127, 127, 127, 127, 127, 127, 127,
/* 200 */ 298, 1072, 1134, 423, 1137, 274, 1032, 214, 274, 1072, /* 200 */ 127, 1067, 1103, 277, 1109, 122, 992, 48, 122, 1067,
/* 210 */ 1072, 1142, 274, 1199, 423, 992, 1002, 423, 992, 1002, /* 210 */ 1067, 1114, 122, 982, 277, 277, 277, 277, 982, 277,
/* 220 */ 423, 423, 298, 1008, 1091, 992, 1007, 1013, 1028, 863, /* 220 */ 1066, 209, 1125, 122, 321, 122, 209, 1222, 277, 1018,
/* 230 */ 1033, 318, 1238, 1020, 1027, 1016, 1020, 1027, 1020, 1027, /* 230 */ 982, 277, 277, 1018, 982, 277, 277, 127, 1027, 1102,
/* 240 */ 1182, 1002, 423, 423, 423, 423, 423, 1002, 423, 1164, /* 240 */ 1018, 1026, 1028, 1041, 862, 1046, 209, 1248, 1029, 1030,
/* 250 */ 318, 1147, 274, 306, 274, 318, 1240, 423, 429, 1072, /* 250 */ 1034, 1029, 1030, 1029, 1030, 1189, 1197, 277, 380, 1067,
/* 260 */ 274, 1295, 1134, 2471, 2471, 2471, 2471, 2471, 2471, 2471, /* 260 */ 122, 1268, 1103, 2609, 2609, 2609, 2609, 2609, 2609, 2609,
/* 270 */ 334, 502, 717, 96, 412, 580, 648, 839, 855, 1019, /* 270 */ 334, 502, 268, 520, 412, 623, 648, 903, 981, 838,
/* 280 */ 926, 980, 980, 980, 980, 980, 980, 980, 980, 431, /* 280 */ 710, 431, 855, 855, 855, 855, 855, 855, 855, 855,
/* 290 */ 685, 226, 365, 365, 425, 485, 161, 50, 249, 570, /* 290 */ 920, 698, 14, 14, 164, 439, 25, 147, 699, 564,
/* 300 */ 328, 355, 355, 355, 355, 699, 739, 956, 746, 818, /* 300 */ 486, 656, 364, 364, 364, 364, 756, 867, 769, 835,
/* 310 */ 835, 837, 900, 981, 1023, 921, 727, 967, 970, 929, /* 310 */ 848, 849, 931, 984, 986, 443, 679, 893, 899, 932,
/* 320 */ 857, 803, 867, 1006, 335, 1012, 960, 1021, 1025, 1031, /* 320 */ 949, 955, 956, 781, 842, 957, 906, 804, 638, 736,
/* 330 */ 1045, 1051, 972, 973, 1059, 1090, 1097, 1098, 1100, 1101, /* 330 */ 960, 880, 962, 895, 966, 970, 998, 1001, 1009, 1019,
/* 340 */ 974, 1026, 1036, 1339, 1344, 1303, 1346, 1274, 1348, 1314, /* 340 */ 972, 1021, 1024, 1324, 1331, 1290, 1333, 1262, 1336, 1302,
/* 350 */ 1167, 1317, 1318, 1319, 1173, 1357, 1323, 1324, 1177, 1361, /* 350 */ 1155, 1307, 1318, 1321, 1174, 1364, 1334, 1343, 1185, 1379,
/* 360 */ 1180, 1364, 1330, 1367, 1353, 1368, 1342, 1378, 1297, 1212, /* 360 */ 1198, 1380, 1348, 1385, 1372, 1386, 1363, 1399, 1320, 1232,
/* 370 */ 1214, 1217, 1220, 1384, 1385, 1227, 1230, 1391, 1392, 1347, /* 370 */ 1237, 1240, 1243, 1407, 1411, 1253, 1256, 1415, 1416, 1371,
/* 380 */ 1394, 1396, 1397, 1257, 1400, 1401, 1402, 1404, 1406, 1270, /* 380 */ 1418, 1419, 1420, 1279, 1422, 1423, 1425, 1426, 1427, 1291,
/* 390 */ 1374, 1410, 1277, 1411, 1415, 1416, 1417, 1418, 1419, 1421, /* 390 */ 1394, 1430, 1294, 1432, 1433, 1434, 1436, 1437, 1438, 1447,
/* 400 */ 1422, 1423, 1432, 1440, 1442, 1443, 1444, 1403, 1446, 1447, /* 400 */ 1448, 1450, 1451, 1455, 1456, 1457, 1458, 1417, 1461, 1462,
/* 410 */ 1448, 1449, 1450, 1451, 1430, 1453, 1454, 1462, 1463, 1464, /* 410 */ 1463, 1464, 1466, 1468, 1449, 1469, 1470, 1472, 1482, 1483,
/* 420 */ 1465, 1414, 1420, 1424, 1452, 1412, 1457, 1426, 1468, 1435, /* 420 */ 1484, 1435, 1439, 1431, 1465, 1429, 1471, 1441, 1476, 1440,
/* 430 */ 1431, 1478, 1479, 1480, 1445, 1327, 1482, 1485, 1486, 1427, /* 430 */ 1452, 1489, 1490, 1502, 1454, 1340, 1495, 1504, 1507, 1467,
/* 440 */ 1488, 1489, 1455, 1466, 1460, 1492, 1459, 1467, 1461, 1493, /* 440 */ 1508, 1509, 1477, 1481, 1475, 1515, 1494, 1485, 1491, 1516,
/* 450 */ 1469, 1470, 1472, 1495, 1481, 1474, 1483, 1497, 1501, 1503, /* 450 */ 1496, 1487, 1497, 1535, 1503, 1492, 1498, 1540, 1542, 1543,
/* 460 */ 1523, 1366, 1436, 1491, 1511, 1535, 1504, 1505, 1508, 1509, /* 460 */ 1544, 1459, 1460, 1510, 1525, 1551, 1517, 1518, 1519, 1520,
/* 470 */ 1502, 1506, 1512, 1513, 1515, 1538, 1529, 1552, 1531, 1507, /* 470 */ 1513, 1514, 1523, 1524, 1527, 1560, 1541, 1564, 1545, 1521,
/* 480 */ 1555, 1536, 1522, 1560, 1527, 1563, 1530, 1566, 1545, 1548, /* 480 */ 1565, 1546, 1531, 1569, 1536, 1572, 1539, 1575, 1554, 1566,
/* 490 */ 1569, 1425, 1539, 1570, 1407, 1549, 1428, 1433, 1573, 1581, /* 490 */ 1585, 1442, 1552, 1588, 1421, 1571, 1444, 1453, 1591, 1595,
/* 500 */ 1434, 1475, 1582, 1583, 1585, 1543, 1363, 1518, 1520, 1524, /* 500 */ 1446, 1473, 1598, 1599, 1601, 1526, 1522, 1428, 1603, 1528,
/* 510 */ 1521, 1558, 1533, 1525, 1532, 1537, 1541, 1559, 1574, 1575, /* 510 */ 1479, 1530, 1607, 1570, 1486, 1532, 1538, 1567, 1574, 1390,
/* 520 */ 1540, 1586, 1408, 1551, 1553, 1580, 1409, 1588, 1589, 1554, /* 520 */ 1549, 1537, 1557, 1558, 1559, 1563, 1596, 1580, 1582, 1568,
/* 530 */ 1595, 1458, 1556, 1605, 1606, 1607, 1611, 1612, 1613, 1556, /* 530 */ 1579, 1581, 1583, 1604, 1600, 1606, 1586, 1610, 1403, 1584,
/* 540 */ 1643, 1471, 1608, 1567, 1571, 1572, 1603, 1577, 1587, 1621, /* 540 */ 1587, 1608, 1478, 1626, 1625, 1627, 1592, 1631, 1424, 1593,
/* 550 */ 1630, 1484, 1590, 1591, 1593, 1596, 1499, 1656, 1598, 1544, /* 550 */ 1643, 1646, 1647, 1648, 1649, 1651, 1593, 1677, 1499, 1650,
/* 560 */ 1609, 1657, 1631, 1547, 1614, 1597, 1627, 1635, 1616, 1602, /* 560 */ 1609, 1611, 1613, 1615, 1614, 1616, 1655, 1621, 1622, 1656,
/* 570 */ 1617, 1665, 1618, 1601, 1619, 1653, 1668, 1622, 1623, 1670, /* 570 */ 1667, 1533, 1624, 1597, 1628, 1673, 1674, 1632, 1630, 1675,
/* 580 */ 1625, 1626, 1673, 1628, 1638, 1678, 1632, 1641, 1690, 1652, /* 580 */ 1633, 1639, 1690, 1645, 1652, 1691, 1660, 1661, 1693, 1663,
/* 590 */ 1629, 1634, 1636, 1637, 1679, 1642, 1655, 1659, 1703, 1662, /* 590 */ 1640, 1641, 1653, 1654, 1708, 1637, 1668, 1669, 1698, 1670,
/* 600 */ 1702, 1702, 1724, 1688, 1692, 1714, 1685, 1675, 1713, 1722, /* 600 */ 1710, 1710, 1712, 1689, 1695, 1720, 1696, 1676, 1715, 1728,
/* 610 */ 1723, 1726, 1727, 1728, 1737, 1729, 1730, 1704, 1502, 1732, /* 610 */ 1729, 1731, 1732, 1733, 1747, 1736, 1738, 1709, 1513, 1740,
/* 620 */ 1506, 1735, 1741, 1742, 1743, 1744, 1746, 1772, 1747, 1745, /* 620 */ 1514, 1742, 1743, 1744, 1745, 1748, 1750, 1782, 1751, 1741,
/* 630 */ 1750, 1791, 1758, 1748, 1755, 1796, 1763, 1752, 1761, 1803, /* 630 */ 1753, 1787, 1755, 1746, 1756, 1794, 1761, 1752, 1759, 1800,
/* 640 */ 1777, 1767, 1779, 1816, 1784, 1785, 1821, 1800, 1802, 1804, /* 640 */ 1772, 1762, 1771, 1811, 1777, 1778, 1814, 1793, 1797, 1804,
/* 650 */ 1805, 1807, 1810, /* 650 */ 1806, 1798, 1810,
}; };
#define YY_REDUCE_COUNT (269) #define YY_REDUCE_COUNT (269)
#define YY_REDUCE_MIN (-329) #define YY_REDUCE_MIN (-349)
#define YY_REDUCE_MAX (2136) #define YY_REDUCE_MAX (2274)
static const short yy_reduce_ofst[] = { static const short yy_reduce_ofst[] = {
/* 0 */ -246, 688, 769, -197, 789, 881, 944, 971, 1042, 1107, /* 0 */ -246, -200, 689, 767, 828, 845, 898, 953, 1031, 1043,
/* 10 */ 1178, 1200, 1263, 348, 1281, 1334, 1388, 1399, 1456, 1477, /* 10 */ 1112, 1169, 1190, 1250, 1306, 1328, 1389, 1017, 1409, 1474,
/* 20 */ 1519, 1542, 1599, 1610, 1624, 1666, 1680, 1691, 1733, 1775, /* 20 */ 1493, 1562, 1578, 1620, 1644, 1686, 1706, 1766, 1790, 1846,
/* 30 */ 1786, 1798, 1853, 1880, 1907, 1934, 1988, 1997, 2015, 2068, /* 30 */ 1870, 1912, 1928, 1970, 1990, 2050, 2074, 2130, 2154, 2196,
/* 40 */ 2082, 2136, 288, 490, -236, -122, -20, -280, -262, -260, /* 40 */ 2212, 2254, 2274, -245, 490, -191, -120, -20, -271, -249,
/* 50 */ -55, -285, -80, -41, 206, 289, -259, -252, -329, -279, /* 50 */ -235, -218, 222, 258, 41, 44, -259, -254, -349, -240,
/* 60 */ -126, -49, 268, 341, 342, 351, 459, 460, 461, 517, /* 60 */ -277, -256, 46, 103, 206, 288, 298, 300, 319, 342,
/* 70 */ -250, 520, 543, 559, -251, -181, -104, 642, 645, 270, /* 70 */ -257, 351, 355, 391, -64, -101, 405, 517, -11, -267,
/* 80 */ 709, 292, 330, 299, 711, 332, -234, -190, -190, -190, /* 80 */ 526, 248, 360, 267, 557, 216, -252, -171, -171, -171,
/* 90 */ -99, 146, 120, 244, 354, 356, 385, 444, 532, 549, /* 90 */ -176, -253, 47, 85, 120, 379, 389, 403, 425, 481,
/* 100 */ 569, 576, 621, 651, 657, 682, 691, 694, 695, 725, /* 100 */ 532, 539, 549, 577, 579, 604, 607, 617, 651, 675,
/* 110 */ 742, 20, 229, -101, 407, 11, 264, 464, 467, 500, /* 110 */ 678, -133, 87, -46, 45, -258, 203, 295, 93, 327,
/* 120 */ 80, 456, 83, 7, -307, -97, 189, 325, 149, 436, /* 120 */ 402, 296, 376, 501, 305, 362, 550, 297, 78, 436,
/* 130 */ 442, 640, -273, 266, 297, 443, 452, 472, 509, 259, /* 130 */ 458, 479, -283, 193, 253, 514, 573, 592, 661, 236,
/* 140 */ 563, 554, 469, 494, 609, 595, 622, 715, 715, 773, /* 140 */ 530, 668, 576, 485, 727, 662, 650, 742, 742, 763,
/* 150 */ 764, 745, 733, 712, 712, 712, 718, 702, 704, 714, /* 150 */ 798, 766, 740, 716, 716, 716, 724, 704, 707, 713,
/* 160 */ 729, 715, 768, 842, 794, 856, 814, 882, 883, 845, /* 160 */ 728, 742, 768, 825, 773, 836, 793, 850, 851, 813,
/* 170 */ 849, 850, 890, 898, 899, 840, 893, 860, 894, 851, /* 170 */ 816, 819, 858, 868, 870, 814, 864, 837, 866, 826,
/* 180 */ 852, 901, 858, 904, 870, 908, 909, 915, 918, 925, /* 180 */ 827, 872, 831, 877, 843, 879, 881, 886, 883, 897,
/* 190 */ 903, 905, 906, 907, 910, 911, 912, 913, 914, 917, /* 190 */ 869, 878, 884, 900, 901, 902, 907, 909, 910, 912,
/* 200 */ 919, 924, 934, 896, 879, 936, 886, 916, 941, 953, /* 200 */ 915, 917, 921, 905, 846, 937, 887, 908, 938, 942,
/* 210 */ 954, 895, 955, 902, 933, 866, 927, 935, 873, 931, /* 210 */ 944, 904, 946, 859, 916, 918, 922, 923, 924, 927,
/* 220 */ 943, 945, 715, 885, 887, 892, 897, 920, 923, 928, /* 220 */ 911, 926, 929, 959, 958, 969, 947, 919, 950, 889,
/* 230 */ 712, 965, 938, 922, 939, 930, 937, 942, 940, 947, /* 230 */ 948, 961, 963, 894, 951, 964, 965, 742, 892, 913,
/* 240 */ 948, 958, 986, 987, 988, 994, 996, 963, 997, 989, /* 240 */ 914, 930, 935, 933, 954, 716, 976, 952, 928, 925,
/* 250 */ 1029, 1014, 1052, 1037, 1054, 1030, 1039, 1034, 1056, 1061, /* 250 */ 936, 934, 939, 940, 943, 977, 1012, 1005, 1033, 1039,
/* 260 */ 1062, 1074, 1077, 1035, 1024, 1064, 1065, 1066, 1070, 1084, /* 260 */ 1047, 1058, 1061, 1004, 1010, 1048, 1051, 1053, 1055, 1070,
}; };
static const YYACTIONTYPE yy_default[] = { static const YYACTIONTYPE yy_default[] = {
/* 0 */ 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, /* 0 */ 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437,
...@@ -832,8 +858,8 @@ static const YYACTIONTYPE yy_default[] = { ...@@ -832,8 +858,8 @@ static const YYACTIONTYPE yy_default[] = {
/* 80 */ 1437, 1437, 1437, 1437, 1437, 1507, 1660, 1437, 1836, 1437, /* 80 */ 1437, 1437, 1437, 1437, 1437, 1507, 1660, 1437, 1836, 1437,
/* 90 */ 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, /* 90 */ 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437,
/* 100 */ 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, /* 100 */ 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437,
/* 110 */ 1437, 1437, 1437, 1437, 1437, 1509, 1437, 1848, 1848, 1848, /* 110 */ 1437, 1437, 1437, 1437, 1437, 1509, 1437, 1507, 1848, 1848,
/* 120 */ 1507, 1437, 1437, 1437, 1704, 1704, 1437, 1437, 1437, 1437, /* 120 */ 1848, 1437, 1437, 1437, 1704, 1704, 1437, 1437, 1437, 1437,
/* 130 */ 1603, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1696, /* 130 */ 1603, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1696,
/* 140 */ 1437, 1437, 1917, 1437, 1437, 1702, 1871, 1437, 1437, 1437, /* 140 */ 1437, 1437, 1917, 1437, 1437, 1702, 1871, 1437, 1437, 1437,
/* 150 */ 1437, 1556, 1863, 1840, 1854, 1841, 1838, 1902, 1902, 1902, /* 150 */ 1437, 1556, 1863, 1840, 1854, 1841, 1838, 1902, 1902, 1902,
...@@ -842,19 +868,19 @@ static const YYACTIONTYPE yy_default[] = { ...@@ -842,19 +868,19 @@ static const YYACTIONTYPE yy_default[] = {
/* 180 */ 1437, 1509, 1437, 1509, 1437, 1509, 1509, 1437, 1509, 1437, /* 180 */ 1437, 1509, 1437, 1509, 1437, 1509, 1509, 1437, 1509, 1437,
/* 190 */ 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, /* 190 */ 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437,
/* 200 */ 1437, 1437, 1437, 1437, 1437, 1507, 1698, 1437, 1507, 1437, /* 200 */ 1437, 1437, 1437, 1437, 1437, 1507, 1698, 1437, 1507, 1437,
/* 210 */ 1437, 1437, 1507, 1437, 1437, 1878, 1876, 1437, 1878, 1876, /* 210 */ 1437, 1437, 1507, 1876, 1437, 1437, 1437, 1437, 1876, 1437,
/* 220 */ 1437, 1437, 1437, 1890, 1886, 1878, 1894, 1892, 1869, 1867, /* 220 */ 1437, 1437, 1437, 1507, 1437, 1507, 1437, 1437, 1437, 1878,
/* 230 */ 1854, 1437, 1437, 1908, 1904, 1920, 1908, 1904, 1908, 1904, /* 230 */ 1876, 1437, 1437, 1878, 1876, 1437, 1437, 1437, 1890, 1886,
/* 240 */ 1437, 1876, 1437, 1437, 1437, 1437, 1437, 1876, 1437, 1437, /* 240 */ 1878, 1894, 1892, 1869, 1867, 1854, 1437, 1437, 1908, 1904,
/* 250 */ 1437, 1437, 1507, 1437, 1507, 1437, 1572, 1437, 1437, 1437, /* 250 */ 1920, 1908, 1904, 1908, 1904, 1437, 1572, 1437, 1437, 1437,
/* 260 */ 1507, 1469, 1437, 1690, 1704, 1606, 1606, 1606, 1510, 1442, /* 260 */ 1507, 1469, 1437, 1690, 1704, 1606, 1606, 1606, 1510, 1442,
/* 270 */ 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, /* 270 */ 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437,
/* 280 */ 1437, 1774, 1889, 1888, 1812, 1811, 1810, 1808, 1773, 1437, /* 280 */ 1437, 1437, 1774, 1889, 1888, 1812, 1811, 1810, 1808, 1773,
/* 290 */ 1437, 1568, 1772, 1771, 1437, 1437, 1437, 1437, 1437, 1437, /* 290 */ 1437, 1568, 1772, 1771, 1437, 1437, 1437, 1437, 1437, 1437,
/* 300 */ 1437, 1765, 1766, 1764, 1763, 1437, 1437, 1437, 1437, 1437, /* 300 */ 1437, 1437, 1765, 1766, 1764, 1763, 1437, 1437, 1437, 1437,
/* 310 */ 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1837, /* 310 */ 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437,
/* 320 */ 1437, 1905, 1909, 1437, 1437, 1437, 1748, 1437, 1437, 1437, /* 320 */ 1437, 1437, 1437, 1437, 1437, 1437, 1837, 1437, 1905, 1909,
/* 330 */ 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, /* 330 */ 1437, 1437, 1437, 1748, 1437, 1437, 1437, 1437, 1437, 1437,
/* 340 */ 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, /* 340 */ 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437,
/* 350 */ 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, /* 350 */ 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437,
/* 360 */ 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, /* 360 */ 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437,
...@@ -871,14 +897,14 @@ static const YYACTIONTYPE yy_default[] = { ...@@ -871,14 +897,14 @@ static const YYACTIONTYPE yy_default[] = {
/* 470 */ 1537, 1536, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, /* 470 */ 1537, 1536, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437,
/* 480 */ 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, /* 480 */ 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437,
/* 490 */ 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, /* 490 */ 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437,
/* 500 */ 1437, 1437, 1437, 1437, 1437, 1870, 1437, 1437, 1437, 1437, /* 500 */ 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1708, 1437,
/* 510 */ 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1748, /* 510 */ 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1870, 1437,
/* 520 */ 1437, 1887, 1437, 1847, 1843, 1437, 1437, 1839, 1437, 1437, /* 520 */ 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437,
/* 530 */ 1903, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, /* 530 */ 1437, 1437, 1437, 1437, 1437, 1748, 1437, 1887, 1437, 1847,
/* 540 */ 1832, 1437, 1805, 1437, 1437, 1437, 1437, 1437, 1437, 1437, /* 540 */ 1843, 1437, 1437, 1839, 1747, 1437, 1437, 1903, 1437, 1437,
/* 550 */ 1437, 1759, 1437, 1437, 1437, 1437, 1437, 1708, 1437, 1437, /* 550 */ 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1832, 1437, 1805,
/* 560 */ 1437, 1437, 1437, 1437, 1437, 1437, 1747, 1437, 1790, 1437, /* 560 */ 1790, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437,
/* 570 */ 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1600, 1437, 1437, /* 570 */ 1437, 1759, 1437, 1437, 1437, 1437, 1437, 1600, 1437, 1437,
/* 580 */ 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, /* 580 */ 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437,
/* 590 */ 1585, 1583, 1582, 1581, 1437, 1578, 1437, 1437, 1437, 1437, /* 590 */ 1585, 1583, 1582, 1581, 1437, 1578, 1437, 1437, 1437, 1437,
/* 600 */ 1609, 1608, 1437, 1437, 1437, 1437, 1437, 1437, 1529, 1437, /* 600 */ 1609, 1608, 1437, 1437, 1437, 1437, 1437, 1437, 1529, 1437,
...@@ -1533,7 +1559,7 @@ static const char *const yyTokenName[] = { ...@@ -1533,7 +1559,7 @@ static const char *const yyTokenName[] = {
/* 285 */ "signed_literal", /* 285 */ "signed_literal",
/* 286 */ "create_subtable_clause", /* 286 */ "create_subtable_clause",
/* 287 */ "specific_tags_opt", /* 287 */ "specific_tags_opt",
/* 288 */ "literal_list", /* 288 */ "expression_list",
/* 289 */ "drop_table_clause", /* 289 */ "drop_table_clause",
/* 290 */ "col_name_list", /* 290 */ "col_name_list",
/* 291 */ "table_name", /* 291 */ "table_name",
...@@ -1555,21 +1581,21 @@ static const char *const yyTokenName[] = { ...@@ -1555,21 +1581,21 @@ static const char *const yyTokenName[] = {
/* 307 */ "sliding_opt", /* 307 */ "sliding_opt",
/* 308 */ "sma_stream_opt", /* 308 */ "sma_stream_opt",
/* 309 */ "func", /* 309 */ "func",
/* 310 */ "expression_list", /* 310 */ "stream_options",
/* 311 */ "stream_options", /* 311 */ "topic_name",
/* 312 */ "topic_name", /* 312 */ "query_expression",
/* 313 */ "query_expression", /* 313 */ "cgroup_name",
/* 314 */ "cgroup_name", /* 314 */ "analyze_opt",
/* 315 */ "analyze_opt", /* 315 */ "explain_options",
/* 316 */ "explain_options", /* 316 */ "agg_func_opt",
/* 317 */ "agg_func_opt", /* 317 */ "bufsize_opt",
/* 318 */ "bufsize_opt", /* 318 */ "stream_name",
/* 319 */ "stream_name", /* 319 */ "into_opt",
/* 320 */ "into_opt", /* 320 */ "dnode_list",
/* 321 */ "dnode_list", /* 321 */ "where_clause_opt",
/* 322 */ "where_clause_opt", /* 322 */ "signed",
/* 323 */ "signed", /* 323 */ "literal_func",
/* 324 */ "literal_func", /* 324 */ "literal_list",
/* 325 */ "table_alias", /* 325 */ "table_alias",
/* 326 */ "column_alias", /* 326 */ "column_alias",
/* 327 */ "expression", /* 327 */ "expression",
...@@ -1755,7 +1781,7 @@ static const char *const yyRuleName[] = { ...@@ -1755,7 +1781,7 @@ static const char *const yyRuleName[] = {
/* 125 */ "alter_table_clause ::= full_table_name SET TAG column_name NK_EQ signed_literal", /* 125 */ "alter_table_clause ::= full_table_name SET TAG column_name NK_EQ signed_literal",
/* 126 */ "multi_create_clause ::= create_subtable_clause", /* 126 */ "multi_create_clause ::= create_subtable_clause",
/* 127 */ "multi_create_clause ::= multi_create_clause create_subtable_clause", /* 127 */ "multi_create_clause ::= multi_create_clause create_subtable_clause",
/* 128 */ "create_subtable_clause ::= not_exists_opt full_table_name USING full_table_name specific_tags_opt TAGS NK_LP literal_list NK_RP table_options", /* 128 */ "create_subtable_clause ::= not_exists_opt full_table_name USING full_table_name specific_tags_opt TAGS NK_LP expression_list NK_RP table_options",
/* 129 */ "multi_drop_clause ::= drop_table_clause", /* 129 */ "multi_drop_clause ::= drop_table_clause",
/* 130 */ "multi_drop_clause ::= multi_drop_clause drop_table_clause", /* 130 */ "multi_drop_clause ::= multi_drop_clause drop_table_clause",
/* 131 */ "drop_table_clause ::= exists_opt full_table_name", /* 131 */ "drop_table_clause ::= exists_opt full_table_name",
...@@ -2260,13 +2286,13 @@ static void yy_destructor( ...@@ -2260,13 +2286,13 @@ static void yy_destructor(
case 307: /* sliding_opt */ case 307: /* sliding_opt */
case 308: /* sma_stream_opt */ case 308: /* sma_stream_opt */
case 309: /* func */ case 309: /* func */
case 311: /* stream_options */ case 310: /* stream_options */
case 313: /* query_expression */ case 312: /* query_expression */
case 316: /* explain_options */ case 315: /* explain_options */
case 320: /* into_opt */ case 319: /* into_opt */
case 322: /* where_clause_opt */ case 321: /* where_clause_opt */
case 323: /* signed */ case 322: /* signed */
case 324: /* literal_func */ case 323: /* literal_func */
case 327: /* expression */ case 327: /* expression */
case 328: /* pseudo_column */ case 328: /* pseudo_column */
case 329: /* column_reference */ case 329: /* column_reference */
...@@ -2304,7 +2330,7 @@ static void yy_destructor( ...@@ -2304,7 +2330,7 @@ static void yy_destructor(
case 253: /* account_options */ case 253: /* account_options */
case 254: /* alter_account_options */ case 254: /* alter_account_options */
case 256: /* alter_account_option */ case 256: /* alter_account_option */
case 318: /* bufsize_opt */ case 317: /* bufsize_opt */
{ {
} }
...@@ -2317,9 +2343,9 @@ static void yy_destructor( ...@@ -2317,9 +2343,9 @@ static void yy_destructor(
case 291: /* table_name */ case 291: /* table_name */
case 298: /* function_name */ case 298: /* function_name */
case 304: /* index_name */ case 304: /* index_name */
case 312: /* topic_name */ case 311: /* topic_name */
case 314: /* cgroup_name */ case 313: /* cgroup_name */
case 319: /* stream_name */ case 318: /* stream_name */
case 325: /* table_alias */ case 325: /* table_alias */
case 326: /* column_alias */ case 326: /* column_alias */
case 332: /* star_func */ case 332: /* star_func */
...@@ -2343,8 +2369,8 @@ static void yy_destructor( ...@@ -2343,8 +2369,8 @@ static void yy_destructor(
break; break;
case 265: /* not_exists_opt */ case 265: /* not_exists_opt */
case 267: /* exists_opt */ case 267: /* exists_opt */
case 315: /* analyze_opt */ case 314: /* analyze_opt */
case 317: /* agg_func_opt */ case 316: /* agg_func_opt */
case 354: /* set_quantifier_opt */ case 354: /* set_quantifier_opt */
{ {
...@@ -2359,13 +2385,13 @@ static void yy_destructor( ...@@ -2359,13 +2385,13 @@ static void yy_destructor(
case 279: /* tags_def */ case 279: /* tags_def */
case 280: /* multi_drop_clause */ case 280: /* multi_drop_clause */
case 287: /* specific_tags_opt */ case 287: /* specific_tags_opt */
case 288: /* literal_list */ case 288: /* expression_list */
case 290: /* col_name_list */ case 290: /* col_name_list */
case 293: /* duration_list */ case 293: /* duration_list */
case 294: /* rollup_func_list */ case 294: /* rollup_func_list */
case 306: /* func_list */ case 306: /* func_list */
case 310: /* expression_list */ case 320: /* dnode_list */
case 321: /* dnode_list */ case 324: /* literal_list */
case 333: /* star_func_para_list */ case 333: /* star_func_para_list */
case 335: /* other_para_list */ case 335: /* other_para_list */
case 355: /* select_list */ case 355: /* select_list */
...@@ -2837,7 +2863,7 @@ static const struct { ...@@ -2837,7 +2863,7 @@ static const struct {
{ 281, -6 }, /* (125) alter_table_clause ::= full_table_name SET TAG column_name NK_EQ signed_literal */ { 281, -6 }, /* (125) alter_table_clause ::= full_table_name SET TAG column_name NK_EQ signed_literal */
{ 278, -1 }, /* (126) multi_create_clause ::= create_subtable_clause */ { 278, -1 }, /* (126) multi_create_clause ::= create_subtable_clause */
{ 278, -2 }, /* (127) multi_create_clause ::= multi_create_clause create_subtable_clause */ { 278, -2 }, /* (127) multi_create_clause ::= multi_create_clause create_subtable_clause */
{ 286, -10 }, /* (128) create_subtable_clause ::= not_exists_opt full_table_name USING full_table_name specific_tags_opt TAGS NK_LP literal_list NK_RP table_options */ { 286, -10 }, /* (128) create_subtable_clause ::= not_exists_opt full_table_name USING full_table_name specific_tags_opt TAGS NK_LP expression_list NK_RP table_options */
{ 280, -1 }, /* (129) multi_drop_clause ::= drop_table_clause */ { 280, -1 }, /* (129) multi_drop_clause ::= drop_table_clause */
{ 280, -2 }, /* (130) multi_drop_clause ::= multi_drop_clause drop_table_clause */ { 280, -2 }, /* (130) multi_drop_clause ::= multi_drop_clause drop_table_clause */
{ 289, -2 }, /* (131) drop_table_clause ::= exists_opt full_table_name */ { 289, -2 }, /* (131) drop_table_clause ::= exists_opt full_table_name */
...@@ -2957,28 +2983,28 @@ static const struct { ...@@ -2957,28 +2983,28 @@ static const struct {
{ 252, -2 }, /* (245) cmd ::= DESCRIBE full_table_name */ { 252, -2 }, /* (245) cmd ::= DESCRIBE full_table_name */
{ 252, -3 }, /* (246) cmd ::= RESET QUERY CACHE */ { 252, -3 }, /* (246) cmd ::= RESET QUERY CACHE */
{ 252, -4 }, /* (247) cmd ::= EXPLAIN analyze_opt explain_options query_expression */ { 252, -4 }, /* (247) cmd ::= EXPLAIN analyze_opt explain_options query_expression */
{ 315, 0 }, /* (248) analyze_opt ::= */ { 314, 0 }, /* (248) analyze_opt ::= */
{ 315, -1 }, /* (249) analyze_opt ::= ANALYZE */ { 314, -1 }, /* (249) analyze_opt ::= ANALYZE */
{ 316, 0 }, /* (250) explain_options ::= */ { 315, 0 }, /* (250) explain_options ::= */
{ 316, -3 }, /* (251) explain_options ::= explain_options VERBOSE NK_BOOL */ { 315, -3 }, /* (251) explain_options ::= explain_options VERBOSE NK_BOOL */
{ 316, -3 }, /* (252) explain_options ::= explain_options RATIO NK_FLOAT */ { 315, -3 }, /* (252) explain_options ::= explain_options RATIO NK_FLOAT */
{ 252, -6 }, /* (253) cmd ::= COMPACT VNODES IN NK_LP integer_list NK_RP */ { 252, -6 }, /* (253) cmd ::= COMPACT VNODES IN NK_LP integer_list NK_RP */
{ 252, -10 }, /* (254) cmd ::= CREATE agg_func_opt FUNCTION not_exists_opt function_name AS NK_STRING OUTPUTTYPE type_name bufsize_opt */ { 252, -10 }, /* (254) cmd ::= CREATE agg_func_opt FUNCTION not_exists_opt function_name AS NK_STRING OUTPUTTYPE type_name bufsize_opt */
{ 252, -4 }, /* (255) cmd ::= DROP FUNCTION exists_opt function_name */ { 252, -4 }, /* (255) cmd ::= DROP FUNCTION exists_opt function_name */
{ 317, 0 }, /* (256) agg_func_opt ::= */ { 316, 0 }, /* (256) agg_func_opt ::= */
{ 317, -1 }, /* (257) agg_func_opt ::= AGGREGATE */ { 316, -1 }, /* (257) agg_func_opt ::= AGGREGATE */
{ 318, 0 }, /* (258) bufsize_opt ::= */ { 317, 0 }, /* (258) bufsize_opt ::= */
{ 318, -2 }, /* (259) bufsize_opt ::= BUFSIZE NK_INTEGER */ { 317, -2 }, /* (259) bufsize_opt ::= BUFSIZE NK_INTEGER */
{ 252, -8 }, /* (260) cmd ::= CREATE STREAM not_exists_opt stream_name stream_options into_opt AS query_expression */ { 252, -8 }, /* (260) cmd ::= CREATE STREAM not_exists_opt stream_name stream_options into_opt AS query_expression */
{ 252, -4 }, /* (261) cmd ::= DROP STREAM exists_opt stream_name */ { 252, -4 }, /* (261) cmd ::= DROP STREAM exists_opt stream_name */
{ 320, 0 }, /* (262) into_opt ::= */ { 319, 0 }, /* (262) into_opt ::= */
{ 320, -2 }, /* (263) into_opt ::= INTO full_table_name */ { 319, -2 }, /* (263) into_opt ::= INTO full_table_name */
{ 311, 0 }, /* (264) stream_options ::= */ { 310, 0 }, /* (264) stream_options ::= */
{ 311, -3 }, /* (265) stream_options ::= stream_options TRIGGER AT_ONCE */ { 310, -3 }, /* (265) stream_options ::= stream_options TRIGGER AT_ONCE */
{ 311, -3 }, /* (266) stream_options ::= stream_options TRIGGER WINDOW_CLOSE */ { 310, -3 }, /* (266) stream_options ::= stream_options TRIGGER WINDOW_CLOSE */
{ 311, -4 }, /* (267) stream_options ::= stream_options TRIGGER MAX_DELAY duration_literal */ { 310, -4 }, /* (267) stream_options ::= stream_options TRIGGER MAX_DELAY duration_literal */
{ 311, -3 }, /* (268) stream_options ::= stream_options WATERMARK duration_literal */ { 310, -3 }, /* (268) stream_options ::= stream_options WATERMARK duration_literal */
{ 311, -3 }, /* (269) stream_options ::= stream_options IGNORE EXPIRED */ { 310, -3 }, /* (269) stream_options ::= stream_options IGNORE EXPIRED */
{ 252, -3 }, /* (270) cmd ::= KILL CONNECTION NK_INTEGER */ { 252, -3 }, /* (270) cmd ::= KILL CONNECTION NK_INTEGER */
{ 252, -3 }, /* (271) cmd ::= KILL QUERY NK_STRING */ { 252, -3 }, /* (271) cmd ::= KILL QUERY NK_STRING */
{ 252, -3 }, /* (272) cmd ::= KILL TRANSACTION NK_INTEGER */ { 252, -3 }, /* (272) cmd ::= KILL TRANSACTION NK_INTEGER */
...@@ -2986,8 +3012,8 @@ static const struct { ...@@ -2986,8 +3012,8 @@ static const struct {
{ 252, -4 }, /* (274) cmd ::= MERGE VGROUP NK_INTEGER NK_INTEGER */ { 252, -4 }, /* (274) cmd ::= MERGE VGROUP NK_INTEGER NK_INTEGER */
{ 252, -4 }, /* (275) cmd ::= REDISTRIBUTE VGROUP NK_INTEGER dnode_list */ { 252, -4 }, /* (275) cmd ::= REDISTRIBUTE VGROUP NK_INTEGER dnode_list */
{ 252, -3 }, /* (276) cmd ::= SPLIT VGROUP NK_INTEGER */ { 252, -3 }, /* (276) cmd ::= SPLIT VGROUP NK_INTEGER */
{ 321, -2 }, /* (277) dnode_list ::= DNODE NK_INTEGER */ { 320, -2 }, /* (277) dnode_list ::= DNODE NK_INTEGER */
{ 321, -3 }, /* (278) dnode_list ::= dnode_list DNODE NK_INTEGER */ { 320, -3 }, /* (278) dnode_list ::= dnode_list DNODE NK_INTEGER */
{ 252, -3 }, /* (279) cmd ::= SYNCDB db_name REPLICA */ { 252, -3 }, /* (279) cmd ::= SYNCDB db_name REPLICA */
{ 252, -4 }, /* (280) cmd ::= DELETE FROM full_table_name where_clause_opt */ { 252, -4 }, /* (280) cmd ::= DELETE FROM full_table_name where_clause_opt */
{ 252, -1 }, /* (281) cmd ::= query_expression */ { 252, -1 }, /* (281) cmd ::= query_expression */
...@@ -3000,12 +3026,12 @@ static const struct { ...@@ -3000,12 +3026,12 @@ static const struct {
{ 255, -1 }, /* (288) literal ::= NULL */ { 255, -1 }, /* (288) literal ::= NULL */
{ 255, -1 }, /* (289) literal ::= NK_QUESTION */ { 255, -1 }, /* (289) literal ::= NK_QUESTION */
{ 296, -1 }, /* (290) duration_literal ::= NK_VARIABLE */ { 296, -1 }, /* (290) duration_literal ::= NK_VARIABLE */
{ 323, -1 }, /* (291) signed ::= NK_INTEGER */ { 322, -1 }, /* (291) signed ::= NK_INTEGER */
{ 323, -2 }, /* (292) signed ::= NK_PLUS NK_INTEGER */ { 322, -2 }, /* (292) signed ::= NK_PLUS NK_INTEGER */
{ 323, -2 }, /* (293) signed ::= NK_MINUS NK_INTEGER */ { 322, -2 }, /* (293) signed ::= NK_MINUS NK_INTEGER */
{ 323, -1 }, /* (294) signed ::= NK_FLOAT */ { 322, -1 }, /* (294) signed ::= NK_FLOAT */
{ 323, -2 }, /* (295) signed ::= NK_PLUS NK_FLOAT */ { 322, -2 }, /* (295) signed ::= NK_PLUS NK_FLOAT */
{ 323, -2 }, /* (296) signed ::= NK_MINUS NK_FLOAT */ { 322, -2 }, /* (296) signed ::= NK_MINUS NK_FLOAT */
{ 285, -1 }, /* (297) signed_literal ::= signed */ { 285, -1 }, /* (297) signed_literal ::= signed */
{ 285, -1 }, /* (298) signed_literal ::= NK_STRING */ { 285, -1 }, /* (298) signed_literal ::= NK_STRING */
{ 285, -1 }, /* (299) signed_literal ::= NK_BOOL */ { 285, -1 }, /* (299) signed_literal ::= NK_BOOL */
...@@ -3013,8 +3039,8 @@ static const struct { ...@@ -3013,8 +3039,8 @@ static const struct {
{ 285, -1 }, /* (301) signed_literal ::= duration_literal */ { 285, -1 }, /* (301) signed_literal ::= duration_literal */
{ 285, -1 }, /* (302) signed_literal ::= NULL */ { 285, -1 }, /* (302) signed_literal ::= NULL */
{ 285, -1 }, /* (303) signed_literal ::= literal_func */ { 285, -1 }, /* (303) signed_literal ::= literal_func */
{ 288, -1 }, /* (304) literal_list ::= signed_literal */ { 324, -1 }, /* (304) literal_list ::= signed_literal */
{ 288, -3 }, /* (305) literal_list ::= literal_list NK_COMMA signed_literal */ { 324, -3 }, /* (305) literal_list ::= literal_list NK_COMMA signed_literal */
{ 263, -1 }, /* (306) db_name ::= NK_ID */ { 263, -1 }, /* (306) db_name ::= NK_ID */
{ 291, -1 }, /* (307) table_name ::= NK_ID */ { 291, -1 }, /* (307) table_name ::= NK_ID */
{ 283, -1 }, /* (308) column_name ::= NK_ID */ { 283, -1 }, /* (308) column_name ::= NK_ID */
...@@ -3023,9 +3049,9 @@ static const struct { ...@@ -3023,9 +3049,9 @@ static const struct {
{ 326, -1 }, /* (311) column_alias ::= NK_ID */ { 326, -1 }, /* (311) column_alias ::= NK_ID */
{ 257, -1 }, /* (312) user_name ::= NK_ID */ { 257, -1 }, /* (312) user_name ::= NK_ID */
{ 304, -1 }, /* (313) index_name ::= NK_ID */ { 304, -1 }, /* (313) index_name ::= NK_ID */
{ 312, -1 }, /* (314) topic_name ::= NK_ID */ { 311, -1 }, /* (314) topic_name ::= NK_ID */
{ 319, -1 }, /* (315) stream_name ::= NK_ID */ { 318, -1 }, /* (315) stream_name ::= NK_ID */
{ 314, -1 }, /* (316) cgroup_name ::= NK_ID */ { 313, -1 }, /* (316) cgroup_name ::= NK_ID */
{ 327, -1 }, /* (317) expression ::= literal */ { 327, -1 }, /* (317) expression ::= literal */
{ 327, -1 }, /* (318) expression ::= pseudo_column */ { 327, -1 }, /* (318) expression ::= pseudo_column */
{ 327, -1 }, /* (319) expression ::= column_reference */ { 327, -1 }, /* (319) expression ::= column_reference */
...@@ -3042,8 +3068,8 @@ static const struct { ...@@ -3042,8 +3068,8 @@ static const struct {
{ 327, -3 }, /* (330) expression ::= column_reference NK_ARROW NK_STRING */ { 327, -3 }, /* (330) expression ::= column_reference NK_ARROW NK_STRING */
{ 327, -3 }, /* (331) expression ::= expression NK_BITAND expression */ { 327, -3 }, /* (331) expression ::= expression NK_BITAND expression */
{ 327, -3 }, /* (332) expression ::= expression NK_BITOR expression */ { 327, -3 }, /* (332) expression ::= expression NK_BITOR expression */
{ 310, -1 }, /* (333) expression_list ::= expression */ { 288, -1 }, /* (333) expression_list ::= expression */
{ 310, -3 }, /* (334) expression_list ::= expression_list NK_COMMA expression */ { 288, -3 }, /* (334) expression_list ::= expression_list NK_COMMA expression */
{ 329, -1 }, /* (335) column_reference ::= column_name */ { 329, -1 }, /* (335) column_reference ::= column_name */
{ 329, -3 }, /* (336) column_reference ::= table_name NK_DOT column_name */ { 329, -3 }, /* (336) column_reference ::= table_name NK_DOT column_name */
{ 328, -1 }, /* (337) pseudo_column ::= ROWTS */ { 328, -1 }, /* (337) pseudo_column ::= ROWTS */
...@@ -3058,8 +3084,8 @@ static const struct { ...@@ -3058,8 +3084,8 @@ static const struct {
{ 330, -4 }, /* (346) function_expression ::= star_func NK_LP star_func_para_list NK_RP */ { 330, -4 }, /* (346) function_expression ::= star_func NK_LP star_func_para_list NK_RP */
{ 330, -6 }, /* (347) function_expression ::= CAST NK_LP expression AS type_name NK_RP */ { 330, -6 }, /* (347) function_expression ::= CAST NK_LP expression AS type_name NK_RP */
{ 330, -1 }, /* (348) function_expression ::= literal_func */ { 330, -1 }, /* (348) function_expression ::= literal_func */
{ 324, -3 }, /* (349) literal_func ::= noarg_func NK_LP NK_RP */ { 323, -3 }, /* (349) literal_func ::= noarg_func NK_LP NK_RP */
{ 324, -1 }, /* (350) literal_func ::= NOW */ { 323, -1 }, /* (350) literal_func ::= NOW */
{ 334, -1 }, /* (351) noarg_func ::= NOW */ { 334, -1 }, /* (351) noarg_func ::= NOW */
{ 334, -1 }, /* (352) noarg_func ::= TODAY */ { 334, -1 }, /* (352) noarg_func ::= TODAY */
{ 334, -1 }, /* (353) noarg_func ::= TIMEZONE */ { 334, -1 }, /* (353) noarg_func ::= TIMEZONE */
...@@ -3136,8 +3162,8 @@ static const struct { ...@@ -3136,8 +3162,8 @@ static const struct {
{ 363, -2 }, /* (424) select_item ::= common_expression column_alias */ { 363, -2 }, /* (424) select_item ::= common_expression column_alias */
{ 363, -3 }, /* (425) select_item ::= common_expression AS column_alias */ { 363, -3 }, /* (425) select_item ::= common_expression AS column_alias */
{ 363, -3 }, /* (426) select_item ::= table_name NK_DOT NK_STAR */ { 363, -3 }, /* (426) select_item ::= table_name NK_DOT NK_STAR */
{ 322, 0 }, /* (427) where_clause_opt ::= */ { 321, 0 }, /* (427) where_clause_opt ::= */
{ 322, -2 }, /* (428) where_clause_opt ::= WHERE search_condition */ { 321, -2 }, /* (428) where_clause_opt ::= WHERE search_condition */
{ 356, 0 }, /* (429) partition_by_clause_opt ::= */ { 356, 0 }, /* (429) partition_by_clause_opt ::= */
{ 356, -3 }, /* (430) partition_by_clause_opt ::= PARTITION BY expression_list */ { 356, -3 }, /* (430) partition_by_clause_opt ::= PARTITION BY expression_list */
{ 360, 0 }, /* (431) twindow_clause_opt ::= */ { 360, 0 }, /* (431) twindow_clause_opt ::= */
...@@ -3165,7 +3191,7 @@ static const struct { ...@@ -3165,7 +3191,7 @@ static const struct {
{ 357, -6 }, /* (453) range_opt ::= RANGE NK_LP expression NK_COMMA expression NK_RP */ { 357, -6 }, /* (453) range_opt ::= RANGE NK_LP expression NK_COMMA expression NK_RP */
{ 358, 0 }, /* (454) every_opt ::= */ { 358, 0 }, /* (454) every_opt ::= */
{ 358, -4 }, /* (455) every_opt ::= EVERY NK_LP duration_literal NK_RP */ { 358, -4 }, /* (455) every_opt ::= EVERY NK_LP duration_literal NK_RP */
{ 313, -4 }, /* (456) query_expression ::= query_expression_body order_by_clause_opt slimit_clause_opt limit_clause_opt */ { 312, -4 }, /* (456) query_expression ::= query_expression_body order_by_clause_opt slimit_clause_opt limit_clause_opt */
{ 366, -1 }, /* (457) query_expression_body ::= query_primary */ { 366, -1 }, /* (457) query_expression_body ::= query_primary */
{ 366, -4 }, /* (458) query_expression_body ::= query_expression_body UNION ALL query_expression_body */ { 366, -4 }, /* (458) query_expression_body ::= query_expression_body UNION ALL query_expression_body */
{ 366, -3 }, /* (459) query_expression_body ::= query_expression_body UNION query_expression_body */ { 366, -3 }, /* (459) query_expression_body ::= query_expression_body UNION query_expression_body */
...@@ -3660,10 +3686,12 @@ static YYACTIONTYPE yy_reduce( ...@@ -3660,10 +3686,12 @@ static YYACTIONTYPE yy_reduce(
{ pCxt->pRootNode = createDropSuperTableStmt(pCxt, yymsp[-1].minor.yy737, yymsp[0].minor.yy212); } { pCxt->pRootNode = createDropSuperTableStmt(pCxt, yymsp[-1].minor.yy737, yymsp[0].minor.yy212); }
break; break;
case 114: /* cmd ::= ALTER TABLE alter_table_clause */ case 114: /* cmd ::= ALTER TABLE alter_table_clause */
case 115: /* cmd ::= ALTER STABLE alter_table_clause */ yytestcase(yyruleno==115);
case 281: /* cmd ::= query_expression */ yytestcase(yyruleno==281); case 281: /* cmd ::= query_expression */ yytestcase(yyruleno==281);
{ pCxt->pRootNode = yymsp[0].minor.yy212; } { pCxt->pRootNode = yymsp[0].minor.yy212; }
break; break;
case 115: /* cmd ::= ALTER STABLE alter_table_clause */
{ pCxt->pRootNode = setAlterSuperTableType(yymsp[0].minor.yy212); }
break;
case 116: /* alter_table_clause ::= full_table_name alter_table_options */ case 116: /* alter_table_clause ::= full_table_name alter_table_options */
{ yylhsminor.yy212 = createAlterTableModifyOptions(pCxt, yymsp[-1].minor.yy212, yymsp[0].minor.yy212); } { yylhsminor.yy212 = createAlterTableModifyOptions(pCxt, yymsp[-1].minor.yy212, yymsp[0].minor.yy212); }
yymsp[-1].minor.yy212 = yylhsminor.yy212; yymsp[-1].minor.yy212 = yylhsminor.yy212;
...@@ -3709,7 +3737,7 @@ static YYACTIONTYPE yy_reduce( ...@@ -3709,7 +3737,7 @@ static YYACTIONTYPE yy_reduce(
{ yylhsminor.yy424 = addNodeToList(pCxt, yymsp[-1].minor.yy424, yymsp[0].minor.yy212); } { yylhsminor.yy424 = addNodeToList(pCxt, yymsp[-1].minor.yy424, yymsp[0].minor.yy212); }
yymsp[-1].minor.yy424 = yylhsminor.yy424; yymsp[-1].minor.yy424 = yylhsminor.yy424;
break; break;
case 128: /* create_subtable_clause ::= not_exists_opt full_table_name USING full_table_name specific_tags_opt TAGS NK_LP literal_list NK_RP table_options */ case 128: /* create_subtable_clause ::= not_exists_opt full_table_name USING full_table_name specific_tags_opt TAGS NK_LP expression_list NK_RP table_options */
{ yylhsminor.yy212 = createCreateSubTableClause(pCxt, yymsp[-9].minor.yy737, yymsp[-8].minor.yy212, yymsp[-6].minor.yy212, yymsp[-5].minor.yy424, yymsp[-2].minor.yy424, yymsp[0].minor.yy212); } { yylhsminor.yy212 = createCreateSubTableClause(pCxt, yymsp[-9].minor.yy737, yymsp[-8].minor.yy212, yymsp[-6].minor.yy212, yymsp[-5].minor.yy424, yymsp[-2].minor.yy424, yymsp[0].minor.yy212); }
yymsp[-9].minor.yy212 = yylhsminor.yy212; yymsp[-9].minor.yy212 = yylhsminor.yy212;
break; break;
......
...@@ -77,8 +77,6 @@ TEST_F(ParserInitialATest, alterLocal) { ...@@ -77,8 +77,6 @@ TEST_F(ParserInitialATest, alterLocal) {
clearAlterLocal(); clearAlterLocal();
} }
// todo ALTER stable
/* /*
* ALTER TABLE [db_name.]tb_name alter_table_clause * ALTER TABLE [db_name.]tb_name alter_table_clause
* *
...@@ -157,7 +155,7 @@ TEST_F(ParserInitialATest, alterSTable) { ...@@ -157,7 +155,7 @@ TEST_F(ParserInitialATest, alterSTable) {
}; };
setCheckDdlFunc([&](const SQuery* pQuery, ParserStage stage) { setCheckDdlFunc([&](const SQuery* pQuery, ParserStage stage) {
ASSERT_EQ(nodeType(pQuery->pRoot), QUERY_NODE_ALTER_TABLE_STMT); ASSERT_EQ(nodeType(pQuery->pRoot), QUERY_NODE_ALTER_SUPER_TABLE_STMT);
SMAlterStbReq req = {0}; SMAlterStbReq req = {0};
ASSERT_EQ(tDeserializeSMAlterStbReq(pQuery->pCmdMsg->pMsg, pQuery->pCmdMsg->msgLen, &req), TSDB_CODE_SUCCESS); ASSERT_EQ(tDeserializeSMAlterStbReq(pQuery->pCmdMsg->pMsg, pQuery->pCmdMsg->msgLen, &req), TSDB_CODE_SUCCESS);
ASSERT_EQ(std::string(req.name), std::string(expect.name)); ASSERT_EQ(std::string(req.name), std::string(expect.name));
...@@ -181,44 +179,44 @@ TEST_F(ParserInitialATest, alterSTable) { ...@@ -181,44 +179,44 @@ TEST_F(ParserInitialATest, alterSTable) {
}); });
// setAlterStbReqFunc("st1", TSDB_ALTER_TABLE_UPDATE_OPTIONS, 0, nullptr, 0, 0, nullptr, nullptr, 10); // setAlterStbReqFunc("st1", TSDB_ALTER_TABLE_UPDATE_OPTIONS, 0, nullptr, 0, 0, nullptr, nullptr, 10);
// run("ALTER TABLE st1 TTL 10"); // run("ALTER STABLE st1 TTL 10");
// clearAlterStbReq(); // clearAlterStbReq();
setAlterStbReqFunc("st1", TSDB_ALTER_TABLE_UPDATE_OPTIONS, 0, nullptr, 0, 0, nullptr, "test"); setAlterStbReqFunc("st1", TSDB_ALTER_TABLE_UPDATE_OPTIONS, 0, nullptr, 0, 0, nullptr, "test");
run("ALTER TABLE st1 COMMENT 'test'"); run("ALTER STABLE st1 COMMENT 'test'");
clearAlterStbReq(); clearAlterStbReq();
setAlterStbReqFunc("st1", TSDB_ALTER_TABLE_ADD_COLUMN, 1, "cc1", TSDB_DATA_TYPE_BIGINT); setAlterStbReqFunc("st1", TSDB_ALTER_TABLE_ADD_COLUMN, 1, "cc1", TSDB_DATA_TYPE_BIGINT);
run("ALTER TABLE st1 ADD COLUMN cc1 BIGINT"); run("ALTER STABLE st1 ADD COLUMN cc1 BIGINT");
clearAlterStbReq(); clearAlterStbReq();
setAlterStbReqFunc("st1", TSDB_ALTER_TABLE_DROP_COLUMN, 1, "c1"); setAlterStbReqFunc("st1", TSDB_ALTER_TABLE_DROP_COLUMN, 1, "c1");
run("ALTER TABLE st1 DROP COLUMN c1"); run("ALTER STABLE st1 DROP COLUMN c1");
clearAlterStbReq(); clearAlterStbReq();
setAlterStbReqFunc("st1", TSDB_ALTER_TABLE_UPDATE_COLUMN_BYTES, 1, "c2", TSDB_DATA_TYPE_VARCHAR, setAlterStbReqFunc("st1", TSDB_ALTER_TABLE_UPDATE_COLUMN_BYTES, 1, "c2", TSDB_DATA_TYPE_VARCHAR,
30 + VARSTR_HEADER_SIZE); 30 + VARSTR_HEADER_SIZE);
run("ALTER TABLE st1 MODIFY COLUMN c2 VARCHAR(30)"); run("ALTER STABLE st1 MODIFY COLUMN c2 VARCHAR(30)");
clearAlterStbReq(); clearAlterStbReq();
// setAlterStbReqFunc("st1", TSDB_ALTER_TABLE_UPDATE_COLUMN_NAME, 2, "c1", 0, 0, "cc1"); // setAlterStbReqFunc("st1", TSDB_ALTER_TABLE_UPDATE_COLUMN_NAME, 2, "c1", 0, 0, "cc1");
// run("ALTER TABLE st1 RENAME COLUMN c1 cc1"); // run("ALTER STABLE st1 RENAME COLUMN c1 cc1");
setAlterStbReqFunc("st1", TSDB_ALTER_TABLE_ADD_TAG, 1, "tag11", TSDB_DATA_TYPE_BIGINT); setAlterStbReqFunc("st1", TSDB_ALTER_TABLE_ADD_TAG, 1, "tag11", TSDB_DATA_TYPE_BIGINT);
run("ALTER TABLE st1 ADD TAG tag11 BIGINT"); run("ALTER STABLE st1 ADD TAG tag11 BIGINT");
clearAlterStbReq(); clearAlterStbReq();
setAlterStbReqFunc("st1", TSDB_ALTER_TABLE_DROP_TAG, 1, "tag1"); setAlterStbReqFunc("st1", TSDB_ALTER_TABLE_DROP_TAG, 1, "tag1");
run("ALTER TABLE st1 DROP TAG tag1"); run("ALTER STABLE st1 DROP TAG tag1");
clearAlterStbReq(); clearAlterStbReq();
setAlterStbReqFunc("st1", TSDB_ALTER_TABLE_UPDATE_TAG_BYTES, 1, "tag2", TSDB_DATA_TYPE_VARCHAR, setAlterStbReqFunc("st1", TSDB_ALTER_TABLE_UPDATE_TAG_BYTES, 1, "tag2", TSDB_DATA_TYPE_VARCHAR,
30 + VARSTR_HEADER_SIZE); 30 + VARSTR_HEADER_SIZE);
run("ALTER TABLE st1 MODIFY TAG tag2 VARCHAR(30)"); run("ALTER STABLE st1 MODIFY TAG tag2 VARCHAR(30)");
clearAlterStbReq(); clearAlterStbReq();
setAlterStbReqFunc("st1", TSDB_ALTER_TABLE_UPDATE_TAG_NAME, 2, "tag1", 0, 0, "tag11"); setAlterStbReqFunc("st1", TSDB_ALTER_TABLE_UPDATE_TAG_NAME, 2, "tag1", 0, 0, "tag11");
run("ALTER TABLE st1 RENAME TAG tag1 tag11"); run("ALTER STABLE st1 RENAME TAG tag1 tag11");
clearAlterStbReq(); clearAlterStbReq();
// todo // todo
...@@ -228,11 +226,11 @@ TEST_F(ParserInitialATest, alterSTable) { ...@@ -228,11 +226,11 @@ TEST_F(ParserInitialATest, alterSTable) {
TEST_F(ParserInitialATest, alterSTableSemanticCheck) { TEST_F(ParserInitialATest, alterSTableSemanticCheck) {
useDb("root", "test"); useDb("root", "test");
run("ALTER TABLE st1 RENAME COLUMN c1 cc1", TSDB_CODE_PAR_INVALID_ALTER_TABLE); run("ALTER STABLE st1 RENAME COLUMN c1 cc1", TSDB_CODE_PAR_INVALID_ALTER_TABLE);
run("ALTER TABLE st1 MODIFY COLUMN c2 NCHAR(10)", TSDB_CODE_PAR_INVALID_MODIFY_COL); run("ALTER STABLE st1 MODIFY COLUMN c2 NCHAR(10)", TSDB_CODE_PAR_INVALID_MODIFY_COL);
run("ALTER TABLE st1 MODIFY TAG tag2 NCHAR(10)", TSDB_CODE_PAR_INVALID_MODIFY_COL); run("ALTER STABLE st1 MODIFY TAG tag2 NCHAR(10)", TSDB_CODE_PAR_INVALID_MODIFY_COL);
} }
TEST_F(ParserInitialATest, alterTable) { TEST_F(ParserInitialATest, alterTable) {
......
...@@ -720,7 +720,7 @@ static int32_t pushDownCondOptDealAgg(SOptimizeContext* pCxt, SAggLogicNode* pAg ...@@ -720,7 +720,7 @@ static int32_t pushDownCondOptDealAgg(SOptimizeContext* pCxt, SAggLogicNode* pAg
// TODO: remove it after full implementation of pushing down to child // TODO: remove it after full implementation of pushing down to child
if (1 != LIST_LENGTH(pAgg->node.pChildren) || if (1 != LIST_LENGTH(pAgg->node.pChildren) ||
QUERY_NODE_LOGIC_PLAN_SCAN != nodeType(nodesListGetNode(pAgg->node.pChildren, 0)) && QUERY_NODE_LOGIC_PLAN_SCAN != nodeType(nodesListGetNode(pAgg->node.pChildren, 0)) &&
QUERY_NODE_LOGIC_PLAN_PROJECT != nodeType(nodesListGetNode(pAgg->node.pChildren, 0))) { QUERY_NODE_LOGIC_PLAN_PROJECT != nodeType(nodesListGetNode(pAgg->node.pChildren, 0))) {
return TSDB_CODE_SUCCESS; return TSDB_CODE_SUCCESS;
} }
...@@ -1251,7 +1251,7 @@ static SNode* partTagsCreateWrapperFunc(const char* pFuncName, SNode* pNode) { ...@@ -1251,7 +1251,7 @@ static SNode* partTagsCreateWrapperFunc(const char* pFuncName, SNode* pNode) {
} }
strcpy(pFunc->functionName, pFuncName); strcpy(pFunc->functionName, pFuncName);
if (QUERY_NODE_COLUMN == nodeType(pNode)) { if (QUERY_NODE_COLUMN == nodeType(pNode) && COLUMN_TYPE_TBNAME != ((SColumnNode*)pNode)->colType) {
SColumnNode* pCol = (SColumnNode*)pNode; SColumnNode* pCol = (SColumnNode*)pNode;
partTagsSetAlias(pFunc->node.aliasName, sizeof(pFunc->node.aliasName), pCol->tableAlias, pCol->colName); partTagsSetAlias(pFunc->node.aliasName, sizeof(pFunc->node.aliasName), pCol->tableAlias, pCol->colName);
} else { } else {
...@@ -1868,6 +1868,8 @@ static EDealRes mergeProjectionsExpr(SNode** pNode, void* pContext) { ...@@ -1868,6 +1868,8 @@ static EDealRes mergeProjectionsExpr(SNode** pNode, void* pContext) {
pCxt->errCode = terrno; pCxt->errCode = terrno;
return DEAL_RES_ERROR; return DEAL_RES_ERROR;
} }
snprintf(((SExprNode*)pExpr)->aliasName, sizeof(((SExprNode*)pExpr)->aliasName), "%s",
((SExprNode*)*pNode)->aliasName);
nodesDestroyNode(*pNode); nodesDestroyNode(*pNode);
*pNode = pExpr; *pNode = pExpr;
} }
......
...@@ -986,6 +986,10 @@ static bool unionIsChildSubplan(SLogicNode* pLogicNode, int32_t groupId) { ...@@ -986,6 +986,10 @@ static bool unionIsChildSubplan(SLogicNode* pLogicNode, int32_t groupId) {
return ((SExchangeLogicNode*)pLogicNode)->srcGroupId == groupId; return ((SExchangeLogicNode*)pLogicNode)->srcGroupId == groupId;
} }
if (QUERY_NODE_LOGIC_PLAN_MERGE == nodeType(pLogicNode)) {
return ((SMergeLogicNode*)pLogicNode)->srcGroupId == groupId;
}
SNode* pChild; SNode* pChild;
FOREACH(pChild, pLogicNode->pChildren) { FOREACH(pChild, pLogicNode->pChildren) {
bool isChild = unionIsChildSubplan((SLogicNode*)pChild, groupId); bool isChild = unionIsChildSubplan((SLogicNode*)pChild, groupId);
......
...@@ -68,6 +68,8 @@ TEST_F(PlanOptimizeTest, PartitionTags) { ...@@ -68,6 +68,8 @@ TEST_F(PlanOptimizeTest, PartitionTags) {
run("SELECT SUM(c1), tag1 FROM st1 GROUP BY tag1"); run("SELECT SUM(c1), tag1 FROM st1 GROUP BY tag1");
run("SELECT SUM(c1), tag1 + 10 FROM st1 GROUP BY tag1 + 10"); run("SELECT SUM(c1), tag1 + 10 FROM st1 GROUP BY tag1 + 10");
run("SELECT SUM(c1), tbname FROM st1 GROUP BY tbname");
} }
TEST_F(PlanOptimizeTest, eliminateProjection) { TEST_F(PlanOptimizeTest, eliminateProjection) {
......
...@@ -97,7 +97,15 @@ TEST_F(PlanSetOpTest, unionSubquery) { ...@@ -97,7 +97,15 @@ TEST_F(PlanSetOpTest, unionSubquery) {
run("SELECT * FROM (SELECT c1, c2 FROM t1 UNION SELECT c1, c2 FROM t1)"); run("SELECT * FROM (SELECT c1, c2 FROM t1 UNION SELECT c1, c2 FROM t1)");
} }
TEST_F(PlanSetOpTest, bug001) { TEST_F(PlanSetOpTest, unionWithSubquery) {
useDb("root", "test");
run("SELECT c1 FROM (SELECT c1 FROM st1) UNION SELECT c2 FROM (SELECT c1 AS c2 FROM st2)");
run("SELECT c1 FROM (SELECT c1 FROM st1 ORDER BY c2) UNION SELECT c1 FROM (SELECT c1 FROM st2)");
}
TEST_F(PlanSetOpTest, unionDataTypeConversion) {
useDb("root", "test"); useDb("root", "test");
run("SELECT c2 FROM t1 WHERE c1 IS NOT NULL GROUP BY c2 " run("SELECT c2 FROM t1 WHERE c1 IS NOT NULL GROUP BY c2 "
......
...@@ -566,7 +566,7 @@ class TDTestCase: ...@@ -566,7 +566,7 @@ class TDTestCase:
tdSql.checkRows(3) tdSql.checkRows(3)
tdSql.query("select bottom(dataint,100) from jsons1 where jtag->'tag1'>1") tdSql.query("select bottom(dataint,100) from jsons1 where jtag->'tag1'>1")
tdSql.checkRows(3) tdSql.checkRows(3)
tdSql.query("select percentile(dataint,20) from jsons1 where jtag->'tag1'>1") #tdSql.query("select percentile(dataint,20) from jsons1 where jtag->'tag1'>1")
tdSql.query("select apercentile(dataint, 50) from jsons1 where jtag->'tag1'>1") tdSql.query("select apercentile(dataint, 50) from jsons1 where jtag->'tag1'>1")
tdSql.checkData(0, 0, 1.5) tdSql.checkData(0, 0, 1.5)
# tdSql.query("select last_row(dataint) from jsons1 where jtag->'tag1'>1") # tdSql.query("select last_row(dataint) from jsons1 where jtag->'tag1'>1")
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册