提交 a0d3fa46 编写于 作者: H Haojun Liao

[td-10564] refactor code and fix bug in parse sql.

上级 6fedb60e
...@@ -235,11 +235,12 @@ typedef struct SMultiFunctionsDesc { ...@@ -235,11 +235,12 @@ typedef struct SMultiFunctionsDesc {
bool hasFilter; bool hasFilter;
bool onlyTagQuery; bool onlyTagQuery;
bool orderProjectQuery; bool orderProjectQuery;
bool stateWindow;
bool globalMerge; bool globalMerge;
bool multigroupResult; bool multigroupResult;
bool blockDistribution; bool blockDistribution;
bool stateWindow;
bool timewindow; bool timewindow;
bool sessionWindow;
bool topbotQuery; bool topbotQuery;
bool interpQuery; bool interpQuery;
bool distinct; bool distinct;
......
...@@ -37,9 +37,14 @@ enum SQL_NODE_TYPE { ...@@ -37,9 +37,14 @@ enum SQL_NODE_TYPE {
SQL_NODE_EXPR = 4, SQL_NODE_EXPR = 4,
}; };
enum SQL_NODE_FROM_TYPE { enum SQL_FROM_NODE_TYPE {
SQL_NODE_FROM_SUBQUERY = 1, SQL_FROM_NODE_SUBQUERY = 1,
SQL_NODE_FROM_TABLELIST = 2, SQL_FROM_NODE_TABLES = 2,
};
enum SQL_UNION_TYPE {
SQL_TYPE_UNIONALL = 1,
SQL_TYPE_UNION = 2,
}; };
extern char tTokenTypeSwitcher[13]; extern char tTokenTypeSwitcher[13];
...@@ -79,8 +84,8 @@ typedef struct SWindowStateVal { ...@@ -79,8 +84,8 @@ typedef struct SWindowStateVal {
struct SRelationInfo; struct SRelationInfo;
typedef struct SSqlNode { typedef struct SSqlNode {
struct SArray *pSelNodeList; // select clause
struct SRelationInfo *from; // from clause SArray<SSqlNode> struct SRelationInfo *from; // from clause SArray<SSqlNode>
struct SArray *pSelNodeList; // select clause
struct tSqlExpr *pWhere; // where clause [optional] struct tSqlExpr *pWhere; // where clause [optional]
SArray *pGroupby; // groupby clause, only for tags[optional], SArray<SListItem> SArray *pGroupby; // groupby clause, only for tags[optional], SArray<SListItem>
SArray *pSortOrder; // orderby [optional], SArray<SListItem> SArray *pSortOrder; // orderby [optional], SArray<SListItem>
...@@ -95,18 +100,23 @@ typedef struct SSqlNode { ...@@ -95,18 +100,23 @@ typedef struct SSqlNode {
struct tSqlExpr *pHaving; // having clause [optional] struct tSqlExpr *pHaving; // having clause [optional]
} SSqlNode; } SSqlNode;
typedef struct SRelElementPair { typedef struct SSubclause {
int32_t unionType;
SArray *node;
} SSubclause;
typedef struct SRelElement {
union { union {
SToken tableName; SToken tableName;
SArray *pSubquery; SSubclause *pSubquery;
}; };
SToken aliasName; SToken aliasName;
} SRelElementPair; } SRelElement;
typedef struct SRelationInfo { typedef struct SRelationInfo {
int32_t type; // nested query|table name list int32_t type; // nested query|table name list
SArray *list; // SArray<SRelElementPair> SArray *list; // SArray<SRelElement>
} SRelationInfo; } SRelationInfo;
typedef struct SCreatedTableInfo { typedef struct SCreatedTableInfo {
...@@ -216,7 +226,7 @@ typedef struct SMiscInfo { ...@@ -216,7 +226,7 @@ typedef struct SMiscInfo {
typedef struct SSqlInfo { typedef struct SSqlInfo {
int32_t type; int32_t type;
bool valid; bool valid;
SArray *list; // todo refactor SSubclause sub;
char msg[256]; char msg[256];
SArray *funcs; SArray *funcs;
union { union {
...@@ -257,7 +267,7 @@ SArray *tListItemAppendToken(SArray *pList, SToken *pAliasToken, uint8_t sortOrd ...@@ -257,7 +267,7 @@ SArray *tListItemAppendToken(SArray *pList, SToken *pAliasToken, uint8_t sortOrd
SRelationInfo *setTableNameList(SRelationInfo *pRelationInfo, SToken *pName, SToken *pAlias); SRelationInfo *setTableNameList(SRelationInfo *pRelationInfo, SToken *pName, SToken *pAlias);
void * destroyRelationInfo(SRelationInfo *pFromInfo); void * destroyRelationInfo(SRelationInfo *pFromInfo);
SRelationInfo *addSubquery(SRelationInfo *pRelationInfo, SArray *pSub, SToken *pAlias); SRelationInfo *addSubquery(SRelationInfo *pRelationInfo, SSubclause *pSub, SToken *pAlias);
// sql expr leaf node // sql expr leaf node
tSqlExpr *tSqlExprCreateIdValue(SToken *pToken, int32_t optrType); tSqlExpr *tSqlExprCreateIdValue(SToken *pToken, int32_t optrType);
...@@ -285,13 +295,13 @@ SAlterTableInfo * tSetAlterTableInfo(SToken *pTableName, SArray *pCols, SArray * ...@@ -285,13 +295,13 @@ SAlterTableInfo * tSetAlterTableInfo(SToken *pTableName, SArray *pCols, SArray *
SCreatedTableInfo createNewChildTableInfo(SToken *pTableName, SArray *pTagNames, SArray *pTagVals, SToken *pToken, SCreatedTableInfo createNewChildTableInfo(SToken *pTableName, SArray *pTagNames, SArray *pTagVals, SToken *pToken,
SToken *igExists); SToken *igExists);
void destroyAllSqlNode(SArray *pSqlNode); void destroyAllSqlNode(struct SSubclause *pSqlNode);
void destroySqlNode(SSqlNode *pSql); void destroySqlNode(SSqlNode *pSql);
void freeCreateTableInfo(void* p); void freeCreateTableInfo(void* p);
SSqlInfo *setSqlInfo(SSqlInfo *pInfo, void *pSqlExprInfo, SToken *pTableName, int32_t type); SSqlInfo *setSqlInfo(SSqlInfo *pInfo, void *pSqlExprInfo, SToken *pTableName, int32_t type);
SArray *setSubclause(SArray *pList, void *pSqlNode); SSubclause* setSubclause(SSubclause* sub, void *pSqlNode);
SArray *appendSelectClause(SArray *pList, void *pSubclause); SSubclause* appendSelectClause(SSubclause *sub, int32_t unionType, void *pSubclause);
void setCreatedTableName(SSqlInfo *pInfo, SToken *pTableNameToken, SToken *pIfNotExists); void setCreatedTableName(SSqlInfo *pInfo, SToken *pTableNameToken, SToken *pIfNotExists);
void* destroyCreateTableSql(SCreateTableSql* pCreate); void* destroyCreateTableSql(SCreateTableSql* pCreate);
......
...@@ -487,11 +487,11 @@ select(A) ::= SELECT(T) selcollist(W) from(X) where_opt(Y) interval_option(K) sl ...@@ -487,11 +487,11 @@ select(A) ::= SELECT(T) selcollist(W) from(X) where_opt(Y) interval_option(K) sl
select(A) ::= LP select(B) RP. {A = B;} select(A) ::= LP select(B) RP. {A = B;}
%type union {SArray*} %type union {SSubclause*}
%destructor union {destroyAllSqlNode($$);} %destructor union {destroyAllSqlNode($$);}
union(Y) ::= select(X). { Y = setSubclause(NULL, X); } union(Y) ::= select(X). { Y = setSubclause(NULL, X); }
union(Y) ::= union(Z) UNION ALL select(X). { Y = appendSelectClause(Z, X); } union(Y) ::= union(Z) UNION ALL select(X). { Y = appendSelectClause(Z, SQL_TYPE_UNIONALL, X); }
union(Y) ::= union(Z) UNION select(X). { Y = appendSelectClause(Z, SQL_TYPE_UNION, X); }
cmd ::= union(X). { setSqlInfo(pInfo, X, NULL, TSDB_SQL_SELECT); } cmd ::= union(X). { setSqlInfo(pInfo, X, NULL, TSDB_SQL_SELECT); }
// Support for the SQL exprssion without from & where subclauses, e.g., // Support for the SQL exprssion without from & where subclauses, e.g.,
......
...@@ -72,11 +72,11 @@ SArray *tListItemAppendToken(SArray *pList, SToken *pAliasToken, uint8_t sortOrd ...@@ -72,11 +72,11 @@ SArray *tListItemAppendToken(SArray *pList, SToken *pAliasToken, uint8_t sortOrd
SRelationInfo *setTableNameList(SRelationInfo *pRelationInfo, SToken *pName, SToken *pAlias) { SRelationInfo *setTableNameList(SRelationInfo *pRelationInfo, SToken *pName, SToken *pAlias) {
if (pRelationInfo == NULL) { if (pRelationInfo == NULL) {
pRelationInfo = calloc(1, sizeof(SRelationInfo)); pRelationInfo = calloc(1, sizeof(SRelationInfo));
pRelationInfo->list = taosArrayInit(4, sizeof(SRelElementPair)); pRelationInfo->list = taosArrayInit(4, sizeof(SRelElement));
} }
pRelationInfo->type = SQL_NODE_FROM_TABLELIST; pRelationInfo->type = SQL_FROM_NODE_TABLES;
SRelElementPair p = {.tableName = *pName}; SRelElement p = {.tableName = *pName};
if (pAlias != NULL) { if (pAlias != NULL) {
p.aliasName = *pAlias; p.aliasName = *pAlias;
} else { } else {
...@@ -92,12 +92,12 @@ void *destroyRelationInfo(SRelationInfo *pRelationInfo) { ...@@ -92,12 +92,12 @@ void *destroyRelationInfo(SRelationInfo *pRelationInfo) {
return NULL; return NULL;
} }
if (pRelationInfo->type == SQL_NODE_FROM_TABLELIST) { if (pRelationInfo->type == SQL_FROM_NODE_TABLES) {
taosArrayDestroy(pRelationInfo->list); taosArrayDestroy(pRelationInfo->list);
} else { } else {
size_t size = taosArrayGetSize(pRelationInfo->list); size_t size = taosArrayGetSize(pRelationInfo->list);
for(int32_t i = 0; i < size; ++i) { for(int32_t i = 0; i < size; ++i) {
SArray* pa = taosArrayGetP(pRelationInfo->list, i); SSubclause* pa = taosArrayGetP(pRelationInfo->list, i);
destroyAllSqlNode(pa); destroyAllSqlNode(pa);
} }
taosArrayDestroy(pRelationInfo->list); taosArrayDestroy(pRelationInfo->list);
...@@ -107,15 +107,15 @@ void *destroyRelationInfo(SRelationInfo *pRelationInfo) { ...@@ -107,15 +107,15 @@ void *destroyRelationInfo(SRelationInfo *pRelationInfo) {
return NULL; return NULL;
} }
SRelationInfo *addSubquery(SRelationInfo *pRelationInfo, SArray *pSub, SToken *pAlias) { SRelationInfo *addSubquery(SRelationInfo *pRelationInfo, SSubclause *pSub, SToken *pAlias) {
if (pRelationInfo == NULL) { if (pRelationInfo == NULL) {
pRelationInfo = calloc(1, sizeof(SRelationInfo)); pRelationInfo = calloc(1, sizeof(SRelationInfo));
pRelationInfo->list = taosArrayInit(4, sizeof(SRelElementPair)); pRelationInfo->list = taosArrayInit(4, sizeof(SRelElement));
} }
pRelationInfo->type = SQL_NODE_FROM_SUBQUERY; pRelationInfo->type = SQL_FROM_NODE_SUBQUERY;
SRelElementPair p = {.pSubquery = pSub}; SRelElement p = {.pSubquery = pSub};
if (pAlias != NULL) { if (pAlias != NULL) {
p.aliasName = *pAlias; p.aliasName = *pAlias;
} else { } else {
...@@ -641,18 +641,18 @@ SCreatedTableInfo createNewChildTableInfo(SToken *pTableName, SArray *pTagNames, ...@@ -641,18 +641,18 @@ SCreatedTableInfo createNewChildTableInfo(SToken *pTableName, SArray *pTagNames,
return info; return info;
} }
void destroyAllSqlNode(SArray *pList) { void destroyAllSqlNode(struct SSubclause *pSub) {
if (pList == NULL) { if (pSub->node == NULL) {
return; return;
} }
size_t size = taosArrayGetSize(pList); size_t size = taosArrayGetSize(pSub->node);
for(int32_t i = 0; i < size; ++i) { for(int32_t i = 0; i < size; ++i) {
SSqlNode *pNode = taosArrayGetP(pList, i); SSqlNode *pNode = taosArrayGetP(pSub->node, i);
destroySqlNode(pNode); destroySqlNode(pNode);
} }
taosArrayDestroy(pList); taosArrayDestroy(pSub->node);
} }
static void freeItem(void *pItem) { static void freeItem(void *pItem) {
...@@ -698,7 +698,8 @@ SSqlInfo* setSqlInfo(SSqlInfo *pInfo, void *pSqlExprInfo, SToken *pTableName, in ...@@ -698,7 +698,8 @@ SSqlInfo* setSqlInfo(SSqlInfo *pInfo, void *pSqlExprInfo, SToken *pTableName, in
pInfo->type = type; pInfo->type = type;
if (type == TSDB_SQL_SELECT) { if (type == TSDB_SQL_SELECT) {
pInfo->list = (SArray*) pSqlExprInfo; pInfo->sub = *(SSubclause*) pSqlExprInfo;
tfree(pSqlExprInfo);
} else { } else {
pInfo->pCreateTableInfo = pSqlExprInfo; pInfo->pCreateTableInfo = pSqlExprInfo;
} }
...@@ -710,18 +711,25 @@ SSqlInfo* setSqlInfo(SSqlInfo *pInfo, void *pSqlExprInfo, SToken *pTableName, in ...@@ -710,18 +711,25 @@ SSqlInfo* setSqlInfo(SSqlInfo *pInfo, void *pSqlExprInfo, SToken *pTableName, in
return pInfo; return pInfo;
} }
SArray* setSubclause(SArray* pList, void *pSqlNode) { SSubclause* setSubclause(SSubclause* pSub, void *pSqlNode) {
if (pList == NULL) { if (pSub == NULL) {
pList = taosArrayInit(1, POINTER_BYTES); pSub = malloc(sizeof(SSubclause));
pSub->unionType = SQL_TYPE_UNIONALL;
pSub->node = taosArrayInit(1, POINTER_BYTES);
} }
taosArrayPush(pList, &pSqlNode); taosArrayPush(pSub->node, &pSqlNode);
return pList; return pSub;
} }
SArray* appendSelectClause(SArray *pList, void *pSubclause) { SSubclause* appendSelectClause(SSubclause *pSub, int32_t type, void *pSubclause) {
taosArrayPush(pList, &pSubclause); taosArrayPush(pSub->node, &pSubclause);
return pList; if (type == SQL_TYPE_UNION) {
pSub->unionType = type;
}
return pSub;
} }
void setCreatedTableName(SSqlInfo *pInfo, SToken *pTableNameToken, SToken *pIfNotExists) { void setCreatedTableName(SSqlInfo *pInfo, SToken *pTableNameToken, SToken *pIfNotExists) {
...@@ -776,7 +784,7 @@ void destroySqlInfo(SSqlInfo *pInfo) { ...@@ -776,7 +784,7 @@ void destroySqlInfo(SSqlInfo *pInfo) {
taosArrayDestroy(pInfo->funcs); taosArrayDestroy(pInfo->funcs);
if (pInfo->type == TSDB_SQL_SELECT) { if (pInfo->type == TSDB_SQL_SELECT) {
destroyAllSqlNode(pInfo->list); destroyAllSqlNode(&pInfo->sub);
} else if (pInfo->type == TSDB_SQL_CREATE_TABLE) { } else if (pInfo->type == TSDB_SQL_CREATE_TABLE) {
pInfo->pCreateTableInfo = destroyCreateTableSql(pInfo->pCreateTableInfo); pInfo->pCreateTableInfo = destroyCreateTableSql(pInfo->pCreateTableInfo);
} else if (pInfo->type == TSDB_SQL_ALTER_TABLE) { } else if (pInfo->type == TSDB_SQL_ALTER_TABLE) {
...@@ -785,7 +793,7 @@ void destroySqlInfo(SSqlInfo *pInfo) { ...@@ -785,7 +793,7 @@ void destroySqlInfo(SSqlInfo *pInfo) {
tfree(pInfo->pAlterInfo->tagData.data); tfree(pInfo->pAlterInfo->tagData.data);
tfree(pInfo->pAlterInfo); tfree(pInfo->pAlterInfo);
} else if (pInfo->type == TSDB_SQL_COMPACT_VNODE) { } else if (pInfo->type == TSDB_SQL_COMPACT_VNODE) {
tSqlExprListDestroy(pInfo->list); tSqlExprListDestroy(pInfo->sub.node);
} else { } else {
if (pInfo->pMiscInfo != NULL) { if (pInfo->pMiscInfo != NULL) {
taosArrayDestroy(pInfo->pMiscInfo->a); taosArrayDestroy(pInfo->pMiscInfo->a);
...@@ -935,7 +943,7 @@ void setAlterUserSql(SSqlInfo *pInfo, int16_t type, SToken *pName, SToken* pPwd, ...@@ -935,7 +943,7 @@ void setAlterUserSql(SSqlInfo *pInfo, int16_t type, SToken *pName, SToken* pPwd,
void setCompactVnodeSql(SSqlInfo *pInfo, int32_t type, SArray *pParam) { void setCompactVnodeSql(SSqlInfo *pInfo, int32_t type, SArray *pParam) {
pInfo->type = type; pInfo->type = type;
pInfo->list = pParam; pInfo->sub.node = pParam;
} }
void setDefaultCreateDbOption(SCreateDbInfo *pDBInfo) { void setDefaultCreateDbOption(SCreateDbInfo *pDBInfo) {
......
...@@ -268,11 +268,11 @@ void destroyQueryInfo(SQueryStmtInfo* pQueryInfo) { ...@@ -268,11 +268,11 @@ void destroyQueryInfo(SQueryStmtInfo* pQueryInfo) {
} }
static int32_t doValidateSubquery(SSqlNode* pSqlNode, int32_t index, SQueryStmtInfo* pQueryInfo, SMsgBuf* pMsgBuf) { static int32_t doValidateSubquery(SSqlNode* pSqlNode, int32_t index, SQueryStmtInfo* pQueryInfo, SMsgBuf* pMsgBuf) {
SRelElementPair* subInfo = taosArrayGet(pSqlNode->from->list, index); SRelElement* subInfo = taosArrayGet(pSqlNode->from->list, index);
// union all is not support currently // union all is not support currently
SSqlNode* p = taosArrayGetP(subInfo->pSubquery, 0); SSqlNode* p = taosArrayGetP(subInfo->pSubquery->node, 0);
if (taosArrayGetSize(subInfo->pSubquery) >= 2) { if (taosArrayGetSize(subInfo->pSubquery->node) >= 2) {
return buildInvalidOperationMsg(pMsgBuf, "not support union in subquery"); return buildInvalidOperationMsg(pMsgBuf, "not support union in subquery");
} }
...@@ -804,6 +804,7 @@ int32_t validateSessionNode(SQueryStmtInfo *pQueryInfo, SSessionWindowVal* pSess ...@@ -804,6 +804,7 @@ int32_t validateSessionNode(SQueryStmtInfo *pQueryInfo, SSessionWindowVal* pSess
SSchema* pSchema = getOneColumnSchema(pTableMeta, index.columnIndex); SSchema* pSchema = getOneColumnSchema(pTableMeta, index.columnIndex);
pQueryInfo->sessionWindow.col = createColumn(pTableMetaInfo->pTableMeta->uid, pTableMetaInfo->aliasName, index.type, pSchema); pQueryInfo->sessionWindow.col = createColumn(pTableMetaInfo->pTableMeta->uid, pTableMetaInfo->aliasName, index.type, pSchema);
pQueryInfo->info.sessionWindow = true;
return TSDB_CODE_SUCCESS; return TSDB_CODE_SUCCESS;
} }
...@@ -1401,13 +1402,13 @@ int32_t validateSqlNode(SSqlNode* pSqlNode, SQueryStmtInfo* pQueryInfo, SMsgBuf* ...@@ -1401,13 +1402,13 @@ int32_t validateSqlNode(SSqlNode* pSqlNode, SQueryStmtInfo* pQueryInfo, SMsgBuf*
// return doLocalQueryProcess(pCmd, pQueryInfo, pSqlNode); // return doLocalQueryProcess(pCmd, pQueryInfo, pSqlNode);
} }
if (pSqlNode->from->type == SQL_NODE_FROM_SUBQUERY) { if (pSqlNode->from->type == SQL_FROM_NODE_SUBQUERY) {
pQueryInfo->numOfTables = 0; pQueryInfo->numOfTables = 0;
// parse the subquery in the first place // parse the subquery in the first place
int32_t numOfSub = (int32_t)taosArrayGetSize(pSqlNode->from->list); int32_t numOfSub = (int32_t)taosArrayGetSize(pSqlNode->from->list);
for (int32_t i = 0; i < numOfSub; ++i) { for (int32_t i = 0; i < numOfSub; ++i) {
SRelElementPair* subInfo = taosArrayGet(pSqlNode->from->list, i); SRelElement* subInfo = taosArrayGet(pSqlNode->from->list, i);
code = doValidateSubquery(pSqlNode, i, pQueryInfo, pMsgBuf); code = doValidateSubquery(pSqlNode, i, pQueryInfo, pMsgBuf);
if (code != TSDB_CODE_SUCCESS) { if (code != TSDB_CODE_SUCCESS) {
return code; return code;
...@@ -1574,7 +1575,8 @@ int32_t checkForInvalidExpr(SQueryStmtInfo* pQueryInfo, SMsgBuf* pMsgBuf) { ...@@ -1574,7 +1575,8 @@ int32_t checkForInvalidExpr(SQueryStmtInfo* pQueryInfo, SMsgBuf* pMsgBuf) {
const char* msg5 = "scalar function can not be used in time window query"; const char* msg5 = "scalar function can not be used in time window query";
const char* msg6 = "not support distinct mixed with join"; const char* msg6 = "not support distinct mixed with join";
const char* msg7 = "not support distinct mixed with groupby"; const char* msg7 = "not support distinct mixed with groupby";
const char* msg8 = "_block_dist not support subquery, only support stable/table"; const char* msg8 = "block_dist not support subquery, only support stable/table";
const char* msg9 = "time window aggregate can not be mixed up with group by column";
if (pQueryInfo->info.topbotQuery) { if (pQueryInfo->info.topbotQuery) {
...@@ -1656,6 +1658,15 @@ int32_t checkForInvalidExpr(SQueryStmtInfo* pQueryInfo, SMsgBuf* pMsgBuf) { ...@@ -1656,6 +1658,15 @@ int32_t checkForInvalidExpr(SQueryStmtInfo* pQueryInfo, SMsgBuf* pMsgBuf) {
* nested subquery not support block_dist query * nested subquery not support block_dist query
* select block_dist() from (select * from table_name) * select block_dist() from (select * from table_name)
*/ */
/*
* 8. invalid sql:
* select count(*) from table_name [interval(10s)|session(ts, 10s)|state_window(col_name)] group by col_name
*/
if ((pQueryInfo->info.timewindow || pQueryInfo->info.stateWindow || pQueryInfo->info.sessionWindow) &&
pQueryInfo->info.groupbyColumn) {
return buildInvalidOperationMsg(pMsgBuf, msg9);
}
} }
static int32_t resColId = 5000; static int32_t resColId = 5000;
...@@ -3790,7 +3801,7 @@ int32_t qParserValidateSqlNode(struct SCatalog* pCatalog, SSqlInfo* pInfo, SQuer ...@@ -3790,7 +3801,7 @@ int32_t qParserValidateSqlNode(struct SCatalog* pCatalog, SSqlInfo* pInfo, SQuer
tscTrace("0x%"PRIx64" start to parse the %dth subclause, total:%"PRIzu, pSql->self, i, size); tscTrace("0x%"PRIx64" start to parse the %dth subclause, total:%"PRIzu, pSql->self, i, size);
if (size > 1 && pSqlNode->from && pSqlNode->from->type == SQL_NODE_FROM_SUBQUERY) { if (size > 1 && pSqlNode->from && pSqlNode->from->type == SQL_FROM_NODE_SUBQUERY) {
return setInvalidOperatorMsg(pMsgBuf, msg1); return setInvalidOperatorMsg(pMsgBuf, msg1);
} }
...@@ -3895,9 +3906,9 @@ int32_t qParserValidateSqlNode(struct SCatalog* pCatalog, SSqlInfo* pInfo, SQuer ...@@ -3895,9 +3906,9 @@ int32_t qParserValidateSqlNode(struct SCatalog* pCatalog, SSqlInfo* pInfo, SQuer
SMsgBuf buf = {.buf = msgBuf, .len = msgBufLen}; SMsgBuf buf = {.buf = msgBuf, .len = msgBufLen};
size_t len = taosArrayGetSize(pInfo->list); size_t len = taosArrayGetSize(pInfo->sub.node);
for(int32_t i = 0; i < len; ++i) { for(int32_t i = 0; i < len; ++i) {
SSqlNode* p = taosArrayGetP(pInfo->list, i); SSqlNode* p = taosArrayGetP(pInfo->sub.node, i);
code = evaluateSqlNode(p, pTableMeta->tableInfo.precision, &buf); code = evaluateSqlNode(p, pTableMeta->tableInfo.precision, &buf);
if (code != TSDB_CODE_SUCCESS) { if (code != TSDB_CODE_SUCCESS) {
return code; return code;
...@@ -3905,7 +3916,7 @@ int32_t qParserValidateSqlNode(struct SCatalog* pCatalog, SSqlInfo* pInfo, SQuer ...@@ -3905,7 +3916,7 @@ int32_t qParserValidateSqlNode(struct SCatalog* pCatalog, SSqlInfo* pInfo, SQuer
} }
for(int32_t i = 0; i < len; ++i) { for(int32_t i = 0; i < len; ++i) {
SSqlNode* p = taosArrayGetP(pInfo->list, i); SSqlNode* p = taosArrayGetP(pInfo->sub.node, i);
validateSqlNode(p, pQueryInfo, &buf); validateSqlNode(p, pQueryInfo, &buf);
} }
...@@ -3916,6 +3927,5 @@ int32_t qParserValidateSqlNode(struct SCatalog* pCatalog, SSqlInfo* pInfo, SQuer ...@@ -3916,6 +3927,5 @@ int32_t qParserValidateSqlNode(struct SCatalog* pCatalog, SSqlInfo* pInfo, SQuer
return code; return code;
} }
// convert the sqlnode into queryinfo
return code; return code;
} }
...@@ -82,12 +82,12 @@ static int32_t getTableNameFromSubquery(SSqlNode* pSqlNode, SArray* tableNameLis ...@@ -82,12 +82,12 @@ static int32_t getTableNameFromSubquery(SSqlNode* pSqlNode, SArray* tableNameLis
int32_t numOfSub = (int32_t)taosArrayGetSize(pSqlNode->from->list); int32_t numOfSub = (int32_t)taosArrayGetSize(pSqlNode->from->list);
for (int32_t j = 0; j < numOfSub; ++j) { for (int32_t j = 0; j < numOfSub; ++j) {
SRelElementPair* sub = taosArrayGet(pSqlNode->from->list, j); SRelElement* sub = taosArrayGet(pSqlNode->from->list, j);
int32_t num = (int32_t)taosArrayGetSize(sub->pSubquery); int32_t num = (int32_t)taosArrayGetSize(sub->pSubquery->node);
for (int32_t i = 0; i < num; ++i) { for (int32_t i = 0; i < num; ++i) {
SSqlNode* p = taosArrayGetP(sub->pSubquery, i); SSqlNode* p = taosArrayGetP(sub->pSubquery->node, i);
if (p->from->type == SQL_NODE_FROM_TABLELIST) { if (p->from->type == SQL_FROM_NODE_TABLES) {
int32_t code = getTableNameFromSqlNode(p, tableNameList, pMsgBuf); int32_t code = getTableNameFromSqlNode(p, tableNameList, pMsgBuf);
if (code != TSDB_CODE_SUCCESS) { if (code != TSDB_CODE_SUCCESS) {
return code; return code;
...@@ -105,10 +105,10 @@ int32_t getTableNameFromSqlNode(SSqlNode* pSqlNode, SArray* tableNameList, SMsgB ...@@ -105,10 +105,10 @@ int32_t getTableNameFromSqlNode(SSqlNode* pSqlNode, SArray* tableNameList, SMsgB
const char* msg1 = "invalid table name"; const char* msg1 = "invalid table name";
int32_t numOfTables = (int32_t) taosArrayGetSize(pSqlNode->from->list); int32_t numOfTables = (int32_t) taosArrayGetSize(pSqlNode->from->list);
assert(pSqlNode->from->type == SQL_NODE_FROM_TABLELIST); assert(pSqlNode->from->type == SQL_FROM_NODE_TABLES);
for(int32_t j = 0; j < numOfTables; ++j) { for(int32_t j = 0; j < numOfTables; ++j) {
SRelElementPair* item = taosArrayGet(pSqlNode->from->list, j); SRelElement* item = taosArrayGet(pSqlNode->from->list, j);
SToken* t = &item->tableName; SToken* t = &item->tableName;
if (t->type == TK_INTEGER || t->type == TK_FLOAT || t->type == TK_STRING) { if (t->type == TK_INTEGER || t->type == TK_FLOAT || t->type == TK_STRING) {
...@@ -138,15 +138,15 @@ int32_t qParserExtractRequestedMetaInfo(const SSqlInfo* pSqlInfo, SMetaReq* pMet ...@@ -138,15 +138,15 @@ int32_t qParserExtractRequestedMetaInfo(const SSqlInfo* pSqlInfo, SMetaReq* pMet
pMetaInfo->pTableName = taosArrayInit(4, sizeof(SName)); pMetaInfo->pTableName = taosArrayInit(4, sizeof(SName));
pMetaInfo->pUdf = taosArrayInit(4, POINTER_BYTES); pMetaInfo->pUdf = taosArrayInit(4, POINTER_BYTES);
size_t size = taosArrayGetSize(pSqlInfo->list); size_t size = taosArrayGetSize(pSqlInfo->sub.node);
for (int32_t i = 0; i < size; ++i) { for (int32_t i = 0; i < size; ++i) {
SSqlNode* pSqlNode = taosArrayGetP(pSqlInfo->list, i); SSqlNode* pSqlNode = taosArrayGetP(pSqlInfo->sub.node, i);
if (pSqlNode->from == NULL) { if (pSqlNode->from == NULL) {
return buildInvalidOperationMsg(&msgBuf, "invalid from clause"); return buildInvalidOperationMsg(&msgBuf, "invalid from clause");
} }
// load the table meta in the FROM clause // load the table meta in the FROM clause
if (pSqlNode->from->type == SQL_NODE_FROM_TABLELIST) { if (pSqlNode->from->type == SQL_FROM_NODE_TABLES) {
code = getTableNameFromSqlNode(pSqlNode, pMetaInfo->pTableName, &msgBuf); code = getTableNameFromSqlNode(pSqlNode, pMetaInfo->pTableName, &msgBuf);
if (code != TSDB_CODE_SUCCESS) { if (code != TSDB_CODE_SUCCESS) {
return code; return code;
......
...@@ -182,7 +182,7 @@ void updateExprInfo(SExprInfo* pExprInfo, int16_t functionId, int32_t colId, int ...@@ -182,7 +182,7 @@ void updateExprInfo(SExprInfo* pExprInfo, int16_t functionId, int32_t colId, int
SExprInfo* getExprInfo(SQueryStmtInfo* pQueryInfo, int32_t index) { SExprInfo* getExprInfo(SQueryStmtInfo* pQueryInfo, int32_t index) {
assert(pQueryInfo != NULL && pQueryInfo->exprList && index >= 0); assert(pQueryInfo != NULL && pQueryInfo->exprList && index >= 0);
return taosArrayGetP(getCurrentExprList(pQueryInfo->exprList), index); return taosArrayGetP(getCurrentExprList(pQueryInfo), index);
} }
void destroyExprInfo(SExprInfo* pExprInfo) { void destroyExprInfo(SExprInfo* pExprInfo) {
......
...@@ -34,7 +34,6 @@ ...@@ -34,7 +34,6 @@
#include "tmsgtype.h" #include "tmsgtype.h"
#include "ttoken.h" #include "ttoken.h"
#include "ttokendef.h" #include "ttokendef.h"
//#include "tutil.h"
#include "tvariant.h" #include "tvariant.h"
/**************** End of %include directives **********************************/ /**************** End of %include directives **********************************/
/* These constants specify the various numeric values for terminal symbols /* These constants specify the various numeric values for terminal symbols
...@@ -120,6 +119,7 @@ typedef union { ...@@ -120,6 +119,7 @@ typedef union {
SSessionWindowVal yy511; SSessionWindowVal yy511;
tSqlExpr* yy526; tSqlExpr* yy526;
int64_t yy531; int64_t yy531;
SSubclause* yy551;
} YYMINORTYPE; } YYMINORTYPE;
#ifndef YYSTACKDEPTH #ifndef YYSTACKDEPTH
#define YYSTACKDEPTH 100 #define YYSTACKDEPTH 100
...@@ -130,16 +130,16 @@ typedef union { ...@@ -130,16 +130,16 @@ typedef union {
#define ParseARG_STORE yypParser->pInfo = pInfo #define ParseARG_STORE yypParser->pInfo = pInfo
#define YYFALLBACK 1 #define YYFALLBACK 1
#define YYNSTATE 368 #define YYNSTATE 368
#define YYNRULE 294 #define YYNRULE 295
#define YYNTOKEN 197 #define YYNTOKEN 197
#define YY_MAX_SHIFT 367 #define YY_MAX_SHIFT 367
#define YY_MIN_SHIFTREDUCE 576 #define YY_MIN_SHIFTREDUCE 577
#define YY_MAX_SHIFTREDUCE 869 #define YY_MAX_SHIFTREDUCE 871
#define YY_ERROR_ACTION 870 #define YY_ERROR_ACTION 872
#define YY_ACCEPT_ACTION 871 #define YY_ACCEPT_ACTION 873
#define YY_NO_ACTION 872 #define YY_NO_ACTION 874
#define YY_MIN_REDUCE 873 #define YY_MIN_REDUCE 875
#define YY_MAX_REDUCE 1166 #define YY_MAX_REDUCE 1169
/************* End control #defines *******************************************/ /************* End control #defines *******************************************/
/* Define the yytestcase() macro to be a no-op if is not already defined /* Define the yytestcase() macro to be a no-op if is not already defined
...@@ -205,86 +205,86 @@ typedef union { ...@@ -205,86 +205,86 @@ 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 (773) #define YY_ACTTAB_COUNT (776)
static const YYACTIONTYPE yy_action[] = { static const YYACTIONTYPE yy_action[] = {
/* 0 */ 23, 628, 366, 235, 1051, 208, 241, 712, 211, 629, /* 0 */ 23, 629, 366, 236, 1054, 209, 242, 713, 212, 630,
/* 10 */ 1029, 871, 367, 59, 60, 173, 63, 64, 1042, 1142, /* 10 */ 1031, 873, 367, 59, 60, 174, 63, 64, 1044, 1145,
/* 20 */ 255, 53, 52, 51, 628, 62, 324, 67, 65, 68, /* 20 */ 256, 53, 52, 51, 629, 62, 324, 67, 65, 68,
/* 30 */ 66, 157, 629, 286, 238, 58, 57, 344, 343, 56, /* 30 */ 66, 158, 630, 286, 239, 58, 57, 344, 343, 56,
/* 40 */ 55, 54, 59, 60, 247, 63, 64, 252, 1029, 255, /* 40 */ 55, 54, 59, 60, 248, 63, 64, 253, 1031, 256,
/* 50 */ 53, 52, 51, 664, 62, 324, 67, 65, 68, 66, /* 50 */ 53, 52, 51, 665, 62, 324, 67, 65, 68, 66,
/* 60 */ 999, 1042, 997, 998, 58, 57, 752, 1000, 56, 55, /* 60 */ 1001, 1044, 999, 1000, 58, 57, 210, 1002, 56, 55,
/* 70 */ 54, 1001, 1048, 1002, 1003, 58, 57, 277, 1015, 56, /* 70 */ 54, 1003, 1051, 1004, 1005, 58, 57, 278, 216, 56,
/* 80 */ 55, 54, 59, 60, 164, 63, 64, 38, 82, 255, /* 80 */ 55, 54, 59, 60, 165, 63, 64, 38, 83, 256,
/* 90 */ 53, 52, 51, 88, 62, 324, 67, 65, 68, 66, /* 90 */ 53, 52, 51, 89, 62, 324, 67, 65, 68, 66,
/* 100 */ 284, 283, 249, 322, 58, 57, 1029, 211, 56, 55, /* 100 */ 284, 283, 250, 754, 58, 57, 1031, 212, 56, 55,
/* 110 */ 54, 38, 59, 61, 806, 63, 64, 1042, 1143, 255, /* 110 */ 54, 38, 59, 61, 808, 63, 64, 1044, 1146, 256,
/* 120 */ 53, 52, 51, 628, 62, 324, 67, 65, 68, 66, /* 120 */ 53, 52, 51, 629, 62, 324, 67, 65, 68, 66,
/* 130 */ 45, 629, 237, 239, 58, 57, 1026, 164, 56, 55, /* 130 */ 45, 630, 238, 240, 58, 57, 1028, 165, 56, 55,
/* 140 */ 54, 60, 1023, 63, 64, 771, 772, 255, 53, 52, /* 140 */ 54, 60, 1025, 63, 64, 773, 774, 256, 53, 52,
/* 150 */ 51, 756, 62, 324, 67, 65, 68, 66, 164, 1090, /* 150 */ 51, 96, 62, 324, 67, 65, 68, 66, 165, 1093,
/* 160 */ 1025, 296, 58, 57, 322, 100, 56, 55, 54, 577, /* 160 */ 1027, 296, 58, 57, 89, 84, 56, 55, 54, 578,
/* 170 */ 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, /* 170 */ 579, 580, 581, 582, 583, 584, 585, 586, 587, 588,
/* 180 */ 588, 589, 590, 155, 354, 236, 63, 64, 209, 248, /* 180 */ 589, 590, 591, 156, 322, 237, 63, 64, 758, 249,
/* 190 */ 255, 53, 52, 51, 628, 62, 324, 67, 65, 68, /* 190 */ 256, 53, 52, 51, 629, 62, 324, 67, 65, 68,
/* 200 */ 66, 1017, 629, 164, 1028, 58, 57, 362, 960, 56, /* 200 */ 66, 45, 630, 88, 1017, 58, 57, 362, 962, 56,
/* 210 */ 55, 54, 1089, 44, 320, 361, 360, 319, 318, 317, /* 210 */ 55, 54, 1092, 44, 320, 361, 360, 319, 318, 317,
/* 220 */ 359, 316, 315, 314, 358, 313, 357, 356, 154, 152, /* 220 */ 359, 316, 315, 314, 358, 313, 357, 356, 155, 153,
/* 230 */ 151, 298, 24, 93, 991, 979, 980, 981, 982, 983, /* 230 */ 152, 298, 24, 94, 993, 981, 982, 983, 984, 985,
/* 240 */ 984, 985, 986, 987, 988, 989, 990, 992, 993, 214, /* 240 */ 986, 987, 988, 989, 990, 991, 992, 994, 995, 215,
/* 250 */ 749, 254, 821, 922, 125, 810, 222, 813, 215, 816, /* 250 */ 751, 255, 823, 924, 126, 812, 223, 815, 354, 818,
/* 260 */ 192, 97, 139, 138, 137, 221, 354, 254, 821, 329, /* 260 */ 193, 98, 140, 139, 138, 222, 354, 255, 823, 329,
/* 270 */ 88, 810, 251, 813, 269, 816, 9, 29, 94, 67, /* 270 */ 89, 812, 252, 815, 270, 818, 9, 29, 217, 67,
/* 280 */ 65, 68, 66, 273, 272, 233, 234, 58, 57, 325, /* 280 */ 65, 68, 66, 274, 273, 234, 235, 58, 57, 325,
/* 290 */ 81, 56, 55, 54, 1012, 1013, 35, 1016, 812, 216, /* 290 */ 322, 56, 55, 54, 1014, 1015, 35, 1018, 814, 218,
/* 300 */ 815, 233, 234, 258, 5, 41, 182, 45, 56, 55, /* 300 */ 817, 234, 235, 259, 5, 41, 183, 45, 56, 55,
/* 310 */ 54, 181, 106, 111, 102, 110, 38, 263, 736, 38, /* 310 */ 54, 182, 107, 112, 103, 111, 38, 264, 737, 38,
/* 320 */ 932, 733, 217, 734, 1014, 735, 95, 192, 256, 276, /* 320 */ 934, 734, 742, 735, 743, 736, 165, 193, 257, 277,
/* 330 */ 309, 80, 211, 38, 69, 123, 117, 128, 229, 811, /* 330 */ 309, 81, 212, 38, 69, 124, 118, 129, 230, 813,
/* 340 */ 83, 814, 127, 1143, 133, 136, 126, 202, 200, 198, /* 340 */ 1140, 816, 128, 1146, 134, 137, 127, 203, 201, 199,
/* 350 */ 69, 260, 261, 130, 197, 143, 142, 141, 140, 38, /* 350 */ 69, 261, 262, 131, 198, 144, 143, 142, 141, 38,
/* 360 */ 44, 245, 361, 360, 246, 1026, 788, 359, 1026, 822, /* 360 */ 44, 246, 361, 360, 247, 1028, 101, 359, 1028, 824,
/* 370 */ 817, 358, 38, 357, 356, 38, 818, 38, 333, 259, /* 370 */ 819, 358, 38, 357, 356, 38, 820, 38, 333, 260,
/* 380 */ 38, 257, 1026, 332, 331, 822, 817, 1137, 211, 365, /* 380 */ 38, 258, 1028, 332, 331, 824, 819, 790, 212, 365,
/* 390 */ 364, 148, 818, 265, 38, 262, 38, 339, 338, 1143, /* 390 */ 364, 149, 820, 266, 38, 263, 38, 339, 338, 1146,
/* 400 */ 264, 264, 264, 14, 334, 85, 76, 96, 1026, 923, /* 400 */ 265, 95, 1019, 14, 334, 265, 82, 97, 1028, 86,
/* 410 */ 86, 178, 179, 1027, 3, 193, 192, 335, 278, 819, /* 410 */ 77, 179, 265, 3, 194, 87, 180, 335, 326, 821,
/* 420 */ 336, 1026, 340, 787, 1026, 341, 1026, 1, 180, 1026, /* 420 */ 336, 1028, 340, 1029, 1028, 341, 1028, 925, 279, 1028,
/* 430 */ 768, 73, 39, 326, 778, 737, 738, 99, 779, 342, /* 430 */ 74, 1, 181, 770, 193, 738, 739, 100, 34, 342,
/* 440 */ 722, 346, 280, 1026, 159, 1026, 77, 280, 70, 301, /* 440 */ 1016, 346, 39, 1028, 789, 1028, 73, 160, 780, 781,
/* 450 */ 724, 303, 26, 723, 39, 34, 808, 844, 823, 253, /* 450 */ 78, 723, 73, 301, 725, 303, 724, 810, 254, 846,
/* 460 */ 820, 627, 1136, 39, 70, 98, 79, 70, 16, 1100, /* 460 */ 822, 825, 70, 26, 628, 39, 80, 39, 70, 99,
/* 470 */ 15, 25, 25, 74, 116, 25, 115, 18, 741, 17, /* 470 */ 70, 304, 75, 25, 16, 25, 15, 1139, 25, 117,
/* 480 */ 742, 6, 739, 20, 740, 19, 1135, 122, 304, 121, /* 480 */ 6, 116, 18, 1138, 17, 740, 20, 741, 19, 123,
/* 490 */ 22, 231, 21, 232, 809, 135, 134, 212, 711, 213, /* 490 */ 232, 122, 22, 233, 21, 811, 136, 135, 712, 213,
/* 500 */ 274, 218, 210, 219, 220, 224, 225, 1162, 226, 223, /* 500 */ 275, 214, 219, 211, 220, 221, 225, 1030, 226, 227,
/* 510 */ 207, 1154, 1099, 243, 1096, 1095, 244, 345, 156, 48, /* 510 */ 224, 208, 1165, 1157, 1103, 1046, 1102, 244, 1099, 1098,
/* 520 */ 1082, 1081, 174, 1050, 1061, 153, 1058, 1043, 1059, 281, /* 520 */ 245, 345, 827, 157, 48, 1053, 1064, 1085, 1061, 1062,
/* 530 */ 1024, 1063, 310, 285, 240, 158, 287, 825, 163, 292, /* 530 */ 1045, 1084, 281, 1066, 1026, 154, 159, 164, 292, 175,
/* 540 */ 165, 175, 1022, 1040, 176, 167, 177, 937, 306, 767, /* 540 */ 176, 1024, 33, 285, 177, 168, 178, 939, 769, 306,
/* 550 */ 307, 308, 311, 166, 312, 289, 46, 205, 42, 323, /* 550 */ 307, 308, 311, 312, 1042, 46, 206, 42, 323, 933,
/* 560 */ 931, 330, 1161, 113, 78, 75, 299, 1160, 50, 1157, /* 560 */ 330, 1164, 114, 241, 79, 1163, 287, 1160, 289, 76,
/* 570 */ 183, 297, 168, 295, 337, 1153, 293, 119, 1152, 1149, /* 570 */ 166, 299, 184, 337, 167, 1156, 50, 120, 1155, 297,
/* 580 */ 184, 957, 291, 43, 40, 47, 206, 919, 129, 917, /* 580 */ 1152, 185, 295, 959, 43, 40, 47, 207, 921, 130,
/* 590 */ 131, 132, 915, 914, 266, 195, 196, 288, 911, 910, /* 590 */ 919, 132, 133, 917, 916, 267, 293, 196, 197, 913,
/* 600 */ 909, 908, 907, 906, 905, 199, 201, 902, 900, 898, /* 600 */ 912, 911, 910, 291, 909, 908, 907, 200, 202, 904,
/* 610 */ 896, 203, 893, 204, 889, 355, 49, 124, 279, 84, /* 610 */ 902, 900, 898, 204, 895, 205, 288, 891, 49, 310,
/* 620 */ 347, 89, 290, 1083, 348, 349, 350, 351, 352, 353, /* 620 */ 280, 85, 90, 290, 355, 1086, 348, 125, 347, 349,
/* 630 */ 230, 363, 250, 869, 267, 268, 305, 868, 270, 271, /* 630 */ 350, 351, 231, 352, 251, 305, 353, 363, 871, 269,
/* 640 */ 867, 850, 227, 849, 280, 275, 228, 107, 936, 935, /* 640 */ 870, 268, 271, 228, 229, 108, 938, 937, 109, 272,
/* 650 */ 10, 108, 300, 744, 282, 87, 30, 90, 769, 913, /* 650 */ 869, 852, 276, 851, 73, 10, 915, 300, 282, 914,
/* 660 */ 912, 160, 904, 187, 191, 144, 958, 185, 186, 188, /* 660 */ 745, 145, 188, 146, 187, 960, 186, 189, 190, 192,
/* 670 */ 189, 145, 146, 190, 903, 2, 780, 995, 147, 161, /* 670 */ 191, 906, 905, 961, 147, 997, 2, 30, 148, 897,
/* 680 */ 169, 170, 959, 171, 172, 33, 895, 894, 774, 162, /* 680 */ 896, 91, 171, 169, 172, 170, 173, 1007, 771, 4,
/* 690 */ 4, 1005, 91, 242, 776, 92, 294, 31, 11, 32, /* 690 */ 161, 163, 782, 162, 243, 776, 92, 31, 778, 93,
/* 700 */ 13, 12, 27, 302, 28, 99, 101, 642, 36, 103, /* 700 */ 294, 11, 12, 32, 13, 27, 302, 28, 100, 102,
/* 710 */ 104, 37, 105, 677, 675, 674, 673, 671, 670, 669, /* 710 */ 105, 36, 104, 643, 37, 106, 678, 676, 675, 674,
/* 720 */ 666, 321, 109, 632, 7, 826, 824, 8, 328, 327, /* 720 */ 672, 671, 670, 667, 633, 321, 110, 7, 327, 328,
/* 730 */ 112, 114, 71, 72, 118, 714, 39, 120, 713, 710, /* 730 */ 828, 39, 826, 8, 113, 71, 115, 72, 715, 714,
/* 740 */ 658, 656, 648, 654, 650, 652, 646, 644, 680, 679, /* 740 */ 119, 711, 659, 121, 657, 649, 655, 651, 653, 647,
/* 750 */ 678, 676, 672, 668, 667, 194, 630, 594, 873, 872, /* 750 */ 645, 681, 680, 679, 677, 673, 669, 668, 195, 631,
/* 760 */ 872, 872, 872, 872, 872, 872, 872, 872, 872, 872, /* 760 */ 595, 875, 874, 874, 874, 874, 874, 874, 874, 874,
/* 770 */ 872, 149, 150, /* 770 */ 874, 874, 874, 874, 150, 151,
}; };
static const YYCODETYPE yy_lookahead[] = { static const YYCODETYPE yy_lookahead[] = {
/* 0 */ 267, 1, 200, 201, 200, 267, 246, 5, 267, 9, /* 0 */ 267, 1, 200, 201, 200, 267, 246, 5, 267, 9,
...@@ -293,78 +293,78 @@ static const YYCODETYPE yy_lookahead[] = { ...@@ -293,78 +293,78 @@ static const YYCODETYPE yy_lookahead[] = {
/* 30 */ 30, 200, 9, 272, 264, 35, 36, 35, 36, 39, /* 30 */ 30, 200, 9, 272, 264, 35, 36, 35, 36, 39,
/* 40 */ 40, 41, 13, 14, 246, 16, 17, 207, 250, 20, /* 40 */ 40, 41, 13, 14, 246, 16, 17, 207, 250, 20,
/* 50 */ 21, 22, 23, 5, 25, 26, 27, 28, 29, 30, /* 50 */ 21, 22, 23, 5, 25, 26, 27, 28, 29, 30,
/* 60 */ 224, 248, 226, 227, 35, 36, 39, 231, 39, 40, /* 60 */ 224, 248, 226, 227, 35, 36, 267, 231, 39, 40,
/* 70 */ 41, 235, 268, 237, 238, 35, 36, 264, 0, 39, /* 70 */ 41, 235, 268, 237, 238, 35, 36, 264, 267, 39,
/* 80 */ 40, 41, 13, 14, 200, 16, 17, 200, 88, 20, /* 80 */ 40, 41, 13, 14, 200, 16, 17, 200, 88, 20,
/* 90 */ 21, 22, 23, 84, 25, 26, 27, 28, 29, 30, /* 90 */ 21, 22, 23, 84, 25, 26, 27, 28, 29, 30,
/* 100 */ 269, 270, 246, 86, 35, 36, 250, 267, 39, 40, /* 100 */ 269, 270, 246, 39, 35, 36, 250, 267, 39, 40,
/* 110 */ 41, 200, 13, 14, 85, 16, 17, 248, 278, 20, /* 110 */ 41, 200, 13, 14, 85, 16, 17, 248, 278, 20,
/* 120 */ 21, 22, 23, 1, 25, 26, 27, 28, 29, 30, /* 120 */ 21, 22, 23, 1, 25, 26, 27, 28, 29, 30,
/* 130 */ 121, 9, 245, 264, 35, 36, 249, 200, 39, 40, /* 130 */ 121, 9, 245, 264, 35, 36, 249, 200, 39, 40,
/* 140 */ 41, 14, 200, 16, 17, 127, 128, 20, 21, 22, /* 140 */ 41, 14, 200, 16, 17, 127, 128, 20, 21, 22,
/* 150 */ 23, 124, 25, 26, 27, 28, 29, 30, 200, 275, /* 150 */ 23, 251, 25, 26, 27, 28, 29, 30, 200, 275,
/* 160 */ 249, 277, 35, 36, 86, 208, 39, 40, 41, 47, /* 160 */ 249, 277, 35, 36, 84, 265, 39, 40, 41, 47,
/* 170 */ 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, /* 170 */ 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
/* 180 */ 58, 59, 60, 61, 92, 63, 16, 17, 267, 247, /* 180 */ 58, 59, 60, 61, 86, 63, 16, 17, 124, 247,
/* 190 */ 20, 21, 22, 23, 1, 25, 26, 27, 28, 29, /* 190 */ 20, 21, 22, 23, 1, 25, 26, 27, 28, 29,
/* 200 */ 30, 244, 9, 200, 250, 35, 36, 222, 223, 39, /* 200 */ 30, 121, 9, 123, 0, 35, 36, 222, 223, 39,
/* 210 */ 40, 41, 275, 100, 101, 102, 103, 104, 105, 106, /* 210 */ 40, 41, 275, 100, 101, 102, 103, 104, 105, 106,
/* 220 */ 107, 108, 109, 110, 111, 112, 113, 114, 64, 65, /* 220 */ 107, 108, 109, 110, 111, 112, 113, 114, 64, 65,
/* 230 */ 66, 273, 46, 275, 224, 225, 226, 227, 228, 229, /* 230 */ 66, 273, 46, 275, 224, 225, 226, 227, 228, 229,
/* 240 */ 230, 231, 232, 233, 234, 235, 236, 237, 238, 63, /* 240 */ 230, 231, 232, 233, 234, 235, 236, 237, 238, 63,
/* 250 */ 99, 1, 2, 206, 80, 5, 70, 7, 267, 9, /* 250 */ 99, 1, 2, 206, 80, 5, 70, 7, 92, 9,
/* 260 */ 213, 208, 76, 77, 78, 79, 92, 1, 2, 83, /* 260 */ 213, 208, 76, 77, 78, 79, 92, 1, 2, 83,
/* 270 */ 84, 5, 207, 7, 144, 9, 125, 84, 275, 27, /* 270 */ 84, 5, 207, 7, 144, 9, 125, 84, 267, 27,
/* 280 */ 28, 29, 30, 153, 154, 35, 36, 35, 36, 39, /* 280 */ 28, 29, 30, 153, 154, 35, 36, 35, 36, 39,
/* 290 */ 208, 39, 40, 41, 241, 242, 243, 244, 5, 267, /* 290 */ 86, 39, 40, 41, 241, 242, 243, 244, 5, 267,
/* 300 */ 7, 35, 36, 70, 64, 65, 66, 121, 39, 40, /* 300 */ 7, 35, 36, 70, 64, 65, 66, 121, 39, 40,
/* 310 */ 41, 71, 72, 73, 74, 75, 200, 70, 2, 200, /* 310 */ 41, 71, 72, 73, 74, 75, 200, 70, 2, 200,
/* 320 */ 206, 5, 267, 7, 242, 9, 251, 213, 207, 143, /* 320 */ 206, 5, 5, 7, 7, 9, 200, 213, 207, 143,
/* 330 */ 90, 145, 267, 200, 84, 64, 65, 66, 152, 5, /* 330 */ 90, 145, 267, 200, 84, 64, 65, 66, 152, 5,
/* 340 */ 265, 7, 71, 278, 73, 74, 75, 64, 65, 66, /* 340 */ 267, 7, 71, 278, 73, 74, 75, 64, 65, 66,
/* 350 */ 84, 35, 36, 82, 71, 72, 73, 74, 75, 200, /* 350 */ 84, 35, 36, 82, 71, 72, 73, 74, 75, 200,
/* 360 */ 100, 245, 102, 103, 245, 249, 78, 107, 249, 119, /* 360 */ 100, 245, 102, 103, 245, 249, 208, 107, 249, 119,
/* 370 */ 120, 111, 200, 113, 114, 200, 126, 200, 245, 146, /* 370 */ 120, 111, 200, 113, 114, 200, 126, 200, 245, 146,
/* 380 */ 200, 148, 249, 150, 151, 119, 120, 267, 267, 67, /* 380 */ 200, 148, 249, 150, 151, 119, 120, 78, 267, 67,
/* 390 */ 68, 69, 126, 146, 200, 148, 200, 150, 151, 278, /* 390 */ 68, 69, 126, 146, 200, 148, 200, 150, 151, 278,
/* 400 */ 200, 200, 200, 84, 245, 85, 99, 88, 249, 206, /* 400 */ 200, 275, 244, 84, 245, 200, 208, 88, 249, 85,
/* 410 */ 85, 211, 211, 211, 204, 205, 213, 245, 85, 126, /* 410 */ 99, 211, 200, 204, 205, 85, 211, 245, 15, 126,
/* 420 */ 245, 249, 245, 135, 249, 245, 249, 209, 210, 249, /* 420 */ 245, 249, 245, 211, 249, 245, 249, 206, 85, 249,
/* 430 */ 85, 99, 99, 15, 85, 119, 120, 118, 85, 245, /* 430 */ 99, 209, 210, 85, 213, 119, 120, 118, 84, 245,
/* 440 */ 85, 245, 122, 249, 99, 249, 139, 122, 99, 85, /* 440 */ 242, 245, 99, 249, 135, 249, 122, 99, 85, 85,
/* 450 */ 85, 85, 99, 85, 99, 84, 1, 85, 85, 62, /* 450 */ 139, 85, 122, 85, 85, 85, 85, 1, 62, 85,
/* 460 */ 126, 85, 267, 99, 99, 99, 84, 99, 147, 240, /* 460 */ 126, 85, 99, 99, 85, 99, 84, 99, 99, 99,
/* 470 */ 149, 99, 99, 141, 147, 99, 149, 147, 5, 149, /* 470 */ 99, 117, 141, 99, 147, 99, 149, 267, 99, 147,
/* 480 */ 7, 84, 5, 147, 7, 149, 267, 147, 117, 149, /* 480 */ 84, 149, 147, 267, 149, 5, 147, 7, 149, 147,
/* 490 */ 147, 267, 149, 267, 39, 80, 81, 267, 116, 267, /* 490 */ 267, 149, 147, 267, 149, 39, 80, 81, 116, 267,
/* 500 */ 200, 267, 267, 267, 267, 267, 267, 250, 267, 267, /* 500 */ 200, 267, 267, 267, 267, 267, 267, 250, 267, 267,
/* 510 */ 267, 250, 240, 240, 240, 240, 240, 240, 200, 266, /* 510 */ 267, 267, 250, 250, 240, 248, 240, 240, 240, 240,
/* 520 */ 276, 276, 252, 200, 200, 62, 200, 248, 200, 248, /* 520 */ 240, 240, 119, 200, 266, 200, 200, 276, 200, 200,
/* 530 */ 248, 200, 91, 271, 271, 200, 271, 119, 200, 200, /* 530 */ 248, 276, 248, 200, 248, 62, 200, 200, 200, 252,
/* 540 */ 262, 200, 200, 263, 200, 260, 200, 200, 200, 126, /* 540 */ 200, 200, 253, 271, 200, 260, 200, 200, 126, 200,
/* 550 */ 200, 200, 200, 261, 200, 271, 200, 200, 200, 200, /* 550 */ 200, 200, 200, 200, 263, 200, 200, 200, 200, 200,
/* 560 */ 200, 200, 200, 200, 138, 140, 133, 200, 137, 200, /* 560 */ 200, 200, 200, 271, 138, 200, 271, 200, 271, 140,
/* 570 */ 200, 136, 259, 131, 200, 200, 130, 200, 200, 200, /* 570 */ 262, 133, 200, 200, 261, 200, 137, 200, 200, 136,
/* 580 */ 200, 200, 129, 200, 200, 200, 200, 200, 200, 200, /* 580 */ 200, 200, 131, 200, 200, 200, 200, 200, 200, 200,
/* 590 */ 200, 200, 200, 200, 200, 200, 200, 132, 200, 200, /* 590 */ 200, 200, 200, 200, 200, 200, 130, 200, 200, 200,
/* 600 */ 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, /* 600 */ 200, 200, 200, 129, 200, 200, 200, 200, 200, 200,
/* 610 */ 200, 200, 200, 200, 200, 115, 142, 98, 202, 202, /* 610 */ 200, 200, 200, 200, 200, 200, 132, 200, 142, 91,
/* 620 */ 97, 202, 202, 202, 53, 94, 96, 57, 95, 93, /* 620 */ 202, 202, 202, 202, 115, 202, 53, 98, 97, 94,
/* 630 */ 202, 86, 202, 5, 155, 5, 202, 5, 155, 5, /* 630 */ 96, 57, 202, 95, 202, 202, 93, 86, 5, 5,
/* 640 */ 5, 102, 202, 101, 122, 144, 202, 208, 212, 212, /* 640 */ 5, 155, 155, 202, 202, 208, 212, 212, 208, 5,
/* 650 */ 84, 208, 117, 85, 99, 123, 84, 99, 85, 202, /* 650 */ 5, 102, 144, 101, 122, 84, 202, 117, 99, 202,
/* 660 */ 202, 84, 202, 215, 214, 203, 221, 220, 219, 218, /* 660 */ 85, 203, 215, 203, 219, 221, 220, 218, 216, 214,
/* 670 */ 216, 203, 203, 217, 202, 209, 85, 239, 203, 84, /* 670 */ 217, 202, 202, 223, 203, 239, 209, 84, 203, 202,
/* 680 */ 258, 257, 223, 256, 255, 253, 202, 202, 85, 99, /* 680 */ 202, 99, 257, 259, 256, 258, 255, 239, 85, 204,
/* 690 */ 204, 239, 84, 1, 85, 84, 84, 99, 134, 99, /* 690 */ 84, 99, 85, 84, 1, 85, 84, 99, 85, 84,
/* 700 */ 84, 134, 84, 117, 84, 118, 80, 5, 89, 88, /* 700 */ 84, 134, 134, 99, 84, 84, 117, 84, 118, 80,
/* 710 */ 72, 89, 88, 9, 5, 5, 5, 5, 5, 5, /* 710 */ 72, 89, 88, 5, 89, 88, 9, 5, 5, 5,
/* 720 */ 5, 15, 80, 87, 84, 119, 85, 84, 61, 26, /* 720 */ 5, 5, 5, 5, 87, 15, 80, 84, 26, 61,
/* 730 */ 149, 149, 16, 16, 149, 5, 99, 149, 5, 85, /* 730 */ 119, 99, 85, 84, 149, 16, 149, 16, 5, 5,
/* 740 */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, /* 740 */ 149, 85, 5, 149, 5, 5, 5, 5, 5, 5,
/* 750 */ 5, 5, 5, 5, 5, 99, 87, 62, 0, 279, /* 750 */ 5, 5, 5, 5, 5, 5, 5, 5, 99, 87,
/* 760 */ 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, /* 760 */ 62, 0, 279, 279, 279, 279, 279, 279, 279, 279,
/* 770 */ 279, 21, 21, 279, 279, 279, 279, 279, 279, 279, /* 770 */ 279, 279, 279, 279, 21, 21, 279, 279, 279, 279,
/* 780 */ 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, /* 780 */ 279, 279, 279, 279, 279, 279, 279, 279, 279, 279,
/* 790 */ 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, /* 790 */ 279, 279, 279, 279, 279, 279, 279, 279, 279, 279,
/* 800 */ 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, /* 800 */ 279, 279, 279, 279, 279, 279, 279, 279, 279, 279,
...@@ -384,113 +384,114 @@ static const YYCODETYPE yy_lookahead[] = { ...@@ -384,113 +384,114 @@ static const YYCODETYPE yy_lookahead[] = {
/* 940 */ 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, /* 940 */ 279, 279, 279, 279, 279, 279, 279, 279, 279, 279,
/* 950 */ 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, /* 950 */ 279, 279, 279, 279, 279, 279, 279, 279, 279, 279,
/* 960 */ 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, /* 960 */ 279, 279, 279, 279, 279, 279, 279, 279, 279, 279,
/* 970 */ 279, 279, 279,
}; };
#define YY_SHIFT_COUNT (367) #define YY_SHIFT_COUNT (367)
#define YY_SHIFT_MIN (0) #define YY_SHIFT_MIN (0)
#define YY_SHIFT_MAX (758) #define YY_SHIFT_MAX (761)
static const unsigned short int yy_shift_ofst[] = { static const unsigned short int yy_shift_ofst[] = {
/* 0 */ 186, 113, 113, 260, 260, 17, 250, 266, 266, 193, /* 0 */ 186, 113, 113, 260, 260, 98, 250, 266, 266, 193,
/* 10 */ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, /* 10 */ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
/* 20 */ 23, 23, 23, 0, 122, 266, 316, 316, 316, 9, /* 20 */ 23, 23, 23, 0, 122, 266, 316, 316, 316, 9,
/* 30 */ 9, 23, 23, 18, 23, 78, 23, 23, 23, 23, /* 30 */ 9, 23, 23, 18, 23, 204, 23, 23, 23, 23,
/* 40 */ 174, 17, 92, 92, 48, 773, 773, 773, 266, 266, /* 40 */ 174, 98, 166, 166, 48, 776, 776, 776, 266, 266,
/* 50 */ 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, /* 50 */ 266, 266, 266, 266, 266, 266, 266, 266, 266, 266,
/* 60 */ 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, /* 60 */ 266, 266, 266, 266, 266, 266, 266, 266, 266, 266,
/* 70 */ 316, 316, 316, 2, 2, 2, 2, 2, 2, 2, /* 70 */ 316, 316, 316, 80, 2, 2, 2, 2, 2, 2,
/* 80 */ 23, 23, 23, 27, 23, 23, 23, 9, 9, 23, /* 80 */ 2, 23, 23, 23, 64, 23, 23, 23, 9, 9,
/* 90 */ 23, 23, 23, 288, 288, 151, 9, 23, 23, 23, /* 90 */ 23, 23, 23, 23, 309, 309, 151, 9, 23, 23,
/* 100 */ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, /* 100 */ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
/* 110 */ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, /* 110 */ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
/* 120 */ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, /* 120 */ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
/* 130 */ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, /* 130 */ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
/* 140 */ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, /* 140 */ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
/* 150 */ 23, 23, 23, 23, 23, 23, 463, 463, 463, 423, /* 150 */ 23, 23, 23, 23, 23, 23, 23, 473, 473, 473,
/* 160 */ 423, 423, 423, 463, 463, 426, 425, 433, 431, 435, /* 160 */ 422, 422, 422, 422, 473, 473, 426, 429, 438, 439,
/* 170 */ 442, 446, 453, 465, 474, 463, 463, 463, 441, 441, /* 170 */ 443, 451, 466, 474, 484, 476, 473, 473, 473, 528,
/* 180 */ 500, 17, 17, 463, 463, 519, 523, 571, 531, 530, /* 180 */ 528, 509, 98, 98, 473, 473, 529, 531, 573, 535,
/* 190 */ 570, 533, 536, 500, 48, 463, 463, 545, 545, 463, /* 190 */ 534, 574, 538, 543, 509, 48, 473, 473, 551, 551,
/* 200 */ 545, 463, 545, 463, 463, 773, 773, 29, 69, 69, /* 200 */ 473, 551, 473, 551, 473, 473, 776, 776, 29, 69,
/* 210 */ 99, 69, 127, 170, 240, 252, 252, 252, 252, 252, /* 210 */ 69, 99, 69, 127, 170, 240, 252, 252, 252, 252,
/* 220 */ 252, 271, 283, 40, 40, 40, 40, 233, 247, 130, /* 220 */ 252, 252, 271, 283, 40, 40, 40, 40, 233, 247,
/* 230 */ 319, 269, 269, 293, 334, 322, 164, 333, 320, 325, /* 230 */ 130, 319, 269, 269, 293, 334, 322, 164, 343, 324,
/* 240 */ 345, 349, 353, 332, 307, 355, 364, 365, 366, 368, /* 240 */ 330, 348, 363, 364, 331, 311, 366, 368, 369, 370,
/* 250 */ 371, 372, 373, 455, 397, 418, 376, 321, 327, 330, /* 250 */ 371, 354, 374, 376, 456, 396, 403, 379, 327, 332,
/* 260 */ 473, 477, 336, 340, 382, 343, 415, 628, 479, 630, /* 260 */ 335, 317, 480, 339, 342, 382, 345, 416, 633, 486,
/* 270 */ 632, 483, 634, 635, 539, 542, 501, 522, 535, 566, /* 270 */ 634, 635, 487, 644, 645, 549, 552, 508, 532, 540,
/* 280 */ 532, 568, 572, 555, 558, 573, 577, 591, 595, 603, /* 280 */ 571, 575, 593, 559, 582, 603, 606, 607, 609, 610,
/* 290 */ 590, 608, 609, 611, 692, 612, 598, 564, 600, 567, /* 290 */ 592, 612, 613, 615, 693, 616, 598, 567, 604, 568,
/* 300 */ 616, 535, 618, 586, 620, 587, 626, 619, 621, 638, /* 300 */ 620, 540, 621, 589, 623, 590, 629, 622, 624, 638,
/* 310 */ 702, 622, 624, 704, 709, 710, 711, 712, 713, 714, /* 310 */ 708, 625, 627, 707, 712, 713, 714, 715, 716, 717,
/* 320 */ 715, 636, 706, 642, 640, 641, 606, 643, 703, 667, /* 320 */ 718, 637, 710, 646, 643, 647, 611, 649, 702, 668,
/* 330 */ 716, 581, 582, 637, 637, 637, 637, 717, 585, 588, /* 330 */ 719, 585, 587, 632, 632, 632, 632, 721, 591, 594,
/* 340 */ 637, 637, 637, 730, 733, 654, 637, 735, 736, 737, /* 340 */ 632, 632, 632, 733, 734, 656, 632, 737, 739, 740,
/* 350 */ 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, /* 350 */ 741, 742, 743, 744, 745, 746, 747, 748, 749, 750,
/* 360 */ 748, 749, 656, 669, 750, 751, 695, 758, /* 360 */ 751, 752, 659, 672, 753, 754, 698, 761,
}; };
#define YY_REDUCE_COUNT (206) #define YY_REDUCE_COUNT (207)
#define YY_REDUCE_MIN (-267) #define YY_REDUCE_MIN (-267)
#define YY_REDUCE_MAX (486) #define YY_REDUCE_MAX (485)
static const short yy_reduce_ofst[] = { static const short yy_reduce_ofst[] = {
/* 0 */ -187, 10, 10, -164, -164, 53, -160, 65, 121, -169, /* 0 */ -187, 10, 10, -164, -164, 53, -160, 65, 121, -169,
/* 10 */ -113, -116, -42, 116, 119, 133, 159, 172, 175, 177, /* 10 */ -113, -116, -42, 116, 119, 133, 159, 172, 175, 177,
/* 20 */ 180, 194, 196, -196, -198, -259, -240, -202, -144, -230, /* 20 */ 180, 194, 196, -196, -198, -259, -240, -202, -144, -230,
/* 30 */ -131, -63, 3, -239, -58, -43, 200, 201, 202, -89, /* 30 */ -131, -63, 126, -239, -58, 158, 200, 205, 212, -89,
/* 40 */ 47, 82, 114, 203, -15, 75, 218, 210, -267, -262, /* 40 */ 47, 198, 114, 221, -15, -100, 222, 209, -267, -262,
/* 50 */ -79, -9, 32, 55, 120, 195, 219, 224, 226, 230, /* 50 */ -201, -189, 11, 32, 73, 210, 216, 223, 226, 232,
/* 60 */ 232, 234, 235, 236, 237, 238, 239, 241, 242, 243, /* 60 */ 234, 235, 236, 237, 238, 239, 241, 242, 243, 244,
/* 70 */ -46, 257, 261, 229, 272, 273, 274, 275, 276, 277, /* 70 */ 257, 262, 263, 267, 274, 276, 277, 278, 279, 280,
/* 80 */ 300, 318, 323, 253, 324, 326, 328, 279, 281, 331, /* 80 */ 281, 300, 323, 325, 258, 326, 328, 329, 282, 284,
/* 90 */ 335, 338, 339, 244, 245, 270, 282, 341, 342, 344, /* 90 */ 333, 336, 337, 338, 251, 255, 287, 286, 340, 341,
/* 100 */ 346, 347, 348, 350, 351, 352, 354, 356, 357, 358, /* 100 */ 344, 346, 347, 349, 350, 351, 352, 353, 355, 356,
/* 110 */ 359, 360, 361, 362, 363, 367, 369, 370, 374, 375, /* 110 */ 357, 358, 359, 360, 361, 362, 365, 367, 372, 373,
/* 120 */ 377, 378, 379, 380, 381, 383, 384, 385, 386, 387, /* 120 */ 375, 377, 378, 380, 381, 383, 384, 385, 386, 387,
/* 130 */ 388, 389, 390, 391, 392, 393, 394, 395, 396, 398, /* 130 */ 388, 389, 390, 391, 392, 393, 394, 395, 397, 398,
/* 140 */ 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, /* 140 */ 399, 400, 401, 402, 404, 405, 406, 407, 408, 409,
/* 150 */ 409, 410, 411, 412, 413, 414, 416, 417, 419, 262, /* 150 */ 410, 411, 412, 413, 414, 415, 417, 418, 419, 420,
/* 160 */ 263, 265, 284, 420, 421, 280, 278, 292, 285, 313, /* 160 */ 272, 292, 295, 297, 421, 423, 291, 308, 313, 285,
/* 170 */ 422, 424, 427, 429, 432, 428, 430, 434, 436, 437, /* 170 */ 424, 427, 425, 428, 431, 289, 430, 432, 433, 434,
/* 180 */ 438, 439, 443, 440, 444, 445, 447, 449, 448, 451, /* 180 */ 435, 436, 437, 440, 441, 442, 444, 446, 445, 447,
/* 190 */ 454, 456, 450, 452, 459, 457, 458, 462, 468, 460, /* 190 */ 449, 452, 453, 455, 448, 450, 454, 457, 458, 460,
/* 200 */ 469, 472, 475, 484, 485, 466, 486, /* 200 */ 469, 471, 470, 475, 477, 478, 467, 485,
}; };
static const YYACTIONTYPE yy_default[] = { static const YYACTIONTYPE yy_default[] = {
/* 0 */ 870, 994, 933, 1004, 920, 930, 1145, 1145, 1145, 870, /* 0 */ 872, 996, 935, 1006, 922, 932, 1148, 1148, 1148, 872,
/* 10 */ 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, /* 10 */ 872, 872, 872, 872, 872, 872, 872, 872, 872, 872,
/* 20 */ 870, 870, 870, 1052, 890, 1145, 870, 870, 870, 870, /* 20 */ 872, 872, 872, 1055, 892, 1148, 872, 872, 872, 872,
/* 30 */ 870, 870, 870, 1067, 870, 930, 870, 870, 870, 870, /* 30 */ 872, 872, 872, 1070, 872, 932, 872, 872, 872, 872,
/* 40 */ 940, 930, 940, 940, 870, 1047, 978, 996, 870, 870, /* 40 */ 942, 932, 942, 942, 872, 1050, 980, 998, 872, 872,
/* 50 */ 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, /* 50 */ 872, 872, 872, 872, 872, 872, 872, 872, 872, 872,
/* 60 */ 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, /* 60 */ 872, 872, 872, 872, 872, 872, 872, 872, 872, 872,
/* 70 */ 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, /* 70 */ 872, 872, 872, 872, 872, 872, 872, 872, 872, 872,
/* 80 */ 870, 870, 870, 1054, 1060, 1057, 870, 870, 870, 1062, /* 80 */ 872, 872, 872, 872, 1057, 1063, 1060, 872, 872, 872,
/* 90 */ 870, 870, 870, 1086, 1086, 1045, 870, 870, 870, 870, /* 90 */ 1065, 872, 872, 872, 1089, 1089, 1048, 872, 872, 872,
/* 100 */ 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, /* 100 */ 872, 872, 872, 872, 872, 872, 872, 872, 872, 872,
/* 110 */ 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, /* 110 */ 872, 872, 872, 872, 872, 872, 872, 872, 872, 872,
/* 120 */ 870, 870, 870, 870, 870, 870, 870, 870, 870, 918, /* 120 */ 872, 872, 872, 872, 872, 872, 872, 872, 872, 872,
/* 130 */ 870, 916, 870, 870, 870, 870, 870, 870, 870, 870, /* 130 */ 920, 872, 918, 872, 872, 872, 872, 872, 872, 872,
/* 140 */ 870, 870, 870, 870, 870, 870, 870, 870, 901, 870, /* 140 */ 872, 872, 872, 872, 872, 872, 872, 872, 872, 903,
/* 150 */ 870, 870, 870, 870, 870, 888, 892, 892, 892, 870, /* 150 */ 872, 872, 872, 872, 872, 872, 890, 894, 894, 894,
/* 160 */ 870, 870, 870, 892, 892, 1093, 1097, 1079, 1091, 1087, /* 160 */ 872, 872, 872, 872, 894, 894, 1096, 1100, 1082, 1094,
/* 170 */ 1074, 1072, 1070, 1078, 1101, 892, 892, 892, 938, 938, /* 170 */ 1090, 1077, 1075, 1073, 1081, 1104, 894, 894, 894, 940,
/* 180 */ 934, 930, 930, 892, 892, 956, 954, 952, 944, 950, /* 180 */ 940, 936, 932, 932, 894, 894, 958, 956, 954, 946,
/* 190 */ 946, 948, 942, 921, 870, 892, 892, 928, 928, 892, /* 190 */ 952, 948, 950, 944, 923, 872, 894, 894, 930, 930,
/* 200 */ 928, 892, 928, 892, 892, 978, 996, 870, 1102, 1092, /* 200 */ 894, 930, 894, 930, 894, 894, 980, 998, 872, 1105,
/* 210 */ 870, 1144, 1132, 1131, 870, 1140, 1139, 1138, 1130, 1129, /* 210 */ 1095, 872, 1147, 1135, 1134, 872, 1143, 1142, 1141, 1133,
/* 220 */ 1128, 870, 870, 1124, 1127, 1126, 1125, 870, 870, 870, /* 220 */ 1132, 1131, 872, 872, 1127, 1130, 1129, 1128, 872, 872,
/* 230 */ 870, 1134, 1133, 870, 870, 870, 870, 870, 870, 870, /* 230 */ 872, 872, 1137, 1136, 872, 872, 872, 872, 872, 872,
/* 240 */ 870, 870, 870, 1098, 1094, 870, 870, 870, 870, 870, /* 240 */ 872, 872, 872, 872, 1101, 1097, 872, 872, 872, 872,
/* 250 */ 870, 870, 870, 870, 1104, 870, 870, 870, 870, 870, /* 250 */ 872, 872, 872, 872, 872, 1107, 872, 872, 872, 872,
/* 260 */ 870, 870, 870, 870, 1006, 870, 870, 870, 870, 870, /* 260 */ 872, 872, 872, 872, 872, 1008, 872, 872, 872, 872,
/* 270 */ 870, 870, 870, 870, 870, 870, 870, 1044, 870, 870, /* 270 */ 872, 872, 872, 872, 872, 872, 872, 872, 1047, 872,
/* 280 */ 870, 870, 870, 1056, 1055, 870, 870, 870, 870, 870, /* 280 */ 872, 872, 872, 1059, 1058, 872, 872, 872, 872, 872,
/* 290 */ 870, 870, 870, 870, 870, 870, 1088, 870, 1080, 870, /* 290 */ 872, 872, 872, 872, 872, 872, 1091, 872, 1083, 872,
/* 300 */ 870, 1018, 870, 870, 870, 870, 870, 870, 870, 870, /* 300 */ 872, 1020, 872, 872, 872, 872, 872, 872, 872, 872,
/* 310 */ 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, /* 310 */ 872, 872, 872, 872, 872, 872, 872, 872, 872, 872,
/* 320 */ 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, /* 320 */ 872, 872, 872, 872, 872, 872, 872, 872, 872, 872,
/* 330 */ 870, 870, 870, 1163, 1158, 1159, 1156, 870, 870, 870, /* 330 */ 872, 872, 872, 1166, 1161, 1162, 1159, 872, 872, 872,
/* 340 */ 1155, 1150, 1151, 870, 870, 870, 1148, 870, 870, 870, /* 340 */ 1158, 1153, 1154, 872, 872, 872, 1151, 872, 872, 872,
/* 350 */ 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, /* 350 */ 872, 872, 872, 872, 872, 872, 872, 872, 872, 872,
/* 360 */ 870, 870, 962, 870, 899, 897, 870, 870, /* 360 */ 872, 872, 964, 872, 901, 899, 872, 872,
}; };
/********** End of lemon-generated parsing tables *****************************/ /********** End of lemon-generated parsing tables *****************************/
...@@ -1250,129 +1251,130 @@ static const char *const yyRuleName[] = { ...@@ -1250,129 +1251,130 @@ static const char *const yyRuleName[] = {
/* 168 */ "select ::= LP select RP", /* 168 */ "select ::= LP select RP",
/* 169 */ "union ::= select", /* 169 */ "union ::= select",
/* 170 */ "union ::= union UNION ALL select", /* 170 */ "union ::= union UNION ALL select",
/* 171 */ "cmd ::= union", /* 171 */ "union ::= union UNION select",
/* 172 */ "select ::= SELECT selcollist", /* 172 */ "cmd ::= union",
/* 173 */ "sclp ::= selcollist COMMA", /* 173 */ "select ::= SELECT selcollist",
/* 174 */ "sclp ::=", /* 174 */ "sclp ::= selcollist COMMA",
/* 175 */ "selcollist ::= sclp distinct expr as", /* 175 */ "sclp ::=",
/* 176 */ "selcollist ::= sclp STAR", /* 176 */ "selcollist ::= sclp distinct expr as",
/* 177 */ "as ::= AS ids", /* 177 */ "selcollist ::= sclp STAR",
/* 178 */ "as ::= ids", /* 178 */ "as ::= AS ids",
/* 179 */ "as ::=", /* 179 */ "as ::= ids",
/* 180 */ "distinct ::= DISTINCT", /* 180 */ "as ::=",
/* 181 */ "distinct ::=", /* 181 */ "distinct ::= DISTINCT",
/* 182 */ "from ::= FROM tablelist", /* 182 */ "distinct ::=",
/* 183 */ "from ::= FROM sub", /* 183 */ "from ::= FROM tablelist",
/* 184 */ "sub ::= LP union RP", /* 184 */ "from ::= FROM sub",
/* 185 */ "sub ::= LP union RP ids", /* 185 */ "sub ::= LP union RP",
/* 186 */ "sub ::= sub COMMA LP union RP ids", /* 186 */ "sub ::= LP union RP ids",
/* 187 */ "tablelist ::= ids cpxName", /* 187 */ "sub ::= sub COMMA LP union RP ids",
/* 188 */ "tablelist ::= ids cpxName ids", /* 188 */ "tablelist ::= ids cpxName",
/* 189 */ "tablelist ::= tablelist COMMA ids cpxName", /* 189 */ "tablelist ::= ids cpxName ids",
/* 190 */ "tablelist ::= tablelist COMMA ids cpxName ids", /* 190 */ "tablelist ::= tablelist COMMA ids cpxName",
/* 191 */ "tmvar ::= VARIABLE", /* 191 */ "tablelist ::= tablelist COMMA ids cpxName ids",
/* 192 */ "interval_option ::= intervalKey LP tmvar RP", /* 192 */ "tmvar ::= VARIABLE",
/* 193 */ "interval_option ::= intervalKey LP tmvar COMMA tmvar RP", /* 193 */ "interval_option ::= intervalKey LP tmvar RP",
/* 194 */ "interval_option ::=", /* 194 */ "interval_option ::= intervalKey LP tmvar COMMA tmvar RP",
/* 195 */ "intervalKey ::= INTERVAL", /* 195 */ "interval_option ::=",
/* 196 */ "intervalKey ::= EVERY", /* 196 */ "intervalKey ::= INTERVAL",
/* 197 */ "session_option ::=", /* 197 */ "intervalKey ::= EVERY",
/* 198 */ "session_option ::= SESSION LP ids cpxName COMMA tmvar RP", /* 198 */ "session_option ::=",
/* 199 */ "windowstate_option ::=", /* 199 */ "session_option ::= SESSION LP ids cpxName COMMA tmvar RP",
/* 200 */ "windowstate_option ::= STATE_WINDOW LP ids RP", /* 200 */ "windowstate_option ::=",
/* 201 */ "fill_opt ::=", /* 201 */ "windowstate_option ::= STATE_WINDOW LP ids RP",
/* 202 */ "fill_opt ::= FILL LP ID COMMA tagitemlist RP", /* 202 */ "fill_opt ::=",
/* 203 */ "fill_opt ::= FILL LP ID RP", /* 203 */ "fill_opt ::= FILL LP ID COMMA tagitemlist RP",
/* 204 */ "sliding_opt ::= SLIDING LP tmvar RP", /* 204 */ "fill_opt ::= FILL LP ID RP",
/* 205 */ "sliding_opt ::=", /* 205 */ "sliding_opt ::= SLIDING LP tmvar RP",
/* 206 */ "orderby_opt ::=", /* 206 */ "sliding_opt ::=",
/* 207 */ "orderby_opt ::= ORDER BY sortlist", /* 207 */ "orderby_opt ::=",
/* 208 */ "sortlist ::= sortlist COMMA item sortorder", /* 208 */ "orderby_opt ::= ORDER BY sortlist",
/* 209 */ "sortlist ::= item sortorder", /* 209 */ "sortlist ::= sortlist COMMA item sortorder",
/* 210 */ "item ::= ids cpxName", /* 210 */ "sortlist ::= item sortorder",
/* 211 */ "sortorder ::= ASC", /* 211 */ "item ::= ids cpxName",
/* 212 */ "sortorder ::= DESC", /* 212 */ "sortorder ::= ASC",
/* 213 */ "sortorder ::=", /* 213 */ "sortorder ::= DESC",
/* 214 */ "groupby_opt ::=", /* 214 */ "sortorder ::=",
/* 215 */ "groupby_opt ::= GROUP BY grouplist", /* 215 */ "groupby_opt ::=",
/* 216 */ "grouplist ::= grouplist COMMA item", /* 216 */ "groupby_opt ::= GROUP BY grouplist",
/* 217 */ "grouplist ::= item", /* 217 */ "grouplist ::= grouplist COMMA item",
/* 218 */ "having_opt ::=", /* 218 */ "grouplist ::= item",
/* 219 */ "having_opt ::= HAVING expr", /* 219 */ "having_opt ::=",
/* 220 */ "limit_opt ::=", /* 220 */ "having_opt ::= HAVING expr",
/* 221 */ "limit_opt ::= LIMIT signed", /* 221 */ "limit_opt ::=",
/* 222 */ "limit_opt ::= LIMIT signed OFFSET signed", /* 222 */ "limit_opt ::= LIMIT signed",
/* 223 */ "limit_opt ::= LIMIT signed COMMA signed", /* 223 */ "limit_opt ::= LIMIT signed OFFSET signed",
/* 224 */ "slimit_opt ::=", /* 224 */ "limit_opt ::= LIMIT signed COMMA signed",
/* 225 */ "slimit_opt ::= SLIMIT signed", /* 225 */ "slimit_opt ::=",
/* 226 */ "slimit_opt ::= SLIMIT signed SOFFSET signed", /* 226 */ "slimit_opt ::= SLIMIT signed",
/* 227 */ "slimit_opt ::= SLIMIT signed COMMA signed", /* 227 */ "slimit_opt ::= SLIMIT signed SOFFSET signed",
/* 228 */ "where_opt ::=", /* 228 */ "slimit_opt ::= SLIMIT signed COMMA signed",
/* 229 */ "where_opt ::= WHERE expr", /* 229 */ "where_opt ::=",
/* 230 */ "expr ::= LP expr RP", /* 230 */ "where_opt ::= WHERE expr",
/* 231 */ "expr ::= ID", /* 231 */ "expr ::= LP expr RP",
/* 232 */ "expr ::= ID DOT ID", /* 232 */ "expr ::= ID",
/* 233 */ "expr ::= ID DOT STAR", /* 233 */ "expr ::= ID DOT ID",
/* 234 */ "expr ::= INTEGER", /* 234 */ "expr ::= ID DOT STAR",
/* 235 */ "expr ::= MINUS INTEGER", /* 235 */ "expr ::= INTEGER",
/* 236 */ "expr ::= PLUS INTEGER", /* 236 */ "expr ::= MINUS INTEGER",
/* 237 */ "expr ::= FLOAT", /* 237 */ "expr ::= PLUS INTEGER",
/* 238 */ "expr ::= MINUS FLOAT", /* 238 */ "expr ::= FLOAT",
/* 239 */ "expr ::= PLUS FLOAT", /* 239 */ "expr ::= MINUS FLOAT",
/* 240 */ "expr ::= STRING", /* 240 */ "expr ::= PLUS FLOAT",
/* 241 */ "expr ::= NOW", /* 241 */ "expr ::= STRING",
/* 242 */ "expr ::= VARIABLE", /* 242 */ "expr ::= NOW",
/* 243 */ "expr ::= PLUS VARIABLE", /* 243 */ "expr ::= VARIABLE",
/* 244 */ "expr ::= MINUS VARIABLE", /* 244 */ "expr ::= PLUS VARIABLE",
/* 245 */ "expr ::= BOOL", /* 245 */ "expr ::= MINUS VARIABLE",
/* 246 */ "expr ::= NULL", /* 246 */ "expr ::= BOOL",
/* 247 */ "expr ::= ID LP exprlist RP", /* 247 */ "expr ::= NULL",
/* 248 */ "expr ::= ID LP STAR RP", /* 248 */ "expr ::= ID LP exprlist RP",
/* 249 */ "expr ::= expr IS NULL", /* 249 */ "expr ::= ID LP STAR RP",
/* 250 */ "expr ::= expr IS NOT NULL", /* 250 */ "expr ::= expr IS NULL",
/* 251 */ "expr ::= expr LT expr", /* 251 */ "expr ::= expr IS NOT NULL",
/* 252 */ "expr ::= expr GT expr", /* 252 */ "expr ::= expr LT expr",
/* 253 */ "expr ::= expr LE expr", /* 253 */ "expr ::= expr GT expr",
/* 254 */ "expr ::= expr GE expr", /* 254 */ "expr ::= expr LE expr",
/* 255 */ "expr ::= expr NE expr", /* 255 */ "expr ::= expr GE expr",
/* 256 */ "expr ::= expr EQ expr", /* 256 */ "expr ::= expr NE expr",
/* 257 */ "expr ::= expr BETWEEN expr AND expr", /* 257 */ "expr ::= expr EQ expr",
/* 258 */ "expr ::= expr AND expr", /* 258 */ "expr ::= expr BETWEEN expr AND expr",
/* 259 */ "expr ::= expr OR expr", /* 259 */ "expr ::= expr AND expr",
/* 260 */ "expr ::= expr PLUS expr", /* 260 */ "expr ::= expr OR expr",
/* 261 */ "expr ::= expr MINUS expr", /* 261 */ "expr ::= expr PLUS expr",
/* 262 */ "expr ::= expr STAR expr", /* 262 */ "expr ::= expr MINUS expr",
/* 263 */ "expr ::= expr SLASH expr", /* 263 */ "expr ::= expr STAR expr",
/* 264 */ "expr ::= expr REM expr", /* 264 */ "expr ::= expr SLASH expr",
/* 265 */ "expr ::= expr LIKE expr", /* 265 */ "expr ::= expr REM expr",
/* 266 */ "expr ::= expr MATCH expr", /* 266 */ "expr ::= expr LIKE expr",
/* 267 */ "expr ::= expr NMATCH expr", /* 267 */ "expr ::= expr MATCH expr",
/* 268 */ "expr ::= expr IN LP exprlist RP", /* 268 */ "expr ::= expr NMATCH expr",
/* 269 */ "exprlist ::= exprlist COMMA expritem", /* 269 */ "expr ::= expr IN LP exprlist RP",
/* 270 */ "exprlist ::= expritem", /* 270 */ "exprlist ::= exprlist COMMA expritem",
/* 271 */ "expritem ::= expr", /* 271 */ "exprlist ::= expritem",
/* 272 */ "expritem ::=", /* 272 */ "expritem ::= expr",
/* 273 */ "cmd ::= RESET QUERY CACHE", /* 273 */ "expritem ::=",
/* 274 */ "cmd ::= SYNCDB ids REPLICA", /* 274 */ "cmd ::= RESET QUERY CACHE",
/* 275 */ "cmd ::= ALTER TABLE ids cpxName ADD COLUMN columnlist", /* 275 */ "cmd ::= SYNCDB ids REPLICA",
/* 276 */ "cmd ::= ALTER TABLE ids cpxName DROP COLUMN ids", /* 276 */ "cmd ::= ALTER TABLE ids cpxName ADD COLUMN columnlist",
/* 277 */ "cmd ::= ALTER TABLE ids cpxName MODIFY COLUMN columnlist", /* 277 */ "cmd ::= ALTER TABLE ids cpxName DROP COLUMN ids",
/* 278 */ "cmd ::= ALTER TABLE ids cpxName ADD TAG columnlist", /* 278 */ "cmd ::= ALTER TABLE ids cpxName MODIFY COLUMN columnlist",
/* 279 */ "cmd ::= ALTER TABLE ids cpxName DROP TAG ids", /* 279 */ "cmd ::= ALTER TABLE ids cpxName ADD TAG columnlist",
/* 280 */ "cmd ::= ALTER TABLE ids cpxName CHANGE TAG ids ids", /* 280 */ "cmd ::= ALTER TABLE ids cpxName DROP TAG ids",
/* 281 */ "cmd ::= ALTER TABLE ids cpxName SET TAG ids EQ tagitem", /* 281 */ "cmd ::= ALTER TABLE ids cpxName CHANGE TAG ids ids",
/* 282 */ "cmd ::= ALTER TABLE ids cpxName MODIFY TAG columnlist", /* 282 */ "cmd ::= ALTER TABLE ids cpxName SET TAG ids EQ tagitem",
/* 283 */ "cmd ::= ALTER STABLE ids cpxName ADD COLUMN columnlist", /* 283 */ "cmd ::= ALTER TABLE ids cpxName MODIFY TAG columnlist",
/* 284 */ "cmd ::= ALTER STABLE ids cpxName DROP COLUMN ids", /* 284 */ "cmd ::= ALTER STABLE ids cpxName ADD COLUMN columnlist",
/* 285 */ "cmd ::= ALTER STABLE ids cpxName MODIFY COLUMN columnlist", /* 285 */ "cmd ::= ALTER STABLE ids cpxName DROP COLUMN ids",
/* 286 */ "cmd ::= ALTER STABLE ids cpxName ADD TAG columnlist", /* 286 */ "cmd ::= ALTER STABLE ids cpxName MODIFY COLUMN columnlist",
/* 287 */ "cmd ::= ALTER STABLE ids cpxName DROP TAG ids", /* 287 */ "cmd ::= ALTER STABLE ids cpxName ADD TAG columnlist",
/* 288 */ "cmd ::= ALTER STABLE ids cpxName CHANGE TAG ids ids", /* 288 */ "cmd ::= ALTER STABLE ids cpxName DROP TAG ids",
/* 289 */ "cmd ::= ALTER STABLE ids cpxName SET TAG ids EQ tagitem", /* 289 */ "cmd ::= ALTER STABLE ids cpxName CHANGE TAG ids ids",
/* 290 */ "cmd ::= ALTER STABLE ids cpxName MODIFY TAG columnlist", /* 290 */ "cmd ::= ALTER STABLE ids cpxName SET TAG ids EQ tagitem",
/* 291 */ "cmd ::= KILL CONNECTION INTEGER", /* 291 */ "cmd ::= ALTER STABLE ids cpxName MODIFY TAG columnlist",
/* 292 */ "cmd ::= KILL STREAM INTEGER COLON INTEGER", /* 292 */ "cmd ::= KILL CONNECTION INTEGER",
/* 293 */ "cmd ::= KILL QUERY INTEGER COLON INTEGER", /* 293 */ "cmd ::= KILL STREAM INTEGER COLON INTEGER",
/* 294 */ "cmd ::= KILL QUERY INTEGER COLON INTEGER",
}; };
#endif /* NDEBUG */ #endif /* NDEBUG */
...@@ -1541,7 +1543,7 @@ tSqlExprDestroy((yypminor->yy526)); ...@@ -1541,7 +1543,7 @@ tSqlExprDestroy((yypminor->yy526));
break; break;
case 264: /* union */ case 264: /* union */
{ {
destroyAllSqlNode((yypminor->yy135)); destroyAllSqlNode((yypminor->yy551));
} }
break; break;
case 274: /* sortitem */ case 274: /* sortitem */
...@@ -2011,129 +2013,130 @@ static const struct { ...@@ -2011,129 +2013,130 @@ static const struct {
{ 248, -3 }, /* (168) select ::= LP select RP */ { 248, -3 }, /* (168) select ::= LP select RP */
{ 264, -1 }, /* (169) union ::= select */ { 264, -1 }, /* (169) union ::= select */
{ 264, -4 }, /* (170) union ::= union UNION ALL select */ { 264, -4 }, /* (170) union ::= union UNION ALL select */
{ 199, -1 }, /* (171) cmd ::= union */ { 264, -3 }, /* (171) union ::= union UNION select */
{ 248, -2 }, /* (172) select ::= SELECT selcollist */ { 199, -1 }, /* (172) cmd ::= union */
{ 265, -2 }, /* (173) sclp ::= selcollist COMMA */ { 248, -2 }, /* (173) select ::= SELECT selcollist */
{ 265, 0 }, /* (174) sclp ::= */ { 265, -2 }, /* (174) sclp ::= selcollist COMMA */
{ 251, -4 }, /* (175) selcollist ::= sclp distinct expr as */ { 265, 0 }, /* (175) sclp ::= */
{ 251, -2 }, /* (176) selcollist ::= sclp STAR */ { 251, -4 }, /* (176) selcollist ::= sclp distinct expr as */
{ 268, -2 }, /* (177) as ::= AS ids */ { 251, -2 }, /* (177) selcollist ::= sclp STAR */
{ 268, -1 }, /* (178) as ::= ids */ { 268, -2 }, /* (178) as ::= AS ids */
{ 268, 0 }, /* (179) as ::= */ { 268, -1 }, /* (179) as ::= ids */
{ 266, -1 }, /* (180) distinct ::= DISTINCT */ { 268, 0 }, /* (180) as ::= */
{ 266, 0 }, /* (181) distinct ::= */ { 266, -1 }, /* (181) distinct ::= DISTINCT */
{ 252, -2 }, /* (182) from ::= FROM tablelist */ { 266, 0 }, /* (182) distinct ::= */
{ 252, -2 }, /* (183) from ::= FROM sub */ { 252, -2 }, /* (183) from ::= FROM tablelist */
{ 270, -3 }, /* (184) sub ::= LP union RP */ { 252, -2 }, /* (184) from ::= FROM sub */
{ 270, -4 }, /* (185) sub ::= LP union RP ids */ { 270, -3 }, /* (185) sub ::= LP union RP */
{ 270, -6 }, /* (186) sub ::= sub COMMA LP union RP ids */ { 270, -4 }, /* (186) sub ::= LP union RP ids */
{ 269, -2 }, /* (187) tablelist ::= ids cpxName */ { 270, -6 }, /* (187) sub ::= sub COMMA LP union RP ids */
{ 269, -3 }, /* (188) tablelist ::= ids cpxName ids */ { 269, -2 }, /* (188) tablelist ::= ids cpxName */
{ 269, -4 }, /* (189) tablelist ::= tablelist COMMA ids cpxName */ { 269, -3 }, /* (189) tablelist ::= ids cpxName ids */
{ 269, -5 }, /* (190) tablelist ::= tablelist COMMA ids cpxName ids */ { 269, -4 }, /* (190) tablelist ::= tablelist COMMA ids cpxName */
{ 271, -1 }, /* (191) tmvar ::= VARIABLE */ { 269, -5 }, /* (191) tablelist ::= tablelist COMMA ids cpxName ids */
{ 254, -4 }, /* (192) interval_option ::= intervalKey LP tmvar RP */ { 271, -1 }, /* (192) tmvar ::= VARIABLE */
{ 254, -6 }, /* (193) interval_option ::= intervalKey LP tmvar COMMA tmvar RP */ { 254, -4 }, /* (193) interval_option ::= intervalKey LP tmvar RP */
{ 254, 0 }, /* (194) interval_option ::= */ { 254, -6 }, /* (194) interval_option ::= intervalKey LP tmvar COMMA tmvar RP */
{ 272, -1 }, /* (195) intervalKey ::= INTERVAL */ { 254, 0 }, /* (195) interval_option ::= */
{ 272, -1 }, /* (196) intervalKey ::= EVERY */ { 272, -1 }, /* (196) intervalKey ::= INTERVAL */
{ 256, 0 }, /* (197) session_option ::= */ { 272, -1 }, /* (197) intervalKey ::= EVERY */
{ 256, -7 }, /* (198) session_option ::= SESSION LP ids cpxName COMMA tmvar RP */ { 256, 0 }, /* (198) session_option ::= */
{ 257, 0 }, /* (199) windowstate_option ::= */ { 256, -7 }, /* (199) session_option ::= SESSION LP ids cpxName COMMA tmvar RP */
{ 257, -4 }, /* (200) windowstate_option ::= STATE_WINDOW LP ids RP */ { 257, 0 }, /* (200) windowstate_option ::= */
{ 258, 0 }, /* (201) fill_opt ::= */ { 257, -4 }, /* (201) windowstate_option ::= STATE_WINDOW LP ids RP */
{ 258, -6 }, /* (202) fill_opt ::= FILL LP ID COMMA tagitemlist RP */ { 258, 0 }, /* (202) fill_opt ::= */
{ 258, -4 }, /* (203) fill_opt ::= FILL LP ID RP */ { 258, -6 }, /* (203) fill_opt ::= FILL LP ID COMMA tagitemlist RP */
{ 255, -4 }, /* (204) sliding_opt ::= SLIDING LP tmvar RP */ { 258, -4 }, /* (204) fill_opt ::= FILL LP ID RP */
{ 255, 0 }, /* (205) sliding_opt ::= */ { 255, -4 }, /* (205) sliding_opt ::= SLIDING LP tmvar RP */
{ 261, 0 }, /* (206) orderby_opt ::= */ { 255, 0 }, /* (206) sliding_opt ::= */
{ 261, -3 }, /* (207) orderby_opt ::= ORDER BY sortlist */ { 261, 0 }, /* (207) orderby_opt ::= */
{ 273, -4 }, /* (208) sortlist ::= sortlist COMMA item sortorder */ { 261, -3 }, /* (208) orderby_opt ::= ORDER BY sortlist */
{ 273, -2 }, /* (209) sortlist ::= item sortorder */ { 273, -4 }, /* (209) sortlist ::= sortlist COMMA item sortorder */
{ 275, -2 }, /* (210) item ::= ids cpxName */ { 273, -2 }, /* (210) sortlist ::= item sortorder */
{ 276, -1 }, /* (211) sortorder ::= ASC */ { 275, -2 }, /* (211) item ::= ids cpxName */
{ 276, -1 }, /* (212) sortorder ::= DESC */ { 276, -1 }, /* (212) sortorder ::= ASC */
{ 276, 0 }, /* (213) sortorder ::= */ { 276, -1 }, /* (213) sortorder ::= DESC */
{ 259, 0 }, /* (214) groupby_opt ::= */ { 276, 0 }, /* (214) sortorder ::= */
{ 259, -3 }, /* (215) groupby_opt ::= GROUP BY grouplist */ { 259, 0 }, /* (215) groupby_opt ::= */
{ 277, -3 }, /* (216) grouplist ::= grouplist COMMA item */ { 259, -3 }, /* (216) groupby_opt ::= GROUP BY grouplist */
{ 277, -1 }, /* (217) grouplist ::= item */ { 277, -3 }, /* (217) grouplist ::= grouplist COMMA item */
{ 260, 0 }, /* (218) having_opt ::= */ { 277, -1 }, /* (218) grouplist ::= item */
{ 260, -2 }, /* (219) having_opt ::= HAVING expr */ { 260, 0 }, /* (219) having_opt ::= */
{ 263, 0 }, /* (220) limit_opt ::= */ { 260, -2 }, /* (220) having_opt ::= HAVING expr */
{ 263, -2 }, /* (221) limit_opt ::= LIMIT signed */ { 263, 0 }, /* (221) limit_opt ::= */
{ 263, -4 }, /* (222) limit_opt ::= LIMIT signed OFFSET signed */ { 263, -2 }, /* (222) limit_opt ::= LIMIT signed */
{ 263, -4 }, /* (223) limit_opt ::= LIMIT signed COMMA signed */ { 263, -4 }, /* (223) limit_opt ::= LIMIT signed OFFSET signed */
{ 262, 0 }, /* (224) slimit_opt ::= */ { 263, -4 }, /* (224) limit_opt ::= LIMIT signed COMMA signed */
{ 262, -2 }, /* (225) slimit_opt ::= SLIMIT signed */ { 262, 0 }, /* (225) slimit_opt ::= */
{ 262, -4 }, /* (226) slimit_opt ::= SLIMIT signed SOFFSET signed */ { 262, -2 }, /* (226) slimit_opt ::= SLIMIT signed */
{ 262, -4 }, /* (227) slimit_opt ::= SLIMIT signed COMMA signed */ { 262, -4 }, /* (227) slimit_opt ::= SLIMIT signed SOFFSET signed */
{ 253, 0 }, /* (228) where_opt ::= */ { 262, -4 }, /* (228) slimit_opt ::= SLIMIT signed COMMA signed */
{ 253, -2 }, /* (229) where_opt ::= WHERE expr */ { 253, 0 }, /* (229) where_opt ::= */
{ 267, -3 }, /* (230) expr ::= LP expr RP */ { 253, -2 }, /* (230) where_opt ::= WHERE expr */
{ 267, -1 }, /* (231) expr ::= ID */ { 267, -3 }, /* (231) expr ::= LP expr RP */
{ 267, -3 }, /* (232) expr ::= ID DOT ID */ { 267, -1 }, /* (232) expr ::= ID */
{ 267, -3 }, /* (233) expr ::= ID DOT STAR */ { 267, -3 }, /* (233) expr ::= ID DOT ID */
{ 267, -1 }, /* (234) expr ::= INTEGER */ { 267, -3 }, /* (234) expr ::= ID DOT STAR */
{ 267, -2 }, /* (235) expr ::= MINUS INTEGER */ { 267, -1 }, /* (235) expr ::= INTEGER */
{ 267, -2 }, /* (236) expr ::= PLUS INTEGER */ { 267, -2 }, /* (236) expr ::= MINUS INTEGER */
{ 267, -1 }, /* (237) expr ::= FLOAT */ { 267, -2 }, /* (237) expr ::= PLUS INTEGER */
{ 267, -2 }, /* (238) expr ::= MINUS FLOAT */ { 267, -1 }, /* (238) expr ::= FLOAT */
{ 267, -2 }, /* (239) expr ::= PLUS FLOAT */ { 267, -2 }, /* (239) expr ::= MINUS FLOAT */
{ 267, -1 }, /* (240) expr ::= STRING */ { 267, -2 }, /* (240) expr ::= PLUS FLOAT */
{ 267, -1 }, /* (241) expr ::= NOW */ { 267, -1 }, /* (241) expr ::= STRING */
{ 267, -1 }, /* (242) expr ::= VARIABLE */ { 267, -1 }, /* (242) expr ::= NOW */
{ 267, -2 }, /* (243) expr ::= PLUS VARIABLE */ { 267, -1 }, /* (243) expr ::= VARIABLE */
{ 267, -2 }, /* (244) expr ::= MINUS VARIABLE */ { 267, -2 }, /* (244) expr ::= PLUS VARIABLE */
{ 267, -1 }, /* (245) expr ::= BOOL */ { 267, -2 }, /* (245) expr ::= MINUS VARIABLE */
{ 267, -1 }, /* (246) expr ::= NULL */ { 267, -1 }, /* (246) expr ::= BOOL */
{ 267, -4 }, /* (247) expr ::= ID LP exprlist RP */ { 267, -1 }, /* (247) expr ::= NULL */
{ 267, -4 }, /* (248) expr ::= ID LP STAR RP */ { 267, -4 }, /* (248) expr ::= ID LP exprlist RP */
{ 267, -3 }, /* (249) expr ::= expr IS NULL */ { 267, -4 }, /* (249) expr ::= ID LP STAR RP */
{ 267, -4 }, /* (250) expr ::= expr IS NOT NULL */ { 267, -3 }, /* (250) expr ::= expr IS NULL */
{ 267, -3 }, /* (251) expr ::= expr LT expr */ { 267, -4 }, /* (251) expr ::= expr IS NOT NULL */
{ 267, -3 }, /* (252) expr ::= expr GT expr */ { 267, -3 }, /* (252) expr ::= expr LT expr */
{ 267, -3 }, /* (253) expr ::= expr LE expr */ { 267, -3 }, /* (253) expr ::= expr GT expr */
{ 267, -3 }, /* (254) expr ::= expr GE expr */ { 267, -3 }, /* (254) expr ::= expr LE expr */
{ 267, -3 }, /* (255) expr ::= expr NE expr */ { 267, -3 }, /* (255) expr ::= expr GE expr */
{ 267, -3 }, /* (256) expr ::= expr EQ expr */ { 267, -3 }, /* (256) expr ::= expr NE expr */
{ 267, -5 }, /* (257) expr ::= expr BETWEEN expr AND expr */ { 267, -3 }, /* (257) expr ::= expr EQ expr */
{ 267, -3 }, /* (258) expr ::= expr AND expr */ { 267, -5 }, /* (258) expr ::= expr BETWEEN expr AND expr */
{ 267, -3 }, /* (259) expr ::= expr OR expr */ { 267, -3 }, /* (259) expr ::= expr AND expr */
{ 267, -3 }, /* (260) expr ::= expr PLUS expr */ { 267, -3 }, /* (260) expr ::= expr OR expr */
{ 267, -3 }, /* (261) expr ::= expr MINUS expr */ { 267, -3 }, /* (261) expr ::= expr PLUS expr */
{ 267, -3 }, /* (262) expr ::= expr STAR expr */ { 267, -3 }, /* (262) expr ::= expr MINUS expr */
{ 267, -3 }, /* (263) expr ::= expr SLASH expr */ { 267, -3 }, /* (263) expr ::= expr STAR expr */
{ 267, -3 }, /* (264) expr ::= expr REM expr */ { 267, -3 }, /* (264) expr ::= expr SLASH expr */
{ 267, -3 }, /* (265) expr ::= expr LIKE expr */ { 267, -3 }, /* (265) expr ::= expr REM expr */
{ 267, -3 }, /* (266) expr ::= expr MATCH expr */ { 267, -3 }, /* (266) expr ::= expr LIKE expr */
{ 267, -3 }, /* (267) expr ::= expr NMATCH expr */ { 267, -3 }, /* (267) expr ::= expr MATCH expr */
{ 267, -5 }, /* (268) expr ::= expr IN LP exprlist RP */ { 267, -3 }, /* (268) expr ::= expr NMATCH expr */
{ 207, -3 }, /* (269) exprlist ::= exprlist COMMA expritem */ { 267, -5 }, /* (269) expr ::= expr IN LP exprlist RP */
{ 207, -1 }, /* (270) exprlist ::= expritem */ { 207, -3 }, /* (270) exprlist ::= exprlist COMMA expritem */
{ 278, -1 }, /* (271) expritem ::= expr */ { 207, -1 }, /* (271) exprlist ::= expritem */
{ 278, 0 }, /* (272) expritem ::= */ { 278, -1 }, /* (272) expritem ::= expr */
{ 199, -3 }, /* (273) cmd ::= RESET QUERY CACHE */ { 278, 0 }, /* (273) expritem ::= */
{ 199, -3 }, /* (274) cmd ::= SYNCDB ids REPLICA */ { 199, -3 }, /* (274) cmd ::= RESET QUERY CACHE */
{ 199, -7 }, /* (275) cmd ::= ALTER TABLE ids cpxName ADD COLUMN columnlist */ { 199, -3 }, /* (275) cmd ::= SYNCDB ids REPLICA */
{ 199, -7 }, /* (276) cmd ::= ALTER TABLE ids cpxName DROP COLUMN ids */ { 199, -7 }, /* (276) cmd ::= ALTER TABLE ids cpxName ADD COLUMN columnlist */
{ 199, -7 }, /* (277) cmd ::= ALTER TABLE ids cpxName MODIFY COLUMN columnlist */ { 199, -7 }, /* (277) cmd ::= ALTER TABLE ids cpxName DROP COLUMN ids */
{ 199, -7 }, /* (278) cmd ::= ALTER TABLE ids cpxName ADD TAG columnlist */ { 199, -7 }, /* (278) cmd ::= ALTER TABLE ids cpxName MODIFY COLUMN columnlist */
{ 199, -7 }, /* (279) cmd ::= ALTER TABLE ids cpxName DROP TAG ids */ { 199, -7 }, /* (279) cmd ::= ALTER TABLE ids cpxName ADD TAG columnlist */
{ 199, -8 }, /* (280) cmd ::= ALTER TABLE ids cpxName CHANGE TAG ids ids */ { 199, -7 }, /* (280) cmd ::= ALTER TABLE ids cpxName DROP TAG ids */
{ 199, -9 }, /* (281) cmd ::= ALTER TABLE ids cpxName SET TAG ids EQ tagitem */ { 199, -8 }, /* (281) cmd ::= ALTER TABLE ids cpxName CHANGE TAG ids ids */
{ 199, -7 }, /* (282) cmd ::= ALTER TABLE ids cpxName MODIFY TAG columnlist */ { 199, -9 }, /* (282) cmd ::= ALTER TABLE ids cpxName SET TAG ids EQ tagitem */
{ 199, -7 }, /* (283) cmd ::= ALTER STABLE ids cpxName ADD COLUMN columnlist */ { 199, -7 }, /* (283) cmd ::= ALTER TABLE ids cpxName MODIFY TAG columnlist */
{ 199, -7 }, /* (284) cmd ::= ALTER STABLE ids cpxName DROP COLUMN ids */ { 199, -7 }, /* (284) cmd ::= ALTER STABLE ids cpxName ADD COLUMN columnlist */
{ 199, -7 }, /* (285) cmd ::= ALTER STABLE ids cpxName MODIFY COLUMN columnlist */ { 199, -7 }, /* (285) cmd ::= ALTER STABLE ids cpxName DROP COLUMN ids */
{ 199, -7 }, /* (286) cmd ::= ALTER STABLE ids cpxName ADD TAG columnlist */ { 199, -7 }, /* (286) cmd ::= ALTER STABLE ids cpxName MODIFY COLUMN columnlist */
{ 199, -7 }, /* (287) cmd ::= ALTER STABLE ids cpxName DROP TAG ids */ { 199, -7 }, /* (287) cmd ::= ALTER STABLE ids cpxName ADD TAG columnlist */
{ 199, -8 }, /* (288) cmd ::= ALTER STABLE ids cpxName CHANGE TAG ids ids */ { 199, -7 }, /* (288) cmd ::= ALTER STABLE ids cpxName DROP TAG ids */
{ 199, -9 }, /* (289) cmd ::= ALTER STABLE ids cpxName SET TAG ids EQ tagitem */ { 199, -8 }, /* (289) cmd ::= ALTER STABLE ids cpxName CHANGE TAG ids ids */
{ 199, -7 }, /* (290) cmd ::= ALTER STABLE ids cpxName MODIFY TAG columnlist */ { 199, -9 }, /* (290) cmd ::= ALTER STABLE ids cpxName SET TAG ids EQ tagitem */
{ 199, -3 }, /* (291) cmd ::= KILL CONNECTION INTEGER */ { 199, -7 }, /* (291) cmd ::= ALTER STABLE ids cpxName MODIFY TAG columnlist */
{ 199, -5 }, /* (292) cmd ::= KILL STREAM INTEGER COLON INTEGER */ { 199, -3 }, /* (292) cmd ::= KILL CONNECTION INTEGER */
{ 199, -5 }, /* (293) cmd ::= KILL QUERY INTEGER COLON INTEGER */ { 199, -5 }, /* (293) cmd ::= KILL STREAM INTEGER COLON INTEGER */
{ 199, -5 }, /* (294) cmd ::= KILL QUERY INTEGER COLON INTEGER */
}; };
static void yy_accept(yyParser*); /* Forward Declaration */ static void yy_accept(yyParser*); /* Forward Declaration */
...@@ -2414,7 +2417,7 @@ static void yy_reduce( ...@@ -2414,7 +2417,7 @@ static void yy_reduce(
break; break;
case 55: /* ifexists ::= */ case 55: /* ifexists ::= */
case 57: /* ifnotexists ::= */ yytestcase(yyruleno==57); case 57: /* ifnotexists ::= */ yytestcase(yyruleno==57);
case 181: /* distinct ::= */ yytestcase(yyruleno==181); case 182: /* distinct ::= */ yytestcase(yyruleno==182);
{ yymsp[1].minor.yy0.n = 0;} { yymsp[1].minor.yy0.n = 0;}
break; break;
case 56: /* ifnotexists ::= IF NOT EXISTS */ case 56: /* ifnotexists ::= IF NOT EXISTS */
...@@ -2754,140 +2757,144 @@ static void yy_reduce( ...@@ -2754,140 +2757,144 @@ static void yy_reduce(
{yymsp[-2].minor.yy488 = yymsp[-1].minor.yy488;} {yymsp[-2].minor.yy488 = yymsp[-1].minor.yy488;}
break; break;
case 169: /* union ::= select */ case 169: /* union ::= select */
{ yylhsminor.yy135 = setSubclause(NULL, yymsp[0].minor.yy488); } { yylhsminor.yy551 = setSubclause(NULL, yymsp[0].minor.yy488); }
yymsp[0].minor.yy135 = yylhsminor.yy135; yymsp[0].minor.yy551 = yylhsminor.yy551;
break; break;
case 170: /* union ::= union UNION ALL select */ case 170: /* union ::= union UNION ALL select */
{ yylhsminor.yy135 = appendSelectClause(yymsp[-3].minor.yy135, yymsp[0].minor.yy488); } { yylhsminor.yy551 = appendSelectClause(yymsp[-3].minor.yy551, SQL_TYPE_UNIONALL, yymsp[0].minor.yy488); }
yymsp[-3].minor.yy135 = yylhsminor.yy135; yymsp[-3].minor.yy551 = yylhsminor.yy551;
break;
case 171: /* union ::= union UNION select */
{ yylhsminor.yy551 = appendSelectClause(yymsp[-2].minor.yy551, SQL_TYPE_UNION, yymsp[0].minor.yy488); }
yymsp[-2].minor.yy551 = yylhsminor.yy551;
break; break;
case 171: /* cmd ::= union */ case 172: /* cmd ::= union */
{ setSqlInfo(pInfo, yymsp[0].minor.yy135, NULL, TSDB_SQL_SELECT); } { setSqlInfo(pInfo, yymsp[0].minor.yy551, NULL, TSDB_SQL_SELECT); }
break; break;
case 172: /* select ::= SELECT selcollist */ case 173: /* select ::= SELECT selcollist */
{ {
yylhsminor.yy488 = tSetQuerySqlNode(&yymsp[-1].minor.yy0, yymsp[0].minor.yy135, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); yylhsminor.yy488 = tSetQuerySqlNode(&yymsp[-1].minor.yy0, yymsp[0].minor.yy135, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
} }
yymsp[-1].minor.yy488 = yylhsminor.yy488; yymsp[-1].minor.yy488 = yylhsminor.yy488;
break; break;
case 173: /* sclp ::= selcollist COMMA */ case 174: /* sclp ::= selcollist COMMA */
{yylhsminor.yy135 = yymsp[-1].minor.yy135;} {yylhsminor.yy135 = yymsp[-1].minor.yy135;}
yymsp[-1].minor.yy135 = yylhsminor.yy135; yymsp[-1].minor.yy135 = yylhsminor.yy135;
break; break;
case 174: /* sclp ::= */ case 175: /* sclp ::= */
case 206: /* orderby_opt ::= */ yytestcase(yyruleno==206); case 207: /* orderby_opt ::= */ yytestcase(yyruleno==207);
{yymsp[1].minor.yy135 = 0;} {yymsp[1].minor.yy135 = 0;}
break; break;
case 175: /* selcollist ::= sclp distinct expr as */ case 176: /* selcollist ::= sclp distinct expr as */
{ {
yylhsminor.yy135 = tSqlExprListAppend(yymsp[-3].minor.yy135, yymsp[-1].minor.yy526, yymsp[-2].minor.yy0.n? &yymsp[-2].minor.yy0:0, yymsp[0].minor.yy0.n?&yymsp[0].minor.yy0:0); yylhsminor.yy135 = tSqlExprListAppend(yymsp[-3].minor.yy135, yymsp[-1].minor.yy526, yymsp[-2].minor.yy0.n? &yymsp[-2].minor.yy0:0, yymsp[0].minor.yy0.n?&yymsp[0].minor.yy0:0);
} }
yymsp[-3].minor.yy135 = yylhsminor.yy135; yymsp[-3].minor.yy135 = yylhsminor.yy135;
break; break;
case 176: /* selcollist ::= sclp STAR */ case 177: /* selcollist ::= sclp STAR */
{ {
tSqlExpr *pNode = tSqlExprCreateIdValue(NULL, TK_ALL); tSqlExpr *pNode = tSqlExprCreateIdValue(NULL, TK_ALL);
yylhsminor.yy135 = tSqlExprListAppend(yymsp[-1].minor.yy135, pNode, 0, 0); yylhsminor.yy135 = tSqlExprListAppend(yymsp[-1].minor.yy135, pNode, 0, 0);
} }
yymsp[-1].minor.yy135 = yylhsminor.yy135; yymsp[-1].minor.yy135 = yylhsminor.yy135;
break; break;
case 177: /* as ::= AS ids */ case 178: /* as ::= AS ids */
{ yymsp[-1].minor.yy0 = yymsp[0].minor.yy0; } { yymsp[-1].minor.yy0 = yymsp[0].minor.yy0; }
break; break;
case 178: /* as ::= ids */ case 179: /* as ::= ids */
{ yylhsminor.yy0 = yymsp[0].minor.yy0; } { yylhsminor.yy0 = yymsp[0].minor.yy0; }
yymsp[0].minor.yy0 = yylhsminor.yy0; yymsp[0].minor.yy0 = yylhsminor.yy0;
break; break;
case 179: /* as ::= */ case 180: /* as ::= */
{ yymsp[1].minor.yy0.n = 0; } { yymsp[1].minor.yy0.n = 0; }
break; break;
case 180: /* distinct ::= DISTINCT */ case 181: /* distinct ::= DISTINCT */
{ yylhsminor.yy0 = yymsp[0].minor.yy0; } { yylhsminor.yy0 = yymsp[0].minor.yy0; }
yymsp[0].minor.yy0 = yylhsminor.yy0; yymsp[0].minor.yy0 = yylhsminor.yy0;
break; break;
case 182: /* from ::= FROM tablelist */ case 183: /* from ::= FROM tablelist */
case 183: /* from ::= FROM sub */ yytestcase(yyruleno==183); case 184: /* from ::= FROM sub */ yytestcase(yyruleno==184);
{yymsp[-1].minor.yy460 = yymsp[0].minor.yy460;} {yymsp[-1].minor.yy460 = yymsp[0].minor.yy460;}
break; break;
case 184: /* sub ::= LP union RP */ case 185: /* sub ::= LP union RP */
{yymsp[-2].minor.yy460 = addSubquery(NULL, yymsp[-1].minor.yy135, NULL);} {yymsp[-2].minor.yy460 = addSubquery(NULL, yymsp[-1].minor.yy551, NULL);}
break; break;
case 185: /* sub ::= LP union RP ids */ case 186: /* sub ::= LP union RP ids */
{yymsp[-3].minor.yy460 = addSubquery(NULL, yymsp[-2].minor.yy135, &yymsp[0].minor.yy0);} {yymsp[-3].minor.yy460 = addSubquery(NULL, yymsp[-2].minor.yy551, &yymsp[0].minor.yy0);}
break; break;
case 186: /* sub ::= sub COMMA LP union RP ids */ case 187: /* sub ::= sub COMMA LP union RP ids */
{yylhsminor.yy460 = addSubquery(yymsp[-5].minor.yy460, yymsp[-2].minor.yy135, &yymsp[0].minor.yy0);} {yylhsminor.yy460 = addSubquery(yymsp[-5].minor.yy460, yymsp[-2].minor.yy551, &yymsp[0].minor.yy0);}
yymsp[-5].minor.yy460 = yylhsminor.yy460; yymsp[-5].minor.yy460 = yylhsminor.yy460;
break; break;
case 187: /* tablelist ::= ids cpxName */ case 188: /* tablelist ::= ids cpxName */
{ {
yymsp[-1].minor.yy0.n += yymsp[0].minor.yy0.n; yymsp[-1].minor.yy0.n += yymsp[0].minor.yy0.n;
yylhsminor.yy460 = setTableNameList(NULL, &yymsp[-1].minor.yy0, NULL); yylhsminor.yy460 = setTableNameList(NULL, &yymsp[-1].minor.yy0, NULL);
} }
yymsp[-1].minor.yy460 = yylhsminor.yy460; yymsp[-1].minor.yy460 = yylhsminor.yy460;
break; break;
case 188: /* tablelist ::= ids cpxName ids */ case 189: /* tablelist ::= ids cpxName ids */
{ {
yymsp[-2].minor.yy0.n += yymsp[-1].minor.yy0.n; yymsp[-2].minor.yy0.n += yymsp[-1].minor.yy0.n;
yylhsminor.yy460 = setTableNameList(NULL, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0); yylhsminor.yy460 = setTableNameList(NULL, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0);
} }
yymsp[-2].minor.yy460 = yylhsminor.yy460; yymsp[-2].minor.yy460 = yylhsminor.yy460;
break; break;
case 189: /* tablelist ::= tablelist COMMA ids cpxName */ case 190: /* tablelist ::= tablelist COMMA ids cpxName */
{ {
yymsp[-1].minor.yy0.n += yymsp[0].minor.yy0.n; yymsp[-1].minor.yy0.n += yymsp[0].minor.yy0.n;
yylhsminor.yy460 = setTableNameList(yymsp[-3].minor.yy460, &yymsp[-1].minor.yy0, NULL); yylhsminor.yy460 = setTableNameList(yymsp[-3].minor.yy460, &yymsp[-1].minor.yy0, NULL);
} }
yymsp[-3].minor.yy460 = yylhsminor.yy460; yymsp[-3].minor.yy460 = yylhsminor.yy460;
break; break;
case 190: /* tablelist ::= tablelist COMMA ids cpxName ids */ case 191: /* tablelist ::= tablelist COMMA ids cpxName ids */
{ {
yymsp[-2].minor.yy0.n += yymsp[-1].minor.yy0.n; yymsp[-2].minor.yy0.n += yymsp[-1].minor.yy0.n;
yylhsminor.yy460 = setTableNameList(yymsp[-4].minor.yy460, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0); yylhsminor.yy460 = setTableNameList(yymsp[-4].minor.yy460, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0);
} }
yymsp[-4].minor.yy460 = yylhsminor.yy460; yymsp[-4].minor.yy460 = yylhsminor.yy460;
break; break;
case 191: /* tmvar ::= VARIABLE */ case 192: /* tmvar ::= VARIABLE */
{yylhsminor.yy0 = yymsp[0].minor.yy0;} {yylhsminor.yy0 = yymsp[0].minor.yy0;}
yymsp[0].minor.yy0 = yylhsminor.yy0; yymsp[0].minor.yy0 = yylhsminor.yy0;
break; break;
case 192: /* interval_option ::= intervalKey LP tmvar RP */ case 193: /* interval_option ::= intervalKey LP tmvar RP */
{yylhsminor.yy160.interval = yymsp[-1].minor.yy0; yylhsminor.yy160.offset.n = 0; yylhsminor.yy160.token = yymsp[-3].minor.yy262;} {yylhsminor.yy160.interval = yymsp[-1].minor.yy0; yylhsminor.yy160.offset.n = 0; yylhsminor.yy160.token = yymsp[-3].minor.yy262;}
yymsp[-3].minor.yy160 = yylhsminor.yy160; yymsp[-3].minor.yy160 = yylhsminor.yy160;
break; break;
case 193: /* interval_option ::= intervalKey LP tmvar COMMA tmvar RP */ case 194: /* interval_option ::= intervalKey LP tmvar COMMA tmvar RP */
{yylhsminor.yy160.interval = yymsp[-3].minor.yy0; yylhsminor.yy160.offset = yymsp[-1].minor.yy0; yylhsminor.yy160.token = yymsp[-5].minor.yy262;} {yylhsminor.yy160.interval = yymsp[-3].minor.yy0; yylhsminor.yy160.offset = yymsp[-1].minor.yy0; yylhsminor.yy160.token = yymsp[-5].minor.yy262;}
yymsp[-5].minor.yy160 = yylhsminor.yy160; yymsp[-5].minor.yy160 = yylhsminor.yy160;
break; break;
case 194: /* interval_option ::= */ case 195: /* interval_option ::= */
{memset(&yymsp[1].minor.yy160, 0, sizeof(yymsp[1].minor.yy160));} {memset(&yymsp[1].minor.yy160, 0, sizeof(yymsp[1].minor.yy160));}
break; break;
case 195: /* intervalKey ::= INTERVAL */ case 196: /* intervalKey ::= INTERVAL */
{yymsp[0].minor.yy262 = TK_INTERVAL;} {yymsp[0].minor.yy262 = TK_INTERVAL;}
break; break;
case 196: /* intervalKey ::= EVERY */ case 197: /* intervalKey ::= EVERY */
{yymsp[0].minor.yy262 = TK_EVERY; } {yymsp[0].minor.yy262 = TK_EVERY; }
break; break;
case 197: /* session_option ::= */ case 198: /* session_option ::= */
{yymsp[1].minor.yy511.col.n = 0; yymsp[1].minor.yy511.gap.n = 0;} {yymsp[1].minor.yy511.col.n = 0; yymsp[1].minor.yy511.gap.n = 0;}
break; break;
case 198: /* session_option ::= SESSION LP ids cpxName COMMA tmvar RP */ case 199: /* session_option ::= SESSION LP ids cpxName COMMA tmvar RP */
{ {
yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n; yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n;
yymsp[-6].minor.yy511.col = yymsp[-4].minor.yy0; yymsp[-6].minor.yy511.col = yymsp[-4].minor.yy0;
yymsp[-6].minor.yy511.gap = yymsp[-1].minor.yy0; yymsp[-6].minor.yy511.gap = yymsp[-1].minor.yy0;
} }
break; break;
case 199: /* windowstate_option ::= */ case 200: /* windowstate_option ::= */
{ yymsp[1].minor.yy258.col.n = 0; yymsp[1].minor.yy258.col.z = NULL;} { yymsp[1].minor.yy258.col.n = 0; yymsp[1].minor.yy258.col.z = NULL;}
break; break;
case 200: /* windowstate_option ::= STATE_WINDOW LP ids RP */ case 201: /* windowstate_option ::= STATE_WINDOW LP ids RP */
{ yymsp[-3].minor.yy258.col = yymsp[-1].minor.yy0; } { yymsp[-3].minor.yy258.col = yymsp[-1].minor.yy0; }
break; break;
case 201: /* fill_opt ::= */ case 202: /* fill_opt ::= */
{ yymsp[1].minor.yy135 = 0; } { yymsp[1].minor.yy135 = 0; }
break; break;
case 202: /* fill_opt ::= FILL LP ID COMMA tagitemlist RP */ case 203: /* fill_opt ::= FILL LP ID COMMA tagitemlist RP */
{ {
SVariant A = {0}; SVariant A = {0};
toTSDBType(yymsp[-3].minor.yy0.type); toTSDBType(yymsp[-3].minor.yy0.type);
...@@ -2897,34 +2904,34 @@ static void yy_reduce( ...@@ -2897,34 +2904,34 @@ static void yy_reduce(
yymsp[-5].minor.yy135 = yymsp[-1].minor.yy135; yymsp[-5].minor.yy135 = yymsp[-1].minor.yy135;
} }
break; break;
case 203: /* fill_opt ::= FILL LP ID RP */ case 204: /* fill_opt ::= FILL LP ID RP */
{ {
toTSDBType(yymsp[-1].minor.yy0.type); toTSDBType(yymsp[-1].minor.yy0.type);
yymsp[-3].minor.yy135 = tListItemAppendToken(NULL, &yymsp[-1].minor.yy0, -1); yymsp[-3].minor.yy135 = tListItemAppendToken(NULL, &yymsp[-1].minor.yy0, -1);
} }
break; break;
case 204: /* sliding_opt ::= SLIDING LP tmvar RP */ case 205: /* sliding_opt ::= SLIDING LP tmvar RP */
{yymsp[-3].minor.yy0 = yymsp[-1].minor.yy0; } {yymsp[-3].minor.yy0 = yymsp[-1].minor.yy0; }
break; break;
case 205: /* sliding_opt ::= */ case 206: /* sliding_opt ::= */
{yymsp[1].minor.yy0.n = 0; yymsp[1].minor.yy0.z = NULL; yymsp[1].minor.yy0.type = 0; } {yymsp[1].minor.yy0.n = 0; yymsp[1].minor.yy0.z = NULL; yymsp[1].minor.yy0.type = 0; }
break; break;
case 207: /* orderby_opt ::= ORDER BY sortlist */ case 208: /* orderby_opt ::= ORDER BY sortlist */
{yymsp[-2].minor.yy135 = yymsp[0].minor.yy135;} {yymsp[-2].minor.yy135 = yymsp[0].minor.yy135;}
break; break;
case 208: /* sortlist ::= sortlist COMMA item sortorder */ case 209: /* sortlist ::= sortlist COMMA item sortorder */
{ {
yylhsminor.yy135 = tListItemAppend(yymsp[-3].minor.yy135, &yymsp[-1].minor.yy191, yymsp[0].minor.yy130); yylhsminor.yy135 = tListItemAppend(yymsp[-3].minor.yy135, &yymsp[-1].minor.yy191, yymsp[0].minor.yy130);
} }
yymsp[-3].minor.yy135 = yylhsminor.yy135; yymsp[-3].minor.yy135 = yylhsminor.yy135;
break; break;
case 209: /* sortlist ::= item sortorder */ case 210: /* sortlist ::= item sortorder */
{ {
yylhsminor.yy135 = tListItemAppend(NULL, &yymsp[-1].minor.yy191, yymsp[0].minor.yy130); yylhsminor.yy135 = tListItemAppend(NULL, &yymsp[-1].minor.yy191, yymsp[0].minor.yy130);
} }
yymsp[-1].minor.yy135 = yylhsminor.yy135; yymsp[-1].minor.yy135 = yylhsminor.yy135;
break; break;
case 210: /* item ::= ids cpxName */ case 211: /* item ::= ids cpxName */
{ {
toTSDBType(yymsp[-1].minor.yy0.type); toTSDBType(yymsp[-1].minor.yy0.type);
yymsp[-1].minor.yy0.n += yymsp[0].minor.yy0.n; yymsp[-1].minor.yy0.n += yymsp[0].minor.yy0.n;
...@@ -2933,260 +2940,258 @@ static void yy_reduce( ...@@ -2933,260 +2940,258 @@ static void yy_reduce(
} }
yymsp[-1].minor.yy191 = yylhsminor.yy191; yymsp[-1].minor.yy191 = yylhsminor.yy191;
break; break;
case 211: /* sortorder ::= ASC */ case 212: /* sortorder ::= ASC */
{ yymsp[0].minor.yy130 = TSDB_ORDER_ASC; } { yymsp[0].minor.yy130 = TSDB_ORDER_ASC; }
break; break;
case 212: /* sortorder ::= DESC */ case 213: /* sortorder ::= DESC */
{ yymsp[0].minor.yy130 = TSDB_ORDER_DESC;} { yymsp[0].minor.yy130 = TSDB_ORDER_DESC;}
break; break;
case 213: /* sortorder ::= */ case 214: /* sortorder ::= */
{ yymsp[1].minor.yy130 = TSDB_ORDER_ASC; } { yymsp[1].minor.yy130 = TSDB_ORDER_ASC; }
break; break;
case 214: /* groupby_opt ::= */ case 215: /* groupby_opt ::= */
{ yymsp[1].minor.yy135 = 0;} { yymsp[1].minor.yy135 = 0;}
break; break;
case 215: /* groupby_opt ::= GROUP BY grouplist */ case 216: /* groupby_opt ::= GROUP BY grouplist */
{ yymsp[-2].minor.yy135 = yymsp[0].minor.yy135;} { yymsp[-2].minor.yy135 = yymsp[0].minor.yy135;}
break; break;
case 216: /* grouplist ::= grouplist COMMA item */ case 217: /* grouplist ::= grouplist COMMA item */
{ {
yylhsminor.yy135 = tListItemAppend(yymsp[-2].minor.yy135, &yymsp[0].minor.yy191, -1); yylhsminor.yy135 = tListItemAppend(yymsp[-2].minor.yy135, &yymsp[0].minor.yy191, -1);
} }
yymsp[-2].minor.yy135 = yylhsminor.yy135; yymsp[-2].minor.yy135 = yylhsminor.yy135;
break; break;
case 217: /* grouplist ::= item */ case 218: /* grouplist ::= item */
{ {
yylhsminor.yy135 = tListItemAppend(NULL, &yymsp[0].minor.yy191, -1); yylhsminor.yy135 = tListItemAppend(NULL, &yymsp[0].minor.yy191, -1);
} }
yymsp[0].minor.yy135 = yylhsminor.yy135; yymsp[0].minor.yy135 = yylhsminor.yy135;
break; break;
case 218: /* having_opt ::= */ case 219: /* having_opt ::= */
case 228: /* where_opt ::= */ yytestcase(yyruleno==228); case 229: /* where_opt ::= */ yytestcase(yyruleno==229);
case 272: /* expritem ::= */ yytestcase(yyruleno==272); case 273: /* expritem ::= */ yytestcase(yyruleno==273);
{yymsp[1].minor.yy526 = 0;} {yymsp[1].minor.yy526 = 0;}
break; break;
case 219: /* having_opt ::= HAVING expr */ case 220: /* having_opt ::= HAVING expr */
case 229: /* where_opt ::= WHERE expr */ yytestcase(yyruleno==229); case 230: /* where_opt ::= WHERE expr */ yytestcase(yyruleno==230);
{yymsp[-1].minor.yy526 = yymsp[0].minor.yy526;} {yymsp[-1].minor.yy526 = yymsp[0].minor.yy526;}
break; break;
case 220: /* limit_opt ::= */ case 221: /* limit_opt ::= */
case 224: /* slimit_opt ::= */ yytestcase(yyruleno==224); case 225: /* slimit_opt ::= */ yytestcase(yyruleno==225);
{yymsp[1].minor.yy247.limit = -1; yymsp[1].minor.yy247.offset = 0;} {yymsp[1].minor.yy247.limit = -1; yymsp[1].minor.yy247.offset = 0;}
break; break;
case 221: /* limit_opt ::= LIMIT signed */ case 222: /* limit_opt ::= LIMIT signed */
case 225: /* slimit_opt ::= SLIMIT signed */ yytestcase(yyruleno==225); case 226: /* slimit_opt ::= SLIMIT signed */ yytestcase(yyruleno==226);
{yymsp[-1].minor.yy247.limit = yymsp[0].minor.yy531; yymsp[-1].minor.yy247.offset = 0;} {yymsp[-1].minor.yy247.limit = yymsp[0].minor.yy531; yymsp[-1].minor.yy247.offset = 0;}
break; break;
case 222: /* limit_opt ::= LIMIT signed OFFSET signed */ case 223: /* limit_opt ::= LIMIT signed OFFSET signed */
{ yymsp[-3].minor.yy247.limit = yymsp[-2].minor.yy531; yymsp[-3].minor.yy247.offset = yymsp[0].minor.yy531;} { yymsp[-3].minor.yy247.limit = yymsp[-2].minor.yy531; yymsp[-3].minor.yy247.offset = yymsp[0].minor.yy531;}
break; break;
case 223: /* limit_opt ::= LIMIT signed COMMA signed */ case 224: /* limit_opt ::= LIMIT signed COMMA signed */
{ yymsp[-3].minor.yy247.limit = yymsp[0].minor.yy531; yymsp[-3].minor.yy247.offset = yymsp[-2].minor.yy531;} { yymsp[-3].minor.yy247.limit = yymsp[0].minor.yy531; yymsp[-3].minor.yy247.offset = yymsp[-2].minor.yy531;}
break; break;
case 226: /* slimit_opt ::= SLIMIT signed SOFFSET signed */ case 227: /* slimit_opt ::= SLIMIT signed SOFFSET signed */
{yymsp[-3].minor.yy247.limit = yymsp[-2].minor.yy531; yymsp[-3].minor.yy247.offset = yymsp[0].minor.yy531;} {yymsp[-3].minor.yy247.limit = yymsp[-2].minor.yy531; yymsp[-3].minor.yy247.offset = yymsp[0].minor.yy531;}
break; break;
case 227: /* slimit_opt ::= SLIMIT signed COMMA signed */ case 228: /* slimit_opt ::= SLIMIT signed COMMA signed */
{yymsp[-3].minor.yy247.limit = yymsp[0].minor.yy531; yymsp[-3].minor.yy247.offset = yymsp[-2].minor.yy531;} {yymsp[-3].minor.yy247.limit = yymsp[0].minor.yy531; yymsp[-3].minor.yy247.offset = yymsp[-2].minor.yy531;}
break; break;
case 230: /* expr ::= LP expr RP */ case 231: /* expr ::= LP expr RP */
{yylhsminor.yy526 = yymsp[-1].minor.yy526; yylhsminor.yy526->exprToken.z = yymsp[-2].minor.yy0.z; yylhsminor.yy526->exprToken.n = (yymsp[0].minor.yy0.z - yymsp[-2].minor.yy0.z + 1);} {yylhsminor.yy526 = yymsp[-1].minor.yy526; yylhsminor.yy526->exprToken.z = yymsp[-2].minor.yy0.z; yylhsminor.yy526->exprToken.n = (yymsp[0].minor.yy0.z - yymsp[-2].minor.yy0.z + 1);}
yymsp[-2].minor.yy526 = yylhsminor.yy526; yymsp[-2].minor.yy526 = yylhsminor.yy526;
break; break;
case 231: /* expr ::= ID */ case 232: /* expr ::= ID */
{ yylhsminor.yy526 = tSqlExprCreateIdValue(&yymsp[0].minor.yy0, TK_ID);} { yylhsminor.yy526 = tSqlExprCreateIdValue(&yymsp[0].minor.yy0, TK_ID);}
yymsp[0].minor.yy526 = yylhsminor.yy526; yymsp[0].minor.yy526 = yylhsminor.yy526;
break; break;
case 232: /* expr ::= ID DOT ID */ case 233: /* expr ::= ID DOT ID */
{ yymsp[-2].minor.yy0.n += (1+yymsp[0].minor.yy0.n); yylhsminor.yy526 = tSqlExprCreateIdValue(&yymsp[-2].minor.yy0, TK_ID);} { yymsp[-2].minor.yy0.n += (1+yymsp[0].minor.yy0.n); yylhsminor.yy526 = tSqlExprCreateIdValue(&yymsp[-2].minor.yy0, TK_ID);}
yymsp[-2].minor.yy526 = yylhsminor.yy526; yymsp[-2].minor.yy526 = yylhsminor.yy526;
break; break;
case 233: /* expr ::= ID DOT STAR */ case 234: /* expr ::= ID DOT STAR */
{ yymsp[-2].minor.yy0.n += (1+yymsp[0].minor.yy0.n); yylhsminor.yy526 = tSqlExprCreateIdValue(&yymsp[-2].minor.yy0, TK_ALL);} { yymsp[-2].minor.yy0.n += (1+yymsp[0].minor.yy0.n); yylhsminor.yy526 = tSqlExprCreateIdValue(&yymsp[-2].minor.yy0, TK_ALL);}
yymsp[-2].minor.yy526 = yylhsminor.yy526; yymsp[-2].minor.yy526 = yylhsminor.yy526;
break; break;
case 234: /* expr ::= INTEGER */ case 235: /* expr ::= INTEGER */
{ yylhsminor.yy526 = tSqlExprCreateIdValue(&yymsp[0].minor.yy0, TK_INTEGER);} { yylhsminor.yy526 = tSqlExprCreateIdValue(&yymsp[0].minor.yy0, TK_INTEGER);}
yymsp[0].minor.yy526 = yylhsminor.yy526; yymsp[0].minor.yy526 = yylhsminor.yy526;
break; break;
case 235: /* expr ::= MINUS INTEGER */ case 236: /* expr ::= MINUS INTEGER */
case 236: /* expr ::= PLUS INTEGER */ yytestcase(yyruleno==236); case 237: /* expr ::= PLUS INTEGER */ yytestcase(yyruleno==237);
{ yymsp[-1].minor.yy0.n += yymsp[0].minor.yy0.n; yymsp[-1].minor.yy0.type = TK_INTEGER; yylhsminor.yy526 = tSqlExprCreateIdValue(&yymsp[-1].minor.yy0, TK_INTEGER);} { yymsp[-1].minor.yy0.n += yymsp[0].minor.yy0.n; yymsp[-1].minor.yy0.type = TK_INTEGER; yylhsminor.yy526 = tSqlExprCreateIdValue(&yymsp[-1].minor.yy0, TK_INTEGER);}
yymsp[-1].minor.yy526 = yylhsminor.yy526; yymsp[-1].minor.yy526 = yylhsminor.yy526;
break; break;
case 237: /* expr ::= FLOAT */ case 238: /* expr ::= FLOAT */
{ yylhsminor.yy526 = tSqlExprCreateIdValue(&yymsp[0].minor.yy0, TK_FLOAT);} { yylhsminor.yy526 = tSqlExprCreateIdValue(&yymsp[0].minor.yy0, TK_FLOAT);}
yymsp[0].minor.yy526 = yylhsminor.yy526; yymsp[0].minor.yy526 = yylhsminor.yy526;
break; break;
case 238: /* expr ::= MINUS FLOAT */ case 239: /* expr ::= MINUS FLOAT */
case 239: /* expr ::= PLUS FLOAT */ yytestcase(yyruleno==239); case 240: /* expr ::= PLUS FLOAT */ yytestcase(yyruleno==240);
{ yymsp[-1].minor.yy0.n += yymsp[0].minor.yy0.n; yymsp[-1].minor.yy0.type = TK_FLOAT; yylhsminor.yy526 = tSqlExprCreateIdValue(&yymsp[-1].minor.yy0, TK_FLOAT);} { yymsp[-1].minor.yy0.n += yymsp[0].minor.yy0.n; yymsp[-1].minor.yy0.type = TK_FLOAT; yylhsminor.yy526 = tSqlExprCreateIdValue(&yymsp[-1].minor.yy0, TK_FLOAT);}
yymsp[-1].minor.yy526 = yylhsminor.yy526; yymsp[-1].minor.yy526 = yylhsminor.yy526;
break; break;
case 240: /* expr ::= STRING */ case 241: /* expr ::= STRING */
{ yylhsminor.yy526 = tSqlExprCreateIdValue(&yymsp[0].minor.yy0, TK_STRING);} { yylhsminor.yy526 = tSqlExprCreateIdValue(&yymsp[0].minor.yy0, TK_STRING);}
yymsp[0].minor.yy526 = yylhsminor.yy526; yymsp[0].minor.yy526 = yylhsminor.yy526;
break; break;
case 241: /* expr ::= NOW */ case 242: /* expr ::= NOW */
{ yylhsminor.yy526 = tSqlExprCreateIdValue(&yymsp[0].minor.yy0, TK_NOW); } { yylhsminor.yy526 = tSqlExprCreateIdValue(&yymsp[0].minor.yy0, TK_NOW); }
yymsp[0].minor.yy526 = yylhsminor.yy526; yymsp[0].minor.yy526 = yylhsminor.yy526;
break; break;
case 242: /* expr ::= VARIABLE */ case 243: /* expr ::= VARIABLE */
{ yylhsminor.yy526 = tSqlExprCreateIdValue(&yymsp[0].minor.yy0, TK_VARIABLE);} { yylhsminor.yy526 = tSqlExprCreateIdValue(&yymsp[0].minor.yy0, TK_VARIABLE);}
yymsp[0].minor.yy526 = yylhsminor.yy526; yymsp[0].minor.yy526 = yylhsminor.yy526;
break; break;
case 243: /* expr ::= PLUS VARIABLE */ case 244: /* expr ::= PLUS VARIABLE */
case 244: /* expr ::= MINUS VARIABLE */ yytestcase(yyruleno==244); case 245: /* expr ::= MINUS VARIABLE */ yytestcase(yyruleno==245);
{ yymsp[-1].minor.yy0.n += yymsp[0].minor.yy0.n; yymsp[-1].minor.yy0.type = TK_VARIABLE; yylhsminor.yy526 = tSqlExprCreateIdValue(&yymsp[-1].minor.yy0, TK_VARIABLE);} { yymsp[-1].minor.yy0.n += yymsp[0].minor.yy0.n; yymsp[-1].minor.yy0.type = TK_VARIABLE; yylhsminor.yy526 = tSqlExprCreateIdValue(&yymsp[-1].minor.yy0, TK_VARIABLE);}
yymsp[-1].minor.yy526 = yylhsminor.yy526; yymsp[-1].minor.yy526 = yylhsminor.yy526;
break; break;
case 245: /* expr ::= BOOL */ case 246: /* expr ::= BOOL */
{ yylhsminor.yy526 = tSqlExprCreateIdValue(&yymsp[0].minor.yy0, TK_BOOL);} { yylhsminor.yy526 = tSqlExprCreateIdValue(&yymsp[0].minor.yy0, TK_BOOL);}
yymsp[0].minor.yy526 = yylhsminor.yy526; yymsp[0].minor.yy526 = yylhsminor.yy526;
break; break;
case 246: /* expr ::= NULL */ case 247: /* expr ::= NULL */
{ yylhsminor.yy526 = tSqlExprCreateIdValue(&yymsp[0].minor.yy0, TK_NULL);} { yylhsminor.yy526 = tSqlExprCreateIdValue(&yymsp[0].minor.yy0, TK_NULL);}
yymsp[0].minor.yy526 = yylhsminor.yy526; yymsp[0].minor.yy526 = yylhsminor.yy526;
break; break;
case 247: /* expr ::= ID LP exprlist RP */ case 248: /* expr ::= ID LP exprlist RP */
{ tRecordFuncName(pInfo->funcs, &yymsp[-3].minor.yy0); yylhsminor.yy526 = tSqlExprCreateFunction(yymsp[-1].minor.yy135, &yymsp[-3].minor.yy0, &yymsp[0].minor.yy0, yymsp[-3].minor.yy0.type); } { tRecordFuncName(pInfo->funcs, &yymsp[-3].minor.yy0); yylhsminor.yy526 = tSqlExprCreateFunction(yymsp[-1].minor.yy135, &yymsp[-3].minor.yy0, &yymsp[0].minor.yy0, yymsp[-3].minor.yy0.type); }
yymsp[-3].minor.yy526 = yylhsminor.yy526; yymsp[-3].minor.yy526 = yylhsminor.yy526;
break; break;
case 248: /* expr ::= ID LP STAR RP */ case 249: /* expr ::= ID LP STAR RP */
{ tRecordFuncName(pInfo->funcs, &yymsp[-3].minor.yy0); yylhsminor.yy526 = tSqlExprCreateFunction(NULL, &yymsp[-3].minor.yy0, &yymsp[0].minor.yy0, yymsp[-3].minor.yy0.type); } { tRecordFuncName(pInfo->funcs, &yymsp[-3].minor.yy0); yylhsminor.yy526 = tSqlExprCreateFunction(NULL, &yymsp[-3].minor.yy0, &yymsp[0].minor.yy0, yymsp[-3].minor.yy0.type); }
yymsp[-3].minor.yy526 = yylhsminor.yy526; yymsp[-3].minor.yy526 = yylhsminor.yy526;
break; break;
case 249: /* expr ::= expr IS NULL */ case 250: /* expr ::= expr IS NULL */
{yylhsminor.yy526 = tSqlExprCreate(yymsp[-2].minor.yy526, NULL, TK_ISNULL);} {yylhsminor.yy526 = tSqlExprCreate(yymsp[-2].minor.yy526, NULL, TK_ISNULL);}
yymsp[-2].minor.yy526 = yylhsminor.yy526; yymsp[-2].minor.yy526 = yylhsminor.yy526;
break; break;
case 250: /* expr ::= expr IS NOT NULL */ case 251: /* expr ::= expr IS NOT NULL */
{yylhsminor.yy526 = tSqlExprCreate(yymsp[-3].minor.yy526, NULL, TK_NOTNULL);} {yylhsminor.yy526 = tSqlExprCreate(yymsp[-3].minor.yy526, NULL, TK_NOTNULL);}
yymsp[-3].minor.yy526 = yylhsminor.yy526; yymsp[-3].minor.yy526 = yylhsminor.yy526;
break; break;
case 251: /* expr ::= expr LT expr */ case 252: /* expr ::= expr LT expr */
{yylhsminor.yy526 = tSqlExprCreate(yymsp[-2].minor.yy526, yymsp[0].minor.yy526, TK_LT);} {yylhsminor.yy526 = tSqlExprCreate(yymsp[-2].minor.yy526, yymsp[0].minor.yy526, TK_LT);}
yymsp[-2].minor.yy526 = yylhsminor.yy526; yymsp[-2].minor.yy526 = yylhsminor.yy526;
break; break;
case 252: /* expr ::= expr GT expr */ case 253: /* expr ::= expr GT expr */
{yylhsminor.yy526 = tSqlExprCreate(yymsp[-2].minor.yy526, yymsp[0].minor.yy526, TK_GT);} {yylhsminor.yy526 = tSqlExprCreate(yymsp[-2].minor.yy526, yymsp[0].minor.yy526, TK_GT);}
yymsp[-2].minor.yy526 = yylhsminor.yy526; yymsp[-2].minor.yy526 = yylhsminor.yy526;
break; break;
case 253: /* expr ::= expr LE expr */ case 254: /* expr ::= expr LE expr */
{yylhsminor.yy526 = tSqlExprCreate(yymsp[-2].minor.yy526, yymsp[0].minor.yy526, TK_LE);} {yylhsminor.yy526 = tSqlExprCreate(yymsp[-2].minor.yy526, yymsp[0].minor.yy526, TK_LE);}
yymsp[-2].minor.yy526 = yylhsminor.yy526; yymsp[-2].minor.yy526 = yylhsminor.yy526;
break; break;
case 254: /* expr ::= expr GE expr */ case 255: /* expr ::= expr GE expr */
{yylhsminor.yy526 = tSqlExprCreate(yymsp[-2].minor.yy526, yymsp[0].minor.yy526, TK_GE);} {yylhsminor.yy526 = tSqlExprCreate(yymsp[-2].minor.yy526, yymsp[0].minor.yy526, TK_GE);}
yymsp[-2].minor.yy526 = yylhsminor.yy526; yymsp[-2].minor.yy526 = yylhsminor.yy526;
break; break;
case 255: /* expr ::= expr NE expr */ case 256: /* expr ::= expr NE expr */
{yylhsminor.yy526 = tSqlExprCreate(yymsp[-2].minor.yy526, yymsp[0].minor.yy526, TK_NE);} {yylhsminor.yy526 = tSqlExprCreate(yymsp[-2].minor.yy526, yymsp[0].minor.yy526, TK_NE);}
yymsp[-2].minor.yy526 = yylhsminor.yy526; yymsp[-2].minor.yy526 = yylhsminor.yy526;
break; break;
case 256: /* expr ::= expr EQ expr */ case 257: /* expr ::= expr EQ expr */
{yylhsminor.yy526 = tSqlExprCreate(yymsp[-2].minor.yy526, yymsp[0].minor.yy526, TK_EQ);} {yylhsminor.yy526 = tSqlExprCreate(yymsp[-2].minor.yy526, yymsp[0].minor.yy526, TK_EQ);}
yymsp[-2].minor.yy526 = yylhsminor.yy526; yymsp[-2].minor.yy526 = yylhsminor.yy526;
break; break;
case 257: /* expr ::= expr BETWEEN expr AND expr */ case 258: /* expr ::= expr BETWEEN expr AND expr */
{ tSqlExpr* X2 = tSqlExprClone(yymsp[-4].minor.yy526); yylhsminor.yy526 = tSqlExprCreate(tSqlExprCreate(yymsp[-4].minor.yy526, yymsp[-2].minor.yy526, TK_GE), tSqlExprCreate(X2, yymsp[0].minor.yy526, TK_LE), TK_AND);} { tSqlExpr* X2 = tSqlExprClone(yymsp[-4].minor.yy526); yylhsminor.yy526 = tSqlExprCreate(tSqlExprCreate(yymsp[-4].minor.yy526, yymsp[-2].minor.yy526, TK_GE), tSqlExprCreate(X2, yymsp[0].minor.yy526, TK_LE), TK_AND);}
yymsp[-4].minor.yy526 = yylhsminor.yy526; yymsp[-4].minor.yy526 = yylhsminor.yy526;
break; break;
case 258: /* expr ::= expr AND expr */ case 259: /* expr ::= expr AND expr */
{yylhsminor.yy526 = tSqlExprCreate(yymsp[-2].minor.yy526, yymsp[0].minor.yy526, TK_AND);} {yylhsminor.yy526 = tSqlExprCreate(yymsp[-2].minor.yy526, yymsp[0].minor.yy526, TK_AND);}
yymsp[-2].minor.yy526 = yylhsminor.yy526; yymsp[-2].minor.yy526 = yylhsminor.yy526;
break; break;
case 259: /* expr ::= expr OR expr */ case 260: /* expr ::= expr OR expr */
{yylhsminor.yy526 = tSqlExprCreate(yymsp[-2].minor.yy526, yymsp[0].minor.yy526, TK_OR); } {yylhsminor.yy526 = tSqlExprCreate(yymsp[-2].minor.yy526, yymsp[0].minor.yy526, TK_OR); }
yymsp[-2].minor.yy526 = yylhsminor.yy526; yymsp[-2].minor.yy526 = yylhsminor.yy526;
break; break;
case 260: /* expr ::= expr PLUS expr */ case 261: /* expr ::= expr PLUS expr */
{yylhsminor.yy526 = tSqlExprCreate(yymsp[-2].minor.yy526, yymsp[0].minor.yy526, TK_PLUS); } {yylhsminor.yy526 = tSqlExprCreate(yymsp[-2].minor.yy526, yymsp[0].minor.yy526, TK_PLUS); }
yymsp[-2].minor.yy526 = yylhsminor.yy526; yymsp[-2].minor.yy526 = yylhsminor.yy526;
break; break;
case 261: /* expr ::= expr MINUS expr */ case 262: /* expr ::= expr MINUS expr */
{yylhsminor.yy526 = tSqlExprCreate(yymsp[-2].minor.yy526, yymsp[0].minor.yy526, TK_MINUS); } {yylhsminor.yy526 = tSqlExprCreate(yymsp[-2].minor.yy526, yymsp[0].minor.yy526, TK_MINUS); }
yymsp[-2].minor.yy526 = yylhsminor.yy526; yymsp[-2].minor.yy526 = yylhsminor.yy526;
break; break;
case 262: /* expr ::= expr STAR expr */ case 263: /* expr ::= expr STAR expr */
{yylhsminor.yy526 = tSqlExprCreate(yymsp[-2].minor.yy526, yymsp[0].minor.yy526, TK_STAR); } {yylhsminor.yy526 = tSqlExprCreate(yymsp[-2].minor.yy526, yymsp[0].minor.yy526, TK_STAR); }
yymsp[-2].minor.yy526 = yylhsminor.yy526; yymsp[-2].minor.yy526 = yylhsminor.yy526;
break; break;
case 263: /* expr ::= expr SLASH expr */ case 264: /* expr ::= expr SLASH expr */
{yylhsminor.yy526 = tSqlExprCreate(yymsp[-2].minor.yy526, yymsp[0].minor.yy526, TK_DIVIDE);} {yylhsminor.yy526 = tSqlExprCreate(yymsp[-2].minor.yy526, yymsp[0].minor.yy526, TK_DIVIDE);}
yymsp[-2].minor.yy526 = yylhsminor.yy526; yymsp[-2].minor.yy526 = yylhsminor.yy526;
break; break;
case 264: /* expr ::= expr REM expr */ case 265: /* expr ::= expr REM expr */
{yylhsminor.yy526 = tSqlExprCreate(yymsp[-2].minor.yy526, yymsp[0].minor.yy526, TK_REM); } {yylhsminor.yy526 = tSqlExprCreate(yymsp[-2].minor.yy526, yymsp[0].minor.yy526, TK_REM); }
yymsp[-2].minor.yy526 = yylhsminor.yy526; yymsp[-2].minor.yy526 = yylhsminor.yy526;
break; break;
case 265: /* expr ::= expr LIKE expr */ case 266: /* expr ::= expr LIKE expr */
{yylhsminor.yy526 = tSqlExprCreate(yymsp[-2].minor.yy526, yymsp[0].minor.yy526, TK_LIKE); } {yylhsminor.yy526 = tSqlExprCreate(yymsp[-2].minor.yy526, yymsp[0].minor.yy526, TK_LIKE); }
yymsp[-2].minor.yy526 = yylhsminor.yy526; yymsp[-2].minor.yy526 = yylhsminor.yy526;
break; break;
case 266: /* expr ::= expr MATCH expr */ case 267: /* expr ::= expr MATCH expr */
{yylhsminor.yy526 = tSqlExprCreate(yymsp[-2].minor.yy526, yymsp[0].minor.yy526, TK_MATCH); } {yylhsminor.yy526 = tSqlExprCreate(yymsp[-2].minor.yy526, yymsp[0].minor.yy526, TK_MATCH); }
yymsp[-2].minor.yy526 = yylhsminor.yy526; yymsp[-2].minor.yy526 = yylhsminor.yy526;
break; break;
case 267: /* expr ::= expr NMATCH expr */ case 268: /* expr ::= expr NMATCH expr */
{yylhsminor.yy526 = tSqlExprCreate(yymsp[-2].minor.yy526, yymsp[0].minor.yy526, TK_NMATCH); } {yylhsminor.yy526 = tSqlExprCreate(yymsp[-2].minor.yy526, yymsp[0].minor.yy526, TK_NMATCH); }
yymsp[-2].minor.yy526 = yylhsminor.yy526; yymsp[-2].minor.yy526 = yylhsminor.yy526;
break; break;
case 268: /* expr ::= expr IN LP exprlist RP */ case 269: /* expr ::= expr IN LP exprlist RP */
{yylhsminor.yy526 = tSqlExprCreate(yymsp[-4].minor.yy526, (tSqlExpr*)yymsp[-1].minor.yy135, TK_IN); } {yylhsminor.yy526 = tSqlExprCreate(yymsp[-4].minor.yy526, (tSqlExpr*)yymsp[-1].minor.yy135, TK_IN); }
yymsp[-4].minor.yy526 = yylhsminor.yy526; yymsp[-4].minor.yy526 = yylhsminor.yy526;
break; break;
case 269: /* exprlist ::= exprlist COMMA expritem */ case 270: /* exprlist ::= exprlist COMMA expritem */
{yylhsminor.yy135 = tSqlExprListAppend(yymsp[-2].minor.yy135,yymsp[0].minor.yy526,0, 0);} {yylhsminor.yy135 = tSqlExprListAppend(yymsp[-2].minor.yy135,yymsp[0].minor.yy526,0, 0);}
yymsp[-2].minor.yy135 = yylhsminor.yy135; yymsp[-2].minor.yy135 = yylhsminor.yy135;
break; break;
case 270: /* exprlist ::= expritem */ case 271: /* exprlist ::= expritem */
{yylhsminor.yy135 = tSqlExprListAppend(0,yymsp[0].minor.yy526,0, 0);} {yylhsminor.yy135 = tSqlExprListAppend(0,yymsp[0].minor.yy526,0, 0);}
yymsp[0].minor.yy135 = yylhsminor.yy135; yymsp[0].minor.yy135 = yylhsminor.yy135;
break; break;
case 271: /* expritem ::= expr */ case 272: /* expritem ::= expr */
{yylhsminor.yy526 = yymsp[0].minor.yy526;} {yylhsminor.yy526 = yymsp[0].minor.yy526;}
yymsp[0].minor.yy526 = yylhsminor.yy526; yymsp[0].minor.yy526 = yylhsminor.yy526;
break; break;
case 273: /* cmd ::= RESET QUERY CACHE */ case 274: /* cmd ::= RESET QUERY CACHE */
{ setDCLSqlElems(pInfo, TSDB_SQL_RESET_CACHE, 0);} { setDCLSqlElems(pInfo, TSDB_SQL_RESET_CACHE, 0);}
break; break;
case 274: /* cmd ::= SYNCDB ids REPLICA */ case 275: /* cmd ::= SYNCDB ids REPLICA */
{ setDCLSqlElems(pInfo, TSDB_SQL_SYNC_DB_REPLICA, 1, &yymsp[-1].minor.yy0);} { setDCLSqlElems(pInfo, TSDB_SQL_SYNC_DB_REPLICA, 1, &yymsp[-1].minor.yy0);}
break; break;
case 275: /* cmd ::= ALTER TABLE ids cpxName ADD COLUMN columnlist */ case 276: /* cmd ::= ALTER TABLE ids cpxName ADD COLUMN columnlist */
{ {
yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n; yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n;
SAlterTableInfo* pAlterTable = tSetAlterTableInfo(&yymsp[-4].minor.yy0, yymsp[0].minor.yy135, NULL, TSDB_ALTER_TABLE_ADD_COLUMN, -1); SAlterTableInfo* pAlterTable = tSetAlterTableInfo(&yymsp[-4].minor.yy0, yymsp[0].minor.yy135, NULL, TSDB_ALTER_TABLE_ADD_COLUMN, -1);
setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE); setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE);
} }
break; break;
case 276: /* cmd ::= ALTER TABLE ids cpxName DROP COLUMN ids */ case 277: /* cmd ::= ALTER TABLE ids cpxName DROP COLUMN ids */
{ {
yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n; yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n;
toTSDBType(yymsp[0].minor.yy0.type); toTSDBType(yymsp[0].minor.yy0.type);
SArray* K = tListItemAppendToken(NULL, &yymsp[0].minor.yy0, -1); SArray* K = tListItemAppendToken(NULL, &yymsp[0].minor.yy0, -1);
SAlterTableInfo* pAlterTable = tSetAlterTableInfo(&yymsp[-4].minor.yy0, NULL, K, TSDB_ALTER_TABLE_DROP_COLUMN, -1); SAlterTableInfo* pAlterTable = tSetAlterTableInfo(&yymsp[-4].minor.yy0, NULL, K, TSDB_ALTER_TABLE_DROP_COLUMN, -1);
setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE); setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE);
} }
break; break;
case 277: /* cmd ::= ALTER TABLE ids cpxName MODIFY COLUMN columnlist */ case 278: /* cmd ::= ALTER TABLE ids cpxName MODIFY COLUMN columnlist */
{ {
yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n; yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n;
SAlterTableInfo* pAlterTable = tSetAlterTableInfo(&yymsp[-4].minor.yy0, yymsp[0].minor.yy135, NULL, TSDB_ALTER_TABLE_CHANGE_COLUMN, -1); SAlterTableInfo* pAlterTable = tSetAlterTableInfo(&yymsp[-4].minor.yy0, yymsp[0].minor.yy135, NULL, TSDB_ALTER_TABLE_CHANGE_COLUMN, -1);
setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE); setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE);
} }
break; break;
case 278: /* cmd ::= ALTER TABLE ids cpxName ADD TAG columnlist */ case 279: /* cmd ::= ALTER TABLE ids cpxName ADD TAG columnlist */
{ {
yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n; yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n;
SAlterTableInfo* pAlterTable = tSetAlterTableInfo(&yymsp[-4].minor.yy0, yymsp[0].minor.yy135, NULL, TSDB_ALTER_TABLE_ADD_TAG_COLUMN, -1); SAlterTableInfo* pAlterTable = tSetAlterTableInfo(&yymsp[-4].minor.yy0, yymsp[0].minor.yy135, NULL, TSDB_ALTER_TABLE_ADD_TAG_COLUMN, -1);
setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE); setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE);
} }
break; break;
case 279: /* cmd ::= ALTER TABLE ids cpxName DROP TAG ids */ case 280: /* cmd ::= ALTER TABLE ids cpxName DROP TAG ids */
{ {
yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n; yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n;
...@@ -3197,7 +3202,7 @@ static void yy_reduce( ...@@ -3197,7 +3202,7 @@ static void yy_reduce(
setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE); setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE);
} }
break; break;
case 280: /* cmd ::= ALTER TABLE ids cpxName CHANGE TAG ids ids */ case 281: /* cmd ::= ALTER TABLE ids cpxName CHANGE TAG ids ids */
{ {
yymsp[-5].minor.yy0.n += yymsp[-4].minor.yy0.n; yymsp[-5].minor.yy0.n += yymsp[-4].minor.yy0.n;
...@@ -3211,7 +3216,7 @@ static void yy_reduce( ...@@ -3211,7 +3216,7 @@ static void yy_reduce(
setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE); setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE);
} }
break; break;
case 281: /* cmd ::= ALTER TABLE ids cpxName SET TAG ids EQ tagitem */ case 282: /* cmd ::= ALTER TABLE ids cpxName SET TAG ids EQ tagitem */
{ {
yymsp[-6].minor.yy0.n += yymsp[-5].minor.yy0.n; yymsp[-6].minor.yy0.n += yymsp[-5].minor.yy0.n;
...@@ -3223,21 +3228,21 @@ static void yy_reduce( ...@@ -3223,21 +3228,21 @@ static void yy_reduce(
setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE); setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE);
} }
break; break;
case 282: /* cmd ::= ALTER TABLE ids cpxName MODIFY TAG columnlist */ case 283: /* cmd ::= ALTER TABLE ids cpxName MODIFY TAG columnlist */
{ {
yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n; yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n;
SAlterTableInfo* pAlterTable = tSetAlterTableInfo(&yymsp[-4].minor.yy0, yymsp[0].minor.yy135, NULL, TSDB_ALTER_TABLE_MODIFY_TAG_COLUMN, -1); SAlterTableInfo* pAlterTable = tSetAlterTableInfo(&yymsp[-4].minor.yy0, yymsp[0].minor.yy135, NULL, TSDB_ALTER_TABLE_MODIFY_TAG_COLUMN, -1);
setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE); setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE);
} }
break; break;
case 283: /* cmd ::= ALTER STABLE ids cpxName ADD COLUMN columnlist */ case 284: /* cmd ::= ALTER STABLE ids cpxName ADD COLUMN columnlist */
{ {
yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n; yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n;
SAlterTableInfo* pAlterTable = tSetAlterTableInfo(&yymsp[-4].minor.yy0, yymsp[0].minor.yy135, NULL, TSDB_ALTER_TABLE_ADD_COLUMN, TSDB_SUPER_TABLE); SAlterTableInfo* pAlterTable = tSetAlterTableInfo(&yymsp[-4].minor.yy0, yymsp[0].minor.yy135, NULL, TSDB_ALTER_TABLE_ADD_COLUMN, TSDB_SUPER_TABLE);
setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE); setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE);
} }
break; break;
case 284: /* cmd ::= ALTER STABLE ids cpxName DROP COLUMN ids */ case 285: /* cmd ::= ALTER STABLE ids cpxName DROP COLUMN ids */
{ {
yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n; yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n;
...@@ -3248,21 +3253,21 @@ static void yy_reduce( ...@@ -3248,21 +3253,21 @@ static void yy_reduce(
setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE); setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE);
} }
break; break;
case 285: /* cmd ::= ALTER STABLE ids cpxName MODIFY COLUMN columnlist */ case 286: /* cmd ::= ALTER STABLE ids cpxName MODIFY COLUMN columnlist */
{ {
yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n; yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n;
SAlterTableInfo* pAlterTable = tSetAlterTableInfo(&yymsp[-4].minor.yy0, yymsp[0].minor.yy135, NULL, TSDB_ALTER_TABLE_CHANGE_COLUMN, TSDB_SUPER_TABLE); SAlterTableInfo* pAlterTable = tSetAlterTableInfo(&yymsp[-4].minor.yy0, yymsp[0].minor.yy135, NULL, TSDB_ALTER_TABLE_CHANGE_COLUMN, TSDB_SUPER_TABLE);
setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE); setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE);
} }
break; break;
case 286: /* cmd ::= ALTER STABLE ids cpxName ADD TAG columnlist */ case 287: /* cmd ::= ALTER STABLE ids cpxName ADD TAG columnlist */
{ {
yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n; yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n;
SAlterTableInfo* pAlterTable = tSetAlterTableInfo(&yymsp[-4].minor.yy0, yymsp[0].minor.yy135, NULL, TSDB_ALTER_TABLE_ADD_TAG_COLUMN, TSDB_SUPER_TABLE); SAlterTableInfo* pAlterTable = tSetAlterTableInfo(&yymsp[-4].minor.yy0, yymsp[0].minor.yy135, NULL, TSDB_ALTER_TABLE_ADD_TAG_COLUMN, TSDB_SUPER_TABLE);
setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE); setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE);
} }
break; break;
case 287: /* cmd ::= ALTER STABLE ids cpxName DROP TAG ids */ case 288: /* cmd ::= ALTER STABLE ids cpxName DROP TAG ids */
{ {
yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n; yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n;
...@@ -3273,7 +3278,7 @@ static void yy_reduce( ...@@ -3273,7 +3278,7 @@ static void yy_reduce(
setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE); setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE);
} }
break; break;
case 288: /* cmd ::= ALTER STABLE ids cpxName CHANGE TAG ids ids */ case 289: /* cmd ::= ALTER STABLE ids cpxName CHANGE TAG ids ids */
{ {
yymsp[-5].minor.yy0.n += yymsp[-4].minor.yy0.n; yymsp[-5].minor.yy0.n += yymsp[-4].minor.yy0.n;
...@@ -3287,7 +3292,7 @@ static void yy_reduce( ...@@ -3287,7 +3292,7 @@ static void yy_reduce(
setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE); setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE);
} }
break; break;
case 289: /* cmd ::= ALTER STABLE ids cpxName SET TAG ids EQ tagitem */ case 290: /* cmd ::= ALTER STABLE ids cpxName SET TAG ids EQ tagitem */
{ {
yymsp[-6].minor.yy0.n += yymsp[-5].minor.yy0.n; yymsp[-6].minor.yy0.n += yymsp[-5].minor.yy0.n;
...@@ -3299,20 +3304,20 @@ static void yy_reduce( ...@@ -3299,20 +3304,20 @@ static void yy_reduce(
setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE); setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE);
} }
break; break;
case 290: /* cmd ::= ALTER STABLE ids cpxName MODIFY TAG columnlist */ case 291: /* cmd ::= ALTER STABLE ids cpxName MODIFY TAG columnlist */
{ {
yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n; yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n;
SAlterTableInfo* pAlterTable = tSetAlterTableInfo(&yymsp[-4].minor.yy0, yymsp[0].minor.yy135, NULL, TSDB_ALTER_TABLE_MODIFY_TAG_COLUMN, TSDB_SUPER_TABLE); SAlterTableInfo* pAlterTable = tSetAlterTableInfo(&yymsp[-4].minor.yy0, yymsp[0].minor.yy135, NULL, TSDB_ALTER_TABLE_MODIFY_TAG_COLUMN, TSDB_SUPER_TABLE);
setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE); setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE);
} }
break; break;
case 291: /* cmd ::= KILL CONNECTION INTEGER */ case 292: /* cmd ::= KILL CONNECTION INTEGER */
{setKillSql(pInfo, TSDB_SQL_KILL_CONNECTION, &yymsp[0].minor.yy0);} {setKillSql(pInfo, TSDB_SQL_KILL_CONNECTION, &yymsp[0].minor.yy0);}
break; break;
case 292: /* cmd ::= KILL STREAM INTEGER COLON INTEGER */ case 293: /* cmd ::= KILL STREAM INTEGER COLON INTEGER */
{yymsp[-2].minor.yy0.n += (yymsp[-1].minor.yy0.n + yymsp[0].minor.yy0.n); setKillSql(pInfo, TSDB_SQL_KILL_STREAM, &yymsp[-2].minor.yy0);} {yymsp[-2].minor.yy0.n += (yymsp[-1].minor.yy0.n + yymsp[0].minor.yy0.n); setKillSql(pInfo, TSDB_SQL_KILL_STREAM, &yymsp[-2].minor.yy0);}
break; break;
case 293: /* cmd ::= KILL QUERY INTEGER COLON INTEGER */ case 294: /* cmd ::= KILL QUERY INTEGER COLON INTEGER */
{yymsp[-2].minor.yy0.n += (yymsp[-1].minor.yy0.n + yymsp[0].minor.yy0.n); setKillSql(pInfo, TSDB_SQL_KILL_QUERY, &yymsp[-2].minor.yy0);} {yymsp[-2].minor.yy0.n += (yymsp[-1].minor.yy0.n + yymsp[0].minor.yy0.n); setKillSql(pInfo, TSDB_SQL_KILL_QUERY, &yymsp[-2].minor.yy0);}
break; break;
default: default:
......
...@@ -75,7 +75,7 @@ void sqlCheck(const char* sql, bool valid) { ...@@ -75,7 +75,7 @@ void sqlCheck(const char* sql, bool valid) {
buf.len = 128; buf.len = 128;
buf.buf = msg; buf.buf = msg;
SSqlNode* pNode = (SSqlNode*)taosArrayGetP(((SArray*)info1.list), 0); SSqlNode* pNode = (SSqlNode*)taosArrayGetP(((SArray*)info1.sub.node), 0);
int32_t code = evaluateSqlNode(pNode, TSDB_TIME_PRECISION_NANO, &buf); int32_t code = evaluateSqlNode(pNode, TSDB_TIME_PRECISION_NANO, &buf);
ASSERT_EQ(code, 0); ASSERT_EQ(code, 0);
...@@ -87,7 +87,7 @@ void sqlCheck(const char* sql, bool valid) { ...@@ -87,7 +87,7 @@ void sqlCheck(const char* sql, bool valid) {
SQueryStmtInfo* pQueryInfo = createQueryInfo(); SQueryStmtInfo* pQueryInfo = createQueryInfo();
setTableMetaInfo(pQueryInfo, &req); setTableMetaInfo(pQueryInfo, &req);
SSqlNode* pSqlNode = (SSqlNode*)taosArrayGetP(info1.list, 0); SSqlNode* pSqlNode = (SSqlNode*)taosArrayGetP(info1.sub.node, 0);
ret = validateSqlNode(pSqlNode, pQueryInfo, &buf); ret = validateSqlNode(pSqlNode, pQueryInfo, &buf);
if (valid) { if (valid) {
...@@ -112,7 +112,7 @@ TEST(testCase, validateAST_test) { ...@@ -112,7 +112,7 @@ TEST(testCase, validateAST_test) {
buf.len = 128; buf.len = 128;
buf.buf = msg; buf.buf = msg;
SSqlNode* pNode = (SSqlNode*)taosArrayGetP(((SArray*)info1.list), 0); SSqlNode* pNode = (SSqlNode*)taosArrayGetP(((SArray*)info1.sub.node), 0);
int32_t code = evaluateSqlNode(pNode, TSDB_TIME_PRECISION_NANO, &buf); int32_t code = evaluateSqlNode(pNode, TSDB_TIME_PRECISION_NANO, &buf);
ASSERT_EQ(code, 0); ASSERT_EQ(code, 0);
...@@ -124,7 +124,7 @@ TEST(testCase, validateAST_test) { ...@@ -124,7 +124,7 @@ TEST(testCase, validateAST_test) {
SQueryStmtInfo* pQueryInfo = createQueryInfo(); SQueryStmtInfo* pQueryInfo = createQueryInfo();
setTableMetaInfo(pQueryInfo, &req); setTableMetaInfo(pQueryInfo, &req);
SSqlNode* pSqlNode = (SSqlNode*)taosArrayGetP(info1.list, 0); SSqlNode* pSqlNode = (SSqlNode*)taosArrayGetP(info1.sub.node, 0);
ret = validateSqlNode(pSqlNode, pQueryInfo, &buf); ret = validateSqlNode(pSqlNode, pQueryInfo, &buf);
SArray* pExprList = pQueryInfo->exprList[0]; SArray* pExprList = pQueryInfo->exprList[0];
...@@ -170,7 +170,7 @@ TEST(testCase, function_Test) { ...@@ -170,7 +170,7 @@ TEST(testCase, function_Test) {
buf.len = 128; buf.len = 128;
buf.buf = msg; buf.buf = msg;
SSqlNode* pNode = (SSqlNode*)taosArrayGetP(((SArray*)info1.list), 0); SSqlNode* pNode = (SSqlNode*)taosArrayGetP(((SArray*)info1.sub.node), 0);
int32_t code = evaluateSqlNode(pNode, TSDB_TIME_PRECISION_NANO, &buf); int32_t code = evaluateSqlNode(pNode, TSDB_TIME_PRECISION_NANO, &buf);
ASSERT_EQ(code, 0); ASSERT_EQ(code, 0);
...@@ -182,7 +182,7 @@ TEST(testCase, function_Test) { ...@@ -182,7 +182,7 @@ TEST(testCase, function_Test) {
SQueryStmtInfo* pQueryInfo = createQueryInfo(); SQueryStmtInfo* pQueryInfo = createQueryInfo();
setTableMetaInfo(pQueryInfo, &req); setTableMetaInfo(pQueryInfo, &req);
SSqlNode* pSqlNode = (SSqlNode*)taosArrayGetP(info1.list, 0); SSqlNode* pSqlNode = (SSqlNode*)taosArrayGetP(info1.sub.node, 0);
ret = validateSqlNode(pSqlNode, pQueryInfo, &buf); ret = validateSqlNode(pSqlNode, pQueryInfo, &buf);
SArray* pExprList = pQueryInfo->exprList[0]; SArray* pExprList = pQueryInfo->exprList[0];
...@@ -216,7 +216,7 @@ TEST(testCase, function_Test2) { ...@@ -216,7 +216,7 @@ TEST(testCase, function_Test2) {
buf.len = 128; buf.len = 128;
buf.buf = msg; buf.buf = msg;
SSqlNode* pNode = (SSqlNode*)taosArrayGetP(((SArray*)info1.list), 0); SSqlNode* pNode = (SSqlNode*)taosArrayGetP(((SArray*)info1.sub.node), 0);
int32_t code = evaluateSqlNode(pNode, TSDB_TIME_PRECISION_NANO, &buf); int32_t code = evaluateSqlNode(pNode, TSDB_TIME_PRECISION_NANO, &buf);
ASSERT_EQ(code, 0); ASSERT_EQ(code, 0);
...@@ -228,7 +228,7 @@ TEST(testCase, function_Test2) { ...@@ -228,7 +228,7 @@ TEST(testCase, function_Test2) {
SQueryStmtInfo* pQueryInfo = createQueryInfo(); SQueryStmtInfo* pQueryInfo = createQueryInfo();
setTableMetaInfo(pQueryInfo, &req); setTableMetaInfo(pQueryInfo, &req);
SSqlNode* pSqlNode = (SSqlNode*)taosArrayGetP(info1.list, 0); SSqlNode* pSqlNode = (SSqlNode*)taosArrayGetP(info1.sub.node, 0);
ret = validateSqlNode(pSqlNode, pQueryInfo, &buf); ret = validateSqlNode(pSqlNode, pQueryInfo, &buf);
SArray* pExprList = pQueryInfo->exprList[0]; SArray* pExprList = pQueryInfo->exprList[0];
...@@ -262,7 +262,7 @@ TEST(testCase, function_Test3) { ...@@ -262,7 +262,7 @@ TEST(testCase, function_Test3) {
buf.len = 128; buf.len = 128;
buf.buf = msg; buf.buf = msg;
SSqlNode* pNode = (SSqlNode*)taosArrayGetP(((SArray*)info1.list), 0); SSqlNode* pNode = (SSqlNode*)taosArrayGetP(((SArray*)info1.sub.node), 0);
int32_t code = evaluateSqlNode(pNode, TSDB_TIME_PRECISION_NANO, &buf); int32_t code = evaluateSqlNode(pNode, TSDB_TIME_PRECISION_NANO, &buf);
ASSERT_EQ(code, 0); ASSERT_EQ(code, 0);
...@@ -274,7 +274,7 @@ TEST(testCase, function_Test3) { ...@@ -274,7 +274,7 @@ TEST(testCase, function_Test3) {
SQueryStmtInfo* pQueryInfo = createQueryInfo(); SQueryStmtInfo* pQueryInfo = createQueryInfo();
setTableMetaInfo(pQueryInfo, &req); setTableMetaInfo(pQueryInfo, &req);
SSqlNode* pSqlNode = (SSqlNode*)taosArrayGetP(info1.list, 0); SSqlNode* pSqlNode = (SSqlNode*)taosArrayGetP(info1.sub.node, 0);
ret = validateSqlNode(pSqlNode, pQueryInfo, &buf); ret = validateSqlNode(pSqlNode, pQueryInfo, &buf);
SArray* pExprList = pQueryInfo->exprList[0]; SArray* pExprList = pQueryInfo->exprList[0];
...@@ -307,7 +307,7 @@ TEST(testCase, function_Test4) { ...@@ -307,7 +307,7 @@ TEST(testCase, function_Test4) {
buf.len = 128; buf.len = 128;
buf.buf = msg; buf.buf = msg;
SSqlNode* pNode = (SSqlNode*)taosArrayGetP(((SArray*)info1.list), 0); SSqlNode* pNode = (SSqlNode*)taosArrayGetP(((SArray*)info1.sub.node), 0);
int32_t code = evaluateSqlNode(pNode, TSDB_TIME_PRECISION_NANO, &buf); int32_t code = evaluateSqlNode(pNode, TSDB_TIME_PRECISION_NANO, &buf);
ASSERT_EQ(code, 0); ASSERT_EQ(code, 0);
...@@ -319,7 +319,7 @@ TEST(testCase, function_Test4) { ...@@ -319,7 +319,7 @@ TEST(testCase, function_Test4) {
SQueryStmtInfo* pQueryInfo = createQueryInfo(); SQueryStmtInfo* pQueryInfo = createQueryInfo();
setTableMetaInfo(pQueryInfo, &req); setTableMetaInfo(pQueryInfo, &req);
SSqlNode* pSqlNode = (SSqlNode*)taosArrayGetP(info1.list, 0); SSqlNode* pSqlNode = (SSqlNode*)taosArrayGetP(info1.sub.node, 0);
ret = validateSqlNode(pSqlNode, pQueryInfo, &buf); ret = validateSqlNode(pSqlNode, pQueryInfo, &buf);
SArray* pExprList = pQueryInfo->exprList[0]; SArray* pExprList = pQueryInfo->exprList[0];
...@@ -355,7 +355,7 @@ TEST(testCase, function_Test5) { ...@@ -355,7 +355,7 @@ TEST(testCase, function_Test5) {
buf.len = 128; buf.len = 128;
buf.buf = msg; buf.buf = msg;
SSqlNode* pNode = (SSqlNode*)taosArrayGetP(((SArray*)info1.list), 0); SSqlNode* pNode = (SSqlNode*)taosArrayGetP(((SArray*)info1.sub.node), 0);
int32_t code = evaluateSqlNode(pNode, TSDB_TIME_PRECISION_NANO, &buf); int32_t code = evaluateSqlNode(pNode, TSDB_TIME_PRECISION_NANO, &buf);
ASSERT_EQ(code, 0); ASSERT_EQ(code, 0);
...@@ -367,7 +367,7 @@ TEST(testCase, function_Test5) { ...@@ -367,7 +367,7 @@ TEST(testCase, function_Test5) {
SQueryStmtInfo* pQueryInfo = createQueryInfo(); SQueryStmtInfo* pQueryInfo = createQueryInfo();
setTableMetaInfo(pQueryInfo, &req); setTableMetaInfo(pQueryInfo, &req);
SSqlNode* pSqlNode = (SSqlNode*)taosArrayGetP(info1.list, 0); SSqlNode* pSqlNode = (SSqlNode*)taosArrayGetP(info1.sub.node, 0);
ret = validateSqlNode(pSqlNode, pQueryInfo, &buf); ret = validateSqlNode(pSqlNode, pQueryInfo, &buf);
ASSERT_EQ(ret, 0); ASSERT_EQ(ret, 0);
...@@ -410,6 +410,8 @@ TEST(testCase, function_Test10) { ...@@ -410,6 +410,8 @@ TEST(testCase, function_Test10) {
sqlCheck("select length(length(length(a))) from `t.1abc`", true); sqlCheck("select length(length(length(a))) from `t.1abc`", true);
sqlCheck("select count() from `t.1abc`", false); sqlCheck("select count() from `t.1abc`", false);
sqlCheck("select block_dist() from `t.1abc`", true); sqlCheck("select block_dist() from `t.1abc`", true);
sqlCheck("select block_dist(a) from `t.1abc`", false);
sqlCheck("select count(*) from `t.1abc` interval(1s) group by a", false);
} }
TEST(testCase, function_Test6) { TEST(testCase, function_Test6) {
...@@ -422,7 +424,7 @@ TEST(testCase, function_Test6) { ...@@ -422,7 +424,7 @@ TEST(testCase, function_Test6) {
buf.len = 128; buf.len = 128;
buf.buf = msg; buf.buf = msg;
SSqlNode* pNode = (SSqlNode*)taosArrayGetP(((SArray*)info1.list), 0); SSqlNode* pNode = (SSqlNode*)taosArrayGetP(((SArray*)info1.sub.node), 0);
int32_t code = evaluateSqlNode(pNode, TSDB_TIME_PRECISION_NANO, &buf); int32_t code = evaluateSqlNode(pNode, TSDB_TIME_PRECISION_NANO, &buf);
ASSERT_EQ(code, 0); ASSERT_EQ(code, 0);
...@@ -434,7 +436,7 @@ TEST(testCase, function_Test6) { ...@@ -434,7 +436,7 @@ TEST(testCase, function_Test6) {
SQueryStmtInfo* pQueryInfo = createQueryInfo(); SQueryStmtInfo* pQueryInfo = createQueryInfo();
setTableMetaInfo(pQueryInfo, &req); setTableMetaInfo(pQueryInfo, &req);
SSqlNode* pSqlNode = (SSqlNode*)taosArrayGetP(info1.list, 0); SSqlNode* pSqlNode = (SSqlNode*)taosArrayGetP(info1.sub.node, 0);
ret = validateSqlNode(pSqlNode, pQueryInfo, &buf); ret = validateSqlNode(pSqlNode, pQueryInfo, &buf);
ASSERT_EQ(ret, 0); ASSERT_EQ(ret, 0);
...@@ -492,7 +494,7 @@ TEST(testCase, function_Test6) { ...@@ -492,7 +494,7 @@ TEST(testCase, function_Test6) {
buf.len = 128; buf.len = 128;
buf.buf = msg; buf.buf = msg;
SSqlNode* pNode = (SSqlNode*) taosArrayGetP(((SArray*)info1.list), 0); SSqlNode* pNode = (SSqlNode*) taosArrayGetP(((SArray*)info1.sub.node), 0);
int32_t code = evaluateSqlNode(pNode, TSDB_TIME_PRECISION_NANO, &buf); int32_t code = evaluateSqlNode(pNode, TSDB_TIME_PRECISION_NANO, &buf);
ASSERT_EQ(code, 0); ASSERT_EQ(code, 0);
...@@ -504,7 +506,7 @@ TEST(testCase, function_Test6) { ...@@ -504,7 +506,7 @@ TEST(testCase, function_Test6) {
SQueryStmtInfo* pQueryInfo = createQueryInfo(); SQueryStmtInfo* pQueryInfo = createQueryInfo();
setTableMetaInfo(pQueryInfo, &req); setTableMetaInfo(pQueryInfo, &req);
SSqlNode* pSqlNode = (SSqlNode*)taosArrayGetP(info1.list, 0); SSqlNode* pSqlNode = (SSqlNode*)taosArrayGetP(info1.sub.node, 0);
ret = validateSqlNode(pSqlNode, pQueryInfo, &buf); ret = validateSqlNode(pSqlNode, pQueryInfo, &buf);
ASSERT_EQ(ret, 0); ASSERT_EQ(ret, 0);
...@@ -551,7 +553,7 @@ TEST(testCase, function_Test6) { ...@@ -551,7 +553,7 @@ TEST(testCase, function_Test6) {
buf.len = 128; buf.len = 128;
buf.buf = msg; buf.buf = msg;
SSqlNode* pNode = (SSqlNode*) taosArrayGetP(((SArray*)info1.list), 0); SSqlNode* pNode = (SSqlNode*) taosArrayGetP(((SArray*)info1.sub.node), 0);
int32_t code = evaluateSqlNode(pNode, TSDB_TIME_PRECISION_NANO, &buf); int32_t code = evaluateSqlNode(pNode, TSDB_TIME_PRECISION_NANO, &buf);
ASSERT_EQ(code, 0); ASSERT_EQ(code, 0);
...@@ -563,7 +565,7 @@ TEST(testCase, function_Test6) { ...@@ -563,7 +565,7 @@ TEST(testCase, function_Test6) {
SQueryStmtInfo* pQueryInfo = createQueryInfo(); SQueryStmtInfo* pQueryInfo = createQueryInfo();
setTableMetaInfo(pQueryInfo, &req); setTableMetaInfo(pQueryInfo, &req);
SSqlNode* pSqlNode = (SSqlNode*)taosArrayGetP(info1.list, 0); SSqlNode* pSqlNode = (SSqlNode*)taosArrayGetP(info1.sub.node, 0);
ret = validateSqlNode(pSqlNode, pQueryInfo, &buf); ret = validateSqlNode(pSqlNode, pQueryInfo, &buf);
ASSERT_EQ(ret, 0); ASSERT_EQ(ret, 0);
...@@ -601,7 +603,7 @@ TEST(testCase, function_Test6) { ...@@ -601,7 +603,7 @@ TEST(testCase, function_Test6) {
info1 = doGenerateAST("select sum(length(a)+length(b)) from `t.1abc` interval(10s, 1s)"); info1 = doGenerateAST("select sum(length(a)+length(b)) from `t.1abc` interval(10s, 1s)");
ASSERT_EQ(info1.valid, true); ASSERT_EQ(info1.valid, true);
pNode = (SSqlNode*) taosArrayGetP(((SArray*)info1.list), 0); pNode = (SSqlNode*) taosArrayGetP(((SArray*)info1.sub.node), 0);
code = evaluateSqlNode(pNode, TSDB_TIME_PRECISION_NANO, &buf); code = evaluateSqlNode(pNode, TSDB_TIME_PRECISION_NANO, &buf);
ASSERT_EQ(code, 0); ASSERT_EQ(code, 0);
...@@ -612,7 +614,7 @@ TEST(testCase, function_Test6) { ...@@ -612,7 +614,7 @@ TEST(testCase, function_Test6) {
pQueryInfo = createQueryInfo(); pQueryInfo = createQueryInfo();
setTableMetaInfo(pQueryInfo, &req); setTableMetaInfo(pQueryInfo, &req);
pSqlNode = (SSqlNode*)taosArrayGetP(info1.list, 0); pSqlNode = (SSqlNode*)taosArrayGetP(info1.sub.node, 0);
ret = validateSqlNode(pSqlNode, pQueryInfo, &buf); ret = validateSqlNode(pSqlNode, pQueryInfo, &buf);
ASSERT_EQ(ret, 0); ASSERT_EQ(ret, 0);
...@@ -630,7 +632,7 @@ TEST(testCase, function_Test6) { ...@@ -630,7 +632,7 @@ TEST(testCase, function_Test6) {
SSqlInfo info1 = doGenerateAST("select count(k) from `t.1abc` interval(10s, 1s)"); SSqlInfo info1 = doGenerateAST("select count(k) from `t.1abc` interval(10s, 1s)");
ASSERT_EQ(info1.valid, true); ASSERT_EQ(info1.valid, true);
SSqlNode* pNode = (SSqlNode*) taosArrayGetP(((SArray*)info1.list), 0); SSqlNode* pNode = (SSqlNode*) taosArrayGetP(((SArray*)info1.sub.node), 0);
int32_t code = evaluateSqlNode(pNode, TSDB_TIME_PRECISION_NANO, &buf); int32_t code = evaluateSqlNode(pNode, TSDB_TIME_PRECISION_NANO, &buf);
ASSERT_EQ(code, 0); ASSERT_EQ(code, 0);
...@@ -642,7 +644,7 @@ TEST(testCase, function_Test6) { ...@@ -642,7 +644,7 @@ TEST(testCase, function_Test6) {
SQueryStmtInfo* pQueryInfo = createQueryInfo(); SQueryStmtInfo* pQueryInfo = createQueryInfo();
setTableMetaInfo(pQueryInfo, &req); setTableMetaInfo(pQueryInfo, &req);
SSqlNode* pSqlNode = (SSqlNode*)taosArrayGetP(info1.list, 0); SSqlNode* pSqlNode = (SSqlNode*)taosArrayGetP(info1.sub.node, 0);
ret = validateSqlNode(pSqlNode, pQueryInfo, &buf); ret = validateSqlNode(pSqlNode, pQueryInfo, &buf);
ASSERT_NE(ret, 0); ASSERT_NE(ret, 0);
...@@ -653,7 +655,7 @@ TEST(testCase, function_Test6) { ...@@ -653,7 +655,7 @@ TEST(testCase, function_Test6) {
info1 = doGenerateAST("select top(a*b, ABC) from `t.1abc` interval(10s, 1s)"); info1 = doGenerateAST("select top(a*b, ABC) from `t.1abc` interval(10s, 1s)");
ASSERT_EQ(info1.valid, true); ASSERT_EQ(info1.valid, true);
pNode = (SSqlNode*) taosArrayGetP(((SArray*)info1.list), 0); pNode = (SSqlNode*) taosArrayGetP(((SArray*)info1.sub.node), 0);
code = evaluateSqlNode(pNode, TSDB_TIME_PRECISION_NANO, &buf); code = evaluateSqlNode(pNode, TSDB_TIME_PRECISION_NANO, &buf);
ASSERT_EQ(code, 0); ASSERT_EQ(code, 0);
...@@ -664,7 +666,7 @@ TEST(testCase, function_Test6) { ...@@ -664,7 +666,7 @@ TEST(testCase, function_Test6) {
pQueryInfo = createQueryInfo(); pQueryInfo = createQueryInfo();
setTableMetaInfo(pQueryInfo, &req); setTableMetaInfo(pQueryInfo, &req);
pSqlNode = (SSqlNode*)taosArrayGetP(info1.list, 0); pSqlNode = (SSqlNode*)taosArrayGetP(info1.sub.node, 0);
ret = validateSqlNode(pSqlNode, pQueryInfo, &buf); ret = validateSqlNode(pSqlNode, pQueryInfo, &buf);
ASSERT_NE(ret, 0); ASSERT_NE(ret, 0);
......
...@@ -75,7 +75,7 @@ void generateLogicplan(const char* sql) { ...@@ -75,7 +75,7 @@ void generateLogicplan(const char* sql) {
buf.len = 128; buf.len = 128;
buf.buf = msg; buf.buf = msg;
SSqlNode* pNode = (SSqlNode*) taosArrayGetP(((SArray*)info1.list), 0); SSqlNode* pNode = (SSqlNode*) taosArrayGetP(((SArray*)info1.sub.node), 0);
int32_t code = evaluateSqlNode(pNode, TSDB_TIME_PRECISION_NANO, &buf); int32_t code = evaluateSqlNode(pNode, TSDB_TIME_PRECISION_NANO, &buf);
ASSERT_EQ(code, 0); ASSERT_EQ(code, 0);
...@@ -87,7 +87,7 @@ void generateLogicplan(const char* sql) { ...@@ -87,7 +87,7 @@ void generateLogicplan(const char* sql) {
SQueryStmtInfo* pQueryInfo = createQueryInfo(); SQueryStmtInfo* pQueryInfo = createQueryInfo();
setTableMetaInfo(pQueryInfo, &req); setTableMetaInfo(pQueryInfo, &req);
SSqlNode* pSqlNode = (SSqlNode*)taosArrayGetP(info1.list, 0); SSqlNode* pSqlNode = (SSqlNode*)taosArrayGetP(info1.sub.node, 0);
ret = validateSqlNode(pSqlNode, pQueryInfo, &buf); ret = validateSqlNode(pSqlNode, pQueryInfo, &buf);
ASSERT_EQ(ret, 0); ASSERT_EQ(ret, 0);
...@@ -115,7 +115,7 @@ TEST(testCase, planner_test) { ...@@ -115,7 +115,7 @@ TEST(testCase, planner_test) {
buf.len = 128; buf.len = 128;
buf.buf = msg; buf.buf = msg;
SSqlNode* pNode = (SSqlNode*) taosArrayGetP(((SArray*)info1.list), 0); SSqlNode* pNode = (SSqlNode*) taosArrayGetP(((SArray*)info1.sub.node), 0);
int32_t code = evaluateSqlNode(pNode, TSDB_TIME_PRECISION_NANO, &buf); int32_t code = evaluateSqlNode(pNode, TSDB_TIME_PRECISION_NANO, &buf);
ASSERT_EQ(code, 0); ASSERT_EQ(code, 0);
...@@ -127,7 +127,7 @@ TEST(testCase, planner_test) { ...@@ -127,7 +127,7 @@ TEST(testCase, planner_test) {
SQueryStmtInfo* pQueryInfo = createQueryInfo(); SQueryStmtInfo* pQueryInfo = createQueryInfo();
setTableMetaInfo(pQueryInfo, &req); setTableMetaInfo(pQueryInfo, &req);
SSqlNode* pSqlNode = (SSqlNode*)taosArrayGetP(info1.list, 0); SSqlNode* pSqlNode = (SSqlNode*)taosArrayGetP(info1.sub.node, 0);
ret = validateSqlNode(pSqlNode, pQueryInfo, &buf); ret = validateSqlNode(pSqlNode, pQueryInfo, &buf);
ASSERT_EQ(ret, 0); ASSERT_EQ(ret, 0);
...@@ -165,18 +165,18 @@ TEST(testCase, planner_test) { ...@@ -165,18 +165,18 @@ TEST(testCase, planner_test) {
} }
TEST(testCase, displayPlan) { TEST(testCase, displayPlan) {
// generateLogicplan("select count(*) from `t.1abc`"); generateLogicplan("select count(*) from `t.1abc`");
// generateLogicplan("select count(*)+ 22 from `t.1abc`"); generateLogicplan("select count(*)+ 22 from `t.1abc`");
// generateLogicplan("select count(*)+ 22 from `t.1abc` interval(1h, 20s) sliding(10m) limit 20,30"); generateLogicplan("select count(*)+ 22 from `t.1abc` interval(1h, 20s) sliding(10m) limit 20,30");
// generateLogicplan("select count(*) from `t.1abc` group by a"); generateLogicplan("select count(*) from `t.1abc` group by a");
// generateLogicplan("select count(A+B) from `t.1abc` group by a"); generateLogicplan("select count(A+B) from `t.1abc` group by a");
// generateLogicplan("select count(length(a)+b) from `t.1abc` group by a"); generateLogicplan("select count(length(a)+b) from `t.1abc` group by a");
// generateLogicplan("select count(*) from `t.1abc` interval(10s, 5s) sliding(7s)"); generateLogicplan("select count(*) from `t.1abc` interval(10s, 5s) sliding(7s)");
// generateLogicplan("select count(*),sum(a),avg(b),min(a+b)+99 from `t.1abc`"); generateLogicplan("select count(*),sum(a),avg(b),min(a+b)+99 from `t.1abc`");
// generateLogicplan("select count(*), min(a) + 99 from `t.1abc`"); generateLogicplan("select count(*), min(a) + 99 from `t.1abc`");
// generateLogicplan("select count(length(count(*) + 22)) from `t.1abc`"); generateLogicplan("select count(length(count(*) + 22)) from `t.1abc`");
// generateLogicplan("select concat(concat(a,b), concat(a,b)) from `t.1abc` limit 20"); generateLogicplan("select concat(concat(a,b), concat(a,b)) from `t.1abc` limit 20");
// generateLogicplan("select count(*), first(a), last(b) from `t.1abc` state_window(a)"); generateLogicplan("select count(*), first(a), last(b) from `t.1abc` state_window(a)");
generateLogicplan("select count(*), first(a), last(b) from `t.1abc` session(ts, 20s)"); generateLogicplan("select count(*), first(a), last(b) from `t.1abc` session(ts, 20s)");
// order by + group by column + limit offset + fill // order by + group by column + limit offset + fill
......
...@@ -680,12 +680,12 @@ TEST(testCase, generateAST_test) { ...@@ -680,12 +680,12 @@ TEST(testCase, generateAST_test) {
msgBuf.buf = msg; msgBuf.buf = msg;
msgBuf.len = 128; msgBuf.len = 128;
SSqlNode* pNode = (SSqlNode*) taosArrayGetP(((SArray*)info1.list), 0); SSqlNode* pNode = (SSqlNode*) taosArrayGetP(((SArray*)info1.sub.node), 0);
int32_t code = evaluateSqlNode(pNode, TSDB_TIME_PRECISION_NANO, &msgBuf); int32_t code = evaluateSqlNode(pNode, TSDB_TIME_PRECISION_NANO, &msgBuf);
ASSERT_EQ(code, 0); ASSERT_EQ(code, 0);
SSqlInfo info2 = doGenerateAST("select * from abc where ts<now+2"); SSqlInfo info2 = doGenerateAST("select * from abc where ts<now+2");
SSqlNode* pNode2 = (SSqlNode*) taosArrayGetP(((SArray*)info2.list), 0); SSqlNode* pNode2 = (SSqlNode*) taosArrayGetP(((SArray*)info2.sub.node), 0);
code = evaluateSqlNode(pNode2, TSDB_TIME_PRECISION_MILLI, &msgBuf); code = evaluateSqlNode(pNode2, TSDB_TIME_PRECISION_MILLI, &msgBuf);
ASSERT_NE(code, 0); ASSERT_NE(code, 0);
...@@ -703,7 +703,7 @@ TEST(testCase, evaluateAST_test) { ...@@ -703,7 +703,7 @@ TEST(testCase, evaluateAST_test) {
msgBuf.buf = msg; msgBuf.buf = msg;
msgBuf.len = 128; msgBuf.len = 128;
SSqlNode* pNode = (SSqlNode*) taosArrayGetP(((SArray*)info1.list), 0); SSqlNode* pNode = (SSqlNode*) taosArrayGetP(((SArray*)info1.sub.node), 0);
int32_t code = evaluateSqlNode(pNode, TSDB_TIME_PRECISION_NANO, &msgBuf); int32_t code = evaluateSqlNode(pNode, TSDB_TIME_PRECISION_NANO, &msgBuf);
ASSERT_EQ(code, 0); ASSERT_EQ(code, 0);
destroySqlInfo(&info1); destroySqlInfo(&info1);
......
...@@ -912,7 +912,7 @@ int32_t tscValidateSqlInfo(SSqlObj* pSql, struct SSqlInfo* pInfo) { ...@@ -912,7 +912,7 @@ int32_t tscValidateSqlInfo(SSqlObj* pSql, struct SSqlInfo* pInfo) {
tscTrace("0x%"PRIx64" start to parse the %dth subclause, total:%"PRIzu, pSql->self, i, size); tscTrace("0x%"PRIx64" start to parse the %dth subclause, total:%"PRIzu, pSql->self, i, size);
if (size > 1 && pSqlNode->from && pSqlNode->from->type == SQL_NODE_FROM_SUBQUERY) { if (size > 1 && pSqlNode->from && pSqlNode->from->type == SQL_FROM_NODE_SUBQUERY) {
return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg1); return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg1);
} }
...@@ -7981,11 +7981,11 @@ int32_t doCheckForStream(SSqlObj* pSql, SSqlInfo* pInfo) { ...@@ -7981,11 +7981,11 @@ int32_t doCheckForStream(SSqlObj* pSql, SSqlInfo* pInfo) {
return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg6); return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg6);
} }
if (pFromInfo->type == SQL_NODE_FROM_SUBQUERY){ if (pFromInfo->type == SQL_FROM_NODE_SUBQUERY){
return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg9); return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg9);
} }
SRelElementPair* p1 = taosArrayGet(pFromInfo->list, 0); SRelElement* p1 = taosArrayGet(pFromInfo->list, 0);
SStrToken srcToken = {.z = p1->tableName.z, .n = p1->tableName.n, .type = TK_STRING}; SStrToken srcToken = {.z = p1->tableName.z, .n = p1->tableName.n, .type = TK_STRING};
if (tscValidateName(&srcToken) != TSDB_CODE_SUCCESS) { if (tscValidateName(&srcToken) != TSDB_CODE_SUCCESS) {
return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg1); return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg1);
...@@ -8415,10 +8415,10 @@ static int32_t getTableNameFromSqlNode(SSqlNode* pSqlNode, SArray* tableNameList ...@@ -8415,10 +8415,10 @@ static int32_t getTableNameFromSqlNode(SSqlNode* pSqlNode, SArray* tableNameList
const char* msg1 = "invalid table name"; const char* msg1 = "invalid table name";
int32_t numOfTables = (int32_t) taosArrayGetSize(pSqlNode->from->list); int32_t numOfTables = (int32_t) taosArrayGetSize(pSqlNode->from->list);
assert(pSqlNode->from->type == SQL_NODE_FROM_TABLELIST); assert(pSqlNode->from->type == SQL_FROM_NODE_TABLES);
for(int32_t j = 0; j < numOfTables; ++j) { for(int32_t j = 0; j < numOfTables; ++j) {
SRelElementPair* item = taosArrayGet(pSqlNode->from->list, j); SRelElement* item = taosArrayGet(pSqlNode->from->list, j);
SStrToken* t = &item->tableName; SStrToken* t = &item->tableName;
if (t->type == TK_INTEGER || t->type == TK_FLOAT) { if (t->type == TK_INTEGER || t->type == TK_FLOAT) {
...@@ -8446,12 +8446,12 @@ static int32_t getTableNameFromSubquery(SSqlNode* pSqlNode, SArray* tableNameLis ...@@ -8446,12 +8446,12 @@ static int32_t getTableNameFromSubquery(SSqlNode* pSqlNode, SArray* tableNameLis
int32_t numOfSub = (int32_t) taosArrayGetSize(pSqlNode->from->list); int32_t numOfSub = (int32_t) taosArrayGetSize(pSqlNode->from->list);
for(int32_t j = 0; j < numOfSub; ++j) { for(int32_t j = 0; j < numOfSub; ++j) {
SRelElementPair* sub = taosArrayGet(pSqlNode->from->list, j); SRelElement* sub = taosArrayGet(pSqlNode->from->list, j);
int32_t num = (int32_t)taosArrayGetSize(sub->pSubquery); int32_t num = (int32_t)taosArrayGetSize(sub->pSubquery);
for (int32_t i = 0; i < num; ++i) { for (int32_t i = 0; i < num; ++i) {
SSqlNode* p = taosArrayGetP(sub->pSubquery, i); SSqlNode* p = taosArrayGetP(sub->pSubquery, i);
if (p->from->type == SQL_NODE_FROM_TABLELIST) { if (p->from->type == SQL_FROM_NODE_TABLES) {
int32_t code = getTableNameFromSqlNode(p, tableNameList, msgBuf, pSql); int32_t code = getTableNameFromSqlNode(p, tableNameList, msgBuf, pSql);
if (code != TSDB_CODE_SUCCESS) { if (code != TSDB_CODE_SUCCESS) {
return code; return code;
...@@ -8520,7 +8520,7 @@ int32_t loadAllTableMeta(SSqlObj* pSql, struct SSqlInfo* pInfo) { ...@@ -8520,7 +8520,7 @@ int32_t loadAllTableMeta(SSqlObj* pSql, struct SSqlInfo* pInfo) {
} }
// load the table meta in the from clause // load the table meta in the from clause
if (pSqlNode->from->type == SQL_NODE_FROM_TABLELIST) { if (pSqlNode->from->type == SQL_FROM_NODE_TABLES) {
code = getTableNameFromSqlNode(pSqlNode, tableNameList, tscGetErrorMsgPayload(pCmd), pSql); code = getTableNameFromSqlNode(pSqlNode, tableNameList, tscGetErrorMsgPayload(pCmd), pSql);
if (code != TSDB_CODE_SUCCESS) { if (code != TSDB_CODE_SUCCESS) {
goto _end; goto _end;
...@@ -8678,7 +8678,7 @@ static int32_t doLoadAllTableMeta(SSqlObj* pSql, SQueryInfo* pQueryInfo, SSqlNod ...@@ -8678,7 +8678,7 @@ static int32_t doLoadAllTableMeta(SSqlObj* pSql, SQueryInfo* pQueryInfo, SSqlNod
tscAddEmptyMetaInfo(pQueryInfo); tscAddEmptyMetaInfo(pQueryInfo);
} }
SRelElementPair *item = taosArrayGet(pSqlNode->from->list, i); SRelElement *item = taosArrayGet(pSqlNode->from->list, i);
SStrToken *oriName = &item->tableName; SStrToken *oriName = &item->tableName;
if (oriName->type == TK_INTEGER || oriName->type == TK_FLOAT) { if (oriName->type == TK_INTEGER || oriName->type == TK_FLOAT) {
...@@ -8786,7 +8786,7 @@ static STableMeta* extractTempTableMetaFromSubquery(SQueryInfo* pUpstream) { ...@@ -8786,7 +8786,7 @@ static STableMeta* extractTempTableMetaFromSubquery(SQueryInfo* pUpstream) {
} }
static int32_t doValidateSubquery(SSqlNode* pSqlNode, int32_t index, SSqlObj* pSql, SQueryInfo* pQueryInfo, char* msgBuf) { static int32_t doValidateSubquery(SSqlNode* pSqlNode, int32_t index, SSqlObj* pSql, SQueryInfo* pQueryInfo, char* msgBuf) {
SRelElementPair* subInfo = taosArrayGet(pSqlNode->from->list, index); SRelElement* subInfo = taosArrayGet(pSqlNode->from->list, index);
// union all is not support currently // union all is not support currently
SSqlNode* p = taosArrayGetP(subInfo->pSubquery, 0); SSqlNode* p = taosArrayGetP(subInfo->pSubquery, 0);
...@@ -8890,7 +8890,7 @@ int32_t validateSqlNode(SSqlObj* pSql, SSqlNode* pSqlNode, SQueryInfo* pQueryInf ...@@ -8890,7 +8890,7 @@ int32_t validateSqlNode(SSqlObj* pSql, SSqlNode* pSqlNode, SQueryInfo* pQueryInf
return doLocalQueryProcess(pCmd, pQueryInfo, pSqlNode); return doLocalQueryProcess(pCmd, pQueryInfo, pSqlNode);
} }
if (pSqlNode->from->type == SQL_NODE_FROM_SUBQUERY) { if (pSqlNode->from->type == SQL_FROM_NODE_SUBQUERY) {
clearAllTableMetaInfo(pQueryInfo, false, pSql->self); clearAllTableMetaInfo(pQueryInfo, false, pSql->self);
pQueryInfo->numOfTables = 0; pQueryInfo->numOfTables = 0;
...@@ -8898,9 +8898,9 @@ int32_t validateSqlNode(SSqlObj* pSql, SSqlNode* pSqlNode, SQueryInfo* pQueryInf ...@@ -8898,9 +8898,9 @@ int32_t validateSqlNode(SSqlObj* pSql, SSqlNode* pSqlNode, SQueryInfo* pQueryInf
int32_t numOfSub = (int32_t)taosArrayGetSize(pSqlNode->from->list); int32_t numOfSub = (int32_t)taosArrayGetSize(pSqlNode->from->list);
for (int32_t i = 0; i < numOfSub; ++i) { for (int32_t i = 0; i < numOfSub; ++i) {
// check if there is 3 level select // check if there is 3 level select
SRelElementPair* subInfo = taosArrayGet(pSqlNode->from->list, i); SRelElement* subInfo = taosArrayGet(pSqlNode->from->list, i);
SSqlNode* p = taosArrayGetP(subInfo->pSubquery, 0); SSqlNode* p = taosArrayGetP(subInfo->pSubquery, 0);
if (p->from->type == SQL_NODE_FROM_SUBQUERY) { if (p->from->type == SQL_FROM_NODE_SUBQUERY) {
return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg9); return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg9);
} }
...@@ -9379,8 +9379,8 @@ bool hasNormalColumnFilter(SQueryInfo* pQueryInfo) { ...@@ -9379,8 +9379,8 @@ bool hasNormalColumnFilter(SQueryInfo* pQueryInfo) {
void normalizeSqlNode(SSqlNode* pSqlNode, const char* dbName) { void normalizeSqlNode(SSqlNode* pSqlNode, const char* dbName) {
assert(pSqlNode != NULL); assert(pSqlNode != NULL);
if (pSqlNode->from->type == SQL_NODE_FROM_TABLELIST) { if (pSqlNode->from->type == SQL_FROM_NODE_TABLES) {
// SRelElementPair *item = taosArrayGet(pSqlNode->from->list, 0); // SRelElement *item = taosArrayGet(pSqlNode->from->list, 0);
// item->TableName.name; // item->TableName.name;
} }
......
...@@ -40,8 +40,8 @@ enum SQL_NODE_TYPE { ...@@ -40,8 +40,8 @@ enum SQL_NODE_TYPE {
}; };
enum SQL_NODE_FROM_TYPE { enum SQL_NODE_FROM_TYPE {
SQL_NODE_FROM_SUBQUERY = 1, SQL_FROM_NODE_SUBQUERY = 1,
SQL_NODE_FROM_TABLELIST = 2, SQL_FROM_NODE_TABLES = 2,
}; };
enum SQL_EXPR_FLAG { enum SQL_EXPR_FLAG {
...@@ -113,18 +113,18 @@ typedef struct SSqlNode { ...@@ -113,18 +113,18 @@ typedef struct SSqlNode {
struct tSqlExpr *pHaving; // having clause [optional] struct tSqlExpr *pHaving; // having clause [optional]
} SSqlNode; } SSqlNode;
typedef struct SRelElementPair { typedef struct SRelElement {
union { union {
SStrToken tableName; SStrToken tableName;
SArray *pSubquery; SArray *pSubquery;
}; };
SStrToken aliasName; SStrToken aliasName;
} SRelElementPair; } SRelElement;
typedef struct SRelationInfo { typedef struct SRelationInfo {
int32_t type; // nested query|table name list int32_t type; // nested query|table name list
SArray *list; // SArray<SRelElementPair> SArray *list; // SArray<SRelElement>
} SRelationInfo; } SRelationInfo;
typedef struct SCreatedTableInfo { typedef struct SCreatedTableInfo {
......
...@@ -556,11 +556,11 @@ SArray *tVariantListInsert(SArray *pList, tVariant *pVar, uint8_t sortOrder, int ...@@ -556,11 +556,11 @@ SArray *tVariantListInsert(SArray *pList, tVariant *pVar, uint8_t sortOrder, int
SRelationInfo *setTableNameList(SRelationInfo* pRelationInfo, SStrToken *pName, SStrToken* pAlias) { SRelationInfo *setTableNameList(SRelationInfo* pRelationInfo, SStrToken *pName, SStrToken* pAlias) {
if (pRelationInfo == NULL) { if (pRelationInfo == NULL) {
pRelationInfo = calloc(1, sizeof(SRelationInfo)); pRelationInfo = calloc(1, sizeof(SRelationInfo));
pRelationInfo->list = taosArrayInit(4, sizeof(SRelElementPair)); pRelationInfo->list = taosArrayInit(4, sizeof(SRelElement));
} }
pRelationInfo->type = SQL_NODE_FROM_TABLELIST; pRelationInfo->type = SQL_FROM_NODE_TABLES;
SRelElementPair p = {.tableName = *pName}; SRelElement p = {.tableName = *pName};
if (pAlias != NULL) { if (pAlias != NULL) {
p.aliasName = *pAlias; p.aliasName = *pAlias;
} else { } else {
...@@ -576,7 +576,7 @@ void* destroyRelationInfo(SRelationInfo* pRelationInfo) { ...@@ -576,7 +576,7 @@ void* destroyRelationInfo(SRelationInfo* pRelationInfo) {
return NULL; return NULL;
} }
if (pRelationInfo->type == SQL_NODE_FROM_TABLELIST) { if (pRelationInfo->type == SQL_FROM_NODE_TABLES) {
taosArrayDestroy(pRelationInfo->list); taosArrayDestroy(pRelationInfo->list);
} else { } else {
size_t size = taosArrayGetSize(pRelationInfo->list); size_t size = taosArrayGetSize(pRelationInfo->list);
...@@ -594,12 +594,12 @@ void* destroyRelationInfo(SRelationInfo* pRelationInfo) { ...@@ -594,12 +594,12 @@ void* destroyRelationInfo(SRelationInfo* pRelationInfo) {
SRelationInfo* addSubqueryElem(SRelationInfo* pRelationInfo, SArray* pSub, SStrToken* pAlias) { SRelationInfo* addSubqueryElem(SRelationInfo* pRelationInfo, SArray* pSub, SStrToken* pAlias) {
if (pRelationInfo == NULL) { if (pRelationInfo == NULL) {
pRelationInfo = calloc(1, sizeof(SRelationInfo)); pRelationInfo = calloc(1, sizeof(SRelationInfo));
pRelationInfo->list = taosArrayInit(4, sizeof(SRelElementPair)); pRelationInfo->list = taosArrayInit(4, sizeof(SRelElement));
} }
pRelationInfo->type = SQL_NODE_FROM_SUBQUERY; pRelationInfo->type = SQL_FROM_NODE_SUBQUERY;
SRelElementPair p = {.pSubquery = pSub}; SRelElement p = {.pSubquery = pSub};
if (pAlias != NULL) { if (pAlias != NULL) {
p.aliasName = *pAlias; p.aliasName = *pAlias;
} else { } else {
...@@ -972,6 +972,7 @@ void SqlInfoDestroy(SSqlInfo *pInfo) { ...@@ -972,6 +972,7 @@ void SqlInfoDestroy(SSqlInfo *pInfo) {
SArray* setSubclause(SArray* pList, void *pSqlNode) { SArray* setSubclause(SArray* pList, void *pSqlNode) {
if (pList == NULL) { if (pList == NULL) {
pList = taosArrayInit(1, POINTER_BYTES); pList = taosArrayInit(1, POINTER_BYTES);
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册