Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
a0d3fa46
T
TDengine
项目概览
taosdata
/
TDengine
大约 2 年 前同步成功
通知
1192
Star
22018
Fork
4786
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
TDengine
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
a0d3fa46
编写于
11月 10, 2021
作者:
H
Haojun Liao
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[td-10564] refactor code and fix bug in parse sql.
上级
6fedb60e
变更
14
显示空白变更内容
内联
并排
Showing
14 changed file
with
779 addition
and
742 deletion
+779
-742
include/libs/function/function.h
include/libs/function/function.h
+2
-1
source/libs/parser/inc/astGenerator.h
source/libs/parser/inc/astGenerator.h
+24
-14
source/libs/parser/inc/sql.y
source/libs/parser/inc/sql.y
+3
-3
source/libs/parser/src/astGenerator.c
source/libs/parser/src/astGenerator.c
+34
-26
source/libs/parser/src/astValidate.c
source/libs/parser/src/astValidate.c
+21
-11
source/libs/parser/src/parser.c
source/libs/parser/src/parser.c
+9
-9
source/libs/parser/src/queryInfoUtil.c
source/libs/parser/src/queryInfoUtil.c
+1
-1
source/libs/parser/src/sql.c
source/libs/parser/src/sql.c
+610
-605
source/libs/parser/test/parserTests.cpp
source/libs/parser/test/parserTests.cpp
+28
-26
source/libs/parser/test/plannerTest.cpp
source/libs/parser/test/plannerTest.cpp
+16
-16
source/libs/parser/test/tokenizerTest.cpp
source/libs/parser/test/tokenizerTest.cpp
+3
-3
src/client/src/tscSQLParser.c
src/client/src/tscSQLParser.c
+15
-15
src/query/inc/qSqlparser.h
src/query/inc/qSqlparser.h
+5
-5
src/query/src/qSqlParser.c
src/query/src/qSqlParser.c
+8
-7
未找到文件。
include/libs/function/function.h
浏览文件 @
a0d3fa46
...
@@ -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
;
...
...
source/libs/parser/inc/astGenerator.h
浏览文件 @
a0d3fa46
...
@@ -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
;
S
Array
*
pSubquery
;
S
Subclause
*
pSubquery
;
};
};
SToken
aliasName
;
SToken
aliasName
;
}
SRelElement
Pair
;
}
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<SRelElement
Pair
>
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
;
S
Array
*
list
;
// todo refactor
S
Subclause
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
,
S
Array
*
pSub
,
SToken
*
pAlias
);
SRelationInfo
*
addSubquery
(
SRelationInfo
*
pRelationInfo
,
S
Subclause
*
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
);
S
Array
*
setSubclause
(
SArray
*
pList
,
void
*
pSqlNode
);
S
Subclause
*
setSubclause
(
SSubclause
*
sub
,
void
*
pSqlNode
);
S
Array
*
appendSelectClause
(
SArray
*
pList
,
void
*
pSubclause
);
S
Subclause
*
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
);
...
...
source/libs/parser/inc/sql.y
浏览文件 @
a0d3fa46
...
@@ -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 {S
Array
*}
%type union {S
Subclause
*}
%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.,
...
...
source/libs/parser/src/astGenerator.c
浏览文件 @
a0d3fa46
...
@@ -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
(
SRelElement
Pair
));
pRelationInfo
->
list
=
taosArrayInit
(
4
,
sizeof
(
SRelElement
));
}
}
pRelationInfo
->
type
=
SQL_
NODE_FROM_TABLELIST
;
pRelationInfo
->
type
=
SQL_
FROM_NODE_TABLES
;
SRelElement
Pair
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
)
{
S
Array
*
pa
=
taosArrayGetP
(
pRelationInfo
->
list
,
i
);
S
Subclause
*
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
,
S
Array
*
pSub
,
SToken
*
pAlias
)
{
SRelationInfo
*
addSubquery
(
SRelationInfo
*
pRelationInfo
,
S
Subclause
*
pSub
,
SToken
*
pAlias
)
{
if
(
pRelationInfo
==
NULL
)
{
if
(
pRelationInfo
==
NULL
)
{
pRelationInfo
=
calloc
(
1
,
sizeof
(
SRelationInfo
));
pRelationInfo
=
calloc
(
1
,
sizeof
(
SRelationInfo
));
pRelationInfo
->
list
=
taosArrayInit
(
4
,
sizeof
(
SRelElement
Pair
));
pRelationInfo
->
list
=
taosArrayInit
(
4
,
sizeof
(
SRelElement
));
}
}
pRelationInfo
->
type
=
SQL_
NODE_FROM
_SUBQUERY
;
pRelationInfo
->
type
=
SQL_
FROM_NODE
_SUBQUERY
;
SRelElement
Pair
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
(
p
List
==
NULL
)
{
if
(
p
Sub
->
node
==
NULL
)
{
return
;
return
;
}
}
size_t
size
=
taosArrayGetSize
(
p
List
);
size_t
size
=
taosArrayGetSize
(
p
Sub
->
node
);
for
(
int32_t
i
=
0
;
i
<
size
;
++
i
)
{
for
(
int32_t
i
=
0
;
i
<
size
;
++
i
)
{
SSqlNode
*
pNode
=
taosArrayGetP
(
p
List
,
i
);
SSqlNode
*
pNode
=
taosArrayGetP
(
p
Sub
->
node
,
i
);
destroySqlNode
(
pNode
);
destroySqlNode
(
pNode
);
}
}
taosArrayDestroy
(
p
List
);
taosArrayDestroy
(
p
Sub
->
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
(
p
List
,
&
pSqlNode
);
taosArrayPush
(
p
Sub
->
node
,
&
pSqlNode
);
return
p
List
;
return
p
Sub
;
}
}
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
)
{
...
...
source/libs/parser/src/astValidate.c
浏览文件 @
a0d3fa46
...
@@ -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
)
{
SRelElement
Pair
*
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
)
{
SRelElement
Pair
*
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
;
}
}
source/libs/parser/src/parser.c
浏览文件 @
a0d3fa46
...
@@ -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
)
{
SRelElement
Pair
*
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
)
{
SRelElement
Pair
*
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
;
...
...
source/libs/parser/src/queryInfoUtil.c
浏览文件 @
a0d3fa46
...
@@ -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
)
{
...
...
source/libs/parser/src/sql.c
浏览文件 @
a0d3fa46
...
@@ -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 29
4
#define YYNRULE 29
5
#define YYNTOKEN 197
#define YYNTOKEN 197
#define YY_MAX_SHIFT 367
#define YY_MAX_SHIFT 367
#define YY_MIN_SHIFTREDUCE 57
6
#define YY_MIN_SHIFTREDUCE 57
7
#define YY_MAX_SHIFTREDUCE 8
69
#define YY_MAX_SHIFTREDUCE 8
71
#define YY_ERROR_ACTION 87
0
#define YY_ERROR_ACTION 87
2
#define YY_ACCEPT_ACTION 87
1
#define YY_ACCEPT_ACTION 87
3
#define YY_NO_ACTION 87
2
#define YY_NO_ACTION 87
4
#define YY_MIN_REDUCE 87
3
#define YY_MIN_REDUCE 87
5
#define YY_MAX_REDUCE 116
6
#define YY_MAX_REDUCE 116
9
/************* 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 (77
3
)
#define YY_ACTTAB_COUNT (77
6
)
static
const
YYACTIONTYPE
yy_action
[]
=
{
static
const
YYACTIONTYPE
yy_action
[]
=
{
/* 0 */
23
,
62
8
,
366
,
235
,
1051
,
208
,
241
,
712
,
211
,
629
,
/* 0 */
23
,
62
9
,
366
,
236
,
1054
,
209
,
242
,
713
,
212
,
630
,
/* 10 */
10
29
,
871
,
367
,
59
,
60
,
173
,
63
,
64
,
1042
,
1142
,
/* 10 */
10
31
,
873
,
367
,
59
,
60
,
174
,
63
,
64
,
1044
,
1145
,
/* 20 */
25
5
,
53
,
52
,
51
,
628
,
62
,
324
,
67
,
65
,
68
,
/* 20 */
25
6
,
53
,
52
,
51
,
629
,
62
,
324
,
67
,
65
,
68
,
/* 30 */
66
,
15
7
,
629
,
286
,
238
,
58
,
57
,
344
,
343
,
56
,
/* 30 */
66
,
15
8
,
630
,
286
,
239
,
58
,
57
,
344
,
343
,
56
,
/* 40 */
55
,
54
,
59
,
60
,
24
7
,
63
,
64
,
252
,
1029
,
255
,
/* 40 */
55
,
54
,
59
,
60
,
24
8
,
63
,
64
,
253
,
1031
,
256
,
/* 50 */
53
,
52
,
51
,
66
4
,
62
,
324
,
67
,
65
,
68
,
66
,
/* 50 */
53
,
52
,
51
,
66
5
,
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
,
100
1
,
1048
,
1002
,
1003
,
58
,
57
,
277
,
1015
,
56
,
/* 70 */
54
,
100
3
,
1051
,
1004
,
1005
,
58
,
57
,
278
,
216
,
56
,
/* 80 */
55
,
54
,
59
,
60
,
16
4
,
63
,
64
,
38
,
82
,
255
,
/* 80 */
55
,
54
,
59
,
60
,
16
5
,
63
,
64
,
38
,
83
,
256
,
/* 90 */
53
,
52
,
51
,
8
8
,
62
,
324
,
67
,
65
,
68
,
66
,
/* 90 */
53
,
52
,
51
,
8
9
,
62
,
324
,
67
,
65
,
68
,
66
,
/* 100 */
284
,
283
,
2
49
,
322
,
58
,
57
,
1029
,
211
,
56
,
55
,
/* 100 */
284
,
283
,
2
50
,
754
,
58
,
57
,
1031
,
212
,
56
,
55
,
/* 110 */
54
,
38
,
59
,
61
,
80
6
,
63
,
64
,
1042
,
1143
,
255
,
/* 110 */
54
,
38
,
59
,
61
,
80
8
,
63
,
64
,
1044
,
1146
,
256
,
/* 120 */
53
,
52
,
51
,
62
8
,
62
,
324
,
67
,
65
,
68
,
66
,
/* 120 */
53
,
52
,
51
,
62
9
,
62
,
324
,
67
,
65
,
68
,
66
,
/* 130 */
45
,
6
29
,
237
,
239
,
58
,
57
,
1026
,
164
,
56
,
55
,
/* 130 */
45
,
6
30
,
238
,
240
,
58
,
57
,
1028
,
165
,
56
,
55
,
/* 140 */
54
,
60
,
102
3
,
63
,
64
,
771
,
772
,
255
,
53
,
52
,
/* 140 */
54
,
60
,
102
5
,
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 */
102
5
,
296
,
58
,
57
,
322
,
100
,
56
,
55
,
54
,
577
,
/* 160 */
102
7
,
296
,
58
,
57
,
89
,
84
,
56
,
55
,
54
,
578
,
/* 170 */
57
8
,
579
,
580
,
581
,
582
,
583
,
584
,
585
,
586
,
587
,
/* 170 */
57
9
,
580
,
581
,
582
,
583
,
584
,
585
,
586
,
587
,
588
,
/* 180 */
58
8
,
589
,
590
,
155
,
354
,
236
,
63
,
64
,
209
,
248
,
/* 180 */
58
9
,
590
,
591
,
156
,
322
,
237
,
63
,
64
,
758
,
249
,
/* 190 */
25
5
,
53
,
52
,
51
,
628
,
62
,
324
,
67
,
65
,
68
,
/* 190 */
25
6
,
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
,
10
89
,
44
,
320
,
361
,
360
,
319
,
318
,
317
,
/* 210 */
55
,
54
,
10
92
,
44
,
320
,
361
,
360
,
319
,
318
,
317
,
/* 220 */
359
,
316
,
315
,
314
,
358
,
313
,
357
,
356
,
15
4
,
152
,
/* 220 */
359
,
316
,
315
,
314
,
358
,
313
,
357
,
356
,
15
5
,
153
,
/* 230 */
15
1
,
298
,
24
,
93
,
991
,
979
,
980
,
981
,
982
,
983
,
/* 230 */
15
2
,
298
,
24
,
94
,
993
,
981
,
982
,
983
,
984
,
985
,
/* 240 */
98
4
,
985
,
986
,
987
,
988
,
989
,
990
,
992
,
993
,
214
,
/* 240 */
98
6
,
987
,
988
,
989
,
990
,
991
,
992
,
994
,
995
,
215
,
/* 250 */
7
49
,
254
,
821
,
922
,
125
,
810
,
222
,
813
,
215
,
816
,
/* 250 */
7
51
,
255
,
823
,
924
,
126
,
812
,
223
,
815
,
354
,
818
,
/* 260 */
19
2
,
97
,
139
,
138
,
137
,
221
,
354
,
254
,
821
,
329
,
/* 260 */
19
3
,
98
,
140
,
139
,
138
,
222
,
354
,
255
,
823
,
329
,
/* 270 */
8
8
,
810
,
251
,
813
,
269
,
816
,
9
,
29
,
94
,
67
,
/* 270 */
8
9
,
812
,
252
,
815
,
270
,
818
,
9
,
29
,
217
,
67
,
/* 280 */
65
,
68
,
66
,
27
3
,
272
,
233
,
234
,
58
,
57
,
325
,
/* 280 */
65
,
68
,
66
,
27
4
,
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 */
81
5
,
233
,
234
,
258
,
5
,
41
,
182
,
45
,
56
,
55
,
/* 300 */
81
7
,
234
,
235
,
259
,
5
,
41
,
183
,
45
,
56
,
55
,
/* 310 */
54
,
18
1
,
106
,
111
,
102
,
110
,
38
,
263
,
736
,
38
,
/* 310 */
54
,
18
2
,
107
,
112
,
103
,
111
,
38
,
264
,
737
,
38
,
/* 320 */
93
2
,
733
,
217
,
734
,
1014
,
735
,
95
,
192
,
256
,
276
,
/* 320 */
93
4
,
734
,
742
,
735
,
743
,
736
,
165
,
193
,
257
,
277
,
/* 330 */
309
,
8
0
,
211
,
38
,
69
,
123
,
117
,
128
,
229
,
811
,
/* 330 */
309
,
8
1
,
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
,
26
0
,
261
,
130
,
197
,
143
,
142
,
141
,
140
,
38
,
/* 350 */
69
,
26
1
,
262
,
131
,
198
,
144
,
143
,
142
,
141
,
38
,
/* 360 */
44
,
24
5
,
361
,
360
,
246
,
1026
,
788
,
359
,
1026
,
822
,
/* 360 */
44
,
24
6
,
361
,
360
,
247
,
1028
,
101
,
359
,
1028
,
824
,
/* 370 */
81
7
,
358
,
38
,
357
,
356
,
38
,
818
,
38
,
333
,
259
,
/* 370 */
81
9
,
358
,
38
,
357
,
356
,
38
,
820
,
38
,
333
,
260
,
/* 380 */
38
,
25
7
,
1026
,
332
,
331
,
822
,
817
,
1137
,
211
,
365
,
/* 380 */
38
,
25
8
,
1028
,
332
,
331
,
824
,
819
,
790
,
212
,
365
,
/* 390 */
364
,
14
8
,
818
,
265
,
38
,
262
,
38
,
339
,
338
,
1143
,
/* 390 */
364
,
14
9
,
820
,
266
,
38
,
263
,
38
,
339
,
338
,
1146
,
/* 400 */
26
4
,
264
,
264
,
14
,
334
,
85
,
76
,
96
,
1026
,
923
,
/* 400 */
26
5
,
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
,
102
6
,
340
,
787
,
1026
,
341
,
1026
,
1
,
180
,
1026
,
/* 420 */
336
,
102
8
,
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
,
30
1
,
/* 440 */
1016
,
346
,
39
,
1028
,
789
,
1028
,
73
,
160
,
780
,
78
1
,
/* 450 */
724
,
303
,
26
,
723
,
39
,
34
,
808
,
844
,
823
,
253
,
/* 450 */
78
,
723
,
73
,
301
,
725
,
303
,
724
,
810
,
254
,
846
,
/* 460 */
82
0
,
627
,
1136
,
39
,
70
,
98
,
79
,
70
,
16
,
1100
,
/* 460 */
82
2
,
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
,
1
17
,
/* 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 */
27
4
,
218
,
210
,
219
,
220
,
224
,
225
,
1162
,
226
,
223
,
/* 500 */
27
5
,
214
,
219
,
211
,
220
,
221
,
225
,
1030
,
226
,
227
,
/* 510 */
2
07
,
1154
,
1099
,
243
,
1096
,
1095
,
244
,
345
,
156
,
4
8
,
/* 510 */
2
24
,
208
,
1165
,
1157
,
1103
,
1046
,
1102
,
244
,
1099
,
109
8
,
/* 520 */
1082
,
1081
,
174
,
1050
,
1061
,
153
,
1058
,
1043
,
1059
,
281
,
/* 520 */
245
,
345
,
827
,
157
,
48
,
1053
,
1064
,
1085
,
1061
,
1062
,
/* 530 */
10
24
,
1063
,
310
,
285
,
240
,
158
,
287
,
825
,
163
,
292
,
/* 530 */
10
45
,
1084
,
281
,
1066
,
1026
,
154
,
159
,
164
,
292
,
175
,
/* 540 */
1
65
,
175
,
1022
,
1040
,
176
,
167
,
177
,
937
,
306
,
767
,
/* 540 */
1
76
,
1024
,
33
,
285
,
177
,
168
,
178
,
939
,
769
,
306
,
/* 550 */
307
,
308
,
311
,
166
,
312
,
289
,
46
,
205
,
42
,
32
3
,
/* 550 */
307
,
308
,
311
,
312
,
1042
,
46
,
206
,
42
,
323
,
93
3
,
/* 560 */
931
,
330
,
1161
,
113
,
78
,
75
,
299
,
1160
,
50
,
1157
,
/* 560 */
330
,
1164
,
114
,
241
,
79
,
1163
,
287
,
1160
,
289
,
76
,
/* 570 */
1
83
,
297
,
168
,
295
,
337
,
1153
,
293
,
119
,
1152
,
1149
,
/* 570 */
1
66
,
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 */
9
09
,
908
,
907
,
906
,
905
,
199
,
201
,
902
,
900
,
898
,
/* 600 */
9
12
,
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 */
8
67
,
850
,
227
,
849
,
280
,
275
,
228
,
107
,
936
,
935
,
/* 640 */
8
70
,
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 */
1
89
,
145
,
146
,
190
,
903
,
2
,
780
,
995
,
147
,
161
,
/* 670 */
1
91
,
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 */
10
4
,
37
,
105
,
677
,
675
,
674
,
673
,
671
,
670
,
669
,
/* 710 */
10
5
,
36
,
104
,
643
,
37
,
106
,
678
,
676
,
675
,
674
,
/* 720 */
6
66
,
321
,
109
,
632
,
7
,
826
,
824
,
8
,
328
,
327
,
/* 720 */
6
72
,
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 */
6
78
,
676
,
672
,
668
,
667
,
194
,
630
,
594
,
873
,
872
,
/* 750 */
6
45
,
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 */
87
2
,
149
,
150
,
/* 770 */
87
4
,
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
,
8
6
,
208
,
39
,
40
,
41
,
47
,
/* 160 */
249
,
277
,
35
,
36
,
8
4
,
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
,
25
0
,
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
,
2
75
,
27
,
/* 270 */
84
,
5
,
207
,
7
,
144
,
9
,
125
,
84
,
2
67
,
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 */
26
5
,
7
,
71
,
278
,
73
,
74
,
75
,
64
,
65
,
66
,
/* 340 */
26
7
,
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
,
7
8
,
107
,
249
,
119
,
/* 360 */
100
,
245
,
102
,
103
,
245
,
249
,
20
8
,
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
,
2
00
,
200
,
84
,
245
,
85
,
99
,
88
,
249
,
206
,
/* 400 */
200
,
2
75
,
244
,
84
,
245
,
200
,
208
,
88
,
249
,
85
,
/* 410 */
85
,
211
,
211
,
211
,
204
,
205
,
213
,
245
,
8
5
,
126
,
/* 410 */
99
,
211
,
200
,
204
,
205
,
85
,
211
,
245
,
1
5
,
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
,
2
50
,
240
,
240
,
240
,
240
,
240
,
240
,
200
,
266
,
/* 510 */
267
,
2
67
,
250
,
250
,
240
,
248
,
240
,
240
,
240
,
240
,
/* 520 */
2
76
,
276
,
252
,
200
,
200
,
62
,
200
,
248
,
200
,
248
,
/* 520 */
2
40
,
240
,
119
,
200
,
266
,
200
,
200
,
276
,
200
,
200
,
/* 530 */
248
,
2
00
,
91
,
271
,
271
,
200
,
271
,
119
,
200
,
200
,
/* 530 */
248
,
2
76
,
248
,
200
,
248
,
62
,
200
,
200
,
200
,
252
,
/* 540 */
2
62
,
200
,
200
,
263
,
200
,
260
,
200
,
200
,
200
,
126
,
/* 540 */
2
00
,
200
,
253
,
271
,
200
,
260
,
200
,
200
,
126
,
200
,
/* 550 */
200
,
200
,
200
,
2
61
,
200
,
271
,
200
,
200
,
200
,
200
,
/* 550 */
200
,
200
,
200
,
2
00
,
263
,
200
,
200
,
200
,
200
,
200
,
/* 560 */
200
,
200
,
200
,
2
00
,
138
,
140
,
133
,
200
,
137
,
20
0
,
/* 560 */
200
,
200
,
200
,
2
71
,
138
,
200
,
271
,
200
,
271
,
14
0
,
/* 570 */
2
00
,
136
,
259
,
131
,
200
,
200
,
130
,
200
,
200
,
200
,
/* 570 */
2
62
,
133
,
200
,
200
,
261
,
200
,
137
,
200
,
200
,
136
,
/* 580 */
200
,
200
,
1
29
,
200
,
200
,
200
,
200
,
200
,
200
,
200
,
/* 580 */
200
,
200
,
1
31
,
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
,
15
5
,
5
,
/* 630 */
96
,
57
,
202
,
95
,
202
,
202
,
93
,
86
,
5
,
5
,
/* 640 */
5
,
1
02
,
202
,
101
,
122
,
144
,
202
,
208
,
212
,
212
,
/* 640 */
5
,
1
55
,
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 */
21
6
,
203
,
203
,
217
,
202
,
209
,
85
,
239
,
203
,
84
,
/* 670 */
21
7
,
202
,
202
,
223
,
203
,
239
,
209
,
84
,
203
,
202
,
/* 680 */
2
58
,
257
,
223
,
256
,
255
,
253
,
202
,
202
,
85
,
99
,
/* 680 */
2
02
,
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 */
1
49
,
149
,
16
,
16
,
149
,
5
,
99
,
149
,
5
,
8
5
,
/* 730 */
1
19
,
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 (7
58
)
#define YY_SHIFT_MAX (7
61
)
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
,
42
3
,
/* 150 */
23
,
23
,
23
,
23
,
23
,
23
,
23
,
473
,
473
,
47
3
,
/* 160 */
42
3
,
423
,
423
,
463
,
463
,
426
,
425
,
433
,
431
,
435
,
/* 160 */
42
2
,
422
,
422
,
422
,
473
,
473
,
426
,
429
,
438
,
439
,
/* 170 */
44
2
,
446
,
453
,
465
,
474
,
463
,
463
,
463
,
441
,
441
,
/* 170 */
44
3
,
451
,
466
,
474
,
484
,
476
,
473
,
473
,
473
,
528
,
/* 180 */
5
00
,
17
,
17
,
463
,
463
,
519
,
523
,
571
,
531
,
530
,
/* 180 */
5
28
,
509
,
98
,
98
,
473
,
473
,
529
,
531
,
573
,
535
,
/* 190 */
5
70
,
533
,
536
,
500
,
48
,
463
,
463
,
545
,
545
,
463
,
/* 190 */
5
34
,
574
,
538
,
543
,
509
,
48
,
473
,
473
,
551
,
551
,
/* 200 */
545
,
463
,
545
,
463
,
463
,
773
,
773
,
29
,
6
9
,
69
,
/* 200 */
473
,
551
,
473
,
551
,
473
,
473
,
776
,
776
,
2
9
,
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
,
2
71
,
283
,
40
,
40
,
40
,
40
,
233
,
247
,
130
,
/* 220 */
252
,
2
52
,
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 */
3
45
,
349
,
353
,
332
,
307
,
355
,
364
,
365
,
366
,
368
,
/* 240 */
3
30
,
348
,
363
,
364
,
331
,
311
,
366
,
368
,
369
,
370
,
/* 250 */
371
,
3
72
,
373
,
455
,
397
,
418
,
376
,
321
,
327
,
330
,
/* 250 */
371
,
3
54
,
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 */
63
2
,
483
,
634
,
635
,
539
,
542
,
501
,
522
,
535
,
566
,
/* 270 */
63
4
,
635
,
487
,
644
,
645
,
549
,
552
,
508
,
532
,
540
,
/* 280 */
5
32
,
568
,
572
,
555
,
558
,
573
,
577
,
591
,
595
,
603
,
/* 280 */
5
71
,
575
,
593
,
559
,
582
,
603
,
606
,
607
,
609
,
610
,
/* 290 */
59
0
,
608
,
609
,
611
,
692
,
612
,
598
,
564
,
600
,
567
,
/* 290 */
59
2
,
612
,
613
,
615
,
693
,
616
,
598
,
567
,
604
,
568
,
/* 300 */
6
16
,
535
,
618
,
586
,
620
,
587
,
626
,
619
,
621
,
638
,
/* 300 */
6
20
,
540
,
621
,
589
,
623
,
590
,
629
,
622
,
624
,
638
,
/* 310 */
70
2
,
622
,
624
,
704
,
709
,
710
,
711
,
712
,
713
,
714
,
/* 310 */
70
8
,
625
,
627
,
707
,
712
,
713
,
714
,
715
,
716
,
717
,
/* 320 */
71
5
,
636
,
706
,
642
,
640
,
641
,
606
,
643
,
703
,
667
,
/* 320 */
71
8
,
637
,
710
,
646
,
643
,
647
,
611
,
649
,
702
,
668
,
/* 330 */
71
6
,
581
,
582
,
637
,
637
,
637
,
637
,
717
,
585
,
588
,
/* 330 */
71
9
,
585
,
587
,
632
,
632
,
632
,
632
,
721
,
591
,
594
,
/* 340 */
63
7
,
637
,
637
,
730
,
733
,
654
,
637
,
735
,
736
,
737
,
/* 340 */
63
2
,
632
,
632
,
733
,
734
,
656
,
632
,
737
,
739
,
740
,
/* 350 */
7
38
,
739
,
740
,
741
,
742
,
743
,
744
,
745
,
746
,
747
,
/* 350 */
7
41
,
742
,
743
,
744
,
745
,
746
,
747
,
748
,
749
,
750
,
/* 360 */
7
48
,
749
,
656
,
669
,
750
,
751
,
695
,
758
,
/* 360 */
7
51
,
752
,
659
,
672
,
753
,
754
,
698
,
761
,
};
};
#define YY_REDUCE_COUNT (20
6
)
#define YY_REDUCE_COUNT (20
7
)
#define YY_REDUCE_MIN (-267)
#define YY_REDUCE_MIN (-267)
#define YY_REDUCE_MAX (48
6
)
#define YY_REDUCE_MAX (48
5
)
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
,
20
2
,
-
89
,
/* 30 */
-
131
,
-
63
,
126
,
-
239
,
-
58
,
158
,
200
,
205
,
21
2
,
-
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 */
23
2
,
234
,
235
,
236
,
237
,
238
,
239
,
241
,
242
,
243
,
/* 60 */
23
4
,
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 */
33
5
,
338
,
339
,
244
,
245
,
270
,
282
,
341
,
342
,
344
,
/* 90 */
33
3
,
336
,
337
,
338
,
251
,
255
,
287
,
286
,
340
,
341
,
/* 100 */
34
6
,
347
,
348
,
350
,
351
,
352
,
354
,
356
,
357
,
358
,
/* 100 */
34
4
,
346
,
347
,
349
,
350
,
351
,
352
,
353
,
355
,
356
,
/* 110 */
35
9
,
360
,
361
,
362
,
363
,
367
,
369
,
370
,
374
,
375
,
/* 110 */
35
7
,
358
,
359
,
360
,
361
,
362
,
365
,
367
,
372
,
373
,
/* 120 */
37
7
,
378
,
379
,
380
,
381
,
383
,
384
,
385
,
386
,
387
,
/* 120 */
37
5
,
377
,
378
,
380
,
381
,
383
,
384
,
385
,
386
,
387
,
/* 130 */
388
,
389
,
390
,
391
,
392
,
393
,
394
,
395
,
39
6
,
398
,
/* 130 */
388
,
389
,
390
,
391
,
392
,
393
,
394
,
395
,
39
7
,
398
,
/* 140 */
399
,
400
,
401
,
402
,
40
3
,
404
,
405
,
406
,
407
,
408
,
/* 140 */
399
,
400
,
401
,
402
,
40
4
,
405
,
406
,
407
,
408
,
409
,
/* 150 */
4
09
,
410
,
411
,
412
,
413
,
414
,
416
,
417
,
419
,
262
,
/* 150 */
4
10
,
411
,
412
,
413
,
414
,
415
,
417
,
418
,
419
,
420
,
/* 160 */
2
63
,
265
,
284
,
420
,
421
,
280
,
278
,
292
,
285
,
313
,
/* 160 */
2
72
,
292
,
295
,
297
,
421
,
423
,
291
,
308
,
313
,
285
,
/* 170 */
42
2
,
424
,
427
,
429
,
432
,
428
,
430
,
434
,
436
,
437
,
/* 170 */
42
4
,
427
,
425
,
428
,
431
,
289
,
430
,
432
,
433
,
434
,
/* 180 */
43
8
,
439
,
443
,
440
,
444
,
445
,
447
,
449
,
448
,
451
,
/* 180 */
43
5
,
436
,
437
,
440
,
441
,
442
,
444
,
446
,
445
,
447
,
/* 190 */
4
54
,
456
,
450
,
452
,
459
,
457
,
458
,
462
,
46
8
,
460
,
/* 190 */
4
49
,
452
,
453
,
455
,
448
,
450
,
454
,
457
,
45
8
,
460
,
/* 200 */
469
,
47
2
,
475
,
484
,
485
,
466
,
486
,
/* 200 */
469
,
47
1
,
470
,
475
,
477
,
478
,
467
,
485
,
};
};
static
const
YYACTIONTYPE
yy_default
[]
=
{
static
const
YYACTIONTYPE
yy_default
[]
=
{
/* 0 */
87
0
,
994
,
933
,
1004
,
920
,
930
,
1145
,
1145
,
1145
,
870
,
/* 0 */
87
2
,
996
,
935
,
1006
,
922
,
932
,
1148
,
1148
,
1148
,
872
,
/* 10 */
87
0
,
870
,
870
,
870
,
870
,
870
,
870
,
870
,
870
,
870
,
/* 10 */
87
2
,
872
,
872
,
872
,
872
,
872
,
872
,
872
,
872
,
872
,
/* 20 */
87
0
,
870
,
870
,
1052
,
890
,
1145
,
870
,
870
,
870
,
870
,
/* 20 */
87
2
,
872
,
872
,
1055
,
892
,
1148
,
872
,
872
,
872
,
872
,
/* 30 */
87
0
,
870
,
870
,
1067
,
870
,
930
,
870
,
870
,
870
,
870
,
/* 30 */
87
2
,
872
,
872
,
1070
,
872
,
932
,
872
,
872
,
872
,
872
,
/* 40 */
94
0
,
930
,
940
,
940
,
870
,
1047
,
978
,
996
,
870
,
870
,
/* 40 */
94
2
,
932
,
942
,
942
,
872
,
1050
,
980
,
998
,
872
,
872
,
/* 50 */
87
0
,
870
,
870
,
870
,
870
,
870
,
870
,
870
,
870
,
870
,
/* 50 */
87
2
,
872
,
872
,
872
,
872
,
872
,
872
,
872
,
872
,
872
,
/* 60 */
87
0
,
870
,
870
,
870
,
870
,
870
,
870
,
870
,
870
,
870
,
/* 60 */
87
2
,
872
,
872
,
872
,
872
,
872
,
872
,
872
,
872
,
872
,
/* 70 */
87
0
,
870
,
870
,
870
,
870
,
870
,
870
,
870
,
870
,
870
,
/* 70 */
87
2
,
872
,
872
,
872
,
872
,
872
,
872
,
872
,
872
,
872
,
/* 80 */
87
0
,
870
,
870
,
1054
,
1060
,
1057
,
870
,
870
,
870
,
106
2
,
/* 80 */
87
2
,
872
,
872
,
872
,
1057
,
1063
,
1060
,
872
,
872
,
87
2
,
/* 90 */
870
,
870
,
870
,
1086
,
1086
,
1045
,
870
,
870
,
870
,
870
,
/* 90 */
1065
,
872
,
872
,
872
,
1089
,
1089
,
1048
,
872
,
872
,
872
,
/* 100 */
87
0
,
870
,
870
,
870
,
870
,
870
,
870
,
870
,
870
,
870
,
/* 100 */
87
2
,
872
,
872
,
872
,
872
,
872
,
872
,
872
,
872
,
872
,
/* 110 */
87
0
,
870
,
870
,
870
,
870
,
870
,
870
,
870
,
870
,
870
,
/* 110 */
87
2
,
872
,
872
,
872
,
872
,
872
,
872
,
872
,
872
,
872
,
/* 120 */
87
0
,
870
,
870
,
870
,
870
,
870
,
870
,
870
,
870
,
918
,
/* 120 */
87
2
,
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 */
87
0
,
870
,
870
,
870
,
870
,
870
,
870
,
870
,
901
,
870
,
/* 140 */
87
2
,
872
,
872
,
872
,
872
,
872
,
872
,
872
,
872
,
903
,
/* 150 */
87
0
,
870
,
870
,
870
,
870
,
888
,
892
,
892
,
892
,
870
,
/* 150 */
87
2
,
872
,
872
,
872
,
872
,
872
,
890
,
894
,
894
,
894
,
/* 160 */
87
0
,
870
,
870
,
892
,
892
,
1093
,
1097
,
1079
,
1091
,
1087
,
/* 160 */
87
2
,
872
,
872
,
872
,
894
,
894
,
1096
,
1100
,
1082
,
1094
,
/* 170 */
10
74
,
1072
,
1070
,
1078
,
1101
,
892
,
892
,
892
,
938
,
938
,
/* 170 */
10
90
,
1077
,
1075
,
1073
,
1081
,
1104
,
894
,
894
,
894
,
940
,
/* 180 */
9
34
,
930
,
930
,
892
,
892
,
956
,
954
,
952
,
944
,
950
,
/* 180 */
9
40
,
936
,
932
,
932
,
894
,
894
,
958
,
956
,
954
,
946
,
/* 190 */
9
46
,
948
,
942
,
921
,
870
,
892
,
892
,
928
,
928
,
892
,
/* 190 */
9
52
,
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 */
11
28
,
870
,
870
,
1124
,
1127
,
1126
,
1125
,
870
,
870
,
870
,
/* 220 */
11
32
,
1131
,
872
,
872
,
1127
,
1130
,
1129
,
1128
,
872
,
872
,
/* 230 */
87
0
,
1134
,
1133
,
870
,
870
,
870
,
870
,
870
,
870
,
870
,
/* 230 */
87
2
,
872
,
1137
,
1136
,
872
,
872
,
872
,
872
,
872
,
872
,
/* 240 */
87
0
,
870
,
870
,
1098
,
1094
,
870
,
870
,
870
,
870
,
870
,
/* 240 */
87
2
,
872
,
872
,
872
,
1101
,
1097
,
872
,
872
,
872
,
872
,
/* 250 */
87
0
,
870
,
870
,
870
,
1104
,
870
,
870
,
870
,
870
,
870
,
/* 250 */
87
2
,
872
,
872
,
872
,
872
,
1107
,
872
,
872
,
872
,
872
,
/* 260 */
87
0
,
870
,
870
,
870
,
1006
,
870
,
870
,
870
,
870
,
870
,
/* 260 */
87
2
,
872
,
872
,
872
,
872
,
1008
,
872
,
872
,
872
,
872
,
/* 270 */
87
0
,
870
,
870
,
870
,
870
,
870
,
870
,
1044
,
870
,
870
,
/* 270 */
87
2
,
872
,
872
,
872
,
872
,
872
,
872
,
872
,
1047
,
872
,
/* 280 */
87
0
,
870
,
870
,
1056
,
1055
,
870
,
870
,
870
,
870
,
870
,
/* 280 */
87
2
,
872
,
872
,
1059
,
1058
,
872
,
872
,
872
,
872
,
872
,
/* 290 */
87
0
,
870
,
870
,
870
,
870
,
870
,
1088
,
870
,
1080
,
870
,
/* 290 */
87
2
,
872
,
872
,
872
,
872
,
872
,
1091
,
872
,
1083
,
872
,
/* 300 */
87
0
,
1018
,
870
,
870
,
870
,
870
,
870
,
870
,
870
,
870
,
/* 300 */
87
2
,
1020
,
872
,
872
,
872
,
872
,
872
,
872
,
872
,
872
,
/* 310 */
87
0
,
870
,
870
,
870
,
870
,
870
,
870
,
870
,
870
,
870
,
/* 310 */
87
2
,
872
,
872
,
872
,
872
,
872
,
872
,
872
,
872
,
872
,
/* 320 */
87
0
,
870
,
870
,
870
,
870
,
870
,
870
,
870
,
870
,
870
,
/* 320 */
87
2
,
872
,
872
,
872
,
872
,
872
,
872
,
872
,
872
,
872
,
/* 330 */
87
0
,
870
,
870
,
1163
,
1158
,
1159
,
1156
,
870
,
870
,
870
,
/* 330 */
87
2
,
872
,
872
,
1166
,
1161
,
1162
,
1159
,
872
,
872
,
872
,
/* 340 */
115
5
,
1150
,
1151
,
870
,
870
,
870
,
1148
,
870
,
870
,
870
,
/* 340 */
115
8
,
1153
,
1154
,
872
,
872
,
872
,
1151
,
872
,
872
,
872
,
/* 350 */
87
0
,
870
,
870
,
870
,
870
,
870
,
870
,
870
,
870
,
870
,
/* 350 */
87
2
,
872
,
872
,
872
,
872
,
872
,
872
,
872
,
872
,
872
,
/* 360 */
87
0
,
870
,
962
,
870
,
899
,
897
,
870
,
870
,
/* 360 */
87
2
,
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
->
yy
135
));
destroyAllSqlNode
((
yypminor
->
yy
551
));
}
}
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
18
1
:
/* distinct ::= */
yytestcase
(
yyruleno
==
181
);
case
18
2
:
/* 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
.
yy
135
=
setSubclause
(
NULL
,
yymsp
[
0
].
minor
.
yy488
);
}
{
yylhsminor
.
yy
551
=
setSubclause
(
NULL
,
yymsp
[
0
].
minor
.
yy488
);
}
yymsp
[
0
].
minor
.
yy
135
=
yylhsminor
.
yy135
;
yymsp
[
0
].
minor
.
yy
551
=
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
17
1
:
/* cmd ::= union */
case
17
2
:
/* cmd ::= union */
{
setSqlInfo
(
pInfo
,
yymsp
[
0
].
minor
.
yy
135
,
NULL
,
TSDB_SQL_SELECT
);
}
{
setSqlInfo
(
pInfo
,
yymsp
[
0
].
minor
.
yy
551
,
NULL
,
TSDB_SQL_SELECT
);
}
break
;
break
;
case
17
2
:
/* select ::= SELECT selcollist */
case
17
3
:
/* 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
17
3
:
/* sclp ::= selcollist COMMA */
case
17
4
:
/* 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
17
4
:
/* sclp ::= */
case
17
5
:
/* sclp ::= */
case
20
6
:
/* orderby_opt ::= */
yytestcase
(
yyruleno
==
206
);
case
20
7
:
/* orderby_opt ::= */
yytestcase
(
yyruleno
==
207
);
{
yymsp
[
1
].
minor
.
yy135
=
0
;}
{
yymsp
[
1
].
minor
.
yy135
=
0
;}
break
;
break
;
case
17
5
:
/* selcollist ::= sclp distinct expr as */
case
17
6
:
/* 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
17
6
:
/* selcollist ::= sclp STAR */
case
17
7
:
/* 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
17
7
:
/* as ::= AS ids */
case
17
8
:
/* as ::= AS ids */
{
yymsp
[
-
1
].
minor
.
yy0
=
yymsp
[
0
].
minor
.
yy0
;
}
{
yymsp
[
-
1
].
minor
.
yy0
=
yymsp
[
0
].
minor
.
yy0
;
}
break
;
break
;
case
17
8
:
/* as ::= ids */
case
17
9
:
/* 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
1
79
:
/* as ::= */
case
1
80
:
/* as ::= */
{
yymsp
[
1
].
minor
.
yy0
.
n
=
0
;
}
{
yymsp
[
1
].
minor
.
yy0
.
n
=
0
;
}
break
;
break
;
case
18
0
:
/* distinct ::= DISTINCT */
case
18
1
:
/* 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
18
2
:
/* from ::= FROM tablelist */
case
18
3
:
/* from ::= FROM tablelist */
case
18
3
:
/* from ::= FROM sub */
yytestcase
(
yyruleno
==
183
);
case
18
4
:
/* 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
18
4
:
/* sub ::= LP union RP */
case
18
5
:
/* sub ::= LP union RP */
{
yymsp
[
-
2
].
minor
.
yy460
=
addSubquery
(
NULL
,
yymsp
[
-
1
].
minor
.
yy
135
,
NULL
);}
{
yymsp
[
-
2
].
minor
.
yy460
=
addSubquery
(
NULL
,
yymsp
[
-
1
].
minor
.
yy
551
,
NULL
);}
break
;
break
;
case
18
5
:
/* sub ::= LP union RP ids */
case
18
6
:
/* sub ::= LP union RP ids */
{
yymsp
[
-
3
].
minor
.
yy460
=
addSubquery
(
NULL
,
yymsp
[
-
2
].
minor
.
yy
135
,
&
yymsp
[
0
].
minor
.
yy0
);}
{
yymsp
[
-
3
].
minor
.
yy460
=
addSubquery
(
NULL
,
yymsp
[
-
2
].
minor
.
yy
551
,
&
yymsp
[
0
].
minor
.
yy0
);}
break
;
break
;
case
18
6
:
/* sub ::= sub COMMA LP union RP ids */
case
18
7
:
/* sub ::= sub COMMA LP union RP ids */
{
yylhsminor
.
yy460
=
addSubquery
(
yymsp
[
-
5
].
minor
.
yy460
,
yymsp
[
-
2
].
minor
.
yy
135
,
&
yymsp
[
0
].
minor
.
yy0
);}
{
yylhsminor
.
yy460
=
addSubquery
(
yymsp
[
-
5
].
minor
.
yy460
,
yymsp
[
-
2
].
minor
.
yy
551
,
&
yymsp
[
0
].
minor
.
yy0
);}
yymsp
[
-
5
].
minor
.
yy460
=
yylhsminor
.
yy460
;
yymsp
[
-
5
].
minor
.
yy460
=
yylhsminor
.
yy460
;
break
;
break
;
case
18
7
:
/* tablelist ::= ids cpxName */
case
18
8
:
/* 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
18
8
:
/* tablelist ::= ids cpxName ids */
case
18
9
:
/* 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
1
89
:
/* tablelist ::= tablelist COMMA ids cpxName */
case
1
90
:
/* 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
19
0
:
/* tablelist ::= tablelist COMMA ids cpxName ids */
case
19
1
:
/* 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
19
1
:
/* tmvar ::= VARIABLE */
case
19
2
:
/* 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
19
2
:
/* interval_option ::= intervalKey LP tmvar RP */
case
19
3
:
/* 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
19
3
:
/* interval_option ::= intervalKey LP tmvar COMMA tmvar RP */
case
19
4
:
/* 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
19
4
:
/* interval_option ::= */
case
19
5
:
/* 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
19
5
:
/* intervalKey ::= INTERVAL */
case
19
6
:
/* intervalKey ::= INTERVAL */
{
yymsp
[
0
].
minor
.
yy262
=
TK_INTERVAL
;}
{
yymsp
[
0
].
minor
.
yy262
=
TK_INTERVAL
;}
break
;
break
;
case
19
6
:
/* intervalKey ::= EVERY */
case
19
7
:
/* intervalKey ::= EVERY */
{
yymsp
[
0
].
minor
.
yy262
=
TK_EVERY
;
}
{
yymsp
[
0
].
minor
.
yy262
=
TK_EVERY
;
}
break
;
break
;
case
19
7
:
/* session_option ::= */
case
19
8
:
/* 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
19
8
:
/* session_option ::= SESSION LP ids cpxName COMMA tmvar RP */
case
19
9
:
/* 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
20
0
:
/* windowstate_option ::= STATE_WINDOW LP ids RP */
case
20
1
:
/* 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
20
1
:
/* fill_opt ::= */
case
20
2
:
/* fill_opt ::= */
{
yymsp
[
1
].
minor
.
yy135
=
0
;
}
{
yymsp
[
1
].
minor
.
yy135
=
0
;
}
break
;
break
;
case
20
2
:
/* fill_opt ::= FILL LP ID COMMA tagitemlist RP */
case
20
3
:
/* 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
20
3
:
/* fill_opt ::= FILL LP ID RP */
case
20
4
:
/* 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
20
4
:
/* sliding_opt ::= SLIDING LP tmvar RP */
case
20
5
:
/* 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
20
5
:
/* sliding_opt ::= */
case
20
6
:
/* 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
20
7
:
/* orderby_opt ::= ORDER BY sortlist */
case
20
8
:
/* orderby_opt ::= ORDER BY sortlist */
{
yymsp
[
-
2
].
minor
.
yy135
=
yymsp
[
0
].
minor
.
yy135
;}
{
yymsp
[
-
2
].
minor
.
yy135
=
yymsp
[
0
].
minor
.
yy135
;}
break
;
break
;
case
20
8
:
/* sortlist ::= sortlist COMMA item sortorder */
case
20
9
:
/* 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
2
09
:
/* sortlist ::= item sortorder */
case
2
10
:
/* 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
21
0
:
/* item ::= ids cpxName */
case
21
1
:
/* 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
21
1
:
/* sortorder ::= ASC */
case
21
2
:
/* sortorder ::= ASC */
{
yymsp
[
0
].
minor
.
yy130
=
TSDB_ORDER_ASC
;
}
{
yymsp
[
0
].
minor
.
yy130
=
TSDB_ORDER_ASC
;
}
break
;
break
;
case
21
2
:
/* sortorder ::= DESC */
case
21
3
:
/* sortorder ::= DESC */
{
yymsp
[
0
].
minor
.
yy130
=
TSDB_ORDER_DESC
;}
{
yymsp
[
0
].
minor
.
yy130
=
TSDB_ORDER_DESC
;}
break
;
break
;
case
21
3
:
/* sortorder ::= */
case
21
4
:
/* sortorder ::= */
{
yymsp
[
1
].
minor
.
yy130
=
TSDB_ORDER_ASC
;
}
{
yymsp
[
1
].
minor
.
yy130
=
TSDB_ORDER_ASC
;
}
break
;
break
;
case
21
4
:
/* groupby_opt ::= */
case
21
5
:
/* groupby_opt ::= */
{
yymsp
[
1
].
minor
.
yy135
=
0
;}
{
yymsp
[
1
].
minor
.
yy135
=
0
;}
break
;
break
;
case
21
5
:
/* groupby_opt ::= GROUP BY grouplist */
case
21
6
:
/* groupby_opt ::= GROUP BY grouplist */
{
yymsp
[
-
2
].
minor
.
yy135
=
yymsp
[
0
].
minor
.
yy135
;}
{
yymsp
[
-
2
].
minor
.
yy135
=
yymsp
[
0
].
minor
.
yy135
;}
break
;
break
;
case
21
6
:
/* grouplist ::= grouplist COMMA item */
case
21
7
:
/* 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
21
7
:
/* grouplist ::= item */
case
21
8
:
/* 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
21
8
:
/* having_opt ::= */
case
21
9
:
/* having_opt ::= */
case
22
8
:
/* where_opt ::= */
yytestcase
(
yyruleno
==
228
);
case
22
9
:
/* where_opt ::= */
yytestcase
(
yyruleno
==
229
);
case
27
2
:
/* expritem ::= */
yytestcase
(
yyruleno
==
272
);
case
27
3
:
/* expritem ::= */
yytestcase
(
yyruleno
==
273
);
{
yymsp
[
1
].
minor
.
yy526
=
0
;}
{
yymsp
[
1
].
minor
.
yy526
=
0
;}
break
;
break
;
case
2
19
:
/* having_opt ::= HAVING expr */
case
2
20
:
/* having_opt ::= HAVING expr */
case
2
29
:
/* where_opt ::= WHERE expr */
yytestcase
(
yyruleno
==
229
);
case
2
30
:
/* 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
22
0
:
/* limit_opt ::= */
case
22
1
:
/* limit_opt ::= */
case
22
4
:
/* slimit_opt ::= */
yytestcase
(
yyruleno
==
224
);
case
22
5
:
/* 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
22
1
:
/* limit_opt ::= LIMIT signed */
case
22
2
:
/* limit_opt ::= LIMIT signed */
case
22
5
:
/* slimit_opt ::= SLIMIT signed */
yytestcase
(
yyruleno
==
225
);
case
22
6
:
/* 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
22
2
:
/* limit_opt ::= LIMIT signed OFFSET signed */
case
22
3
:
/* 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
22
3
:
/* limit_opt ::= LIMIT signed COMMA signed */
case
22
4
:
/* 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
22
6
:
/* slimit_opt ::= SLIMIT signed SOFFSET signed */
case
22
7
:
/* 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
22
7
:
/* slimit_opt ::= SLIMIT signed COMMA signed */
case
22
8
:
/* 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
23
0
:
/* expr ::= LP expr RP */
case
23
1
:
/* 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
23
1
:
/* expr ::= ID */
case
23
2
:
/* 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
23
2
:
/* expr ::= ID DOT ID */
case
23
3
:
/* 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
23
3
:
/* expr ::= ID DOT STAR */
case
23
4
:
/* 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
23
4
:
/* expr ::= INTEGER */
case
23
5
:
/* 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
23
5
:
/* expr ::= MINUS INTEGER */
case
23
6
:
/* expr ::= MINUS INTEGER */
case
23
6
:
/* expr ::= PLUS INTEGER */
yytestcase
(
yyruleno
==
236
);
case
23
7
:
/* 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
23
7
:
/* expr ::= FLOAT */
case
23
8
:
/* 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
23
8
:
/* expr ::= MINUS FLOAT */
case
23
9
:
/* expr ::= MINUS FLOAT */
case
2
39
:
/* expr ::= PLUS FLOAT */
yytestcase
(
yyruleno
==
239
);
case
2
40
:
/* 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
24
0
:
/* expr ::= STRING */
case
24
1
:
/* 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
24
1
:
/* expr ::= NOW */
case
24
2
:
/* 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
24
2
:
/* expr ::= VARIABLE */
case
24
3
:
/* 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
24
3
:
/* expr ::= PLUS VARIABLE */
case
24
4
:
/* expr ::= PLUS VARIABLE */
case
24
4
:
/* expr ::= MINUS VARIABLE */
yytestcase
(
yyruleno
==
244
);
case
24
5
:
/* 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
24
5
:
/* expr ::= BOOL */
case
24
6
:
/* 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
24
6
:
/* expr ::= NULL */
case
24
7
:
/* 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
24
7
:
/* expr ::= ID LP exprlist RP */
case
24
8
:
/* 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
24
8
:
/* expr ::= ID LP STAR RP */
case
24
9
:
/* 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
2
49
:
/* expr ::= expr IS NULL */
case
2
50
:
/* 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
25
0
:
/* expr ::= expr IS NOT NULL */
case
25
1
:
/* 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
25
1
:
/* expr ::= expr LT expr */
case
25
2
:
/* 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
25
2
:
/* expr ::= expr GT expr */
case
25
3
:
/* 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
25
3
:
/* expr ::= expr LE expr */
case
25
4
:
/* 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
25
4
:
/* expr ::= expr GE expr */
case
25
5
:
/* 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
25
5
:
/* expr ::= expr NE expr */
case
25
6
:
/* 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
25
6
:
/* expr ::= expr EQ expr */
case
25
7
:
/* 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
25
7
:
/* expr ::= expr BETWEEN expr AND expr */
case
25
8
:
/* 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
25
8
:
/* expr ::= expr AND expr */
case
25
9
:
/* 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
2
59
:
/* expr ::= expr OR expr */
case
2
60
:
/* 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
26
0
:
/* expr ::= expr PLUS expr */
case
26
1
:
/* 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
26
1
:
/* expr ::= expr MINUS expr */
case
26
2
:
/* 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
26
2
:
/* expr ::= expr STAR expr */
case
26
3
:
/* 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
26
3
:
/* expr ::= expr SLASH expr */
case
26
4
:
/* 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
26
4
:
/* expr ::= expr REM expr */
case
26
5
:
/* 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
26
5
:
/* expr ::= expr LIKE expr */
case
26
6
:
/* 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
26
6
:
/* expr ::= expr MATCH expr */
case
26
7
:
/* 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
26
7
:
/* expr ::= expr NMATCH expr */
case
26
8
:
/* 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
26
8
:
/* expr ::= expr IN LP exprlist RP */
case
26
9
:
/* 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
2
69
:
/* exprlist ::= exprlist COMMA expritem */
case
2
70
:
/* 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
27
0
:
/* exprlist ::= expritem */
case
27
1
:
/* 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
27
1
:
/* expritem ::= expr */
case
27
2
:
/* 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
27
3
:
/* cmd ::= RESET QUERY CACHE */
case
27
4
:
/* cmd ::= RESET QUERY CACHE */
{
setDCLSqlElems
(
pInfo
,
TSDB_SQL_RESET_CACHE
,
0
);}
{
setDCLSqlElems
(
pInfo
,
TSDB_SQL_RESET_CACHE
,
0
);}
break
;
break
;
case
27
4
:
/* cmd ::= SYNCDB ids REPLICA */
case
27
5
:
/* 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
27
5
:
/* cmd ::= ALTER TABLE ids cpxName ADD COLUMN columnlist */
case
27
6
:
/* 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
27
6
:
/* cmd ::= ALTER TABLE ids cpxName DROP COLUMN ids */
case
27
7
:
/* 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
27
7
:
/* cmd ::= ALTER TABLE ids cpxName MODIFY COLUMN columnlist */
case
27
8
:
/* 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
27
8
:
/* cmd ::= ALTER TABLE ids cpxName ADD TAG columnlist */
case
27
9
:
/* 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
2
79
:
/* cmd ::= ALTER TABLE ids cpxName DROP TAG ids */
case
2
80
:
/* 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
28
0
:
/* cmd ::= ALTER TABLE ids cpxName CHANGE TAG ids ids */
case
28
1
:
/* 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
28
1
:
/* cmd ::= ALTER TABLE ids cpxName SET TAG ids EQ tagitem */
case
28
2
:
/* 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
28
2
:
/* cmd ::= ALTER TABLE ids cpxName MODIFY TAG columnlist */
case
28
3
:
/* 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
28
3
:
/* cmd ::= ALTER STABLE ids cpxName ADD COLUMN columnlist */
case
28
4
:
/* 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
28
4
:
/* cmd ::= ALTER STABLE ids cpxName DROP COLUMN ids */
case
28
5
:
/* 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
28
5
:
/* cmd ::= ALTER STABLE ids cpxName MODIFY COLUMN columnlist */
case
28
6
:
/* 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
28
6
:
/* cmd ::= ALTER STABLE ids cpxName ADD TAG columnlist */
case
28
7
:
/* 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
28
7
:
/* cmd ::= ALTER STABLE ids cpxName DROP TAG ids */
case
28
8
:
/* 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
28
8
:
/* cmd ::= ALTER STABLE ids cpxName CHANGE TAG ids ids */
case
28
9
:
/* 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
2
89
:
/* cmd ::= ALTER STABLE ids cpxName SET TAG ids EQ tagitem */
case
2
90
:
/* 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
29
0
:
/* cmd ::= ALTER STABLE ids cpxName MODIFY TAG columnlist */
case
29
1
:
/* 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
29
1
:
/* cmd ::= KILL CONNECTION INTEGER */
case
29
2
:
/* 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
29
2
:
/* cmd ::= KILL STREAM INTEGER COLON INTEGER */
case
29
3
:
/* 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
29
3
:
/* cmd ::= KILL QUERY INTEGER COLON INTEGER */
case
29
4
:
/* 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:
...
...
source/libs/parser/test/parserTests.cpp
浏览文件 @
a0d3fa46
...
@@ -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
);
...
...
source/libs/parser/test/plannerTest.cpp
浏览文件 @
a0d3fa46
...
@@ -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
...
...
source/libs/parser/test/tokenizerTest.cpp
浏览文件 @
a0d3fa46
...
@@ -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
);
...
...
src/client/src/tscSQLParser.c
浏览文件 @
a0d3fa46
...
@@ -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
);
}
}
SRelElement
Pair
*
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
)
{
SRelElement
Pair
*
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
)
{
SRelElement
Pair
*
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
);
}
}
SRelElement
Pair
*
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
)
{
SRelElement
Pair
*
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
SRelElement
Pair
*
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
) {
// SRelElement
Pair
*item = taosArrayGet(pSqlNode->from->list, 0);
// SRelElement *item = taosArrayGet(pSqlNode->from->list, 0);
// item->TableName.name;
// item->TableName.name;
}
}
...
...
src/query/inc/qSqlparser.h
浏览文件 @
a0d3fa46
...
@@ -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
SRelElement
Pair
{
typedef
struct
SRelElement
{
union
{
union
{
SStrToken
tableName
;
SStrToken
tableName
;
SArray
*
pSubquery
;
SArray
*
pSubquery
;
};
};
SStrToken
aliasName
;
SStrToken
aliasName
;
}
SRelElement
Pair
;
}
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<SRelElement
Pair
>
SArray
*
list
;
// SArray<SRelElement>
}
SRelationInfo
;
}
SRelationInfo
;
typedef
struct
SCreatedTableInfo
{
typedef
struct
SCreatedTableInfo
{
...
...
src/query/src/qSqlParser.c
浏览文件 @
a0d3fa46
...
@@ -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
(
SRelElement
Pair
));
pRelationInfo
->
list
=
taosArrayInit
(
4
,
sizeof
(
SRelElement
));
}
}
pRelationInfo
->
type
=
SQL_
NODE_FROM_TABLELIST
;
pRelationInfo
->
type
=
SQL_
FROM_NODE_TABLES
;
SRelElement
Pair
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
(
SRelElement
Pair
));
pRelationInfo
->
list
=
taosArrayInit
(
4
,
sizeof
(
SRelElement
));
}
}
pRelationInfo
->
type
=
SQL_
NODE_FROM
_SUBQUERY
;
pRelationInfo
->
type
=
SQL_
FROM_NODE
_SUBQUERY
;
SRelElement
Pair
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.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录