Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
ce0b391f
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看板
提交
ce0b391f
编写于
5月 09, 2022
作者:
X
xywang
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'feature/TS-1210' into feature/TS-1436-2.4
上级
e28a0339
c522f3b3
变更
16
显示空白变更内容
内联
并排
Showing
16 changed file
with
2518 addition
and
1958 deletion
+2518
-1958
src/client/src/tscSQLParser.c
src/client/src/tscSQLParser.c
+193
-69
src/client/src/tscUtil.c
src/client/src/tscUtil.c
+1
-1
src/common/src/tarithoperator.c
src/common/src/tarithoperator.c
+417
-213
src/common/src/texpr.c
src/common/src/texpr.c
+26
-161
src/inc/taosdef.h
src/inc/taosdef.h
+6
-1
src/inc/ttokendef.h
src/inc/ttokendef.h
+167
-166
src/inc/ttype.h
src/inc/ttype.h
+1
-0
src/kit/shell/src/shellEngine.c
src/kit/shell/src/shellEngine.c
+22
-10
src/query/inc/qFilter.h
src/query/inc/qFilter.h
+12
-5
src/query/inc/sql.y
src/query/inc/sql.y
+6
-1
src/query/src/qExecutor.c
src/query/src/qExecutor.c
+4
-0
src/query/src/qFilter.c
src/query/src/qFilter.c
+172
-21
src/query/src/qSqlParser.c
src/query/src/qSqlParser.c
+71
-1
src/query/src/sql.c
src/query/src/sql.c
+1348
-1305
src/tsdb/src/tsdbRead.c
src/tsdb/src/tsdbRead.c
+68
-4
src/util/src/ttokenizer.c
src/util/src/ttokenizer.c
+4
-0
未找到文件。
src/client/src/tscSQLParser.c
浏览文件 @
ce0b391f
...
@@ -145,6 +145,8 @@ static int32_t loadAllTableMeta(SSqlObj* pSql, struct SSqlInfo* pInfo);
...
@@ -145,6 +145,8 @@ static int32_t loadAllTableMeta(SSqlObj* pSql, struct SSqlInfo* pInfo);
static
tSqlExpr
*
extractExprForSTable
(
SSqlCmd
*
pCmd
,
tSqlExpr
**
pExpr
,
SQueryInfo
*
pQueryInfo
,
int32_t
tableIndex
);
static
tSqlExpr
*
extractExprForSTable
(
SSqlCmd
*
pCmd
,
tSqlExpr
**
pExpr
,
SQueryInfo
*
pQueryInfo
,
int32_t
tableIndex
);
static
void
convertWhereStringCharset
(
tSqlExpr
*
pRight
);
static
void
convertWhereStringCharset
(
tSqlExpr
*
pRight
);
static
bool
isLogicalOperator
(
tSqlExpr
*
pExpr
);
static
bool
isComparisonOperator
(
tSqlExpr
*
pExpr
);
int
validateTableName
(
char
*
tblName
,
int
len
,
SStrToken
*
psTblToken
,
bool
*
dbIncluded
);
int
validateTableName
(
char
*
tblName
,
int
len
,
SStrToken
*
psTblToken
,
bool
*
dbIncluded
);
static
bool
isTimeWindowQuery
(
SQueryInfo
*
pQueryInfo
)
{
static
bool
isTimeWindowQuery
(
SQueryInfo
*
pQueryInfo
)
{
...
@@ -284,6 +286,16 @@ static uint8_t convertRelationalOperator(SStrToken *pToken) {
...
@@ -284,6 +286,16 @@ static uint8_t convertRelationalOperator(SStrToken *pToken) {
return
TSDB_BINARY_OP_REMAINDER
;
return
TSDB_BINARY_OP_REMAINDER
;
case
TK_BITAND
:
case
TK_BITAND
:
return
TSDB_BINARY_OP_BITAND
;
return
TSDB_BINARY_OP_BITAND
;
case
TK_BITOR
:
return
TSDB_BINARY_OP_BITOR
;
case
TK_BITXOR
:
return
TSDB_BINARY_OP_BITXOR
;
case
TK_BITNOT
:
return
TSDB_BINARY_OP_BITNOT
;
case
TK_LSHIFT
:
return
TSDB_BINARY_OP_LSHIFT
;
case
TK_RSHIFT
:
return
TSDB_BINARY_OP_RSHIFT
;
case
TK_LIKE
:
case
TK_LIKE
:
return
TSDB_RELATION_LIKE
;
return
TSDB_RELATION_LIKE
;
case
TK_MATCH
:
case
TK_MATCH
:
...
@@ -4274,15 +4286,10 @@ static int32_t checkColumnFilterInfo(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, SCol
...
@@ -4274,15 +4286,10 @@ static int32_t checkColumnFilterInfo(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, SCol
STableMeta
*
pTableMeta
=
pTableMetaInfo
->
pTableMeta
;
STableMeta
*
pTableMeta
=
pTableMetaInfo
->
pTableMeta
;
SSchema
*
pSchema
=
tscGetTableColumnSchema
(
pTableMeta
,
pIndex
->
columnIndex
);
SSchema
*
pSchema
=
tscGetTableColumnSchema
(
pTableMeta
,
pIndex
->
columnIndex
);
int32_t
ret
=
0
;
int32_t
ret
=
TSDB_CODE_SUCCESS
;
const
char
*
msg1
=
"non binary column not support like/match operator"
;
const
char
*
msg1
=
"non binary column not support like/match operator"
;
const
char
*
msg3
=
"bool column not support this operator"
;
const
char
*
msg3
=
"bool column not support this operator"
;
const
char
*
msg4
=
"primary key not support this operator"
;
const
char
*
msg4
=
"primary key not support this operator"
;
SColumn
*
pColumn
=
tscColumnListInsert
(
pQueryInfo
->
colList
,
pIndex
->
columnIndex
,
pTableMeta
->
id
.
uid
,
pSchema
);
pColumn
->
info
.
flist
.
numOfFilters
++
;
/*
/*
* in case of TK_AND filter condition, we first find the corresponding column and build the query condition together
* in case of TK_AND filter condition, we first find the corresponding column and build the query condition together
* the already existed condition.
* the already existed condition.
...
@@ -4296,7 +4303,7 @@ static int32_t checkColumnFilterInfo(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, SCol
...
@@ -4296,7 +4303,7 @@ static int32_t checkColumnFilterInfo(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, SCol
pColFilter
->
filterstr
=
pColFilter
->
filterstr
=
((
pSchema
->
type
==
TSDB_DATA_TYPE_BINARY
||
pSchema
->
type
==
TSDB_DATA_TYPE_NCHAR
)
?
1
:
0
);
((
pSchema
->
type
==
TSDB_DATA_TYPE_BINARY
||
pSchema
->
type
==
TSDB_DATA_TYPE_NCHAR
)
?
1
:
0
);
if
(
!
pColFilter
->
filterstr
)
{
if
(
!
pColFilter
->
filterstr
&&
tSqlExprIsParentOfLeaf
(
pExpr
)
)
{
if
(
pExpr
->
tokenId
==
TK_LIKE
||
pExpr
->
tokenId
==
TK_MATCH
||
pExpr
->
tokenId
==
TK_NMATCH
)
{
if
(
pExpr
->
tokenId
==
TK_LIKE
||
pExpr
->
tokenId
==
TK_MATCH
||
pExpr
->
tokenId
==
TK_NMATCH
)
{
ret
=
invalidOperationMsg
(
tscGetErrorMsgPayload
(
pCmd
),
msg1
);
ret
=
invalidOperationMsg
(
tscGetErrorMsgPayload
(
pCmd
),
msg1
);
goto
_err_ret
;
goto
_err_ret
;
...
@@ -4310,11 +4317,10 @@ static int32_t checkColumnFilterInfo(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, SCol
...
@@ -4310,11 +4317,10 @@ static int32_t checkColumnFilterInfo(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, SCol
}
}
}
}
}
}
if
(
pIndex
->
columnIndex
==
PRIMARYKEY_TIMESTAMP_COL_INDEX
&&
pTableMeta
->
id
.
uid
==
TK_IN
pColumn
->
columnIndex
=
pIndex
->
columnIndex
;
&&
tSqlExprIsParentOfLeaf
(
pExpr
))
{
pColumn
->
tableUid
=
pTableMeta
->
id
.
uid
;
ret
=
invalidOperationMsg
(
tscGetErrorMsgPayload
(
pCmd
),
msg4
);
if
(
pColumn
->
columnIndex
==
PRIMARYKEY_TIMESTAMP_COL_INDEX
&&
pExpr
->
tokenId
==
TK_IN
)
{
goto
_err_ret
;
return
invalidOperationMsg
(
tscGetErrorMsgPayload
(
pCmd
),
msg4
);
}
}
STableComInfo
tinfo
=
tscGetTableInfo
(
pTableMeta
);
STableComInfo
tinfo
=
tscGetTableInfo
(
pTableMeta
);
...
@@ -4326,8 +4332,32 @@ _err_ret:
...
@@ -4326,8 +4332,32 @@ _err_ret:
return
ret
;
return
ret
;
}
}
static
int32_t
addAllColumn
(
SSqlCmd
*
pCmd
,
SQueryInfo
*
pQueryInfo
,
tSqlExpr
*
pExpr
,
uint32_t
conTokenId
,
SColumnIndex
*
pIndex
)
{
int32_t
ret
=
TSDB_CODE_SUCCESS
;
if
(
!
tSqlExprIsLeaf
(
pExpr
)
||
pExpr
->
tokenId
==
TK_ARROW
)
{
ret
=
addAllColumn
(
pCmd
,
pQueryInfo
,
pExpr
->
pLeft
,
conTokenId
,
pIndex
);
if
(
ret
!=
TSDB_CODE_SUCCESS
)
{
return
ret
;
}
return
addAllColumn
(
pCmd
,
pQueryInfo
,
pExpr
->
pRight
,
conTokenId
,
pIndex
);
}
else
if
(
pExpr
->
tokenId
==
TK_ID
)
{
if
(
getColumnIndexByName
(
&
pExpr
->
columnName
,
pQueryInfo
,
pIndex
,
tscGetErrorMsgPayload
(
pCmd
))
!=
TSDB_CODE_SUCCESS
)
{
return
TSDB_CODE_TSC_INVALID_OPERATION
;
}
STableMetaInfo
*
pTableMetaInfo
=
tscGetMetaInfo
(
pQueryInfo
,
pIndex
->
tableIndex
);
STableMeta
*
pTableMeta
=
pTableMetaInfo
->
pTableMeta
;
SSchema
*
pSchema
=
tscGetTableColumnSchema
(
pTableMeta
,
pIndex
->
columnIndex
);
SColumn
*
pColumn
=
tscColumnListInsert
(
pQueryInfo
->
colList
,
pIndex
->
columnIndex
,
pTableMeta
->
id
.
uid
,
pSchema
);
pColumn
->
info
.
flist
.
numOfFilters
++
;
}
return
ret
;
}
static
int32_t
getColQueryCondExpr
(
SSqlCmd
*
pCmd
,
SQueryInfo
*
pQueryInfo
,
tSqlExpr
**
pExpr
)
{
static
int32_t
getColQueryCondExpr
(
SSqlCmd
*
pCmd
,
SQueryInfo
*
pQueryInfo
,
tSqlExpr
**
pExpr
)
{
int32_t
ret
=
TSDB_CODE_SUCCESS
;
int32_t
ret
=
TSDB_CODE_SUCCESS
;
const
char
*
msg6
=
"illegal condition expression"
;
for
(
int32_t
i
=
0
;
i
<
pQueryInfo
->
numOfTables
;
++
i
)
{
for
(
int32_t
i
=
0
;
i
<
pQueryInfo
->
numOfTables
;
++
i
)
{
tSqlExpr
*
p1
=
extractExprForSTable
(
pCmd
,
pExpr
,
pQueryInfo
,
i
);
tSqlExpr
*
p1
=
extractExprForSTable
(
pCmd
,
pExpr
,
pQueryInfo
,
i
);
...
@@ -4339,7 +4369,18 @@ static int32_t getColQueryCondExpr(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, tSqlEx
...
@@ -4339,7 +4369,18 @@ static int32_t getColQueryCondExpr(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, tSqlEx
SArray
*
colList
=
taosArrayInit
(
10
,
sizeof
(
SColIndex
));
SArray
*
colList
=
taosArrayInit
(
10
,
sizeof
(
SColIndex
));
ret
=
exprTreeFromSqlExpr
(
pCmd
,
&
p
,
p1
,
pQueryInfo
,
colList
,
NULL
);
ret
=
exprTreeFromSqlExpr
(
pCmd
,
&
p
,
p1
,
pQueryInfo
,
colList
,
NULL
);
size_t
colNum
=
taosArrayGetSize
(
colList
);
for
(
int32_t
k
=
0
;
k
<
colNum
;
k
++
)
{
SColIndex
*
pColIndex
=
taosArrayGet
(
colList
,
k
);
if
(
TSDB_COL_IS_TAG
(
pColIndex
->
flag
))
{
ret
=
invalidOperationMsg
(
tscGetErrorMsgPayload
(
pCmd
),
msg6
);
break
;
}
}
taosArrayDestroy
(
&
colList
);
taosArrayDestroy
(
&
colList
);
if
(
ret
==
TSDB_CODE_SUCCESS
)
{
ret
=
exprTreeValidateTree
(
tscGetErrorMsgPayload
(
pCmd
),
p
);
}
SBufferWriter
bw
=
tbufInitWriter
(
NULL
,
false
);
SBufferWriter
bw
=
tbufInitWriter
(
NULL
,
false
);
...
@@ -4387,7 +4428,7 @@ static int32_t checkColumnQueryCondInfo(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, t
...
@@ -4387,7 +4428,7 @@ static int32_t checkColumnQueryCondInfo(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, t
}
}
pQueryInfo
->
onlyHasTagCond
&=
false
;
pQueryInfo
->
onlyHasTagCond
&=
false
;
if
(
!
tSqlExprIsParentOfLeaf
(
pExpr
))
{
// internal node
if
(
isLogicalOperator
(
pExpr
))
{
// internal node
int32_t
ret
=
checkColumnQueryCondInfo
(
pCmd
,
pQueryInfo
,
pExpr
->
pLeft
,
pExpr
->
tokenId
);
int32_t
ret
=
checkColumnQueryCondInfo
(
pCmd
,
pQueryInfo
,
pExpr
->
pLeft
,
pExpr
->
tokenId
);
if
(
ret
!=
TSDB_CODE_SUCCESS
)
{
if
(
ret
!=
TSDB_CODE_SUCCESS
)
{
return
ret
;
return
ret
;
...
@@ -4396,12 +4437,10 @@ static int32_t checkColumnQueryCondInfo(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, t
...
@@ -4396,12 +4437,10 @@ static int32_t checkColumnQueryCondInfo(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, t
return
checkColumnQueryCondInfo
(
pCmd
,
pQueryInfo
,
pExpr
->
pRight
,
pExpr
->
tokenId
);
return
checkColumnQueryCondInfo
(
pCmd
,
pQueryInfo
,
pExpr
->
pRight
,
pExpr
->
tokenId
);
}
else
{
// handle leaf node
}
else
{
// handle leaf node
SColumnIndex
index
=
COLUMN_INDEX_INITIALIZER
;
SColumnIndex
index
=
COLUMN_INDEX_INITIALIZER
;
if
(
getColumnIndexByName
(
&
pExpr
->
pLeft
->
columnName
,
pQueryInfo
,
&
index
,
tscGetErrorMsgPayload
(
pCmd
))
!=
TSDB_CODE_SUCCESS
)
{
addAllColumn
(
pCmd
,
pQueryInfo
,
pExpr
,
pExpr
->
tokenId
,
&
index
);
return
TSDB_CODE_TSC_INVALID_OPERATION
;
}
return
checkColumnFilterInfo
(
pCmd
,
pQueryInfo
,
&
index
,
pExpr
,
relOptr
);
return
checkColumnFilterInfo
(
pCmd
,
pQueryInfo
,
&
index
,
pExpr
,
relOptr
);
}
}
return
TSDB_CODE_SUCCESS
;
}
}
static
int32_t
checkAndSetJoinCondInfo
(
SSqlCmd
*
pCmd
,
SQueryInfo
*
pQueryInfo
,
tSqlExpr
*
pExpr
)
{
static
int32_t
checkAndSetJoinCondInfo
(
SSqlCmd
*
pCmd
,
SQueryInfo
*
pQueryInfo
,
tSqlExpr
*
pExpr
)
{
...
@@ -4678,7 +4717,9 @@ static int32_t validateSQLExprItemOperatorExpr(SSqlCmd* pCmd, tSqlExpr* pExpr, S
...
@@ -4678,7 +4717,9 @@ static int32_t validateSQLExprItemOperatorExpr(SSqlCmd* pCmd, tSqlExpr* pExpr, S
if
(
ret
!=
TSDB_CODE_SUCCESS
)
{
if
(
ret
!=
TSDB_CODE_SUCCESS
)
{
return
ret
;
return
ret
;
}
}
int32_t
rightHeight
=
0
;
int32_t
rightHeight
=
0
;
if
(
pExpr
->
tokenId
!=
TK_BITNOT
)
{
ret
=
validateSQLExprItem
(
pCmd
,
pExpr
->
pRight
,
pQueryInfo
,
pList
,
&
rightType
,
&
uidRight
,
&
rightHeight
);
ret
=
validateSQLExprItem
(
pCmd
,
pExpr
->
pRight
,
pQueryInfo
,
pList
,
&
rightType
,
&
uidRight
,
&
rightHeight
);
if
(
ret
!=
TSDB_CODE_SUCCESS
)
{
if
(
ret
!=
TSDB_CODE_SUCCESS
)
{
return
ret
;
return
ret
;
...
@@ -4687,10 +4728,12 @@ static int32_t validateSQLExprItemOperatorExpr(SSqlCmd* pCmd, tSqlExpr* pExpr, S
...
@@ -4687,10 +4728,12 @@ static int32_t validateSQLExprItemOperatorExpr(SSqlCmd* pCmd, tSqlExpr* pExpr, S
if
(
uidLeft
!=
uidRight
&&
uidLeft
!=
0
&&
uidRight
!=
0
)
{
if
(
uidLeft
!=
uidRight
&&
uidLeft
!=
0
&&
uidRight
!=
0
)
{
return
invalidOperationMsg
(
tscGetErrorMsgPayload
(
pCmd
),
msg1
);
return
invalidOperationMsg
(
tscGetErrorMsgPayload
(
pCmd
),
msg1
);
}
}
}
*
uid
=
uidLeft
;
*
uid
=
uidLeft
;
*
height
=
(
leftHeight
>
rightHeight
)
?
leftHeight
+
1
:
rightHeight
+
1
;
*
height
=
(
leftHeight
>
rightHeight
)
?
leftHeight
+
1
:
rightHeight
+
1
;
{
if
(
pExpr
->
tokenId
!=
TK_BITNOT
)
{
if
(
leftType
==
SQLEXPR_TYPE_UNASSIGNED
||
rightType
==
SQLEXPR_TYPE_UNASSIGNED
)
{
if
(
leftType
==
SQLEXPR_TYPE_UNASSIGNED
||
rightType
==
SQLEXPR_TYPE_UNASSIGNED
)
{
return
invalidOperationMsg
(
tscGetErrorMsgPayload
(
pCmd
),
"invalid operand expression"
);
return
invalidOperationMsg
(
tscGetErrorMsgPayload
(
pCmd
),
"invalid operand expression"
);
}
}
...
@@ -4726,8 +4769,15 @@ static int32_t validateSQLExprItemOperatorExpr(SSqlCmd* pCmd, tSqlExpr* pExpr, S
...
@@ -4726,8 +4769,15 @@ static int32_t validateSQLExprItemOperatorExpr(SSqlCmd* pCmd, tSqlExpr* pExpr, S
pExpr
->
tokenId
==
TK_MATCH
||
pExpr
->
tokenId
==
TK_NMATCH
||
pExpr
->
tokenId
==
TK_MATCH
||
pExpr
->
tokenId
==
TK_NMATCH
||
pExpr
->
tokenId
==
TK_CONTAINS
||
pExpr
->
tokenId
==
TK_IN
)
{
pExpr
->
tokenId
==
TK_CONTAINS
||
pExpr
->
tokenId
==
TK_IN
)
{
return
invalidOperationMsg
(
tscGetErrorMsgPayload
(
pCmd
),
"unsupported filtering operations"
);
return
invalidOperationMsg
(
tscGetErrorMsgPayload
(
pCmd
),
"unsupported filtering operations"
);
}
else
if
(
pExpr
->
tokenId
==
TK_LSHIFT
||
pExpr
->
tokenId
==
TK_RSHIFT
)
{
if
(
rightType
!=
SQLEXPR_TYPE_VALUE
)
{
return
invalidOperationMsg
(
tscGetErrorMsgPayload
(
pCmd
),
"non numeric right operand"
);
}
}
}
}
}
else
{
*
type
=
SQLEXPR_TYPE_SCALAR
;
}
return
TSDB_CODE_SUCCESS
;
return
TSDB_CODE_SUCCESS
;
}
}
...
@@ -5137,6 +5187,38 @@ void convertWhereStringCharset(tSqlExpr* pRight){
...
@@ -5137,6 +5187,38 @@ void convertWhereStringCharset(tSqlExpr* pRight){
free
(
newData
);
free
(
newData
);
}
}
static
int32_t
handleColumnInQueryCond
(
SSqlCmd
*
pCmd
,
SQueryInfo
*
pQueryInfo
,
tSqlExpr
*
pExpr
,
SColumnIndex
*
index
)
{
const
char
*
msg2
=
"illegal column name"
;
int32_t
ret
=
TSDB_CODE_SUCCESS
;
if
(
pExpr
==
NULL
)
{
return
ret
;
}
else
if
(
!
tSqlExprIsLeaf
(
pExpr
))
{
if
(
isComparisonOperator
(
pExpr
))
{
return
TSDB_CODE_TSC_INVALID_OPERATION
;
}
ret
=
handleColumnInQueryCond
(
pCmd
,
pQueryInfo
,
pExpr
->
pLeft
,
index
);
if
(
ret
!=
TSDB_CODE_SUCCESS
)
{
return
ret
;
}
ret
=
handleColumnInQueryCond
(
pCmd
,
pQueryInfo
,
pExpr
->
pRight
,
index
);
return
ret
;
}
SStrToken
*
colName
=
NULL
;
if
(
pExpr
->
tokenId
==
TK_ARROW
)
{
colName
=
&
(
pExpr
->
pLeft
->
columnName
);
}
else
if
(
pExpr
->
tokenId
==
TK_ID
)
{
colName
=
&
(
pExpr
->
columnName
);
}
if
(
colName
)
{
if
(
getColumnIndexByName
(
colName
,
pQueryInfo
,
index
,
tscGetErrorMsgPayload
(
pCmd
))
!=
TSDB_CODE_SUCCESS
)
{
ret
=
invalidOperationMsg
(
tscGetErrorMsgPayload
(
pCmd
),
msg2
);
}
}
return
ret
;
}
static
int32_t
handleExprInQueryCond
(
SSqlCmd
*
pCmd
,
SQueryInfo
*
pQueryInfo
,
tSqlExpr
**
pExpr
,
SCondExpr
*
pCondExpr
,
static
int32_t
handleExprInQueryCond
(
SSqlCmd
*
pCmd
,
SQueryInfo
*
pQueryInfo
,
tSqlExpr
**
pExpr
,
SCondExpr
*
pCondExpr
,
int32_t
*
type
,
int32_t
*
tbIdx
,
int32_t
parentOptr
,
tSqlExpr
**
columnExpr
,
int32_t
*
type
,
int32_t
*
tbIdx
,
int32_t
parentOptr
,
tSqlExpr
**
columnExpr
,
tSqlExpr
**
tsExpr
,
bool
joinQuery
)
{
tSqlExpr
**
tsExpr
,
bool
joinQuery
)
{
...
@@ -5144,7 +5226,6 @@ static int32_t handleExprInQueryCond(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, tSql
...
@@ -5144,7 +5226,6 @@ static int32_t handleExprInQueryCond(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, tSql
const
char
*
msg2
=
"illegal column name"
;
const
char
*
msg2
=
"illegal column name"
;
const
char
*
msg4
=
"too many join tables"
;
const
char
*
msg4
=
"too many join tables"
;
const
char
*
msg5
=
"not support ordinary column join"
;
const
char
*
msg5
=
"not support ordinary column join"
;
const
char
*
msg6
=
"illegal condition expression"
;
tSqlExpr
*
pLeft
=
(
*
pExpr
)
->
pLeft
;
tSqlExpr
*
pLeft
=
(
*
pExpr
)
->
pLeft
;
tSqlExpr
*
pRight
=
(
*
pExpr
)
->
pRight
;
tSqlExpr
*
pRight
=
(
*
pExpr
)
->
pRight
;
...
@@ -5158,14 +5239,23 @@ static int32_t handleExprInQueryCond(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, tSql
...
@@ -5158,14 +5239,23 @@ static int32_t handleExprInQueryCond(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, tSql
int32_t
ret
=
TSDB_CODE_SUCCESS
;
int32_t
ret
=
TSDB_CODE_SUCCESS
;
SColumnIndex
index
=
COLUMN_INDEX_INITIALIZER
;
SColumnIndex
index
=
COLUMN_INDEX_INITIALIZER
;
if
(
!
tSqlExprIsParentOfLeaf
(
*
pExpr
))
{
ret
=
handleColumnInQueryCond
(
pCmd
,
pQueryInfo
,
pLeft
,
&
index
);
if
(
ret
!=
TSDB_CODE_SUCCESS
)
{
return
ret
;
}
ret
=
handleColumnInQueryCond
(
pCmd
,
pQueryInfo
,
pRight
,
&
index
);
if
(
ret
!=
TSDB_CODE_SUCCESS
)
{
return
ret
;
}
}
else
{
if
(
getColumnIndexByName
(
colName
,
pQueryInfo
,
&
index
,
tscGetErrorMsgPayload
(
pCmd
))
!=
TSDB_CODE_SUCCESS
)
{
if
(
getColumnIndexByName
(
colName
,
pQueryInfo
,
&
index
,
tscGetErrorMsgPayload
(
pCmd
))
!=
TSDB_CODE_SUCCESS
)
{
return
invalidOperationMsg
(
tscGetErrorMsgPayload
(
pCmd
),
msg2
);
return
invalidOperationMsg
(
tscGetErrorMsgPayload
(
pCmd
),
msg2
);
}
}
}
*
tbIdx
=
index
.
tableIndex
;
*
tbIdx
=
index
.
tableIndex
;
assert
(
tSqlExprIsParentOfLeaf
(
*
pExpr
));
STableMetaInfo
*
pTableMetaInfo
=
tscGetMetaInfo
(
pQueryInfo
,
index
.
tableIndex
);
STableMetaInfo
*
pTableMetaInfo
=
tscGetMetaInfo
(
pQueryInfo
,
index
.
tableIndex
);
STableMeta
*
pTableMeta
=
pTableMetaInfo
->
pTableMeta
;
STableMeta
*
pTableMeta
=
pTableMetaInfo
->
pTableMeta
;
...
@@ -5194,7 +5284,7 @@ static int32_t handleExprInQueryCond(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, tSql
...
@@ -5194,7 +5284,7 @@ static int32_t handleExprInQueryCond(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, tSql
}
}
if
(
pSchema
->
type
==
TSDB_DATA_TYPE_TIMESTAMP
&&
index
.
columnIndex
==
PRIMARYKEY_TIMESTAMP_COL_INDEX
)
{
// query on time range
if
(
pSchema
->
type
==
TSDB_DATA_TYPE_TIMESTAMP
&&
index
.
columnIndex
==
PRIMARYKEY_TIMESTAMP_COL_INDEX
)
{
// query on time range
if
(
!
validateJoinExprNode
(
pCmd
,
pQueryInfo
,
*
pExpr
,
&
index
))
{
if
(
!
tSqlExprIsParentOfLeaf
(
*
pExpr
)
||
!
validateJoinExprNode
(
pCmd
,
pQueryInfo
,
*
pExpr
,
&
index
))
{
return
TSDB_CODE_TSC_INVALID_OPERATION
;
return
TSDB_CODE_TSC_INVALID_OPERATION
;
}
}
...
@@ -5316,8 +5406,6 @@ static int32_t handleExprInQueryCond(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, tSql
...
@@ -5316,8 +5406,6 @@ static int32_t handleExprInQueryCond(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, tSql
if
(
pRight
->
tokenId
==
TK_ID
)
{
if
(
pRight
->
tokenId
==
TK_ID
)
{
if
(
joinQuery
)
{
if
(
joinQuery
)
{
return
invalidOperationMsg
(
tscGetErrorMsgPayload
(
pCmd
),
msg5
);
// other column cannot be served as the join column
return
invalidOperationMsg
(
tscGetErrorMsgPayload
(
pCmd
),
msg5
);
// other column cannot be served as the join column
}
else
{
return
invalidOperationMsg
(
tscGetErrorMsgPayload
(
pCmd
),
msg6
);
}
}
}
}
...
@@ -5368,7 +5456,7 @@ int32_t getQueryCondExpr(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, tSqlExpr** pExpr
...
@@ -5368,7 +5456,7 @@ int32_t getQueryCondExpr(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, tSqlExpr** pExpr
int32_t
leftTbIdx
=
0
;
int32_t
leftTbIdx
=
0
;
int32_t
rightTbIdx
=
0
;
int32_t
rightTbIdx
=
0
;
if
(
!
tSqlExprIsParentOfLeaf
(
*
pExpr
))
{
if
(
isLogicalOperator
(
*
pExpr
))
{
ret
=
getQueryCondExpr
(
pCmd
,
pQueryInfo
,
&
(
*
pExpr
)
->
pLeft
,
pCondExpr
,
type
?
&
leftType
:
NULL
,
&
leftTbIdx
,
(
*
pExpr
)
->
tokenId
,
&
columnLeft
,
&
tsLeft
,
joinQuery
);
ret
=
getQueryCondExpr
(
pCmd
,
pQueryInfo
,
&
(
*
pExpr
)
->
pLeft
,
pCondExpr
,
type
?
&
leftType
:
NULL
,
&
leftTbIdx
,
(
*
pExpr
)
->
tokenId
,
&
columnLeft
,
&
tsLeft
,
joinQuery
);
if
(
ret
!=
TSDB_CODE_SUCCESS
)
{
if
(
ret
!=
TSDB_CODE_SUCCESS
)
{
goto
err_ret
;
goto
err_ret
;
...
@@ -5429,6 +5517,11 @@ int32_t getQueryCondExpr(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, tSqlExpr** pExpr
...
@@ -5429,6 +5517,11 @@ int32_t getQueryCondExpr(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, tSqlExpr** pExpr
goto
err_ret
;
goto
err_ret
;
}
}
if
(
!
tSqlExprIsLeaf
((
*
pExpr
)
->
pRight
)
)
{
ret
=
TSDB_CODE_TSC_INVALID_OPERATION
;
goto
err_ret
;
}
ret
=
handleExprInQueryCond
(
pCmd
,
pQueryInfo
,
pExpr
,
pCondExpr
,
type
,
tbIdx
,
parentOptr
,
columnExpr
,
tsExpr
,
joinQuery
);
ret
=
handleExprInQueryCond
(
pCmd
,
pQueryInfo
,
pExpr
,
pCondExpr
,
type
,
tbIdx
,
parentOptr
,
columnExpr
,
tsExpr
,
joinQuery
);
if
(
ret
)
{
if
(
ret
)
{
goto
err_ret
;
goto
err_ret
;
...
@@ -5451,9 +5544,10 @@ static void doExtractExprForSTable(SSqlCmd* pCmd, tSqlExpr** pExpr, SQueryInfo*
...
@@ -5451,9 +5544,10 @@ static void doExtractExprForSTable(SSqlCmd* pCmd, tSqlExpr** pExpr, SQueryInfo*
return
;
return
;
}
}
if
(
tSqlExprIsParentOfLeaf
(
*
pExpr
))
{
if
(
!
isLogicalOperator
(
*
pExpr
))
{
tSqlExpr
*
pLeft
=
(
*
pExpr
)
->
pLeft
;
tSqlExpr
*
pLeft
=
(
*
pExpr
)
->
pLeft
;
if
(
pLeft
->
tokenId
==
TK_ARROW
||
pLeft
->
tokenId
==
TK_ID
)
{
SColumnIndex
index
=
COLUMN_INDEX_INITIALIZER
;
SColumnIndex
index
=
COLUMN_INDEX_INITIALIZER
;
if
(
pLeft
->
tokenId
==
TK_ARROW
)
{
if
(
pLeft
->
tokenId
==
TK_ARROW
)
{
pLeft
=
pLeft
->
pLeft
;
pLeft
=
pLeft
->
pLeft
;
...
@@ -5465,6 +5559,7 @@ static void doExtractExprForSTable(SSqlCmd* pCmd, tSqlExpr** pExpr, SQueryInfo*
...
@@ -5465,6 +5559,7 @@ static void doExtractExprForSTable(SSqlCmd* pCmd, tSqlExpr** pExpr, SQueryInfo*
if
(
index
.
tableIndex
!=
tableIndex
)
{
if
(
index
.
tableIndex
!=
tableIndex
)
{
return
;
return
;
}
}
}
*
pOut
=
*
pExpr
;
*
pOut
=
*
pExpr
;
(
*
pExpr
)
=
NULL
;
(
*
pExpr
)
=
NULL
;
...
@@ -5686,7 +5781,6 @@ static void doAddJoinTagsColumnsIntoTagList(SSqlCmd* pCmd, SQueryInfo* pQueryInf
...
@@ -5686,7 +5781,6 @@ static void doAddJoinTagsColumnsIntoTagList(SSqlCmd* pCmd, SQueryInfo* pQueryInf
*/
*/
static
int32_t
validateTagCondExpr
(
SSqlCmd
*
pCmd
,
tExprNode
*
p
)
{
static
int32_t
validateTagCondExpr
(
SSqlCmd
*
pCmd
,
tExprNode
*
p
)
{
const
char
*
msg1
=
"invalid tag operator"
;
const
char
*
msg2
=
"not supported filter condition"
;
const
char
*
msg2
=
"not supported filter condition"
;
do
{
do
{
...
@@ -5707,10 +5801,6 @@ static int32_t validateTagCondExpr(SSqlCmd* pCmd, tExprNode *p) {
...
@@ -5707,10 +5801,6 @@ static int32_t validateTagCondExpr(SSqlCmd* pCmd, tExprNode *p) {
return
retVal
;
return
retVal
;
}
}
if
(
IS_ARITHMETIC_OPTR
(
p
->
_node
.
optr
))
{
return
invalidOperationMsg
(
tscGetErrorMsgPayload
(
pCmd
),
msg1
);
}
if
(
!
IS_RELATION_OPTR
(
p
->
_node
.
optr
))
{
if
(
!
IS_RELATION_OPTR
(
p
->
_node
.
optr
))
{
break
;
break
;
}
}
...
@@ -5771,8 +5861,13 @@ static int32_t validateTagCondExpr(SSqlCmd* pCmd, tExprNode *p) {
...
@@ -5771,8 +5861,13 @@ static int32_t validateTagCondExpr(SSqlCmd* pCmd, tExprNode *p) {
return
TSDB_CODE_SUCCESS
;
return
TSDB_CODE_SUCCESS
;
}
}
bool
isTablename
(
char
*
colName
)
{
return
(
strlen
(
colName
)
==
strlen
(
TSQL_TBNAME_L
)
&&
strncasecmp
(
TSQL_TBNAME_L
,
colName
,
strlen
(
TSQL_TBNAME_L
))
==
0
);
}
static
int32_t
getTagQueryCondExpr
(
SSqlCmd
*
pCmd
,
SQueryInfo
*
pQueryInfo
,
SCondExpr
*
pCondExpr
)
{
static
int32_t
getTagQueryCondExpr
(
SSqlCmd
*
pCmd
,
SQueryInfo
*
pQueryInfo
,
SCondExpr
*
pCondExpr
)
{
int32_t
ret
=
TSDB_CODE_SUCCESS
;
int32_t
ret
=
TSDB_CODE_SUCCESS
;
const
char
*
msg6
=
"illegal condition expression"
;
if
(
pCondExpr
->
pTagCond
==
NULL
)
{
if
(
pCondExpr
->
pTagCond
==
NULL
)
{
return
ret
;
return
ret
;
...
@@ -5788,6 +5883,17 @@ static int32_t getTagQueryCondExpr(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, SCondE
...
@@ -5788,6 +5883,17 @@ static int32_t getTagQueryCondExpr(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, SCondE
SArray
*
colList
=
taosArrayInit
(
10
,
sizeof
(
SColIndex
));
SArray
*
colList
=
taosArrayInit
(
10
,
sizeof
(
SColIndex
));
ret
=
exprTreeFromSqlExpr
(
pCmd
,
&
p
,
p1
,
pQueryInfo
,
colList
,
NULL
);
ret
=
exprTreeFromSqlExpr
(
pCmd
,
&
p
,
p1
,
pQueryInfo
,
colList
,
NULL
);
size_t
colNum
=
taosArrayGetSize
(
colList
);
for
(
int32_t
k
=
0
;
k
<
colNum
;
k
++
)
{
SColIndex
*
pColIndex
=
taosArrayGet
(
colList
,
k
);
if
(
TSDB_COL_IS_NORMAL_COL
(
pColIndex
->
flag
)
&&
!
isTablename
(
pColIndex
->
name
))
{
ret
=
invalidOperationMsg
(
tscGetErrorMsgPayload
(
pCmd
),
msg6
);
break
;
}
}
if
(
ret
==
TSDB_CODE_SUCCESS
)
{
ret
=
exprTreeValidateTree
(
tscGetErrorMsgPayload
(
pCmd
),
p
);
}
//if (ret == TSDB_CODE_SUCCESS) {
//if (ret == TSDB_CODE_SUCCESS) {
// ret = filterInitFromTree(p, &pQueryInfo->tagFilter, (int32_t)taosArrayGetSize(colList), NULL);
// ret = filterInitFromTree(p, &pQueryInfo->tagFilter, (int32_t)taosArrayGetSize(colList), NULL);
//}
//}
...
@@ -10279,23 +10385,6 @@ int32_t exprTreeFromSqlExpr(SSqlCmd* pCmd, tExprNode **pExpr, const tSqlExpr* pS
...
@@ -10279,23 +10385,6 @@ int32_t exprTreeFromSqlExpr(SSqlCmd* pCmd, tExprNode **pExpr, const tSqlExpr* pS
}
}
}
}
if
(
pSqlExpr
->
tokenId
==
TK_BITAND
&&
pSqlExpr
->
pLeft
!=
NULL
&&
pSqlExpr
->
pRight
!=
NULL
)
{
// for example: col type is "bool" but expr "col & 1" received
uint8_t
colType
=
pLeft
->
pSchema
->
type
;
SStrToken
*
exprToken
=
&
pSqlExpr
->
pRight
->
exprToken
;
if
(
pSqlExpr
->
pLeft
->
type
==
SQL_NODE_TABLE_COLUMN
&&
pSqlExpr
->
pRight
->
type
==
SQL_NODE_VALUE
)
{
if
(
colType
==
TSDB_DATA_TYPE_BOOL
)
{
if
((
exprToken
->
n
!=
4
||
strncasecmp
(
exprToken
->
z
,
"true"
,
4
))
&&
(
exprToken
->
n
!=
5
||
strncasecmp
(
exprToken
->
z
,
"false"
,
5
)))
{
return
TSDB_CODE_TSC_INVALID_OPERATION
;
}
}
else
if
(
IS_SIGNED_NUMERIC_TYPE
(
colType
)
||
IS_UNSIGNED_NUMERIC_TYPE
(
colType
))
{
if
((
exprToken
->
n
==
4
&&
strncasecmp
(
exprToken
->
z
,
"true"
,
4
)
==
0
)
||
(
exprToken
->
n
==
5
||
strncasecmp
(
exprToken
->
z
,
"false"
,
5
)
==
0
))
{
return
TSDB_CODE_TSC_INVALID_OPERATION
;
}
}
}
}
if
(
pSqlExpr
->
pRight
!=
NULL
)
{
if
(
pSqlExpr
->
pRight
!=
NULL
)
{
int32_t
ret
=
exprTreeFromSqlExpr
(
pCmd
,
&
pRight
,
pSqlExpr
->
pRight
,
pQueryInfo
,
pCols
,
uid
);
int32_t
ret
=
exprTreeFromSqlExpr
(
pCmd
,
&
pRight
,
pSqlExpr
->
pRight
,
pQueryInfo
,
pCols
,
uid
);
if
(
ret
!=
TSDB_CODE_SUCCESS
)
{
if
(
ret
!=
TSDB_CODE_SUCCESS
)
{
...
@@ -10334,8 +10423,11 @@ int32_t exprTreeFromSqlExpr(SSqlCmd* pCmd, tExprNode **pExpr, const tSqlExpr* pS
...
@@ -10334,8 +10423,11 @@ int32_t exprTreeFromSqlExpr(SSqlCmd* pCmd, tExprNode **pExpr, const tSqlExpr* pS
pLeft
=
pLeft
->
_node
.
pLeft
;
pLeft
=
pLeft
->
_node
.
pLeft
;
}
}
if
(
pRight
->
pVal
->
nType
==
TSDB_DATA_TYPE_BOOL
&&
pLeft
->
nodeType
==
TSQL_NODE_COL
)
{
if
(
pRight
->
pVal
->
nType
==
TSDB_DATA_TYPE_BOOL
&&
pLeft
->
nodeType
==
TSQL_NODE_COL
)
{
if
(((
*
pExpr
)
->
_node
.
optr
!=
TSDB_BINARY_OP_BITAND
&&
pLeft
->
pSchema
->
type
==
TSDB_DATA_TYPE_BOOL
)
||
if
((((
*
pExpr
)
->
_node
.
optr
!=
TSDB_BINARY_OP_BITAND
||
(
*
pExpr
)
->
_node
.
optr
!=
TSDB_BINARY_OP_BITOR
||
pLeft
->
pSchema
->
type
==
TSDB_DATA_TYPE_JSON
)
{
(
*
pExpr
)
->
_node
.
optr
!=
TSDB_BINARY_OP_BITXOR
||
(
*
pExpr
)
->
_node
.
optr
!=
TSDB_BINARY_OP_BITNOT
||
(
*
pExpr
)
->
_node
.
optr
!=
TSDB_BINARY_OP_LSHIFT
||
(
*
pExpr
)
->
_node
.
optr
!=
TSDB_BINARY_OP_RSHIFT
)
&&
pLeft
->
pSchema
->
type
==
TSDB_DATA_TYPE_BOOL
)
||
pLeft
->
pSchema
->
type
==
TSDB_DATA_TYPE_JSON
)
{
return
TSDB_CODE_TSC_INVALID_OPERATION
;
return
TSDB_CODE_TSC_INVALID_OPERATION
;
}
}
}
}
...
@@ -10444,3 +10536,35 @@ void normalizeSqlNode(SSqlNode* pSqlNode, const char* dbName) {
...
@@ -10444,3 +10536,35 @@ void normalizeSqlNode(SSqlNode* pSqlNode, const char* dbName) {
}
}
#endif
#endif
bool
isLogicalOperator
(
tSqlExpr
*
pExpr
)
{
if
(
pExpr
->
tokenId
==
TK_AND
||
pExpr
->
tokenId
==
TK_OR
)
{
return
true
;
}
return
false
;
}
bool
isComparisonOperator
(
tSqlExpr
*
pExpr
)
{
switch
(
pExpr
->
tokenId
)
{
case
TK_EQ
:
case
TK_NE
:
case
TK_ISNULL
:
case
TK_NOTNULL
:
case
TK_IS
:
case
TK_LIKE
:
case
TK_MATCH
:
case
TK_NMATCH
:
case
TK_CONTAINS
:
case
TK_GLOB
:
case
TK_BETWEEN
:
case
TK_IN
:
case
TK_GT
:
case
TK_GE
:
case
TK_LT
:
case
TK_LE
:
return
true
;
default:
return
false
;
}
return
false
;
}
src/client/src/tscUtil.c
浏览文件 @
ce0b391f
...
@@ -1004,7 +1004,7 @@ static void doSetupSDataBlock(SSqlRes* pRes, SSDataBlock* pBlock, void* pFilterI
...
@@ -1004,7 +1004,7 @@ static void doSetupSDataBlock(SSqlRes* pRes, SSDataBlock* pBlock, void* pFilterI
filterConverNcharColumns
(
pFilterInfo
,
pBlock
->
info
.
rows
,
&
gotNchar
);
filterConverNcharColumns
(
pFilterInfo
,
pBlock
->
info
.
rows
,
&
gotNchar
);
int8_t
*
p
=
NULL
;
int8_t
*
p
=
NULL
;
//bool all = doFilterDataBlock(pFilterInfo, numOfFilterCols, pBlock->info.rows, p);
//bool all = doFilterDataBlock(pFilterInfo, numOfFilterCols, pBlock->info.rows, p);
bool
all
=
filterExecute
(
pFilterInfo
,
pBlock
->
info
.
rows
,
&
p
,
NULL
,
0
);
bool
all
=
filterExecute
(
pFilterInfo
,
pBlock
->
info
.
rows
,
&
p
,
NULL
,
(
int16_t
)
taosArrayGetSize
(
pBlock
->
pDataBlock
)
);
if
(
gotNchar
)
{
if
(
gotNchar
)
{
filterFreeNcharColumns
(
pFilterInfo
);
filterFreeNcharColumns
(
pFilterInfo
);
}
}
...
...
src/common/src/tarithoperator.c
浏览文件 @
ce0b391f
...
@@ -403,16 +403,178 @@ void vectorRemainder(void *left, int32_t len1, int32_t _left_type, void *right,
...
@@ -403,16 +403,178 @@ void vectorRemainder(void *left, int32_t len1, int32_t _left_type, void *right,
}
}
}
}
typedef
int64_t
(
*
_arithmetic_getVectorBigintValue_fn_t
)(
void
*
src
,
int32_t
index
);
int64_t
getVectorBigintValue_BOOL
(
void
*
src
,
int32_t
index
)
{
return
(
int64_t
)
*
((
bool
*
)
src
+
index
);
}
int64_t
getVectorBigintValue_TINYINT
(
void
*
src
,
int32_t
index
)
{
return
(
int64_t
)
*
((
int8_t
*
)
src
+
index
);
}
int64_t
getVectorBigintValue_UTINYINT
(
void
*
src
,
int32_t
index
)
{
return
(
int64_t
)
*
((
uint8_t
*
)
src
+
index
);
}
int64_t
getVectorBigintValue_SMALLINT
(
void
*
src
,
int32_t
index
)
{
return
(
int64_t
)
*
((
int16_t
*
)
src
+
index
);
}
int64_t
getVectorBigintValue_USMALLINT
(
void
*
src
,
int32_t
index
)
{
return
(
int64_t
)
*
((
uint16_t
*
)
src
+
index
);
}
int64_t
getVectorBigintValue_INT
(
void
*
src
,
int32_t
index
)
{
return
(
int64_t
)
*
((
int32_t
*
)
src
+
index
);
}
int64_t
getVectorBigintValue_UINT
(
void
*
src
,
int32_t
index
)
{
return
(
int64_t
)
*
((
uint32_t
*
)
src
+
index
);
}
int64_t
getVectorBigintValue_BIGINT
(
void
*
src
,
int32_t
index
)
{
return
(
int64_t
)
*
((
int64_t
*
)
src
+
index
);
}
int64_t
getVectorBigintValue_UBIGINT
(
void
*
src
,
int32_t
index
)
{
return
(
int64_t
)
*
((
uint64_t
*
)
src
+
index
);
}
_arithmetic_getVectorBigintValue_fn_t
getVectorBigintValueFn
(
int32_t
srcType
)
{
_arithmetic_getVectorBigintValue_fn_t
p
=
NULL
;
if
(
srcType
==
TSDB_DATA_TYPE_BOOL
)
{
p
=
getVectorBigintValue_BOOL
;
}
else
if
(
srcType
==
TSDB_DATA_TYPE_TINYINT
)
{
p
=
getVectorBigintValue_TINYINT
;
}
else
if
(
srcType
==
TSDB_DATA_TYPE_UTINYINT
)
{
p
=
getVectorBigintValue_UTINYINT
;
}
else
if
(
srcType
==
TSDB_DATA_TYPE_SMALLINT
)
{
p
=
getVectorBigintValue_SMALLINT
;
}
else
if
(
srcType
==
TSDB_DATA_TYPE_USMALLINT
)
{
p
=
getVectorBigintValue_USMALLINT
;
}
else
if
(
srcType
==
TSDB_DATA_TYPE_INT
)
{
p
=
getVectorBigintValue_INT
;
}
else
if
(
srcType
==
TSDB_DATA_TYPE_UINT
)
{
p
=
getVectorBigintValue_UINT
;
}
else
if
(
srcType
==
TSDB_DATA_TYPE_BIGINT
)
{
p
=
getVectorBigintValue_BIGINT
;
}
else
if
(
srcType
==
TSDB_DATA_TYPE_UBIGINT
)
{
p
=
getVectorBigintValue_UBIGINT
;
}
else
{
assert
(
0
);
}
return
p
;
}
void
vectorBitand
(
void
*
left
,
int32_t
len1
,
int32_t
_left_type
,
void
*
right
,
int32_t
len2
,
int32_t
_right_type
,
void
*
out
,
int32_t
_ord
)
{
void
vectorBitand
(
void
*
left
,
int32_t
len1
,
int32_t
_left_type
,
void
*
right
,
int32_t
len2
,
int32_t
_right_type
,
void
*
out
,
int32_t
_ord
)
{
int32_t
i
=
(
_ord
==
TSDB_ORDER_ASC
)
?
0
:
MAX
(
len1
,
len2
)
-
1
;
int32_t
i
=
(
(
_ord
)
==
TSDB_ORDER_ASC
)
?
0
:
MAX
(
len1
,
len2
)
-
1
;
int32_t
step
=
(
_ord
==
TSDB_ORDER_ASC
)
?
1
:
-
1
;
int32_t
step
=
(
(
_ord
)
==
TSDB_ORDER_ASC
)
?
1
:
-
1
;
char
*
output
=
out
;
double
*
output
=
(
double
*
)
out
;
_arithmetic_getVectorValueAddr_fn_t
getVectorValueAddrFnLeft
=
getVectorValueAddrFn
(
_left_type
);
_arithmetic_getVectorValueAddr_fn_t
getVectorValueAddrFnLeft
=
getVectorValueAddrFn
(
_left_type
);
_arithmetic_getVectorValueAddr_fn_t
getVectorValueAddrFnRight
=
getVectorValueAddrFn
(
_right_type
);
_arithmetic_getVectorValueAddr_fn_t
getVectorValueAddrFnRight
=
getVectorValueAddrFn
(
_right_type
);
_arithmetic_getVectorBigintValue_fn_t
getVectorBigintValueFnLeft
=
getVectorBigintValueFn
(
_left_type
);
_arithmetic_getVectorBigintValue_fn_t
getVectorBigintValueFnRight
=
getVectorBigintValueFn
(
_right_type
);
if
(
len1
==
(
len2
))
{
if
((
len1
)
==
(
len2
))
{
for
(;
i
>=
0
&&
i
<
(
len2
);
i
+=
step
)
{
for
(;
i
<
(
len2
)
&&
i
>=
0
;
i
+=
step
,
output
+=
1
)
{
if
(
isNull
(
getVectorValueAddrFnLeft
(
left
,
i
),
_left_type
)
||
isNull
(
getVectorValueAddrFnRight
(
right
,
i
),
_right_type
))
{
if
(
isNull
(
getVectorValueAddrFnLeft
(
left
,
i
),
_left_type
)
||
isNull
(
getVectorValueAddrFnRight
(
right
,
i
),
_right_type
))
{
SET_BIGINT_NULL
(
output
);
continue
;
}
*
(
int64_t
*
)
output
=
getVectorBigintValueFnLeft
(
left
,
i
)
&
getVectorBigintValueFnRight
(
right
,
i
);
}
}
else
if
((
len1
)
==
1
)
{
for
(;
i
>=
0
&&
i
<
(
len2
);
i
+=
step
,
output
+=
1
)
{
if
(
isNull
(
getVectorValueAddrFnLeft
(
left
,
0
),
_left_type
)
||
isNull
(
getVectorValueAddrFnRight
(
right
,
i
),
_right_type
))
{
SET_BIGINT_NULL
(
output
);
continue
;
}
*
(
int64_t
*
)
output
=
getVectorBigintValueFnLeft
(
left
,
0
)
&
getVectorBigintValueFnRight
(
right
,
i
);
}
}
else
if
((
len2
)
==
1
)
{
for
(;
i
>=
0
&&
i
<
(
len1
);
i
+=
step
,
output
+=
1
)
{
if
(
isNull
(
getVectorValueAddrFnLeft
(
left
,
i
),
_left_type
)
||
isNull
(
getVectorValueAddrFnRight
(
right
,
0
),
_right_type
))
{
SET_BIGINT_NULL
(
output
);
continue
;
}
*
(
int64_t
*
)
output
=
getVectorBigintValueFnLeft
(
left
,
i
)
&
getVectorBigintValueFnRight
(
right
,
0
);
}
}
}
void
vectorBitor
(
void
*
left
,
int32_t
len1
,
int32_t
_left_type
,
void
*
right
,
int32_t
len2
,
int32_t
_right_type
,
void
*
out
,
int32_t
_ord
)
{
int32_t
i
=
((
_ord
)
==
TSDB_ORDER_ASC
)
?
0
:
MAX
(
len1
,
len2
)
-
1
;
int32_t
step
=
((
_ord
)
==
TSDB_ORDER_ASC
)
?
1
:
-
1
;
double
*
output
=
(
double
*
)
out
;
_arithmetic_getVectorValueAddr_fn_t
getVectorValueAddrFnLeft
=
getVectorValueAddrFn
(
_left_type
);
_arithmetic_getVectorValueAddr_fn_t
getVectorValueAddrFnRight
=
getVectorValueAddrFn
(
_right_type
);
_arithmetic_getVectorBigintValue_fn_t
getVectorBigintValueFnLeft
=
getVectorBigintValueFn
(
_left_type
);
_arithmetic_getVectorBigintValue_fn_t
getVectorBigintValueFnRight
=
getVectorBigintValueFn
(
_right_type
);
if
((
len1
)
==
(
len2
))
{
for
(;
i
<
(
len2
)
&&
i
>=
0
;
i
+=
step
,
output
+=
1
)
{
if
(
isNull
(
getVectorValueAddrFnLeft
(
left
,
i
),
_left_type
)
||
isNull
(
getVectorValueAddrFnRight
(
right
,
i
),
_right_type
))
{
SET_BIGINT_NULL
(
output
);
continue
;
}
*
(
int64_t
*
)
output
=
getVectorBigintValueFnLeft
(
left
,
i
)
|
getVectorBigintValueFnRight
(
right
,
i
);
}
}
else
if
((
len1
)
==
1
)
{
for
(;
i
>=
0
&&
i
<
(
len2
);
i
+=
step
,
output
+=
1
)
{
if
(
isNull
(
getVectorValueAddrFnLeft
(
left
,
0
),
_left_type
)
||
isNull
(
getVectorValueAddrFnRight
(
right
,
i
),
_right_type
))
{
SET_BIGINT_NULL
(
output
);
continue
;
}
*
(
int64_t
*
)
output
=
getVectorBigintValueFnLeft
(
left
,
0
)
|
getVectorBigintValueFnRight
(
right
,
i
);
}
}
else
if
((
len2
)
==
1
)
{
for
(;
i
>=
0
&&
i
<
(
len1
);
i
+=
step
,
output
+=
1
)
{
if
(
isNull
(
getVectorValueAddrFnLeft
(
left
,
i
),
_left_type
)
||
isNull
(
getVectorValueAddrFnRight
(
right
,
0
),
_right_type
))
{
SET_BIGINT_NULL
(
output
);
continue
;
}
*
(
int64_t
*
)
output
=
getVectorBigintValueFnLeft
(
left
,
i
)
|
getVectorBigintValueFnRight
(
right
,
0
);
}
}
}
void
vectorBitxor
(
void
*
left
,
int32_t
len1
,
int32_t
_left_type
,
void
*
right
,
int32_t
len2
,
int32_t
_right_type
,
void
*
out
,
int32_t
_ord
)
{
int32_t
i
=
((
_ord
)
==
TSDB_ORDER_ASC
)
?
0
:
MAX
(
len1
,
len2
)
-
1
;
int32_t
step
=
((
_ord
)
==
TSDB_ORDER_ASC
)
?
1
:
-
1
;
double
*
output
=
(
double
*
)
out
;
_arithmetic_getVectorValueAddr_fn_t
getVectorValueAddrFnLeft
=
getVectorValueAddrFn
(
_left_type
);
_arithmetic_getVectorValueAddr_fn_t
getVectorValueAddrFnRight
=
getVectorValueAddrFn
(
_right_type
);
_arithmetic_getVectorBigintValue_fn_t
getVectorBigintValueFnLeft
=
getVectorBigintValueFn
(
_left_type
);
_arithmetic_getVectorBigintValue_fn_t
getVectorBigintValueFnRight
=
getVectorBigintValueFn
(
_right_type
);
if
((
len1
)
==
(
len2
))
{
for
(;
i
<
(
len2
)
&&
i
>=
0
;
i
+=
step
,
output
+=
1
)
{
if
(
isNull
(
getVectorValueAddrFnLeft
(
left
,
i
),
_left_type
)
||
isNull
(
getVectorValueAddrFnRight
(
right
,
i
),
_right_type
))
{
SET_BIGINT_NULL
(
output
);
continue
;
}
*
(
int64_t
*
)
output
=
getVectorBigintValueFnLeft
(
left
,
i
)
^
getVectorBigintValueFnRight
(
right
,
i
);
}
}
else
if
((
len1
)
==
1
)
{
for
(;
i
>=
0
&&
i
<
(
len2
);
i
+=
step
,
output
+=
1
)
{
if
(
isNull
(
getVectorValueAddrFnLeft
(
left
,
0
),
_left_type
)
||
isNull
(
getVectorValueAddrFnRight
(
right
,
i
),
_right_type
))
{
SET_BIGINT_NULL
(
output
);
continue
;
}
*
(
int64_t
*
)
output
=
getVectorBigintValueFnLeft
(
left
,
0
)
^
getVectorBigintValueFnRight
(
right
,
i
);
}
}
else
if
((
len2
)
==
1
)
{
for
(;
i
>=
0
&&
i
<
(
len1
);
i
+=
step
,
output
+=
1
)
{
if
(
isNull
(
getVectorValueAddrFnLeft
(
left
,
i
),
_left_type
)
||
isNull
(
getVectorValueAddrFnRight
(
right
,
0
),
_right_type
))
{
SET_BIGINT_NULL
(
output
);
continue
;
}
*
(
int64_t
*
)
output
=
getVectorBigintValueFnLeft
(
left
,
i
)
^
getVectorBigintValueFnRight
(
right
,
0
);
}
}
}
void
vectorBitnot
(
void
*
left
,
int32_t
len1
,
int32_t
_left_type
,
void
*
right
,
int32_t
len2
,
int32_t
_right_type
,
void
*
out
,
int32_t
_ord
)
{
int32_t
i
=
((
_ord
)
==
TSDB_ORDER_ASC
)
?
0
:
MAX
(
len1
,
len2
)
-
1
;
int32_t
step
=
((
_ord
)
==
TSDB_ORDER_ASC
)
?
1
:
-
1
;
char
*
output
=
(
char
*
)
out
;
_arithmetic_getVectorValueAddr_fn_t
getVectorValueAddrFnLeft
=
getVectorValueAddrFn
(
_left_type
);
for
(;
i
<
(
len1
)
&&
i
>=
0
;
i
+=
step
)
{
if
(
isNull
(
getVectorValueAddrFnLeft
(
left
,
i
),
_left_type
))
{
switch
(
_left_type
)
{
switch
(
_left_type
)
{
case
TSDB_DATA_TYPE_BOOL
:
case
TSDB_DATA_TYPE_BOOL
:
*
(
bool
*
)
output
=
TSDB_DATA_BOOL_NULL
;
*
(
bool
*
)
output
=
TSDB_DATA_BOOL_NULL
;
...
@@ -452,52 +614,70 @@ void vectorBitand(void *left, int32_t len1, int32_t _left_type, void *right, int
...
@@ -452,52 +614,70 @@ void vectorBitand(void *left, int32_t len1, int32_t _left_type, void *right, int
output
+=
sizeof
(
int64_t
);
output
+=
sizeof
(
int64_t
);
break
;
break
;
}
}
continue
;
continue
;
}
}
switch
(
_left_type
)
{
switch
(
_left_type
)
{
case
TSDB_DATA_TYPE_BOOL
:
case
TSDB_DATA_TYPE_BOOL
:
*
(
bool
*
)
output
=
(
*
((
bool
*
)
left
+
i
))
&
(
*
((
bool
*
)
right
+
i
));
if
(
*
((
bool
*
)
left
+
i
))
{
*
(
bool
*
)
output
=
0
;
}
else
{
*
(
bool
*
)
output
=
1
;
}
output
+=
sizeof
(
bool
);
output
+=
sizeof
(
bool
);
break
;
break
;
case
TSDB_DATA_TYPE_TINYINT
:
case
TSDB_DATA_TYPE_TINYINT
:
*
(
int8_t
*
)
output
=
(
*
((
int8_t
*
)
left
+
i
))
&
(
*
((
int8_t
*
)
righ
t
+
i
));
*
(
int8_t
*
)
output
=
~
(
*
((
int8_t
*
)
lef
t
+
i
));
output
+=
sizeof
(
int8_t
);
output
+=
sizeof
(
int8_t
);
break
;
break
;
case
TSDB_DATA_TYPE_SMALLINT
:
case
TSDB_DATA_TYPE_SMALLINT
:
*
(
int16_t
*
)
output
=
(
*
((
int16_t
*
)
left
+
i
))
&
(
*
((
int16_t
*
)
righ
t
+
i
));
*
(
int16_t
*
)
output
=
~
(
*
((
int16_t
*
)
lef
t
+
i
));
output
+=
sizeof
(
int16_t
);
output
+=
sizeof
(
int16_t
);
break
;
break
;
case
TSDB_DATA_TYPE_INT
:
case
TSDB_DATA_TYPE_INT
:
*
(
int32_t
*
)
output
=
(
*
((
int32_t
*
)
left
+
i
))
&
(
*
((
int32_t
*
)
righ
t
+
i
));
*
(
int32_t
*
)
output
=
~
(
*
((
int32_t
*
)
lef
t
+
i
));
output
+=
sizeof
(
int32_t
);
output
+=
sizeof
(
int32_t
);
break
;
break
;
case
TSDB_DATA_TYPE_BIGINT
:
case
TSDB_DATA_TYPE_BIGINT
:
*
(
int64_t
*
)
output
=
(
*
((
int64_t
*
)
left
+
i
))
&
(
*
((
int64_t
*
)
righ
t
+
i
));
*
(
int64_t
*
)
output
=
~
(
*
((
int64_t
*
)
lef
t
+
i
));
output
+=
sizeof
(
int64_t
);
output
+=
sizeof
(
int64_t
);
break
;
break
;
case
TSDB_DATA_TYPE_UTINYINT
:
case
TSDB_DATA_TYPE_UTINYINT
:
*
(
uint8_t
*
)
output
=
(
*
((
uint8_t
*
)
left
+
i
))
&
(
*
((
uint8_t
*
)
righ
t
+
i
));
*
(
uint8_t
*
)
output
=
~
(
*
((
uint8_t
*
)
lef
t
+
i
));
output
+=
sizeof
(
int8_t
);
output
+=
sizeof
(
int8_t
);
break
;
break
;
case
TSDB_DATA_TYPE_USMALLINT
:
case
TSDB_DATA_TYPE_USMALLINT
:
*
(
uint16_t
*
)
output
=
(
*
((
uint16_t
*
)
left
+
i
))
&
(
*
((
uint16_t
*
)
righ
t
+
i
));
*
(
uint16_t
*
)
output
=
~
(
*
((
uint16_t
*
)
lef
t
+
i
));
output
+=
sizeof
(
int16_t
);
output
+=
sizeof
(
int16_t
);
break
;
break
;
case
TSDB_DATA_TYPE_UINT
:
case
TSDB_DATA_TYPE_UINT
:
*
(
uint32_t
*
)
output
=
(
*
((
uint32_t
*
)
left
+
i
))
&
(
*
((
uint32_t
*
)
righ
t
+
i
));
*
(
uint32_t
*
)
output
=
~
(
*
((
uint32_t
*
)
lef
t
+
i
));
output
+=
sizeof
(
int32_t
);
output
+=
sizeof
(
int32_t
);
break
;
break
;
case
TSDB_DATA_TYPE_UBIGINT
:
case
TSDB_DATA_TYPE_UBIGINT
:
*
(
uint64_t
*
)
output
=
(
*
((
uint64_t
*
)
left
+
i
))
&
(
*
((
uint64_t
*
)
righ
t
+
i
));
*
(
uint64_t
*
)
output
=
~
(
*
((
uint64_t
*
)
lef
t
+
i
));
output
+=
sizeof
(
int64_t
);
output
+=
sizeof
(
int64_t
);
break
;
break
;
}
}
}
}
}
else
if
(
len1
==
1
)
{
}
for
(;
i
>=
0
&&
i
<
(
len2
);
i
+=
step
)
{
if
(
isNull
(
getVectorValueAddrFnLeft
(
left
,
0
),
_left_type
)
||
isNull
(
getVectorValueAddrFnRight
(
right
,
i
),
_right_type
))
{
void
vectorLshift
(
void
*
left
,
int32_t
len1
,
int32_t
_left_type
,
void
*
right
,
int32_t
len2
,
int32_t
_right_type
,
void
*
out
,
int32_t
_ord
)
{
int32_t
i
=
((
_ord
)
==
TSDB_ORDER_ASC
)
?
0
:
MAX
(
len1
,
len2
)
-
1
;
int32_t
step
=
((
_ord
)
==
TSDB_ORDER_ASC
)
?
1
:
-
1
;
// the right operand is a number
if
(
len2
!=
1
)
{
return
;
}
char
*
output
=
(
char
*
)
out
;
_arithmetic_getVectorValueAddr_fn_t
getVectorValueAddrFnLeft
=
getVectorValueAddrFn
(
_left_type
);
for
(;
i
<
(
len1
)
&&
i
>=
0
;
i
+=
step
)
{
if
(
isNull
(
getVectorValueAddrFnLeft
(
left
,
i
),
_left_type
))
{
switch
(
_left_type
)
{
switch
(
_left_type
)
{
case
TSDB_DATA_TYPE_BOOL
:
case
TSDB_DATA_TYPE_BOOL
:
*
(
bool
*
)
output
=
TSDB_DATA_BOOL_NULL
;
*
(
bool
*
)
output
=
TSDB_DATA_BOOL_NULL
;
...
@@ -537,52 +717,66 @@ void vectorBitand(void *left, int32_t len1, int32_t _left_type, void *right, int
...
@@ -537,52 +717,66 @@ void vectorBitand(void *left, int32_t len1, int32_t _left_type, void *right, int
output
+=
sizeof
(
int64_t
);
output
+=
sizeof
(
int64_t
);
break
;
break
;
}
}
continue
;
continue
;
}
}
switch
(
_left_type
)
{
switch
(
_left_type
)
{
case
TSDB_DATA_TYPE_BOOL
:
case
TSDB_DATA_TYPE_BOOL
:
*
(
bool
*
)
output
=
(
*
(
bool
*
)
left
)
&
(
*
((
bool
*
)
right
+
i
))
;
*
(
bool
*
)
output
=
0
;
output
+=
sizeof
(
bool
);
output
+=
sizeof
(
bool
);
break
;
break
;
case
TSDB_DATA_TYPE_TINYINT
:
case
TSDB_DATA_TYPE_TINYINT
:
*
(
int8_t
*
)
output
=
(
*
(
int8_t
*
)
left
)
&
(
*
((
int8_t
*
)
right
+
i
))
;
*
(
int8_t
*
)
output
=
*
((
int8_t
*
)
left
+
i
)
<<
*
(
int8_t
*
)
right
;
output
+=
sizeof
(
int8_t
);
output
+=
sizeof
(
int8_t
);
break
;
break
;
case
TSDB_DATA_TYPE_SMALLINT
:
case
TSDB_DATA_TYPE_SMALLINT
:
*
(
int16_t
*
)
output
=
(
*
(
int16_t
*
)
left
)
&
(
*
((
int16_t
*
)
right
+
i
))
;
*
(
int16_t
*
)
output
=
*
((
int16_t
*
)
left
+
i
)
<<
*
(
int16_t
*
)
right
;
output
+=
sizeof
(
int16_t
);
output
+=
sizeof
(
int16_t
);
break
;
break
;
case
TSDB_DATA_TYPE_INT
:
case
TSDB_DATA_TYPE_INT
:
*
(
int32_t
*
)
output
=
(
*
(
int32_t
*
)
left
)
&
(
*
((
int32_t
*
)
right
+
i
))
;
*
(
int32_t
*
)
output
=
*
((
int32_t
*
)
left
+
i
)
<<
*
(
int32_t
*
)
right
;
output
+=
sizeof
(
int32_t
);
output
+=
sizeof
(
int32_t
);
break
;
break
;
case
TSDB_DATA_TYPE_BIGINT
:
case
TSDB_DATA_TYPE_BIGINT
:
*
(
int64_t
*
)
output
=
(
*
(
int64_t
*
)
left
)
&
(
*
((
int64_t
*
)
right
+
i
))
;
*
(
int64_t
*
)
output
=
*
((
int64_t
*
)
left
+
i
)
<<
*
(
int64_t
*
)
right
;
output
+=
sizeof
(
int64_t
);
output
+=
sizeof
(
int64_t
);
break
;
break
;
case
TSDB_DATA_TYPE_UTINYINT
:
case
TSDB_DATA_TYPE_UTINYINT
:
*
(
uint8_t
*
)
output
=
(
*
(
uint8_t
*
)
left
)
&
(
*
((
uint8_t
*
)
right
+
i
))
;
*
(
uint8_t
*
)
output
=
*
((
uint8_t
*
)
left
+
i
)
<<
*
(
uint8_t
*
)
right
;
output
+=
sizeof
(
int8_t
);
output
+=
sizeof
(
int8_t
);
break
;
break
;
case
TSDB_DATA_TYPE_USMALLINT
:
case
TSDB_DATA_TYPE_USMALLINT
:
*
(
uint16_t
*
)
output
=
(
*
(
uint16_t
*
)
left
)
&
(
*
((
uint16_t
*
)
right
+
i
))
;
*
(
uint16_t
*
)
output
=
*
((
uint16_t
*
)
left
+
i
)
<<
*
(
uint16_t
*
)
right
;
output
+=
sizeof
(
int16_t
);
output
+=
sizeof
(
int16_t
);
break
;
break
;
case
TSDB_DATA_TYPE_UINT
:
case
TSDB_DATA_TYPE_UINT
:
*
(
uint32_t
*
)
output
=
(
*
(
uint32_t
*
)
left
)
&
(
*
((
uint32_t
*
)
right
+
i
))
;
*
(
uint32_t
*
)
output
=
*
((
uint32_t
*
)
left
+
i
)
<<
*
(
uint32_t
*
)
right
;
output
+=
sizeof
(
int32_t
);
output
+=
sizeof
(
int32_t
);
break
;
break
;
case
TSDB_DATA_TYPE_UBIGINT
:
case
TSDB_DATA_TYPE_UBIGINT
:
*
(
uint64_t
*
)
output
=
(
*
(
uint64_t
*
)
left
)
&
(
*
((
uint64_t
*
)
right
+
i
))
;
*
(
uint64_t
*
)
output
=
*
((
uint64_t
*
)
left
+
i
)
<<
*
(
uint64_t
*
)
right
;
output
+=
sizeof
(
int64_t
);
output
+=
sizeof
(
int64_t
);
break
;
break
;
}
}
}
}
}
else
if
((
len2
)
==
1
)
{
}
for
(;
i
>=
0
&&
i
<
len1
;
i
+=
step
)
{
if
(
isNull
(
getVectorValueAddrFnLeft
(
left
,
i
),
_left_type
)
||
isNull
(
getVectorValueAddrFnRight
(
right
,
0
),
_right_type
))
{
void
vectorRshift
(
void
*
left
,
int32_t
len1
,
int32_t
_left_type
,
void
*
right
,
int32_t
len2
,
int32_t
_right_type
,
void
*
out
,
int32_t
_ord
)
{
int32_t
i
=
((
_ord
)
==
TSDB_ORDER_ASC
)
?
0
:
MAX
(
len1
,
len2
)
-
1
;
int32_t
step
=
((
_ord
)
==
TSDB_ORDER_ASC
)
?
1
:
-
1
;
// the right operand is a number
if
(
len2
!=
1
)
{
return
;
}
char
*
output
=
(
char
*
)
out
;
_arithmetic_getVectorValueAddr_fn_t
getVectorValueAddrFnLeft
=
getVectorValueAddrFn
(
_left_type
);
for
(;
i
<
(
len1
)
&&
i
>=
0
;
i
+=
step
)
{
if
(
isNull
(
getVectorValueAddrFnLeft
(
left
,
i
),
_left_type
))
{
switch
(
_left_type
)
{
switch
(
_left_type
)
{
case
TSDB_DATA_TYPE_BOOL
:
case
TSDB_DATA_TYPE_BOOL
:
*
(
bool
*
)
output
=
TSDB_DATA_BOOL_NULL
;
*
(
bool
*
)
output
=
TSDB_DATA_BOOL_NULL
;
...
@@ -622,50 +816,50 @@ void vectorBitand(void *left, int32_t len1, int32_t _left_type, void *right, int
...
@@ -622,50 +816,50 @@ void vectorBitand(void *left, int32_t len1, int32_t _left_type, void *right, int
output
+=
sizeof
(
int64_t
);
output
+=
sizeof
(
int64_t
);
break
;
break
;
}
}
continue
;
continue
;
}
}
switch
(
_left_type
)
{
switch
(
_left_type
)
{
case
TSDB_DATA_TYPE_BOOL
:
case
TSDB_DATA_TYPE_BOOL
:
*
(
bool
*
)
output
=
(
*
((
bool
*
)
left
+
i
))
&
(
*
(
bool
*
)
right
)
;
*
(
bool
*
)
output
=
0
;
output
+=
sizeof
(
bool
);
output
+=
sizeof
(
bool
);
break
;
break
;
case
TSDB_DATA_TYPE_TINYINT
:
case
TSDB_DATA_TYPE_TINYINT
:
*
(
int8_t
*
)
output
=
(
*
((
int8_t
*
)
left
+
i
))
&
(
*
(
int8_t
*
)
right
)
;
*
(
int8_t
*
)
output
=
*
((
int8_t
*
)
left
+
i
)
>>
*
(
int8_t
*
)
right
;
output
+=
sizeof
(
int8_t
);
output
+=
sizeof
(
int8_t
);
break
;
break
;
case
TSDB_DATA_TYPE_SMALLINT
:
case
TSDB_DATA_TYPE_SMALLINT
:
*
(
int16_t
*
)
output
=
(
*
((
int16_t
*
)
left
+
i
))
&
(
*
(
int16_t
*
)
right
)
;
*
(
int16_t
*
)
output
=
*
((
int16_t
*
)
left
+
i
)
>>
*
(
int16_t
*
)
right
;
output
+=
sizeof
(
int16_t
);
output
+=
sizeof
(
int16_t
);
break
;
break
;
case
TSDB_DATA_TYPE_INT
:
case
TSDB_DATA_TYPE_INT
:
*
(
int32_t
*
)
output
=
(
*
((
int32_t
*
)
left
+
i
))
&
(
*
(
int32_t
*
)
right
)
;
*
(
int32_t
*
)
output
=
*
((
int32_t
*
)
left
+
i
)
>>
*
(
int32_t
*
)
right
;
output
+=
sizeof
(
int32_t
);
output
+=
sizeof
(
int32_t
);
break
;
break
;
case
TSDB_DATA_TYPE_BIGINT
:
case
TSDB_DATA_TYPE_BIGINT
:
*
(
int64_t
*
)
output
=
(
*
((
int64_t
*
)
left
+
i
))
&
(
*
(
int64_t
*
)
right
)
;
*
(
int64_t
*
)
output
=
*
((
int64_t
*
)
left
+
i
)
>>
*
(
int64_t
*
)
right
;
output
+=
sizeof
(
int64_t
);
output
+=
sizeof
(
int64_t
);
break
;
break
;
case
TSDB_DATA_TYPE_UTINYINT
:
case
TSDB_DATA_TYPE_UTINYINT
:
*
(
uint8_t
*
)
output
=
(
*
((
uint8_t
*
)
left
+
i
))
&
(
*
(
uint8_t
*
)
right
)
;
*
(
uint8_t
*
)
output
=
*
((
uint8_t
*
)
left
+
i
)
>>
*
(
uint8_t
*
)
right
;
output
+=
sizeof
(
int8_t
);
output
+=
sizeof
(
int8_t
);
break
;
break
;
case
TSDB_DATA_TYPE_USMALLINT
:
case
TSDB_DATA_TYPE_USMALLINT
:
*
(
uint16_t
*
)
output
=
(
*
((
uint16_t
*
)
left
+
i
))
&
(
*
(
uint16_t
*
)
right
)
;
*
(
uint16_t
*
)
output
=
*
((
uint16_t
*
)
left
+
i
)
>>
*
(
uint16_t
*
)
right
;
output
+=
sizeof
(
int16_t
);
output
+=
sizeof
(
int16_t
);
break
;
break
;
case
TSDB_DATA_TYPE_UINT
:
case
TSDB_DATA_TYPE_UINT
:
*
(
uint32_t
*
)
output
=
(
*
((
uint32_t
*
)
left
+
i
))
&
(
*
(
uint32_t
*
)
right
)
;
*
(
uint32_t
*
)
output
=
*
((
uint32_t
*
)
left
+
i
)
>>
*
(
uint32_t
*
)
right
;
output
+=
sizeof
(
int32_t
);
output
+=
sizeof
(
int32_t
);
break
;
break
;
case
TSDB_DATA_TYPE_UBIGINT
:
case
TSDB_DATA_TYPE_UBIGINT
:
*
(
uint64_t
*
)
output
=
(
*
((
uint64_t
*
)
left
+
i
))
&
(
*
(
uint64_t
*
)
right
)
;
*
(
uint64_t
*
)
output
=
*
((
uint64_t
*
)
left
+
i
)
>>
*
(
uint64_t
*
)
right
;
output
+=
sizeof
(
int64_t
);
output
+=
sizeof
(
int64_t
);
break
;
break
;
}
}
}
}
}
}
}
_arithmetic_operator_fn_t
getArithmeticOperatorFn
(
int32_t
arithmeticOptr
)
{
_arithmetic_operator_fn_t
getArithmeticOperatorFn
(
int32_t
arithmeticOptr
)
{
...
@@ -682,6 +876,16 @@ _arithmetic_operator_fn_t getArithmeticOperatorFn(int32_t arithmeticOptr) {
...
@@ -682,6 +876,16 @@ _arithmetic_operator_fn_t getArithmeticOperatorFn(int32_t arithmeticOptr) {
return
vectorRemainder
;
return
vectorRemainder
;
case
TSDB_BINARY_OP_BITAND
:
case
TSDB_BINARY_OP_BITAND
:
return
vectorBitand
;
return
vectorBitand
;
case
TSDB_BINARY_OP_BITOR
:
return
vectorBitor
;
case
TSDB_BINARY_OP_BITXOR
:
return
vectorBitxor
;
case
TSDB_BINARY_OP_BITNOT
:
return
vectorBitnot
;
case
TSDB_BINARY_OP_LSHIFT
:
return
vectorLshift
;
case
TSDB_BINARY_OP_RSHIFT
:
return
vectorRshift
;
default:
default:
assert
(
0
);
assert
(
0
);
return
NULL
;
return
NULL
;
...
...
src/common/src/texpr.c
浏览文件 @
ce0b391f
...
@@ -88,7 +88,6 @@ int32_t exprTreeValidateFunctionNode(char* msgbuf, tExprNode *pExpr) {
...
@@ -88,7 +88,6 @@ int32_t exprTreeValidateFunctionNode(char* msgbuf, tExprNode *pExpr) {
int32_t
exprTreeValidateExprNode
(
tExprNode
*
pExpr
)
{
int32_t
exprTreeValidateExprNode
(
tExprNode
*
pExpr
)
{
int16_t
leftType
=
pExpr
->
_node
.
pLeft
->
resultType
;
int16_t
leftType
=
pExpr
->
_node
.
pLeft
->
resultType
;
int16_t
rightType
=
pExpr
->
_node
.
pRight
->
resultType
;
int16_t
rightType
=
pExpr
->
_node
.
pRight
->
resultType
;
int16_t
resultType
=
leftType
;
if
(
pExpr
->
_node
.
optr
==
TSDB_BINARY_OP_ADD
||
pExpr
->
_node
.
optr
==
TSDB_BINARY_OP_SUBTRACT
||
if
(
pExpr
->
_node
.
optr
==
TSDB_BINARY_OP_ADD
||
pExpr
->
_node
.
optr
==
TSDB_BINARY_OP_SUBTRACT
||
pExpr
->
_node
.
optr
==
TSDB_BINARY_OP_MULTIPLY
||
pExpr
->
_node
.
optr
==
TSDB_BINARY_OP_DIVIDE
||
pExpr
->
_node
.
optr
==
TSDB_BINARY_OP_MULTIPLY
||
pExpr
->
_node
.
optr
==
TSDB_BINARY_OP_DIVIDE
||
...
@@ -99,170 +98,30 @@ int32_t exprTreeValidateExprNode(tExprNode *pExpr) {
...
@@ -99,170 +98,30 @@ int32_t exprTreeValidateExprNode(tExprNode *pExpr) {
pExpr
->
resultType
=
TSDB_DATA_TYPE_DOUBLE
;
pExpr
->
resultType
=
TSDB_DATA_TYPE_DOUBLE
;
pExpr
->
resultBytes
=
tDataTypes
[
TSDB_DATA_TYPE_DOUBLE
].
bytes
;
pExpr
->
resultBytes
=
tDataTypes
[
TSDB_DATA_TYPE_DOUBLE
].
bytes
;
return
TSDB_CODE_SUCCESS
;
return
TSDB_CODE_SUCCESS
;
}
else
if
(
pExpr
->
_node
.
optr
==
TSDB_BINARY_OP_BITAND
)
{
}
else
if
(
pExpr
->
_node
.
optr
==
TSDB_BINARY_OP_BITAND
||
pExpr
->
_node
.
optr
==
TSDB_BINARY_OP_BITOR
||
if
((
leftType
!=
TSDB_DATA_TYPE_BOOL
&&
!
IS_SIGNED_NUMERIC_TYPE
(
leftType
)
&&
!
IS_UNSIGNED_NUMERIC_TYPE
(
leftType
))
||
pExpr
->
_node
.
optr
==
TSDB_BINARY_OP_BITXOR
||
pExpr
->
_node
.
optr
==
TSDB_BINARY_OP_LSHIFT
||
(
rightType
!=
TSDB_DATA_TYPE_BOOL
&&
!
IS_SIGNED_NUMERIC_TYPE
(
rightType
)
&&
!
IS_UNSIGNED_NUMERIC_TYPE
(
rightType
))
)
pExpr
->
_node
.
optr
==
TSDB_BINARY_OP_RSHIFT
)
{
{
if
(
!
IS_NUMERIC_TYPE
(
leftType
)
||
!
IS_NUMERIC_TYPE
(
rightType
))
{
return
TSDB_CODE_TSC_INVALID_OPERATION
;
return
TSDB_CODE_TSC_INVALID_OPERATION
;
}
}
if
(
IS_FLOAT_TYPE
(
leftType
)
||
IS_FLOAT_TYPE
(
rightType
))
{
uint8_t
schemaType
;
// now leftType and rightType are both numeric
if
(
pExpr
->
_node
.
pLeft
->
nodeType
==
TSQL_NODE_COL
&&
pExpr
->
_node
.
pRight
->
nodeType
==
TSQL_NODE_COL
)
{
if
(
leftType
!=
rightType
)
{
return
TSDB_CODE_TSC_INVALID_OPERATION
;
}
}
else
if
(
pExpr
->
_node
.
pLeft
->
nodeType
==
TSQL_NODE_COL
)
{
if
(
pExpr
->
_node
.
pRight
->
nodeType
!=
TSQL_NODE_VALUE
)
{
return
TSDB_CODE_TSC_INVALID_OPERATION
;
}
else
{
schemaType
=
pExpr
->
_node
.
pLeft
->
pSchema
->
type
;
int64_t
sVal
=
pExpr
->
_node
.
pRight
->
pVal
->
i64
;
uint64_t
uVal
=
pExpr
->
_node
.
pRight
->
pVal
->
u64
;
switch
(
schemaType
)
{
case
TSDB_DATA_TYPE_BOOL
:
if
((
pExpr
->
_node
.
pRight
->
pVal
->
nType
!=
TSDB_DATA_TYPE_BOOL
)
||
(
pExpr
->
_node
.
pRight
->
pVal
->
i64
!=
0
&&
pExpr
->
_node
.
pRight
->
pVal
->
i64
!=
1
&&
pExpr
->
_node
.
pRight
->
pVal
->
i64
!=
TSDB_DATA_BOOL_NULL
))
{
return
TSDB_CODE_TSC_INVALID_OPERATION
;
}
break
;
case
TSDB_DATA_TYPE_TINYINT
:
if
(
sVal
<
-
128
||
sVal
>
127
)
{
return
TSDB_CODE_TSC_INVALID_OPERATION
;
}
break
;
case
TSDB_DATA_TYPE_SMALLINT
:
if
(
sVal
<
-
32768
||
sVal
>
32767
)
{
return
TSDB_CODE_TSC_INVALID_OPERATION
;
}
break
;
case
TSDB_DATA_TYPE_INT
:
if
(
sVal
<
INT32_MIN
||
sVal
>
INT32_MAX
)
{
return
TSDB_CODE_TSC_INVALID_OPERATION
;
}
break
;
case
TSDB_DATA_TYPE_BIGINT
:
if
(
sVal
<
INT64_MIN
||
sVal
>
INT64_MAX
)
{
return
TSDB_CODE_TSC_INVALID_OPERATION
;
}
break
;
case
TSDB_DATA_TYPE_UTINYINT
:
if
(
uVal
>
255
)
{
return
TSDB_CODE_TSC_INVALID_OPERATION
;
}
break
;
case
TSDB_DATA_TYPE_USMALLINT
:
if
(
uVal
>
65535
)
{
return
TSDB_CODE_TSC_INVALID_OPERATION
;
}
break
;
case
TSDB_DATA_TYPE_UINT
:
if
(
uVal
>
UINT32_MAX
)
{
return
TSDB_CODE_TSC_INVALID_OPERATION
;
}
break
;
case
TSDB_DATA_TYPE_UBIGINT
:
if
(
uVal
>
UINT64_MAX
)
{
return
TSDB_CODE_TSC_INVALID_OPERATION
;
return
TSDB_CODE_TSC_INVALID_OPERATION
;
}
}
break
;
if
(
pExpr
->
_node
.
optr
==
TSDB_BINARY_OP_LSHIFT
||
pExpr
->
_node
.
optr
==
TSDB_BINARY_OP_RSHIFT
)
{
}
pExpr
->
resultType
=
leftType
;
pExpr
->
resultBytes
=
tDataTypes
[
leftType
].
bytes
;
pExpr
->
_node
.
pRight
->
pSchema
->
type
=
schemaType
;
pExpr
->
_node
.
pRight
->
pVal
->
nType
=
schemaType
;
pExpr
->
_node
.
pRight
->
resultType
=
schemaType
;
pExpr
->
_node
.
pRight
->
resultBytes
=
tDataTypes
[
schemaType
].
bytes
;
}
}
else
{
if
(
pExpr
->
_node
.
pLeft
->
nodeType
!=
TSQL_NODE_VALUE
)
{
return
TSDB_CODE_TSC_INVALID_OPERATION
;
}
else
{
}
else
{
schemaType
=
pExpr
->
_node
.
pRight
->
pSchema
->
type
;
pExpr
->
resultType
=
TSDB_DATA_TYPE_BIGINT
;
int64_t
sVal
=
pExpr
->
_node
.
pLeft
->
pVal
->
i64
;
pExpr
->
resultBytes
=
tDataTypes
[
TSDB_DATA_TYPE_BIGINT
].
bytes
;
uint64_t
uVal
=
pExpr
->
_node
.
pLeft
->
pVal
->
u64
;
switch
(
schemaType
)
{
case
TSDB_DATA_TYPE_BOOL
:
if
((
pExpr
->
_node
.
pLeft
->
pVal
->
nType
!=
TSDB_DATA_TYPE_BOOL
)
||
(
pExpr
->
_node
.
pLeft
->
pVal
->
i64
!=
0
&&
pExpr
->
_node
.
pLeft
->
pVal
->
i64
!=
1
&&
pExpr
->
_node
.
pLeft
->
pVal
->
i64
!=
TSDB_DATA_BOOL_NULL
))
{
return
TSDB_CODE_TSC_INVALID_OPERATION
;
}
pExpr
->
_node
.
pLeft
->
pVal
->
nLen
=
1
;
break
;
case
TSDB_DATA_TYPE_TINYINT
:
if
(
sVal
<
-
128
||
sVal
>
127
)
{
return
TSDB_CODE_TSC_INVALID_OPERATION
;
}
pExpr
->
_node
.
pLeft
->
pVal
->
nLen
=
1
;
break
;
case
TSDB_DATA_TYPE_SMALLINT
:
if
(
sVal
<
-
32768
||
sVal
>
32767
)
{
return
TSDB_CODE_TSC_INVALID_OPERATION
;
}
pExpr
->
_node
.
pLeft
->
pVal
->
nLen
=
2
;
break
;
case
TSDB_DATA_TYPE_INT
:
if
(
sVal
<
INT32_MIN
||
sVal
>
INT32_MAX
)
{
return
TSDB_CODE_TSC_INVALID_OPERATION
;
}
pExpr
->
_node
.
pLeft
->
pVal
->
nLen
=
4
;
break
;
case
TSDB_DATA_TYPE_BIGINT
:
if
(
sVal
<
INT64_MIN
||
sVal
>
INT64_MAX
)
{
return
TSDB_CODE_TSC_INVALID_OPERATION
;
}
pExpr
->
_node
.
pLeft
->
pVal
->
nLen
=
8
;
break
;
case
TSDB_DATA_TYPE_UTINYINT
:
if
(
uVal
>
255
)
{
return
TSDB_CODE_TSC_INVALID_OPERATION
;
}
}
pExpr
->
_node
.
pLeft
->
pVal
->
nLen
=
1
;
return
TSDB_CODE_SUCCESS
;
break
;
}
else
if
(
pExpr
->
_node
.
optr
==
TSDB_BINARY_OP_BITNOT
)
{
case
TSDB_DATA_TYPE_USMALLINT
:
if
(
!
IS_NUMERIC_TYPE
(
leftType
)
||
IS_FLOAT_TYPE
(
leftType
))
{
if
(
uVal
>
65535
)
{
return
TSDB_CODE_TSC_INVALID_OPERATION
;
}
pExpr
->
_node
.
pLeft
->
pVal
->
nLen
=
2
;
break
;
case
TSDB_DATA_TYPE_UINT
:
if
(
uVal
>
UINT32_MAX
)
{
return
TSDB_CODE_TSC_INVALID_OPERATION
;
}
pExpr
->
_node
.
pLeft
->
pVal
->
nLen
=
4
;
break
;
case
TSDB_DATA_TYPE_UBIGINT
:
if
(
uVal
>
UINT64_MAX
)
{
return
TSDB_CODE_TSC_INVALID_OPERATION
;
return
TSDB_CODE_TSC_INVALID_OPERATION
;
}
}
pExpr
->
_node
.
pLeft
->
pVal
->
nLen
=
8
;
pExpr
->
resultType
=
leftType
;
break
;
pExpr
->
resultBytes
=
tDataTypes
[
leftType
].
bytes
;
}
pExpr
->
_node
.
pLeft
->
pSchema
->
type
=
schemaType
;
pExpr
->
_node
.
pLeft
->
pVal
->
nType
=
schemaType
;
pExpr
->
_node
.
pLeft
->
resultType
=
schemaType
;
pExpr
->
_node
.
pLeft
->
resultBytes
=
tDataTypes
[
schemaType
].
bytes
;
}
resultType
=
schemaType
;
}
if
(
resultType
==
TSDB_DATA_TYPE_BOOL
)
{
pExpr
->
resultType
=
TSDB_DATA_TYPE_BOOL
;
pExpr
->
resultBytes
=
tDataTypes
[
TSDB_DATA_TYPE_BOOL
].
bytes
;
}
else
{
pExpr
->
resultType
=
resultType
;
pExpr
->
resultBytes
=
tDataTypes
[
resultType
].
bytes
;
}
return
TSDB_CODE_SUCCESS
;
return
TSDB_CODE_SUCCESS
;
}
else
{
}
else
{
return
TSDB_CODE_SUCCESS
;
return
TSDB_CODE_SUCCESS
;
...
@@ -647,6 +506,9 @@ void exprTreeExprNodeTraverse(tExprNode *pExpr, int32_t numOfRows, tExprOperandI
...
@@ -647,6 +506,9 @@ void exprTreeExprNodeTraverse(tExprNode *pExpr, int32_t numOfRows, tExprOperandI
rightType
=
pRight
->
pSchema
->
type
;
rightType
=
pRight
->
pSchema
->
type
;
rightNum
=
numOfRows
;
rightNum
=
numOfRows
;
}
else
if
(
pRight
->
nodeType
==
TSQL_NODE_DUMMY
)
{
/* BITNOT */
rightNum
=
0
;
}
else
{
}
else
{
assert
(
pRight
->
nodeType
==
TSQL_NODE_VALUE
);
assert
(
pRight
->
nodeType
==
TSQL_NODE_VALUE
);
rightIn
=
(
char
*
)
&
pRight
->
pVal
->
i64
;
rightIn
=
(
char
*
)
&
pRight
->
pVal
->
i64
;
...
@@ -661,7 +523,10 @@ void exprTreeExprNodeTraverse(tExprNode *pExpr, int32_t numOfRows, tExprOperandI
...
@@ -661,7 +523,10 @@ void exprTreeExprNodeTraverse(tExprNode *pExpr, int32_t numOfRows, tExprOperandI
if
(
leftType
==
TSDB_DATA_TYPE_TIMESTAMP
||
rightType
==
TSDB_DATA_TYPE_TIMESTAMP
)
{
if
(
leftType
==
TSDB_DATA_TYPE_TIMESTAMP
||
rightType
==
TSDB_DATA_TYPE_TIMESTAMP
)
{
output
->
type
=
TSDB_DATA_TYPE_BIGINT
;
output
->
type
=
TSDB_DATA_TYPE_BIGINT
;
}
else
{
}
else
{
if
(
pExpr
->
_node
.
optr
==
TSDB_BINARY_OP_BITAND
)
{
if
(
pExpr
->
_node
.
optr
==
TSDB_BINARY_OP_BITAND
||
pExpr
->
_node
.
optr
==
TSDB_BINARY_OP_BITOR
||
pExpr
->
_node
.
optr
==
TSDB_BINARY_OP_BITXOR
||
pExpr
->
_node
.
optr
==
TSDB_BINARY_OP_BITNOT
||
pExpr
->
_node
.
optr
==
TSDB_BINARY_OP_LSHIFT
||
pExpr
->
_node
.
optr
==
TSDB_BINARY_OP_RSHIFT
)
{
output
->
type
=
leftType
;
// rightType must be the same as leftType
output
->
type
=
leftType
;
// rightType must be the same as leftType
}
else
{
}
else
{
output
->
type
=
TSDB_DATA_TYPE_DOUBLE
;
output
->
type
=
TSDB_DATA_TYPE_DOUBLE
;
...
...
src/inc/taosdef.h
浏览文件 @
ce0b391f
...
@@ -177,10 +177,15 @@ do { \
...
@@ -177,10 +177,15 @@ do { \
#define TSDB_BINARY_OP_DIVIDE 33
#define TSDB_BINARY_OP_DIVIDE 33
#define TSDB_BINARY_OP_REMAINDER 34
#define TSDB_BINARY_OP_REMAINDER 34
#define TSDB_BINARY_OP_BITAND 35
#define TSDB_BINARY_OP_BITAND 35
#define TSDB_BINARY_OP_BITOR 36
#define TSDB_BINARY_OP_BITXOR 37
#define TSDB_BINARY_OP_BITNOT 38
#define TSDB_BINARY_OP_LSHIFT 39
#define TSDB_BINARY_OP_RSHIFT 40
#define IS_RELATION_OPTR(op) (((op) >= TSDB_RELATION_LESS) && ((op) < TSDB_RELATION_IN))
#define IS_RELATION_OPTR(op) (((op) >= TSDB_RELATION_LESS) && ((op) < TSDB_RELATION_IN))
#define IS_ARITHMETIC_OPTR(op) (((op) >= TSDB_BINARY_OP_ADD) && ((op) <= TSDB_BINARY_OP_
BITAND
))
#define IS_ARITHMETIC_OPTR(op) (((op) >= TSDB_BINARY_OP_ADD) && ((op) <= TSDB_BINARY_OP_
RSHIFT
))
#define TS_PATH_DELIMITER_LEN 1
#define TS_PATH_DELIMITER_LEN 1
...
...
src/inc/ttokendef.h
浏览文件 @
ce0b391f
...
@@ -50,172 +50,173 @@
...
@@ -50,172 +50,173 @@
#define TK_LE 32
#define TK_LE 32
#define TK_BITAND 33
#define TK_BITAND 33
#define TK_BITOR 34
#define TK_BITOR 34
#define TK_LSHIFT 35
#define TK_BITXOR 35
#define TK_RSHIFT 36
#define TK_LSHIFT 36
#define TK_PLUS 37
#define TK_RSHIFT 37
#define TK_MINUS 38
#define TK_PLUS 38
#define TK_DIVIDE 39
#define TK_MINUS 39
#define TK_TIMES 40
#define TK_DIVIDE 40
#define TK_STAR 41
#define TK_TIMES 41
#define TK_SLASH 42
#define TK_STAR 42
#define TK_REM 43
#define TK_SLASH 43
#define TK_UMINUS 44
#define TK_REM 44
#define TK_UPLUS 45
#define TK_UMINUS 45
#define TK_BITNOT 46
#define TK_UPLUS 46
#define TK_ARROW 47
#define TK_BITNOT 47
#define TK_SHOW 48
#define TK_ARROW 48
#define TK_DATABASES 49
#define TK_SHOW 49
#define TK_TOPICS 50
#define TK_DATABASES 50
#define TK_FUNCTIONS 51
#define TK_TOPICS 51
#define TK_MNODES 52
#define TK_FUNCTIONS 52
#define TK_DNODES 53
#define TK_MNODES 53
#define TK_ACCOUNTS 54
#define TK_DNODES 54
#define TK_USERS 55
#define TK_ACCOUNTS 55
#define TK_MODULES 56
#define TK_USERS 56
#define TK_QUERIES 57
#define TK_MODULES 57
#define TK_CONNECTIONS 58
#define TK_QUERIES 58
#define TK_STREAMS 59
#define TK_CONNECTIONS 59
#define TK_VARIABLES 60
#define TK_STREAMS 60
#define TK_SCORES 61
#define TK_VARIABLES 61
#define TK_GRANTS 62
#define TK_SCORES 62
#define TK_VNODES 63
#define TK_GRANTS 63
#define TK_DOT 64
#define TK_VNODES 64
#define TK_CREATE 65
#define TK_DOT 65
#define TK_TABLE 66
#define TK_CREATE 66
#define TK_STABLE 67
#define TK_TABLE 67
#define TK_DATABASE 68
#define TK_STABLE 68
#define TK_TABLES 69
#define TK_DATABASE 69
#define TK_STABLES 70
#define TK_TABLES 70
#define TK_VGROUPS 71
#define TK_STABLES 71
#define TK_DROP 72
#define TK_VGROUPS 72
#define TK_TOPIC 73
#define TK_DROP 73
#define TK_FUNCTION 74
#define TK_TOPIC 74
#define TK_DNODE 75
#define TK_FUNCTION 75
#define TK_USER 76
#define TK_DNODE 76
#define TK_ACCOUNT 77
#define TK_USER 77
#define TK_USE 78
#define TK_ACCOUNT 78
#define TK_DESCRIBE 79
#define TK_USE 79
#define TK_DESC 80
#define TK_DESCRIBE 80
#define TK_ALTER 81
#define TK_DESC 81
#define TK_PASS 82
#define TK_ALTER 82
#define TK_PRIVILEGE 83
#define TK_PASS 83
#define TK_LOCAL 84
#define TK_PRIVILEGE 84
#define TK_COMPACT 85
#define TK_LOCAL 85
#define TK_LP 86
#define TK_COMPACT 86
#define TK_RP 87
#define TK_LP 87
#define TK_IF 88
#define TK_RP 88
#define TK_EXISTS 89
#define TK_IF 89
#define TK_AS 90
#define TK_EXISTS 90
#define TK_OUTPUTTYPE 91
#define TK_AS 91
#define TK_AGGREGATE 92
#define TK_OUTPUTTYPE 92
#define TK_BUFSIZE 93
#define TK_AGGREGATE 93
#define TK_PPS 94
#define TK_BUFSIZE 94
#define TK_TSERIES 95
#define TK_PPS 95
#define TK_DBS 96
#define TK_TSERIES 96
#define TK_STORAGE 97
#define TK_DBS 97
#define TK_QTIME 98
#define TK_STORAGE 98
#define TK_CONNS 99
#define TK_QTIME 99
#define TK_STATE 100
#define TK_CONNS 100
#define TK_COMMA 101
#define TK_STATE 101
#define TK_KEEP 102
#define TK_COMMA 102
#define TK_CACHE 103
#define TK_KEEP 103
#define TK_REPLICA 104
#define TK_CACHE 104
#define TK_QUORUM 105
#define TK_REPLICA 105
#define TK_DAYS 106
#define TK_QUORUM 106
#define TK_MINROWS 107
#define TK_DAYS 107
#define TK_MAXROWS 108
#define TK_MINROWS 108
#define TK_BLOCKS 109
#define TK_MAXROWS 109
#define TK_CTIME 110
#define TK_BLOCKS 110
#define TK_WAL 111
#define TK_CTIME 111
#define TK_FSYNC 112
#define TK_WAL 112
#define TK_COMP 113
#define TK_FSYNC 113
#define TK_PRECISION 114
#define TK_COMP 114
#define TK_UPDATE 115
#define TK_PRECISION 115
#define TK_CACHELAST 116
#define TK_UPDATE 116
#define TK_PARTITIONS 117
#define TK_CACHELAST 117
#define TK_UNSIGNED 118
#define TK_PARTITIONS 118
#define TK_TAGS 119
#define TK_UNSIGNED 119
#define TK_USING 120
#define TK_TAGS 120
#define TK_NULL 121
#define TK_USING 121
#define TK_NOW 122
#define TK_NULL 122
#define TK_VARIABLE 123
#define TK_NOW 123
#define TK_SELECT 124
#define TK_VARIABLE 124
#define TK_UNION 125
#define TK_SELECT 125
#define TK_ALL 126
#define TK_UNION 126
#define TK_DISTINCT 127
#define TK_ALL 127
#define TK_FROM 128
#define TK_DISTINCT 128
#define TK_RANGE 129
#define TK_FROM 129
#define TK_INTERVAL 130
#define TK_RANGE 130
#define TK_EVERY 131
#define TK_INTERVAL 131
#define TK_SESSION 132
#define TK_EVERY 132
#define TK_STATE_WINDOW 133
#define TK_SESSION 133
#define TK_FILL 134
#define TK_STATE_WINDOW 134
#define TK_SLIDING 135
#define TK_FILL 135
#define TK_ORDER 136
#define TK_SLIDING 136
#define TK_BY 137
#define TK_ORDER 137
#define TK_ASC 138
#define TK_BY 138
#define TK_GROUP 139
#define TK_ASC 139
#define TK_HAVING 140
#define TK_GROUP 140
#define TK_LIMIT 141
#define TK_HAVING 141
#define TK_OFFSET 142
#define TK_LIMIT 142
#define TK_SLIMIT 143
#define TK_OFFSET 143
#define TK_SOFFSET 144
#define TK_SLIMIT 144
#define TK_WHERE 145
#define TK_SOFFSET 145
#define TK_RESET 146
#define TK_WHERE 146
#define TK_QUERY 147
#define TK_RESET 147
#define TK_SYNCDB 148
#define TK_QUERY 148
#define TK_ADD 149
#define TK_SYNCDB 149
#define TK_COLUMN 150
#define TK_ADD 150
#define TK_MODIFY 151
#define TK_COLUMN 151
#define TK_TAG 152
#define TK_MODIFY 152
#define TK_CHANGE 153
#define TK_TAG 153
#define TK_SET 154
#define TK_CHANGE 154
#define TK_KILL 155
#define TK_SET 155
#define TK_CONNECTION 156
#define TK_KILL 156
#define TK_STREAM 157
#define TK_CONNECTION 157
#define TK_COLON 158
#define TK_STREAM 158
#define TK_ABORT 159
#define TK_COLON 159
#define TK_AFTER 160
#define TK_ABORT 160
#define TK_ATTACH 161
#define TK_AFTER 161
#define TK_BEFORE 162
#define TK_ATTACH 162
#define TK_BEGIN 163
#define TK_BEFORE 163
#define TK_CASCADE 164
#define TK_BEGIN 164
#define TK_CLUSTER 165
#define TK_CASCADE 165
#define TK_CONFLICT 166
#define TK_CLUSTER 166
#define TK_COPY 167
#define TK_CONFLICT 167
#define TK_DEFERRED 168
#define TK_COPY 168
#define TK_DELIMITERS 169
#define TK_DEFERRED 169
#define TK_DETACH 170
#define TK_DELIMITERS 170
#define TK_EACH 171
#define TK_DETACH 171
#define TK_END 172
#define TK_EACH 172
#define TK_EXPLAIN 173
#define TK_END 173
#define TK_FAIL 174
#define TK_EXPLAIN 174
#define TK_FOR 175
#define TK_FAIL 175
#define TK_IGNORE 176
#define TK_FOR 176
#define TK_IMMEDIATE 177
#define TK_IGNORE 177
#define TK_INITIALLY 178
#define TK_IMMEDIATE 178
#define TK_INSTEAD 179
#define TK_INITIALLY 179
#define TK_KEY 180
#define TK_INSTEAD 180
#define TK_OF 181
#define TK_KEY 181
#define TK_RAISE 182
#define TK_OF 182
#define TK_REPLACE 183
#define TK_RAISE 183
#define TK_RESTRICT 184
#define TK_REPLACE 184
#define TK_ROW 185
#define TK_RESTRICT 185
#define TK_STATEMENT 186
#define TK_ROW 186
#define TK_TRIGGER 187
#define TK_STATEMENT 187
#define TK_VIEW 188
#define TK_TRIGGER 188
#define TK_IPTOKEN 189
#define TK_VIEW 189
#define TK_SEMI 190
#define TK_IPTOKEN 190
#define TK_NONE 191
#define TK_SEMI 191
#define TK_PREV 192
#define TK_NONE 192
#define TK_LINEAR 193
#define TK_PREV 193
#define TK_IMPORT 194
#define TK_LINEAR 194
#define TK_TBNAME 195
#define TK_IMPORT 195
#define TK_JOIN 196
#define TK_TBNAME 196
#define TK_INSERT 197
#define TK_JOIN 197
#define TK_INTO 198
#define TK_INSERT 198
#define TK_VALUES 199
#define TK_INTO 199
#define TK_FILE 200
#define TK_VALUES 200
#define TK_FILE 201
#define TK_SPACE 300
#define TK_SPACE 300
...
...
src/inc/ttype.h
浏览文件 @
ce0b391f
...
@@ -289,6 +289,7 @@ void* getDataMax(int32_t type);
...
@@ -289,6 +289,7 @@ void* getDataMax(int32_t type);
int32_t
tStrToInteger
(
const
char
*
z
,
int16_t
type
,
int32_t
n
,
int64_t
*
value
,
bool
issigned
);
int32_t
tStrToInteger
(
const
char
*
z
,
int16_t
type
,
int32_t
n
,
int64_t
*
value
,
bool
issigned
);
#define SET_DOUBLE_NULL(v) (*(uint64_t *)(v) = TSDB_DATA_DOUBLE_NULL)
#define SET_DOUBLE_NULL(v) (*(uint64_t *)(v) = TSDB_DATA_DOUBLE_NULL)
#define SET_BIGINT_NULL(v) (*(int64_t *)(v) = TSDB_DATA_BIGINT_NULL)
#ifdef __cplusplus
#ifdef __cplusplus
}
}
...
...
src/kit/shell/src/shellEngine.c
浏览文件 @
ce0b391f
...
@@ -244,11 +244,22 @@ void shellRunCommandOnServer(TAOS *con, char command[]) {
...
@@ -244,11 +244,22 @@ void shellRunCommandOnServer(TAOS *con, char command[]) {
int64_t
st
,
et
;
int64_t
st
,
et
;
wordexp_t
full_path
;
wordexp_t
full_path
;
char
*
sptr
=
NULL
;
char
*
sptr
=
NULL
;
char
*
tmp
=
NULL
;
char
*
cptr
=
NULL
;
char
*
cptr
=
NULL
;
char
*
fname
=
NULL
;
char
*
fname
=
NULL
;
bool
printMode
=
false
;
bool
printMode
=
false
;
if
((
sptr
=
tstrstr
(
command
,
">>"
,
true
))
!=
NULL
)
{
sptr
=
command
;
while
((
sptr
=
tstrstr
(
sptr
,
">>"
,
true
))
!=
NULL
)
{
// find the last ">>" if any
tmp
=
sptr
;
sptr
+=
2
;
}
sptr
=
tmp
;
if
(
sptr
!=
NULL
)
{
if
(
regex_match
(
sptr
+
2
,
"^
\\
s*[0-9]+
\\
s*[
\\
>|
\\
<|
\\
<=|
\\
>=|=|!=]
\\
s*.*;
\\
s*$"
,
REG_EXTENDED
|
REG_ICASE
)
==
0
)
{
cptr
=
tstrstr
(
command
,
";"
,
true
);
cptr
=
tstrstr
(
command
,
";"
,
true
);
if
(
cptr
!=
NULL
)
{
if
(
cptr
!=
NULL
)
{
*
cptr
=
'\0'
;
*
cptr
=
'\0'
;
...
@@ -261,6 +272,7 @@ void shellRunCommandOnServer(TAOS *con, char command[]) {
...
@@ -261,6 +272,7 @@ void shellRunCommandOnServer(TAOS *con, char command[]) {
*
sptr
=
'\0'
;
*
sptr
=
'\0'
;
fname
=
full_path
.
we_wordv
[
0
];
fname
=
full_path
.
we_wordv
[
0
];
}
}
}
if
((
sptr
=
tstrstr
(
command
,
"
\\
G"
,
true
))
!=
NULL
)
{
if
((
sptr
=
tstrstr
(
command
,
"
\\
G"
,
true
))
!=
NULL
)
{
cptr
=
tstrstr
(
command
,
";"
,
true
);
cptr
=
tstrstr
(
command
,
";"
,
true
);
...
...
src/query/inc/qFilter.h
浏览文件 @
ce0b391f
...
@@ -39,10 +39,11 @@ extern "C" {
...
@@ -39,10 +39,11 @@ extern "C" {
enum
{
enum
{
FLD_TYPE_COLUMN
=
1
,
FLD_TYPE_COLUMN
=
1
,
FLD_TYPE_VALUE
=
2
,
FLD_TYPE_VALUE
=
2
,
FLD_TYPE_MAX
=
3
,
FLD_TYPE_EXPR
=
3
,
FLD_DESC_NO_FREE
=
4
,
FLD_TYPE_MAX
=
4
,
FLD_DATA_NO_FREE
=
8
,
FLD_DESC_NO_FREE
=
16
,
FLD_DATA_IS_HASH
=
16
,
FLD_DATA_NO_FREE
=
32
,
FLD_DATA_IS_HASH
=
64
,
};
};
enum
{
enum
{
...
@@ -182,6 +183,7 @@ typedef struct SFilterGroupCtx {
...
@@ -182,6 +183,7 @@ typedef struct SFilterGroupCtx {
uint32_t
colNum
;
uint32_t
colNum
;
uint32_t
*
colIdx
;
uint32_t
*
colIdx
;
SFilterColInfo
*
colInfo
;
SFilterColInfo
*
colInfo
;
bool
hasExpr
;
}
SFilterGroupCtx
;
}
SFilterGroupCtx
;
typedef
struct
SFilterColCtx
{
typedef
struct
SFilterColCtx
{
...
@@ -206,6 +208,8 @@ typedef struct SFilterComUnit {
...
@@ -206,6 +208,8 @@ typedef struct SFilterComUnit {
void
*
colData
;
void
*
colData
;
void
*
valData
;
void
*
valData
;
void
*
valData2
;
void
*
valData2
;
void
*
expr
;
void
*
exprData
;
uint16_t
colId
;
uint16_t
colId
;
uint16_t
dataSize
;
uint16_t
dataSize
;
uint8_t
dataType
;
uint8_t
dataType
;
...
@@ -289,7 +293,10 @@ typedef struct SFilterInfo {
...
@@ -289,7 +293,10 @@ typedef struct SFilterInfo {
#define FILTER_GET_VAL_FIELD_TYPE(fi) (((tVariant *)((fi)->desc))->nType)
#define FILTER_GET_VAL_FIELD_TYPE(fi) (((tVariant *)((fi)->desc))->nType)
#define FILTER_GET_VAL_FIELD_DATA(fi) ((char *)(fi)->data)
#define FILTER_GET_VAL_FIELD_DATA(fi) ((char *)(fi)->data)
#define FILTER_GET_JSON_VAL_FIELD_DATA(fi) ((char *)(fi)->desc)
#define FILTER_GET_JSON_VAL_FIELD_DATA(fi) ((char *)(fi)->desc)
#define FILTER_GET_TYPE(fl) ((fl) & FLD_TYPE_MAX)
#define FILTER_GET_TYPE(fl) ((fl) & 0xF)
#define FILTER_GET_FIELD_DESC(fi) ((fi)->desc)
#define FILTER_GET_EXPR_TYPE(i, id) (((tExprNode*)(FILTER_GET_FIELD_DESC(FILTER_GET_FIELD(i, id))))->resultType)
#define FILTER_GET_EXPR_SIZE(i, id) (((tExprNode*)(FILTER_GET_FIELD_DESC(FILTER_GET_FIELD(i, id))))->resultBytes)
#define FILTER_GROUP_UNIT(i, g, uid) ((i)->units + (g)->unitIdxs[uid])
#define FILTER_GROUP_UNIT(i, g, uid) ((i)->units + (g)->unitIdxs[uid])
#define FILTER_UNIT_LEFT_FIELD(i, u) FILTER_GET_FIELD(i, (u)->left)
#define FILTER_UNIT_LEFT_FIELD(i, u) FILTER_GET_FIELD(i, (u)->left)
...
...
src/query/inc/sql.y
浏览文件 @
ce0b391f
...
@@ -13,7 +13,7 @@
...
@@ -13,7 +13,7 @@
%right NOT.
%right NOT.
%left EQ NE ISNULL NOTNULL IS LIKE MATCH NMATCH CONTAINS GLOB BETWEEN IN.
%left EQ NE ISNULL NOTNULL IS LIKE MATCH NMATCH CONTAINS GLOB BETWEEN IN.
%left GT GE LT LE.
%left GT GE LT LE.
%left BITAND BITOR LSHIFT RSHIFT.
%left BITAND BITOR
BITXOR
LSHIFT RSHIFT.
%left PLUS MINUS.
%left PLUS MINUS.
%left DIVIDE TIMES.
%left DIVIDE TIMES.
%left STAR SLASH REM.
%left STAR SLASH REM.
...
@@ -787,6 +787,11 @@ expr(A) ::= expr(X) STAR expr(Y). {A = tSqlExprCreate(X, Y, TK_STAR); }
...
@@ -787,6 +787,11 @@ expr(A) ::= expr(X) STAR expr(Y). {A = tSqlExprCreate(X, Y, TK_STAR); }
expr(A) ::= expr(X) SLASH expr(Y). {A = tSqlExprCreate(X, Y, TK_DIVIDE);}
expr(A) ::= expr(X) SLASH expr(Y). {A = tSqlExprCreate(X, Y, TK_DIVIDE);}
expr(A) ::= expr(X) REM expr(Y). {A = tSqlExprCreate(X, Y, TK_REM); }
expr(A) ::= expr(X) REM expr(Y). {A = tSqlExprCreate(X, Y, TK_REM); }
expr(A) ::= expr(X) BITAND expr(Y). {A = tSqlExprCreate(X, Y, TK_BITAND);}
expr(A) ::= expr(X) BITAND expr(Y). {A = tSqlExprCreate(X, Y, TK_BITAND);}
expr(A) ::= expr(X) BITOR expr(Y). {A = tSqlExprCreate(X, Y, TK_BITOR); }
expr(A) ::= expr(X) BITXOR expr(Y). {A = tSqlExprCreate(X, Y, TK_BITXOR);}
expr(A) ::= BITNOT expr(X). {A = tSqlExprCreate(X, NULL, TK_BITNOT);}
expr(A) ::= expr(X) LSHIFT expr(Y). {A = tSqlExprCreate(X, Y, TK_LSHIFT);}
expr(A) ::= expr(X) RSHIFT expr(Y). {A = tSqlExprCreate(X, Y, TK_RSHIFT);}
// like expression
// like expression
expr(A) ::= expr(X) LIKE expr(Y). {A = tSqlExprCreate(X, Y, TK_LIKE); }
expr(A) ::= expr(X) LIKE expr(Y). {A = tSqlExprCreate(X, Y, TK_LIKE); }
...
...
src/query/src/qExecutor.c
浏览文件 @
ce0b391f
...
@@ -3155,6 +3155,10 @@ void doSetFilterColumnInfo(SSingleColumnFilterInfo* pFilterInfo, int32_t numOfFi
...
@@ -3155,6 +3155,10 @@ void doSetFilterColumnInfo(SSingleColumnFilterInfo* pFilterInfo, int32_t numOfFi
FORCE_INLINE
int32_t
getColumnDataFromId
(
void
*
param
,
int32_t
id
,
void
**
data
)
{
FORCE_INLINE
int32_t
getColumnDataFromId
(
void
*
param
,
int32_t
id
,
void
**
data
)
{
int32_t
numOfCols
=
((
SColumnDataParam
*
)
param
)
->
numOfCols
;
int32_t
numOfCols
=
((
SColumnDataParam
*
)
param
)
->
numOfCols
;
SArray
*
pDataBlock
=
((
SColumnDataParam
*
)
param
)
->
pDataBlock
;
SArray
*
pDataBlock
=
((
SColumnDataParam
*
)
param
)
->
pDataBlock
;
if
(
id
==
INT32_MAX
)
{
*
data
=
pDataBlock
;
return
TSDB_CODE_SUCCESS
;
}
for
(
int32_t
j
=
0
;
j
<
numOfCols
;
++
j
)
{
for
(
int32_t
j
=
0
;
j
<
numOfCols
;
++
j
)
{
SColumnInfoData
*
pColInfo
=
taosArrayGet
(
pDataBlock
,
j
);
SColumnInfoData
*
pColInfo
=
taosArrayGet
(
pDataBlock
,
j
);
...
...
src/query/src/qFilter.c
浏览文件 @
ce0b391f
...
@@ -54,11 +54,16 @@ static FORCE_INLINE int32_t filterFieldValDescCompare(const void *desc1, const v
...
@@ -54,11 +54,16 @@ static FORCE_INLINE int32_t filterFieldValDescCompare(const void *desc1, const v
return
tVariantCompare
(
val1
,
val2
);
return
tVariantCompare
(
val1
,
val2
);
}
}
static
FORCE_INLINE
int32_t
filterExprCompare
(
const
void
*
desc1
,
const
void
*
desc2
)
{
return
-
1
;
}
filter_desc_compare_func
gDescCompare
[
FLD_TYPE_MAX
]
=
{
filter_desc_compare_func
gDescCompare
[
FLD_TYPE_MAX
]
=
{
NULL
,
NULL
,
filterFieldColDescCompare
,
filterFieldColDescCompare
,
filterFieldValDescCompare
filterFieldValDescCompare
,
filterExprCompare
};
};
bool
filterRangeCompGi
(
const
void
*
minv
,
const
void
*
maxv
,
const
void
*
minr
,
const
void
*
maxr
,
__compar_fn_t
cfunc
)
{
bool
filterRangeCompGi
(
const
void
*
minv
,
const
void
*
maxv
,
const
void
*
minr
,
const
void
*
maxr
,
__compar_fn_t
cfunc
)
{
...
@@ -833,7 +838,7 @@ int32_t filterAddField(SFilterInfo *info, void *desc, void **data, int32_t type,
...
@@ -833,7 +838,7 @@ int32_t filterAddField(SFilterInfo *info, void *desc, void **data, int32_t type,
info
->
fields
[
type
].
fields
[
idx
].
desc
=
desc
;
info
->
fields
[
type
].
fields
[
idx
].
desc
=
desc
;
info
->
fields
[
type
].
fields
[
idx
].
data
=
data
?
*
data
:
NULL
;
info
->
fields
[
type
].
fields
[
idx
].
data
=
data
?
*
data
:
NULL
;
if
(
type
==
FLD_TYPE_COLUMN
)
{
if
(
type
==
FLD_TYPE_COLUMN
||
type
==
FLD_TYPE_EXPR
)
{
FILTER_SET_FLAG
(
info
->
fields
[
type
].
fields
[
idx
].
flag
,
FLD_DATA_NO_FREE
);
FILTER_SET_FLAG
(
info
->
fields
[
type
].
fields
[
idx
].
flag
,
FLD_DATA_NO_FREE
);
}
}
...
@@ -873,7 +878,8 @@ static FORCE_INLINE int32_t filterAddColFieldFromField(SFilterInfo *info, SFilte
...
@@ -873,7 +878,8 @@ static FORCE_INLINE int32_t filterAddColFieldFromField(SFilterInfo *info, SFilte
int32_t
filterAddFieldFromNode
(
SFilterInfo
*
info
,
tExprNode
*
node
,
SFilterFieldId
*
fid
)
{
int32_t
filterAddFieldFromNode
(
SFilterInfo
*
info
,
tExprNode
*
node
,
SFilterFieldId
*
fid
)
{
CHK_LRET
(
node
==
NULL
,
TSDB_CODE_QRY_APP_ERROR
,
"empty node"
);
CHK_LRET
(
node
==
NULL
,
TSDB_CODE_QRY_APP_ERROR
,
"empty node"
);
CHK_RET
(
node
->
nodeType
!=
TSQL_NODE_COL
&&
node
->
nodeType
!=
TSQL_NODE_VALUE
,
TSDB_CODE_QRY_APP_ERROR
);
CHK_RET
(
node
->
nodeType
!=
TSQL_NODE_COL
&&
node
->
nodeType
!=
TSQL_NODE_VALUE
&&
node
->
nodeType
!=
TSQL_NODE_EXPR
,
TSDB_CODE_QRY_APP_ERROR
);
int32_t
type
;
int32_t
type
;
void
*
v
;
void
*
v
;
...
@@ -882,6 +888,9 @@ int32_t filterAddFieldFromNode(SFilterInfo *info, tExprNode *node, SFilterFieldI
...
@@ -882,6 +888,9 @@ int32_t filterAddFieldFromNode(SFilterInfo *info, tExprNode *node, SFilterFieldI
type
=
FLD_TYPE_COLUMN
;
type
=
FLD_TYPE_COLUMN
;
v
=
node
->
pSchema
;
v
=
node
->
pSchema
;
node
->
pSchema
=
NULL
;
node
->
pSchema
=
NULL
;
}
else
if
(
node
->
nodeType
==
TSQL_NODE_EXPR
)
{
type
=
FLD_TYPE_EXPR
;
v
=
node
;
}
else
{
}
else
{
type
=
FLD_TYPE_VALUE
;
type
=
FLD_TYPE_VALUE
;
v
=
node
->
pVal
;
v
=
node
->
pVal
;
...
@@ -933,9 +942,11 @@ int32_t filterAddUnit(SFilterInfo *info, uint8_t optr, SFilterFieldId *left, SFi
...
@@ -933,9 +942,11 @@ int32_t filterAddUnit(SFilterInfo *info, uint8_t optr, SFilterFieldId *left, SFi
}
}
SFilterField
*
col
=
FILTER_UNIT_LEFT_FIELD
(
info
,
u
);
SFilterField
*
col
=
FILTER_UNIT_LEFT_FIELD
(
info
,
u
);
assert
(
FILTER_GET_FLAG
(
col
->
flag
,
FLD_TYPE_COLUMN
));
if
(
FILTER_GET_TYPE
(
col
->
flag
)
==
FLD_TYPE_COLUMN
)
{
info
->
units
[
info
->
unitNum
].
compare
.
type
=
FILTER_GET_COL_FIELD_TYPE
(
col
);
info
->
units
[
info
->
unitNum
].
compare
.
type
=
FILTER_GET_COL_FIELD_TYPE
(
col
);
}
else
{
info
->
units
[
info
->
unitNum
].
compare
.
type
=
(
uint8_t
)
FILTER_GET_EXPR_TYPE
(
info
,
u
->
left
);
}
*
uidx
=
info
->
unitNum
;
*
uidx
=
info
->
unitNum
;
...
@@ -1188,7 +1199,7 @@ static int32_t filterDealJson(SFilterInfo *info, tExprNode* tree, tExprNode** pL
...
@@ -1188,7 +1199,7 @@ static int32_t filterDealJson(SFilterInfo *info, tExprNode* tree, tExprNode** pL
jsonKeyMd5
((
*
pLeft
)
->
_node
.
pRight
->
pVal
->
pz
,
(
*
pLeft
)
->
_node
.
pRight
->
pVal
->
nLen
,
keyMd5
);
jsonKeyMd5
((
*
pLeft
)
->
_node
.
pRight
->
pVal
->
pz
,
(
*
pLeft
)
->
_node
.
pRight
->
pVal
->
nLen
,
keyMd5
);
memcpy
(
schema
->
name
,
keyMd5
,
TSDB_MAX_JSON_KEY_MD5_LEN
);
memcpy
(
schema
->
name
,
keyMd5
,
TSDB_MAX_JSON_KEY_MD5_LEN
);
(
*
pLeft
)
=
(
*
pLeft
)
->
_node
.
pLeft
;
// -> operation use left as input
(
*
pLeft
)
=
(
*
pLeft
)
->
_node
.
pLeft
;
// -> operation use left as input
}
else
if
(((
*
pLeft
)
->
pSchema
->
type
==
TSDB_DATA_TYPE_JSON
)
&&
}
else
if
((
*
pLeft
)
->
nodeType
==
TSQL_NODE_COL
&&
(
(
*
pLeft
)
->
pSchema
->
type
==
TSDB_DATA_TYPE_JSON
)
&&
(
tree
->
_node
.
optr
==
TSDB_RELATION_ISNULL
||
tree
->
_node
.
optr
==
TSDB_RELATION_NOTNULL
)){
(
tree
->
_node
.
optr
==
TSDB_RELATION_ISNULL
||
tree
->
_node
.
optr
==
TSDB_RELATION_NOTNULL
)){
SSchema
*
schema
=
(
*
pLeft
)
->
pSchema
;
SSchema
*
schema
=
(
*
pLeft
)
->
pSchema
;
char
keyMd5
[
TSDB_MAX_JSON_KEY_MD5_LEN
]
=
{
0
};
char
keyMd5
[
TSDB_MAX_JSON_KEY_MD5_LEN
]
=
{
0
};
...
@@ -1212,7 +1223,16 @@ int32_t filterAddGroupUnitFromNode(SFilterInfo *info, tExprNode* tree, SArray *g
...
@@ -1212,7 +1223,16 @@ int32_t filterAddGroupUnitFromNode(SFilterInfo *info, tExprNode* tree, SArray *g
if
((
ret
=
filterDealJson
(
info
,
tree
,
&
pLeft
))
!=
TSDB_CODE_SUCCESS
)
return
ret
;
if
((
ret
=
filterDealJson
(
info
,
tree
,
&
pLeft
))
!=
TSDB_CODE_SUCCESS
)
return
ret
;
SFilterFieldId
left
=
{
0
},
right
=
{
0
};
SFilterFieldId
left
=
{
0
},
right
=
{
0
};
filterAddFieldFromNode
(
info
,
pLeft
,
&
left
);
filterAddFieldFromNode
(
info
,
pLeft
,
&
left
);
uint8_t
type
=
FILTER_GET_COL_FIELD_TYPE
(
FILTER_GET_FIELD
(
info
,
left
));
if
(
pLeft
->
nodeType
!=
TSQL_NODE_VALUE
&&
pLeft
->
nodeType
!=
TSQL_NODE_COL
)
{
tree
->
_node
.
pLeft
=
NULL
;
}
uint8_t
type
;
if
(
left
.
type
==
FLD_TYPE_EXPR
)
{
type
=
(
uint8_t
)
FILTER_GET_EXPR_TYPE
(
info
,
left
);
}
else
{
type
=
FILTER_GET_COL_FIELD_TYPE
(
FILTER_GET_FIELD
(
info
,
left
));
}
int32_t
len
=
0
;
int32_t
len
=
0
;
uint32_t
uidx
=
0
;
uint32_t
uidx
=
0
;
...
@@ -1576,6 +1596,9 @@ void filterDumpInfoToString(SFilterInfo *info, const char *msg, int32_t options)
...
@@ -1576,6 +1596,9 @@ void filterDumpInfoToString(SFilterInfo *info, const char *msg, int32_t options)
char
str
[
512
]
=
{
0
};
char
str
[
512
]
=
{
0
};
SFilterField
*
left
=
FILTER_UNIT_LEFT_FIELD
(
info
,
unit
);
SFilterField
*
left
=
FILTER_UNIT_LEFT_FIELD
(
info
,
unit
);
if
(
FILTER_GET_TYPE
(
left
->
flag
)
==
FLD_TYPE_EXPR
)
{
continue
;
}
SSchema
*
sch
=
left
->
desc
;
SSchema
*
sch
=
left
->
desc
;
if
(
unit
->
compare
.
optr
>=
TSDB_RELATION_INVALID
&&
unit
->
compare
.
optr
<=
TSDB_RELATION_CONTAINS
){
if
(
unit
->
compare
.
optr
>=
TSDB_RELATION_INVALID
&&
unit
->
compare
.
optr
<=
TSDB_RELATION_CONTAINS
){
len
=
sprintf
(
str
,
"UNIT[%d] => [%d][%s] %s ["
,
i
,
sch
->
colId
,
sch
->
name
,
gOptrStr
[
unit
->
compare
.
optr
].
str
);
len
=
sprintf
(
str
,
"UNIT[%d] => [%d][%s] %s ["
,
i
,
sch
->
colId
,
sch
->
name
,
gOptrStr
[
unit
->
compare
.
optr
].
str
);
...
@@ -1751,6 +1774,9 @@ void filterFreeField(SFilterField* field, int32_t type) {
...
@@ -1751,6 +1774,9 @@ void filterFreeField(SFilterField* field, int32_t type) {
if
(
!
FILTER_GET_FLAG
(
field
->
flag
,
FLD_DESC_NO_FREE
))
{
if
(
!
FILTER_GET_FLAG
(
field
->
flag
,
FLD_DESC_NO_FREE
))
{
if
(
type
==
FLD_TYPE_VALUE
)
{
if
(
type
==
FLD_TYPE_VALUE
)
{
tVariantDestroy
(
field
->
desc
);
tVariantDestroy
(
field
->
desc
);
}
else
if
(
type
==
FLD_TYPE_EXPR
)
{
tExprTreeDestroy
(
field
->
desc
,
NULL
);
field
->
desc
=
NULL
;
}
}
tfree
(
field
->
desc
);
tfree
(
field
->
desc
);
...
@@ -2100,20 +2126,30 @@ _return:
...
@@ -2100,20 +2126,30 @@ _return:
int32_t
filterMergeGroupUnits
(
SFilterInfo
*
info
,
SFilterGroupCtx
**
gRes
,
int32_t
*
gResNum
)
{
int32_t
filterMergeGroupUnits
(
SFilterInfo
*
info
,
SFilterGroupCtx
**
gRes
,
int32_t
*
gResNum
)
{
bool
empty
=
false
;
bool
empty
=
false
;
if
(
info
->
fields
[
FLD_TYPE_COLUMN
].
num
==
0
)
{
return
TSDB_CODE_SUCCESS
;
}
uint32_t
*
colIdx
=
malloc
(
info
->
fields
[
FLD_TYPE_COLUMN
].
num
*
sizeof
(
uint32_t
));
uint32_t
*
colIdx
=
malloc
(
info
->
fields
[
FLD_TYPE_COLUMN
].
num
*
sizeof
(
uint32_t
));
uint32_t
colIdxi
=
0
;
uint32_t
colIdxi
=
0
;
uint32_t
gResIdx
=
0
;
uint32_t
gResIdx
=
0
;
bool
hasExpr
=
false
;
for
(
uint32_t
i
=
0
;
i
<
info
->
groupNum
;
++
i
)
{
for
(
uint32_t
i
=
0
;
i
<
info
->
groupNum
;
++
i
)
{
SFilterGroup
*
g
=
info
->
groups
+
i
;
SFilterGroup
*
g
=
info
->
groups
+
i
;
gRes
[
gResIdx
]
=
calloc
(
1
,
sizeof
(
SFilterGroupCtx
));
gRes
[
gResIdx
]
=
calloc
(
1
,
sizeof
(
SFilterGroupCtx
));
gRes
[
gResIdx
]
->
colInfo
=
calloc
(
info
->
fields
[
FLD_TYPE_COLUMN
].
num
,
sizeof
(
SFilterColInfo
));
gRes
[
gResIdx
]
->
colInfo
=
calloc
(
info
->
fields
[
FLD_TYPE_COLUMN
].
num
,
sizeof
(
SFilterColInfo
));
gRes
[
gResIdx
]
->
hasExpr
=
false
;
colIdxi
=
0
;
colIdxi
=
0
;
empty
=
false
;
empty
=
false
;
for
(
uint32_t
j
=
0
;
j
<
g
->
unitNum
;
++
j
)
{
for
(
uint32_t
j
=
0
;
j
<
g
->
unitNum
;
++
j
)
{
SFilterUnit
*
u
=
FILTER_GROUP_UNIT
(
info
,
g
,
j
);
SFilterUnit
*
u
=
FILTER_GROUP_UNIT
(
info
,
g
,
j
);
if
(
u
->
left
.
type
==
FLD_TYPE_EXPR
)
{
gRes
[
gResIdx
]
->
hasExpr
=
true
;
hasExpr
=
true
;
continue
;
}
uint32_t
cidx
=
FILTER_UNIT_COL_IDX
(
u
);
uint32_t
cidx
=
FILTER_UNIT_COL_IDX
(
u
);
if
(
gRes
[
gResIdx
]
->
colInfo
[
cidx
].
info
==
NULL
)
{
if
(
gRes
[
gResIdx
]
->
colInfo
[
cidx
].
info
==
NULL
)
{
...
@@ -2160,6 +2196,9 @@ int32_t filterMergeGroupUnits(SFilterInfo *info, SFilterGroupCtx** gRes, int32_t
...
@@ -2160,6 +2196,9 @@ int32_t filterMergeGroupUnits(SFilterInfo *info, SFilterGroupCtx** gRes, int32_t
++
gResIdx
;
++
gResIdx
;
}
}
if
(
hasExpr
)
{
FILTER_CLR_FLAG
(
info
->
status
,
FI_STATUS_REWRITE
);
}
tfree
(
colIdx
);
tfree
(
colIdx
);
*
gResNum
=
gResIdx
;
*
gResNum
=
gResIdx
;
...
@@ -2174,6 +2213,10 @@ int32_t filterMergeGroupUnits(SFilterInfo *info, SFilterGroupCtx** gRes, int32_t
...
@@ -2174,6 +2213,10 @@ int32_t filterMergeGroupUnits(SFilterInfo *info, SFilterGroupCtx** gRes, int32_t
void
filterCheckColConflict
(
SFilterGroupCtx
*
gRes1
,
SFilterGroupCtx
*
gRes2
,
bool
*
conflict
)
{
void
filterCheckColConflict
(
SFilterGroupCtx
*
gRes1
,
SFilterGroupCtx
*
gRes2
,
bool
*
conflict
)
{
uint32_t
idx1
=
0
,
idx2
=
0
,
m
=
0
,
n
=
0
;
uint32_t
idx1
=
0
,
idx2
=
0
,
m
=
0
,
n
=
0
;
bool
equal
=
false
;
bool
equal
=
false
;
if
(
gRes1
->
hasExpr
||
gRes2
->
hasExpr
)
{
*
conflict
=
true
;
return
;
}
for
(;
m
<
gRes1
->
colNum
;
++
m
)
{
for
(;
m
<
gRes1
->
colNum
;
++
m
)
{
idx1
=
gRes1
->
colIdx
[
m
];
idx1
=
gRes1
->
colIdx
[
m
];
...
@@ -2646,7 +2689,12 @@ int32_t filterGenerateComInfo(SFilterInfo *info) {
...
@@ -2646,7 +2689,12 @@ int32_t filterGenerateComInfo(SFilterInfo *info) {
info
->
cunits
[
i
].
rfunc
=
filterGetRangeCompFuncFromOptrs
(
unit
->
compare
.
optr
,
unit
->
compare
.
optr2
);
info
->
cunits
[
i
].
rfunc
=
filterGetRangeCompFuncFromOptrs
(
unit
->
compare
.
optr
,
unit
->
compare
.
optr2
);
info
->
cunits
[
i
].
optr
=
FILTER_UNIT_OPTR
(
unit
);
info
->
cunits
[
i
].
optr
=
FILTER_UNIT_OPTR
(
unit
);
info
->
cunits
[
i
].
colData
=
NULL
;
info
->
cunits
[
i
].
colData
=
NULL
;
info
->
cunits
[
i
].
expr
=
NULL
;
if
(
unit
->
left
.
type
==
FLD_TYPE_COLUMN
)
{
info
->
cunits
[
i
].
colId
=
FILTER_UNIT_COL_ID
(
info
,
unit
);
info
->
cunits
[
i
].
colId
=
FILTER_UNIT_COL_ID
(
info
,
unit
);
}
else
if
(
unit
->
left
.
type
==
FLD_TYPE_EXPR
)
{
info
->
cunits
[
i
].
expr
=
FILTER_GET_FIELD_DESC
(
FILTER_GET_FIELD
(
info
,
unit
->
left
));
}
if
(
unit
->
right
.
type
==
FLD_TYPE_VALUE
)
{
if
(
unit
->
right
.
type
==
FLD_TYPE_VALUE
)
{
if
(
FILTER_UNIT_DATA_TYPE
(
unit
)
==
TSDB_DATA_TYPE_JSON
){
// json value is tVariant
if
(
FILTER_UNIT_DATA_TYPE
(
unit
)
==
TSDB_DATA_TYPE_JSON
){
// json value is tVariant
...
@@ -2663,7 +2711,11 @@ int32_t filterGenerateComInfo(SFilterInfo *info) {
...
@@ -2663,7 +2711,11 @@ int32_t filterGenerateComInfo(SFilterInfo *info) {
info
->
cunits
[
i
].
valData2
=
info
->
cunits
[
i
].
valData
;
info
->
cunits
[
i
].
valData2
=
info
->
cunits
[
i
].
valData
;
}
}
if
(
unit
->
left
.
type
==
FLD_TYPE_COLUMN
)
{
info
->
cunits
[
i
].
dataSize
=
FILTER_UNIT_COL_SIZE
(
info
,
unit
);
info
->
cunits
[
i
].
dataSize
=
FILTER_UNIT_COL_SIZE
(
info
,
unit
);
}
else
{
info
->
cunits
[
i
].
dataSize
=
FILTER_GET_EXPR_SIZE
(
info
,
unit
->
left
);
}
info
->
cunits
[
i
].
dataType
=
FILTER_UNIT_DATA_TYPE
(
unit
);
info
->
cunits
[
i
].
dataType
=
FILTER_UNIT_DATA_TYPE
(
unit
);
}
}
...
@@ -2673,8 +2725,14 @@ int32_t filterGenerateComInfo(SFilterInfo *info) {
...
@@ -2673,8 +2725,14 @@ int32_t filterGenerateComInfo(SFilterInfo *info) {
int32_t
filterUpdateComUnits
(
SFilterInfo
*
info
)
{
int32_t
filterUpdateComUnits
(
SFilterInfo
*
info
)
{
for
(
uint32_t
i
=
0
;
i
<
info
->
unitNum
;
++
i
)
{
for
(
uint32_t
i
=
0
;
i
<
info
->
unitNum
;
++
i
)
{
SFilterUnit
*
unit
=
&
info
->
units
[
i
];
SFilterUnit
*
unit
=
&
info
->
units
[
i
];
if
(
unit
->
left
.
type
==
FLD_TYPE_EXPR
)
{
SFilterField
*
t
=
FILTER_UNIT_LEFT_FIELD
(
info
,
unit
);
info
->
cunits
[
i
].
colData
=
NULL
;
info
->
cunits
[
i
].
exprData
=
t
->
data
;
}
else
{
info
->
cunits
[
i
].
colData
=
FILTER_UNIT_COL_DATA
(
info
,
unit
,
0
);
info
->
cunits
[
i
].
colData
=
FILTER_UNIT_COL_DATA
(
info
,
unit
,
0
);
info
->
cunits
[
i
].
exprData
=
NULL
;
}
}
}
return
TSDB_CODE_SUCCESS
;
return
TSDB_CODE_SUCCESS
;
...
@@ -2923,6 +2981,11 @@ bool filterExecuteBasedOnStatisImpl(void *pinfo, int32_t numOfRows, int8_t** p,
...
@@ -2923,6 +2981,11 @@ bool filterExecuteBasedOnStatisImpl(void *pinfo, int32_t numOfRows, int8_t** p,
int32_t
filterExecuteBasedOnStatis
(
SFilterInfo
*
info
,
int32_t
numOfRows
,
int8_t
**
p
,
SDataStatis
*
statis
,
int16_t
numOfCols
,
bool
*
all
)
{
int32_t
filterExecuteBasedOnStatis
(
SFilterInfo
*
info
,
int32_t
numOfRows
,
int8_t
**
p
,
SDataStatis
*
statis
,
int16_t
numOfCols
,
bool
*
all
)
{
for
(
uint32_t
i
=
0
;
i
<
info
->
unitNum
;
++
i
)
{
if
(
info
->
cunits
[
i
].
expr
)
{
return
1
;
}
}
if
(
statis
&&
numOfRows
>=
FILTER_RM_UNIT_MIN_ROWS
)
{
if
(
statis
&&
numOfRows
>=
FILTER_RM_UNIT_MIN_ROWS
)
{
info
->
blkFlag
=
0
;
info
->
blkFlag
=
0
;
...
@@ -2953,6 +3016,20 @@ _return:
...
@@ -2953,6 +3016,20 @@ _return:
return
TSDB_CODE_SUCCESS
;
return
TSDB_CODE_SUCCESS
;
}
}
char
*
getExprColumnData
(
void
*
param
,
const
char
*
name
,
int32_t
colId
)
{
void
*
data
=
NULL
;
getColumnDataFromId
(
param
,
colId
,
&
data
);
return
(
char
*
)
data
;
}
void
*
filterExprTraverse
(
SFilterInfo
*
info
,
int32_t
numOfRows
,
int16_t
numOfCols
)
{
tExprOperandInfo
output
;
output
.
data
=
malloc
(
sizeof
(
int64_t
)
*
numOfRows
);
SSDataBlock
*
pBlock
=
(
SSDataBlock
*
)
info
->
cunits
[
0
].
exprData
;
SColumnDataParam
param
=
{.
numOfCols
=
numOfCols
,
.
pDataBlock
=
(
SArray
*
)
pBlock
};
exprTreeNodeTraverse
(
info
->
cunits
[
0
].
expr
,
numOfRows
,
&
output
,
&
param
,
TSDB_ORDER_ASC
,
getExprColumnData
);
return
output
.
data
;
}
static
FORCE_INLINE
bool
filterExecuteImplAll
(
void
*
info
,
int32_t
numOfRows
,
int8_t
**
p
,
SDataStatis
*
statis
,
int16_t
numOfCols
)
{
static
FORCE_INLINE
bool
filterExecuteImplAll
(
void
*
info
,
int32_t
numOfRows
,
int8_t
**
p
,
SDataStatis
*
statis
,
int16_t
numOfCols
)
{
return
true
;
return
true
;
...
@@ -2963,18 +3040,26 @@ static FORCE_INLINE bool filterExecuteImplEmpty(void *info, int32_t numOfRows, i
...
@@ -2963,18 +3040,26 @@ static FORCE_INLINE bool filterExecuteImplEmpty(void *info, int32_t numOfRows, i
static
FORCE_INLINE
bool
filterExecuteImplIsNull
(
void
*
pinfo
,
int32_t
numOfRows
,
int8_t
**
p
,
SDataStatis
*
statis
,
int16_t
numOfCols
)
{
static
FORCE_INLINE
bool
filterExecuteImplIsNull
(
void
*
pinfo
,
int32_t
numOfRows
,
int8_t
**
p
,
SDataStatis
*
statis
,
int16_t
numOfCols
)
{
SFilterInfo
*
info
=
(
SFilterInfo
*
)
pinfo
;
SFilterInfo
*
info
=
(
SFilterInfo
*
)
pinfo
;
bool
all
=
true
;
bool
all
=
true
;
char
*
exprData
=
NULL
;
uint32_t
uidx
=
info
->
groups
[
0
].
unitIdxs
[
0
];
void
*
colData
=
NULL
;
if
(
filterExecuteBasedOnStatis
(
info
,
numOfRows
,
p
,
statis
,
numOfCols
,
&
all
)
==
0
)
{
if
(
filterExecuteBasedOnStatis
(
info
,
numOfRows
,
p
,
statis
,
numOfCols
,
&
all
)
==
0
)
{
return
all
;
return
all
;
}
}
if
(
info
->
cunits
[
0
].
expr
)
{
exprData
=
filterExprTraverse
(
info
,
numOfRows
,
numOfCols
);
}
else
{
exprData
=
info
->
cunits
[
uidx
].
colData
;
}
if
(
*
p
==
NULL
)
{
if
(
*
p
==
NULL
)
{
*
p
=
calloc
(
numOfRows
,
sizeof
(
int8_t
));
*
p
=
calloc
(
numOfRows
,
sizeof
(
int8_t
));
}
}
for
(
int32_t
i
=
0
;
i
<
numOfRows
;
++
i
)
{
for
(
int32_t
i
=
0
;
i
<
numOfRows
;
++
i
)
{
uint32_t
uidx
=
info
->
groups
[
0
].
unitIdxs
[
0
];
colData
=
(
char
*
)
exprData
+
info
->
cunits
[
uidx
].
dataSize
*
i
;
void
*
colData
=
(
char
*
)
info
->
cunits
[
uidx
].
colData
+
info
->
cunits
[
uidx
].
dataSize
*
i
;
if
(
info
->
cunits
[
uidx
].
dataType
==
TSDB_DATA_TYPE_JSON
){
if
(
info
->
cunits
[
uidx
].
dataType
==
TSDB_DATA_TYPE_JSON
){
if
(
!
colData
){
// for json->'key' is null
if
(
!
colData
){
// for json->'key' is null
(
*
p
)[
i
]
=
1
;
(
*
p
)[
i
]
=
1
;
...
@@ -2992,23 +3077,35 @@ static FORCE_INLINE bool filterExecuteImplIsNull(void *pinfo, int32_t numOfRows,
...
@@ -2992,23 +3077,35 @@ static FORCE_INLINE bool filterExecuteImplIsNull(void *pinfo, int32_t numOfRows,
}
}
}
}
if
(
info
->
cunits
[
0
].
expr
)
{
tfree
(
exprData
);
}
return
all
;
return
all
;
}
}
static
FORCE_INLINE
bool
filterExecuteImplNotNull
(
void
*
pinfo
,
int32_t
numOfRows
,
int8_t
**
p
,
SDataStatis
*
statis
,
int16_t
numOfCols
)
{
static
FORCE_INLINE
bool
filterExecuteImplNotNull
(
void
*
pinfo
,
int32_t
numOfRows
,
int8_t
**
p
,
SDataStatis
*
statis
,
int16_t
numOfCols
)
{
SFilterInfo
*
info
=
(
SFilterInfo
*
)
pinfo
;
SFilterInfo
*
info
=
(
SFilterInfo
*
)
pinfo
;
bool
all
=
true
;
bool
all
=
true
;
char
*
exprData
=
NULL
;
uint32_t
uidx
=
info
->
groups
[
0
].
unitIdxs
[
0
];
void
*
colData
=
NULL
;
if
(
filterExecuteBasedOnStatis
(
info
,
numOfRows
,
p
,
statis
,
numOfCols
,
&
all
)
==
0
)
{
if
(
filterExecuteBasedOnStatis
(
info
,
numOfRows
,
p
,
statis
,
numOfCols
,
&
all
)
==
0
)
{
return
all
;
return
all
;
}
}
if
(
info
->
cunits
[
0
].
expr
)
{
exprData
=
filterExprTraverse
(
info
,
numOfRows
,
numOfCols
);
}
else
{
exprData
=
info
->
cunits
[
uidx
].
colData
;
}
if
(
*
p
==
NULL
)
{
if
(
*
p
==
NULL
)
{
*
p
=
calloc
(
numOfRows
,
sizeof
(
int8_t
));
*
p
=
calloc
(
numOfRows
,
sizeof
(
int8_t
));
}
}
for
(
int32_t
i
=
0
;
i
<
numOfRows
;
++
i
)
{
for
(
int32_t
i
=
0
;
i
<
numOfRows
;
++
i
)
{
uint32_t
uidx
=
info
->
groups
[
0
].
unitIdxs
[
0
];
colData
=
(
char
*
)
exprData
+
info
->
cunits
[
uidx
].
dataSize
*
i
;
void
*
colData
=
(
char
*
)
info
->
cunits
[
uidx
].
colData
+
info
->
cunits
[
uidx
].
dataSize
*
i
;
if
(
info
->
cunits
[
uidx
].
dataType
==
TSDB_DATA_TYPE_JSON
){
if
(
info
->
cunits
[
uidx
].
dataType
==
TSDB_DATA_TYPE_JSON
){
if
(
!
colData
)
{
// for json->'key' is not null
if
(
!
colData
)
{
// for json->'key' is not null
...
@@ -3028,6 +3125,10 @@ static FORCE_INLINE bool filterExecuteImplNotNull(void *pinfo, int32_t numOfRows
...
@@ -3028,6 +3125,10 @@ static FORCE_INLINE bool filterExecuteImplNotNull(void *pinfo, int32_t numOfRows
}
}
}
}
if
(
info
->
cunits
[
0
].
expr
)
{
tfree
(
exprData
);
}
return
all
;
return
all
;
}
}
...
@@ -3081,11 +3182,16 @@ bool filterExecuteImplRange(void *pinfo, int32_t numOfRows, int8_t** p, SDataSta
...
@@ -3081,11 +3182,16 @@ bool filterExecuteImplRange(void *pinfo, int32_t numOfRows, int8_t** p, SDataSta
void
*
valData
=
info
->
cunits
[
0
].
valData
;
void
*
valData
=
info
->
cunits
[
0
].
valData
;
void
*
valData2
=
info
->
cunits
[
0
].
valData2
;
void
*
valData2
=
info
->
cunits
[
0
].
valData2
;
__compar_fn_t
func
=
gDataCompare
[
info
->
cunits
[
0
].
func
];
__compar_fn_t
func
=
gDataCompare
[
info
->
cunits
[
0
].
func
];
char
*
exprData
=
NULL
;
if
(
filterExecuteBasedOnStatis
(
info
,
numOfRows
,
p
,
statis
,
numOfCols
,
&
all
)
==
0
)
{
if
(
filterExecuteBasedOnStatis
(
info
,
numOfRows
,
p
,
statis
,
numOfCols
,
&
all
)
==
0
)
{
return
all
;
return
all
;
}
}
if
(
info
->
cunits
[
0
].
expr
)
{
exprData
=
colData
=
filterExprTraverse
(
info
,
numOfRows
,
numOfCols
);
}
if
(
*
p
==
NULL
)
{
if
(
*
p
==
NULL
)
{
*
p
=
calloc
(
numOfRows
,
sizeof
(
int8_t
));
*
p
=
calloc
(
numOfRows
,
sizeof
(
int8_t
));
}
}
...
@@ -3105,6 +3211,9 @@ bool filterExecuteImplRange(void *pinfo, int32_t numOfRows, int8_t** p, SDataSta
...
@@ -3105,6 +3211,9 @@ bool filterExecuteImplRange(void *pinfo, int32_t numOfRows, int8_t** p, SDataSta
colData
+=
dataSize
;
colData
+=
dataSize
;
}
}
if
(
info
->
cunits
[
0
].
expr
)
{
tfree
(
exprData
);
}
return
all
;
return
all
;
}
}
...
@@ -3112,18 +3221,26 @@ bool filterExecuteImplRange(void *pinfo, int32_t numOfRows, int8_t** p, SDataSta
...
@@ -3112,18 +3221,26 @@ bool filterExecuteImplRange(void *pinfo, int32_t numOfRows, int8_t** p, SDataSta
bool
filterExecuteImplMisc
(
void
*
pinfo
,
int32_t
numOfRows
,
int8_t
**
p
,
SDataStatis
*
statis
,
int16_t
numOfCols
)
{
bool
filterExecuteImplMisc
(
void
*
pinfo
,
int32_t
numOfRows
,
int8_t
**
p
,
SDataStatis
*
statis
,
int16_t
numOfCols
)
{
SFilterInfo
*
info
=
(
SFilterInfo
*
)
pinfo
;
SFilterInfo
*
info
=
(
SFilterInfo
*
)
pinfo
;
bool
all
=
true
;
bool
all
=
true
;
char
*
exprData
=
NULL
;
uint32_t
uidx
=
info
->
groups
[
0
].
unitIdxs
[
0
];
void
*
colData
=
NULL
;
if
(
filterExecuteBasedOnStatis
(
info
,
numOfRows
,
p
,
statis
,
numOfCols
,
&
all
)
==
0
)
{
if
(
filterExecuteBasedOnStatis
(
info
,
numOfRows
,
p
,
statis
,
numOfCols
,
&
all
)
==
0
)
{
return
all
;
return
all
;
}
}
if
(
info
->
cunits
[
0
].
expr
)
{
exprData
=
filterExprTraverse
(
info
,
numOfRows
,
numOfCols
);
}
else
{
exprData
=
info
->
cunits
[
uidx
].
colData
;
}
if
(
*
p
==
NULL
)
{
if
(
*
p
==
NULL
)
{
*
p
=
calloc
(
numOfRows
,
sizeof
(
int8_t
));
*
p
=
calloc
(
numOfRows
,
sizeof
(
int8_t
));
}
}
for
(
int32_t
i
=
0
;
i
<
numOfRows
;
++
i
)
{
for
(
int32_t
i
=
0
;
i
<
numOfRows
;
++
i
)
{
uint32_t
uidx
=
info
->
groups
[
0
].
unitIdxs
[
0
];
colData
=
(
char
*
)
exprData
+
info
->
cunits
[
uidx
].
dataSize
*
i
;
void
*
colData
=
(
char
*
)
info
->
cunits
[
uidx
].
colData
+
info
->
cunits
[
uidx
].
dataSize
*
i
;
if
(
colData
==
NULL
||
isNull
(
colData
,
info
->
cunits
[
uidx
].
dataType
))
{
if
(
colData
==
NULL
||
isNull
(
colData
,
info
->
cunits
[
uidx
].
dataType
))
{
(
*
p
)[
i
]
=
0
;
(
*
p
)[
i
]
=
0
;
all
=
false
;
all
=
false
;
...
@@ -3152,6 +3269,10 @@ bool filterExecuteImplMisc(void *pinfo, int32_t numOfRows, int8_t** p, SDataStat
...
@@ -3152,6 +3269,10 @@ bool filterExecuteImplMisc(void *pinfo, int32_t numOfRows, int8_t** p, SDataStat
}
}
}
}
if
(
info
->
cunits
[
0
].
expr
)
{
tfree
(
exprData
);
}
return
all
;
return
all
;
}
}
...
@@ -3167,6 +3288,27 @@ bool filterExecuteImpl(void *pinfo, int32_t numOfRows, int8_t** p, SDataStatis *
...
@@ -3167,6 +3288,27 @@ bool filterExecuteImpl(void *pinfo, int32_t numOfRows, int8_t** p, SDataStatis *
*
p
=
calloc
(
numOfRows
,
sizeof
(
int8_t
));
*
p
=
calloc
(
numOfRows
,
sizeof
(
int8_t
));
}
}
SArray
*
tmpData
=
NULL
;
for
(
uint32_t
g
=
0
;
g
<
info
->
groupNum
;
++
g
)
{
SFilterGroup
*
group
=
&
info
->
groups
[
g
];
for
(
uint32_t
u
=
0
;
u
<
group
->
unitNum
;
++
u
)
{
uint32_t
uidx
=
group
->
unitIdxs
[
u
];
SFilterComUnit
*
cunit
=
&
info
->
cunits
[
uidx
];
if
(
cunit
->
expr
)
{
if
(
!
tmpData
)
{
tmpData
=
taosArrayInit
(
10
,
POINTER_BYTES
);
}
tExprOperandInfo
output
;
output
.
data
=
malloc
(
sizeof
(
int64_t
)
*
numOfRows
);
taosArrayPush
(
tmpData
,
output
.
data
);
SSDataBlock
*
pBlock
=
(
SSDataBlock
*
)
cunit
->
exprData
;
SColumnDataParam
param
=
{.
numOfCols
=
numOfCols
,
.
pDataBlock
=
(
SArray
*
)
pBlock
};
exprTreeNodeTraverse
(
cunit
->
expr
,
numOfRows
,
&
output
,
&
param
,
TSDB_ORDER_ASC
,
getExprColumnData
);
cunit
->
colData
=
(
char
*
)
output
.
data
;
}
}
}
for
(
int32_t
i
=
0
;
i
<
numOfRows
;
++
i
)
{
for
(
int32_t
i
=
0
;
i
<
numOfRows
;
++
i
)
{
//FILTER_UNIT_CLR_F(info);
//FILTER_UNIT_CLR_F(info);
...
@@ -3228,6 +3370,9 @@ bool filterExecuteImpl(void *pinfo, int32_t numOfRows, int8_t** p, SDataStatis *
...
@@ -3228,6 +3370,9 @@ bool filterExecuteImpl(void *pinfo, int32_t numOfRows, int8_t** p, SDataStatis *
}
}
}
}
if
(
tmpData
)
{
taosArrayDestroy
(
&
tmpData
);
}
return
all
;
return
all
;
}
}
...
@@ -3317,7 +3462,8 @@ _return:
...
@@ -3317,7 +3462,8 @@ _return:
int32_t
filterSetColFieldData
(
SFilterInfo
*
info
,
void
*
param
,
filer_get_col_from_id
fp
)
{
int32_t
filterSetColFieldData
(
SFilterInfo
*
info
,
void
*
param
,
filer_get_col_from_id
fp
)
{
CHK_LRET
(
info
==
NULL
,
TSDB_CODE_QRY_APP_ERROR
,
"info NULL"
);
CHK_LRET
(
info
==
NULL
,
TSDB_CODE_QRY_APP_ERROR
,
"info NULL"
);
CHK_LRET
(
info
->
fields
[
FLD_TYPE_COLUMN
].
num
<=
0
,
TSDB_CODE_QRY_APP_ERROR
,
"no column fileds"
);
CHK_LRET
(
info
->
fields
[
FLD_TYPE_COLUMN
].
num
<=
0
&&
info
->
fields
[
FLD_TYPE_EXPR
].
num
<=
0
,
TSDB_CODE_QRY_APP_ERROR
,
"no column fileds"
);
if
(
FILTER_ALL_RES
(
info
)
||
FILTER_EMPTY_RES
(
info
))
{
if
(
FILTER_ALL_RES
(
info
)
||
FILTER_EMPTY_RES
(
info
))
{
return
TSDB_CODE_SUCCESS
;
return
TSDB_CODE_SUCCESS
;
...
@@ -3330,6 +3476,11 @@ int32_t filterSetColFieldData(SFilterInfo *info, void *param, filer_get_col_from
...
@@ -3330,6 +3476,11 @@ int32_t filterSetColFieldData(SFilterInfo *info, void *param, filer_get_col_from
(
*
fp
)(
param
,
sch
->
colId
,
&
fi
->
data
);
(
*
fp
)(
param
,
sch
->
colId
,
&
fi
->
data
);
}
}
for
(
uint32_t
i
=
0
;
i
<
info
->
fields
[
FLD_TYPE_EXPR
].
num
;
++
i
)
{
SFilterField
*
fi
=
&
info
->
fields
[
FLD_TYPE_EXPR
].
fields
[
i
];
(
*
fp
)(
param
,
INT32_MAX
,
&
fi
->
data
);
}
filterUpdateComUnits
(
info
);
filterUpdateComUnits
(
info
);
return
TSDB_CODE_SUCCESS
;
return
TSDB_CODE_SUCCESS
;
...
...
src/query/src/qSqlParser.c
浏览文件 @
ce0b391f
...
@@ -321,7 +321,9 @@ tSqlExpr *tSqlExprCreate(tSqlExpr *pLeft, tSqlExpr *pRight, int32_t optrType) {
...
@@ -321,7 +321,9 @@ tSqlExpr *tSqlExprCreate(tSqlExpr *pLeft, tSqlExpr *pRight, int32_t optrType) {
if
((
pLeft
!=
NULL
&&
pRight
!=
NULL
)
&&
if
((
pLeft
!=
NULL
&&
pRight
!=
NULL
)
&&
(
optrType
==
TK_PLUS
||
optrType
==
TK_MINUS
||
optrType
==
TK_STAR
||
optrType
==
TK_DIVIDE
||
optrType
==
TK_REM
||
(
optrType
==
TK_PLUS
||
optrType
==
TK_MINUS
||
optrType
==
TK_STAR
||
optrType
==
TK_DIVIDE
||
optrType
==
TK_REM
||
optrType
==
TK_EQ
||
optrType
==
TK_NE
||
optrType
==
TK_LT
||
optrType
==
TK_GT
||
optrType
==
TK_LE
||
optrType
==
TK_GE
||
optrType
==
TK_EQ
||
optrType
==
TK_NE
||
optrType
==
TK_LT
||
optrType
==
TK_GT
||
optrType
==
TK_LE
||
optrType
==
TK_GE
||
optrType
==
TK_AND
||
optrType
==
TK_OR
))
{
optrType
==
TK_AND
||
optrType
==
TK_OR
||
optrType
==
TK_BITAND
||
optrType
==
TK_BITOR
||
optrType
==
TK_BITXOR
||
optrType
==
TK_LSHIFT
||
optrType
==
TK_RSHIFT
))
{
/*
/*
* if a exprToken is noted as the TK_TIMESTAMP, the time precision is microsecond
* if a exprToken is noted as the TK_TIMESTAMP, the time precision is microsecond
* Otherwise, the time precision is adaptive, determined by the time precision from databases.
* Otherwise, the time precision is adaptive, determined by the time precision from databases.
...
@@ -398,6 +400,61 @@ tSqlExpr *tSqlExprCreate(tSqlExpr *pLeft, tSqlExpr *pRight, int32_t optrType) {
...
@@ -398,6 +400,61 @@ tSqlExpr *tSqlExprCreate(tSqlExpr *pLeft, tSqlExpr *pRight, int32_t optrType) {
pExpr
->
value
.
i64
=
(
pLeft
->
value
.
i64
||
pRight
->
value
.
i64
)
?
1
:
0
;
pExpr
->
value
.
i64
=
(
pLeft
->
value
.
i64
||
pRight
->
value
.
i64
)
?
1
:
0
;
break
;
break
;
}
}
case
TK_BITAND
:
{
if
(
pLeft
->
tokenId
==
TK_BOOL
||
pRight
->
tokenId
==
TK_BOOL
||
pLeft
->
tokenId
==
TK_FLOAT
||
pRight
->
tokenId
==
TK_FLOAT
||
pLeft
->
tokenId
==
TK_TIMESTAMP
||
pRight
->
tokenId
==
TK_TIMESTAMP
)
{
pExpr
->
value
.
i64
=
TSDB_DATA_BIGINT_NULL
;
}
else
{
pExpr
->
value
.
i64
=
pLeft
->
value
.
i64
&
pRight
->
value
.
i64
;
}
break
;
}
case
TK_BITOR
:
{
if
(
pLeft
->
tokenId
==
TK_BOOL
||
pRight
->
tokenId
==
TK_BOOL
||
pLeft
->
tokenId
==
TK_FLOAT
||
pRight
->
tokenId
==
TK_FLOAT
||
pLeft
->
tokenId
==
TK_TIMESTAMP
||
pRight
->
tokenId
==
TK_TIMESTAMP
)
{
pExpr
->
value
.
i64
=
TSDB_DATA_BIGINT_NULL
;
}
else
{
pExpr
->
value
.
i64
=
pLeft
->
value
.
i64
|
pRight
->
value
.
i64
;
}
break
;
}
case
TK_BITXOR
:
{
if
(
pLeft
->
tokenId
==
TK_BOOL
||
pRight
->
tokenId
==
TK_BOOL
||
pLeft
->
tokenId
==
TK_FLOAT
||
pRight
->
tokenId
==
TK_FLOAT
||
pLeft
->
tokenId
==
TK_TIMESTAMP
||
pRight
->
tokenId
==
TK_TIMESTAMP
)
{
pExpr
->
value
.
i64
=
TSDB_DATA_BIGINT_NULL
;
}
else
{
pExpr
->
value
.
i64
=
pLeft
->
value
.
i64
^
pRight
->
value
.
i64
;
}
break
;
}
case
TK_LSHIFT
:
{
if
(
pLeft
->
tokenId
==
TK_BOOL
||
pRight
->
tokenId
==
TK_BOOL
||
pLeft
->
tokenId
==
TK_FLOAT
||
pRight
->
tokenId
==
TK_FLOAT
||
pLeft
->
tokenId
==
TK_TIMESTAMP
||
pRight
->
tokenId
==
TK_TIMESTAMP
)
{
pExpr
->
value
.
i64
=
TSDB_DATA_BIGINT_NULL
;
}
else
{
pExpr
->
value
.
i64
=
pLeft
->
value
.
i64
<<
pRight
->
value
.
i64
;
}
break
;
}
case
TK_RSHIFT
:
{
if
(
pLeft
->
tokenId
==
TK_BOOL
||
pRight
->
tokenId
==
TK_BOOL
||
pLeft
->
tokenId
==
TK_FLOAT
||
pRight
->
tokenId
==
TK_FLOAT
||
pLeft
->
tokenId
==
TK_TIMESTAMP
||
pRight
->
tokenId
==
TK_TIMESTAMP
)
{
pExpr
->
value
.
i64
=
TSDB_DATA_BIGINT_NULL
;
}
else
{
pExpr
->
value
.
i64
=
pLeft
->
value
.
i64
>>
pRight
->
value
.
i64
;
}
break
;
}
}
}
tSqlExprDestroy
(
pLeft
);
tSqlExprDestroy
(
pLeft
);
...
@@ -509,6 +566,13 @@ tSqlExpr *tSqlExprCreate(tSqlExpr *pLeft, tSqlExpr *pRight, int32_t optrType) {
...
@@ -509,6 +566,13 @@ tSqlExpr *tSqlExprCreate(tSqlExpr *pLeft, tSqlExpr *pRight, int32_t optrType) {
pExpr
->
value
.
i64
=
(
left
||
right
)
?
1
:
0
;
pExpr
->
value
.
i64
=
(
left
||
right
)
?
1
:
0
;
break
;
break
;
}
}
case
TK_BITAND
:
case
TK_BITOR
:
case
TK_BITXOR
:
case
TK_LSHIFT
:
case
TK_RSHIFT
:
pExpr
->
value
.
i64
=
TSDB_DATA_DOUBLE_NULL
;
break
;
}
}
tSqlExprDestroy
(
pLeft
);
tSqlExprDestroy
(
pLeft
);
...
@@ -542,6 +606,12 @@ tSqlExpr *tSqlExprCreate(tSqlExpr *pLeft, tSqlExpr *pRight, int32_t optrType) {
...
@@ -542,6 +606,12 @@ tSqlExpr *tSqlExprCreate(tSqlExpr *pLeft, tSqlExpr *pRight, int32_t optrType) {
}
}
pExpr
->
pRight
=
pRight
;
pExpr
->
pRight
=
pRight
;
if
(
optrType
==
TK_BITNOT
)
{
pExpr
->
exprToken
.
z
=
pLeft
->
exprToken
.
z
-
1
;
pExpr
->
exprToken
.
n
=
pLeft
->
exprToken
.
n
+
1
;
pExpr
->
exprToken
.
type
=
pLeft
->
exprToken
.
type
;
}
}
}
return
pExpr
;
return
pExpr
;
...
...
src/query/src/sql.c
浏览文件 @
ce0b391f
...
@@ -97,30 +97,30 @@
...
@@ -97,30 +97,30 @@
#endif
#endif
/************* Begin control #defines *****************************************/
/************* Begin control #defines *****************************************/
#define YYCODETYPE unsigned short int
#define YYCODETYPE unsigned short int
#define YYNOCODE 28
6
#define YYNOCODE 28
7
#define YYACTIONTYPE unsigned short int
#define YYACTIONTYPE unsigned short int
#define ParseTOKENTYPE SStrToken
#define ParseTOKENTYPE SStrToken
typedef
union
{
typedef
union
{
int
yyinit
;
int
yyinit
;
ParseTOKENTYPE
yy0
;
ParseTOKENTYPE
yy0
;
SCreateAcctInfo
yy31
;
int
yy20
;
S
SqlNode
*
yy86
;
S
WindowStateVal
yy32
;
TAOS_FIELD
yy103
;
SCreateDbInfo
yy42
;
t
Variant
yy17
6
;
t
SqlExpr
*
yy4
6
;
tSqlExpr
*
yy226
;
SCreateAcctInfo
yy55
;
S
WindowStateVal
yy228
;
S
LimitVal
yy86
;
S
Array
*
yy231
;
S
CreateTableSql
*
yy118
;
SCreatedTableInfo
yy306
;
TAOS_FIELD
yy119
;
int
32_t
yy310
;
int
64_t
yy129
;
SSessionWindowVal
yy409
;
tVariant
yy186
;
S
CreateTableSql
*
yy42
2
;
S
RelationInfo
*
yy19
2
;
S
IntervalVal
yy430
;
S
CreatedTableInfo
yy228
;
S
LimitVal
yy444
;
S
RangeVal
yy229
;
SRangeVal
yy480
;
int32_t
yy332
;
S
RelationInfo
*
yy484
;
S
Array
*
yy373
;
int
yy502
;
SIntervalVal
yy376
;
S
CreateDbInfo
yy532
;
S
SessionWindowVal
yy435
;
int64_t
yy549
;
SSqlNode
*
yy564
;
}
YYMINORTYPE
;
}
YYMINORTYPE
;
#ifndef YYSTACKDEPTH
#ifndef YYSTACKDEPTH
#define YYSTACKDEPTH 100
#define YYSTACKDEPTH 100
...
@@ -130,17 +130,17 @@ typedef union {
...
@@ -130,17 +130,17 @@ typedef union {
#define ParseARG_FETCH SSqlInfo* pInfo = yypParser->pInfo
#define ParseARG_FETCH SSqlInfo* pInfo = yypParser->pInfo
#define ParseARG_STORE yypParser->pInfo = pInfo
#define ParseARG_STORE yypParser->pInfo = pInfo
#define YYFALLBACK 1
#define YYFALLBACK 1
#define YYNSTATE
395
#define YYNSTATE
404
#define YYNRULE 3
16
#define YYNRULE 3
21
#define YYNTOKEN 20
1
#define YYNTOKEN 20
2
#define YY_MAX_SHIFT
394
#define YY_MAX_SHIFT
403
#define YY_MIN_SHIFTREDUCE 6
1
9
#define YY_MIN_SHIFTREDUCE 6
2
9
#define YY_MAX_SHIFTREDUCE 9
34
#define YY_MAX_SHIFTREDUCE 9
49
#define YY_ERROR_ACTION 9
35
#define YY_ERROR_ACTION 9
50
#define YY_ACCEPT_ACTION 9
36
#define YY_ACCEPT_ACTION 9
51
#define YY_NO_ACTION 9
37
#define YY_NO_ACTION 9
52
#define YY_MIN_REDUCE 9
38
#define YY_MIN_REDUCE 9
53
#define YY_MAX_REDUCE 12
5
3
#define YY_MAX_REDUCE 12
7
3
/************* 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
...
@@ -206,320 +206,332 @@ typedef union {
...
@@ -206,320 +206,332 @@ 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 (
874
)
#define YY_ACTTAB_COUNT (
922
)
static
const
YYACTIONTYPE
yy_action
[]
=
{
static
const
YYACTIONTYPE
yy_action
[]
=
{
/* 0 */
216
,
670
,
252
,
262
,
261
,
1169
,
24
,
1170
,
314
,
671
,
/* 0 */
221
,
680
,
65
,
680
,
261
,
1184
,
167
,
1185
,
323
,
681
,
/* 10 */
1227
,
870
,
1229
,
873
,
38
,
39
,
1227
,
42
,
43
,
393
,
/* 10 */
1247
,
681
,
1249
,
716
,
43
,
44
,
1132
,
47
,
48
,
402
,
/* 20 */
243
,
265
,
31
,
30
,
29
,
214
,
670
,
41
,
346
,
46
,
/* 20 */
252
,
274
,
32
,
31
,
30
,
3
,
203
,
46
,
355
,
51
,
/* 30 */
44
,
47
,
45
,
32
,
671
,
1227
,
215
,
37
,
36
,
220
,
/* 30 */
49
,
52
,
50
,
37
,
36
,
35
,
34
,
33
,
42
,
41
,
/* 40 */
706
,
35
,
34
,
33
,
38
,
39
,
1227
,
42
,
43
,
1227
,
/* 40 */
24
,
65
,
40
,
39
,
38
,
43
,
44
,
254
,
47
,
48
,
/* 50 */
1117
,
265
,
31
,
30
,
29
,
60
,
1092
,
41
,
346
,
46
,
/* 50 */
1247
,
1105
,
274
,
32
,
31
,
30
,
398
,
1039
,
46
,
355
,
/* 60 */
44
,
47
,
45
,
32
,
212
,
216
,
754
,
37
,
36
,
351
,
/* 60 */
51
,
49
,
52
,
50
,
37
,
36
,
35
,
34
,
33
,
42
,
/* 70 */
221
,
35
,
34
,
33
,
1227
,
1227
,
1230
,
1230
,
38
,
39
,
/* 70 */
41
,
219
,
764
,
40
,
39
,
38
,
304
,
303
,
1107
,
43
,
/* 80 */
1227
,
42
,
43
,
936
,
394
,
265
,
31
,
30
,
29
,
162
,
/* 80 */
44
,
1247
,
47
,
48
,
305
,
1129
,
274
,
32
,
31
,
30
,
/* 90 */
86
,
41
,
346
,
46
,
44
,
47
,
45
,
32
,
371
,
370
,
/* 90 */
1104
,
91
,
46
,
355
,
51
,
49
,
52
,
50
,
37
,
36
,
/* 100 */
245
,
37
,
36
,
222
,
1090
,
35
,
34
,
33
,
38
,
39
,
/* 100 */
35
,
34
,
33
,
42
,
41
,
380
,
379
,
40
,
39
,
38
,
/* 110 */
250
,
42
,
43
,
1227
,
1093
,
265
,
31
,
30
,
29
,
1114
,
/* 110 */
43
,
44
,
13
,
47
,
48
,
1094
,
107
,
274
,
32
,
31
,
/* 120 */
59
,
41
,
346
,
46
,
44
,
47
,
45
,
32
,
233
,
877
,
/* 120 */
30
,
1102
,
64
,
46
,
355
,
51
,
49
,
52
,
50
,
37
,
/* 130 */
13
,
37
,
36
,
1108
,
102
,
35
,
34
,
33
,
1227
,
38
,
/* 130 */
36
,
35
,
34
,
33
,
42
,
41
,
1001
,
220
,
40
,
39
,
/* 140 */
40
,
1087
,
42
,
43
,
60
,
60
,
265
,
31
,
30
,
29
,
/* 140 */
38
,
43
,
45
,
202
,
47
,
48
,
110
,
1247
,
274
,
32
,
/* 150 */
288
,
864
,
41
,
346
,
46
,
44
,
47
,
45
,
32
,
295
,
/* 150 */
31
,
30
,
351
,
874
,
46
,
355
,
51
,
49
,
52
,
50
,
/* 160 */
294
,
342
,
37
,
36
,
105
,
670
,
35
,
34
,
33
,
39
,
/* 160 */
37
,
36
,
35
,
34
,
33
,
42
,
41
,
289
,
267
,
40
,
/* 170 */
280
,
42
,
43
,
671
,
884
,
265
,
31
,
30
,
29
,
284
,
/* 170 */
39
,
38
,
44
,
1237
,
47
,
48
,
293
,
292
,
274
,
32
,
/* 180 */
283
,
41
,
346
,
46
,
44
,
47
,
45
,
32
,
258
,
255
,
/* 180 */
31
,
30
,
390
,
1247
,
46
,
355
,
51
,
49
,
52
,
50
,
/* 190 */
256
,
37
,
36
,
1090
,
1090
,
35
,
34
,
33
,
68
,
340
,
/* 190 */
37
,
36
,
35
,
34
,
33
,
42
,
41
,
680
,
1269
,
40
,
/* 200 */
388
,
387
,
339
,
338
,
337
,
386
,
336
,
335
,
334
,
385
,
/* 200 */
39
,
38
,
47
,
48
,
351
,
681
,
274
,
32
,
31
,
30
,
/* 210 */
333
,
384
,
383
,
620
,
621
,
622
,
623
,
624
,
625
,
626
,
/* 210 */
1
,
190
,
46
,
355
,
51
,
49
,
52
,
50
,
37
,
36
,
/* 220 */
627
,
628
,
629
,
630
,
631
,
632
,
633
,
160
,
869
,
244
,
/* 220 */
35
,
34
,
33
,
42
,
41
,
111
,
259
,
40
,
39
,
38
,
/* 230 */
872
,
42
,
43
,
824
,
825
,
265
,
31
,
30
,
29
,
101
,
/* 230 */
1108
,
73
,
349
,
397
,
396
,
348
,
347
,
346
,
395
,
345
,
/* 240 */
85
,
41
,
346
,
46
,
44
,
47
,
45
,
32
,
392
,
391
,
/* 240 */
344
,
343
,
394
,
342
,
393
,
392
,
630
,
631
,
632
,
633
,
/* 250 */
647
,
37
,
36
,
60
,
87
,
35
,
34
,
33
,
25
,
1055
,
/* 250 */
634
,
635
,
636
,
637
,
638
,
639
,
640
,
641
,
642
,
643
,
/* 260 */
1043
,
1044
,
1045
,
1046
,
1047
,
1048
,
1049
,
1050
,
1051
,
1052
,
/* 260 */
165
,
1096
,
253
,
1070
,
1058
,
1059
,
1060
,
1061
,
1062
,
1063
,
/* 270 */
1053
,
1054
,
1056
,
1057
,
1078
,
226
,
1218
,
236
,
879
,
381
,
/* 270 */
1064
,
1065
,
1066
,
1067
,
1068
,
1069
,
1071
,
1072
,
51
,
49
,
/* 280 */
92
,
868
,
228
,
871
,
345
,
874
,
1227
,
1249
,
145
,
144
,
/* 280 */
52
,
50
,
37
,
36
,
35
,
34
,
33
,
42
,
41
,
25
,
/* 290 */
143
,
227
,
103
,
236
,
879
,
354
,
92
,
868
,
358
,
871
,
/* 290 */
1123
,
40
,
39
,
38
,
245
,
889
,
327
,
103
,
878
,
102
,
/* 300 */
257
,
874
,
1090
,
296
,
1093
,
60
,
344
,
46
,
44
,
47
,
/* 300 */
881
,
298
,
884
,
108
,
245
,
889
,
235
,
255
,
878
,
1261
,
/* 310 */
45
,
32
,
1217
,
241
,
242
,
37
,
36
,
348
,
69
,
35
,
/* 310 */
881
,
788
,
884
,
237
,
785
,
66
,
786
,
306
,
787
,
150
,
/* 320 */
34
,
33
,
1227
,
264
,
177
,
1076
,
1077
,
56
,
1080
,
241
,
/* 320 */
149
,
148
,
236
,
225
,
42
,
41
,
363
,
97
,
40
,
39
,
/* 330 */
242
,
5
,
63
,
187
,
69
,
35
,
34
,
33
,
186
,
112
,
/* 330 */
38
,
250
,
251
,
1247
,
97
,
357
,
1091
,
1092
,
61
,
1095
,
/* 340 */
117
,
108
,
116
,
304
,
778
,
6
,
878
,
775
,
259
,
776
,
/* 340 */
29
,
250
,
251
,
1195
,
680
,
822
,
1194
,
279
,
280
,
825
,
/* 350 */
359
,
777
,
1093
,
670
,
1090
,
297
,
287
,
329
,
84
,
1079
,
/* 350 */
29
,
271
,
681
,
37
,
36
,
35
,
34
,
33
,
42
,
41
,
/* 360 */
1216
,
671
,
48
,
389
,
1024
,
237
,
129
,
123
,
134
,
268
,
/* 360 */
834
,
835
,
40
,
39
,
38
,
74
,
5
,
68
,
192
,
65
,
/* 370 */
1227
,
318
,
98
,
133
,
97
,
139
,
142
,
132
,
48
,
270
,
/* 370 */
951
,
403
,
74
,
191
,
117
,
122
,
113
,
121
,
309
,
310
,
/* 380 */
271
,
207
,
205
,
203
,
136
,
1108
,
1108
,
80
,
202
,
149
,
/* 380 */
53
,
40
,
39
,
38
,
134
,
128
,
139
,
296
,
262
,
89
,
/* 390 */
148
,
147
,
146
,
68
,
274
,
388
,
387
,
880
,
875
,
876
,
/* 390 */
53
,
138
,
338
,
144
,
147
,
137
,
246
,
65
,
277
,
212
,
/* 400 */
386
,
812
,
246
,
247
,
385
,
815
,
384
,
383
,
266
,
60
,
/* 400 */
210
,
208
,
141
,
65
,
283
,
270
,
207
,
154
,
153
,
152
,
/* 410 */
60
,
60
,
60
,
880
,
875
,
876
,
1063
,
60
,
1061
,
1062
,
/* 410 */
151
,
880
,
217
,
883
,
264
,
890
,
885
,
886
,
1105
,
226
,
/* 420 */
37
,
36
,
239
,
1064
,
35
,
34
,
33
,
1065
,
81
,
1066
,
/* 420 */
1123
,
275
,
1247
,
65
,
1250
,
890
,
885
,
886
,
136
,
1247
,
/* 430 */
1067
,
32
,
1227
,
300
,
301
,
37
,
36
,
60
,
52
,
35
,
/* 430 */
57
,
789
,
281
,
354
,
1011
,
227
,
73
,
297
,
397
,
396
,
/* 440 */
34
,
33
,
159
,
157
,
156
,
986
,
269
,
342
,
267
,
106
,
/* 440 */
390
,
202
,
265
,
395
,
65
,
1247
,
1105
,
394
,
367
,
393
,
/* 450 */
357
,
356
,
197
,
131
,
360
,
361
,
367
,
368
,
1090
,
1090
,
/* 450 */
392
,
1078
,
1105
,
1076
,
1077
,
65
,
353
,
65
,
1079
,
879
,
/* 460 */
1090
,
1090
,
369
,
779
,
272
,
381
,
1090
,
240
,
218
,
216
,
/* 460 */
65
,
882
,
1080
,
257
,
1081
,
1082
,
221
,
266
,
368
,
65
,
/* 470 */
219
,
276
,
60
,
273
,
223
,
366
,
365
,
1227
,
1227
,
1227
,
/* 470 */
65
,
1108
,
1105
,
273
,
238
,
278
,
1247
,
276
,
1250
,
366
,
/* 480 */
1227
,
1230
,
373
,
217
,
1227
,
1081
,
1090
,
224
,
225
,
230
,
/* 480 */
365
,
285
,
221
,
282
,
1247
,
375
,
374
,
268
,
1182
,
369
,
/* 490 */
231
,
232
,
229
,
1227
,
213
,
1
,
185
,
1227
,
1227
,
1227
,
/* 490 */
1183
,
1108
,
1247
,
1105
,
1250
,
6
,
401
,
400
,
657
,
806
,
/* 500 */
1227
,
1227
,
1227
,
275
,
1227
,
275
,
275
,
796
,
1167
,
275
,
/* 500 */
370
,
182
,
376
,
239
,
1105
,
377
,
1105
,
240
,
831
,
1105
,
/* 510 */
1168
,
100
,
844
,
99
,
183
,
793
,
184
,
347
,
248
,
996
,
/* 510 */
164
,
162
,
161
,
1247
,
378
,
382
,
241
,
1247
,
1105
,
1105
,
/* 520 */
1091
,
1089
,
987
,
289
,
3
,
198
,
197
,
89
,
90
,
197
,
/* 520 */
313
,
242
,
169
,
105
,
1233
,
104
,
1247
,
1232
,
854
,
1231
,
/* 530 */
299
,
298
,
821
,
831
,
832
,
344
,
77
,
61
,
350
,
764
,
/* 530 */
887
,
1247
,
248
,
249
,
1247
,
90
,
223
,
1247
,
360
,
1247
,
/* 540 */
321
,
766
,
10
,
323
,
765
,
55
,
164
,
72
,
49
,
909
,
/* 540 */
224
,
228
,
1247
,
1247
,
222
,
229
,
1247
,
230
,
232
,
233
,
/* 550 */
881
,
263
,
317
,
61
,
61
,
72
,
83
,
104
,
72
,
669
,
/* 550 */
1247
,
1247
,
234
,
231
,
1247
,
1247
,
218
,
1247
,
1247
,
1247
,
/* 560 */
349
,
363
,
362
,
9
,
9
,
291
,
291
,
15
,
1241
,
14
,
/* 560 */
1123
,
284
,
1247
,
1247
,
284
,
284
,
1247
,
106
,
284
,
1093
,
/* 570 */
843
,
1180
,
122
,
9
,
121
,
17
,
1179
,
16
,
324
,
78
,
/* 570 */
803
,
94
,
188
,
1002
,
95
,
189
,
356
,
256
,
888
,
1106
,
/* 580 */
785
,
783
,
786
,
784
,
19
,
253
,
18
,
128
,
753
,
127
,
/* 580 */
202
,
841
,
92
,
308
,
307
,
810
,
853
,
842
,
353
,
82
,
/* 590 */
1176
,
867
,
21
,
800
,
20
,
1175
,
141
,
140
,
254
,
372
,
/* 590 */
85
,
359
,
774
,
330
,
776
,
77
,
332
,
10
,
272
,
775
,
/* 600 */
26
,
285
,
1109
,
161
,
1116
,
1127
,
1124
,
1125
,
292
,
1129
,
/* 600 */
60
,
54
,
924
,
891
,
679
,
326
,
66
,
66
,
77
,
300
,
/* 610 */
163
,
168
,
310
,
179
,
1159
,
1158
,
1157
,
1156
,
1088
,
180
,
/* 610 */
109
,
88
,
300
,
77
,
358
,
1191
,
9
,
9
,
9
,
1190
,
/* 620 */
1086
,
158
,
181
,
182
,
1001
,
326
,
811
,
327
,
328
,
303
,
/* 620 */
15
,
127
,
14
,
126
,
17
,
263
,
16
,
795
,
793
,
796
,
/* 630 */
331
,
332
,
70
,
210
,
66
,
343
,
249
,
995
,
305
,
307
,
/* 630 */
794
,
86
,
83
,
333
,
372
,
371
,
19
,
381
,
18
,
877
,
/* 640 */
1106
,
169
,
355
,
1248
,
319
,
170
,
82
,
119
,
1247
,
79
,
/* 640 */
133
,
294
,
132
,
763
,
894
,
21
,
166
,
20
,
146
,
145
,
/* 650 */
28
,
171
,
1244
,
188
,
364
,
1240
,
315
,
172
,
173
,
125
,
/* 650 */
1131
,
26
,
1124
,
1142
,
1139
,
1140
,
301
,
1144
,
168
,
1174
,
/* 660 */
313
,
311
,
1239
,
309
,
1236
,
189
,
174
,
306
,
1021
,
67
,
/* 660 */
173
,
319
,
184
,
1173
,
1172
,
1171
,
1103
,
185
,
1101
,
186
,
/* 670 */
175
,
62
,
71
,
211
,
302
,
983
,
330
,
135
,
981
,
137
,
/* 670 */
187
,
1016
,
335
,
163
,
821
,
312
,
336
,
337
,
258
,
340
,
/* 680 */
138
,
979
,
978
,
277
,
200
,
201
,
975
,
974
,
973
,
972
,
/* 680 */
341
,
75
,
215
,
71
,
352
,
1010
,
364
,
1268
,
314
,
124
,
/* 690 */
971
,
970
,
27
,
969
,
204
,
206
,
965
,
382
,
963
,
961
,
/* 690 */
1121
,
316
,
174
,
87
,
328
,
1267
,
1264
,
193
,
84
,
175
,
/* 700 */
208
,
958
,
209
,
954
,
130
,
374
,
290
,
88
,
93
,
375
,
/* 700 */
373
,
1260
,
130
,
1259
,
28
,
1256
,
194
,
1036
,
72
,
324
,
/* 710 */
308
,
376
,
377
,
379
,
378
,
380
,
390
,
934
,
238
,
278
,
/* 710 */
176
,
177
,
67
,
322
,
76
,
216
,
320
,
998
,
318
,
315
,
/* 720 */
279
,
260
,
325
,
933
,
281
,
282
,
932
,
915
,
234
,
235
,
/* 720 */
181
,
179
,
140
,
996
,
142
,
143
,
994
,
27
,
993
,
311
,
/* 730 */
914
,
286
,
291
,
113
,
1000
,
999
,
320
,
114
,
11
,
91
,
/* 730 */
286
,
205
,
206
,
990
,
989
,
988
,
987
,
986
,
985
,
984
,
/* 740 */
788
,
293
,
53
,
94
,
820
,
977
,
976
,
75
,
968
,
192
,
/* 740 */
209
,
211
,
980
,
978
,
976
,
339
,
213
,
973
,
214
,
969
,
/* 750 */
150
,
151
,
1022
,
190
,
194
,
152
,
191
,
193
,
195
,
196
,
/* 750 */
391
,
135
,
383
,
299
,
93
,
98
,
317
,
384
,
385
,
386
,
/* 760 */
967
,
4
,
153
,
1059
,
960
,
1023
,
178
,
176
,
959
,
54
,
/* 760 */
387
,
388
,
389
,
247
,
399
,
269
,
949
,
334
,
287
,
288
,
/* 770 */
818
,
817
,
2
,
814
,
813
,
76
,
167
,
822
,
165
,
1069
,
/* 770 */
948
,
291
,
290
,
947
,
930
,
929
,
295
,
243
,
1015
,
1014
,
/* 780 */
833
,
166
,
251
,
827
,
95
,
64
,
829
,
96
,
312
,
349
,
/* 780 */
118
,
119
,
244
,
300
,
329
,
11
,
96
,
798
,
302
,
58
,
/* 790 */
316
,
12
,
65
,
50
,
51
,
22
,
23
,
322
,
107
,
105
,
/* 790 */
99
,
830
,
80
,
992
,
197
,
991
,
196
,
1037
,
195
,
198
,
/* 800 */
57
,
109
,
110
,
684
,
58
,
719
,
717
,
111
,
716
,
715
,
/* 800 */
199
,
155
,
200
,
201
,
4
,
2
,
156
,
983
,
1074
,
157
,
/* 810 */
713
,
712
,
711
,
708
,
674
,
341
,
115
,
7
,
906
,
904
,
/* 810 */
982
,
828
,
158
,
975
,
59
,
180
,
178
,
183
,
1038
,
974
,
/* 820 */
883
,
907
,
882
,
905
,
885
,
8
,
353
,
61
,
352
,
118
,
/* 820 */
827
,
1084
,
824
,
823
,
81
,
172
,
832
,
170
,
260
,
843
,
/* 830 */
73
,
756
,
120
,
782
,
74
,
124
,
755
,
781
,
126
,
752
,
/* 830 */
171
,
69
,
837
,
100
,
358
,
839
,
101
,
321
,
325
,
12
,
/* 840 */
700
,
698
,
690
,
696
,
692
,
694
,
688
,
686
,
722
,
721
,
/* 840 */
55
,
70
,
22
,
23
,
331
,
56
,
110
,
62
,
114
,
115
,
/* 850 */
720
,
718
,
714
,
710
,
709
,
199
,
672
,
637
,
938
,
937
,
/* 850 */
112
,
694
,
63
,
116
,
729
,
727
,
726
,
725
,
723
,
722
,
/* 860 */
937
,
937
,
937
,
937
,
937
,
937
,
937
,
937
,
937
,
937
,
/* 860 */
721
,
718
,
684
,
350
,
120
,
7
,
921
,
919
,
893
,
922
,
/* 870 */
937
,
937
,
154
,
155
,
/* 870 */
892
,
920
,
8
,
895
,
362
,
123
,
361
,
66
,
78
,
125
,
/* 880 */
792
,
79
,
766
,
791
,
129
,
131
,
765
,
762
,
710
,
708
,
/* 890 */
700
,
706
,
702
,
704
,
698
,
696
,
732
,
731
,
730
,
728
,
/* 900 */
724
,
720
,
719
,
204
,
682
,
647
,
953
,
952
,
952
,
952
,
/* 910 */
952
,
952
,
952
,
952
,
952
,
952
,
952
,
952
,
952
,
952
,
/* 920 */
159
,
160
,
};
};
static
const
YYCODETYPE
yy_lookahead
[]
=
{
static
const
YYCODETYPE
yy_lookahead
[]
=
{
/* 0 */
272
,
1
,
1
,
211
,
211
,
280
,
272
,
282
,
283
,
9
,
/* 0 */
273
,
1
,
205
,
1
,
1
,
281
,
205
,
283
,
284
,
9
,
/* 10 */
282
,
5
,
284
,
7
,
14
,
15
,
282
,
17
,
18
,
204
,
/* 10 */
283
,
9
,
285
,
5
,
14
,
15
,
205
,
17
,
18
,
205
,
/* 20 */
205
,
21
,
22
,
23
,
24
,
272
,
1
,
27
,
28
,
29
,
/* 20 */
206
,
21
,
22
,
23
,
24
,
209
,
210
,
27
,
28
,
29
,
/* 30 */
30
,
31
,
32
,
33
,
9
,
282
,
272
,
37
,
38
,
272
,
/* 30 */
30
,
31
,
32
,
33
,
34
,
35
,
36
,
37
,
38
,
39
,
/* 40 */
5
,
41
,
42
,
43
,
14
,
15
,
282
,
17
,
18
,
282
,
/* 40 */
273
,
205
,
42
,
43
,
44
,
14
,
15
,
250
,
17
,
18
,
/* 50 */
204
,
21
,
22
,
23
,
24
,
204
,
254
,
27
,
28
,
29
,
/* 50 */
283
,
254
,
21
,
22
,
23
,
24
,
227
,
228
,
27
,
28
,
/* 60 */
30
,
31
,
32
,
33
,
272
,
272
,
5
,
37
,
38
,
16
,
/* 60 */
29
,
30
,
31
,
32
,
33
,
34
,
35
,
36
,
37
,
38
,
/* 70 */
272
,
41
,
42
,
43
,
282
,
282
,
284
,
284
,
14
,
15
,
/* 70 */
39
,
273
,
5
,
42
,
43
,
44
,
275
,
276
,
255
,
14
,
/* 80 */
282
,
17
,
18
,
202
,
203
,
21
,
22
,
23
,
24
,
204
,
/* 80 */
15
,
283
,
17
,
18
,
278
,
274
,
21
,
22
,
23
,
24
,
/* 90 */
90
,
27
,
28
,
29
,
30
,
31
,
32
,
33
,
37
,
38
,
/* 90 */
254
,
91
,
27
,
28
,
29
,
30
,
31
,
32
,
33
,
34
,
/* 100 */
249
,
37
,
38
,
272
,
253
,
41
,
42
,
43
,
14
,
15
,
/* 100 */
35
,
36
,
37
,
38
,
39
,
38
,
39
,
42
,
43
,
44
,
/* 110 */
250
,
17
,
18
,
282
,
254
,
21
,
22
,
23
,
24
,
273
,
/* 110 */
14
,
15
,
87
,
17
,
18
,
0
,
91
,
21
,
22
,
23
,
/* 120 */
90
,
27
,
28
,
29
,
30
,
31
,
32
,
33
,
272
,
123
,
/* 120 */
24
,
205
,
91
,
27
,
28
,
29
,
30
,
31
,
32
,
33
,
/* 130 */
86
,
37
,
38
,
252
,
90
,
41
,
42
,
43
,
282
,
14
,
/* 130 */
34
,
35
,
36
,
37
,
38
,
39
,
211
,
273
,
42
,
43
,
/* 140 */
15
,
204
,
17
,
18
,
204
,
204
,
21
,
22
,
23
,
24
,
/* 140 */
44
,
14
,
15
,
218
,
17
,
18
,
121
,
283
,
21
,
22
,
/* 150 */
269
,
87
,
27
,
28
,
29
,
30
,
31
,
32
,
33
,
274
,
/* 150 */
23
,
24
,
89
,
88
,
27
,
28
,
29
,
30
,
31
,
32
,
/* 160 */
275
,
88
,
37
,
38
,
120
,
1
,
41
,
42
,
43
,
15
,
/* 160 */
33
,
34
,
35
,
36
,
37
,
38
,
39
,
148
,
252
,
42
,
/* 170 */
147
,
17
,
18
,
9
,
121
,
21
,
22
,
23
,
24
,
156
,
/* 170 */
43
,
44
,
15
,
273
,
17
,
18
,
157
,
158
,
21
,
22
,
/* 180 */
157
,
27
,
28
,
29
,
30
,
31
,
32
,
33
,
251
,
249
,
/* 180 */
23
,
24
,
95
,
283
,
27
,
28
,
29
,
30
,
31
,
32
,
/* 190 */
249
,
37
,
38
,
253
,
253
,
41
,
42
,
43
,
102
,
103
,
/* 190 */
33
,
34
,
35
,
36
,
37
,
38
,
39
,
1
,
255
,
42
,
/* 200 */
104
,
105
,
106
,
107
,
108
,
109
,
110
,
111
,
112
,
113
,
/* 200 */
43
,
44
,
17
,
18
,
89
,
9
,
21
,
22
,
23
,
24
,
/* 210 */
114
,
115
,
116
,
49
,
50
,
51
,
52
,
53
,
54
,
55
,
/* 210 */
214
,
215
,
27
,
28
,
29
,
30
,
31
,
32
,
33
,
34
,
/* 220 */
56
,
57
,
58
,
59
,
60
,
61
,
62
,
63
,
5
,
65
,
/* 220 */
35
,
36
,
37
,
38
,
39
,
213
,
251
,
42
,
43
,
44
,
/* 230 */
7
,
17
,
18
,
130
,
131
,
21
,
22
,
23
,
24
,
255
,
/* 230 */
255
,
103
,
104
,
105
,
106
,
107
,
108
,
109
,
110
,
111
,
/* 240 */
212
,
27
,
28
,
29
,
30
,
31
,
32
,
33
,
69
,
70
,
/* 240 */
112
,
113
,
114
,
115
,
116
,
117
,
50
,
51
,
52
,
53
,
/* 250 */
71
,
37
,
38
,
204
,
270
,
41
,
42
,
43
,
48
,
228
,
/* 250 */
54
,
55
,
56
,
57
,
58
,
59
,
60
,
61
,
62
,
63
,
/* 260 */
229
,
230
,
231
,
232
,
233
,
234
,
235
,
236
,
237
,
238
,
/* 260 */
64
,
249
,
66
,
229
,
230
,
231
,
232
,
233
,
234
,
235
,
/* 270 */
239
,
240
,
241
,
242
,
246
,
65
,
272
,
1
,
2
,
94
,
/* 270 */
236
,
237
,
238
,
239
,
240
,
241
,
242
,
243
,
29
,
30
,
/* 280 */
86
,
5
,
72
,
7
,
25
,
9
,
282
,
254
,
78
,
79
,
/* 280 */
31
,
32
,
33
,
34
,
35
,
36
,
37
,
38
,
39
,
49
,
/* 290 */
80
,
81
,
212
,
1
,
2
,
85
,
86
,
5
,
249
,
7
,
/* 290 */
253
,
42
,
43
,
44
,
1
,
2
,
280
,
281
,
5
,
283
,
/* 300 */
250
,
9
,
253
,
277
,
254
,
204
,
47
,
29
,
30
,
31
,
/* 300 */
7
,
88
,
9
,
213
,
1
,
2
,
66
,
270
,
5
,
255
,
/* 310 */
32
,
33
,
272
,
37
,
38
,
37
,
38
,
41
,
124
,
41
,
/* 310 */
7
,
2
,
9
,
73
,
5
,
102
,
7
,
278
,
9
,
79
,
/* 320 */
42
,
43
,
282
,
64
,
259
,
245
,
246
,
247
,
248
,
37
,
/* 320 */
80
,
81
,
82
,
273
,
38
,
39
,
86
,
87
,
42
,
43
,
/* 330 */
38
,
66
,
67
,
68
,
124
,
41
,
42
,
43
,
73
,
74
,
/* 330 */
44
,
38
,
39
,
283
,
87
,
42
,
246
,
247
,
248
,
249
,
/* 340 */
75
,
76
,
77
,
278
,
2
,
86
,
123
,
5
,
250
,
7
,
/* 340 */
47
,
38
,
39
,
245
,
1
,
5
,
245
,
38
,
39
,
9
,
/* 350 */
249
,
9
,
254
,
1
,
253
,
277
,
146
,
92
,
148
,
0
,
/* 350 */
47
,
212
,
9
,
33
,
34
,
35
,
36
,
37
,
38
,
39
,
/* 360 */
272
,
9
,
86
,
226
,
227
,
155
,
66
,
67
,
68
,
72
,
/* 360 */
131
,
132
,
42
,
43
,
44
,
125
,
67
,
68
,
69
,
205
,
/* 370 */
282
,
279
,
280
,
73
,
282
,
75
,
76
,
77
,
86
,
37
,
/* 370 */
203
,
204
,
125
,
74
,
75
,
76
,
77
,
78
,
38
,
39
,
/* 380 */
38
,
66
,
67
,
68
,
84
,
252
,
252
,
101
,
73
,
74
,
/* 380 */
87
,
42
,
43
,
44
,
67
,
68
,
69
,
147
,
245
,
149
,
/* 390 */
75
,
76
,
77
,
102
,
72
,
104
,
105
,
121
,
122
,
123
,
/* 390 */
87
,
74
,
93
,
76
,
77
,
78
,
156
,
205
,
73
,
67
,
/* 400 */
109
,
5
,
269
,
269
,
113
,
9
,
115
,
116
,
211
,
204
,
/* 400 */
68
,
69
,
85
,
205
,
73
,
212
,
74
,
75
,
76
,
77
,
/* 410 */
204
,
204
,
204
,
121
,
122
,
123
,
228
,
204
,
230
,
231
,
/* 410 */
78
,
5
,
273
,
7
,
250
,
122
,
123
,
124
,
254
,
273
,
/* 420 */
37
,
38
,
272
,
235
,
41
,
42
,
43
,
239
,
142
,
241
,
/* 420 */
253
,
212
,
283
,
205
,
285
,
122
,
123
,
124
,
83
,
283
,
/* 430 */
242
,
33
,
282
,
37
,
38
,
37
,
38
,
204
,
86
,
41
,
/* 430 */
87
,
122
,
123
,
25
,
211
,
273
,
103
,
270
,
105
,
106
,
/* 440 */
42
,
43
,
66
,
67
,
68
,
210
,
149
,
88
,
151
,
212
,
/* 440 */
95
,
218
,
250
,
110
,
205
,
283
,
254
,
114
,
250
,
116
,
/* 450 */
153
,
154
,
217
,
82
,
249
,
249
,
249
,
249
,
253
,
253
,
/* 450 */
117
,
229
,
254
,
231
,
232
,
205
,
48
,
205
,
236
,
5
,
/* 460 */
253
,
253
,
249
,
121
,
122
,
94
,
253
,
272
,
272
,
272
,
/* 460 */
205
,
7
,
240
,
123
,
242
,
243
,
273
,
251
,
250
,
205
,
/* 470 */
272
,
149
,
204
,
151
,
272
,
153
,
154
,
282
,
282
,
282
,
/* 470 */
205
,
255
,
254
,
65
,
273
,
150
,
283
,
152
,
285
,
154
,
/* 480 */
282
,
284
,
249
,
272
,
282
,
248
,
253
,
272
,
272
,
272
,
/* 480 */
155
,
150
,
273
,
152
,
283
,
154
,
155
,
251
,
281
,
250
,
/* 490 */
272
,
272
,
272
,
282
,
272
,
213
,
214
,
282
,
282
,
282
,
/* 490 */
283
,
255
,
283
,
254
,
285
,
87
,
70
,
71
,
72
,
42
,
/* 500 */
282
,
282
,
282
,
204
,
282
,
204
,
204
,
41
,
280
,
204
,
/* 500 */
250
,
260
,
250
,
273
,
254
,
250
,
254
,
273
,
88
,
254
,
/* 510 */
282
,
280
,
80
,
282
,
215
,
101
,
215
,
215
,
122
,
210
,
/* 510 */
67
,
68
,
69
,
283
,
250
,
250
,
273
,
283
,
254
,
254
,
/* 520 */
215
,
253
,
210
,
87
,
208
,
209
,
217
,
87
,
87
,
217
,
/* 520 */
279
,
273
,
102
,
281
,
273
,
283
,
283
,
273
,
81
,
273
,
/* 530 */
37
,
38
,
87
,
87
,
87
,
47
,
101
,
101
,
25
,
87
,
/* 530 */
124
,
283
,
273
,
273
,
283
,
213
,
273
,
283
,
16
,
283
,
/* 540 */
87
,
87
,
128
,
87
,
87
,
86
,
101
,
101
,
101
,
87
,
/* 540 */
273
,
273
,
283
,
283
,
273
,
273
,
283
,
273
,
273
,
273
,
/* 550 */
87
,
1
,
64
,
101
,
101
,
101
,
86
,
101
,
101
,
87
,
/* 550 */
283
,
283
,
273
,
273
,
283
,
283
,
273
,
283
,
283
,
283
,
/* 560 */
47
,
37
,
38
,
101
,
101
,
125
,
125
,
150
,
254
,
152
,
/* 560 */
253
,
205
,
283
,
283
,
205
,
205
,
283
,
256
,
205
,
247
,
/* 570 */
138
,
244
,
150
,
101
,
152
,
150
,
244
,
152
,
119
,
144
,
/* 570 */
102
,
88
,
216
,
211
,
88
,
216
,
216
,
270
,
124
,
216
,
/* 580 */
5
,
5
,
7
,
7
,
150
,
244
,
152
,
150
,
118
,
152
,
/* 580 */
218
,
88
,
271
,
38
,
39
,
128
,
139
,
88
,
48
,
102
,
/* 590 */
244
,
41
,
150
,
127
,
152
,
244
,
82
,
83
,
244
,
244
,
/* 590 */
102
,
25
,
88
,
88
,
88
,
102
,
88
,
129
,
1
,
88
,
/* 600 */
271
,
204
,
252
,
204
,
204
,
204
,
204
,
204
,
252
,
204
,
/* 600 */
87
,
102
,
88
,
88
,
88
,
65
,
102
,
102
,
102
,
126
,
/* 610 */
204
,
204
,
204
,
256
,
281
,
281
,
281
,
281
,
252
,
204
,
/* 610 */
102
,
87
,
126
,
102
,
48
,
245
,
102
,
102
,
102
,
245
,
/* 620 */
204
,
64
,
204
,
204
,
204
,
204
,
123
,
204
,
204
,
276
,
/* 620 */
151
,
151
,
153
,
153
,
151
,
245
,
153
,
5
,
5
,
7
,
/* 630 */
204
,
204
,
204
,
204
,
204
,
204
,
276
,
204
,
276
,
276
,
/* 630 */
7
,
143
,
145
,
120
,
38
,
39
,
151
,
245
,
153
,
42
,
/* 640 */
268
,
267
,
204
,
204
,
136
,
266
,
141
,
204
,
204
,
143
,
/* 640 */
151
,
205
,
153
,
119
,
122
,
151
,
205
,
153
,
83
,
84
,
/* 650 */
140
,
265
,
204
,
204
,
204
,
204
,
139
,
264
,
263
,
204
,
/* 650 */
205
,
272
,
253
,
205
,
205
,
205
,
253
,
205
,
205
,
282
,
/* 660 */
134
,
133
,
204
,
132
,
204
,
204
,
262
,
135
,
204
,
204
,
/* 660 */
205
,
205
,
257
,
282
,
282
,
282
,
253
,
205
,
205
,
205
,
/* 670 */
261
,
204
,
204
,
204
,
129
,
204
,
93
,
204
,
204
,
204
,
/* 670 */
205
,
205
,
205
,
65
,
124
,
277
,
205
,
205
,
277
,
205
,
/* 680 */
204
,
204
,
204
,
204
,
204
,
204
,
204
,
204
,
204
,
204
,
/* 680 */
205
,
205
,
205
,
205
,
205
,
205
,
205
,
205
,
277
,
205
,
/* 690 */
204
,
204
,
145
,
204
,
204
,
204
,
204
,
117
,
204
,
204
,
/* 690 */
269
,
277
,
268
,
142
,
137
,
205
,
205
,
205
,
144
,
267
,
/* 700 */
204
,
204
,
204
,
204
,
100
,
99
,
206
,
206
,
206
,
55
,
/* 700 */
205
,
205
,
205
,
205
,
141
,
205
,
205
,
205
,
205
,
140
,
/* 710 */
206
,
96
,
98
,
97
,
59
,
95
,
88
,
5
,
206
,
158
,
/* 710 */
266
,
265
,
205
,
135
,
205
,
205
,
134
,
205
,
133
,
136
,
/* 720 */
5
,
206
,
206
,
5
,
158
,
5
,
5
,
104
,
206
,
206
,
/* 720 */
261
,
263
,
205
,
205
,
205
,
205
,
205
,
146
,
205
,
130
,
/* 730 */
103
,
147
,
125
,
212
,
216
,
216
,
119
,
212
,
86
,
126
,
/* 730 */
205
,
205
,
205
,
205
,
205
,
205
,
205
,
205
,
205
,
205
,
/* 740 */
87
,
101
,
86
,
101
,
87
,
206
,
206
,
101
,
206
,
219
,
/* 740 */
205
,
205
,
205
,
205
,
205
,
94
,
205
,
205
,
205
,
205
,
/* 750 */
207
,
207
,
225
,
224
,
220
,
207
,
223
,
222
,
221
,
218
,
/* 750 */
118
,
101
,
100
,
207
,
207
,
207
,
207
,
56
,
97
,
99
,
/* 760 */
206
,
208
,
207
,
243
,
206
,
227
,
257
,
260
,
206
,
258
,
/* 760 */
60
,
98
,
96
,
207
,
89
,
207
,
5
,
207
,
159
,
5
,
/* 770 */
123
,
123
,
213
,
5
,
5
,
86
,
101
,
87
,
86
,
243
,
/* 770 */
5
,
5
,
159
,
5
,
105
,
104
,
148
,
207
,
217
,
217
,
/* 780 */
87
,
86
,
1
,
87
,
86
,
101
,
87
,
86
,
86
,
47
,
/* 780 */
213
,
213
,
207
,
126
,
120
,
87
,
127
,
88
,
102
,
87
,
/* 790 */
1
,
86
,
101
,
86
,
86
,
137
,
137
,
119
,
82
,
120
,
/* 790 */
102
,
88
,
102
,
207
,
220
,
207
,
224
,
226
,
225
,
223
,
/* 800 */
91
,
90
,
74
,
5
,
91
,
9
,
5
,
90
,
5
,
5
,
/* 800 */
221
,
208
,
222
,
219
,
209
,
214
,
208
,
207
,
244
,
208
,
/* 810 */
5
,
5
,
5
,
5
,
89
,
16
,
82
,
86
,
9
,
9
,
/* 810 */
207
,
124
,
208
,
207
,
259
,
262
,
264
,
258
,
228
,
207
,
/* 820 */
87
,
9
,
87
,
9
,
121
,
86
,
63
,
101
,
28
,
152
,
/* 820 */
124
,
244
,
5
,
5
,
87
,
102
,
88
,
87
,
1
,
88
,
/* 830 */
17
,
5
,
152
,
123
,
17
,
152
,
5
,
123
,
152
,
87
,
/* 830 */
87
,
102
,
88
,
87
,
48
,
88
,
87
,
87
,
1
,
87
,
/* 840 */
5
,
5
,
5
,
5
,
5
,
5
,
5
,
5
,
5
,
5
,
/* 840 */
87
,
102
,
138
,
138
,
120
,
87
,
121
,
92
,
91
,
75
,
/* 850 */
5
,
5
,
5
,
5
,
5
,
101
,
89
,
64
,
0
,
285
,
/* 850 */
83
,
5
,
92
,
91
,
9
,
5
,
5
,
5
,
5
,
5
,
/* 860 */
285
,
285
,
285
,
285
,
285
,
285
,
285
,
285
,
285
,
285
,
/* 860 */
5
,
5
,
90
,
16
,
83
,
87
,
9
,
9
,
88
,
9
,
/* 870 */
285
,
285
,
22
,
22
,
285
,
285
,
285
,
285
,
285
,
285
,
/* 870 */
88
,
9
,
87
,
122
,
64
,
153
,
28
,
102
,
17
,
153
,
/* 880 */
285
,
285
,
285
,
285
,
285
,
285
,
285
,
285
,
285
,
285
,
/* 880 */
124
,
17
,
5
,
124
,
153
,
153
,
5
,
88
,
5
,
5
,
/* 890 */
285
,
285
,
285
,
285
,
285
,
285
,
285
,
285
,
285
,
285
,
/* 890 */
5
,
5
,
5
,
5
,
5
,
5
,
5
,
5
,
5
,
5
,
/* 900 */
285
,
285
,
285
,
285
,
285
,
285
,
285
,
285
,
285
,
285
,
/* 900 */
5
,
5
,
5
,
102
,
90
,
65
,
0
,
286
,
286
,
286
,
/* 910 */
285
,
285
,
285
,
285
,
285
,
285
,
285
,
285
,
285
,
285
,
/* 910 */
286
,
286
,
286
,
286
,
286
,
286
,
286
,
286
,
286
,
286
,
/* 920 */
285
,
285
,
285
,
285
,
285
,
285
,
285
,
285
,
285
,
285
,
/* 920 */
22
,
22
,
286
,
286
,
286
,
286
,
286
,
286
,
286
,
286
,
/* 930 */
285
,
285
,
285
,
285
,
285
,
285
,
285
,
285
,
285
,
285
,
/* 930 */
286
,
286
,
286
,
286
,
286
,
286
,
286
,
286
,
286
,
286
,
/* 940 */
285
,
285
,
285
,
285
,
285
,
285
,
285
,
285
,
285
,
285
,
/* 940 */
286
,
286
,
286
,
286
,
286
,
286
,
286
,
286
,
286
,
286
,
/* 950 */
285
,
285
,
285
,
285
,
285
,
285
,
285
,
285
,
285
,
285
,
/* 950 */
286
,
286
,
286
,
286
,
286
,
286
,
286
,
286
,
286
,
286
,
/* 960 */
285
,
285
,
285
,
285
,
285
,
285
,
285
,
285
,
285
,
285
,
/* 960 */
286
,
286
,
286
,
286
,
286
,
286
,
286
,
286
,
286
,
286
,
/* 970 */
285
,
285
,
285
,
285
,
285
,
285
,
285
,
285
,
285
,
285
,
/* 970 */
286
,
286
,
286
,
286
,
286
,
286
,
286
,
286
,
286
,
286
,
/* 980 */
285
,
285
,
285
,
285
,
285
,
285
,
285
,
285
,
285
,
285
,
/* 980 */
286
,
286
,
286
,
286
,
286
,
286
,
286
,
286
,
286
,
286
,
/* 990 */
285
,
285
,
285
,
285
,
285
,
285
,
285
,
285
,
285
,
285
,
/* 990 */
286
,
286
,
286
,
286
,
286
,
286
,
286
,
286
,
286
,
286
,
/* 1000 */
285
,
285
,
285
,
285
,
285
,
285
,
285
,
285
,
285
,
285
,
/* 1000 */
286
,
286
,
286
,
286
,
286
,
286
,
286
,
286
,
286
,
286
,
/* 1010 */
285
,
285
,
285
,
285
,
285
,
285
,
285
,
285
,
285
,
285
,
/* 1010 */
286
,
286
,
286
,
286
,
286
,
286
,
286
,
286
,
286
,
286
,
/* 1020 */
285
,
285
,
285
,
285
,
285
,
285
,
285
,
285
,
285
,
285
,
/* 1020 */
286
,
286
,
286
,
286
,
286
,
286
,
286
,
286
,
286
,
286
,
/* 1030 */
285
,
285
,
285
,
285
,
285
,
285
,
285
,
285
,
285
,
285
,
/* 1030 */
286
,
286
,
286
,
286
,
286
,
286
,
286
,
286
,
286
,
286
,
/* 1040 */
285
,
285
,
285
,
285
,
285
,
285
,
285
,
285
,
285
,
285
,
/* 1040 */
286
,
286
,
286
,
286
,
286
,
286
,
286
,
286
,
286
,
286
,
/* 1050 */
285
,
285
,
285
,
285
,
285
,
285
,
285
,
285
,
285
,
285
,
/* 1050 */
286
,
286
,
286
,
286
,
286
,
286
,
286
,
286
,
286
,
286
,
/* 1060 */
285
,
285
,
285
,
285
,
285
,
285
,
285
,
285
,
285
,
285
,
/* 1060 */
286
,
286
,
286
,
286
,
286
,
286
,
286
,
286
,
286
,
286
,
/* 1070 */
285
,
285
,
285
,
285
,
285
,
/* 1070 */
286
,
286
,
286
,
286
,
286
,
286
,
286
,
286
,
286
,
286
,
/* 1080 */
286
,
286
,
286
,
286
,
286
,
286
,
286
,
286
,
286
,
286
,
/* 1090 */
286
,
286
,
286
,
286
,
286
,
286
,
286
,
286
,
286
,
286
,
/* 1100 */
286
,
286
,
286
,
286
,
286
,
286
,
286
,
286
,
286
,
286
,
/* 1110 */
286
,
286
,
286
,
286
,
286
,
286
,
286
,
286
,
286
,
286
,
/* 1120 */
286
,
286
,
286
,
286
,
};
};
#define YY_SHIFT_COUNT (
394
)
#define YY_SHIFT_COUNT (
403
)
#define YY_SHIFT_MIN (0)
#define YY_SHIFT_MIN (0)
#define YY_SHIFT_MAX (
858
)
#define YY_SHIFT_MAX (
906
)
static
const
unsigned
short
int
yy_shift_ofst
[]
=
{
static
const
unsigned
short
int
yy_shift_ofst
[]
=
{
/* 0 */
210
,
96
,
96
,
291
,
291
,
73
,
276
,
292
,
292
,
292
,
/* 0 */
240
,
128
,
128
,
333
,
333
,
63
,
293
,
303
,
303
,
303
,
/* 10 */
352
,
25
,
25
,
25
,
25
,
25
,
25
,
25
,
25
,
25
,
/* 10 */
343
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
/* 20 */
25
,
25
,
1
,
1
,
0
,
164
,
292
,
292
,
292
,
292
,
/* 20 */
2
,
2
,
3
,
3
,
0
,
196
,
303
,
303
,
303
,
303
,
/* 30 */
292
,
292
,
292
,
292
,
292
,
292
,
292
,
292
,
292
,
292
,
/* 30 */
303
,
303
,
303
,
303
,
303
,
303
,
303
,
303
,
303
,
303
,
/* 40 */
292
,
292
,
292
,
292
,
292
,
292
,
292
,
292
,
292
,
342
,
/* 40 */
303
,
303
,
303
,
303
,
303
,
303
,
303
,
303
,
303
,
303
,
/* 50 */
342
,
342
,
194
,
194
,
103
,
25
,
359
,
25
,
25
,
25
,
/* 50 */
303
,
303
,
303
,
303
,
309
,
309
,
309
,
247
,
247
,
229
,
/* 60 */
25
,
25
,
371
,
73
,
1
,
1
,
185
,
185
,
35
,
874
,
/* 60 */
2
,
115
,
2
,
2
,
2
,
2
,
2
,
345
,
63
,
3
,
/* 70 */
874
,
874
,
342
,
342
,
342
,
396
,
396
,
61
,
61
,
61
,
/* 70 */
3
,
87
,
87
,
8
,
922
,
922
,
922
,
309
,
309
,
309
,
/* 80 */
61
,
61
,
61
,
61
,
25
,
25
,
25
,
466
,
25
,
25
,
/* 80 */
340
,
340
,
67
,
67
,
67
,
67
,
67
,
67
,
67
,
2
,
/* 90 */
25
,
194
,
194
,
25
,
25
,
25
,
25
,
432
,
432
,
432
,
/* 90 */
2
,
2
,
457
,
2
,
2
,
2
,
247
,
247
,
2
,
2
,
/* 100 */
432
,
414
,
194
,
25
,
25
,
25
,
25
,
25
,
25
,
25
,
/* 100 */
2
,
2
,
447
,
447
,
447
,
447
,
468
,
247
,
2
,
2
,
/* 110 */
25
,
25
,
25
,
25
,
25
,
25
,
25
,
25
,
25
,
25
,
/* 110 */
2
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
/* 120 */
25
,
25
,
25
,
25
,
25
,
25
,
25
,
25
,
25
,
25
,
/* 120 */
2
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
/* 130 */
25
,
25
,
25
,
25
,
25
,
25
,
25
,
25
,
25
,
25
,
/* 130 */
2
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
/* 140 */
25
,
25
,
25
,
25
,
25
,
25
,
25
,
25
,
25
,
25
,
/* 140 */
2
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
/* 150 */
25
,
25
,
25
,
25
,
25
,
25
,
25
,
25
,
25
,
25
,
/* 150 */
2
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
/* 160 */
25
,
557
,
557
,
557
,
503
,
503
,
503
,
503
,
557
,
505
,
/* 160 */
2
,
2
,
2
,
2
,
2
,
2
,
608
,
608
,
608
,
550
,
/* 170 */
506
,
508
,
510
,
517
,
526
,
528
,
531
,
532
,
545
,
547
,
/* 170 */
550
,
550
,
550
,
608
,
551
,
554
,
557
,
563
,
569
,
578
,
/* 180 */
557
,
557
,
557
,
583
,
583
,
580
,
73
,
73
,
557
,
557
,
/* 180 */
582
,
585
,
583
,
599
,
581
,
608
,
608
,
608
,
651
,
651
,
/* 190 */
604
,
606
,
654
,
615
,
614
,
655
,
616
,
620
,
580
,
35
,
/* 190 */
632
,
63
,
63
,
608
,
608
,
650
,
652
,
701
,
661
,
660
,
/* 200 */
557
,
557
,
628
,
628
,
557
,
628
,
557
,
628
,
557
,
557
,
/* 200 */
700
,
663
,
666
,
632
,
8
,
608
,
608
,
675
,
675
,
608
,
/* 210 */
874
,
874
,
30
,
64
,
94
,
94
,
94
,
125
,
154
,
214
,
/* 210 */
675
,
608
,
675
,
608
,
608
,
922
,
922
,
31
,
65
,
96
,
/* 220 */
278
,
278
,
278
,
278
,
278
,
278
,
265
,
300
,
315
,
398
,
/* 220 */
96
,
96
,
127
,
157
,
185
,
249
,
249
,
249
,
249
,
249
,
/* 230 */
398
,
398
,
398
,
383
,
297
,
322
,
259
,
23
,
44
,
294
,
/* 230 */
249
,
320
,
320
,
320
,
320
,
299
,
317
,
332
,
286
,
286
,
/* 240 */
294
,
6
,
223
,
179
,
376
,
436
,
440
,
441
,
493
,
445
,
/* 240 */
286
,
286
,
286
,
325
,
331
,
408
,
19
,
25
,
339
,
339
,
/* 250 */
446
,
447
,
488
,
435
,
286
,
452
,
453
,
454
,
456
,
457
,
/* 250 */
406
,
454
,
426
,
443
,
213
,
483
,
486
,
545
,
420
,
493
,
/* 260 */
459
,
462
,
463
,
513
,
550
,
53
,
472
,
417
,
422
,
425
,
/* 260 */
499
,
540
,
487
,
488
,
504
,
505
,
506
,
508
,
511
,
513
,
/* 270 */
575
,
576
,
524
,
434
,
437
,
470
,
442
,
514
,
712
,
561
,
/* 270 */
514
,
515
,
566
,
597
,
522
,
516
,
469
,
470
,
473
,
622
,
/* 280 */
715
,
718
,
566
,
720
,
721
,
623
,
627
,
584
,
607
,
617
,
/* 280 */
623
,
596
,
485
,
489
,
524
,
494
,
565
,
761
,
609
,
764
,
/* 290 */
652
,
613
,
653
,
656
,
640
,
642
,
657
,
646
,
647
,
648
,
/* 290 */
765
,
613
,
766
,
768
,
669
,
671
,
628
,
657
,
664
,
698
,
/* 300 */
768
,
769
,
689
,
690
,
692
,
693
,
695
,
696
,
675
,
698
,
/* 300 */
659
,
699
,
702
,
686
,
688
,
703
,
690
,
687
,
696
,
817
,
/* 310 */
699
,
701
,
781
,
702
,
684
,
658
,
742
,
789
,
691
,
659
,
/* 310 */
818
,
737
,
738
,
740
,
741
,
743
,
744
,
723
,
746
,
747
,
/* 320 */
705
,
617
,
707
,
678
,
708
,
679
,
716
,
709
,
711
,
728
,
/* 320 */
749
,
827
,
750
,
729
,
704
,
786
,
837
,
739
,
705
,
752
,
/* 330 */
798
,
713
,
717
,
796
,
801
,
803
,
804
,
805
,
806
,
807
,
/* 330 */
664
,
753
,
724
,
758
,
725
,
767
,
755
,
757
,
774
,
846
,
/* 340 */
808
,
725
,
799
,
734
,
809
,
810
,
731
,
733
,
735
,
812
,
/* 340 */
760
,
762
,
845
,
850
,
851
,
852
,
853
,
854
,
855
,
856
,
/* 350 */
814
,
703
,
739
,
800
,
763
,
813
,
677
,
680
,
726
,
726
,
/* 350 */
772
,
847
,
781
,
857
,
858
,
778
,
780
,
782
,
860
,
862
,
/* 360 */
726
,
726
,
710
,
714
,
817
,
683
,
686
,
726
,
726
,
726
,
/* 360 */
751
,
785
,
848
,
810
,
861
,
722
,
726
,
775
,
775
,
775
,
/* 370 */
826
,
831
,
752
,
726
,
835
,
836
,
837
,
838
,
839
,
840
,
/* 370 */
775
,
756
,
759
,
864
,
731
,
732
,
775
,
775
,
775
,
877
,
/* 380 */
841
,
842
,
843
,
844
,
845
,
846
,
847
,
848
,
849
,
754
,
/* 380 */
881
,
799
,
775
,
883
,
884
,
885
,
886
,
887
,
888
,
889
,
/* 390 */
767
,
850
,
851
,
793
,
858
,
/* 390 */
890
,
891
,
892
,
893
,
894
,
895
,
896
,
897
,
801
,
814
,
/* 400 */
898
,
899
,
840
,
906
,
};
};
#define YY_REDUCE_COUNT (21
1
)
#define YY_REDUCE_COUNT (21
6
)
#define YY_REDUCE_MIN (-27
5
)
#define YY_REDUCE_MIN (-27
6
)
#define YY_REDUCE_MAX (
56
2)
#define YY_REDUCE_MAX (
61
2)
static
const
short
yy_reduce_ofst
[]
=
{
static
const
short
yy_reduce_ofst
[]
=
{
/* 0 */
-
119
,
31
,
31
,
188
,
188
,
80
,
-
208
,
-
207
,
197
,
-
272
,
/* 0 */
167
,
34
,
34
,
222
,
222
,
90
,
139
,
193
,
209
,
-
273
,
/* 10 */
-
1
15
,
-
149
,
-
60
,
-
59
,
49
,
101
,
205
,
206
,
207
,
208
,
/* 10 */
-
1
99
,
-
203
,
164
,
192
,
198
,
218
,
239
,
250
,
252
,
255
,
/* 20 */
2
13
,
233
,
-
275
,
92
,
-
154
,
-
185
,
-
266
,
-
247
,
-
236
,
-
233
,
/* 20 */
2
64
,
265
,
-
276
,
16
,
-
189
,
-
186
,
-
233
,
-
202
,
-
136
,
-
100
,
/* 30 */
-
202
,
-
169
,
-
144
,
4
,
40
,
88
,
150
,
195
,
196
,
198
,
/* 30 */
50
,
146
,
162
,
201
,
230
,
234
,
243
,
248
,
251
,
254
,
/* 40 */
2
02
,
211
,
215
,
216
,
217
,
218
,
219
,
220
,
222
,
-
140
,
/* 40 */
2
56
,
259
,
260
,
263
,
267
,
268
,
271
,
272
,
274
,
275
,
/* 50 */
50
,
98
,
133
,
134
,
65
,
-
63
,
237
,
299
,
301
,
302
,
/* 50 */
276
,
279
,
280
,
283
,
-
25
,
216
,
236
,
37
,
307
,
241
,
/* 60 */
305
,
268
,
235
,
28
,
228
,
231
,
309
,
312
,
137
,
-
16
,
/* 60 */
-
84
,
12
,
356
,
359
,
360
,
363
,
-
164
,
-
75
,
322
,
207
,
/* 70 */
2
82
,
316
,
-
198
,
33
,
314
,
26
,
78
,
327
,
332
,
341
,
/* 70 */
2
42
,
223
,
362
,
-
171
,
311
,
-
4
,
-
184
,
-
177
,
-
57
,
54
,
/* 80 */
346
,
351
,
354
,
355
,
397
,
399
,
400
,
329
,
401
,
402
,
/* 80 */
-
194
,
39
,
98
,
101
,
143
,
370
,
374
,
380
,
392
,
436
,
/* 90 */
4
03
,
350
,
356
,
405
,
406
,
407
,
408
,
333
,
334
,
335
,
/* 90 */
4
41
,
445
,
379
,
448
,
449
,
450
,
399
,
403
,
452
,
453
,
/* 100 */
336
,
357
,
366
,
415
,
416
,
418
,
419
,
420
,
421
,
42
3
,
/* 100 */
455
,
456
,
377
,
381
,
382
,
383
,
405
,
413
,
462
,
46
3
,
/* 110 */
4
24
,
426
,
427
,
428
,
429
,
430
,
431
,
433
,
438
,
439
,
/* 110 */
4
64
,
465
,
466
,
467
,
471
,
472
,
474
,
475
,
476
,
477
,
/* 120 */
4
43
,
444
,
448
,
449
,
450
,
451
,
455
,
458
,
460
,
461
,
/* 120 */
4
78
,
479
,
480
,
481
,
482
,
484
,
490
,
491
,
492
,
495
,
/* 130 */
4
64
,
465
,
467
,
468
,
469
,
471
,
473
,
474
,
475
,
476
,
/* 130 */
4
96
,
497
,
498
,
500
,
501
,
502
,
503
,
507
,
509
,
510
,
/* 140 */
477
,
478
,
479
,
480
,
481
,
482
,
483
,
484
,
485
,
486
,
/* 140 */
512
,
517
,
518
,
519
,
520
,
521
,
523
,
525
,
526
,
527
,
/* 150 */
487
,
489
,
490
,
491
,
492
,
494
,
495
,
496
,
497
,
498
,
/* 150 */
528
,
529
,
530
,
531
,
532
,
533
,
534
,
535
,
536
,
537
,
/* 160 */
499
,
500
,
501
,
502
,
353
,
360
,
362
,
363
,
504
,
372
,
/* 160 */
538
,
539
,
541
,
542
,
543
,
544
,
546
,
547
,
548
,
398
,
/* 170 */
374
,
379
,
386
,
393
,
395
,
404
,
409
,
507
,
511
,
509
,
/* 170 */
401
,
411
,
414
,
549
,
421
,
424
,
432
,
444
,
446
,
552
,
/* 180 */
512
,
515
,
516
,
518
,
519
,
520
,
521
,
525
,
522
,
523
,
/* 180 */
458
,
553
,
459
,
555
,
559
,
556
,
558
,
560
,
561
,
562
,
/* 190 */
5
27
,
529
,
533
,
530
,
535
,
534
,
537
,
541
,
536
,
538
,
/* 190 */
5
64
,
567
,
568
,
570
,
575
,
571
,
573
,
572
,
574
,
576
,
/* 200 */
5
39
,
540
,
543
,
544
,
542
,
548
,
554
,
555
,
558
,
562
,
/* 200 */
5
79
,
580
,
584
,
577
,
590
,
586
,
588
,
593
,
598
,
600
,
/* 210 */
559
,
553
,
/* 210 */
601
,
603
,
604
,
606
,
612
,
591
,
595
,
};
};
static
const
YYACTIONTYPE
yy_default
[]
=
{
static
const
YYACTIONTYPE
yy_default
[]
=
{
/* 0 */
935
,
1058
,
997
,
1068
,
984
,
994
,
1232
,
1232
,
1232
,
1232
,
/* 0 */
950
,
1073
,
1012
,
1083
,
999
,
1009
,
1252
,
1252
,
1252
,
1252
,
/* 10 */
935
,
935
,
935
,
935
,
935
,
935
,
935
,
935
,
935
,
935
,
/* 10 */
950
,
950
,
950
,
950
,
950
,
950
,
950
,
950
,
950
,
950
,
/* 20 */
935
,
935
,
935
,
935
,
1118
,
955
,
935
,
935
,
935
,
935
,
/* 20 */
950
,
950
,
950
,
950
,
1133
,
970
,
950
,
950
,
950
,
950
,
/* 30 */
935
,
935
,
935
,
935
,
935
,
935
,
935
,
935
,
935
,
935
,
/* 30 */
950
,
950
,
950
,
950
,
950
,
950
,
950
,
950
,
950
,
950
,
/* 40 */
935
,
935
,
935
,
935
,
935
,
935
,
935
,
935
,
935
,
935
,
/* 40 */
950
,
950
,
950
,
950
,
950
,
950
,
950
,
950
,
950
,
950
,
/* 50 */
935
,
935
,
935
,
935
,
1142
,
935
,
994
,
935
,
935
,
935
,
/* 50 */
950
,
950
,
950
,
950
,
950
,
950
,
950
,
950
,
950
,
1157
,
/* 60 */
935
,
935
,
1004
,
994
,
935
,
935
,
1004
,
1004
,
935
,
1113
,
/* 60 */
950
,
1009
,
950
,
950
,
950
,
950
,
950
,
1019
,
1009
,
950
,
/* 70 */
1042
,
1060
,
935
,
935
,
935
,
935
,
935
,
935
,
935
,
935
,
/* 70 */
950
,
1019
,
1019
,
950
,
1128
,
1057
,
1075
,
950
,
950
,
950
,
/* 80 */
935
,
935
,
935
,
935
,
935
,
935
,
935
,
1120
,
1126
,
1123
,
/* 80 */
950
,
950
,
950
,
950
,
950
,
950
,
950
,
950
,
950
,
950
,
/* 90 */
935
,
935
,
935
,
1128
,
935
,
935
,
935
,
1164
,
1164
,
1164
,
/* 90 */
950
,
950
,
1135
,
1141
,
1138
,
950
,
950
,
950
,
1143
,
950
,
/* 100 */
1164
,
1111
,
935
,
935
,
935
,
935
,
935
,
935
,
935
,
935
,
/* 100 */
950
,
950
,
1179
,
1179
,
1179
,
1179
,
1126
,
950
,
950
,
950
,
/* 110 */
935
,
935
,
935
,
935
,
935
,
935
,
935
,
935
,
935
,
935
,
/* 110 */
950
,
950
,
950
,
950
,
950
,
950
,
950
,
950
,
950
,
950
,
/* 120 */
935
,
935
,
935
,
935
,
935
,
935
,
935
,
935
,
935
,
935
,
/* 120 */
950
,
950
,
950
,
950
,
950
,
950
,
950
,
950
,
950
,
950
,
/* 130 */
935
,
935
,
935
,
935
,
935
,
982
,
935
,
980
,
935
,
935
,
/* 130 */
950
,
950
,
950
,
950
,
950
,
950
,
950
,
950
,
950
,
950
,
/* 140 */
935
,
935
,
935
,
935
,
935
,
935
,
935
,
935
,
935
,
935
,
/* 140 */
997
,
950
,
995
,
950
,
950
,
950
,
950
,
950
,
950
,
950
,
/* 150 */
935
,
935
,
935
,
935
,
935
,
935
,
935
,
935
,
935
,
935
,
/* 150 */
950
,
950
,
950
,
950
,
950
,
950
,
950
,
950
,
950
,
950
,
/* 160 */
953
,
957
,
957
,
957
,
935
,
935
,
935
,
935
,
957
,
1173
,
/* 160 */
950
,
950
,
950
,
950
,
950
,
968
,
972
,
972
,
972
,
950
,
/* 170 */
1177
,
1154
,
1171
,
1165
,
1149
,
1147
,
1145
,
1153
,
1138
,
1181
,
/* 170 */
950
,
950
,
950
,
972
,
1188
,
1192
,
1169
,
1186
,
1180
,
1164
,
/* 180 */
957
,
957
,
957
,
1002
,
1002
,
998
,
994
,
994
,
957
,
957
,
/* 180 */
1162
,
1160
,
1168
,
1153
,
1196
,
972
,
972
,
972
,
1017
,
1017
,
/* 190 */
1020
,
1018
,
1016
,
1008
,
1014
,
1010
,
1012
,
1006
,
985
,
935
,
/* 190 */
1013
,
1009
,
1009
,
972
,
972
,
1035
,
1033
,
1031
,
1023
,
1029
,
/* 200 */
957
,
957
,
992
,
992
,
957
,
992
,
957
,
992
,
957
,
957
,
/* 200 */
1025
,
1027
,
1021
,
1000
,
950
,
972
,
972
,
1007
,
1007
,
972
,
/* 210 */
1042
,
1060
,
1231
,
935
,
1182
,
1172
,
1231
,
935
,
1213
,
1212
,
/* 210 */
1007
,
972
,
1007
,
972
,
972
,
1057
,
1075
,
1251
,
950
,
1197
,
/* 220 */
1222
,
1221
,
1220
,
1211
,
1210
,
1209
,
935
,
935
,
935
,
1205
,
/* 220 */
1187
,
1251
,
950
,
1228
,
1227
,
1242
,
1241
,
1240
,
1226
,
1225
,
/* 230 */
1208
,
1207
,
1206
,
1219
,
935
,
935
,
1184
,
935
,
935
,
1215
,
/* 230 */
1224
,
1220
,
1223
,
1222
,
1221
,
950
,
950
,
950
,
1239
,
1238
,
/* 240 */
1214
,
935
,
935
,
935
,
935
,
935
,
935
,
935
,
1135
,
935
,
/* 240 */
1236
,
1235
,
1234
,
950
,
950
,
1199
,
950
,
950
,
1230
,
1229
,
/* 250 */
935
,
935
,
1160
,
1178
,
1174
,
935
,
935
,
935
,
935
,
935
,
/* 250 */
950
,
950
,
950
,
950
,
950
,
950
,
950
,
1150
,
950
,
950
,
/* 260 */
935
,
935
,
935
,
1185
,
935
,
935
,
935
,
935
,
935
,
935
,
/* 260 */
950
,
1175
,
1193
,
1189
,
950
,
950
,
950
,
950
,
950
,
950
,
/* 270 */
935
,
935
,
1099
,
935
,
935
,
1070
,
935
,
935
,
935
,
935
,
/* 270 */
950
,
950
,
1200
,
950
,
950
,
950
,
950
,
950
,
950
,
950
,
/* 280 */
935
,
935
,
935
,
935
,
935
,
935
,
935
,
935
,
1110
,
935
,
/* 280 */
950
,
1114
,
950
,
950
,
1085
,
950
,
950
,
950
,
950
,
950
,
/* 290 */
935
,
935
,
935
,
935
,
1122
,
1121
,
935
,
935
,
935
,
935
,
/* 290 */
950
,
950
,
950
,
950
,
950
,
950
,
950
,
1125
,
950
,
950
,
/* 300 */
935
,
935
,
935
,
935
,
935
,
935
,
935
,
935
,
935
,
935
,
/* 300 */
950
,
950
,
950
,
1137
,
1136
,
950
,
950
,
950
,
950
,
950
,
/* 310 */
935
,
935
,
935
,
935
,
1166
,
935
,
1161
,
935
,
1155
,
935
,
/* 310 */
950
,
950
,
950
,
950
,
950
,
950
,
950
,
950
,
950
,
950
,
/* 320 */
935
,
1082
,
935
,
935
,
935
,
935
,
935
,
935
,
935
,
935
,
/* 320 */
950
,
950
,
950
,
1181
,
950
,
1176
,
950
,
1170
,
950
,
950
,
/* 330 */
935
,
935
,
935
,
935
,
935
,
935
,
935
,
935
,
935
,
935
,
/* 330 */
1097
,
950
,
950
,
950
,
950
,
950
,
950
,
950
,
950
,
950
,
/* 340 */
935
,
935
,
935
,
935
,
935
,
935
,
935
,
935
,
935
,
935
,
/* 340 */
950
,
950
,
950
,
950
,
950
,
950
,
950
,
950
,
950
,
950
,
/* 350 */
935
,
935
,
935
,
935
,
935
,
935
,
935
,
935
,
1250
,
1245
,
/* 350 */
950
,
950
,
950
,
950
,
950
,
950
,
950
,
950
,
950
,
950
,
/* 360 */
1246
,
1243
,
935
,
935
,
935
,
935
,
935
,
1242
,
1237
,
1238
,
/* 360 */
950
,
950
,
950
,
950
,
950
,
950
,
950
,
1270
,
1265
,
1266
,
/* 370 */
935
,
935
,
935
,
1235
,
935
,
935
,
935
,
935
,
935
,
935
,
/* 370 */
1263
,
950
,
950
,
950
,
950
,
950
,
1262
,
1257
,
1258
,
950
,
/* 380 */
935
,
935
,
935
,
935
,
935
,
935
,
935
,
935
,
935
,
1026
,
/* 380 */
950
,
950
,
1255
,
950
,
950
,
950
,
950
,
950
,
950
,
950
,
/* 390 */
935
,
964
,
962
,
935
,
935
,
/* 390 */
950
,
950
,
950
,
950
,
950
,
950
,
950
,
950
,
1041
,
950
,
/* 400 */
979
,
977
,
950
,
950
,
};
};
/********** End of lemon-generated parsing tables *****************************/
/********** End of lemon-generated parsing tables *****************************/
...
@@ -574,6 +586,7 @@ static const YYCODETYPE yyFallback[] = {
...
@@ -574,6 +586,7 @@ static const YYCODETYPE yyFallback[] = {
0
,
/* LE => nothing */
0
,
/* LE => nothing */
0
,
/* BITAND => nothing */
0
,
/* BITAND => nothing */
0
,
/* BITOR => nothing */
0
,
/* BITOR => nothing */
0
,
/* BITXOR => nothing */
0
,
/* LSHIFT => nothing */
0
,
/* LSHIFT => nothing */
0
,
/* RSHIFT => nothing */
0
,
/* RSHIFT => nothing */
0
,
/* PLUS => nothing */
0
,
/* PLUS => nothing */
...
@@ -861,256 +874,257 @@ static const char *const yyTokenName[] = {
...
@@ -861,256 +874,257 @@ static const char *const yyTokenName[] = {
/* 32 */
"LE"
,
/* 32 */
"LE"
,
/* 33 */
"BITAND"
,
/* 33 */
"BITAND"
,
/* 34 */
"BITOR"
,
/* 34 */
"BITOR"
,
/* 35 */
"LSHIFT"
,
/* 35 */
"BITXOR"
,
/* 36 */
"RSHIFT"
,
/* 36 */
"LSHIFT"
,
/* 37 */
"PLUS"
,
/* 37 */
"RSHIFT"
,
/* 38 */
"MINUS"
,
/* 38 */
"PLUS"
,
/* 39 */
"DIVIDE"
,
/* 39 */
"MINUS"
,
/* 40 */
"TIMES"
,
/* 40 */
"DIVIDE"
,
/* 41 */
"STAR"
,
/* 41 */
"TIMES"
,
/* 42 */
"SLASH"
,
/* 42 */
"STAR"
,
/* 43 */
"REM"
,
/* 43 */
"SLASH"
,
/* 44 */
"UMINUS"
,
/* 44 */
"REM"
,
/* 45 */
"UPLUS"
,
/* 45 */
"UMINUS"
,
/* 46 */
"BITNOT"
,
/* 46 */
"UPLUS"
,
/* 47 */
"ARROW"
,
/* 47 */
"BITNOT"
,
/* 48 */
"SHOW"
,
/* 48 */
"ARROW"
,
/* 49 */
"DATABASES"
,
/* 49 */
"SHOW"
,
/* 50 */
"TOPICS"
,
/* 50 */
"DATABASES"
,
/* 51 */
"FUNCTIONS"
,
/* 51 */
"TOPICS"
,
/* 52 */
"MNODES"
,
/* 52 */
"FUNCTIONS"
,
/* 53 */
"DNODES"
,
/* 53 */
"MNODES"
,
/* 54 */
"ACCOUNTS"
,
/* 54 */
"DNODES"
,
/* 55 */
"USERS"
,
/* 55 */
"ACCOUNTS"
,
/* 56 */
"MODULES"
,
/* 56 */
"USERS"
,
/* 57 */
"QUERIES"
,
/* 57 */
"MODULES"
,
/* 58 */
"CONNECTIONS"
,
/* 58 */
"QUERIES"
,
/* 59 */
"STREAMS"
,
/* 59 */
"CONNECTIONS"
,
/* 60 */
"VARIABLES"
,
/* 60 */
"STREAMS"
,
/* 61 */
"SCORES"
,
/* 61 */
"VARIABLES"
,
/* 62 */
"GRANTS"
,
/* 62 */
"SCORES"
,
/* 63 */
"VNODES"
,
/* 63 */
"GRANTS"
,
/* 64 */
"DOT"
,
/* 64 */
"VNODES"
,
/* 65 */
"CREATE"
,
/* 65 */
"DOT"
,
/* 66 */
"TABLE"
,
/* 66 */
"CREATE"
,
/* 67 */
"STABLE"
,
/* 67 */
"TABLE"
,
/* 68 */
"DATABASE"
,
/* 68 */
"STABLE"
,
/* 69 */
"TABLES"
,
/* 69 */
"DATABASE"
,
/* 70 */
"STABLES"
,
/* 70 */
"TABLES"
,
/* 71 */
"VGROUPS"
,
/* 71 */
"STABLES"
,
/* 72 */
"DROP"
,
/* 72 */
"VGROUPS"
,
/* 73 */
"TOPIC"
,
/* 73 */
"DROP"
,
/* 74 */
"FUNCTION"
,
/* 74 */
"TOPIC"
,
/* 75 */
"DNODE"
,
/* 75 */
"FUNCTION"
,
/* 76 */
"USER"
,
/* 76 */
"DNODE"
,
/* 77 */
"ACCOUNT"
,
/* 77 */
"USER"
,
/* 78 */
"USE"
,
/* 78 */
"ACCOUNT"
,
/* 79 */
"DESCRIBE"
,
/* 79 */
"USE"
,
/* 80 */
"DESC"
,
/* 80 */
"DESCRIBE"
,
/* 81 */
"ALTER"
,
/* 81 */
"DESC"
,
/* 82 */
"PASS"
,
/* 82 */
"ALTER"
,
/* 83 */
"PRIVILEGE"
,
/* 83 */
"PASS"
,
/* 84 */
"LOCAL"
,
/* 84 */
"PRIVILEGE"
,
/* 85 */
"COMPACT"
,
/* 85 */
"LOCAL"
,
/* 86 */
"LP"
,
/* 86 */
"COMPACT"
,
/* 87 */
"RP"
,
/* 87 */
"LP"
,
/* 88 */
"IF"
,
/* 88 */
"RP"
,
/* 89 */
"EXISTS"
,
/* 89 */
"IF"
,
/* 90 */
"AS"
,
/* 90 */
"EXISTS"
,
/* 91 */
"OUTPUTTYPE"
,
/* 91 */
"AS"
,
/* 92 */
"AGGREGATE"
,
/* 92 */
"OUTPUTTYPE"
,
/* 93 */
"BUFSIZE"
,
/* 93 */
"AGGREGATE"
,
/* 94 */
"PPS"
,
/* 94 */
"BUFSIZE"
,
/* 95 */
"TSERIES"
,
/* 95 */
"PPS"
,
/* 96 */
"DBS"
,
/* 96 */
"TSERIES"
,
/* 97 */
"STORAGE"
,
/* 97 */
"DBS"
,
/* 98 */
"QTIME"
,
/* 98 */
"STORAGE"
,
/* 99 */
"CONNS"
,
/* 99 */
"QTIME"
,
/* 100 */
"STATE"
,
/* 100 */
"CONNS"
,
/* 101 */
"COMMA"
,
/* 101 */
"STATE"
,
/* 102 */
"KEEP"
,
/* 102 */
"COMMA"
,
/* 103 */
"CACHE"
,
/* 103 */
"KEEP"
,
/* 104 */
"REPLICA"
,
/* 104 */
"CACHE"
,
/* 105 */
"QUORUM"
,
/* 105 */
"REPLICA"
,
/* 106 */
"DAYS"
,
/* 106 */
"QUORUM"
,
/* 107 */
"MINROWS"
,
/* 107 */
"DAYS"
,
/* 108 */
"MAXROWS"
,
/* 108 */
"MINROWS"
,
/* 109 */
"BLOCKS"
,
/* 109 */
"MAXROWS"
,
/* 110 */
"CTIME"
,
/* 110 */
"BLOCKS"
,
/* 111 */
"WAL"
,
/* 111 */
"CTIME"
,
/* 112 */
"FSYNC"
,
/* 112 */
"WAL"
,
/* 113 */
"COMP"
,
/* 113 */
"FSYNC"
,
/* 114 */
"PRECISION"
,
/* 114 */
"COMP"
,
/* 115 */
"UPDATE"
,
/* 115 */
"PRECISION"
,
/* 116 */
"CACHELAST"
,
/* 116 */
"UPDATE"
,
/* 117 */
"PARTITIONS"
,
/* 117 */
"CACHELAST"
,
/* 118 */
"UNSIGNED"
,
/* 118 */
"PARTITIONS"
,
/* 119 */
"TAGS"
,
/* 119 */
"UNSIGNED"
,
/* 120 */
"USING"
,
/* 120 */
"TAGS"
,
/* 121 */
"NULL"
,
/* 121 */
"USING"
,
/* 122 */
"NOW"
,
/* 122 */
"NULL"
,
/* 123 */
"VARIABLE"
,
/* 123 */
"NOW"
,
/* 124 */
"SELECT"
,
/* 124 */
"VARIABLE"
,
/* 125 */
"UNION"
,
/* 125 */
"SELECT"
,
/* 126 */
"ALL"
,
/* 126 */
"UNION"
,
/* 127 */
"DISTINCT"
,
/* 127 */
"ALL"
,
/* 128 */
"FROM"
,
/* 128 */
"DISTINCT"
,
/* 129 */
"RANGE"
,
/* 129 */
"FROM"
,
/* 130 */
"INTERVAL"
,
/* 130 */
"RANGE"
,
/* 131 */
"EVERY"
,
/* 131 */
"INTERVAL"
,
/* 132 */
"SESSION"
,
/* 132 */
"EVERY"
,
/* 133 */
"STATE_WINDOW"
,
/* 133 */
"SESSION"
,
/* 134 */
"FILL"
,
/* 134 */
"STATE_WINDOW"
,
/* 135 */
"SLIDING"
,
/* 135 */
"FILL"
,
/* 136 */
"ORDER"
,
/* 136 */
"SLIDING"
,
/* 137 */
"BY"
,
/* 137 */
"ORDER"
,
/* 138 */
"ASC"
,
/* 138 */
"BY"
,
/* 139 */
"GROUP"
,
/* 139 */
"ASC"
,
/* 140 */
"HAVING"
,
/* 140 */
"GROUP"
,
/* 141 */
"LIMIT"
,
/* 141 */
"HAVING"
,
/* 142 */
"OFFSET"
,
/* 142 */
"LIMIT"
,
/* 143 */
"SLIMIT"
,
/* 143 */
"OFFSET"
,
/* 144 */
"SOFFSET"
,
/* 144 */
"SLIMIT"
,
/* 145 */
"WHERE"
,
/* 145 */
"SOFFSET"
,
/* 146 */
"RESET"
,
/* 146 */
"WHERE"
,
/* 147 */
"QUERY"
,
/* 147 */
"RESET"
,
/* 148 */
"SYNCDB"
,
/* 148 */
"QUERY"
,
/* 149 */
"ADD"
,
/* 149 */
"SYNCDB"
,
/* 150 */
"COLUMN"
,
/* 150 */
"ADD"
,
/* 151 */
"MODIFY"
,
/* 151 */
"COLUMN"
,
/* 152 */
"TAG"
,
/* 152 */
"MODIFY"
,
/* 153 */
"CHANGE"
,
/* 153 */
"TAG"
,
/* 154 */
"SET"
,
/* 154 */
"CHANGE"
,
/* 155 */
"KILL"
,
/* 155 */
"SET"
,
/* 156 */
"CONNECTION"
,
/* 156 */
"KILL"
,
/* 157 */
"STREAM"
,
/* 157 */
"CONNECTION"
,
/* 158 */
"COLON"
,
/* 158 */
"STREAM"
,
/* 159 */
"ABORT"
,
/* 159 */
"COLON"
,
/* 160 */
"AFTER"
,
/* 160 */
"ABORT"
,
/* 161 */
"ATTACH"
,
/* 161 */
"AFTER"
,
/* 162 */
"BEFORE"
,
/* 162 */
"ATTACH"
,
/* 163 */
"BEGIN"
,
/* 163 */
"BEFORE"
,
/* 164 */
"CASCADE"
,
/* 164 */
"BEGIN"
,
/* 165 */
"CLUSTER"
,
/* 165 */
"CASCADE"
,
/* 166 */
"CONFLICT"
,
/* 166 */
"CLUSTER"
,
/* 167 */
"COPY"
,
/* 167 */
"CONFLICT"
,
/* 168 */
"DEFERRED"
,
/* 168 */
"COPY"
,
/* 169 */
"DELIMITERS"
,
/* 169 */
"DEFERRED"
,
/* 170 */
"DETACH"
,
/* 170 */
"DELIMITERS"
,
/* 171 */
"EACH"
,
/* 171 */
"DETACH"
,
/* 172 */
"END"
,
/* 172 */
"EACH"
,
/* 173 */
"EXPLAIN"
,
/* 173 */
"END"
,
/* 174 */
"FAIL"
,
/* 174 */
"EXPLAIN"
,
/* 175 */
"FOR"
,
/* 175 */
"FAIL"
,
/* 176 */
"IGNORE"
,
/* 176 */
"FOR"
,
/* 177 */
"IMMEDIATE"
,
/* 177 */
"IGNORE"
,
/* 178 */
"INITIALLY"
,
/* 178 */
"IMMEDIATE"
,
/* 179 */
"INSTEAD"
,
/* 179 */
"INITIALLY"
,
/* 180 */
"KEY"
,
/* 180 */
"INSTEAD"
,
/* 181 */
"OF"
,
/* 181 */
"KEY"
,
/* 182 */
"RAISE"
,
/* 182 */
"OF"
,
/* 183 */
"REPLACE"
,
/* 183 */
"RAISE"
,
/* 184 */
"RESTRICT"
,
/* 184 */
"REPLACE"
,
/* 185 */
"ROW"
,
/* 185 */
"RESTRICT"
,
/* 186 */
"STATEMENT"
,
/* 186 */
"ROW"
,
/* 187 */
"TRIGGER"
,
/* 187 */
"STATEMENT"
,
/* 188 */
"VIEW"
,
/* 188 */
"TRIGGER"
,
/* 189 */
"IPTOKEN"
,
/* 189 */
"VIEW"
,
/* 190 */
"SEMI"
,
/* 190 */
"IPTOKEN"
,
/* 191 */
"NONE"
,
/* 191 */
"SEMI"
,
/* 192 */
"PREV"
,
/* 192 */
"NONE"
,
/* 193 */
"LINEAR"
,
/* 193 */
"PREV"
,
/* 194 */
"IMPORT"
,
/* 194 */
"LINEAR"
,
/* 195 */
"TBNAME"
,
/* 195 */
"IMPORT"
,
/* 196 */
"JOIN"
,
/* 196 */
"TBNAME"
,
/* 197 */
"INSERT"
,
/* 197 */
"JOIN"
,
/* 198 */
"INTO"
,
/* 198 */
"INSERT"
,
/* 199 */
"VALUES"
,
/* 199 */
"INTO"
,
/* 200 */
"FILE"
,
/* 200 */
"VALUES"
,
/* 201 */
"error"
,
/* 201 */
"FILE"
,
/* 202 */
"program"
,
/* 202 */
"error"
,
/* 203 */
"cmd"
,
/* 203 */
"program"
,
/* 204 */
"ids"
,
/* 204 */
"cmd"
,
/* 205 */
"dbPrefix"
,
/* 205 */
"ids"
,
/* 206 */
"cpxName"
,
/* 206 */
"dbPrefix"
,
/* 207 */
"ifexists"
,
/* 207 */
"cpxName"
,
/* 208 */
"alter_db_optr"
,
/* 208 */
"ifexists"
,
/* 209 */
"alter_topic_optr"
,
/* 209 */
"alter_db_optr"
,
/* 210 */
"acct_optr"
,
/* 210 */
"alter_topic_optr"
,
/* 211 */
"exprlist"
,
/* 211 */
"acct_optr"
,
/* 212 */
"ifnotexists"
,
/* 212 */
"exprlist"
,
/* 213 */
"db_optr"
,
/* 213 */
"ifnotexists"
,
/* 214 */
"topic_optr"
,
/* 214 */
"db_optr"
,
/* 215 */
"typename"
,
/* 215 */
"topic_optr"
,
/* 216 */
"bufsize"
,
/* 216 */
"typename"
,
/* 217 */
"pps"
,
/* 217 */
"bufsize"
,
/* 218 */
"tseries"
,
/* 218 */
"pps"
,
/* 219 */
"dbs"
,
/* 219 */
"tseries"
,
/* 220 */
"streams"
,
/* 220 */
"dbs"
,
/* 221 */
"storage"
,
/* 221 */
"streams"
,
/* 222 */
"qtime"
,
/* 222 */
"storage"
,
/* 223 */
"users"
,
/* 223 */
"qtime"
,
/* 224 */
"conns"
,
/* 224 */
"users"
,
/* 225 */
"state"
,
/* 225 */
"conns"
,
/* 226 */
"intitemlist"
,
/* 226 */
"state"
,
/* 227 */
"intitem"
,
/* 227 */
"intitemlist"
,
/* 228 */
"keep"
,
/* 228 */
"intitem"
,
/* 229 */
"cache"
,
/* 229 */
"keep"
,
/* 230 */
"replica"
,
/* 230 */
"cache"
,
/* 231 */
"quorum"
,
/* 231 */
"replica"
,
/* 232 */
"days"
,
/* 232 */
"quorum"
,
/* 233 */
"minrows"
,
/* 233 */
"days"
,
/* 234 */
"maxrows"
,
/* 234 */
"minrows"
,
/* 235 */
"blocks"
,
/* 235 */
"maxrows"
,
/* 236 */
"ctime"
,
/* 236 */
"blocks"
,
/* 237 */
"wal"
,
/* 237 */
"ctime"
,
/* 238 */
"fsync"
,
/* 238 */
"wal"
,
/* 239 */
"comp"
,
/* 239 */
"fsync"
,
/* 240 */
"prec"
,
/* 240 */
"comp"
,
/* 241 */
"update"
,
/* 241 */
"prec"
,
/* 242 */
"cachelast"
,
/* 242 */
"update"
,
/* 243 */
"partitions"
,
/* 243 */
"cachelast"
,
/* 244 */
"signed"
,
/* 244 */
"partitions"
,
/* 245 */
"create_table_args"
,
/* 245 */
"signed"
,
/* 246 */
"create_stable_args"
,
/* 246 */
"create_table_args"
,
/* 247 */
"create_table_list"
,
/* 247 */
"create_stable_args"
,
/* 248 */
"create_from_stable"
,
/* 248 */
"create_table_list"
,
/* 249 */
"columnlist"
,
/* 249 */
"create_from_stable"
,
/* 250 */
"tagitemlist"
,
/* 250 */
"columnlist"
,
/* 251 */
"tagNamelist"
,
/* 251 */
"tagitemlist"
,
/* 252 */
"select"
,
/* 252 */
"tagNamelist"
,
/* 253 */
"column"
,
/* 253 */
"select"
,
/* 254 */
"tagitem"
,
/* 254 */
"column"
,
/* 255 */
"selcollist"
,
/* 255 */
"tagitem"
,
/* 256 */
"from"
,
/* 256 */
"selcollist"
,
/* 257 */
"where_opt"
,
/* 257 */
"from"
,
/* 258 */
"range_option"
,
/* 258 */
"where_opt"
,
/* 259 */
"interval_option"
,
/* 259 */
"range_option"
,
/* 260 */
"sliding_opt"
,
/* 260 */
"interval_option"
,
/* 261 */
"session_option"
,
/* 261 */
"sliding_opt"
,
/* 262 */
"windowstate_option"
,
/* 262 */
"session_option"
,
/* 263 */
"fill_opt"
,
/* 263 */
"windowstate_option"
,
/* 264 */
"groupby_opt"
,
/* 264 */
"fill_opt"
,
/* 265 */
"having_opt"
,
/* 265 */
"groupby_opt"
,
/* 266 */
"orderby_opt"
,
/* 266 */
"having_opt"
,
/* 267 */
"slimit_opt"
,
/* 267 */
"orderby_opt"
,
/* 268 */
"limit_opt"
,
/* 268 */
"slimit_opt"
,
/* 269 */
"union"
,
/* 269 */
"limit_opt"
,
/* 270 */
"sclp"
,
/* 270 */
"union"
,
/* 271 */
"distinct"
,
/* 271 */
"sclp"
,
/* 272 */
"expr"
,
/* 272 */
"distinct"
,
/* 273 */
"as"
,
/* 273 */
"expr"
,
/* 274 */
"tablelist"
,
/* 274 */
"as"
,
/* 275 */
"sub"
,
/* 275 */
"tablelist"
,
/* 276 */
"tmvar"
,
/* 276 */
"sub"
,
/* 277 */
"timestamp"
,
/* 277 */
"tmvar"
,
/* 278 */
"intervalKey"
,
/* 278 */
"timestamp"
,
/* 279 */
"sortlist"
,
/* 279 */
"intervalKey"
,
/* 280 */
"item"
,
/* 280 */
"sortlist"
,
/* 281 */
"sortorder"
,
/* 281 */
"item"
,
/* 282 */
"arrow"
,
/* 282 */
"sortorder"
,
/* 283 */
"grouplist"
,
/* 283 */
"arrow"
,
/* 284 */
"expritem"
,
/* 284 */
"grouplist"
,
/* 285 */
"expritem"
,
};
};
#endif
/* defined(YYCOVERAGE) || !defined(NDEBUG) */
#endif
/* defined(YYCOVERAGE) || !defined(NDEBUG) */
...
@@ -1400,40 +1414,45 @@ static const char *const yyRuleName[] = {
...
@@ -1400,40 +1414,45 @@ static const char *const yyRuleName[] = {
/* 279 */
"expr ::= expr SLASH expr"
,
/* 279 */
"expr ::= expr SLASH expr"
,
/* 280 */
"expr ::= expr REM expr"
,
/* 280 */
"expr ::= expr REM expr"
,
/* 281 */
"expr ::= expr BITAND expr"
,
/* 281 */
"expr ::= expr BITAND expr"
,
/* 282 */
"expr ::= expr LIKE expr"
,
/* 282 */
"expr ::= expr BITOR expr"
,
/* 283 */
"expr ::= expr MATCH expr"
,
/* 283 */
"expr ::= expr BITXOR expr"
,
/* 284 */
"expr ::= expr NMATCH expr"
,
/* 284 */
"expr ::= BITNOT expr"
,
/* 285 */
"expr ::= ID CONTAINS STRING"
,
/* 285 */
"expr ::= expr LSHIFT expr"
,
/* 286 */
"expr ::= ID DOT ID CONTAINS STRING"
,
/* 286 */
"expr ::= expr RSHIFT expr"
,
/* 287 */
"arrow ::= ID ARROW STRING"
,
/* 287 */
"expr ::= expr LIKE expr"
,
/* 288 */
"arrow ::= ID DOT ID ARROW STRING"
,
/* 288 */
"expr ::= expr MATCH expr"
,
/* 289 */
"expr ::= arrow"
,
/* 289 */
"expr ::= expr NMATCH expr"
,
/* 290 */
"expr ::= expr IN LP exprlist RP"
,
/* 290 */
"expr ::= ID CONTAINS STRING"
,
/* 291 */
"exprlist ::= exprlist COMMA expritem"
,
/* 291 */
"expr ::= ID DOT ID CONTAINS STRING"
,
/* 292 */
"exprlist ::= expritem"
,
/* 292 */
"arrow ::= ID ARROW STRING"
,
/* 293 */
"expritem ::= expr"
,
/* 293 */
"arrow ::= ID DOT ID ARROW STRING"
,
/* 294 */
"expritem ::="
,
/* 294 */
"expr ::= arrow"
,
/* 295 */
"cmd ::= RESET QUERY CACHE"
,
/* 295 */
"expr ::= expr IN LP exprlist RP"
,
/* 296 */
"cmd ::= SYNCDB ids REPLICA"
,
/* 296 */
"exprlist ::= exprlist COMMA expritem"
,
/* 297 */
"cmd ::= ALTER TABLE ids cpxName ADD COLUMN columnlist"
,
/* 297 */
"exprlist ::= expritem"
,
/* 298 */
"cmd ::= ALTER TABLE ids cpxName DROP COLUMN ids"
,
/* 298 */
"expritem ::= expr"
,
/* 299 */
"cmd ::= ALTER TABLE ids cpxName MODIFY COLUMN columnlist"
,
/* 299 */
"expritem ::="
,
/* 300 */
"cmd ::= ALTER TABLE ids cpxName ADD TAG columnlist"
,
/* 300 */
"cmd ::= RESET QUERY CACHE"
,
/* 301 */
"cmd ::= ALTER TABLE ids cpxName DROP TAG ids"
,
/* 301 */
"cmd ::= SYNCDB ids REPLICA"
,
/* 302 */
"cmd ::= ALTER TABLE ids cpxName CHANGE TAG ids ids"
,
/* 302 */
"cmd ::= ALTER TABLE ids cpxName ADD COLUMN columnlist"
,
/* 303 */
"cmd ::= ALTER TABLE ids cpxName SET TAG ids EQ tagitem"
,
/* 303 */
"cmd ::= ALTER TABLE ids cpxName DROP COLUMN ids"
,
/* 304 */
"cmd ::= ALTER TABLE ids cpxName MODIFY TAG columnlist"
,
/* 304 */
"cmd ::= ALTER TABLE ids cpxName MODIFY COLUMN columnlist"
,
/* 305 */
"cmd ::= ALTER STABLE ids cpxName ADD COLUMN columnlist"
,
/* 305 */
"cmd ::= ALTER TABLE ids cpxName ADD TAG columnlist"
,
/* 306 */
"cmd ::= ALTER STABLE ids cpxName DROP COLUMN ids"
,
/* 306 */
"cmd ::= ALTER TABLE ids cpxName DROP TAG ids"
,
/* 307 */
"cmd ::= ALTER STABLE ids cpxName MODIFY COLUMN columnlist"
,
/* 307 */
"cmd ::= ALTER TABLE ids cpxName CHANGE TAG ids ids"
,
/* 308 */
"cmd ::= ALTER STABLE ids cpxName ADD TAG columnlist"
,
/* 308 */
"cmd ::= ALTER TABLE ids cpxName SET TAG ids EQ tagitem"
,
/* 309 */
"cmd ::= ALTER STABLE ids cpxName DROP TAG ids"
,
/* 309 */
"cmd ::= ALTER TABLE ids cpxName MODIFY TAG columnlist"
,
/* 310 */
"cmd ::= ALTER STABLE ids cpxName CHANGE TAG ids ids"
,
/* 310 */
"cmd ::= ALTER STABLE ids cpxName ADD COLUMN columnlist"
,
/* 311 */
"cmd ::= ALTER STABLE ids cpxName SET TAG ids EQ tagitem"
,
/* 311 */
"cmd ::= ALTER STABLE ids cpxName DROP COLUMN ids"
,
/* 312 */
"cmd ::= ALTER STABLE ids cpxName MODIFY TAG columnlist"
,
/* 312 */
"cmd ::= ALTER STABLE ids cpxName MODIFY COLUMN columnlist"
,
/* 313 */
"cmd ::= KILL CONNECTION INTEGER"
,
/* 313 */
"cmd ::= ALTER STABLE ids cpxName ADD TAG columnlist"
,
/* 314 */
"cmd ::= KILL STREAM INTEGER COLON INTEGER"
,
/* 314 */
"cmd ::= ALTER STABLE ids cpxName DROP TAG ids"
,
/* 315 */
"cmd ::= KILL QUERY INTEGER COLON INTEGER"
,
/* 315 */
"cmd ::= ALTER STABLE ids cpxName CHANGE TAG ids ids"
,
/* 316 */
"cmd ::= ALTER STABLE ids cpxName SET TAG ids EQ tagitem"
,
/* 317 */
"cmd ::= ALTER STABLE ids cpxName MODIFY TAG columnlist"
,
/* 318 */
"cmd ::= KILL CONNECTION INTEGER"
,
/* 319 */
"cmd ::= KILL STREAM INTEGER COLON INTEGER"
,
/* 320 */
"cmd ::= KILL QUERY INTEGER COLON INTEGER"
,
};
};
#endif
/* NDEBUG */
#endif
/* NDEBUG */
...
@@ -1554,57 +1573,57 @@ static void yy_destructor(
...
@@ -1554,57 +1573,57 @@ static void yy_destructor(
** inside the C code.
** inside the C code.
*/
*/
/********* Begin destructor definitions ***************************************/
/********* Begin destructor definitions ***************************************/
case
21
1
:
/* exprlist */
case
21
2
:
/* exprlist */
case
25
5
:
/* selcollist */
case
25
6
:
/* selcollist */
case
27
0
:
/* sclp */
case
27
1
:
/* sclp */
{
{
tSqlExprListDestroy
((
yypminor
->
yy
231
));
tSqlExprListDestroy
((
yypminor
->
yy
373
));
}
}
break
;
break
;
case
22
6
:
/* intitemlist */
case
22
7
:
/* intitemlist */
case
22
8
:
/* keep */
case
22
9
:
/* keep */
case
2
49
:
/* columnlist */
case
2
50
:
/* columnlist */
case
25
0
:
/* tagitemlist */
case
25
1
:
/* tagitemlist */
case
25
1
:
/* tagNamelist */
case
25
2
:
/* tagNamelist */
case
26
3
:
/* fill_opt */
case
26
4
:
/* fill_opt */
case
26
4
:
/* groupby_opt */
case
26
5
:
/* groupby_opt */
case
26
6
:
/* orderby_opt */
case
26
7
:
/* orderby_opt */
case
2
79
:
/* sortlist */
case
2
80
:
/* sortlist */
case
28
3
:
/* grouplist */
case
28
4
:
/* grouplist */
{
{
taosArrayDestroy
(
&
(
yypminor
->
yy
231
));
taosArrayDestroy
(
&
(
yypminor
->
yy
373
));
}
}
break
;
break
;
case
24
7
:
/* create_table_list */
case
24
8
:
/* create_table_list */
{
{
destroyCreateTableSql
((
yypminor
->
yy
422
));
destroyCreateTableSql
((
yypminor
->
yy
118
));
}
}
break
;
break
;
case
25
2
:
/* select */
case
25
3
:
/* select */
{
{
destroySqlNode
((
yypminor
->
yy
86
));
destroySqlNode
((
yypminor
->
yy
564
));
}
}
break
;
break
;
case
25
6
:
/* from */
case
25
7
:
/* from */
case
27
4
:
/* tablelist */
case
27
5
:
/* tablelist */
case
27
5
:
/* sub */
case
27
6
:
/* sub */
{
{
destroyRelationInfo
((
yypminor
->
yy
484
));
destroyRelationInfo
((
yypminor
->
yy
192
));
}
}
break
;
break
;
case
25
7
:
/* where_opt */
case
25
8
:
/* where_opt */
case
26
5
:
/* having_opt */
case
26
6
:
/* having_opt */
case
27
2
:
/* expr */
case
27
3
:
/* expr */
case
27
7
:
/* timestamp */
case
27
8
:
/* timestamp */
case
28
2
:
/* arrow */
case
28
3
:
/* arrow */
case
28
4
:
/* expritem */
case
28
5
:
/* expritem */
{
{
tSqlExprDestroy
((
yypminor
->
yy
22
6
));
tSqlExprDestroy
((
yypminor
->
yy
4
6
));
}
}
break
;
break
;
case
2
69
:
/* union */
case
2
70
:
/* union */
{
{
destroyAllSqlNode
((
yypminor
->
yy
231
));
destroyAllSqlNode
((
yypminor
->
yy
373
));
}
}
break
;
break
;
/********* End destructor definitions *****************************************/
/********* End destructor definitions *****************************************/
...
@@ -1898,322 +1917,327 @@ static const struct {
...
@@ -1898,322 +1917,327 @@ static const struct {
YYCODETYPE
lhs
;
/* Symbol on the left-hand side of the rule */
YYCODETYPE
lhs
;
/* Symbol on the left-hand side of the rule */
signed
char
nrhs
;
/* Negative of the number of RHS symbols in the rule */
signed
char
nrhs
;
/* Negative of the number of RHS symbols in the rule */
}
yyRuleInfo
[]
=
{
}
yyRuleInfo
[]
=
{
{
202
,
-
1
},
/* (0) program ::= cmd */
{
203
,
-
1
},
/* (0) program ::= cmd */
{
203
,
-
2
},
/* (1) cmd ::= SHOW DATABASES */
{
204
,
-
2
},
/* (1) cmd ::= SHOW DATABASES */
{
203
,
-
2
},
/* (2) cmd ::= SHOW TOPICS */
{
204
,
-
2
},
/* (2) cmd ::= SHOW TOPICS */
{
203
,
-
2
},
/* (3) cmd ::= SHOW FUNCTIONS */
{
204
,
-
2
},
/* (3) cmd ::= SHOW FUNCTIONS */
{
203
,
-
2
},
/* (4) cmd ::= SHOW MNODES */
{
204
,
-
2
},
/* (4) cmd ::= SHOW MNODES */
{
203
,
-
2
},
/* (5) cmd ::= SHOW DNODES */
{
204
,
-
2
},
/* (5) cmd ::= SHOW DNODES */
{
203
,
-
2
},
/* (6) cmd ::= SHOW ACCOUNTS */
{
204
,
-
2
},
/* (6) cmd ::= SHOW ACCOUNTS */
{
203
,
-
2
},
/* (7) cmd ::= SHOW USERS */
{
204
,
-
2
},
/* (7) cmd ::= SHOW USERS */
{
203
,
-
2
},
/* (8) cmd ::= SHOW MODULES */
{
204
,
-
2
},
/* (8) cmd ::= SHOW MODULES */
{
203
,
-
2
},
/* (9) cmd ::= SHOW QUERIES */
{
204
,
-
2
},
/* (9) cmd ::= SHOW QUERIES */
{
203
,
-
2
},
/* (10) cmd ::= SHOW CONNECTIONS */
{
204
,
-
2
},
/* (10) cmd ::= SHOW CONNECTIONS */
{
203
,
-
2
},
/* (11) cmd ::= SHOW STREAMS */
{
204
,
-
2
},
/* (11) cmd ::= SHOW STREAMS */
{
203
,
-
2
},
/* (12) cmd ::= SHOW VARIABLES */
{
204
,
-
2
},
/* (12) cmd ::= SHOW VARIABLES */
{
203
,
-
2
},
/* (13) cmd ::= SHOW SCORES */
{
204
,
-
2
},
/* (13) cmd ::= SHOW SCORES */
{
203
,
-
2
},
/* (14) cmd ::= SHOW GRANTS */
{
204
,
-
2
},
/* (14) cmd ::= SHOW GRANTS */
{
203
,
-
2
},
/* (15) cmd ::= SHOW VNODES */
{
204
,
-
2
},
/* (15) cmd ::= SHOW VNODES */
{
203
,
-
3
},
/* (16) cmd ::= SHOW VNODES ids */
{
204
,
-
3
},
/* (16) cmd ::= SHOW VNODES ids */
{
205
,
0
},
/* (17) dbPrefix ::= */
{
206
,
0
},
/* (17) dbPrefix ::= */
{
205
,
-
2
},
/* (18) dbPrefix ::= ids DOT */
{
206
,
-
2
},
/* (18) dbPrefix ::= ids DOT */
{
206
,
0
},
/* (19) cpxName ::= */
{
207
,
0
},
/* (19) cpxName ::= */
{
206
,
-
2
},
/* (20) cpxName ::= DOT ids */
{
207
,
-
2
},
/* (20) cpxName ::= DOT ids */
{
203
,
-
5
},
/* (21) cmd ::= SHOW CREATE TABLE ids cpxName */
{
204
,
-
5
},
/* (21) cmd ::= SHOW CREATE TABLE ids cpxName */
{
203
,
-
5
},
/* (22) cmd ::= SHOW CREATE STABLE ids cpxName */
{
204
,
-
5
},
/* (22) cmd ::= SHOW CREATE STABLE ids cpxName */
{
203
,
-
4
},
/* (23) cmd ::= SHOW CREATE DATABASE ids */
{
204
,
-
4
},
/* (23) cmd ::= SHOW CREATE DATABASE ids */
{
203
,
-
3
},
/* (24) cmd ::= SHOW dbPrefix TABLES */
{
204
,
-
3
},
/* (24) cmd ::= SHOW dbPrefix TABLES */
{
203
,
-
5
},
/* (25) cmd ::= SHOW dbPrefix TABLES LIKE ids */
{
204
,
-
5
},
/* (25) cmd ::= SHOW dbPrefix TABLES LIKE ids */
{
203
,
-
3
},
/* (26) cmd ::= SHOW dbPrefix STABLES */
{
204
,
-
3
},
/* (26) cmd ::= SHOW dbPrefix STABLES */
{
203
,
-
5
},
/* (27) cmd ::= SHOW dbPrefix STABLES LIKE ids */
{
204
,
-
5
},
/* (27) cmd ::= SHOW dbPrefix STABLES LIKE ids */
{
203
,
-
3
},
/* (28) cmd ::= SHOW dbPrefix VGROUPS */
{
204
,
-
3
},
/* (28) cmd ::= SHOW dbPrefix VGROUPS */
{
203
,
-
5
},
/* (29) cmd ::= DROP TABLE ifexists ids cpxName */
{
204
,
-
5
},
/* (29) cmd ::= DROP TABLE ifexists ids cpxName */
{
203
,
-
5
},
/* (30) cmd ::= DROP STABLE ifexists ids cpxName */
{
204
,
-
5
},
/* (30) cmd ::= DROP STABLE ifexists ids cpxName */
{
203
,
-
4
},
/* (31) cmd ::= DROP DATABASE ifexists ids */
{
204
,
-
4
},
/* (31) cmd ::= DROP DATABASE ifexists ids */
{
203
,
-
4
},
/* (32) cmd ::= DROP TOPIC ifexists ids */
{
204
,
-
4
},
/* (32) cmd ::= DROP TOPIC ifexists ids */
{
203
,
-
3
},
/* (33) cmd ::= DROP FUNCTION ids */
{
204
,
-
3
},
/* (33) cmd ::= DROP FUNCTION ids */
{
203
,
-
3
},
/* (34) cmd ::= DROP DNODE ids */
{
204
,
-
3
},
/* (34) cmd ::= DROP DNODE ids */
{
203
,
-
3
},
/* (35) cmd ::= DROP USER ids */
{
204
,
-
3
},
/* (35) cmd ::= DROP USER ids */
{
203
,
-
3
},
/* (36) cmd ::= DROP ACCOUNT ids */
{
204
,
-
3
},
/* (36) cmd ::= DROP ACCOUNT ids */
{
203
,
-
2
},
/* (37) cmd ::= USE ids */
{
204
,
-
2
},
/* (37) cmd ::= USE ids */
{
203
,
-
3
},
/* (38) cmd ::= DESCRIBE ids cpxName */
{
204
,
-
3
},
/* (38) cmd ::= DESCRIBE ids cpxName */
{
203
,
-
3
},
/* (39) cmd ::= DESC ids cpxName */
{
204
,
-
3
},
/* (39) cmd ::= DESC ids cpxName */
{
203
,
-
5
},
/* (40) cmd ::= ALTER USER ids PASS ids */
{
204
,
-
5
},
/* (40) cmd ::= ALTER USER ids PASS ids */
{
203
,
-
5
},
/* (41) cmd ::= ALTER USER ids PRIVILEGE ids */
{
204
,
-
5
},
/* (41) cmd ::= ALTER USER ids PRIVILEGE ids */
{
203
,
-
4
},
/* (42) cmd ::= ALTER DNODE ids ids */
{
204
,
-
4
},
/* (42) cmd ::= ALTER DNODE ids ids */
{
203
,
-
5
},
/* (43) cmd ::= ALTER DNODE ids ids ids */
{
204
,
-
5
},
/* (43) cmd ::= ALTER DNODE ids ids ids */
{
203
,
-
3
},
/* (44) cmd ::= ALTER LOCAL ids */
{
204
,
-
3
},
/* (44) cmd ::= ALTER LOCAL ids */
{
203
,
-
4
},
/* (45) cmd ::= ALTER LOCAL ids ids */
{
204
,
-
4
},
/* (45) cmd ::= ALTER LOCAL ids ids */
{
203
,
-
4
},
/* (46) cmd ::= ALTER DATABASE ids alter_db_optr */
{
204
,
-
4
},
/* (46) cmd ::= ALTER DATABASE ids alter_db_optr */
{
203
,
-
4
},
/* (47) cmd ::= ALTER TOPIC ids alter_topic_optr */
{
204
,
-
4
},
/* (47) cmd ::= ALTER TOPIC ids alter_topic_optr */
{
203
,
-
4
},
/* (48) cmd ::= ALTER ACCOUNT ids acct_optr */
{
204
,
-
4
},
/* (48) cmd ::= ALTER ACCOUNT ids acct_optr */
{
203
,
-
6
},
/* (49) cmd ::= ALTER ACCOUNT ids PASS ids acct_optr */
{
204
,
-
6
},
/* (49) cmd ::= ALTER ACCOUNT ids PASS ids acct_optr */
{
203
,
-
6
},
/* (50) cmd ::= COMPACT VNODES IN LP exprlist RP */
{
204
,
-
6
},
/* (50) cmd ::= COMPACT VNODES IN LP exprlist RP */
{
204
,
-
1
},
/* (51) ids ::= ID */
{
205
,
-
1
},
/* (51) ids ::= ID */
{
204
,
-
1
},
/* (52) ids ::= STRING */
{
205
,
-
1
},
/* (52) ids ::= STRING */
{
207
,
-
2
},
/* (53) ifexists ::= IF EXISTS */
{
208
,
-
2
},
/* (53) ifexists ::= IF EXISTS */
{
207
,
0
},
/* (54) ifexists ::= */
{
208
,
0
},
/* (54) ifexists ::= */
{
212
,
-
3
},
/* (55) ifnotexists ::= IF NOT EXISTS */
{
213
,
-
3
},
/* (55) ifnotexists ::= IF NOT EXISTS */
{
212
,
0
},
/* (56) ifnotexists ::= */
{
213
,
0
},
/* (56) ifnotexists ::= */
{
203
,
-
3
},
/* (57) cmd ::= CREATE DNODE ids */
{
204
,
-
3
},
/* (57) cmd ::= CREATE DNODE ids */
{
203
,
-
6
},
/* (58) cmd ::= CREATE ACCOUNT ids PASS ids acct_optr */
{
204
,
-
6
},
/* (58) cmd ::= CREATE ACCOUNT ids PASS ids acct_optr */
{
203
,
-
5
},
/* (59) cmd ::= CREATE DATABASE ifnotexists ids db_optr */
{
204
,
-
5
},
/* (59) cmd ::= CREATE DATABASE ifnotexists ids db_optr */
{
203
,
-
5
},
/* (60) cmd ::= CREATE TOPIC ifnotexists ids topic_optr */
{
204
,
-
5
},
/* (60) cmd ::= CREATE TOPIC ifnotexists ids topic_optr */
{
203
,
-
8
},
/* (61) cmd ::= CREATE FUNCTION ids AS ids OUTPUTTYPE typename bufsize */
{
204
,
-
8
},
/* (61) cmd ::= CREATE FUNCTION ids AS ids OUTPUTTYPE typename bufsize */
{
203
,
-
9
},
/* (62) cmd ::= CREATE AGGREGATE FUNCTION ids AS ids OUTPUTTYPE typename bufsize */
{
204
,
-
9
},
/* (62) cmd ::= CREATE AGGREGATE FUNCTION ids AS ids OUTPUTTYPE typename bufsize */
{
203
,
-
5
},
/* (63) cmd ::= CREATE USER ids PASS ids */
{
204
,
-
5
},
/* (63) cmd ::= CREATE USER ids PASS ids */
{
216
,
0
},
/* (64) bufsize ::= */
{
217
,
0
},
/* (64) bufsize ::= */
{
216
,
-
2
},
/* (65) bufsize ::= BUFSIZE INTEGER */
{
217
,
-
2
},
/* (65) bufsize ::= BUFSIZE INTEGER */
{
217
,
0
},
/* (66) pps ::= */
{
218
,
0
},
/* (66) pps ::= */
{
217
,
-
2
},
/* (67) pps ::= PPS INTEGER */
{
218
,
-
2
},
/* (67) pps ::= PPS INTEGER */
{
218
,
0
},
/* (68) tseries ::= */
{
219
,
0
},
/* (68) tseries ::= */
{
218
,
-
2
},
/* (69) tseries ::= TSERIES INTEGER */
{
219
,
-
2
},
/* (69) tseries ::= TSERIES INTEGER */
{
219
,
0
},
/* (70) dbs ::= */
{
220
,
0
},
/* (70) dbs ::= */
{
219
,
-
2
},
/* (71) dbs ::= DBS INTEGER */
{
220
,
-
2
},
/* (71) dbs ::= DBS INTEGER */
{
220
,
0
},
/* (72) streams ::= */
{
221
,
0
},
/* (72) streams ::= */
{
220
,
-
2
},
/* (73) streams ::= STREAMS INTEGER */
{
221
,
-
2
},
/* (73) streams ::= STREAMS INTEGER */
{
221
,
0
},
/* (74) storage ::= */
{
222
,
0
},
/* (74) storage ::= */
{
221
,
-
2
},
/* (75) storage ::= STORAGE INTEGER */
{
222
,
-
2
},
/* (75) storage ::= STORAGE INTEGER */
{
222
,
0
},
/* (76) qtime ::= */
{
223
,
0
},
/* (76) qtime ::= */
{
222
,
-
2
},
/* (77) qtime ::= QTIME INTEGER */
{
223
,
-
2
},
/* (77) qtime ::= QTIME INTEGER */
{
223
,
0
},
/* (78) users ::= */
{
224
,
0
},
/* (78) users ::= */
{
223
,
-
2
},
/* (79) users ::= USERS INTEGER */
{
224
,
-
2
},
/* (79) users ::= USERS INTEGER */
{
224
,
0
},
/* (80) conns ::= */
{
225
,
0
},
/* (80) conns ::= */
{
224
,
-
2
},
/* (81) conns ::= CONNS INTEGER */
{
225
,
-
2
},
/* (81) conns ::= CONNS INTEGER */
{
225
,
0
},
/* (82) state ::= */
{
226
,
0
},
/* (82) state ::= */
{
225
,
-
2
},
/* (83) state ::= STATE ids */
{
226
,
-
2
},
/* (83) state ::= STATE ids */
{
210
,
-
9
},
/* (84) acct_optr ::= pps tseries storage streams qtime dbs users conns state */
{
211
,
-
9
},
/* (84) acct_optr ::= pps tseries storage streams qtime dbs users conns state */
{
226
,
-
3
},
/* (85) intitemlist ::= intitemlist COMMA intitem */
{
227
,
-
3
},
/* (85) intitemlist ::= intitemlist COMMA intitem */
{
226
,
-
1
},
/* (86) intitemlist ::= intitem */
{
227
,
-
1
},
/* (86) intitemlist ::= intitem */
{
227
,
-
1
},
/* (87) intitem ::= INTEGER */
{
228
,
-
1
},
/* (87) intitem ::= INTEGER */
{
228
,
-
2
},
/* (88) keep ::= KEEP intitemlist */
{
229
,
-
2
},
/* (88) keep ::= KEEP intitemlist */
{
229
,
-
2
},
/* (89) cache ::= CACHE INTEGER */
{
230
,
-
2
},
/* (89) cache ::= CACHE INTEGER */
{
230
,
-
2
},
/* (90) replica ::= REPLICA INTEGER */
{
231
,
-
2
},
/* (90) replica ::= REPLICA INTEGER */
{
231
,
-
2
},
/* (91) quorum ::= QUORUM INTEGER */
{
232
,
-
2
},
/* (91) quorum ::= QUORUM INTEGER */
{
232
,
-
2
},
/* (92) days ::= DAYS INTEGER */
{
233
,
-
2
},
/* (92) days ::= DAYS INTEGER */
{
233
,
-
2
},
/* (93) minrows ::= MINROWS INTEGER */
{
234
,
-
2
},
/* (93) minrows ::= MINROWS INTEGER */
{
234
,
-
2
},
/* (94) maxrows ::= MAXROWS INTEGER */
{
235
,
-
2
},
/* (94) maxrows ::= MAXROWS INTEGER */
{
235
,
-
2
},
/* (95) blocks ::= BLOCKS INTEGER */
{
236
,
-
2
},
/* (95) blocks ::= BLOCKS INTEGER */
{
236
,
-
2
},
/* (96) ctime ::= CTIME INTEGER */
{
237
,
-
2
},
/* (96) ctime ::= CTIME INTEGER */
{
237
,
-
2
},
/* (97) wal ::= WAL INTEGER */
{
238
,
-
2
},
/* (97) wal ::= WAL INTEGER */
{
238
,
-
2
},
/* (98) fsync ::= FSYNC INTEGER */
{
239
,
-
2
},
/* (98) fsync ::= FSYNC INTEGER */
{
239
,
-
2
},
/* (99) comp ::= COMP INTEGER */
{
240
,
-
2
},
/* (99) comp ::= COMP INTEGER */
{
240
,
-
2
},
/* (100) prec ::= PRECISION STRING */
{
241
,
-
2
},
/* (100) prec ::= PRECISION STRING */
{
241
,
-
2
},
/* (101) update ::= UPDATE INTEGER */
{
242
,
-
2
},
/* (101) update ::= UPDATE INTEGER */
{
242
,
-
2
},
/* (102) cachelast ::= CACHELAST INTEGER */
{
243
,
-
2
},
/* (102) cachelast ::= CACHELAST INTEGER */
{
243
,
-
2
},
/* (103) partitions ::= PARTITIONS INTEGER */
{
244
,
-
2
},
/* (103) partitions ::= PARTITIONS INTEGER */
{
213
,
0
},
/* (104) db_optr ::= */
{
214
,
0
},
/* (104) db_optr ::= */
{
213
,
-
2
},
/* (105) db_optr ::= db_optr cache */
{
214
,
-
2
},
/* (105) db_optr ::= db_optr cache */
{
213
,
-
2
},
/* (106) db_optr ::= db_optr replica */
{
214
,
-
2
},
/* (106) db_optr ::= db_optr replica */
{
213
,
-
2
},
/* (107) db_optr ::= db_optr quorum */
{
214
,
-
2
},
/* (107) db_optr ::= db_optr quorum */
{
213
,
-
2
},
/* (108) db_optr ::= db_optr days */
{
214
,
-
2
},
/* (108) db_optr ::= db_optr days */
{
213
,
-
2
},
/* (109) db_optr ::= db_optr minrows */
{
214
,
-
2
},
/* (109) db_optr ::= db_optr minrows */
{
213
,
-
2
},
/* (110) db_optr ::= db_optr maxrows */
{
214
,
-
2
},
/* (110) db_optr ::= db_optr maxrows */
{
213
,
-
2
},
/* (111) db_optr ::= db_optr blocks */
{
214
,
-
2
},
/* (111) db_optr ::= db_optr blocks */
{
213
,
-
2
},
/* (112) db_optr ::= db_optr ctime */
{
214
,
-
2
},
/* (112) db_optr ::= db_optr ctime */
{
213
,
-
2
},
/* (113) db_optr ::= db_optr wal */
{
214
,
-
2
},
/* (113) db_optr ::= db_optr wal */
{
213
,
-
2
},
/* (114) db_optr ::= db_optr fsync */
{
214
,
-
2
},
/* (114) db_optr ::= db_optr fsync */
{
213
,
-
2
},
/* (115) db_optr ::= db_optr comp */
{
214
,
-
2
},
/* (115) db_optr ::= db_optr comp */
{
213
,
-
2
},
/* (116) db_optr ::= db_optr prec */
{
214
,
-
2
},
/* (116) db_optr ::= db_optr prec */
{
213
,
-
2
},
/* (117) db_optr ::= db_optr keep */
{
214
,
-
2
},
/* (117) db_optr ::= db_optr keep */
{
213
,
-
2
},
/* (118) db_optr ::= db_optr update */
{
214
,
-
2
},
/* (118) db_optr ::= db_optr update */
{
213
,
-
2
},
/* (119) db_optr ::= db_optr cachelast */
{
214
,
-
2
},
/* (119) db_optr ::= db_optr cachelast */
{
214
,
-
1
},
/* (120) topic_optr ::= db_optr */
{
215
,
-
1
},
/* (120) topic_optr ::= db_optr */
{
214
,
-
2
},
/* (121) topic_optr ::= topic_optr partitions */
{
215
,
-
2
},
/* (121) topic_optr ::= topic_optr partitions */
{
208
,
0
},
/* (122) alter_db_optr ::= */
{
209
,
0
},
/* (122) alter_db_optr ::= */
{
208
,
-
2
},
/* (123) alter_db_optr ::= alter_db_optr replica */
{
209
,
-
2
},
/* (123) alter_db_optr ::= alter_db_optr replica */
{
208
,
-
2
},
/* (124) alter_db_optr ::= alter_db_optr quorum */
{
209
,
-
2
},
/* (124) alter_db_optr ::= alter_db_optr quorum */
{
208
,
-
2
},
/* (125) alter_db_optr ::= alter_db_optr keep */
{
209
,
-
2
},
/* (125) alter_db_optr ::= alter_db_optr keep */
{
208
,
-
2
},
/* (126) alter_db_optr ::= alter_db_optr blocks */
{
209
,
-
2
},
/* (126) alter_db_optr ::= alter_db_optr blocks */
{
208
,
-
2
},
/* (127) alter_db_optr ::= alter_db_optr comp */
{
209
,
-
2
},
/* (127) alter_db_optr ::= alter_db_optr comp */
{
208
,
-
2
},
/* (128) alter_db_optr ::= alter_db_optr update */
{
209
,
-
2
},
/* (128) alter_db_optr ::= alter_db_optr update */
{
208
,
-
2
},
/* (129) alter_db_optr ::= alter_db_optr cachelast */
{
209
,
-
2
},
/* (129) alter_db_optr ::= alter_db_optr cachelast */
{
209
,
-
1
},
/* (130) alter_topic_optr ::= alter_db_optr */
{
210
,
-
1
},
/* (130) alter_topic_optr ::= alter_db_optr */
{
209
,
-
2
},
/* (131) alter_topic_optr ::= alter_topic_optr partitions */
{
210
,
-
2
},
/* (131) alter_topic_optr ::= alter_topic_optr partitions */
{
215
,
-
1
},
/* (132) typename ::= ids */
{
216
,
-
1
},
/* (132) typename ::= ids */
{
215
,
-
4
},
/* (133) typename ::= ids LP signed RP */
{
216
,
-
4
},
/* (133) typename ::= ids LP signed RP */
{
215
,
-
2
},
/* (134) typename ::= ids UNSIGNED */
{
216
,
-
2
},
/* (134) typename ::= ids UNSIGNED */
{
244
,
-
1
},
/* (135) signed ::= INTEGER */
{
245
,
-
1
},
/* (135) signed ::= INTEGER */
{
244
,
-
2
},
/* (136) signed ::= PLUS INTEGER */
{
245
,
-
2
},
/* (136) signed ::= PLUS INTEGER */
{
244
,
-
2
},
/* (137) signed ::= MINUS INTEGER */
{
245
,
-
2
},
/* (137) signed ::= MINUS INTEGER */
{
203
,
-
3
},
/* (138) cmd ::= CREATE TABLE create_table_args */
{
204
,
-
3
},
/* (138) cmd ::= CREATE TABLE create_table_args */
{
203
,
-
3
},
/* (139) cmd ::= CREATE TABLE create_stable_args */
{
204
,
-
3
},
/* (139) cmd ::= CREATE TABLE create_stable_args */
{
203
,
-
3
},
/* (140) cmd ::= CREATE STABLE create_stable_args */
{
204
,
-
3
},
/* (140) cmd ::= CREATE STABLE create_stable_args */
{
203
,
-
3
},
/* (141) cmd ::= CREATE TABLE create_table_list */
{
204
,
-
3
},
/* (141) cmd ::= CREATE TABLE create_table_list */
{
247
,
-
1
},
/* (142) create_table_list ::= create_from_stable */
{
248
,
-
1
},
/* (142) create_table_list ::= create_from_stable */
{
247
,
-
2
},
/* (143) create_table_list ::= create_table_list create_from_stable */
{
248
,
-
2
},
/* (143) create_table_list ::= create_table_list create_from_stable */
{
245
,
-
6
},
/* (144) create_table_args ::= ifnotexists ids cpxName LP columnlist RP */
{
246
,
-
6
},
/* (144) create_table_args ::= ifnotexists ids cpxName LP columnlist RP */
{
246
,
-
10
},
/* (145) create_stable_args ::= ifnotexists ids cpxName LP columnlist RP TAGS LP columnlist RP */
{
247
,
-
10
},
/* (145) create_stable_args ::= ifnotexists ids cpxName LP columnlist RP TAGS LP columnlist RP */
{
248
,
-
10
},
/* (146) create_from_stable ::= ifnotexists ids cpxName USING ids cpxName TAGS LP tagitemlist RP */
{
249
,
-
10
},
/* (146) create_from_stable ::= ifnotexists ids cpxName USING ids cpxName TAGS LP tagitemlist RP */
{
248
,
-
13
},
/* (147) create_from_stable ::= ifnotexists ids cpxName USING ids cpxName LP tagNamelist RP TAGS LP tagitemlist RP */
{
249
,
-
13
},
/* (147) create_from_stable ::= ifnotexists ids cpxName USING ids cpxName LP tagNamelist RP TAGS LP tagitemlist RP */
{
251
,
-
3
},
/* (148) tagNamelist ::= tagNamelist COMMA ids */
{
252
,
-
3
},
/* (148) tagNamelist ::= tagNamelist COMMA ids */
{
251
,
-
1
},
/* (149) tagNamelist ::= ids */
{
252
,
-
1
},
/* (149) tagNamelist ::= ids */
{
245
,
-
5
},
/* (150) create_table_args ::= ifnotexists ids cpxName AS select */
{
246
,
-
5
},
/* (150) create_table_args ::= ifnotexists ids cpxName AS select */
{
249
,
-
3
},
/* (151) columnlist ::= columnlist COMMA column */
{
250
,
-
3
},
/* (151) columnlist ::= columnlist COMMA column */
{
249
,
-
1
},
/* (152) columnlist ::= column */
{
250
,
-
1
},
/* (152) columnlist ::= column */
{
253
,
-
2
},
/* (153) column ::= ids typename */
{
254
,
-
2
},
/* (153) column ::= ids typename */
{
250
,
-
3
},
/* (154) tagitemlist ::= tagitemlist COMMA tagitem */
{
251
,
-
3
},
/* (154) tagitemlist ::= tagitemlist COMMA tagitem */
{
250
,
-
1
},
/* (155) tagitemlist ::= tagitem */
{
251
,
-
1
},
/* (155) tagitemlist ::= tagitem */
{
254
,
-
1
},
/* (156) tagitem ::= INTEGER */
{
255
,
-
1
},
/* (156) tagitem ::= INTEGER */
{
254
,
-
1
},
/* (157) tagitem ::= FLOAT */
{
255
,
-
1
},
/* (157) tagitem ::= FLOAT */
{
254
,
-
1
},
/* (158) tagitem ::= STRING */
{
255
,
-
1
},
/* (158) tagitem ::= STRING */
{
254
,
-
1
},
/* (159) tagitem ::= BOOL */
{
255
,
-
1
},
/* (159) tagitem ::= BOOL */
{
254
,
-
1
},
/* (160) tagitem ::= NULL */
{
255
,
-
1
},
/* (160) tagitem ::= NULL */
{
254
,
-
1
},
/* (161) tagitem ::= NOW */
{
255
,
-
1
},
/* (161) tagitem ::= NOW */
{
254
,
-
3
},
/* (162) tagitem ::= NOW PLUS VARIABLE */
{
255
,
-
3
},
/* (162) tagitem ::= NOW PLUS VARIABLE */
{
254
,
-
3
},
/* (163) tagitem ::= NOW MINUS VARIABLE */
{
255
,
-
3
},
/* (163) tagitem ::= NOW MINUS VARIABLE */
{
254
,
-
2
},
/* (164) tagitem ::= MINUS INTEGER */
{
255
,
-
2
},
/* (164) tagitem ::= MINUS INTEGER */
{
254
,
-
2
},
/* (165) tagitem ::= MINUS FLOAT */
{
255
,
-
2
},
/* (165) tagitem ::= MINUS FLOAT */
{
254
,
-
2
},
/* (166) tagitem ::= PLUS INTEGER */
{
255
,
-
2
},
/* (166) tagitem ::= PLUS INTEGER */
{
254
,
-
2
},
/* (167) tagitem ::= PLUS FLOAT */
{
255
,
-
2
},
/* (167) tagitem ::= PLUS FLOAT */
{
252
,
-
15
},
/* (168) select ::= SELECT selcollist from where_opt range_option interval_option sliding_opt session_option windowstate_option fill_opt groupby_opt having_opt orderby_opt slimit_opt limit_opt */
{
253
,
-
15
},
/* (168) select ::= SELECT selcollist from where_opt range_option interval_option sliding_opt session_option windowstate_option fill_opt groupby_opt having_opt orderby_opt slimit_opt limit_opt */
{
252
,
-
3
},
/* (169) select ::= LP select RP */
{
253
,
-
3
},
/* (169) select ::= LP select RP */
{
269
,
-
1
},
/* (170) union ::= select */
{
270
,
-
1
},
/* (170) union ::= select */
{
269
,
-
4
},
/* (171) union ::= union UNION ALL select */
{
270
,
-
4
},
/* (171) union ::= union UNION ALL select */
{
203
,
-
1
},
/* (172) cmd ::= union */
{
204
,
-
1
},
/* (172) cmd ::= union */
{
252
,
-
2
},
/* (173) select ::= SELECT selcollist */
{
253
,
-
2
},
/* (173) select ::= SELECT selcollist */
{
270
,
-
2
},
/* (174) sclp ::= selcollist COMMA */
{
271
,
-
2
},
/* (174) sclp ::= selcollist COMMA */
{
270
,
0
},
/* (175) sclp ::= */
{
271
,
0
},
/* (175) sclp ::= */
{
255
,
-
4
},
/* (176) selcollist ::= sclp distinct expr as */
{
256
,
-
4
},
/* (176) selcollist ::= sclp distinct expr as */
{
255
,
-
2
},
/* (177) selcollist ::= sclp STAR */
{
256
,
-
2
},
/* (177) selcollist ::= sclp STAR */
{
273
,
-
2
},
/* (178) as ::= AS ids */
{
274
,
-
2
},
/* (178) as ::= AS ids */
{
273
,
-
1
},
/* (179) as ::= ids */
{
274
,
-
1
},
/* (179) as ::= ids */
{
273
,
0
},
/* (180) as ::= */
{
274
,
0
},
/* (180) as ::= */
{
271
,
-
1
},
/* (181) distinct ::= DISTINCT */
{
272
,
-
1
},
/* (181) distinct ::= DISTINCT */
{
271
,
0
},
/* (182) distinct ::= */
{
272
,
0
},
/* (182) distinct ::= */
{
256
,
-
2
},
/* (183) from ::= FROM tablelist */
{
257
,
-
2
},
/* (183) from ::= FROM tablelist */
{
256
,
-
2
},
/* (184) from ::= FROM sub */
{
257
,
-
2
},
/* (184) from ::= FROM sub */
{
275
,
-
3
},
/* (185) sub ::= LP union RP */
{
276
,
-
3
},
/* (185) sub ::= LP union RP */
{
275
,
-
4
},
/* (186) sub ::= LP union RP ids */
{
276
,
-
4
},
/* (186) sub ::= LP union RP ids */
{
275
,
-
6
},
/* (187) sub ::= sub COMMA LP union RP ids */
{
276
,
-
6
},
/* (187) sub ::= sub COMMA LP union RP ids */
{
274
,
-
2
},
/* (188) tablelist ::= ids cpxName */
{
275
,
-
2
},
/* (188) tablelist ::= ids cpxName */
{
274
,
-
3
},
/* (189) tablelist ::= ids cpxName ids */
{
275
,
-
3
},
/* (189) tablelist ::= ids cpxName ids */
{
274
,
-
4
},
/* (190) tablelist ::= tablelist COMMA ids cpxName */
{
275
,
-
4
},
/* (190) tablelist ::= tablelist COMMA ids cpxName */
{
274
,
-
5
},
/* (191) tablelist ::= tablelist COMMA ids cpxName ids */
{
275
,
-
5
},
/* (191) tablelist ::= tablelist COMMA ids cpxName ids */
{
276
,
-
1
},
/* (192) tmvar ::= VARIABLE */
{
277
,
-
1
},
/* (192) tmvar ::= VARIABLE */
{
277
,
-
1
},
/* (193) timestamp ::= INTEGER */
{
278
,
-
1
},
/* (193) timestamp ::= INTEGER */
{
277
,
-
2
},
/* (194) timestamp ::= MINUS INTEGER */
{
278
,
-
2
},
/* (194) timestamp ::= MINUS INTEGER */
{
277
,
-
2
},
/* (195) timestamp ::= PLUS INTEGER */
{
278
,
-
2
},
/* (195) timestamp ::= PLUS INTEGER */
{
277
,
-
1
},
/* (196) timestamp ::= STRING */
{
278
,
-
1
},
/* (196) timestamp ::= STRING */
{
277
,
-
1
},
/* (197) timestamp ::= NOW */
{
278
,
-
1
},
/* (197) timestamp ::= NOW */
{
277
,
-
3
},
/* (198) timestamp ::= NOW PLUS VARIABLE */
{
278
,
-
3
},
/* (198) timestamp ::= NOW PLUS VARIABLE */
{
277
,
-
3
},
/* (199) timestamp ::= NOW MINUS VARIABLE */
{
278
,
-
3
},
/* (199) timestamp ::= NOW MINUS VARIABLE */
{
258
,
0
},
/* (200) range_option ::= */
{
259
,
0
},
/* (200) range_option ::= */
{
258
,
-
6
},
/* (201) range_option ::= RANGE LP timestamp COMMA timestamp RP */
{
259
,
-
6
},
/* (201) range_option ::= RANGE LP timestamp COMMA timestamp RP */
{
259
,
-
4
},
/* (202) interval_option ::= intervalKey LP tmvar RP */
{
260
,
-
4
},
/* (202) interval_option ::= intervalKey LP tmvar RP */
{
259
,
-
6
},
/* (203) interval_option ::= intervalKey LP tmvar COMMA tmvar RP */
{
260
,
-
6
},
/* (203) interval_option ::= intervalKey LP tmvar COMMA tmvar RP */
{
259
,
0
},
/* (204) interval_option ::= */
{
260
,
0
},
/* (204) interval_option ::= */
{
278
,
-
1
},
/* (205) intervalKey ::= INTERVAL */
{
279
,
-
1
},
/* (205) intervalKey ::= INTERVAL */
{
278
,
-
1
},
/* (206) intervalKey ::= EVERY */
{
279
,
-
1
},
/* (206) intervalKey ::= EVERY */
{
261
,
0
},
/* (207) session_option ::= */
{
262
,
0
},
/* (207) session_option ::= */
{
261
,
-
7
},
/* (208) session_option ::= SESSION LP ids cpxName COMMA tmvar RP */
{
262
,
-
7
},
/* (208) session_option ::= SESSION LP ids cpxName COMMA tmvar RP */
{
262
,
0
},
/* (209) windowstate_option ::= */
{
263
,
0
},
/* (209) windowstate_option ::= */
{
262
,
-
4
},
/* (210) windowstate_option ::= STATE_WINDOW LP ids RP */
{
263
,
-
4
},
/* (210) windowstate_option ::= STATE_WINDOW LP ids RP */
{
263
,
0
},
/* (211) fill_opt ::= */
{
264
,
0
},
/* (211) fill_opt ::= */
{
263
,
-
6
},
/* (212) fill_opt ::= FILL LP ID COMMA tagitemlist RP */
{
264
,
-
6
},
/* (212) fill_opt ::= FILL LP ID COMMA tagitemlist RP */
{
263
,
-
4
},
/* (213) fill_opt ::= FILL LP ID RP */
{
264
,
-
4
},
/* (213) fill_opt ::= FILL LP ID RP */
{
260
,
-
4
},
/* (214) sliding_opt ::= SLIDING LP tmvar RP */
{
261
,
-
4
},
/* (214) sliding_opt ::= SLIDING LP tmvar RP */
{
260
,
0
},
/* (215) sliding_opt ::= */
{
261
,
0
},
/* (215) sliding_opt ::= */
{
266
,
0
},
/* (216) orderby_opt ::= */
{
267
,
0
},
/* (216) orderby_opt ::= */
{
266
,
-
3
},
/* (217) orderby_opt ::= ORDER BY sortlist */
{
267
,
-
3
},
/* (217) orderby_opt ::= ORDER BY sortlist */
{
279
,
-
4
},
/* (218) sortlist ::= sortlist COMMA item sortorder */
{
280
,
-
4
},
/* (218) sortlist ::= sortlist COMMA item sortorder */
{
279
,
-
4
},
/* (219) sortlist ::= sortlist COMMA arrow sortorder */
{
280
,
-
4
},
/* (219) sortlist ::= sortlist COMMA arrow sortorder */
{
279
,
-
2
},
/* (220) sortlist ::= item sortorder */
{
280
,
-
2
},
/* (220) sortlist ::= item sortorder */
{
279
,
-
2
},
/* (221) sortlist ::= arrow sortorder */
{
280
,
-
2
},
/* (221) sortlist ::= arrow sortorder */
{
280
,
-
1
},
/* (222) item ::= ID */
{
281
,
-
1
},
/* (222) item ::= ID */
{
280
,
-
3
},
/* (223) item ::= ID DOT ID */
{
281
,
-
3
},
/* (223) item ::= ID DOT ID */
{
281
,
-
1
},
/* (224) sortorder ::= ASC */
{
282
,
-
1
},
/* (224) sortorder ::= ASC */
{
281
,
-
1
},
/* (225) sortorder ::= DESC */
{
282
,
-
1
},
/* (225) sortorder ::= DESC */
{
281
,
0
},
/* (226) sortorder ::= */
{
282
,
0
},
/* (226) sortorder ::= */
{
264
,
0
},
/* (227) groupby_opt ::= */
{
265
,
0
},
/* (227) groupby_opt ::= */
{
264
,
-
3
},
/* (228) groupby_opt ::= GROUP BY grouplist */
{
265
,
-
3
},
/* (228) groupby_opt ::= GROUP BY grouplist */
{
283
,
-
3
},
/* (229) grouplist ::= grouplist COMMA item */
{
284
,
-
3
},
/* (229) grouplist ::= grouplist COMMA item */
{
283
,
-
3
},
/* (230) grouplist ::= grouplist COMMA arrow */
{
284
,
-
3
},
/* (230) grouplist ::= grouplist COMMA arrow */
{
283
,
-
1
},
/* (231) grouplist ::= item */
{
284
,
-
1
},
/* (231) grouplist ::= item */
{
283
,
-
1
},
/* (232) grouplist ::= arrow */
{
284
,
-
1
},
/* (232) grouplist ::= arrow */
{
265
,
0
},
/* (233) having_opt ::= */
{
266
,
0
},
/* (233) having_opt ::= */
{
265
,
-
2
},
/* (234) having_opt ::= HAVING expr */
{
266
,
-
2
},
/* (234) having_opt ::= HAVING expr */
{
268
,
0
},
/* (235) limit_opt ::= */
{
269
,
0
},
/* (235) limit_opt ::= */
{
268
,
-
2
},
/* (236) limit_opt ::= LIMIT signed */
{
269
,
-
2
},
/* (236) limit_opt ::= LIMIT signed */
{
268
,
-
4
},
/* (237) limit_opt ::= LIMIT signed OFFSET signed */
{
269
,
-
4
},
/* (237) limit_opt ::= LIMIT signed OFFSET signed */
{
268
,
-
4
},
/* (238) limit_opt ::= LIMIT signed COMMA signed */
{
269
,
-
4
},
/* (238) limit_opt ::= LIMIT signed COMMA signed */
{
267
,
0
},
/* (239) slimit_opt ::= */
{
268
,
0
},
/* (239) slimit_opt ::= */
{
267
,
-
2
},
/* (240) slimit_opt ::= SLIMIT signed */
{
268
,
-
2
},
/* (240) slimit_opt ::= SLIMIT signed */
{
267
,
-
4
},
/* (241) slimit_opt ::= SLIMIT signed SOFFSET signed */
{
268
,
-
4
},
/* (241) slimit_opt ::= SLIMIT signed SOFFSET signed */
{
267
,
-
4
},
/* (242) slimit_opt ::= SLIMIT signed COMMA signed */
{
268
,
-
4
},
/* (242) slimit_opt ::= SLIMIT signed COMMA signed */
{
257
,
0
},
/* (243) where_opt ::= */
{
258
,
0
},
/* (243) where_opt ::= */
{
257
,
-
2
},
/* (244) where_opt ::= WHERE expr */
{
258
,
-
2
},
/* (244) where_opt ::= WHERE expr */
{
272
,
-
3
},
/* (245) expr ::= LP expr RP */
{
273
,
-
3
},
/* (245) expr ::= LP expr RP */
{
272
,
-
1
},
/* (246) expr ::= ID */
{
273
,
-
1
},
/* (246) expr ::= ID */
{
272
,
-
3
},
/* (247) expr ::= ID DOT ID */
{
273
,
-
3
},
/* (247) expr ::= ID DOT ID */
{
272
,
-
3
},
/* (248) expr ::= ID DOT STAR */
{
273
,
-
3
},
/* (248) expr ::= ID DOT STAR */
{
272
,
-
1
},
/* (249) expr ::= INTEGER */
{
273
,
-
1
},
/* (249) expr ::= INTEGER */
{
272
,
-
2
},
/* (250) expr ::= MINUS INTEGER */
{
273
,
-
2
},
/* (250) expr ::= MINUS INTEGER */
{
272
,
-
2
},
/* (251) expr ::= PLUS INTEGER */
{
273
,
-
2
},
/* (251) expr ::= PLUS INTEGER */
{
272
,
-
1
},
/* (252) expr ::= FLOAT */
{
273
,
-
1
},
/* (252) expr ::= FLOAT */
{
272
,
-
2
},
/* (253) expr ::= MINUS FLOAT */
{
273
,
-
2
},
/* (253) expr ::= MINUS FLOAT */
{
272
,
-
2
},
/* (254) expr ::= PLUS FLOAT */
{
273
,
-
2
},
/* (254) expr ::= PLUS FLOAT */
{
272
,
-
1
},
/* (255) expr ::= STRING */
{
273
,
-
1
},
/* (255) expr ::= STRING */
{
272
,
-
1
},
/* (256) expr ::= NOW */
{
273
,
-
1
},
/* (256) expr ::= NOW */
{
272
,
-
1
},
/* (257) expr ::= VARIABLE */
{
273
,
-
1
},
/* (257) expr ::= VARIABLE */
{
272
,
-
2
},
/* (258) expr ::= PLUS VARIABLE */
{
273
,
-
2
},
/* (258) expr ::= PLUS VARIABLE */
{
272
,
-
2
},
/* (259) expr ::= MINUS VARIABLE */
{
273
,
-
2
},
/* (259) expr ::= MINUS VARIABLE */
{
272
,
-
1
},
/* (260) expr ::= BOOL */
{
273
,
-
1
},
/* (260) expr ::= BOOL */
{
272
,
-
1
},
/* (261) expr ::= NULL */
{
273
,
-
1
},
/* (261) expr ::= NULL */
{
272
,
-
4
},
/* (262) expr ::= ID LP exprlist RP */
{
273
,
-
4
},
/* (262) expr ::= ID LP exprlist RP */
{
272
,
-
4
},
/* (263) expr ::= ID LP STAR RP */
{
273
,
-
4
},
/* (263) expr ::= ID LP STAR RP */
{
272
,
-
6
},
/* (264) expr ::= ID LP expr AS typename RP */
{
273
,
-
6
},
/* (264) expr ::= ID LP expr AS typename RP */
{
272
,
-
3
},
/* (265) expr ::= expr IS NULL */
{
273
,
-
3
},
/* (265) expr ::= expr IS NULL */
{
272
,
-
4
},
/* (266) expr ::= expr IS NOT NULL */
{
273
,
-
4
},
/* (266) expr ::= expr IS NOT NULL */
{
272
,
-
3
},
/* (267) expr ::= expr LT expr */
{
273
,
-
3
},
/* (267) expr ::= expr LT expr */
{
272
,
-
3
},
/* (268) expr ::= expr GT expr */
{
273
,
-
3
},
/* (268) expr ::= expr GT expr */
{
272
,
-
3
},
/* (269) expr ::= expr LE expr */
{
273
,
-
3
},
/* (269) expr ::= expr LE expr */
{
272
,
-
3
},
/* (270) expr ::= expr GE expr */
{
273
,
-
3
},
/* (270) expr ::= expr GE expr */
{
272
,
-
3
},
/* (271) expr ::= expr NE expr */
{
273
,
-
3
},
/* (271) expr ::= expr NE expr */
{
272
,
-
3
},
/* (272) expr ::= expr EQ expr */
{
273
,
-
3
},
/* (272) expr ::= expr EQ expr */
{
272
,
-
5
},
/* (273) expr ::= expr BETWEEN expr AND expr */
{
273
,
-
5
},
/* (273) expr ::= expr BETWEEN expr AND expr */
{
272
,
-
3
},
/* (274) expr ::= expr AND expr */
{
273
,
-
3
},
/* (274) expr ::= expr AND expr */
{
272
,
-
3
},
/* (275) expr ::= expr OR expr */
{
273
,
-
3
},
/* (275) expr ::= expr OR expr */
{
272
,
-
3
},
/* (276) expr ::= expr PLUS expr */
{
273
,
-
3
},
/* (276) expr ::= expr PLUS expr */
{
272
,
-
3
},
/* (277) expr ::= expr MINUS expr */
{
273
,
-
3
},
/* (277) expr ::= expr MINUS expr */
{
272
,
-
3
},
/* (278) expr ::= expr STAR expr */
{
273
,
-
3
},
/* (278) expr ::= expr STAR expr */
{
272
,
-
3
},
/* (279) expr ::= expr SLASH expr */
{
273
,
-
3
},
/* (279) expr ::= expr SLASH expr */
{
272
,
-
3
},
/* (280) expr ::= expr REM expr */
{
273
,
-
3
},
/* (280) expr ::= expr REM expr */
{
272
,
-
3
},
/* (281) expr ::= expr BITAND expr */
{
273
,
-
3
},
/* (281) expr ::= expr BITAND expr */
{
272
,
-
3
},
/* (282) expr ::= expr LIKE expr */
{
273
,
-
3
},
/* (282) expr ::= expr BITOR expr */
{
272
,
-
3
},
/* (283) expr ::= expr MATCH expr */
{
273
,
-
3
},
/* (283) expr ::= expr BITXOR expr */
{
272
,
-
3
},
/* (284) expr ::= expr NMATCH expr */
{
273
,
-
2
},
/* (284) expr ::= BITNOT expr */
{
272
,
-
3
},
/* (285) expr ::= ID CONTAINS STRING */
{
273
,
-
3
},
/* (285) expr ::= expr LSHIFT expr */
{
272
,
-
5
},
/* (286) expr ::= ID DOT ID CONTAINS STRING */
{
273
,
-
3
},
/* (286) expr ::= expr RSHIFT expr */
{
282
,
-
3
},
/* (287) arrow ::= ID ARROW STRING */
{
273
,
-
3
},
/* (287) expr ::= expr LIKE expr */
{
282
,
-
5
},
/* (288) arrow ::= ID DOT ID ARROW STRING */
{
273
,
-
3
},
/* (288) expr ::= expr MATCH expr */
{
272
,
-
1
},
/* (289) expr ::= arrow */
{
273
,
-
3
},
/* (289) expr ::= expr NMATCH expr */
{
272
,
-
5
},
/* (290) expr ::= expr IN LP exprlist RP */
{
273
,
-
3
},
/* (290) expr ::= ID CONTAINS STRING */
{
211
,
-
3
},
/* (291) exprlist ::= exprlist COMMA expritem */
{
273
,
-
5
},
/* (291) expr ::= ID DOT ID CONTAINS STRING */
{
211
,
-
1
},
/* (292) exprlist ::= expritem */
{
283
,
-
3
},
/* (292) arrow ::= ID ARROW STRING */
{
284
,
-
1
},
/* (293) expritem ::= expr */
{
283
,
-
5
},
/* (293) arrow ::= ID DOT ID ARROW STRING */
{
284
,
0
},
/* (294) expritem ::= */
{
273
,
-
1
},
/* (294) expr ::= arrow */
{
203
,
-
3
},
/* (295) cmd ::= RESET QUERY CACHE */
{
273
,
-
5
},
/* (295) expr ::= expr IN LP exprlist RP */
{
203
,
-
3
},
/* (296) cmd ::= SYNCDB ids REPLICA */
{
212
,
-
3
},
/* (296) exprlist ::= exprlist COMMA expritem */
{
203
,
-
7
},
/* (297) cmd ::= ALTER TABLE ids cpxName ADD COLUMN columnlist */
{
212
,
-
1
},
/* (297) exprlist ::= expritem */
{
203
,
-
7
},
/* (298) cmd ::= ALTER TABLE ids cpxName DROP COLUMN ids */
{
285
,
-
1
},
/* (298) expritem ::= expr */
{
203
,
-
7
},
/* (299) cmd ::= ALTER TABLE ids cpxName MODIFY COLUMN columnlist */
{
285
,
0
},
/* (299) expritem ::= */
{
203
,
-
7
},
/* (300) cmd ::= ALTER TABLE ids cpxName ADD TAG columnlist */
{
204
,
-
3
},
/* (300) cmd ::= RESET QUERY CACHE */
{
203
,
-
7
},
/* (301) cmd ::= ALTER TABLE ids cpxName DROP TAG ids */
{
204
,
-
3
},
/* (301) cmd ::= SYNCDB ids REPLICA */
{
203
,
-
8
},
/* (302) cmd ::= ALTER TABLE ids cpxName CHANGE TAG ids ids */
{
204
,
-
7
},
/* (302) cmd ::= ALTER TABLE ids cpxName ADD COLUMN columnlist */
{
203
,
-
9
},
/* (303) cmd ::= ALTER TABLE ids cpxName SET TAG ids EQ tagitem */
{
204
,
-
7
},
/* (303) cmd ::= ALTER TABLE ids cpxName DROP COLUMN ids */
{
203
,
-
7
},
/* (304) cmd ::= ALTER TABLE ids cpxName MODIFY TAG columnlist */
{
204
,
-
7
},
/* (304) cmd ::= ALTER TABLE ids cpxName MODIFY COLUMN columnlist */
{
203
,
-
7
},
/* (305) cmd ::= ALTER STABLE ids cpxName ADD COLUMN columnlist */
{
204
,
-
7
},
/* (305) cmd ::= ALTER TABLE ids cpxName ADD TAG columnlist */
{
203
,
-
7
},
/* (306) cmd ::= ALTER STABLE ids cpxName DROP COLUMN ids */
{
204
,
-
7
},
/* (306) cmd ::= ALTER TABLE ids cpxName DROP TAG ids */
{
203
,
-
7
},
/* (307) cmd ::= ALTER STABLE ids cpxName MODIFY COLUMN columnlist */
{
204
,
-
8
},
/* (307) cmd ::= ALTER TABLE ids cpxName CHANGE TAG ids ids */
{
203
,
-
7
},
/* (308) cmd ::= ALTER STABLE ids cpxName ADD TAG columnlist */
{
204
,
-
9
},
/* (308) cmd ::= ALTER TABLE ids cpxName SET TAG ids EQ tagitem */
{
203
,
-
7
},
/* (309) cmd ::= ALTER STABLE ids cpxName DROP TAG ids */
{
204
,
-
7
},
/* (309) cmd ::= ALTER TABLE ids cpxName MODIFY TAG columnlist */
{
203
,
-
8
},
/* (310) cmd ::= ALTER STABLE ids cpxName CHANGE TAG ids ids */
{
204
,
-
7
},
/* (310) cmd ::= ALTER STABLE ids cpxName ADD COLUMN columnlist */
{
203
,
-
9
},
/* (311) cmd ::= ALTER STABLE ids cpxName SET TAG ids EQ tagitem */
{
204
,
-
7
},
/* (311) cmd ::= ALTER STABLE ids cpxName DROP COLUMN ids */
{
203
,
-
7
},
/* (312) cmd ::= ALTER STABLE ids cpxName MODIFY TAG columnlist */
{
204
,
-
7
},
/* (312) cmd ::= ALTER STABLE ids cpxName MODIFY COLUMN columnlist */
{
203
,
-
3
},
/* (313) cmd ::= KILL CONNECTION INTEGER */
{
204
,
-
7
},
/* (313) cmd ::= ALTER STABLE ids cpxName ADD TAG columnlist */
{
203
,
-
5
},
/* (314) cmd ::= KILL STREAM INTEGER COLON INTEGER */
{
204
,
-
7
},
/* (314) cmd ::= ALTER STABLE ids cpxName DROP TAG ids */
{
203
,
-
5
},
/* (315) cmd ::= KILL QUERY INTEGER COLON INTEGER */
{
204
,
-
8
},
/* (315) cmd ::= ALTER STABLE ids cpxName CHANGE TAG ids ids */
{
204
,
-
9
},
/* (316) cmd ::= ALTER STABLE ids cpxName SET TAG ids EQ tagitem */
{
204
,
-
7
},
/* (317) cmd ::= ALTER STABLE ids cpxName MODIFY TAG columnlist */
{
204
,
-
3
},
/* (318) cmd ::= KILL CONNECTION INTEGER */
{
204
,
-
5
},
/* (319) cmd ::= KILL STREAM INTEGER COLON INTEGER */
{
204
,
-
5
},
/* (320) cmd ::= KILL QUERY INTEGER COLON INTEGER */
};
};
static
void
yy_accept
(
yyParser
*
);
/* Forward Declaration */
static
void
yy_accept
(
yyParser
*
);
/* Forward Declaration */
...
@@ -2466,16 +2490,16 @@ static void yy_reduce(
...
@@ -2466,16 +2490,16 @@ static void yy_reduce(
break
;
break
;
case
46
:
/* cmd ::= ALTER DATABASE ids alter_db_optr */
case
46
:
/* cmd ::= ALTER DATABASE ids alter_db_optr */
case
47
:
/* cmd ::= ALTER TOPIC ids alter_topic_optr */
yytestcase
(
yyruleno
==
47
);
case
47
:
/* cmd ::= ALTER TOPIC ids alter_topic_optr */
yytestcase
(
yyruleno
==
47
);
{
SStrToken
t
=
{
0
};
setCreateDbInfo
(
pInfo
,
TSDB_SQL_ALTER_DB
,
&
yymsp
[
-
1
].
minor
.
yy0
,
&
yymsp
[
0
].
minor
.
yy
53
2
,
&
t
);}
{
SStrToken
t
=
{
0
};
setCreateDbInfo
(
pInfo
,
TSDB_SQL_ALTER_DB
,
&
yymsp
[
-
1
].
minor
.
yy0
,
&
yymsp
[
0
].
minor
.
yy
4
2
,
&
t
);}
break
;
break
;
case
48
:
/* cmd ::= ALTER ACCOUNT ids acct_optr */
case
48
:
/* cmd ::= ALTER ACCOUNT ids acct_optr */
{
setCreateAcctSql
(
pInfo
,
TSDB_SQL_ALTER_ACCT
,
&
yymsp
[
-
1
].
minor
.
yy0
,
NULL
,
&
yymsp
[
0
].
minor
.
yy
31
);}
{
setCreateAcctSql
(
pInfo
,
TSDB_SQL_ALTER_ACCT
,
&
yymsp
[
-
1
].
minor
.
yy0
,
NULL
,
&
yymsp
[
0
].
minor
.
yy
55
);}
break
;
break
;
case
49
:
/* cmd ::= ALTER ACCOUNT ids PASS ids acct_optr */
case
49
:
/* cmd ::= ALTER ACCOUNT ids PASS ids acct_optr */
{
setCreateAcctSql
(
pInfo
,
TSDB_SQL_ALTER_ACCT
,
&
yymsp
[
-
3
].
minor
.
yy0
,
&
yymsp
[
-
1
].
minor
.
yy0
,
&
yymsp
[
0
].
minor
.
yy
31
);}
{
setCreateAcctSql
(
pInfo
,
TSDB_SQL_ALTER_ACCT
,
&
yymsp
[
-
3
].
minor
.
yy0
,
&
yymsp
[
-
1
].
minor
.
yy0
,
&
yymsp
[
0
].
minor
.
yy
55
);}
break
;
break
;
case
50
:
/* cmd ::= COMPACT VNODES IN LP exprlist RP */
case
50
:
/* cmd ::= COMPACT VNODES IN LP exprlist RP */
{
setCompactVnodeSql
(
pInfo
,
TSDB_SQL_COMPACT_VNODE
,
yymsp
[
-
1
].
minor
.
yy
231
);}
{
setCompactVnodeSql
(
pInfo
,
TSDB_SQL_COMPACT_VNODE
,
yymsp
[
-
1
].
minor
.
yy
373
);}
break
;
break
;
case
51
:
/* ids ::= ID */
case
51
:
/* ids ::= ID */
case
52
:
/* ids ::= STRING */
yytestcase
(
yyruleno
==
52
);
case
52
:
/* ids ::= STRING */
yytestcase
(
yyruleno
==
52
);
...
@@ -2497,17 +2521,17 @@ static void yy_reduce(
...
@@ -2497,17 +2521,17 @@ static void yy_reduce(
{
setDCLSqlElems
(
pInfo
,
TSDB_SQL_CREATE_DNODE
,
1
,
&
yymsp
[
0
].
minor
.
yy0
);}
{
setDCLSqlElems
(
pInfo
,
TSDB_SQL_CREATE_DNODE
,
1
,
&
yymsp
[
0
].
minor
.
yy0
);}
break
;
break
;
case
58
:
/* cmd ::= CREATE ACCOUNT ids PASS ids acct_optr */
case
58
:
/* cmd ::= CREATE ACCOUNT ids PASS ids acct_optr */
{
setCreateAcctSql
(
pInfo
,
TSDB_SQL_CREATE_ACCT
,
&
yymsp
[
-
3
].
minor
.
yy0
,
&
yymsp
[
-
1
].
minor
.
yy0
,
&
yymsp
[
0
].
minor
.
yy
31
);}
{
setCreateAcctSql
(
pInfo
,
TSDB_SQL_CREATE_ACCT
,
&
yymsp
[
-
3
].
minor
.
yy0
,
&
yymsp
[
-
1
].
minor
.
yy0
,
&
yymsp
[
0
].
minor
.
yy
55
);}
break
;
break
;
case
59
:
/* cmd ::= CREATE DATABASE ifnotexists ids db_optr */
case
59
:
/* cmd ::= CREATE DATABASE ifnotexists ids db_optr */
case
60
:
/* cmd ::= CREATE TOPIC ifnotexists ids topic_optr */
yytestcase
(
yyruleno
==
60
);
case
60
:
/* cmd ::= CREATE TOPIC ifnotexists ids topic_optr */
yytestcase
(
yyruleno
==
60
);
{
setCreateDbInfo
(
pInfo
,
TSDB_SQL_CREATE_DB
,
&
yymsp
[
-
1
].
minor
.
yy0
,
&
yymsp
[
0
].
minor
.
yy
53
2
,
&
yymsp
[
-
2
].
minor
.
yy0
);}
{
setCreateDbInfo
(
pInfo
,
TSDB_SQL_CREATE_DB
,
&
yymsp
[
-
1
].
minor
.
yy0
,
&
yymsp
[
0
].
minor
.
yy
4
2
,
&
yymsp
[
-
2
].
minor
.
yy0
);}
break
;
break
;
case
61
:
/* cmd ::= CREATE FUNCTION ids AS ids OUTPUTTYPE typename bufsize */
case
61
:
/* cmd ::= CREATE FUNCTION ids AS ids OUTPUTTYPE typename bufsize */
{
setCreateFuncInfo
(
pInfo
,
TSDB_SQL_CREATE_FUNCTION
,
&
yymsp
[
-
5
].
minor
.
yy0
,
&
yymsp
[
-
3
].
minor
.
yy0
,
&
yymsp
[
-
1
].
minor
.
yy1
03
,
&
yymsp
[
0
].
minor
.
yy0
,
1
);}
{
setCreateFuncInfo
(
pInfo
,
TSDB_SQL_CREATE_FUNCTION
,
&
yymsp
[
-
5
].
minor
.
yy0
,
&
yymsp
[
-
3
].
minor
.
yy0
,
&
yymsp
[
-
1
].
minor
.
yy1
19
,
&
yymsp
[
0
].
minor
.
yy0
,
1
);}
break
;
break
;
case
62
:
/* cmd ::= CREATE AGGREGATE FUNCTION ids AS ids OUTPUTTYPE typename bufsize */
case
62
:
/* cmd ::= CREATE AGGREGATE FUNCTION ids AS ids OUTPUTTYPE typename bufsize */
{
setCreateFuncInfo
(
pInfo
,
TSDB_SQL_CREATE_FUNCTION
,
&
yymsp
[
-
5
].
minor
.
yy0
,
&
yymsp
[
-
3
].
minor
.
yy0
,
&
yymsp
[
-
1
].
minor
.
yy1
03
,
&
yymsp
[
0
].
minor
.
yy0
,
2
);}
{
setCreateFuncInfo
(
pInfo
,
TSDB_SQL_CREATE_FUNCTION
,
&
yymsp
[
-
5
].
minor
.
yy0
,
&
yymsp
[
-
3
].
minor
.
yy0
,
&
yymsp
[
-
1
].
minor
.
yy1
19
,
&
yymsp
[
0
].
minor
.
yy0
,
2
);}
break
;
break
;
case
63
:
/* cmd ::= CREATE USER ids PASS ids */
case
63
:
/* cmd ::= CREATE USER ids PASS ids */
{
setCreateUserSql
(
pInfo
,
&
yymsp
[
-
2
].
minor
.
yy0
,
&
yymsp
[
0
].
minor
.
yy0
);}
{
setCreateUserSql
(
pInfo
,
&
yymsp
[
-
2
].
minor
.
yy0
,
&
yymsp
[
0
].
minor
.
yy0
);}
...
@@ -2538,38 +2562,38 @@ static void yy_reduce(
...
@@ -2538,38 +2562,38 @@ static void yy_reduce(
break
;
break
;
case
84
:
/* acct_optr ::= pps tseries storage streams qtime dbs users conns state */
case
84
:
/* acct_optr ::= pps tseries storage streams qtime dbs users conns state */
{
{
yylhsminor
.
yy
31
.
maxUsers
=
(
yymsp
[
-
2
].
minor
.
yy0
.
n
>
0
)
?
atoi
(
yymsp
[
-
2
].
minor
.
yy0
.
z
)
:-
1
;
yylhsminor
.
yy
55
.
maxUsers
=
(
yymsp
[
-
2
].
minor
.
yy0
.
n
>
0
)
?
atoi
(
yymsp
[
-
2
].
minor
.
yy0
.
z
)
:-
1
;
yylhsminor
.
yy
31
.
maxDbs
=
(
yymsp
[
-
3
].
minor
.
yy0
.
n
>
0
)
?
atoi
(
yymsp
[
-
3
].
minor
.
yy0
.
z
)
:-
1
;
yylhsminor
.
yy
55
.
maxDbs
=
(
yymsp
[
-
3
].
minor
.
yy0
.
n
>
0
)
?
atoi
(
yymsp
[
-
3
].
minor
.
yy0
.
z
)
:-
1
;
yylhsminor
.
yy
31
.
maxTimeSeries
=
(
yymsp
[
-
7
].
minor
.
yy0
.
n
>
0
)
?
atoi
(
yymsp
[
-
7
].
minor
.
yy0
.
z
)
:-
1
;
yylhsminor
.
yy
55
.
maxTimeSeries
=
(
yymsp
[
-
7
].
minor
.
yy0
.
n
>
0
)
?
atoi
(
yymsp
[
-
7
].
minor
.
yy0
.
z
)
:-
1
;
yylhsminor
.
yy
31
.
maxStreams
=
(
yymsp
[
-
5
].
minor
.
yy0
.
n
>
0
)
?
atoi
(
yymsp
[
-
5
].
minor
.
yy0
.
z
)
:-
1
;
yylhsminor
.
yy
55
.
maxStreams
=
(
yymsp
[
-
5
].
minor
.
yy0
.
n
>
0
)
?
atoi
(
yymsp
[
-
5
].
minor
.
yy0
.
z
)
:-
1
;
yylhsminor
.
yy
31
.
maxPointsPerSecond
=
(
yymsp
[
-
8
].
minor
.
yy0
.
n
>
0
)
?
atoi
(
yymsp
[
-
8
].
minor
.
yy0
.
z
)
:-
1
;
yylhsminor
.
yy
55
.
maxPointsPerSecond
=
(
yymsp
[
-
8
].
minor
.
yy0
.
n
>
0
)
?
atoi
(
yymsp
[
-
8
].
minor
.
yy0
.
z
)
:-
1
;
yylhsminor
.
yy
31
.
maxStorage
=
(
yymsp
[
-
6
].
minor
.
yy0
.
n
>
0
)
?
strtoll
(
yymsp
[
-
6
].
minor
.
yy0
.
z
,
NULL
,
10
)
:-
1
;
yylhsminor
.
yy
55
.
maxStorage
=
(
yymsp
[
-
6
].
minor
.
yy0
.
n
>
0
)
?
strtoll
(
yymsp
[
-
6
].
minor
.
yy0
.
z
,
NULL
,
10
)
:-
1
;
yylhsminor
.
yy
31
.
maxQueryTime
=
(
yymsp
[
-
4
].
minor
.
yy0
.
n
>
0
)
?
strtoll
(
yymsp
[
-
4
].
minor
.
yy0
.
z
,
NULL
,
10
)
:-
1
;
yylhsminor
.
yy
55
.
maxQueryTime
=
(
yymsp
[
-
4
].
minor
.
yy0
.
n
>
0
)
?
strtoll
(
yymsp
[
-
4
].
minor
.
yy0
.
z
,
NULL
,
10
)
:-
1
;
yylhsminor
.
yy
31
.
maxConnections
=
(
yymsp
[
-
1
].
minor
.
yy0
.
n
>
0
)
?
atoi
(
yymsp
[
-
1
].
minor
.
yy0
.
z
)
:-
1
;
yylhsminor
.
yy
55
.
maxConnections
=
(
yymsp
[
-
1
].
minor
.
yy0
.
n
>
0
)
?
atoi
(
yymsp
[
-
1
].
minor
.
yy0
.
z
)
:-
1
;
yylhsminor
.
yy
31
.
stat
=
yymsp
[
0
].
minor
.
yy0
;
yylhsminor
.
yy
55
.
stat
=
yymsp
[
0
].
minor
.
yy0
;
}
}
yymsp
[
-
8
].
minor
.
yy
31
=
yylhsminor
.
yy31
;
yymsp
[
-
8
].
minor
.
yy
55
=
yylhsminor
.
yy55
;
break
;
break
;
case
85
:
/* intitemlist ::= intitemlist COMMA intitem */
case
85
:
/* intitemlist ::= intitemlist COMMA intitem */
case
154
:
/* tagitemlist ::= tagitemlist COMMA tagitem */
yytestcase
(
yyruleno
==
154
);
case
154
:
/* tagitemlist ::= tagitemlist COMMA tagitem */
yytestcase
(
yyruleno
==
154
);
{
yylhsminor
.
yy
231
=
tVariantListAppend
(
yymsp
[
-
2
].
minor
.
yy231
,
&
yymsp
[
0
].
minor
.
yy17
6
,
-
1
);
}
{
yylhsminor
.
yy
373
=
tVariantListAppend
(
yymsp
[
-
2
].
minor
.
yy373
,
&
yymsp
[
0
].
minor
.
yy18
6
,
-
1
);
}
yymsp
[
-
2
].
minor
.
yy
231
=
yylhsminor
.
yy231
;
yymsp
[
-
2
].
minor
.
yy
373
=
yylhsminor
.
yy373
;
break
;
break
;
case
86
:
/* intitemlist ::= intitem */
case
86
:
/* intitemlist ::= intitem */
case
155
:
/* tagitemlist ::= tagitem */
yytestcase
(
yyruleno
==
155
);
case
155
:
/* tagitemlist ::= tagitem */
yytestcase
(
yyruleno
==
155
);
{
yylhsminor
.
yy
231
=
tVariantListAppend
(
NULL
,
&
yymsp
[
0
].
minor
.
yy17
6
,
-
1
);
}
{
yylhsminor
.
yy
373
=
tVariantListAppend
(
NULL
,
&
yymsp
[
0
].
minor
.
yy18
6
,
-
1
);
}
yymsp
[
0
].
minor
.
yy
231
=
yylhsminor
.
yy231
;
yymsp
[
0
].
minor
.
yy
373
=
yylhsminor
.
yy373
;
break
;
break
;
case
87
:
/* intitem ::= INTEGER */
case
87
:
/* intitem ::= INTEGER */
case
156
:
/* tagitem ::= INTEGER */
yytestcase
(
yyruleno
==
156
);
case
156
:
/* tagitem ::= INTEGER */
yytestcase
(
yyruleno
==
156
);
case
157
:
/* tagitem ::= FLOAT */
yytestcase
(
yyruleno
==
157
);
case
157
:
/* tagitem ::= FLOAT */
yytestcase
(
yyruleno
==
157
);
case
158
:
/* tagitem ::= STRING */
yytestcase
(
yyruleno
==
158
);
case
158
:
/* tagitem ::= STRING */
yytestcase
(
yyruleno
==
158
);
case
159
:
/* tagitem ::= BOOL */
yytestcase
(
yyruleno
==
159
);
case
159
:
/* tagitem ::= BOOL */
yytestcase
(
yyruleno
==
159
);
{
toTSDBType
(
yymsp
[
0
].
minor
.
yy0
.
type
);
tVariantCreate
(
&
yylhsminor
.
yy1
7
6
,
&
yymsp
[
0
].
minor
.
yy0
);
}
{
toTSDBType
(
yymsp
[
0
].
minor
.
yy0
.
type
);
tVariantCreate
(
&
yylhsminor
.
yy1
8
6
,
&
yymsp
[
0
].
minor
.
yy0
);
}
yymsp
[
0
].
minor
.
yy1
76
=
yylhsminor
.
yy17
6
;
yymsp
[
0
].
minor
.
yy1
86
=
yylhsminor
.
yy18
6
;
break
;
break
;
case
88
:
/* keep ::= KEEP intitemlist */
case
88
:
/* keep ::= KEEP intitemlist */
{
yymsp
[
-
1
].
minor
.
yy
231
=
yymsp
[
0
].
minor
.
yy231
;
}
{
yymsp
[
-
1
].
minor
.
yy
373
=
yymsp
[
0
].
minor
.
yy373
;
}
break
;
break
;
case
89
:
/* cache ::= CACHE INTEGER */
case
89
:
/* cache ::= CACHE INTEGER */
case
90
:
/* replica ::= REPLICA INTEGER */
yytestcase
(
yyruleno
==
90
);
case
90
:
/* replica ::= REPLICA INTEGER */
yytestcase
(
yyruleno
==
90
);
...
@@ -2589,232 +2613,232 @@ static void yy_reduce(
...
@@ -2589,232 +2613,232 @@ static void yy_reduce(
{
yymsp
[
-
1
].
minor
.
yy0
=
yymsp
[
0
].
minor
.
yy0
;
}
{
yymsp
[
-
1
].
minor
.
yy0
=
yymsp
[
0
].
minor
.
yy0
;
}
break
;
break
;
case
104
:
/* db_optr ::= */
case
104
:
/* db_optr ::= */
{
setDefaultCreateDbOption
(
&
yymsp
[
1
].
minor
.
yy
532
);
yymsp
[
1
].
minor
.
yy53
2
.
dbType
=
TSDB_DB_TYPE_DEFAULT
;}
{
setDefaultCreateDbOption
(
&
yymsp
[
1
].
minor
.
yy
42
);
yymsp
[
1
].
minor
.
yy4
2
.
dbType
=
TSDB_DB_TYPE_DEFAULT
;}
break
;
break
;
case
105
:
/* db_optr ::= db_optr cache */
case
105
:
/* db_optr ::= db_optr cache */
{
yylhsminor
.
yy
532
=
yymsp
[
-
1
].
minor
.
yy532
;
yylhsminor
.
yy53
2
.
cacheBlockSize
=
strtol
(
yymsp
[
0
].
minor
.
yy0
.
z
,
NULL
,
10
);
}
{
yylhsminor
.
yy
42
=
yymsp
[
-
1
].
minor
.
yy42
;
yylhsminor
.
yy4
2
.
cacheBlockSize
=
strtol
(
yymsp
[
0
].
minor
.
yy0
.
z
,
NULL
,
10
);
}
yymsp
[
-
1
].
minor
.
yy
532
=
yylhsminor
.
yy53
2
;
yymsp
[
-
1
].
minor
.
yy
42
=
yylhsminor
.
yy4
2
;
break
;
break
;
case
106
:
/* db_optr ::= db_optr replica */
case
106
:
/* db_optr ::= db_optr replica */
case
123
:
/* alter_db_optr ::= alter_db_optr replica */
yytestcase
(
yyruleno
==
123
);
case
123
:
/* alter_db_optr ::= alter_db_optr replica */
yytestcase
(
yyruleno
==
123
);
{
yylhsminor
.
yy
532
=
yymsp
[
-
1
].
minor
.
yy532
;
yylhsminor
.
yy53
2
.
replica
=
strtol
(
yymsp
[
0
].
minor
.
yy0
.
z
,
NULL
,
10
);
}
{
yylhsminor
.
yy
42
=
yymsp
[
-
1
].
minor
.
yy42
;
yylhsminor
.
yy4
2
.
replica
=
strtol
(
yymsp
[
0
].
minor
.
yy0
.
z
,
NULL
,
10
);
}
yymsp
[
-
1
].
minor
.
yy
532
=
yylhsminor
.
yy53
2
;
yymsp
[
-
1
].
minor
.
yy
42
=
yylhsminor
.
yy4
2
;
break
;
break
;
case
107
:
/* db_optr ::= db_optr quorum */
case
107
:
/* db_optr ::= db_optr quorum */
case
124
:
/* alter_db_optr ::= alter_db_optr quorum */
yytestcase
(
yyruleno
==
124
);
case
124
:
/* alter_db_optr ::= alter_db_optr quorum */
yytestcase
(
yyruleno
==
124
);
{
yylhsminor
.
yy
532
=
yymsp
[
-
1
].
minor
.
yy532
;
yylhsminor
.
yy53
2
.
quorum
=
strtol
(
yymsp
[
0
].
minor
.
yy0
.
z
,
NULL
,
10
);
}
{
yylhsminor
.
yy
42
=
yymsp
[
-
1
].
minor
.
yy42
;
yylhsminor
.
yy4
2
.
quorum
=
strtol
(
yymsp
[
0
].
minor
.
yy0
.
z
,
NULL
,
10
);
}
yymsp
[
-
1
].
minor
.
yy
532
=
yylhsminor
.
yy53
2
;
yymsp
[
-
1
].
minor
.
yy
42
=
yylhsminor
.
yy4
2
;
break
;
break
;
case
108
:
/* db_optr ::= db_optr days */
case
108
:
/* db_optr ::= db_optr days */
{
yylhsminor
.
yy
532
=
yymsp
[
-
1
].
minor
.
yy532
;
yylhsminor
.
yy53
2
.
daysPerFile
=
strtol
(
yymsp
[
0
].
minor
.
yy0
.
z
,
NULL
,
10
);
}
{
yylhsminor
.
yy
42
=
yymsp
[
-
1
].
minor
.
yy42
;
yylhsminor
.
yy4
2
.
daysPerFile
=
strtol
(
yymsp
[
0
].
minor
.
yy0
.
z
,
NULL
,
10
);
}
yymsp
[
-
1
].
minor
.
yy
532
=
yylhsminor
.
yy53
2
;
yymsp
[
-
1
].
minor
.
yy
42
=
yylhsminor
.
yy4
2
;
break
;
break
;
case
109
:
/* db_optr ::= db_optr minrows */
case
109
:
/* db_optr ::= db_optr minrows */
{
yylhsminor
.
yy
532
=
yymsp
[
-
1
].
minor
.
yy532
;
yylhsminor
.
yy53
2
.
minRowsPerBlock
=
strtod
(
yymsp
[
0
].
minor
.
yy0
.
z
,
NULL
);
}
{
yylhsminor
.
yy
42
=
yymsp
[
-
1
].
minor
.
yy42
;
yylhsminor
.
yy4
2
.
minRowsPerBlock
=
strtod
(
yymsp
[
0
].
minor
.
yy0
.
z
,
NULL
);
}
yymsp
[
-
1
].
minor
.
yy
532
=
yylhsminor
.
yy53
2
;
yymsp
[
-
1
].
minor
.
yy
42
=
yylhsminor
.
yy4
2
;
break
;
break
;
case
110
:
/* db_optr ::= db_optr maxrows */
case
110
:
/* db_optr ::= db_optr maxrows */
{
yylhsminor
.
yy
532
=
yymsp
[
-
1
].
minor
.
yy532
;
yylhsminor
.
yy53
2
.
maxRowsPerBlock
=
strtod
(
yymsp
[
0
].
minor
.
yy0
.
z
,
NULL
);
}
{
yylhsminor
.
yy
42
=
yymsp
[
-
1
].
minor
.
yy42
;
yylhsminor
.
yy4
2
.
maxRowsPerBlock
=
strtod
(
yymsp
[
0
].
minor
.
yy0
.
z
,
NULL
);
}
yymsp
[
-
1
].
minor
.
yy
532
=
yylhsminor
.
yy53
2
;
yymsp
[
-
1
].
minor
.
yy
42
=
yylhsminor
.
yy4
2
;
break
;
break
;
case
111
:
/* db_optr ::= db_optr blocks */
case
111
:
/* db_optr ::= db_optr blocks */
case
126
:
/* alter_db_optr ::= alter_db_optr blocks */
yytestcase
(
yyruleno
==
126
);
case
126
:
/* alter_db_optr ::= alter_db_optr blocks */
yytestcase
(
yyruleno
==
126
);
{
yylhsminor
.
yy
532
=
yymsp
[
-
1
].
minor
.
yy532
;
yylhsminor
.
yy53
2
.
numOfBlocks
=
strtol
(
yymsp
[
0
].
minor
.
yy0
.
z
,
NULL
,
10
);
}
{
yylhsminor
.
yy
42
=
yymsp
[
-
1
].
minor
.
yy42
;
yylhsminor
.
yy4
2
.
numOfBlocks
=
strtol
(
yymsp
[
0
].
minor
.
yy0
.
z
,
NULL
,
10
);
}
yymsp
[
-
1
].
minor
.
yy
532
=
yylhsminor
.
yy53
2
;
yymsp
[
-
1
].
minor
.
yy
42
=
yylhsminor
.
yy4
2
;
break
;
break
;
case
112
:
/* db_optr ::= db_optr ctime */
case
112
:
/* db_optr ::= db_optr ctime */
{
yylhsminor
.
yy
532
=
yymsp
[
-
1
].
minor
.
yy532
;
yylhsminor
.
yy53
2
.
commitTime
=
strtol
(
yymsp
[
0
].
minor
.
yy0
.
z
,
NULL
,
10
);
}
{
yylhsminor
.
yy
42
=
yymsp
[
-
1
].
minor
.
yy42
;
yylhsminor
.
yy4
2
.
commitTime
=
strtol
(
yymsp
[
0
].
minor
.
yy0
.
z
,
NULL
,
10
);
}
yymsp
[
-
1
].
minor
.
yy
532
=
yylhsminor
.
yy53
2
;
yymsp
[
-
1
].
minor
.
yy
42
=
yylhsminor
.
yy4
2
;
break
;
break
;
case
113
:
/* db_optr ::= db_optr wal */
case
113
:
/* db_optr ::= db_optr wal */
{
yylhsminor
.
yy
532
=
yymsp
[
-
1
].
minor
.
yy532
;
yylhsminor
.
yy53
2
.
walLevel
=
strtol
(
yymsp
[
0
].
minor
.
yy0
.
z
,
NULL
,
10
);
}
{
yylhsminor
.
yy
42
=
yymsp
[
-
1
].
minor
.
yy42
;
yylhsminor
.
yy4
2
.
walLevel
=
strtol
(
yymsp
[
0
].
minor
.
yy0
.
z
,
NULL
,
10
);
}
yymsp
[
-
1
].
minor
.
yy
532
=
yylhsminor
.
yy53
2
;
yymsp
[
-
1
].
minor
.
yy
42
=
yylhsminor
.
yy4
2
;
break
;
break
;
case
114
:
/* db_optr ::= db_optr fsync */
case
114
:
/* db_optr ::= db_optr fsync */
{
yylhsminor
.
yy
532
=
yymsp
[
-
1
].
minor
.
yy532
;
yylhsminor
.
yy53
2
.
fsyncPeriod
=
strtol
(
yymsp
[
0
].
minor
.
yy0
.
z
,
NULL
,
10
);
}
{
yylhsminor
.
yy
42
=
yymsp
[
-
1
].
minor
.
yy42
;
yylhsminor
.
yy4
2
.
fsyncPeriod
=
strtol
(
yymsp
[
0
].
minor
.
yy0
.
z
,
NULL
,
10
);
}
yymsp
[
-
1
].
minor
.
yy
532
=
yylhsminor
.
yy53
2
;
yymsp
[
-
1
].
minor
.
yy
42
=
yylhsminor
.
yy4
2
;
break
;
break
;
case
115
:
/* db_optr ::= db_optr comp */
case
115
:
/* db_optr ::= db_optr comp */
case
127
:
/* alter_db_optr ::= alter_db_optr comp */
yytestcase
(
yyruleno
==
127
);
case
127
:
/* alter_db_optr ::= alter_db_optr comp */
yytestcase
(
yyruleno
==
127
);
{
yylhsminor
.
yy
532
=
yymsp
[
-
1
].
minor
.
yy532
;
yylhsminor
.
yy53
2
.
compressionLevel
=
strtol
(
yymsp
[
0
].
minor
.
yy0
.
z
,
NULL
,
10
);
}
{
yylhsminor
.
yy
42
=
yymsp
[
-
1
].
minor
.
yy42
;
yylhsminor
.
yy4
2
.
compressionLevel
=
strtol
(
yymsp
[
0
].
minor
.
yy0
.
z
,
NULL
,
10
);
}
yymsp
[
-
1
].
minor
.
yy
532
=
yylhsminor
.
yy53
2
;
yymsp
[
-
1
].
minor
.
yy
42
=
yylhsminor
.
yy4
2
;
break
;
break
;
case
116
:
/* db_optr ::= db_optr prec */
case
116
:
/* db_optr ::= db_optr prec */
{
yylhsminor
.
yy
532
=
yymsp
[
-
1
].
minor
.
yy532
;
yylhsminor
.
yy53
2
.
precision
=
yymsp
[
0
].
minor
.
yy0
;
}
{
yylhsminor
.
yy
42
=
yymsp
[
-
1
].
minor
.
yy42
;
yylhsminor
.
yy4
2
.
precision
=
yymsp
[
0
].
minor
.
yy0
;
}
yymsp
[
-
1
].
minor
.
yy
532
=
yylhsminor
.
yy53
2
;
yymsp
[
-
1
].
minor
.
yy
42
=
yylhsminor
.
yy4
2
;
break
;
break
;
case
117
:
/* db_optr ::= db_optr keep */
case
117
:
/* db_optr ::= db_optr keep */
case
125
:
/* alter_db_optr ::= alter_db_optr keep */
yytestcase
(
yyruleno
==
125
);
case
125
:
/* alter_db_optr ::= alter_db_optr keep */
yytestcase
(
yyruleno
==
125
);
{
yylhsminor
.
yy
532
=
yymsp
[
-
1
].
minor
.
yy532
;
yylhsminor
.
yy532
.
keep
=
yymsp
[
0
].
minor
.
yy231
;
}
{
yylhsminor
.
yy
42
=
yymsp
[
-
1
].
minor
.
yy42
;
yylhsminor
.
yy42
.
keep
=
yymsp
[
0
].
minor
.
yy373
;
}
yymsp
[
-
1
].
minor
.
yy
532
=
yylhsminor
.
yy53
2
;
yymsp
[
-
1
].
minor
.
yy
42
=
yylhsminor
.
yy4
2
;
break
;
break
;
case
118
:
/* db_optr ::= db_optr update */
case
118
:
/* db_optr ::= db_optr update */
case
128
:
/* alter_db_optr ::= alter_db_optr update */
yytestcase
(
yyruleno
==
128
);
case
128
:
/* alter_db_optr ::= alter_db_optr update */
yytestcase
(
yyruleno
==
128
);
{
yylhsminor
.
yy
532
=
yymsp
[
-
1
].
minor
.
yy532
;
yylhsminor
.
yy53
2
.
update
=
strtol
(
yymsp
[
0
].
minor
.
yy0
.
z
,
NULL
,
10
);
}
{
yylhsminor
.
yy
42
=
yymsp
[
-
1
].
minor
.
yy42
;
yylhsminor
.
yy4
2
.
update
=
strtol
(
yymsp
[
0
].
minor
.
yy0
.
z
,
NULL
,
10
);
}
yymsp
[
-
1
].
minor
.
yy
532
=
yylhsminor
.
yy53
2
;
yymsp
[
-
1
].
minor
.
yy
42
=
yylhsminor
.
yy4
2
;
break
;
break
;
case
119
:
/* db_optr ::= db_optr cachelast */
case
119
:
/* db_optr ::= db_optr cachelast */
case
129
:
/* alter_db_optr ::= alter_db_optr cachelast */
yytestcase
(
yyruleno
==
129
);
case
129
:
/* alter_db_optr ::= alter_db_optr cachelast */
yytestcase
(
yyruleno
==
129
);
{
yylhsminor
.
yy
532
=
yymsp
[
-
1
].
minor
.
yy532
;
yylhsminor
.
yy53
2
.
cachelast
=
strtol
(
yymsp
[
0
].
minor
.
yy0
.
z
,
NULL
,
10
);
}
{
yylhsminor
.
yy
42
=
yymsp
[
-
1
].
minor
.
yy42
;
yylhsminor
.
yy4
2
.
cachelast
=
strtol
(
yymsp
[
0
].
minor
.
yy0
.
z
,
NULL
,
10
);
}
yymsp
[
-
1
].
minor
.
yy
532
=
yylhsminor
.
yy53
2
;
yymsp
[
-
1
].
minor
.
yy
42
=
yylhsminor
.
yy4
2
;
break
;
break
;
case
120
:
/* topic_optr ::= db_optr */
case
120
:
/* topic_optr ::= db_optr */
case
130
:
/* alter_topic_optr ::= alter_db_optr */
yytestcase
(
yyruleno
==
130
);
case
130
:
/* alter_topic_optr ::= alter_db_optr */
yytestcase
(
yyruleno
==
130
);
{
yylhsminor
.
yy
532
=
yymsp
[
0
].
minor
.
yy532
;
yylhsminor
.
yy53
2
.
dbType
=
TSDB_DB_TYPE_TOPIC
;
}
{
yylhsminor
.
yy
42
=
yymsp
[
0
].
minor
.
yy42
;
yylhsminor
.
yy4
2
.
dbType
=
TSDB_DB_TYPE_TOPIC
;
}
yymsp
[
0
].
minor
.
yy
532
=
yylhsminor
.
yy53
2
;
yymsp
[
0
].
minor
.
yy
42
=
yylhsminor
.
yy4
2
;
break
;
break
;
case
121
:
/* topic_optr ::= topic_optr partitions */
case
121
:
/* topic_optr ::= topic_optr partitions */
case
131
:
/* alter_topic_optr ::= alter_topic_optr partitions */
yytestcase
(
yyruleno
==
131
);
case
131
:
/* alter_topic_optr ::= alter_topic_optr partitions */
yytestcase
(
yyruleno
==
131
);
{
yylhsminor
.
yy
532
=
yymsp
[
-
1
].
minor
.
yy532
;
yylhsminor
.
yy53
2
.
partitions
=
strtol
(
yymsp
[
0
].
minor
.
yy0
.
z
,
NULL
,
10
);
}
{
yylhsminor
.
yy
42
=
yymsp
[
-
1
].
minor
.
yy42
;
yylhsminor
.
yy4
2
.
partitions
=
strtol
(
yymsp
[
0
].
minor
.
yy0
.
z
,
NULL
,
10
);
}
yymsp
[
-
1
].
minor
.
yy
532
=
yylhsminor
.
yy53
2
;
yymsp
[
-
1
].
minor
.
yy
42
=
yylhsminor
.
yy4
2
;
break
;
break
;
case
122
:
/* alter_db_optr ::= */
case
122
:
/* alter_db_optr ::= */
{
setDefaultCreateDbOption
(
&
yymsp
[
1
].
minor
.
yy
532
);
yymsp
[
1
].
minor
.
yy53
2
.
dbType
=
TSDB_DB_TYPE_DEFAULT
;}
{
setDefaultCreateDbOption
(
&
yymsp
[
1
].
minor
.
yy
42
);
yymsp
[
1
].
minor
.
yy4
2
.
dbType
=
TSDB_DB_TYPE_DEFAULT
;}
break
;
break
;
case
132
:
/* typename ::= ids */
case
132
:
/* typename ::= ids */
{
{
yymsp
[
0
].
minor
.
yy0
.
type
=
0
;
yymsp
[
0
].
minor
.
yy0
.
type
=
0
;
tSetColumnType
(
&
yylhsminor
.
yy1
03
,
&
yymsp
[
0
].
minor
.
yy0
);
tSetColumnType
(
&
yylhsminor
.
yy1
19
,
&
yymsp
[
0
].
minor
.
yy0
);
}
}
yymsp
[
0
].
minor
.
yy1
03
=
yylhsminor
.
yy103
;
yymsp
[
0
].
minor
.
yy1
19
=
yylhsminor
.
yy119
;
break
;
break
;
case
133
:
/* typename ::= ids LP signed RP */
case
133
:
/* typename ::= ids LP signed RP */
{
{
if
(
yymsp
[
-
1
].
minor
.
yy
54
9
<=
0
)
{
if
(
yymsp
[
-
1
].
minor
.
yy
12
9
<=
0
)
{
yymsp
[
-
3
].
minor
.
yy0
.
type
=
0
;
yymsp
[
-
3
].
minor
.
yy0
.
type
=
0
;
tSetColumnType
(
&
yylhsminor
.
yy1
03
,
&
yymsp
[
-
3
].
minor
.
yy0
);
tSetColumnType
(
&
yylhsminor
.
yy1
19
,
&
yymsp
[
-
3
].
minor
.
yy0
);
}
else
{
}
else
{
yymsp
[
-
3
].
minor
.
yy0
.
type
=
-
yymsp
[
-
1
].
minor
.
yy
54
9
;
// negative value of name length
yymsp
[
-
3
].
minor
.
yy0
.
type
=
-
yymsp
[
-
1
].
minor
.
yy
12
9
;
// negative value of name length
tSetColumnType
(
&
yylhsminor
.
yy1
03
,
&
yymsp
[
-
3
].
minor
.
yy0
);
tSetColumnType
(
&
yylhsminor
.
yy1
19
,
&
yymsp
[
-
3
].
minor
.
yy0
);
}
}
}
}
yymsp
[
-
3
].
minor
.
yy1
03
=
yylhsminor
.
yy103
;
yymsp
[
-
3
].
minor
.
yy1
19
=
yylhsminor
.
yy119
;
break
;
break
;
case
134
:
/* typename ::= ids UNSIGNED */
case
134
:
/* typename ::= ids UNSIGNED */
{
{
yymsp
[
-
1
].
minor
.
yy0
.
type
=
0
;
yymsp
[
-
1
].
minor
.
yy0
.
type
=
0
;
yymsp
[
-
1
].
minor
.
yy0
.
n
=
((
yymsp
[
0
].
minor
.
yy0
.
z
+
yymsp
[
0
].
minor
.
yy0
.
n
)
-
yymsp
[
-
1
].
minor
.
yy0
.
z
);
yymsp
[
-
1
].
minor
.
yy0
.
n
=
((
yymsp
[
0
].
minor
.
yy0
.
z
+
yymsp
[
0
].
minor
.
yy0
.
n
)
-
yymsp
[
-
1
].
minor
.
yy0
.
z
);
tSetColumnType
(
&
yylhsminor
.
yy1
03
,
&
yymsp
[
-
1
].
minor
.
yy0
);
tSetColumnType
(
&
yylhsminor
.
yy1
19
,
&
yymsp
[
-
1
].
minor
.
yy0
);
}
}
yymsp
[
-
1
].
minor
.
yy1
03
=
yylhsminor
.
yy103
;
yymsp
[
-
1
].
minor
.
yy1
19
=
yylhsminor
.
yy119
;
break
;
break
;
case
135
:
/* signed ::= INTEGER */
case
135
:
/* signed ::= INTEGER */
{
yylhsminor
.
yy
54
9
=
strtol
(
yymsp
[
0
].
minor
.
yy0
.
z
,
NULL
,
10
);
}
{
yylhsminor
.
yy
12
9
=
strtol
(
yymsp
[
0
].
minor
.
yy0
.
z
,
NULL
,
10
);
}
yymsp
[
0
].
minor
.
yy
549
=
yylhsminor
.
yy54
9
;
yymsp
[
0
].
minor
.
yy
129
=
yylhsminor
.
yy12
9
;
break
;
break
;
case
136
:
/* signed ::= PLUS INTEGER */
case
136
:
/* signed ::= PLUS INTEGER */
{
yymsp
[
-
1
].
minor
.
yy
54
9
=
strtol
(
yymsp
[
0
].
minor
.
yy0
.
z
,
NULL
,
10
);
}
{
yymsp
[
-
1
].
minor
.
yy
12
9
=
strtol
(
yymsp
[
0
].
minor
.
yy0
.
z
,
NULL
,
10
);
}
break
;
break
;
case
137
:
/* signed ::= MINUS INTEGER */
case
137
:
/* signed ::= MINUS INTEGER */
{
yymsp
[
-
1
].
minor
.
yy
54
9
=
-
strtol
(
yymsp
[
0
].
minor
.
yy0
.
z
,
NULL
,
10
);}
{
yymsp
[
-
1
].
minor
.
yy
12
9
=
-
strtol
(
yymsp
[
0
].
minor
.
yy0
.
z
,
NULL
,
10
);}
break
;
break
;
case
141
:
/* cmd ::= CREATE TABLE create_table_list */
case
141
:
/* cmd ::= CREATE TABLE create_table_list */
{
pInfo
->
type
=
TSDB_SQL_CREATE_TABLE
;
pInfo
->
pCreateTableInfo
=
yymsp
[
0
].
minor
.
yy
422
;}
{
pInfo
->
type
=
TSDB_SQL_CREATE_TABLE
;
pInfo
->
pCreateTableInfo
=
yymsp
[
0
].
minor
.
yy
118
;}
break
;
break
;
case
142
:
/* create_table_list ::= create_from_stable */
case
142
:
/* create_table_list ::= create_from_stable */
{
{
SCreateTableSql
*
pCreateTable
=
calloc
(
1
,
sizeof
(
SCreateTableSql
));
SCreateTableSql
*
pCreateTable
=
calloc
(
1
,
sizeof
(
SCreateTableSql
));
pCreateTable
->
childTableInfo
=
taosArrayInit
(
4
,
sizeof
(
SCreatedTableInfo
));
pCreateTable
->
childTableInfo
=
taosArrayInit
(
4
,
sizeof
(
SCreatedTableInfo
));
taosArrayPush
(
pCreateTable
->
childTableInfo
,
&
yymsp
[
0
].
minor
.
yy
306
);
taosArrayPush
(
pCreateTable
->
childTableInfo
,
&
yymsp
[
0
].
minor
.
yy
228
);
pCreateTable
->
type
=
TSQL_CREATE_TABLE_FROM_STABLE
;
pCreateTable
->
type
=
TSQL_CREATE_TABLE_FROM_STABLE
;
yylhsminor
.
yy
422
=
pCreateTable
;
yylhsminor
.
yy
118
=
pCreateTable
;
}
}
yymsp
[
0
].
minor
.
yy
422
=
yylhsminor
.
yy422
;
yymsp
[
0
].
minor
.
yy
118
=
yylhsminor
.
yy118
;
break
;
break
;
case
143
:
/* create_table_list ::= create_table_list create_from_stable */
case
143
:
/* create_table_list ::= create_table_list create_from_stable */
{
{
taosArrayPush
(
yymsp
[
-
1
].
minor
.
yy
422
->
childTableInfo
,
&
yymsp
[
0
].
minor
.
yy306
);
taosArrayPush
(
yymsp
[
-
1
].
minor
.
yy
118
->
childTableInfo
,
&
yymsp
[
0
].
minor
.
yy228
);
yylhsminor
.
yy
422
=
yymsp
[
-
1
].
minor
.
yy422
;
yylhsminor
.
yy
118
=
yymsp
[
-
1
].
minor
.
yy118
;
}
}
yymsp
[
-
1
].
minor
.
yy
422
=
yylhsminor
.
yy422
;
yymsp
[
-
1
].
minor
.
yy
118
=
yylhsminor
.
yy118
;
break
;
break
;
case
144
:
/* create_table_args ::= ifnotexists ids cpxName LP columnlist RP */
case
144
:
/* create_table_args ::= ifnotexists ids cpxName LP columnlist RP */
{
{
yylhsminor
.
yy
422
=
tSetCreateTableInfo
(
yymsp
[
-
1
].
minor
.
yy231
,
NULL
,
NULL
,
TSQL_CREATE_TABLE
);
yylhsminor
.
yy
118
=
tSetCreateTableInfo
(
yymsp
[
-
1
].
minor
.
yy373
,
NULL
,
NULL
,
TSQL_CREATE_TABLE
);
setSqlInfo
(
pInfo
,
yylhsminor
.
yy
422
,
NULL
,
TSDB_SQL_CREATE_TABLE
);
setSqlInfo
(
pInfo
,
yylhsminor
.
yy
118
,
NULL
,
TSDB_SQL_CREATE_TABLE
);
yymsp
[
-
4
].
minor
.
yy0
.
n
+=
yymsp
[
-
3
].
minor
.
yy0
.
n
;
yymsp
[
-
4
].
minor
.
yy0
.
n
+=
yymsp
[
-
3
].
minor
.
yy0
.
n
;
setCreatedTableName
(
pInfo
,
&
yymsp
[
-
4
].
minor
.
yy0
,
&
yymsp
[
-
5
].
minor
.
yy0
);
setCreatedTableName
(
pInfo
,
&
yymsp
[
-
4
].
minor
.
yy0
,
&
yymsp
[
-
5
].
minor
.
yy0
);
}
}
yymsp
[
-
5
].
minor
.
yy
422
=
yylhsminor
.
yy422
;
yymsp
[
-
5
].
minor
.
yy
118
=
yylhsminor
.
yy118
;
break
;
break
;
case
145
:
/* create_stable_args ::= ifnotexists ids cpxName LP columnlist RP TAGS LP columnlist RP */
case
145
:
/* create_stable_args ::= ifnotexists ids cpxName LP columnlist RP TAGS LP columnlist RP */
{
{
yylhsminor
.
yy
422
=
tSetCreateTableInfo
(
yymsp
[
-
5
].
minor
.
yy231
,
yymsp
[
-
1
].
minor
.
yy231
,
NULL
,
TSQL_CREATE_STABLE
);
yylhsminor
.
yy
118
=
tSetCreateTableInfo
(
yymsp
[
-
5
].
minor
.
yy373
,
yymsp
[
-
1
].
minor
.
yy373
,
NULL
,
TSQL_CREATE_STABLE
);
setSqlInfo
(
pInfo
,
yylhsminor
.
yy
422
,
NULL
,
TSDB_SQL_CREATE_TABLE
);
setSqlInfo
(
pInfo
,
yylhsminor
.
yy
118
,
NULL
,
TSDB_SQL_CREATE_TABLE
);
yymsp
[
-
8
].
minor
.
yy0
.
n
+=
yymsp
[
-
7
].
minor
.
yy0
.
n
;
yymsp
[
-
8
].
minor
.
yy0
.
n
+=
yymsp
[
-
7
].
minor
.
yy0
.
n
;
setCreatedTableName
(
pInfo
,
&
yymsp
[
-
8
].
minor
.
yy0
,
&
yymsp
[
-
9
].
minor
.
yy0
);
setCreatedTableName
(
pInfo
,
&
yymsp
[
-
8
].
minor
.
yy0
,
&
yymsp
[
-
9
].
minor
.
yy0
);
}
}
yymsp
[
-
9
].
minor
.
yy
422
=
yylhsminor
.
yy422
;
yymsp
[
-
9
].
minor
.
yy
118
=
yylhsminor
.
yy118
;
break
;
break
;
case
146
:
/* create_from_stable ::= ifnotexists ids cpxName USING ids cpxName TAGS LP tagitemlist RP */
case
146
:
/* create_from_stable ::= ifnotexists ids cpxName USING ids cpxName TAGS LP tagitemlist RP */
{
{
yymsp
[
-
5
].
minor
.
yy0
.
n
+=
yymsp
[
-
4
].
minor
.
yy0
.
n
;
yymsp
[
-
5
].
minor
.
yy0
.
n
+=
yymsp
[
-
4
].
minor
.
yy0
.
n
;
yymsp
[
-
8
].
minor
.
yy0
.
n
+=
yymsp
[
-
7
].
minor
.
yy0
.
n
;
yymsp
[
-
8
].
minor
.
yy0
.
n
+=
yymsp
[
-
7
].
minor
.
yy0
.
n
;
yylhsminor
.
yy
306
=
createNewChildTableInfo
(
&
yymsp
[
-
5
].
minor
.
yy0
,
NULL
,
yymsp
[
-
1
].
minor
.
yy231
,
&
yymsp
[
-
8
].
minor
.
yy0
,
&
yymsp
[
-
9
].
minor
.
yy0
);
yylhsminor
.
yy
228
=
createNewChildTableInfo
(
&
yymsp
[
-
5
].
minor
.
yy0
,
NULL
,
yymsp
[
-
1
].
minor
.
yy373
,
&
yymsp
[
-
8
].
minor
.
yy0
,
&
yymsp
[
-
9
].
minor
.
yy0
);
}
}
yymsp
[
-
9
].
minor
.
yy
306
=
yylhsminor
.
yy306
;
yymsp
[
-
9
].
minor
.
yy
228
=
yylhsminor
.
yy228
;
break
;
break
;
case
147
:
/* create_from_stable ::= ifnotexists ids cpxName USING ids cpxName LP tagNamelist RP TAGS LP tagitemlist RP */
case
147
:
/* create_from_stable ::= ifnotexists ids cpxName USING ids cpxName LP tagNamelist RP TAGS LP tagitemlist RP */
{
{
yymsp
[
-
8
].
minor
.
yy0
.
n
+=
yymsp
[
-
7
].
minor
.
yy0
.
n
;
yymsp
[
-
8
].
minor
.
yy0
.
n
+=
yymsp
[
-
7
].
minor
.
yy0
.
n
;
yymsp
[
-
11
].
minor
.
yy0
.
n
+=
yymsp
[
-
10
].
minor
.
yy0
.
n
;
yymsp
[
-
11
].
minor
.
yy0
.
n
+=
yymsp
[
-
10
].
minor
.
yy0
.
n
;
yylhsminor
.
yy
306
=
createNewChildTableInfo
(
&
yymsp
[
-
8
].
minor
.
yy0
,
yymsp
[
-
5
].
minor
.
yy231
,
yymsp
[
-
1
].
minor
.
yy231
,
&
yymsp
[
-
11
].
minor
.
yy0
,
&
yymsp
[
-
12
].
minor
.
yy0
);
yylhsminor
.
yy
228
=
createNewChildTableInfo
(
&
yymsp
[
-
8
].
minor
.
yy0
,
yymsp
[
-
5
].
minor
.
yy373
,
yymsp
[
-
1
].
minor
.
yy373
,
&
yymsp
[
-
11
].
minor
.
yy0
,
&
yymsp
[
-
12
].
minor
.
yy0
);
}
}
yymsp
[
-
12
].
minor
.
yy
306
=
yylhsminor
.
yy306
;
yymsp
[
-
12
].
minor
.
yy
228
=
yylhsminor
.
yy228
;
break
;
break
;
case
148
:
/* tagNamelist ::= tagNamelist COMMA ids */
case
148
:
/* tagNamelist ::= tagNamelist COMMA ids */
{
taosArrayPush
(
yymsp
[
-
2
].
minor
.
yy
231
,
&
yymsp
[
0
].
minor
.
yy0
);
yylhsminor
.
yy231
=
yymsp
[
-
2
].
minor
.
yy231
;
}
{
taosArrayPush
(
yymsp
[
-
2
].
minor
.
yy
373
,
&
yymsp
[
0
].
minor
.
yy0
);
yylhsminor
.
yy373
=
yymsp
[
-
2
].
minor
.
yy373
;
}
yymsp
[
-
2
].
minor
.
yy
231
=
yylhsminor
.
yy231
;
yymsp
[
-
2
].
minor
.
yy
373
=
yylhsminor
.
yy373
;
break
;
break
;
case
149
:
/* tagNamelist ::= ids */
case
149
:
/* tagNamelist ::= ids */
{
yylhsminor
.
yy
231
=
taosArrayInit
(
4
,
sizeof
(
SStrToken
));
taosArrayPush
(
yylhsminor
.
yy231
,
&
yymsp
[
0
].
minor
.
yy0
);}
{
yylhsminor
.
yy
373
=
taosArrayInit
(
4
,
sizeof
(
SStrToken
));
taosArrayPush
(
yylhsminor
.
yy373
,
&
yymsp
[
0
].
minor
.
yy0
);}
yymsp
[
0
].
minor
.
yy
231
=
yylhsminor
.
yy231
;
yymsp
[
0
].
minor
.
yy
373
=
yylhsminor
.
yy373
;
break
;
break
;
case
150
:
/* create_table_args ::= ifnotexists ids cpxName AS select */
case
150
:
/* create_table_args ::= ifnotexists ids cpxName AS select */
{
{
yylhsminor
.
yy
422
=
tSetCreateTableInfo
(
NULL
,
NULL
,
yymsp
[
0
].
minor
.
yy86
,
TSQL_CREATE_STREAM
);
yylhsminor
.
yy
118
=
tSetCreateTableInfo
(
NULL
,
NULL
,
yymsp
[
0
].
minor
.
yy564
,
TSQL_CREATE_STREAM
);
setSqlInfo
(
pInfo
,
yylhsminor
.
yy
422
,
NULL
,
TSDB_SQL_CREATE_TABLE
);
setSqlInfo
(
pInfo
,
yylhsminor
.
yy
118
,
NULL
,
TSDB_SQL_CREATE_TABLE
);
yymsp
[
-
3
].
minor
.
yy0
.
n
+=
yymsp
[
-
2
].
minor
.
yy0
.
n
;
yymsp
[
-
3
].
minor
.
yy0
.
n
+=
yymsp
[
-
2
].
minor
.
yy0
.
n
;
setCreatedTableName
(
pInfo
,
&
yymsp
[
-
3
].
minor
.
yy0
,
&
yymsp
[
-
4
].
minor
.
yy0
);
setCreatedTableName
(
pInfo
,
&
yymsp
[
-
3
].
minor
.
yy0
,
&
yymsp
[
-
4
].
minor
.
yy0
);
}
}
yymsp
[
-
4
].
minor
.
yy
422
=
yylhsminor
.
yy422
;
yymsp
[
-
4
].
minor
.
yy
118
=
yylhsminor
.
yy118
;
break
;
break
;
case
151
:
/* columnlist ::= columnlist COMMA column */
case
151
:
/* columnlist ::= columnlist COMMA column */
{
taosArrayPush
(
yymsp
[
-
2
].
minor
.
yy
231
,
&
yymsp
[
0
].
minor
.
yy103
);
yylhsminor
.
yy231
=
yymsp
[
-
2
].
minor
.
yy231
;
}
{
taosArrayPush
(
yymsp
[
-
2
].
minor
.
yy
373
,
&
yymsp
[
0
].
minor
.
yy119
);
yylhsminor
.
yy373
=
yymsp
[
-
2
].
minor
.
yy373
;
}
yymsp
[
-
2
].
minor
.
yy
231
=
yylhsminor
.
yy231
;
yymsp
[
-
2
].
minor
.
yy
373
=
yylhsminor
.
yy373
;
break
;
break
;
case
152
:
/* columnlist ::= column */
case
152
:
/* columnlist ::= column */
{
yylhsminor
.
yy
231
=
taosArrayInit
(
4
,
sizeof
(
TAOS_FIELD
));
taosArrayPush
(
yylhsminor
.
yy231
,
&
yymsp
[
0
].
minor
.
yy103
);}
{
yylhsminor
.
yy
373
=
taosArrayInit
(
4
,
sizeof
(
TAOS_FIELD
));
taosArrayPush
(
yylhsminor
.
yy373
,
&
yymsp
[
0
].
minor
.
yy119
);}
yymsp
[
0
].
minor
.
yy
231
=
yylhsminor
.
yy231
;
yymsp
[
0
].
minor
.
yy
373
=
yylhsminor
.
yy373
;
break
;
break
;
case
153
:
/* column ::= ids typename */
case
153
:
/* column ::= ids typename */
{
{
tSetColumnInfo
(
&
yylhsminor
.
yy1
03
,
&
yymsp
[
-
1
].
minor
.
yy0
,
&
yymsp
[
0
].
minor
.
yy103
);
tSetColumnInfo
(
&
yylhsminor
.
yy1
19
,
&
yymsp
[
-
1
].
minor
.
yy0
,
&
yymsp
[
0
].
minor
.
yy119
);
}
}
yymsp
[
-
1
].
minor
.
yy1
03
=
yylhsminor
.
yy103
;
yymsp
[
-
1
].
minor
.
yy1
19
=
yylhsminor
.
yy119
;
break
;
break
;
case
160
:
/* tagitem ::= NULL */
case
160
:
/* tagitem ::= NULL */
{
yymsp
[
0
].
minor
.
yy0
.
type
=
0
;
tVariantCreate
(
&
yylhsminor
.
yy1
7
6
,
&
yymsp
[
0
].
minor
.
yy0
);
}
{
yymsp
[
0
].
minor
.
yy0
.
type
=
0
;
tVariantCreate
(
&
yylhsminor
.
yy1
8
6
,
&
yymsp
[
0
].
minor
.
yy0
);
}
yymsp
[
0
].
minor
.
yy1
76
=
yylhsminor
.
yy17
6
;
yymsp
[
0
].
minor
.
yy1
86
=
yylhsminor
.
yy18
6
;
break
;
break
;
case
161
:
/* tagitem ::= NOW */
case
161
:
/* tagitem ::= NOW */
{
yymsp
[
0
].
minor
.
yy0
.
type
=
TSDB_DATA_TYPE_TIMESTAMP
;
tVariantCreateExt
(
&
yylhsminor
.
yy1
7
6
,
&
yymsp
[
0
].
minor
.
yy0
,
TK_NOW
,
true
);}
{
yymsp
[
0
].
minor
.
yy0
.
type
=
TSDB_DATA_TYPE_TIMESTAMP
;
tVariantCreateExt
(
&
yylhsminor
.
yy1
8
6
,
&
yymsp
[
0
].
minor
.
yy0
,
TK_NOW
,
true
);}
yymsp
[
0
].
minor
.
yy1
76
=
yylhsminor
.
yy17
6
;
yymsp
[
0
].
minor
.
yy1
86
=
yylhsminor
.
yy18
6
;
break
;
break
;
case
162
:
/* tagitem ::= NOW PLUS VARIABLE */
case
162
:
/* tagitem ::= NOW PLUS VARIABLE */
{
{
yymsp
[
0
].
minor
.
yy0
.
type
=
TSDB_DATA_TYPE_TIMESTAMP
;
yymsp
[
0
].
minor
.
yy0
.
type
=
TSDB_DATA_TYPE_TIMESTAMP
;
tVariantCreateExt
(
&
yymsp
[
-
2
].
minor
.
yy1
7
6
,
&
yymsp
[
0
].
minor
.
yy0
,
TK_PLUS
,
true
);
tVariantCreateExt
(
&
yymsp
[
-
2
].
minor
.
yy1
8
6
,
&
yymsp
[
0
].
minor
.
yy0
,
TK_PLUS
,
true
);
}
}
break
;
break
;
case
163
:
/* tagitem ::= NOW MINUS VARIABLE */
case
163
:
/* tagitem ::= NOW MINUS VARIABLE */
{
{
yymsp
[
0
].
minor
.
yy0
.
type
=
TSDB_DATA_TYPE_TIMESTAMP
;
yymsp
[
0
].
minor
.
yy0
.
type
=
TSDB_DATA_TYPE_TIMESTAMP
;
tVariantCreateExt
(
&
yymsp
[
-
2
].
minor
.
yy1
7
6
,
&
yymsp
[
0
].
minor
.
yy0
,
TK_MINUS
,
true
);
tVariantCreateExt
(
&
yymsp
[
-
2
].
minor
.
yy1
8
6
,
&
yymsp
[
0
].
minor
.
yy0
,
TK_MINUS
,
true
);
}
}
break
;
break
;
case
164
:
/* tagitem ::= MINUS INTEGER */
case
164
:
/* tagitem ::= MINUS INTEGER */
...
@@ -2825,56 +2849,56 @@ static void yy_reduce(
...
@@ -2825,56 +2849,56 @@ static void yy_reduce(
yymsp
[
-
1
].
minor
.
yy0
.
n
+=
yymsp
[
0
].
minor
.
yy0
.
n
;
yymsp
[
-
1
].
minor
.
yy0
.
n
+=
yymsp
[
0
].
minor
.
yy0
.
n
;
yymsp
[
-
1
].
minor
.
yy0
.
type
=
yymsp
[
0
].
minor
.
yy0
.
type
;
yymsp
[
-
1
].
minor
.
yy0
.
type
=
yymsp
[
0
].
minor
.
yy0
.
type
;
toTSDBType
(
yymsp
[
-
1
].
minor
.
yy0
.
type
);
toTSDBType
(
yymsp
[
-
1
].
minor
.
yy0
.
type
);
tVariantCreate
(
&
yylhsminor
.
yy1
7
6
,
&
yymsp
[
-
1
].
minor
.
yy0
);
tVariantCreate
(
&
yylhsminor
.
yy1
8
6
,
&
yymsp
[
-
1
].
minor
.
yy0
);
}
}
yymsp
[
-
1
].
minor
.
yy1
76
=
yylhsminor
.
yy17
6
;
yymsp
[
-
1
].
minor
.
yy1
86
=
yylhsminor
.
yy18
6
;
break
;
break
;
case
168
:
/* select ::= SELECT selcollist from where_opt range_option interval_option sliding_opt session_option windowstate_option fill_opt groupby_opt having_opt orderby_opt slimit_opt limit_opt */
case
168
:
/* select ::= SELECT selcollist from where_opt range_option interval_option sliding_opt session_option windowstate_option fill_opt groupby_opt having_opt orderby_opt slimit_opt limit_opt */
{
{
yylhsminor
.
yy
86
=
tSetQuerySqlNode
(
&
yymsp
[
-
14
].
minor
.
yy0
,
yymsp
[
-
13
].
minor
.
yy231
,
yymsp
[
-
12
].
minor
.
yy484
,
yymsp
[
-
11
].
minor
.
yy226
,
yymsp
[
-
4
].
minor
.
yy231
,
yymsp
[
-
2
].
minor
.
yy231
,
&
yymsp
[
-
9
].
minor
.
yy430
,
&
yymsp
[
-
7
].
minor
.
yy409
,
&
yymsp
[
-
6
].
minor
.
yy228
,
&
yymsp
[
-
8
].
minor
.
yy0
,
yymsp
[
-
5
].
minor
.
yy231
,
&
yymsp
[
0
].
minor
.
yy444
,
&
yymsp
[
-
1
].
minor
.
yy444
,
yymsp
[
-
3
].
minor
.
yy226
,
&
yymsp
[
-
10
].
minor
.
yy480
);
yylhsminor
.
yy
564
=
tSetQuerySqlNode
(
&
yymsp
[
-
14
].
minor
.
yy0
,
yymsp
[
-
13
].
minor
.
yy373
,
yymsp
[
-
12
].
minor
.
yy192
,
yymsp
[
-
11
].
minor
.
yy46
,
yymsp
[
-
4
].
minor
.
yy373
,
yymsp
[
-
2
].
minor
.
yy373
,
&
yymsp
[
-
9
].
minor
.
yy376
,
&
yymsp
[
-
7
].
minor
.
yy435
,
&
yymsp
[
-
6
].
minor
.
yy32
,
&
yymsp
[
-
8
].
minor
.
yy0
,
yymsp
[
-
5
].
minor
.
yy373
,
&
yymsp
[
0
].
minor
.
yy86
,
&
yymsp
[
-
1
].
minor
.
yy86
,
yymsp
[
-
3
].
minor
.
yy46
,
&
yymsp
[
-
10
].
minor
.
yy229
);
}
}
yymsp
[
-
14
].
minor
.
yy
86
=
yylhsminor
.
yy86
;
yymsp
[
-
14
].
minor
.
yy
564
=
yylhsminor
.
yy564
;
break
;
break
;
case
169
:
/* select ::= LP select RP */
case
169
:
/* select ::= LP select RP */
{
yymsp
[
-
2
].
minor
.
yy
86
=
yymsp
[
-
1
].
minor
.
yy86
;}
{
yymsp
[
-
2
].
minor
.
yy
564
=
yymsp
[
-
1
].
minor
.
yy564
;}
break
;
break
;
case
170
:
/* union ::= select */
case
170
:
/* union ::= select */
{
yylhsminor
.
yy
231
=
setSubclause
(
NULL
,
yymsp
[
0
].
minor
.
yy86
);
}
{
yylhsminor
.
yy
373
=
setSubclause
(
NULL
,
yymsp
[
0
].
minor
.
yy564
);
}
yymsp
[
0
].
minor
.
yy
231
=
yylhsminor
.
yy231
;
yymsp
[
0
].
minor
.
yy
373
=
yylhsminor
.
yy373
;
break
;
break
;
case
171
:
/* union ::= union UNION ALL select */
case
171
:
/* union ::= union UNION ALL select */
{
yylhsminor
.
yy
231
=
appendSelectClause
(
yymsp
[
-
3
].
minor
.
yy231
,
yymsp
[
0
].
minor
.
yy86
);
}
{
yylhsminor
.
yy
373
=
appendSelectClause
(
yymsp
[
-
3
].
minor
.
yy373
,
yymsp
[
0
].
minor
.
yy564
);
}
yymsp
[
-
3
].
minor
.
yy
231
=
yylhsminor
.
yy231
;
yymsp
[
-
3
].
minor
.
yy
373
=
yylhsminor
.
yy373
;
break
;
break
;
case
172
:
/* cmd ::= union */
case
172
:
/* cmd ::= union */
{
setSqlInfo
(
pInfo
,
yymsp
[
0
].
minor
.
yy
231
,
NULL
,
TSDB_SQL_SELECT
);
}
{
setSqlInfo
(
pInfo
,
yymsp
[
0
].
minor
.
yy
373
,
NULL
,
TSDB_SQL_SELECT
);
}
break
;
break
;
case
173
:
/* select ::= SELECT selcollist */
case
173
:
/* select ::= SELECT selcollist */
{
{
yylhsminor
.
yy
86
=
tSetQuerySqlNode
(
&
yymsp
[
-
1
].
minor
.
yy0
,
yymsp
[
0
].
minor
.
yy231
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
);
yylhsminor
.
yy
564
=
tSetQuerySqlNode
(
&
yymsp
[
-
1
].
minor
.
yy0
,
yymsp
[
0
].
minor
.
yy373
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
);
}
}
yymsp
[
-
1
].
minor
.
yy
86
=
yylhsminor
.
yy86
;
yymsp
[
-
1
].
minor
.
yy
564
=
yylhsminor
.
yy564
;
break
;
break
;
case
174
:
/* sclp ::= selcollist COMMA */
case
174
:
/* sclp ::= selcollist COMMA */
{
yylhsminor
.
yy
231
=
yymsp
[
-
1
].
minor
.
yy231
;}
{
yylhsminor
.
yy
373
=
yymsp
[
-
1
].
minor
.
yy373
;}
yymsp
[
-
1
].
minor
.
yy
231
=
yylhsminor
.
yy231
;
yymsp
[
-
1
].
minor
.
yy
373
=
yylhsminor
.
yy373
;
break
;
break
;
case
175
:
/* sclp ::= */
case
175
:
/* sclp ::= */
case
216
:
/* orderby_opt ::= */
yytestcase
(
yyruleno
==
216
);
case
216
:
/* orderby_opt ::= */
yytestcase
(
yyruleno
==
216
);
{
yymsp
[
1
].
minor
.
yy
231
=
0
;}
{
yymsp
[
1
].
minor
.
yy
373
=
0
;}
break
;
break
;
case
176
:
/* selcollist ::= sclp distinct expr as */
case
176
:
/* selcollist ::= sclp distinct expr as */
{
{
yylhsminor
.
yy
231
=
tSqlExprListAppend
(
yymsp
[
-
3
].
minor
.
yy231
,
yymsp
[
-
1
].
minor
.
yy22
6
,
yymsp
[
-
2
].
minor
.
yy0
.
n
?
&
yymsp
[
-
2
].
minor
.
yy0
:
0
,
yymsp
[
0
].
minor
.
yy0
.
n
?&
yymsp
[
0
].
minor
.
yy0
:
0
);
yylhsminor
.
yy
373
=
tSqlExprListAppend
(
yymsp
[
-
3
].
minor
.
yy373
,
yymsp
[
-
1
].
minor
.
yy4
6
,
yymsp
[
-
2
].
minor
.
yy0
.
n
?
&
yymsp
[
-
2
].
minor
.
yy0
:
0
,
yymsp
[
0
].
minor
.
yy0
.
n
?&
yymsp
[
0
].
minor
.
yy0
:
0
);
}
}
yymsp
[
-
3
].
minor
.
yy
231
=
yylhsminor
.
yy231
;
yymsp
[
-
3
].
minor
.
yy
373
=
yylhsminor
.
yy373
;
break
;
break
;
case
177
:
/* selcollist ::= sclp STAR */
case
177
:
/* selcollist ::= sclp STAR */
{
{
tSqlExpr
*
pNode
=
tSqlExprCreateIdValue
(
pInfo
,
NULL
,
TK_ALL
);
tSqlExpr
*
pNode
=
tSqlExprCreateIdValue
(
pInfo
,
NULL
,
TK_ALL
);
yylhsminor
.
yy
231
=
tSqlExprListAppend
(
yymsp
[
-
1
].
minor
.
yy231
,
pNode
,
0
,
0
);
yylhsminor
.
yy
373
=
tSqlExprListAppend
(
yymsp
[
-
1
].
minor
.
yy373
,
pNode
,
0
,
0
);
}
}
yymsp
[
-
1
].
minor
.
yy
231
=
yylhsminor
.
yy231
;
yymsp
[
-
1
].
minor
.
yy
373
=
yylhsminor
.
yy373
;
break
;
break
;
case
178
:
/* as ::= AS ids */
case
178
:
/* as ::= AS ids */
{
yymsp
[
-
1
].
minor
.
yy0
=
yymsp
[
0
].
minor
.
yy0
;
}
{
yymsp
[
-
1
].
minor
.
yy0
=
yymsp
[
0
].
minor
.
yy0
;
}
...
@@ -2892,114 +2916,114 @@ static void yy_reduce(
...
@@ -2892,114 +2916,114 @@ static void yy_reduce(
break
;
break
;
case
183
:
/* from ::= FROM tablelist */
case
183
:
/* from ::= FROM tablelist */
case
184
:
/* from ::= FROM sub */
yytestcase
(
yyruleno
==
184
);
case
184
:
/* from ::= FROM sub */
yytestcase
(
yyruleno
==
184
);
{
yymsp
[
-
1
].
minor
.
yy
484
=
yymsp
[
0
].
minor
.
yy484
;}
{
yymsp
[
-
1
].
minor
.
yy
192
=
yymsp
[
0
].
minor
.
yy192
;}
break
;
break
;
case
185
:
/* sub ::= LP union RP */
case
185
:
/* sub ::= LP union RP */
{
yymsp
[
-
2
].
minor
.
yy
484
=
addSubqueryElem
(
NULL
,
yymsp
[
-
1
].
minor
.
yy231
,
NULL
);}
{
yymsp
[
-
2
].
minor
.
yy
192
=
addSubqueryElem
(
NULL
,
yymsp
[
-
1
].
minor
.
yy373
,
NULL
);}
break
;
break
;
case
186
:
/* sub ::= LP union RP ids */
case
186
:
/* sub ::= LP union RP ids */
{
yymsp
[
-
3
].
minor
.
yy
484
=
addSubqueryElem
(
NULL
,
yymsp
[
-
2
].
minor
.
yy231
,
&
yymsp
[
0
].
minor
.
yy0
);}
{
yymsp
[
-
3
].
minor
.
yy
192
=
addSubqueryElem
(
NULL
,
yymsp
[
-
2
].
minor
.
yy373
,
&
yymsp
[
0
].
minor
.
yy0
);}
break
;
break
;
case
187
:
/* sub ::= sub COMMA LP union RP ids */
case
187
:
/* sub ::= sub COMMA LP union RP ids */
{
yylhsminor
.
yy
484
=
addSubqueryElem
(
yymsp
[
-
5
].
minor
.
yy484
,
yymsp
[
-
2
].
minor
.
yy231
,
&
yymsp
[
0
].
minor
.
yy0
);}
{
yylhsminor
.
yy
192
=
addSubqueryElem
(
yymsp
[
-
5
].
minor
.
yy192
,
yymsp
[
-
2
].
minor
.
yy373
,
&
yymsp
[
0
].
minor
.
yy0
);}
yymsp
[
-
5
].
minor
.
yy
484
=
yylhsminor
.
yy484
;
yymsp
[
-
5
].
minor
.
yy
192
=
yylhsminor
.
yy192
;
break
;
break
;
case
188
:
/* tablelist ::= ids cpxName */
case
188
:
/* tablelist ::= ids cpxName */
{
{
yymsp
[
-
1
].
minor
.
yy0
.
n
+=
yymsp
[
0
].
minor
.
yy0
.
n
;
yymsp
[
-
1
].
minor
.
yy0
.
n
+=
yymsp
[
0
].
minor
.
yy0
.
n
;
yylhsminor
.
yy
484
=
setTableNameList
(
NULL
,
&
yymsp
[
-
1
].
minor
.
yy0
,
NULL
);
yylhsminor
.
yy
192
=
setTableNameList
(
NULL
,
&
yymsp
[
-
1
].
minor
.
yy0
,
NULL
);
}
}
yymsp
[
-
1
].
minor
.
yy
484
=
yylhsminor
.
yy484
;
yymsp
[
-
1
].
minor
.
yy
192
=
yylhsminor
.
yy192
;
break
;
break
;
case
189
:
/* tablelist ::= ids cpxName ids */
case
189
:
/* tablelist ::= ids cpxName ids */
{
{
yymsp
[
-
2
].
minor
.
yy0
.
n
+=
yymsp
[
-
1
].
minor
.
yy0
.
n
;
yymsp
[
-
2
].
minor
.
yy0
.
n
+=
yymsp
[
-
1
].
minor
.
yy0
.
n
;
yylhsminor
.
yy
484
=
setTableNameList
(
NULL
,
&
yymsp
[
-
2
].
minor
.
yy0
,
&
yymsp
[
0
].
minor
.
yy0
);
yylhsminor
.
yy
192
=
setTableNameList
(
NULL
,
&
yymsp
[
-
2
].
minor
.
yy0
,
&
yymsp
[
0
].
minor
.
yy0
);
}
}
yymsp
[
-
2
].
minor
.
yy
484
=
yylhsminor
.
yy484
;
yymsp
[
-
2
].
minor
.
yy
192
=
yylhsminor
.
yy192
;
break
;
break
;
case
190
:
/* tablelist ::= tablelist COMMA ids cpxName */
case
190
:
/* tablelist ::= tablelist COMMA ids cpxName */
{
{
yymsp
[
-
1
].
minor
.
yy0
.
n
+=
yymsp
[
0
].
minor
.
yy0
.
n
;
yymsp
[
-
1
].
minor
.
yy0
.
n
+=
yymsp
[
0
].
minor
.
yy0
.
n
;
yylhsminor
.
yy
484
=
setTableNameList
(
yymsp
[
-
3
].
minor
.
yy484
,
&
yymsp
[
-
1
].
minor
.
yy0
,
NULL
);
yylhsminor
.
yy
192
=
setTableNameList
(
yymsp
[
-
3
].
minor
.
yy192
,
&
yymsp
[
-
1
].
minor
.
yy0
,
NULL
);
}
}
yymsp
[
-
3
].
minor
.
yy
484
=
yylhsminor
.
yy484
;
yymsp
[
-
3
].
minor
.
yy
192
=
yylhsminor
.
yy192
;
break
;
break
;
case
191
:
/* tablelist ::= tablelist COMMA ids cpxName ids */
case
191
:
/* tablelist ::= tablelist COMMA ids cpxName ids */
{
{
yymsp
[
-
2
].
minor
.
yy0
.
n
+=
yymsp
[
-
1
].
minor
.
yy0
.
n
;
yymsp
[
-
2
].
minor
.
yy0
.
n
+=
yymsp
[
-
1
].
minor
.
yy0
.
n
;
yylhsminor
.
yy
484
=
setTableNameList
(
yymsp
[
-
4
].
minor
.
yy484
,
&
yymsp
[
-
2
].
minor
.
yy0
,
&
yymsp
[
0
].
minor
.
yy0
);
yylhsminor
.
yy
192
=
setTableNameList
(
yymsp
[
-
4
].
minor
.
yy192
,
&
yymsp
[
-
2
].
minor
.
yy0
,
&
yymsp
[
0
].
minor
.
yy0
);
}
}
yymsp
[
-
4
].
minor
.
yy
484
=
yylhsminor
.
yy484
;
yymsp
[
-
4
].
minor
.
yy
192
=
yylhsminor
.
yy192
;
break
;
break
;
case
192
:
/* tmvar ::= VARIABLE */
case
192
:
/* tmvar ::= VARIABLE */
{
yylhsminor
.
yy0
=
yymsp
[
0
].
minor
.
yy0
;}
{
yylhsminor
.
yy0
=
yymsp
[
0
].
minor
.
yy0
;}
yymsp
[
0
].
minor
.
yy0
=
yylhsminor
.
yy0
;
yymsp
[
0
].
minor
.
yy0
=
yylhsminor
.
yy0
;
break
;
break
;
case
193
:
/* timestamp ::= INTEGER */
case
193
:
/* timestamp ::= INTEGER */
{
yylhsminor
.
yy
22
6
=
tSqlExprCreateTimestamp
(
&
yymsp
[
0
].
minor
.
yy0
,
TK_INTEGER
);}
{
yylhsminor
.
yy
4
6
=
tSqlExprCreateTimestamp
(
&
yymsp
[
0
].
minor
.
yy0
,
TK_INTEGER
);}
yymsp
[
0
].
minor
.
yy
226
=
yylhsminor
.
yy22
6
;
yymsp
[
0
].
minor
.
yy
46
=
yylhsminor
.
yy4
6
;
break
;
break
;
case
194
:
/* timestamp ::= MINUS INTEGER */
case
194
:
/* timestamp ::= MINUS INTEGER */
case
195
:
/* timestamp ::= PLUS INTEGER */
yytestcase
(
yyruleno
==
195
);
case
195
:
/* timestamp ::= PLUS INTEGER */
yytestcase
(
yyruleno
==
195
);
{
yymsp
[
-
1
].
minor
.
yy0
.
n
+=
yymsp
[
0
].
minor
.
yy0
.
n
;
yymsp
[
-
1
].
minor
.
yy0
.
type
=
TK_INTEGER
;
yylhsminor
.
yy
22
6
=
tSqlExprCreateTimestamp
(
&
yymsp
[
-
1
].
minor
.
yy0
,
TK_INTEGER
);}
{
yymsp
[
-
1
].
minor
.
yy0
.
n
+=
yymsp
[
0
].
minor
.
yy0
.
n
;
yymsp
[
-
1
].
minor
.
yy0
.
type
=
TK_INTEGER
;
yylhsminor
.
yy
4
6
=
tSqlExprCreateTimestamp
(
&
yymsp
[
-
1
].
minor
.
yy0
,
TK_INTEGER
);}
yymsp
[
-
1
].
minor
.
yy
226
=
yylhsminor
.
yy22
6
;
yymsp
[
-
1
].
minor
.
yy
46
=
yylhsminor
.
yy4
6
;
break
;
break
;
case
196
:
/* timestamp ::= STRING */
case
196
:
/* timestamp ::= STRING */
{
yylhsminor
.
yy
22
6
=
tSqlExprCreateTimestamp
(
&
yymsp
[
0
].
minor
.
yy0
,
TK_STRING
);}
{
yylhsminor
.
yy
4
6
=
tSqlExprCreateTimestamp
(
&
yymsp
[
0
].
minor
.
yy0
,
TK_STRING
);}
yymsp
[
0
].
minor
.
yy
226
=
yylhsminor
.
yy22
6
;
yymsp
[
0
].
minor
.
yy
46
=
yylhsminor
.
yy4
6
;
break
;
break
;
case
197
:
/* timestamp ::= NOW */
case
197
:
/* timestamp ::= NOW */
{
yylhsminor
.
yy
22
6
=
tSqlExprCreateTimestamp
(
&
yymsp
[
0
].
minor
.
yy0
,
TK_NOW
);
}
{
yylhsminor
.
yy
4
6
=
tSqlExprCreateTimestamp
(
&
yymsp
[
0
].
minor
.
yy0
,
TK_NOW
);
}
yymsp
[
0
].
minor
.
yy
226
=
yylhsminor
.
yy22
6
;
yymsp
[
0
].
minor
.
yy
46
=
yylhsminor
.
yy4
6
;
break
;
break
;
case
198
:
/* timestamp ::= NOW PLUS VARIABLE */
case
198
:
/* timestamp ::= NOW PLUS VARIABLE */
{
yymsp
[
-
2
].
minor
.
yy
22
6
=
tSqlExprCreateTimestamp
(
&
yymsp
[
0
].
minor
.
yy0
,
TK_PLUS
);
}
{
yymsp
[
-
2
].
minor
.
yy
4
6
=
tSqlExprCreateTimestamp
(
&
yymsp
[
0
].
minor
.
yy0
,
TK_PLUS
);
}
break
;
break
;
case
199
:
/* timestamp ::= NOW MINUS VARIABLE */
case
199
:
/* timestamp ::= NOW MINUS VARIABLE */
{
yymsp
[
-
2
].
minor
.
yy
22
6
=
tSqlExprCreateTimestamp
(
&
yymsp
[
0
].
minor
.
yy0
,
TK_MINUS
);
}
{
yymsp
[
-
2
].
minor
.
yy
4
6
=
tSqlExprCreateTimestamp
(
&
yymsp
[
0
].
minor
.
yy0
,
TK_MINUS
);
}
break
;
break
;
case
200
:
/* range_option ::= */
case
200
:
/* range_option ::= */
{
yymsp
[
1
].
minor
.
yy
480
.
start
=
0
;
yymsp
[
1
].
minor
.
yy480
.
end
=
0
;}
{
yymsp
[
1
].
minor
.
yy
229
.
start
=
0
;
yymsp
[
1
].
minor
.
yy229
.
end
=
0
;}
break
;
break
;
case
201
:
/* range_option ::= RANGE LP timestamp COMMA timestamp RP */
case
201
:
/* range_option ::= RANGE LP timestamp COMMA timestamp RP */
{
yymsp
[
-
5
].
minor
.
yy
480
.
start
=
yymsp
[
-
3
].
minor
.
yy226
;
yymsp
[
-
5
].
minor
.
yy480
.
end
=
yymsp
[
-
1
].
minor
.
yy22
6
;}
{
yymsp
[
-
5
].
minor
.
yy
229
.
start
=
yymsp
[
-
3
].
minor
.
yy46
;
yymsp
[
-
5
].
minor
.
yy229
.
end
=
yymsp
[
-
1
].
minor
.
yy4
6
;}
break
;
break
;
case
202
:
/* interval_option ::= intervalKey LP tmvar RP */
case
202
:
/* interval_option ::= intervalKey LP tmvar RP */
{
yylhsminor
.
yy
430
.
interval
=
yymsp
[
-
1
].
minor
.
yy0
;
yylhsminor
.
yy430
.
offset
.
n
=
0
;
yylhsminor
.
yy430
.
token
=
yymsp
[
-
3
].
minor
.
yy310
;}
{
yylhsminor
.
yy
376
.
interval
=
yymsp
[
-
1
].
minor
.
yy0
;
yylhsminor
.
yy376
.
offset
.
n
=
0
;
yylhsminor
.
yy376
.
token
=
yymsp
[
-
3
].
minor
.
yy332
;}
yymsp
[
-
3
].
minor
.
yy
430
=
yylhsminor
.
yy430
;
yymsp
[
-
3
].
minor
.
yy
376
=
yylhsminor
.
yy376
;
break
;
break
;
case
203
:
/* interval_option ::= intervalKey LP tmvar COMMA tmvar RP */
case
203
:
/* interval_option ::= intervalKey LP tmvar COMMA tmvar RP */
{
yylhsminor
.
yy
430
.
interval
=
yymsp
[
-
3
].
minor
.
yy0
;
yylhsminor
.
yy430
.
offset
=
yymsp
[
-
1
].
minor
.
yy0
;
yylhsminor
.
yy430
.
token
=
yymsp
[
-
5
].
minor
.
yy310
;}
{
yylhsminor
.
yy
376
.
interval
=
yymsp
[
-
3
].
minor
.
yy0
;
yylhsminor
.
yy376
.
offset
=
yymsp
[
-
1
].
minor
.
yy0
;
yylhsminor
.
yy376
.
token
=
yymsp
[
-
5
].
minor
.
yy332
;}
yymsp
[
-
5
].
minor
.
yy
430
=
yylhsminor
.
yy430
;
yymsp
[
-
5
].
minor
.
yy
376
=
yylhsminor
.
yy376
;
break
;
break
;
case
204
:
/* interval_option ::= */
case
204
:
/* interval_option ::= */
{
memset
(
&
yymsp
[
1
].
minor
.
yy
430
,
0
,
sizeof
(
yymsp
[
1
].
minor
.
yy430
));}
{
memset
(
&
yymsp
[
1
].
minor
.
yy
376
,
0
,
sizeof
(
yymsp
[
1
].
minor
.
yy376
));}
break
;
break
;
case
205
:
/* intervalKey ::= INTERVAL */
case
205
:
/* intervalKey ::= INTERVAL */
{
yymsp
[
0
].
minor
.
yy3
10
=
TK_INTERVAL
;}
{
yymsp
[
0
].
minor
.
yy3
32
=
TK_INTERVAL
;}
break
;
break
;
case
206
:
/* intervalKey ::= EVERY */
case
206
:
/* intervalKey ::= EVERY */
{
yymsp
[
0
].
minor
.
yy3
10
=
TK_EVERY
;
}
{
yymsp
[
0
].
minor
.
yy3
32
=
TK_EVERY
;
}
break
;
break
;
case
207
:
/* session_option ::= */
case
207
:
/* session_option ::= */
{
yymsp
[
1
].
minor
.
yy4
09
.
col
.
n
=
0
;
yymsp
[
1
].
minor
.
yy409
.
gap
.
n
=
0
;}
{
yymsp
[
1
].
minor
.
yy4
35
.
col
.
n
=
0
;
yymsp
[
1
].
minor
.
yy435
.
gap
.
n
=
0
;}
break
;
break
;
case
208
:
/* session_option ::= SESSION LP ids cpxName COMMA tmvar RP */
case
208
:
/* 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
.
yy4
09
.
col
=
yymsp
[
-
4
].
minor
.
yy0
;
yymsp
[
-
6
].
minor
.
yy4
35
.
col
=
yymsp
[
-
4
].
minor
.
yy0
;
yymsp
[
-
6
].
minor
.
yy4
09
.
gap
=
yymsp
[
-
1
].
minor
.
yy0
;
yymsp
[
-
6
].
minor
.
yy4
35
.
gap
=
yymsp
[
-
1
].
minor
.
yy0
;
}
}
break
;
break
;
case
209
:
/* windowstate_option ::= */
case
209
:
/* windowstate_option ::= */
{
yymsp
[
1
].
minor
.
yy
228
.
col
.
n
=
0
;
yymsp
[
1
].
minor
.
yy228
.
col
.
z
=
NULL
;}
{
yymsp
[
1
].
minor
.
yy
32
.
col
.
n
=
0
;
yymsp
[
1
].
minor
.
yy32
.
col
.
z
=
NULL
;}
break
;
break
;
case
210
:
/* windowstate_option ::= STATE_WINDOW LP ids RP */
case
210
:
/* windowstate_option ::= STATE_WINDOW LP ids RP */
{
yymsp
[
-
3
].
minor
.
yy
228
.
col
=
yymsp
[
-
1
].
minor
.
yy0
;
}
{
yymsp
[
-
3
].
minor
.
yy
32
.
col
=
yymsp
[
-
1
].
minor
.
yy0
;
}
break
;
break
;
case
211
:
/* fill_opt ::= */
case
211
:
/* fill_opt ::= */
{
yymsp
[
1
].
minor
.
yy
231
=
0
;
}
{
yymsp
[
1
].
minor
.
yy
373
=
0
;
}
break
;
break
;
case
212
:
/* fill_opt ::= FILL LP ID COMMA tagitemlist RP */
case
212
:
/* fill_opt ::= FILL LP ID COMMA tagitemlist RP */
{
{
...
@@ -3007,14 +3031,14 @@ static void yy_reduce(
...
@@ -3007,14 +3031,14 @@ static void yy_reduce(
toTSDBType
(
yymsp
[
-
3
].
minor
.
yy0
.
type
);
toTSDBType
(
yymsp
[
-
3
].
minor
.
yy0
.
type
);
tVariantCreate
(
&
A
,
&
yymsp
[
-
3
].
minor
.
yy0
);
tVariantCreate
(
&
A
,
&
yymsp
[
-
3
].
minor
.
yy0
);
tVariantListInsert
(
yymsp
[
-
1
].
minor
.
yy
231
,
&
A
,
-
1
,
0
);
tVariantListInsert
(
yymsp
[
-
1
].
minor
.
yy
373
,
&
A
,
-
1
,
0
);
yymsp
[
-
5
].
minor
.
yy
231
=
yymsp
[
-
1
].
minor
.
yy231
;
yymsp
[
-
5
].
minor
.
yy
373
=
yymsp
[
-
1
].
minor
.
yy373
;
}
}
break
;
break
;
case
213
:
/* fill_opt ::= FILL LP ID RP */
case
213
:
/* fill_opt ::= FILL LP ID RP */
{
{
toTSDBType
(
yymsp
[
-
1
].
minor
.
yy0
.
type
);
toTSDBType
(
yymsp
[
-
1
].
minor
.
yy0
.
type
);
yymsp
[
-
3
].
minor
.
yy
231
=
tVariantListAppendToken
(
NULL
,
&
yymsp
[
-
1
].
minor
.
yy0
,
-
1
,
true
);
yymsp
[
-
3
].
minor
.
yy
373
=
tVariantListAppendToken
(
NULL
,
&
yymsp
[
-
1
].
minor
.
yy0
,
-
1
,
true
);
}
}
break
;
break
;
case
214
:
/* sliding_opt ::= SLIDING LP tmvar RP */
case
214
:
/* sliding_opt ::= SLIDING LP tmvar RP */
...
@@ -3024,313 +3048,332 @@ static void yy_reduce(
...
@@ -3024,313 +3048,332 @@ static void yy_reduce(
{
yymsp
[
1
].
minor
.
yy0
.
n
=
0
;
yymsp
[
1
].
minor
.
yy0
.
z
=
NULL
;
yymsp
[
1
].
minor
.
yy0
.
type
=
0
;
}
{
yymsp
[
1
].
minor
.
yy0
.
n
=
0
;
yymsp
[
1
].
minor
.
yy0
.
z
=
NULL
;
yymsp
[
1
].
minor
.
yy0
.
type
=
0
;
}
break
;
break
;
case
217
:
/* orderby_opt ::= ORDER BY sortlist */
case
217
:
/* orderby_opt ::= ORDER BY sortlist */
{
yymsp
[
-
2
].
minor
.
yy
231
=
yymsp
[
0
].
minor
.
yy231
;}
{
yymsp
[
-
2
].
minor
.
yy
373
=
yymsp
[
0
].
minor
.
yy373
;}
break
;
break
;
case
218
:
/* sortlist ::= sortlist COMMA item sortorder */
case
218
:
/* sortlist ::= sortlist COMMA item sortorder */
{
{
yylhsminor
.
yy
231
=
commonItemAppend
(
yymsp
[
-
3
].
minor
.
yy231
,
&
yymsp
[
-
1
].
minor
.
yy176
,
NULL
,
false
,
yymsp
[
0
].
minor
.
yy502
);
yylhsminor
.
yy
373
=
commonItemAppend
(
yymsp
[
-
3
].
minor
.
yy373
,
&
yymsp
[
-
1
].
minor
.
yy186
,
NULL
,
false
,
yymsp
[
0
].
minor
.
yy20
);
}
}
yymsp
[
-
3
].
minor
.
yy
231
=
yylhsminor
.
yy231
;
yymsp
[
-
3
].
minor
.
yy
373
=
yylhsminor
.
yy373
;
break
;
break
;
case
219
:
/* sortlist ::= sortlist COMMA arrow sortorder */
case
219
:
/* sortlist ::= sortlist COMMA arrow sortorder */
{
{
yylhsminor
.
yy
231
=
commonItemAppend
(
yymsp
[
-
3
].
minor
.
yy231
,
NULL
,
yymsp
[
-
1
].
minor
.
yy226
,
true
,
yymsp
[
0
].
minor
.
yy502
);
yylhsminor
.
yy
373
=
commonItemAppend
(
yymsp
[
-
3
].
minor
.
yy373
,
NULL
,
yymsp
[
-
1
].
minor
.
yy46
,
true
,
yymsp
[
0
].
minor
.
yy20
);
}
}
yymsp
[
-
3
].
minor
.
yy
231
=
yylhsminor
.
yy231
;
yymsp
[
-
3
].
minor
.
yy
373
=
yylhsminor
.
yy373
;
break
;
break
;
case
220
:
/* sortlist ::= item sortorder */
case
220
:
/* sortlist ::= item sortorder */
{
{
yylhsminor
.
yy
231
=
commonItemAppend
(
NULL
,
&
yymsp
[
-
1
].
minor
.
yy176
,
NULL
,
false
,
yymsp
[
0
].
minor
.
yy502
);
yylhsminor
.
yy
373
=
commonItemAppend
(
NULL
,
&
yymsp
[
-
1
].
minor
.
yy186
,
NULL
,
false
,
yymsp
[
0
].
minor
.
yy20
);
}
}
yymsp
[
-
1
].
minor
.
yy
231
=
yylhsminor
.
yy231
;
yymsp
[
-
1
].
minor
.
yy
373
=
yylhsminor
.
yy373
;
break
;
break
;
case
221
:
/* sortlist ::= arrow sortorder */
case
221
:
/* sortlist ::= arrow sortorder */
{
{
yylhsminor
.
yy
231
=
commonItemAppend
(
NULL
,
NULL
,
yymsp
[
-
1
].
minor
.
yy226
,
true
,
yymsp
[
0
].
minor
.
yy502
);
yylhsminor
.
yy
373
=
commonItemAppend
(
NULL
,
NULL
,
yymsp
[
-
1
].
minor
.
yy46
,
true
,
yymsp
[
0
].
minor
.
yy20
);
}
}
yymsp
[
-
1
].
minor
.
yy
231
=
yylhsminor
.
yy231
;
yymsp
[
-
1
].
minor
.
yy
373
=
yylhsminor
.
yy373
;
break
;
break
;
case
222
:
/* item ::= ID */
case
222
:
/* item ::= ID */
{
{
toTSDBType
(
yymsp
[
0
].
minor
.
yy0
.
type
);
toTSDBType
(
yymsp
[
0
].
minor
.
yy0
.
type
);
tVariantCreate
(
&
yylhsminor
.
yy1
7
6
,
&
yymsp
[
0
].
minor
.
yy0
);
tVariantCreate
(
&
yylhsminor
.
yy1
8
6
,
&
yymsp
[
0
].
minor
.
yy0
);
}
}
yymsp
[
0
].
minor
.
yy1
76
=
yylhsminor
.
yy17
6
;
yymsp
[
0
].
minor
.
yy1
86
=
yylhsminor
.
yy18
6
;
break
;
break
;
case
223
:
/* item ::= ID DOT ID */
case
223
:
/* item ::= ID DOT ID */
{
{
toTSDBType
(
yymsp
[
-
2
].
minor
.
yy0
.
type
);
toTSDBType
(
yymsp
[
-
2
].
minor
.
yy0
.
type
);
yymsp
[
-
2
].
minor
.
yy0
.
n
+=
(
1
+
yymsp
[
0
].
minor
.
yy0
.
n
);
yymsp
[
-
2
].
minor
.
yy0
.
n
+=
(
1
+
yymsp
[
0
].
minor
.
yy0
.
n
);
tVariantCreate
(
&
yylhsminor
.
yy1
7
6
,
&
yymsp
[
-
2
].
minor
.
yy0
);
tVariantCreate
(
&
yylhsminor
.
yy1
8
6
,
&
yymsp
[
-
2
].
minor
.
yy0
);
}
}
yymsp
[
-
2
].
minor
.
yy1
76
=
yylhsminor
.
yy17
6
;
yymsp
[
-
2
].
minor
.
yy1
86
=
yylhsminor
.
yy18
6
;
break
;
break
;
case
224
:
/* sortorder ::= ASC */
case
224
:
/* sortorder ::= ASC */
{
yymsp
[
0
].
minor
.
yy
502
=
TSDB_ORDER_ASC
;
}
{
yymsp
[
0
].
minor
.
yy
20
=
TSDB_ORDER_ASC
;
}
break
;
break
;
case
225
:
/* sortorder ::= DESC */
case
225
:
/* sortorder ::= DESC */
{
yymsp
[
0
].
minor
.
yy
502
=
TSDB_ORDER_DESC
;}
{
yymsp
[
0
].
minor
.
yy
20
=
TSDB_ORDER_DESC
;}
break
;
break
;
case
226
:
/* sortorder ::= */
case
226
:
/* sortorder ::= */
{
yymsp
[
1
].
minor
.
yy
502
=
TSDB_ORDER_ASC
;
}
{
yymsp
[
1
].
minor
.
yy
20
=
TSDB_ORDER_ASC
;
}
break
;
break
;
case
227
:
/* groupby_opt ::= */
case
227
:
/* groupby_opt ::= */
{
yymsp
[
1
].
minor
.
yy
231
=
0
;}
{
yymsp
[
1
].
minor
.
yy
373
=
0
;}
break
;
break
;
case
228
:
/* groupby_opt ::= GROUP BY grouplist */
case
228
:
/* groupby_opt ::= GROUP BY grouplist */
{
yymsp
[
-
2
].
minor
.
yy
231
=
yymsp
[
0
].
minor
.
yy231
;}
{
yymsp
[
-
2
].
minor
.
yy
373
=
yymsp
[
0
].
minor
.
yy373
;}
break
;
break
;
case
229
:
/* grouplist ::= grouplist COMMA item */
case
229
:
/* grouplist ::= grouplist COMMA item */
{
{
yylhsminor
.
yy
231
=
commonItemAppend
(
yymsp
[
-
2
].
minor
.
yy231
,
&
yymsp
[
0
].
minor
.
yy17
6
,
NULL
,
false
,
-
1
);
yylhsminor
.
yy
373
=
commonItemAppend
(
yymsp
[
-
2
].
minor
.
yy373
,
&
yymsp
[
0
].
minor
.
yy18
6
,
NULL
,
false
,
-
1
);
}
}
yymsp
[
-
2
].
minor
.
yy
231
=
yylhsminor
.
yy231
;
yymsp
[
-
2
].
minor
.
yy
373
=
yylhsminor
.
yy373
;
break
;
break
;
case
230
:
/* grouplist ::= grouplist COMMA arrow */
case
230
:
/* grouplist ::= grouplist COMMA arrow */
{
{
yylhsminor
.
yy
231
=
commonItemAppend
(
yymsp
[
-
2
].
minor
.
yy231
,
NULL
,
yymsp
[
0
].
minor
.
yy22
6
,
true
,
-
1
);
yylhsminor
.
yy
373
=
commonItemAppend
(
yymsp
[
-
2
].
minor
.
yy373
,
NULL
,
yymsp
[
0
].
minor
.
yy4
6
,
true
,
-
1
);
}
}
yymsp
[
-
2
].
minor
.
yy
231
=
yylhsminor
.
yy231
;
yymsp
[
-
2
].
minor
.
yy
373
=
yylhsminor
.
yy373
;
break
;
break
;
case
231
:
/* grouplist ::= item */
case
231
:
/* grouplist ::= item */
{
{
yylhsminor
.
yy
231
=
commonItemAppend
(
NULL
,
&
yymsp
[
0
].
minor
.
yy17
6
,
NULL
,
false
,
-
1
);
yylhsminor
.
yy
373
=
commonItemAppend
(
NULL
,
&
yymsp
[
0
].
minor
.
yy18
6
,
NULL
,
false
,
-
1
);
}
}
yymsp
[
0
].
minor
.
yy
231
=
yylhsminor
.
yy231
;
yymsp
[
0
].
minor
.
yy
373
=
yylhsminor
.
yy373
;
break
;
break
;
case
232
:
/* grouplist ::= arrow */
case
232
:
/* grouplist ::= arrow */
{
{
yylhsminor
.
yy
231
=
commonItemAppend
(
NULL
,
NULL
,
yymsp
[
0
].
minor
.
yy22
6
,
true
,
-
1
);
yylhsminor
.
yy
373
=
commonItemAppend
(
NULL
,
NULL
,
yymsp
[
0
].
minor
.
yy4
6
,
true
,
-
1
);
}
}
yymsp
[
0
].
minor
.
yy
231
=
yylhsminor
.
yy231
;
yymsp
[
0
].
minor
.
yy
373
=
yylhsminor
.
yy373
;
break
;
break
;
case
233
:
/* having_opt ::= */
case
233
:
/* having_opt ::= */
case
243
:
/* where_opt ::= */
yytestcase
(
yyruleno
==
243
);
case
243
:
/* where_opt ::= */
yytestcase
(
yyruleno
==
243
);
case
29
4
:
/* expritem ::= */
yytestcase
(
yyruleno
==
294
);
case
29
9
:
/* expritem ::= */
yytestcase
(
yyruleno
==
299
);
{
yymsp
[
1
].
minor
.
yy
22
6
=
0
;}
{
yymsp
[
1
].
minor
.
yy
4
6
=
0
;}
break
;
break
;
case
234
:
/* having_opt ::= HAVING expr */
case
234
:
/* having_opt ::= HAVING expr */
case
244
:
/* where_opt ::= WHERE expr */
yytestcase
(
yyruleno
==
244
);
case
244
:
/* where_opt ::= WHERE expr */
yytestcase
(
yyruleno
==
244
);
{
yymsp
[
-
1
].
minor
.
yy
226
=
yymsp
[
0
].
minor
.
yy22
6
;}
{
yymsp
[
-
1
].
minor
.
yy
46
=
yymsp
[
0
].
minor
.
yy4
6
;}
break
;
break
;
case
235
:
/* limit_opt ::= */
case
235
:
/* limit_opt ::= */
case
239
:
/* slimit_opt ::= */
yytestcase
(
yyruleno
==
239
);
case
239
:
/* slimit_opt ::= */
yytestcase
(
yyruleno
==
239
);
{
yymsp
[
1
].
minor
.
yy
444
.
limit
=
-
1
;
yymsp
[
1
].
minor
.
yy444
.
offset
=
0
;}
{
yymsp
[
1
].
minor
.
yy
86
.
limit
=
-
1
;
yymsp
[
1
].
minor
.
yy86
.
offset
=
0
;}
break
;
break
;
case
236
:
/* limit_opt ::= LIMIT signed */
case
236
:
/* limit_opt ::= LIMIT signed */
case
240
:
/* slimit_opt ::= SLIMIT signed */
yytestcase
(
yyruleno
==
240
);
case
240
:
/* slimit_opt ::= SLIMIT signed */
yytestcase
(
yyruleno
==
240
);
{
yymsp
[
-
1
].
minor
.
yy
444
.
limit
=
yymsp
[
0
].
minor
.
yy549
;
yymsp
[
-
1
].
minor
.
yy444
.
offset
=
0
;}
{
yymsp
[
-
1
].
minor
.
yy
86
.
limit
=
yymsp
[
0
].
minor
.
yy129
;
yymsp
[
-
1
].
minor
.
yy86
.
offset
=
0
;}
break
;
break
;
case
237
:
/* limit_opt ::= LIMIT signed OFFSET signed */
case
237
:
/* limit_opt ::= LIMIT signed OFFSET signed */
{
yymsp
[
-
3
].
minor
.
yy
444
.
limit
=
yymsp
[
-
2
].
minor
.
yy549
;
yymsp
[
-
3
].
minor
.
yy444
.
offset
=
yymsp
[
0
].
minor
.
yy54
9
;}
{
yymsp
[
-
3
].
minor
.
yy
86
.
limit
=
yymsp
[
-
2
].
minor
.
yy129
;
yymsp
[
-
3
].
minor
.
yy86
.
offset
=
yymsp
[
0
].
minor
.
yy12
9
;}
break
;
break
;
case
238
:
/* limit_opt ::= LIMIT signed COMMA signed */
case
238
:
/* limit_opt ::= LIMIT signed COMMA signed */
{
yymsp
[
-
3
].
minor
.
yy
444
.
limit
=
yymsp
[
0
].
minor
.
yy549
;
yymsp
[
-
3
].
minor
.
yy444
.
offset
=
yymsp
[
-
2
].
minor
.
yy54
9
;}
{
yymsp
[
-
3
].
minor
.
yy
86
.
limit
=
yymsp
[
0
].
minor
.
yy129
;
yymsp
[
-
3
].
minor
.
yy86
.
offset
=
yymsp
[
-
2
].
minor
.
yy12
9
;}
break
;
break
;
case
241
:
/* slimit_opt ::= SLIMIT signed SOFFSET signed */
case
241
:
/* slimit_opt ::= SLIMIT signed SOFFSET signed */
{
yymsp
[
-
3
].
minor
.
yy
444
.
limit
=
yymsp
[
-
2
].
minor
.
yy549
;
yymsp
[
-
3
].
minor
.
yy444
.
offset
=
yymsp
[
0
].
minor
.
yy54
9
;}
{
yymsp
[
-
3
].
minor
.
yy
86
.
limit
=
yymsp
[
-
2
].
minor
.
yy129
;
yymsp
[
-
3
].
minor
.
yy86
.
offset
=
yymsp
[
0
].
minor
.
yy12
9
;}
break
;
break
;
case
242
:
/* slimit_opt ::= SLIMIT signed COMMA signed */
case
242
:
/* slimit_opt ::= SLIMIT signed COMMA signed */
{
yymsp
[
-
3
].
minor
.
yy
444
.
limit
=
yymsp
[
0
].
minor
.
yy549
;
yymsp
[
-
3
].
minor
.
yy444
.
offset
=
yymsp
[
-
2
].
minor
.
yy54
9
;}
{
yymsp
[
-
3
].
minor
.
yy
86
.
limit
=
yymsp
[
0
].
minor
.
yy129
;
yymsp
[
-
3
].
minor
.
yy86
.
offset
=
yymsp
[
-
2
].
minor
.
yy12
9
;}
break
;
break
;
case
245
:
/* expr ::= LP expr RP */
case
245
:
/* expr ::= LP expr RP */
{
yylhsminor
.
yy
226
=
yymsp
[
-
1
].
minor
.
yy226
;
yylhsminor
.
yy226
->
exprToken
.
z
=
yymsp
[
-
2
].
minor
.
yy0
.
z
;
yylhsminor
.
yy22
6
->
exprToken
.
n
=
(
yymsp
[
0
].
minor
.
yy0
.
z
-
yymsp
[
-
2
].
minor
.
yy0
.
z
+
1
);}
{
yylhsminor
.
yy
46
=
yymsp
[
-
1
].
minor
.
yy46
;
yylhsminor
.
yy46
->
exprToken
.
z
=
yymsp
[
-
2
].
minor
.
yy0
.
z
;
yylhsminor
.
yy4
6
->
exprToken
.
n
=
(
yymsp
[
0
].
minor
.
yy0
.
z
-
yymsp
[
-
2
].
minor
.
yy0
.
z
+
1
);}
yymsp
[
-
2
].
minor
.
yy
226
=
yylhsminor
.
yy22
6
;
yymsp
[
-
2
].
minor
.
yy
46
=
yylhsminor
.
yy4
6
;
break
;
break
;
case
246
:
/* expr ::= ID */
case
246
:
/* expr ::= ID */
{
yylhsminor
.
yy
22
6
=
tSqlExprCreateIdValue
(
pInfo
,
&
yymsp
[
0
].
minor
.
yy0
,
TK_ID
);}
{
yylhsminor
.
yy
4
6
=
tSqlExprCreateIdValue
(
pInfo
,
&
yymsp
[
0
].
minor
.
yy0
,
TK_ID
);}
yymsp
[
0
].
minor
.
yy
226
=
yylhsminor
.
yy22
6
;
yymsp
[
0
].
minor
.
yy
46
=
yylhsminor
.
yy4
6
;
break
;
break
;
case
247
:
/* expr ::= ID DOT ID */
case
247
:
/* expr ::= ID DOT ID */
{
yymsp
[
-
2
].
minor
.
yy0
.
n
+=
(
1
+
yymsp
[
0
].
minor
.
yy0
.
n
);
yylhsminor
.
yy
22
6
=
tSqlExprCreateIdValue
(
pInfo
,
&
yymsp
[
-
2
].
minor
.
yy0
,
TK_ID
);}
{
yymsp
[
-
2
].
minor
.
yy0
.
n
+=
(
1
+
yymsp
[
0
].
minor
.
yy0
.
n
);
yylhsminor
.
yy
4
6
=
tSqlExprCreateIdValue
(
pInfo
,
&
yymsp
[
-
2
].
minor
.
yy0
,
TK_ID
);}
yymsp
[
-
2
].
minor
.
yy
226
=
yylhsminor
.
yy22
6
;
yymsp
[
-
2
].
minor
.
yy
46
=
yylhsminor
.
yy4
6
;
break
;
break
;
case
248
:
/* expr ::= ID DOT STAR */
case
248
:
/* expr ::= ID DOT STAR */
{
yymsp
[
-
2
].
minor
.
yy0
.
n
+=
(
1
+
yymsp
[
0
].
minor
.
yy0
.
n
);
yylhsminor
.
yy
22
6
=
tSqlExprCreateIdValue
(
pInfo
,
&
yymsp
[
-
2
].
minor
.
yy0
,
TK_ALL
);}
{
yymsp
[
-
2
].
minor
.
yy0
.
n
+=
(
1
+
yymsp
[
0
].
minor
.
yy0
.
n
);
yylhsminor
.
yy
4
6
=
tSqlExprCreateIdValue
(
pInfo
,
&
yymsp
[
-
2
].
minor
.
yy0
,
TK_ALL
);}
yymsp
[
-
2
].
minor
.
yy
226
=
yylhsminor
.
yy22
6
;
yymsp
[
-
2
].
minor
.
yy
46
=
yylhsminor
.
yy4
6
;
break
;
break
;
case
249
:
/* expr ::= INTEGER */
case
249
:
/* expr ::= INTEGER */
{
yylhsminor
.
yy
22
6
=
tSqlExprCreateIdValue
(
pInfo
,
&
yymsp
[
0
].
minor
.
yy0
,
TK_INTEGER
);}
{
yylhsminor
.
yy
4
6
=
tSqlExprCreateIdValue
(
pInfo
,
&
yymsp
[
0
].
minor
.
yy0
,
TK_INTEGER
);}
yymsp
[
0
].
minor
.
yy
226
=
yylhsminor
.
yy22
6
;
yymsp
[
0
].
minor
.
yy
46
=
yylhsminor
.
yy4
6
;
break
;
break
;
case
250
:
/* expr ::= MINUS INTEGER */
case
250
:
/* expr ::= MINUS INTEGER */
case
251
:
/* expr ::= PLUS INTEGER */
yytestcase
(
yyruleno
==
251
);
case
251
:
/* expr ::= PLUS INTEGER */
yytestcase
(
yyruleno
==
251
);
{
yymsp
[
-
1
].
minor
.
yy0
.
n
+=
yymsp
[
0
].
minor
.
yy0
.
n
;
yymsp
[
-
1
].
minor
.
yy0
.
type
=
TK_INTEGER
;
yylhsminor
.
yy
22
6
=
tSqlExprCreateIdValue
(
pInfo
,
&
yymsp
[
-
1
].
minor
.
yy0
,
TK_INTEGER
);}
{
yymsp
[
-
1
].
minor
.
yy0
.
n
+=
yymsp
[
0
].
minor
.
yy0
.
n
;
yymsp
[
-
1
].
minor
.
yy0
.
type
=
TK_INTEGER
;
yylhsminor
.
yy
4
6
=
tSqlExprCreateIdValue
(
pInfo
,
&
yymsp
[
-
1
].
minor
.
yy0
,
TK_INTEGER
);}
yymsp
[
-
1
].
minor
.
yy
226
=
yylhsminor
.
yy22
6
;
yymsp
[
-
1
].
minor
.
yy
46
=
yylhsminor
.
yy4
6
;
break
;
break
;
case
252
:
/* expr ::= FLOAT */
case
252
:
/* expr ::= FLOAT */
{
yylhsminor
.
yy
22
6
=
tSqlExprCreateIdValue
(
pInfo
,
&
yymsp
[
0
].
minor
.
yy0
,
TK_FLOAT
);}
{
yylhsminor
.
yy
4
6
=
tSqlExprCreateIdValue
(
pInfo
,
&
yymsp
[
0
].
minor
.
yy0
,
TK_FLOAT
);}
yymsp
[
0
].
minor
.
yy
226
=
yylhsminor
.
yy22
6
;
yymsp
[
0
].
minor
.
yy
46
=
yylhsminor
.
yy4
6
;
break
;
break
;
case
253
:
/* expr ::= MINUS FLOAT */
case
253
:
/* expr ::= MINUS FLOAT */
case
254
:
/* expr ::= PLUS FLOAT */
yytestcase
(
yyruleno
==
254
);
case
254
:
/* expr ::= PLUS FLOAT */
yytestcase
(
yyruleno
==
254
);
{
yymsp
[
-
1
].
minor
.
yy0
.
n
+=
yymsp
[
0
].
minor
.
yy0
.
n
;
yymsp
[
-
1
].
minor
.
yy0
.
type
=
TK_FLOAT
;
yylhsminor
.
yy
22
6
=
tSqlExprCreateIdValue
(
pInfo
,
&
yymsp
[
-
1
].
minor
.
yy0
,
TK_FLOAT
);}
{
yymsp
[
-
1
].
minor
.
yy0
.
n
+=
yymsp
[
0
].
minor
.
yy0
.
n
;
yymsp
[
-
1
].
minor
.
yy0
.
type
=
TK_FLOAT
;
yylhsminor
.
yy
4
6
=
tSqlExprCreateIdValue
(
pInfo
,
&
yymsp
[
-
1
].
minor
.
yy0
,
TK_FLOAT
);}
yymsp
[
-
1
].
minor
.
yy
226
=
yylhsminor
.
yy22
6
;
yymsp
[
-
1
].
minor
.
yy
46
=
yylhsminor
.
yy4
6
;
break
;
break
;
case
255
:
/* expr ::= STRING */
case
255
:
/* expr ::= STRING */
{
yylhsminor
.
yy
22
6
=
tSqlExprCreateIdValue
(
pInfo
,
&
yymsp
[
0
].
minor
.
yy0
,
TK_STRING
);}
{
yylhsminor
.
yy
4
6
=
tSqlExprCreateIdValue
(
pInfo
,
&
yymsp
[
0
].
minor
.
yy0
,
TK_STRING
);}
yymsp
[
0
].
minor
.
yy
226
=
yylhsminor
.
yy22
6
;
yymsp
[
0
].
minor
.
yy
46
=
yylhsminor
.
yy4
6
;
break
;
break
;
case
256
:
/* expr ::= NOW */
case
256
:
/* expr ::= NOW */
{
yylhsminor
.
yy
22
6
=
tSqlExprCreateIdValue
(
pInfo
,
&
yymsp
[
0
].
minor
.
yy0
,
TK_NOW
);
}
{
yylhsminor
.
yy
4
6
=
tSqlExprCreateIdValue
(
pInfo
,
&
yymsp
[
0
].
minor
.
yy0
,
TK_NOW
);
}
yymsp
[
0
].
minor
.
yy
226
=
yylhsminor
.
yy22
6
;
yymsp
[
0
].
minor
.
yy
46
=
yylhsminor
.
yy4
6
;
break
;
break
;
case
257
:
/* expr ::= VARIABLE */
case
257
:
/* expr ::= VARIABLE */
{
yylhsminor
.
yy
22
6
=
tSqlExprCreateIdValue
(
pInfo
,
&
yymsp
[
0
].
minor
.
yy0
,
TK_VARIABLE
);}
{
yylhsminor
.
yy
4
6
=
tSqlExprCreateIdValue
(
pInfo
,
&
yymsp
[
0
].
minor
.
yy0
,
TK_VARIABLE
);}
yymsp
[
0
].
minor
.
yy
226
=
yylhsminor
.
yy22
6
;
yymsp
[
0
].
minor
.
yy
46
=
yylhsminor
.
yy4
6
;
break
;
break
;
case
258
:
/* expr ::= PLUS VARIABLE */
case
258
:
/* expr ::= PLUS VARIABLE */
case
259
:
/* expr ::= MINUS VARIABLE */
yytestcase
(
yyruleno
==
259
);
case
259
:
/* expr ::= MINUS VARIABLE */
yytestcase
(
yyruleno
==
259
);
{
yymsp
[
-
1
].
minor
.
yy0
.
n
+=
yymsp
[
0
].
minor
.
yy0
.
n
;
yymsp
[
-
1
].
minor
.
yy0
.
type
=
TK_VARIABLE
;
yylhsminor
.
yy
22
6
=
tSqlExprCreateIdValue
(
pInfo
,
&
yymsp
[
-
1
].
minor
.
yy0
,
TK_VARIABLE
);}
{
yymsp
[
-
1
].
minor
.
yy0
.
n
+=
yymsp
[
0
].
minor
.
yy0
.
n
;
yymsp
[
-
1
].
minor
.
yy0
.
type
=
TK_VARIABLE
;
yylhsminor
.
yy
4
6
=
tSqlExprCreateIdValue
(
pInfo
,
&
yymsp
[
-
1
].
minor
.
yy0
,
TK_VARIABLE
);}
yymsp
[
-
1
].
minor
.
yy
226
=
yylhsminor
.
yy22
6
;
yymsp
[
-
1
].
minor
.
yy
46
=
yylhsminor
.
yy4
6
;
break
;
break
;
case
260
:
/* expr ::= BOOL */
case
260
:
/* expr ::= BOOL */
{
yylhsminor
.
yy
22
6
=
tSqlExprCreateIdValue
(
pInfo
,
&
yymsp
[
0
].
minor
.
yy0
,
TK_BOOL
);}
{
yylhsminor
.
yy
4
6
=
tSqlExprCreateIdValue
(
pInfo
,
&
yymsp
[
0
].
minor
.
yy0
,
TK_BOOL
);}
yymsp
[
0
].
minor
.
yy
226
=
yylhsminor
.
yy22
6
;
yymsp
[
0
].
minor
.
yy
46
=
yylhsminor
.
yy4
6
;
break
;
break
;
case
261
:
/* expr ::= NULL */
case
261
:
/* expr ::= NULL */
{
yylhsminor
.
yy
22
6
=
tSqlExprCreateIdValue
(
pInfo
,
&
yymsp
[
0
].
minor
.
yy0
,
TK_NULL
);}
{
yylhsminor
.
yy
4
6
=
tSqlExprCreateIdValue
(
pInfo
,
&
yymsp
[
0
].
minor
.
yy0
,
TK_NULL
);}
yymsp
[
0
].
minor
.
yy
226
=
yylhsminor
.
yy22
6
;
yymsp
[
0
].
minor
.
yy
46
=
yylhsminor
.
yy4
6
;
break
;
break
;
case
262
:
/* expr ::= ID LP exprlist RP */
case
262
:
/* expr ::= ID LP exprlist RP */
{
tStrTokenAppend
(
pInfo
->
funcs
,
&
yymsp
[
-
3
].
minor
.
yy0
);
yylhsminor
.
yy
226
=
tSqlExprCreateFunction
(
yymsp
[
-
1
].
minor
.
yy231
,
&
yymsp
[
-
3
].
minor
.
yy0
,
&
yymsp
[
0
].
minor
.
yy0
,
yymsp
[
-
3
].
minor
.
yy0
.
type
);
}
{
tStrTokenAppend
(
pInfo
->
funcs
,
&
yymsp
[
-
3
].
minor
.
yy0
);
yylhsminor
.
yy
46
=
tSqlExprCreateFunction
(
yymsp
[
-
1
].
minor
.
yy373
,
&
yymsp
[
-
3
].
minor
.
yy0
,
&
yymsp
[
0
].
minor
.
yy0
,
yymsp
[
-
3
].
minor
.
yy0
.
type
);
}
yymsp
[
-
3
].
minor
.
yy
226
=
yylhsminor
.
yy22
6
;
yymsp
[
-
3
].
minor
.
yy
46
=
yylhsminor
.
yy4
6
;
break
;
break
;
case
263
:
/* expr ::= ID LP STAR RP */
case
263
:
/* expr ::= ID LP STAR RP */
{
tStrTokenAppend
(
pInfo
->
funcs
,
&
yymsp
[
-
3
].
minor
.
yy0
);
yylhsminor
.
yy
22
6
=
tSqlExprCreateFunction
(
NULL
,
&
yymsp
[
-
3
].
minor
.
yy0
,
&
yymsp
[
0
].
minor
.
yy0
,
yymsp
[
-
3
].
minor
.
yy0
.
type
);
}
{
tStrTokenAppend
(
pInfo
->
funcs
,
&
yymsp
[
-
3
].
minor
.
yy0
);
yylhsminor
.
yy
4
6
=
tSqlExprCreateFunction
(
NULL
,
&
yymsp
[
-
3
].
minor
.
yy0
,
&
yymsp
[
0
].
minor
.
yy0
,
yymsp
[
-
3
].
minor
.
yy0
.
type
);
}
yymsp
[
-
3
].
minor
.
yy
226
=
yylhsminor
.
yy22
6
;
yymsp
[
-
3
].
minor
.
yy
46
=
yylhsminor
.
yy4
6
;
break
;
break
;
case
264
:
/* expr ::= ID LP expr AS typename RP */
case
264
:
/* expr ::= ID LP expr AS typename RP */
{
tStrTokenAppend
(
pInfo
->
funcs
,
&
yymsp
[
-
5
].
minor
.
yy0
);
yylhsminor
.
yy
226
=
tSqlExprCreateFuncWithParams
(
pInfo
,
yymsp
[
-
3
].
minor
.
yy226
,
&
yymsp
[
-
1
].
minor
.
yy103
,
&
yymsp
[
-
5
].
minor
.
yy0
,
&
yymsp
[
0
].
minor
.
yy0
,
yymsp
[
-
5
].
minor
.
yy0
.
type
);
}
{
tStrTokenAppend
(
pInfo
->
funcs
,
&
yymsp
[
-
5
].
minor
.
yy0
);
yylhsminor
.
yy
46
=
tSqlExprCreateFuncWithParams
(
pInfo
,
yymsp
[
-
3
].
minor
.
yy46
,
&
yymsp
[
-
1
].
minor
.
yy119
,
&
yymsp
[
-
5
].
minor
.
yy0
,
&
yymsp
[
0
].
minor
.
yy0
,
yymsp
[
-
5
].
minor
.
yy0
.
type
);
}
yymsp
[
-
5
].
minor
.
yy
226
=
yylhsminor
.
yy22
6
;
yymsp
[
-
5
].
minor
.
yy
46
=
yylhsminor
.
yy4
6
;
break
;
break
;
case
265
:
/* expr ::= expr IS NULL */
case
265
:
/* expr ::= expr IS NULL */
{
yylhsminor
.
yy
226
=
tSqlExprCreate
(
yymsp
[
-
2
].
minor
.
yy22
6
,
NULL
,
TK_ISNULL
);}
{
yylhsminor
.
yy
46
=
tSqlExprCreate
(
yymsp
[
-
2
].
minor
.
yy4
6
,
NULL
,
TK_ISNULL
);}
yymsp
[
-
2
].
minor
.
yy
226
=
yylhsminor
.
yy22
6
;
yymsp
[
-
2
].
minor
.
yy
46
=
yylhsminor
.
yy4
6
;
break
;
break
;
case
266
:
/* expr ::= expr IS NOT NULL */
case
266
:
/* expr ::= expr IS NOT NULL */
{
yylhsminor
.
yy
226
=
tSqlExprCreate
(
yymsp
[
-
3
].
minor
.
yy22
6
,
NULL
,
TK_NOTNULL
);}
{
yylhsminor
.
yy
46
=
tSqlExprCreate
(
yymsp
[
-
3
].
minor
.
yy4
6
,
NULL
,
TK_NOTNULL
);}
yymsp
[
-
3
].
minor
.
yy
226
=
yylhsminor
.
yy22
6
;
yymsp
[
-
3
].
minor
.
yy
46
=
yylhsminor
.
yy4
6
;
break
;
break
;
case
267
:
/* expr ::= expr LT expr */
case
267
:
/* expr ::= expr LT expr */
{
yylhsminor
.
yy
226
=
tSqlExprCreate
(
yymsp
[
-
2
].
minor
.
yy226
,
yymsp
[
0
].
minor
.
yy22
6
,
TK_LT
);}
{
yylhsminor
.
yy
46
=
tSqlExprCreate
(
yymsp
[
-
2
].
minor
.
yy46
,
yymsp
[
0
].
minor
.
yy4
6
,
TK_LT
);}
yymsp
[
-
2
].
minor
.
yy
226
=
yylhsminor
.
yy22
6
;
yymsp
[
-
2
].
minor
.
yy
46
=
yylhsminor
.
yy4
6
;
break
;
break
;
case
268
:
/* expr ::= expr GT expr */
case
268
:
/* expr ::= expr GT expr */
{
yylhsminor
.
yy
226
=
tSqlExprCreate
(
yymsp
[
-
2
].
minor
.
yy226
,
yymsp
[
0
].
minor
.
yy22
6
,
TK_GT
);}
{
yylhsminor
.
yy
46
=
tSqlExprCreate
(
yymsp
[
-
2
].
minor
.
yy46
,
yymsp
[
0
].
minor
.
yy4
6
,
TK_GT
);}
yymsp
[
-
2
].
minor
.
yy
226
=
yylhsminor
.
yy22
6
;
yymsp
[
-
2
].
minor
.
yy
46
=
yylhsminor
.
yy4
6
;
break
;
break
;
case
269
:
/* expr ::= expr LE expr */
case
269
:
/* expr ::= expr LE expr */
{
yylhsminor
.
yy
226
=
tSqlExprCreate
(
yymsp
[
-
2
].
minor
.
yy226
,
yymsp
[
0
].
minor
.
yy22
6
,
TK_LE
);}
{
yylhsminor
.
yy
46
=
tSqlExprCreate
(
yymsp
[
-
2
].
minor
.
yy46
,
yymsp
[
0
].
minor
.
yy4
6
,
TK_LE
);}
yymsp
[
-
2
].
minor
.
yy
226
=
yylhsminor
.
yy22
6
;
yymsp
[
-
2
].
minor
.
yy
46
=
yylhsminor
.
yy4
6
;
break
;
break
;
case
270
:
/* expr ::= expr GE expr */
case
270
:
/* expr ::= expr GE expr */
{
yylhsminor
.
yy
226
=
tSqlExprCreate
(
yymsp
[
-
2
].
minor
.
yy226
,
yymsp
[
0
].
minor
.
yy22
6
,
TK_GE
);}
{
yylhsminor
.
yy
46
=
tSqlExprCreate
(
yymsp
[
-
2
].
minor
.
yy46
,
yymsp
[
0
].
minor
.
yy4
6
,
TK_GE
);}
yymsp
[
-
2
].
minor
.
yy
226
=
yylhsminor
.
yy22
6
;
yymsp
[
-
2
].
minor
.
yy
46
=
yylhsminor
.
yy4
6
;
break
;
break
;
case
271
:
/* expr ::= expr NE expr */
case
271
:
/* expr ::= expr NE expr */
{
yylhsminor
.
yy
226
=
tSqlExprCreate
(
yymsp
[
-
2
].
minor
.
yy226
,
yymsp
[
0
].
minor
.
yy22
6
,
TK_NE
);}
{
yylhsminor
.
yy
46
=
tSqlExprCreate
(
yymsp
[
-
2
].
minor
.
yy46
,
yymsp
[
0
].
minor
.
yy4
6
,
TK_NE
);}
yymsp
[
-
2
].
minor
.
yy
226
=
yylhsminor
.
yy22
6
;
yymsp
[
-
2
].
minor
.
yy
46
=
yylhsminor
.
yy4
6
;
break
;
break
;
case
272
:
/* expr ::= expr EQ expr */
case
272
:
/* expr ::= expr EQ expr */
{
yylhsminor
.
yy
226
=
tSqlExprCreate
(
yymsp
[
-
2
].
minor
.
yy226
,
yymsp
[
0
].
minor
.
yy22
6
,
TK_EQ
);}
{
yylhsminor
.
yy
46
=
tSqlExprCreate
(
yymsp
[
-
2
].
minor
.
yy46
,
yymsp
[
0
].
minor
.
yy4
6
,
TK_EQ
);}
yymsp
[
-
2
].
minor
.
yy
226
=
yylhsminor
.
yy22
6
;
yymsp
[
-
2
].
minor
.
yy
46
=
yylhsminor
.
yy4
6
;
break
;
break
;
case
273
:
/* expr ::= expr BETWEEN expr AND expr */
case
273
:
/* expr ::= expr BETWEEN expr AND expr */
{
tSqlExpr
*
X2
=
tSqlExprClone
(
yymsp
[
-
4
].
minor
.
yy
226
);
yylhsminor
.
yy226
=
tSqlExprCreate
(
tSqlExprCreate
(
yymsp
[
-
4
].
minor
.
yy226
,
yymsp
[
-
2
].
minor
.
yy226
,
TK_GE
),
tSqlExprCreate
(
X2
,
yymsp
[
0
].
minor
.
yy22
6
,
TK_LE
),
TK_AND
);}
{
tSqlExpr
*
X2
=
tSqlExprClone
(
yymsp
[
-
4
].
minor
.
yy
46
);
yylhsminor
.
yy46
=
tSqlExprCreate
(
tSqlExprCreate
(
yymsp
[
-
4
].
minor
.
yy46
,
yymsp
[
-
2
].
minor
.
yy46
,
TK_GE
),
tSqlExprCreate
(
X2
,
yymsp
[
0
].
minor
.
yy4
6
,
TK_LE
),
TK_AND
);}
yymsp
[
-
4
].
minor
.
yy
226
=
yylhsminor
.
yy22
6
;
yymsp
[
-
4
].
minor
.
yy
46
=
yylhsminor
.
yy4
6
;
break
;
break
;
case
274
:
/* expr ::= expr AND expr */
case
274
:
/* expr ::= expr AND expr */
{
yylhsminor
.
yy
226
=
tSqlExprCreate
(
yymsp
[
-
2
].
minor
.
yy226
,
yymsp
[
0
].
minor
.
yy22
6
,
TK_AND
);}
{
yylhsminor
.
yy
46
=
tSqlExprCreate
(
yymsp
[
-
2
].
minor
.
yy46
,
yymsp
[
0
].
minor
.
yy4
6
,
TK_AND
);}
yymsp
[
-
2
].
minor
.
yy
226
=
yylhsminor
.
yy22
6
;
yymsp
[
-
2
].
minor
.
yy
46
=
yylhsminor
.
yy4
6
;
break
;
break
;
case
275
:
/* expr ::= expr OR expr */
case
275
:
/* expr ::= expr OR expr */
{
yylhsminor
.
yy
226
=
tSqlExprCreate
(
yymsp
[
-
2
].
minor
.
yy226
,
yymsp
[
0
].
minor
.
yy22
6
,
TK_OR
);
}
{
yylhsminor
.
yy
46
=
tSqlExprCreate
(
yymsp
[
-
2
].
minor
.
yy46
,
yymsp
[
0
].
minor
.
yy4
6
,
TK_OR
);
}
yymsp
[
-
2
].
minor
.
yy
226
=
yylhsminor
.
yy22
6
;
yymsp
[
-
2
].
minor
.
yy
46
=
yylhsminor
.
yy4
6
;
break
;
break
;
case
276
:
/* expr ::= expr PLUS expr */
case
276
:
/* expr ::= expr PLUS expr */
{
yylhsminor
.
yy
226
=
tSqlExprCreate
(
yymsp
[
-
2
].
minor
.
yy226
,
yymsp
[
0
].
minor
.
yy22
6
,
TK_PLUS
);
}
{
yylhsminor
.
yy
46
=
tSqlExprCreate
(
yymsp
[
-
2
].
minor
.
yy46
,
yymsp
[
0
].
minor
.
yy4
6
,
TK_PLUS
);
}
yymsp
[
-
2
].
minor
.
yy
226
=
yylhsminor
.
yy22
6
;
yymsp
[
-
2
].
minor
.
yy
46
=
yylhsminor
.
yy4
6
;
break
;
break
;
case
277
:
/* expr ::= expr MINUS expr */
case
277
:
/* expr ::= expr MINUS expr */
{
yylhsminor
.
yy
226
=
tSqlExprCreate
(
yymsp
[
-
2
].
minor
.
yy226
,
yymsp
[
0
].
minor
.
yy22
6
,
TK_MINUS
);
}
{
yylhsminor
.
yy
46
=
tSqlExprCreate
(
yymsp
[
-
2
].
minor
.
yy46
,
yymsp
[
0
].
minor
.
yy4
6
,
TK_MINUS
);
}
yymsp
[
-
2
].
minor
.
yy
226
=
yylhsminor
.
yy22
6
;
yymsp
[
-
2
].
minor
.
yy
46
=
yylhsminor
.
yy4
6
;
break
;
break
;
case
278
:
/* expr ::= expr STAR expr */
case
278
:
/* expr ::= expr STAR expr */
{
yylhsminor
.
yy
226
=
tSqlExprCreate
(
yymsp
[
-
2
].
minor
.
yy226
,
yymsp
[
0
].
minor
.
yy22
6
,
TK_STAR
);
}
{
yylhsminor
.
yy
46
=
tSqlExprCreate
(
yymsp
[
-
2
].
minor
.
yy46
,
yymsp
[
0
].
minor
.
yy4
6
,
TK_STAR
);
}
yymsp
[
-
2
].
minor
.
yy
226
=
yylhsminor
.
yy22
6
;
yymsp
[
-
2
].
minor
.
yy
46
=
yylhsminor
.
yy4
6
;
break
;
break
;
case
279
:
/* expr ::= expr SLASH expr */
case
279
:
/* expr ::= expr SLASH expr */
{
yylhsminor
.
yy
226
=
tSqlExprCreate
(
yymsp
[
-
2
].
minor
.
yy226
,
yymsp
[
0
].
minor
.
yy22
6
,
TK_DIVIDE
);}
{
yylhsminor
.
yy
46
=
tSqlExprCreate
(
yymsp
[
-
2
].
minor
.
yy46
,
yymsp
[
0
].
minor
.
yy4
6
,
TK_DIVIDE
);}
yymsp
[
-
2
].
minor
.
yy
226
=
yylhsminor
.
yy22
6
;
yymsp
[
-
2
].
minor
.
yy
46
=
yylhsminor
.
yy4
6
;
break
;
break
;
case
280
:
/* expr ::= expr REM expr */
case
280
:
/* expr ::= expr REM expr */
{
yylhsminor
.
yy
226
=
tSqlExprCreate
(
yymsp
[
-
2
].
minor
.
yy226
,
yymsp
[
0
].
minor
.
yy22
6
,
TK_REM
);
}
{
yylhsminor
.
yy
46
=
tSqlExprCreate
(
yymsp
[
-
2
].
minor
.
yy46
,
yymsp
[
0
].
minor
.
yy4
6
,
TK_REM
);
}
yymsp
[
-
2
].
minor
.
yy
226
=
yylhsminor
.
yy22
6
;
yymsp
[
-
2
].
minor
.
yy
46
=
yylhsminor
.
yy4
6
;
break
;
break
;
case
281
:
/* expr ::= expr BITAND expr */
case
281
:
/* expr ::= expr BITAND expr */
{
yylhsminor
.
yy
226
=
tSqlExprCreate
(
yymsp
[
-
2
].
minor
.
yy226
,
yymsp
[
0
].
minor
.
yy22
6
,
TK_BITAND
);}
{
yylhsminor
.
yy
46
=
tSqlExprCreate
(
yymsp
[
-
2
].
minor
.
yy46
,
yymsp
[
0
].
minor
.
yy4
6
,
TK_BITAND
);}
yymsp
[
-
2
].
minor
.
yy
226
=
yylhsminor
.
yy22
6
;
yymsp
[
-
2
].
minor
.
yy
46
=
yylhsminor
.
yy4
6
;
break
;
break
;
case
282
:
/* expr ::= expr
LIKE
expr */
case
282
:
/* expr ::= expr
BITOR
expr */
{
yylhsminor
.
yy
226
=
tSqlExprCreate
(
yymsp
[
-
2
].
minor
.
yy226
,
yymsp
[
0
].
minor
.
yy226
,
TK_LIKE
);
}
{
yylhsminor
.
yy
46
=
tSqlExprCreate
(
yymsp
[
-
2
].
minor
.
yy46
,
yymsp
[
0
].
minor
.
yy46
,
TK_BITOR
);
}
yymsp
[
-
2
].
minor
.
yy
226
=
yylhsminor
.
yy22
6
;
yymsp
[
-
2
].
minor
.
yy
46
=
yylhsminor
.
yy4
6
;
break
;
break
;
case
283
:
/* expr ::= expr
MATCH
expr */
case
283
:
/* expr ::= expr
BITXOR
expr */
{
yylhsminor
.
yy
226
=
tSqlExprCreate
(
yymsp
[
-
2
].
minor
.
yy226
,
yymsp
[
0
].
minor
.
yy226
,
TK_MATCH
);
}
{
yylhsminor
.
yy
46
=
tSqlExprCreate
(
yymsp
[
-
2
].
minor
.
yy46
,
yymsp
[
0
].
minor
.
yy46
,
TK_BITXOR
);
}
yymsp
[
-
2
].
minor
.
yy
226
=
yylhsminor
.
yy22
6
;
yymsp
[
-
2
].
minor
.
yy
46
=
yylhsminor
.
yy4
6
;
break
;
break
;
case
284
:
/* expr ::= expr NMATCH expr */
case
284
:
/* expr ::= BITNOT expr */
{
yylhsminor
.
yy226
=
tSqlExprCreate
(
yymsp
[
-
2
].
minor
.
yy226
,
yymsp
[
0
].
minor
.
yy226
,
TK_NMATCH
);
}
{
yymsp
[
-
1
].
minor
.
yy46
=
tSqlExprCreate
(
yymsp
[
0
].
minor
.
yy46
,
NULL
,
TK_BITNOT
);}
yymsp
[
-
2
].
minor
.
yy226
=
yylhsminor
.
yy226
;
break
;
break
;
case
285
:
/* expr ::=
ID CONTAINS STRING
*/
case
285
:
/* expr ::=
expr LSHIFT expr
*/
{
tSqlExpr
*
S
=
tSqlExprCreateIdValue
(
pInfo
,
&
yymsp
[
-
2
].
minor
.
yy0
,
TK_ID
);
tSqlExpr
*
M
=
tSqlExprCreateIdValue
(
pInfo
,
&
yymsp
[
0
].
minor
.
yy0
,
TK_STRING
);
yylhsminor
.
yy226
=
tSqlExprCreate
(
S
,
M
,
TK_CONTAINS
);
}
{
yylhsminor
.
yy46
=
tSqlExprCreate
(
yymsp
[
-
2
].
minor
.
yy46
,
yymsp
[
0
].
minor
.
yy46
,
TK_LSHIFT
);
}
yymsp
[
-
2
].
minor
.
yy
226
=
yylhsminor
.
yy22
6
;
yymsp
[
-
2
].
minor
.
yy
46
=
yylhsminor
.
yy4
6
;
break
;
break
;
case
286
:
/* expr ::=
ID DOT ID CONTAINS STRING
*/
case
286
:
/* expr ::=
expr RSHIFT expr
*/
{
yymsp
[
-
4
].
minor
.
yy0
.
n
+=
(
1
+
yymsp
[
-
2
].
minor
.
yy0
.
n
);
tSqlExpr
*
S
=
tSqlExprCreateIdValue
(
pInfo
,
&
yymsp
[
-
4
].
minor
.
yy0
,
TK_ID
);
tSqlExpr
*
M
=
tSqlExprCreateIdValue
(
pInfo
,
&
yymsp
[
0
].
minor
.
yy0
,
TK_STRING
);
yylhsminor
.
yy226
=
tSqlExprCreate
(
S
,
M
,
TK_CONTAINS
);
}
{
yylhsminor
.
yy46
=
tSqlExprCreate
(
yymsp
[
-
2
].
minor
.
yy46
,
yymsp
[
0
].
minor
.
yy46
,
TK_RSHIFT
);
}
yymsp
[
-
4
].
minor
.
yy226
=
yylhsminor
.
yy22
6
;
yymsp
[
-
2
].
minor
.
yy46
=
yylhsminor
.
yy4
6
;
break
;
break
;
case
287
:
/*
arrow ::= ID ARROW STRING
*/
case
287
:
/*
expr ::= expr LIKE expr
*/
{
tSqlExpr
*
S
=
tSqlExprCreateIdValue
(
pInfo
,
&
yymsp
[
-
2
].
minor
.
yy0
,
TK_ID
);
tSqlExpr
*
M
=
tSqlExprCreateIdValue
(
pInfo
,
&
yymsp
[
0
].
minor
.
yy0
,
TK_STRING
);
yylhsminor
.
yy226
=
tSqlExprCreate
(
S
,
M
,
TK_ARROW
);
}
{
yylhsminor
.
yy46
=
tSqlExprCreate
(
yymsp
[
-
2
].
minor
.
yy46
,
yymsp
[
0
].
minor
.
yy46
,
TK_LIKE
);
}
yymsp
[
-
2
].
minor
.
yy
226
=
yylhsminor
.
yy22
6
;
yymsp
[
-
2
].
minor
.
yy
46
=
yylhsminor
.
yy4
6
;
break
;
break
;
case
288
:
/*
arrow ::= ID DOT ID ARROW STRING
*/
case
288
:
/*
expr ::= expr MATCH expr
*/
{
yy
msp
[
-
4
].
minor
.
yy0
.
n
+=
(
1
+
yymsp
[
-
2
].
minor
.
yy0
.
n
);
tSqlExpr
*
S
=
tSqlExprCreateIdValue
(
pInfo
,
&
yymsp
[
-
4
].
minor
.
yy0
,
TK_ID
);
tSqlExpr
*
M
=
tSqlExprCreateIdValue
(
pInfo
,
&
yymsp
[
0
].
minor
.
yy0
,
TK_STRING
);
yylhsminor
.
yy226
=
tSqlExprCreate
(
S
,
M
,
TK_ARROW
);
}
{
yy
lhsminor
.
yy46
=
tSqlExprCreate
(
yymsp
[
-
2
].
minor
.
yy46
,
yymsp
[
0
].
minor
.
yy46
,
TK_MATCH
);
}
yymsp
[
-
4
].
minor
.
yy226
=
yylhsminor
.
yy22
6
;
yymsp
[
-
2
].
minor
.
yy46
=
yylhsminor
.
yy4
6
;
break
;
break
;
case
289
:
/* expr ::= arrow */
case
289
:
/* expr ::= expr NMATCH expr */
case
293
:
/* expritem ::= expr */
yytestcase
(
yyruleno
==
293
);
{
yylhsminor
.
yy46
=
tSqlExprCreate
(
yymsp
[
-
2
].
minor
.
yy46
,
yymsp
[
0
].
minor
.
yy46
,
TK_NMATCH
);
}
{
yylhsminor
.
yy226
=
yymsp
[
0
].
minor
.
yy226
;}
yymsp
[
-
2
].
minor
.
yy46
=
yylhsminor
.
yy46
;
yymsp
[
0
].
minor
.
yy226
=
yylhsminor
.
yy226
;
break
;
break
;
case
290
:
/* expr ::=
expr IN LP exprlist RP
*/
case
290
:
/* expr ::=
ID CONTAINS STRING
*/
{
yylhsminor
.
yy226
=
tSqlExprCreate
(
yymsp
[
-
4
].
minor
.
yy226
,
(
tSqlExpr
*
)
yymsp
[
-
1
].
minor
.
yy231
,
TK_IN
);
}
{
tSqlExpr
*
S
=
tSqlExprCreateIdValue
(
pInfo
,
&
yymsp
[
-
2
].
minor
.
yy0
,
TK_ID
);
tSqlExpr
*
M
=
tSqlExprCreateIdValue
(
pInfo
,
&
yymsp
[
0
].
minor
.
yy0
,
TK_STRING
);
yylhsminor
.
yy46
=
tSqlExprCreate
(
S
,
M
,
TK_CONTAINS
);
}
yymsp
[
-
4
].
minor
.
yy226
=
yylhsminor
.
yy22
6
;
yymsp
[
-
2
].
minor
.
yy46
=
yylhsminor
.
yy4
6
;
break
;
break
;
case
291
:
/* expr
list ::= exprlist COMMA expritem
*/
case
291
:
/* expr
::= ID DOT ID CONTAINS STRING
*/
{
yylhsminor
.
yy231
=
tSqlExprListAppend
(
yymsp
[
-
2
].
minor
.
yy231
,
yymsp
[
0
].
minor
.
yy226
,
0
,
0
);
}
{
yymsp
[
-
4
].
minor
.
yy0
.
n
+=
(
1
+
yymsp
[
-
2
].
minor
.
yy0
.
n
);
tSqlExpr
*
S
=
tSqlExprCreateIdValue
(
pInfo
,
&
yymsp
[
-
4
].
minor
.
yy0
,
TK_ID
);
tSqlExpr
*
M
=
tSqlExprCreateIdValue
(
pInfo
,
&
yymsp
[
0
].
minor
.
yy0
,
TK_STRING
);
yylhsminor
.
yy46
=
tSqlExprCreate
(
S
,
M
,
TK_CONTAINS
);
}
yymsp
[
-
2
].
minor
.
yy231
=
yylhsminor
.
yy231
;
yymsp
[
-
4
].
minor
.
yy46
=
yylhsminor
.
yy46
;
break
;
break
;
case
292
:
/*
exprlist ::= expritem
*/
case
292
:
/*
arrow ::= ID ARROW STRING
*/
{
yylhsminor
.
yy231
=
tSqlExprListAppend
(
0
,
yymsp
[
0
].
minor
.
yy226
,
0
,
0
);
}
{
tSqlExpr
*
S
=
tSqlExprCreateIdValue
(
pInfo
,
&
yymsp
[
-
2
].
minor
.
yy0
,
TK_ID
);
tSqlExpr
*
M
=
tSqlExprCreateIdValue
(
pInfo
,
&
yymsp
[
0
].
minor
.
yy0
,
TK_STRING
);
yylhsminor
.
yy46
=
tSqlExprCreate
(
S
,
M
,
TK_ARROW
);
}
yymsp
[
0
].
minor
.
yy231
=
yylhsminor
.
yy231
;
yymsp
[
-
2
].
minor
.
yy46
=
yylhsminor
.
yy46
;
break
;
break
;
case
295
:
/* cmd ::= RESET QUERY CACHE */
case
293
:
/* arrow ::= ID DOT ID ARROW STRING */
{
yymsp
[
-
4
].
minor
.
yy0
.
n
+=
(
1
+
yymsp
[
-
2
].
minor
.
yy0
.
n
);
tSqlExpr
*
S
=
tSqlExprCreateIdValue
(
pInfo
,
&
yymsp
[
-
4
].
minor
.
yy0
,
TK_ID
);
tSqlExpr
*
M
=
tSqlExprCreateIdValue
(
pInfo
,
&
yymsp
[
0
].
minor
.
yy0
,
TK_STRING
);
yylhsminor
.
yy46
=
tSqlExprCreate
(
S
,
M
,
TK_ARROW
);
}
yymsp
[
-
4
].
minor
.
yy46
=
yylhsminor
.
yy46
;
break
;
case
294
:
/* expr ::= arrow */
case
298
:
/* expritem ::= expr */
yytestcase
(
yyruleno
==
298
);
{
yylhsminor
.
yy46
=
yymsp
[
0
].
minor
.
yy46
;}
yymsp
[
0
].
minor
.
yy46
=
yylhsminor
.
yy46
;
break
;
case
295
:
/* expr ::= expr IN LP exprlist RP */
{
yylhsminor
.
yy46
=
tSqlExprCreate
(
yymsp
[
-
4
].
minor
.
yy46
,
(
tSqlExpr
*
)
yymsp
[
-
1
].
minor
.
yy373
,
TK_IN
);
}
yymsp
[
-
4
].
minor
.
yy46
=
yylhsminor
.
yy46
;
break
;
case
296
:
/* exprlist ::= exprlist COMMA expritem */
{
yylhsminor
.
yy373
=
tSqlExprListAppend
(
yymsp
[
-
2
].
minor
.
yy373
,
yymsp
[
0
].
minor
.
yy46
,
0
,
0
);}
yymsp
[
-
2
].
minor
.
yy373
=
yylhsminor
.
yy373
;
break
;
case
297
:
/* exprlist ::= expritem */
{
yylhsminor
.
yy373
=
tSqlExprListAppend
(
0
,
yymsp
[
0
].
minor
.
yy46
,
0
,
0
);}
yymsp
[
0
].
minor
.
yy373
=
yylhsminor
.
yy373
;
break
;
case
300
:
/* cmd ::= RESET QUERY CACHE */
{
setDCLSqlElems
(
pInfo
,
TSDB_SQL_RESET_CACHE
,
0
);}
{
setDCLSqlElems
(
pInfo
,
TSDB_SQL_RESET_CACHE
,
0
);}
break
;
break
;
case
296
:
/* cmd ::= SYNCDB ids REPLICA */
case
301
:
/* 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
297
:
/* cmd ::= ALTER TABLE ids cpxName ADD COLUMN columnlist */
case
302
:
/* 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
.
yy
231
,
NULL
,
TSDB_ALTER_TABLE_ADD_COLUMN
,
-
1
);
SAlterTableInfo
*
pAlterTable
=
tSetAlterTableInfo
(
&
yymsp
[
-
4
].
minor
.
yy0
,
yymsp
[
0
].
minor
.
yy
373
,
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
298
:
/* cmd ::= ALTER TABLE ids cpxName DROP COLUMN ids */
case
303
:
/* 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
;
...
@@ -3341,21 +3384,21 @@ static void yy_reduce(
...
@@ -3341,21 +3384,21 @@ static void yy_reduce(
setSqlInfo
(
pInfo
,
pAlterTable
,
NULL
,
TSDB_SQL_ALTER_TABLE
);
setSqlInfo
(
pInfo
,
pAlterTable
,
NULL
,
TSDB_SQL_ALTER_TABLE
);
}
}
break
;
break
;
case
299
:
/* cmd ::= ALTER TABLE ids cpxName MODIFY COLUMN columnlist */
case
304
:
/* 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
.
yy
231
,
NULL
,
TSDB_ALTER_TABLE_CHANGE_COLUMN
,
-
1
);
SAlterTableInfo
*
pAlterTable
=
tSetAlterTableInfo
(
&
yymsp
[
-
4
].
minor
.
yy0
,
yymsp
[
0
].
minor
.
yy
373
,
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
30
0
:
/* cmd ::= ALTER TABLE ids cpxName ADD TAG columnlist */
case
30
5
:
/* 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
.
yy
231
,
NULL
,
TSDB_ALTER_TABLE_ADD_TAG_COLUMN
,
-
1
);
SAlterTableInfo
*
pAlterTable
=
tSetAlterTableInfo
(
&
yymsp
[
-
4
].
minor
.
yy0
,
yymsp
[
0
].
minor
.
yy
373
,
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
30
1
:
/* cmd ::= ALTER TABLE ids cpxName DROP TAG ids */
case
30
6
:
/* 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
;
...
@@ -3366,7 +3409,7 @@ static void yy_reduce(
...
@@ -3366,7 +3409,7 @@ static void yy_reduce(
setSqlInfo
(
pInfo
,
pAlterTable
,
NULL
,
TSDB_SQL_ALTER_TABLE
);
setSqlInfo
(
pInfo
,
pAlterTable
,
NULL
,
TSDB_SQL_ALTER_TABLE
);
}
}
break
;
break
;
case
30
2
:
/* cmd ::= ALTER TABLE ids cpxName CHANGE TAG ids ids */
case
30
7
:
/* 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
;
...
@@ -3380,33 +3423,33 @@ static void yy_reduce(
...
@@ -3380,33 +3423,33 @@ static void yy_reduce(
setSqlInfo
(
pInfo
,
pAlterTable
,
NULL
,
TSDB_SQL_ALTER_TABLE
);
setSqlInfo
(
pInfo
,
pAlterTable
,
NULL
,
TSDB_SQL_ALTER_TABLE
);
}
}
break
;
break
;
case
30
3
:
/* cmd ::= ALTER TABLE ids cpxName SET TAG ids EQ tagitem */
case
30
8
:
/* 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
;
toTSDBType
(
yymsp
[
-
2
].
minor
.
yy0
.
type
);
toTSDBType
(
yymsp
[
-
2
].
minor
.
yy0
.
type
);
SArray
*
A
=
tVariantListAppendToken
(
NULL
,
&
yymsp
[
-
2
].
minor
.
yy0
,
-
1
,
false
);
SArray
*
A
=
tVariantListAppendToken
(
NULL
,
&
yymsp
[
-
2
].
minor
.
yy0
,
-
1
,
false
);
A
=
tVariantListAppend
(
A
,
&
yymsp
[
0
].
minor
.
yy1
7
6
,
-
1
);
A
=
tVariantListAppend
(
A
,
&
yymsp
[
0
].
minor
.
yy1
8
6
,
-
1
);
SAlterTableInfo
*
pAlterTable
=
tSetAlterTableInfo
(
&
yymsp
[
-
6
].
minor
.
yy0
,
NULL
,
A
,
TSDB_ALTER_TABLE_UPDATE_TAG_VAL
,
-
1
);
SAlterTableInfo
*
pAlterTable
=
tSetAlterTableInfo
(
&
yymsp
[
-
6
].
minor
.
yy0
,
NULL
,
A
,
TSDB_ALTER_TABLE_UPDATE_TAG_VAL
,
-
1
);
setSqlInfo
(
pInfo
,
pAlterTable
,
NULL
,
TSDB_SQL_ALTER_TABLE
);
setSqlInfo
(
pInfo
,
pAlterTable
,
NULL
,
TSDB_SQL_ALTER_TABLE
);
}
}
break
;
break
;
case
30
4
:
/* cmd ::= ALTER TABLE ids cpxName MODIFY TAG columnlist */
case
30
9
:
/* 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
.
yy
231
,
NULL
,
TSDB_ALTER_TABLE_MODIFY_TAG_COLUMN
,
-
1
);
SAlterTableInfo
*
pAlterTable
=
tSetAlterTableInfo
(
&
yymsp
[
-
4
].
minor
.
yy0
,
yymsp
[
0
].
minor
.
yy
373
,
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
3
05
:
/* cmd ::= ALTER STABLE ids cpxName ADD COLUMN columnlist */
case
3
10
:
/* 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
.
yy
231
,
NULL
,
TSDB_ALTER_TABLE_ADD_COLUMN
,
TSDB_SUPER_TABLE
);
SAlterTableInfo
*
pAlterTable
=
tSetAlterTableInfo
(
&
yymsp
[
-
4
].
minor
.
yy0
,
yymsp
[
0
].
minor
.
yy
373
,
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
3
06
:
/* cmd ::= ALTER STABLE ids cpxName DROP COLUMN ids */
case
3
11
:
/* 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
;
...
@@ -3417,21 +3460,21 @@ static void yy_reduce(
...
@@ -3417,21 +3460,21 @@ static void yy_reduce(
setSqlInfo
(
pInfo
,
pAlterTable
,
NULL
,
TSDB_SQL_ALTER_TABLE
);
setSqlInfo
(
pInfo
,
pAlterTable
,
NULL
,
TSDB_SQL_ALTER_TABLE
);
}
}
break
;
break
;
case
3
07
:
/* cmd ::= ALTER STABLE ids cpxName MODIFY COLUMN columnlist */
case
3
12
:
/* 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
.
yy
231
,
NULL
,
TSDB_ALTER_TABLE_CHANGE_COLUMN
,
TSDB_SUPER_TABLE
);
SAlterTableInfo
*
pAlterTable
=
tSetAlterTableInfo
(
&
yymsp
[
-
4
].
minor
.
yy0
,
yymsp
[
0
].
minor
.
yy
373
,
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
3
08
:
/* cmd ::= ALTER STABLE ids cpxName ADD TAG columnlist */
case
3
13
:
/* 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
.
yy
231
,
NULL
,
TSDB_ALTER_TABLE_ADD_TAG_COLUMN
,
TSDB_SUPER_TABLE
);
SAlterTableInfo
*
pAlterTable
=
tSetAlterTableInfo
(
&
yymsp
[
-
4
].
minor
.
yy0
,
yymsp
[
0
].
minor
.
yy
373
,
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
3
09
:
/* cmd ::= ALTER STABLE ids cpxName DROP TAG ids */
case
3
14
:
/* 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
;
...
@@ -3442,7 +3485,7 @@ static void yy_reduce(
...
@@ -3442,7 +3485,7 @@ static void yy_reduce(
setSqlInfo
(
pInfo
,
pAlterTable
,
NULL
,
TSDB_SQL_ALTER_TABLE
);
setSqlInfo
(
pInfo
,
pAlterTable
,
NULL
,
TSDB_SQL_ALTER_TABLE
);
}
}
break
;
break
;
case
31
0
:
/* cmd ::= ALTER STABLE ids cpxName CHANGE TAG ids ids */
case
31
5
:
/* 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
;
...
@@ -3456,32 +3499,32 @@ static void yy_reduce(
...
@@ -3456,32 +3499,32 @@ static void yy_reduce(
setSqlInfo
(
pInfo
,
pAlterTable
,
NULL
,
TSDB_SQL_ALTER_TABLE
);
setSqlInfo
(
pInfo
,
pAlterTable
,
NULL
,
TSDB_SQL_ALTER_TABLE
);
}
}
break
;
break
;
case
31
1
:
/* cmd ::= ALTER STABLE ids cpxName SET TAG ids EQ tagitem */
case
31
6
:
/* 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
;
toTSDBType
(
yymsp
[
-
2
].
minor
.
yy0
.
type
);
toTSDBType
(
yymsp
[
-
2
].
minor
.
yy0
.
type
);
SArray
*
A
=
tVariantListAppendToken
(
NULL
,
&
yymsp
[
-
2
].
minor
.
yy0
,
-
1
,
false
);
SArray
*
A
=
tVariantListAppendToken
(
NULL
,
&
yymsp
[
-
2
].
minor
.
yy0
,
-
1
,
false
);
A
=
tVariantListAppend
(
A
,
&
yymsp
[
0
].
minor
.
yy1
7
6
,
-
1
);
A
=
tVariantListAppend
(
A
,
&
yymsp
[
0
].
minor
.
yy1
8
6
,
-
1
);
SAlterTableInfo
*
pAlterTable
=
tSetAlterTableInfo
(
&
yymsp
[
-
6
].
minor
.
yy0
,
NULL
,
A
,
TSDB_ALTER_TABLE_UPDATE_TAG_VAL
,
TSDB_SUPER_TABLE
);
SAlterTableInfo
*
pAlterTable
=
tSetAlterTableInfo
(
&
yymsp
[
-
6
].
minor
.
yy0
,
NULL
,
A
,
TSDB_ALTER_TABLE_UPDATE_TAG_VAL
,
TSDB_SUPER_TABLE
);
setSqlInfo
(
pInfo
,
pAlterTable
,
NULL
,
TSDB_SQL_ALTER_TABLE
);
setSqlInfo
(
pInfo
,
pAlterTable
,
NULL
,
TSDB_SQL_ALTER_TABLE
);
}
}
break
;
break
;
case
31
2
:
/* cmd ::= ALTER STABLE ids cpxName MODIFY TAG columnlist */
case
31
7
:
/* 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
.
yy
231
,
NULL
,
TSDB_ALTER_TABLE_MODIFY_TAG_COLUMN
,
TSDB_SUPER_TABLE
);
SAlterTableInfo
*
pAlterTable
=
tSetAlterTableInfo
(
&
yymsp
[
-
4
].
minor
.
yy0
,
yymsp
[
0
].
minor
.
yy
373
,
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
31
3
:
/* cmd ::= KILL CONNECTION INTEGER */
case
31
8
:
/* 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
31
4
:
/* cmd ::= KILL STREAM INTEGER COLON INTEGER */
case
31
9
:
/* 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
3
15
:
/* cmd ::= KILL QUERY INTEGER COLON INTEGER */
case
3
20
:
/* 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:
...
...
src/tsdb/src/tsdbRead.c
浏览文件 @
ce0b391f
...
@@ -173,6 +173,11 @@ typedef struct SRange {
...
@@ -173,6 +173,11 @@ typedef struct SRange {
int32_t
to
;
int32_t
to
;
}
SRange
;
}
SRange
;
typedef
struct
STagBlockInfo
{
SSkipListNode
*
pSkipListNode
;
SArray
*
pBlock
;
}
STagBlockInfo
;
static
STimeWindow
updateLastrowForEachGroup
(
STableGroupInfo
*
groupList
);
static
STimeWindow
updateLastrowForEachGroup
(
STableGroupInfo
*
groupList
);
static
int32_t
checkForCachedLastRow
(
STsdbQueryHandle
*
pQueryHandle
,
STableGroupInfo
*
groupList
);
static
int32_t
checkForCachedLastRow
(
STsdbQueryHandle
*
pQueryHandle
,
STableGroupInfo
*
groupList
);
static
int32_t
checkForCachedLast
(
STsdbQueryHandle
*
pQueryHandle
);
static
int32_t
checkForCachedLast
(
STsdbQueryHandle
*
pQueryHandle
);
...
@@ -4334,7 +4339,15 @@ static FORCE_INLINE int32_t tsdbGetTagDataFromId(void *param, int32_t id, void *
...
@@ -4334,7 +4339,15 @@ static FORCE_INLINE int32_t tsdbGetTagDataFromId(void *param, int32_t id, void *
return
TSDB_CODE_SUCCESS
;
return
TSDB_CODE_SUCCESS
;
}
}
static
FORCE_INLINE
int32_t
tsdbGetTagData
(
void
*
param
,
int32_t
id
,
void
**
data
)
{
STagBlockInfo
*
pInfo
=
(
STagBlockInfo
*
)
param
;
if
(
id
==
INT32_MAX
)
{
*
data
=
pInfo
->
pBlock
;
}
else
{
return
tsdbGetTagDataFromId
(
pInfo
->
pSkipListNode
,
id
,
data
);
}
return
TSDB_CODE_SUCCESS
;
}
static
void
queryIndexedColumn
(
SSkipList
*
pSkipList
,
void
*
filterInfo
,
SArray
*
res
)
{
static
void
queryIndexedColumn
(
SSkipList
*
pSkipList
,
void
*
filterInfo
,
SArray
*
res
)
{
SSkipListIterator
*
iter
=
NULL
;
SSkipListIterator
*
iter
=
NULL
;
...
@@ -4389,26 +4402,77 @@ static void queryIndexedColumn(SSkipList* pSkipList, void* filterInfo, SArray* r
...
@@ -4389,26 +4402,77 @@ static void queryIndexedColumn(SSkipList* pSkipList, void* filterInfo, SArray* r
tsdbDebug
(
"filter index column end"
);
tsdbDebug
(
"filter index column end"
);
}
}
static
void
getAllExprColId
(
tExprNode
*
pExpr
,
SArray
*
array
)
{
if
(
!
pExpr
)
{
return
;
}
if
(
pExpr
->
nodeType
==
TSQL_NODE_FUNC
)
{
for
(
int32_t
i
=
0
;
i
<
pExpr
->
_func
.
numChildren
;
++
i
)
{
getAllExprColId
(
pExpr
->
_func
.
pChildren
[
i
],
array
);
}
}
else
if
(
pExpr
->
nodeType
==
TSQL_NODE_EXPR
)
{
getAllExprColId
(
pExpr
->
_node
.
pLeft
,
array
);
getAllExprColId
(
pExpr
->
_node
.
pRight
,
array
);
}
else
if
(
pExpr
->
nodeType
==
TSQL_NODE_COL
)
{
taosArrayPush
(
array
,
&
pExpr
->
pSchema
->
colId
);
}
}
static
void
getAllFilterExprColId
(
SFilterFields
*
pSf
,
SArray
*
array
)
{
for
(
uint32_t
i
=
0
;
i
<
pSf
->
num
;
++
i
)
{
SFilterField
*
fi
=
&
(
pSf
->
fields
[
i
]);
if
(
FILTER_GET_TYPE
(
fi
->
flag
)
==
FLD_TYPE_EXPR
)
{
getAllExprColId
(
fi
->
desc
,
array
);
}
}
taosArraySort
(
array
,
getComparFunc
(
TSDB_DATA_TYPE_SMALLINT
,
0
));
taosArrayRemoveDuplicate
(
array
,
getComparFunc
(
TSDB_DATA_TYPE_SMALLINT
,
0
),
NULL
);
}
static
void
queryIndexlessColumn
(
SSkipList
*
pSkipList
,
void
*
filterInfo
,
SArray
*
res
)
{
static
void
queryIndexlessColumn
(
SSkipList
*
pSkipList
,
void
*
filterInfo
,
SArray
*
res
)
{
SSkipListIterator
*
iter
=
tSkipListCreateIter
(
pSkipList
);
SSkipListIterator
*
iter
=
tSkipListCreateIter
(
pSkipList
);
int8_t
*
addToResult
=
NULL
;
int8_t
*
addToResult
=
NULL
;
SFilterInfo
*
sfInfo
=
(
SFilterInfo
*
)
filterInfo
;
SArray
*
array
=
NULL
;
SArray
*
pDataBlock
=
NULL
;
if
(
sfInfo
->
fields
[
FLD_TYPE_EXPR
].
num
>
0
)
{
array
=
taosArrayInit
(
10
,
sizeof
(
int16_t
));
getAllFilterExprColId
(
&
(
sfInfo
->
fields
[
FLD_TYPE_EXPR
]),
array
);
}
while
(
tSkipListIterNext
(
iter
))
{
while
(
tSkipListIterNext
(
iter
))
{
SSkipListNode
*
pNode
=
tSkipListIterGet
(
iter
);
SSkipListNode
*
pNode
=
tSkipListIterGet
(
iter
);
filterSetColFieldData
(
filterInfo
,
pNode
,
tsdbGetTagDataFromId
);
char
*
pData
=
SL_GET_NODE_DATA
(
pNode
);
if
(
sfInfo
->
fields
[
FLD_TYPE_EXPR
].
num
>
0
)
{
pDataBlock
=
taosArrayInit
(
10
,
sizeof
(
SColumnInfoData
));
size_t
num
=
taosArrayGetSize
(
array
);
for
(
int32_t
i
=
0
;
i
<
num
;
++
i
)
{
int16_t
*
pColId
=
taosArrayGet
(
array
,
i
);
void
*
data
=
NULL
;
tsdbGetTagDataFromId
(
pNode
,
*
pColId
,
&
data
);
SColumnInfoData
colData
=
{{
0
}};
colData
.
pData
=
data
;
colData
.
info
.
colId
=
*
pColId
;
taosArrayPush
(
pDataBlock
,
&
colData
);
}
}
STagBlockInfo
stInfo
=
{.
pSkipListNode
=
pNode
,
.
pBlock
=
pDataBlock
};
filterSetColFieldData
(
filterInfo
,
&
stInfo
,
tsdbGetTagData
);
bool
all
=
filterExecute
(
filterInfo
,
1
,
&
addToResult
,
NULL
,
0
);
char
*
pData
=
SL_GET_NODE_DATA
(
pNode
);
int16_t
numOfCols
=
array
?
(
int16_t
)
taosArrayGetSize
(
array
)
:
0
;
bool
all
=
filterExecute
(
filterInfo
,
1
,
&
addToResult
,
NULL
,
numOfCols
);
if
(
all
||
(
addToResult
&&
*
addToResult
))
{
if
(
all
||
(
addToResult
&&
*
addToResult
))
{
STableKeyInfo
info
=
{.
pTable
=
(
void
*
)
pData
,
.
lastKey
=
TSKEY_INITIAL_VAL
};
STableKeyInfo
info
=
{.
pTable
=
(
void
*
)
pData
,
.
lastKey
=
TSKEY_INITIAL_VAL
};
taosArrayPush
(
res
,
&
info
);
taosArrayPush
(
res
,
&
info
);
}
}
taosArrayDestroy
(
&
pDataBlock
);
}
}
taosArrayDestroy
(
&
array
);
tfree
(
addToResult
);
tfree
(
addToResult
);
tSkipListDestroyIter
(
iter
);
tSkipListDestroyIter
(
iter
);
...
...
src/util/src/ttokenizer.c
浏览文件 @
ce0b391f
...
@@ -413,6 +413,10 @@ uint32_t tGetToken(char* z, uint32_t* tokenId) {
...
@@ -413,6 +413,10 @@ uint32_t tGetToken(char* z, uint32_t* tokenId) {
*
tokenId
=
TK_BITNOT
;
*
tokenId
=
TK_BITNOT
;
return
1
;
return
1
;
}
}
case
'^'
:
{
*
tokenId
=
TK_BITXOR
;
return
1
;
}
case
'?'
:
{
case
'?'
:
{
*
tokenId
=
TK_QUESTION
;
*
tokenId
=
TK_QUESTION
;
return
1
;
return
1
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录