Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
e6058244
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看板
未验证
提交
e6058244
编写于
3月 02, 2022
作者:
S
shenglian-zhou
提交者:
GitHub
3月 02, 2022
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #10352 from taosdata/feature/TD-11220
[TD-11220]<feature>(query): time related functions
上级
52e2009c
e376d43e
变更
15
隐藏空白更改
内联
并排
Showing
15 changed file
with
2762 addition
and
1435 deletion
+2762
-1435
src/client/src/tscParseInsert.c
src/client/src/tscParseInsert.c
+5
-1
src/client/src/tscSQLParser.c
src/client/src/tscSQLParser.c
+21
-11
src/common/inc/texpr.h
src/common/inc/texpr.h
+33
-24
src/common/src/tarithoperator.c
src/common/src/tarithoperator.c
+119
-48
src/common/src/texpr.c
src/common/src/texpr.c
+833
-6
src/common/src/tvariant.c
src/common/src/tvariant.c
+4
-2
src/inc/taosdef.h
src/inc/taosdef.h
+19
-12
src/inc/ttokendef.h
src/inc/ttokendef.h
+56
-55
src/inc/ttype.h
src/inc/ttype.h
+5
-1
src/os/inc/osTime.h
src/os/inc/osTime.h
+9
-0
src/os/src/detail/osTime.c
src/os/src/detail/osTime.c
+35
-13
src/query/inc/sql.y
src/query/inc/sql.y
+2
-1
src/query/src/qSqlParser.c
src/query/src/qSqlParser.c
+29
-5
src/query/src/sql.c
src/query/src/sql.c
+1584
-1256
src/util/src/ttokenizer.c
src/util/src/ttokenizer.c
+8
-0
未找到文件。
src/client/src/tscParseInsert.c
浏览文件 @
e6058244
...
...
@@ -70,6 +70,10 @@ int tsParseTime(SStrToken *pToken, int64_t *time, char **next, char *error, int1
if
(
pToken
->
type
==
TK_NOW
)
{
useconds
=
taosGetTimestamp
(
timePrec
);
}
else
if
(
pToken
->
type
==
TK_TODAY
)
{
int64_t
factor
=
(
timePrec
==
TSDB_TIME_PRECISION_MILLI
)
?
1000
:
(
timePrec
==
TSDB_TIME_PRECISION_MICRO
)
?
1000000
:
1000000000
;
useconds
=
taosGetTimestampToday
()
*
factor
;
}
else
if
(
strncmp
(
pToken
->
z
,
"0"
,
1
)
==
0
&&
pToken
->
n
==
1
)
{
// do nothing
}
else
if
(
pToken
->
type
==
TK_INTEGER
)
{
...
...
@@ -473,7 +477,7 @@ int tsParseOneRow(char **str, STableDataBlocks *pDataBlocks, int16_t timePrec, i
}
int16_t
type
=
sToken
.
type
;
if
((
type
!=
TK_NOW
&&
type
!=
TK_INTEGER
&&
type
!=
TK_STRING
&&
type
!=
TK_FLOAT
&&
type
!=
TK_BOOL
&&
if
((
type
!=
TK_NOW
&&
type
!=
TK_
TODAY
&&
type
!=
TK_
INTEGER
&&
type
!=
TK_STRING
&&
type
!=
TK_FLOAT
&&
type
!=
TK_BOOL
&&
type
!=
TK_NULL
&&
type
!=
TK_HEX
&&
type
!=
TK_OCT
&&
type
!=
TK_BIN
)
||
(
sToken
.
n
==
0
)
||
(
type
==
TK_RP
))
{
return
tscSQLSyntaxErrMsg
(
pInsertParam
->
msg
,
"invalid data or symbol"
,
sToken
.
z
);
...
...
src/client/src/tscSQLParser.c
浏览文件 @
e6058244
...
...
@@ -1861,7 +1861,7 @@ static int32_t handleScalarTypeExpr(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, int32
if
(
tscGetErrorMsgLength
(
pCmd
)
>
0
)
{
return
ret
;
}
return
invalidOperationMsg
(
tscGetErrorMsgPayload
(
pCmd
),
msg2
);
}
...
...
@@ -1872,7 +1872,7 @@ static int32_t handleScalarTypeExpr(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, int32
if
(
TSDB_COL_IS_TAG
(
pIndex
->
flag
))
{
tExprTreeDestroy
(
pNode
,
NULL
);
taosArrayDestroy
(
&
colList
);
return
invalidOperationMsg
(
tscGetErrorMsgPayload
(
pCmd
),
msg3
);
}
}
...
...
@@ -1884,7 +1884,7 @@ static int32_t handleScalarTypeExpr(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, int32
if
(
tscGetErrorMsgLength
(
pCmd
)
>
0
)
{
return
ret
;
}
return
invalidOperationMsg
(
tscGetErrorMsgPayload
(
pCmd
),
msg2
);
}
...
...
@@ -5075,8 +5075,8 @@ static int32_t validateSQLExprItem(SSqlCmd* pCmd, tSqlExpr* pExpr,
return
invalidOperationMsg
(
tscGetErrorMsgPayload
(
pCmd
),
msg3
);
}
//no
w allowing now +/- value
in select expr
if
(
pExpr
->
tokenId
==
TK_TIMESTAMP
)
{
//no
t allowing now/today keyword arithmetic operation
in select expr
if
(
pExpr
->
exprToken
.
type
==
TK_NOW
||
pExpr
->
exprToken
.
type
==
TK_TODAY
)
{
return
invalidOperationMsg
(
tscGetErrorMsgPayload
(
pCmd
),
msg3
);
}
...
...
@@ -5455,6 +5455,7 @@ static int32_t handleExprInQueryCond(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, tSql
}
else
{
colName
=
&
(
pLeft
->
columnName
);
}
int32_t
ret
=
TSDB_CODE_SUCCESS
;
SColumnIndex
index
=
COLUMN_INDEX_INITIALIZER
;
...
...
@@ -5695,7 +5696,7 @@ int32_t getQueryCondExpr(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, tSqlExpr** pExpr
if
(
columnLeft
&&
columnRight
)
{
setNormalExprToCond
(
&
columnLeft
,
columnRight
,
(
*
pExpr
)
->
tokenId
);
*
columnExpr
=
columnLeft
;
}
else
{
*
columnExpr
=
columnLeft
?
columnLeft
:
columnRight
;
...
...
@@ -5703,7 +5704,7 @@ int32_t getQueryCondExpr(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, tSqlExpr** pExpr
if
(
tsLeft
&&
tsRight
)
{
setNormalExprToCond
(
&
tsLeft
,
tsRight
,
(
*
pExpr
)
->
tokenId
);
*
tsExpr
=
tsLeft
;
}
else
{
*
tsExpr
=
tsLeft
?
tsLeft
:
tsRight
;
...
...
@@ -5713,7 +5714,7 @@ int32_t getQueryCondExpr(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, tSqlExpr** pExpr
*
type
=
leftType
|
rightType
;
}
*
tbIdx
=
(
leftTbIdx
==
rightTbIdx
)
?
leftTbIdx
:
-
1
;
return
TSDB_CODE_SUCCESS
;
}
...
...
@@ -5735,9 +5736,9 @@ int32_t getQueryCondExpr(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, tSqlExpr** pExpr
}
return
TSDB_CODE_SUCCESS
;
err_ret:
tSqlExprDestroy
(
columnLeft
);
tSqlExprDestroy
(
columnRight
);
tSqlExprDestroy
(
tsLeft
);
...
...
@@ -5750,7 +5751,7 @@ static void doExtractExprForSTable(SSqlCmd* pCmd, tSqlExpr** pExpr, SQueryInfo*
*
pOut
=
NULL
;
return
;
}
if
(
tSqlExprIsParentOfLeaf
(
*
pExpr
))
{
tSqlExpr
*
pLeft
=
(
*
pExpr
)
->
pLeft
;
...
...
@@ -10436,6 +10437,10 @@ int32_t exprTreeFromSqlExpr(SSqlCmd* pCmd, tExprNode **pExpr, const tSqlExpr* pS
(
*
pExpr
)
->
pVal
=
calloc
(
1
,
sizeof
(
tVariant
));
tVariantAssign
((
*
pExpr
)
->
pVal
,
&
pSqlExpr
->
value
);
STableMetaInfo
*
pTableMetaInfo
=
tscGetMetaInfo
(
pQueryInfo
,
pQueryInfo
->
curTableIdx
);
STableComInfo
tinfo
=
tscGetTableInfo
(
pTableMetaInfo
->
pTableMeta
);
(
*
pExpr
)
->
precision
=
tinfo
.
precision
;
STableMeta
*
pTableMeta
=
tscGetMetaInfo
(
pQueryInfo
,
pQueryInfo
->
curTableIdx
)
->
pTableMeta
;
if
(
pCols
!=
NULL
)
{
size_t
colSize
=
taosArrayGetSize
(
pCols
);
...
...
@@ -10598,6 +10603,11 @@ int32_t exprTreeFromSqlExpr(SSqlCmd* pCmd, tExprNode **pExpr, const tSqlExpr* pS
*
pExpr
=
calloc
(
1
,
sizeof
(
tExprNode
));
(
*
pExpr
)
->
nodeType
=
TSQL_NODE_FUNC
;
(
*
pExpr
)
->
_func
.
functionId
=
pSqlExpr
->
functionId
;
STableMetaInfo
*
pTableMetaInfo
=
tscGetMetaInfo
(
pQueryInfo
,
pQueryInfo
->
curTableIdx
);
STableComInfo
tinfo
=
tscGetTableInfo
(
pTableMetaInfo
->
pTableMeta
);
(
*
pExpr
)
->
precision
=
tinfo
.
precision
;
SArray
*
paramList
=
pSqlExpr
->
Expr
.
paramList
;
size_t
paramSize
=
paramList
?
taosArrayGetSize
(
paramList
)
:
0
;
if
(
paramSize
>
0
)
{
...
...
src/common/inc/texpr.h
浏览文件 @
e6058244
...
...
@@ -47,30 +47,38 @@ struct SSchema;
///////////////////////////////////////////
// SCALAR FUNCTIONS
#define TSDB_FUNC_SCALAR_POW (TSDB_FUNC_FLAG_SCALAR | 0x0000)
#define TSDB_FUNC_SCALAR_LOG (TSDB_FUNC_FLAG_SCALAR | 0x0001)
#define TSDB_FUNC_SCALAR_ABS (TSDB_FUNC_FLAG_SCALAR | 0x0002)
#define TSDB_FUNC_SCALAR_ACOS (TSDB_FUNC_FLAG_SCALAR | 0x0003)
#define TSDB_FUNC_SCALAR_ASIN (TSDB_FUNC_FLAG_SCALAR | 0x0004)
#define TSDB_FUNC_SCALAR_ATAN (TSDB_FUNC_FLAG_SCALAR | 0x0005)
#define TSDB_FUNC_SCALAR_COS (TSDB_FUNC_FLAG_SCALAR | 0x0006)
#define TSDB_FUNC_SCALAR_SIN (TSDB_FUNC_FLAG_SCALAR | 0x0007)
#define TSDB_FUNC_SCALAR_TAN (TSDB_FUNC_FLAG_SCALAR | 0x0008)
#define TSDB_FUNC_SCALAR_SQRT (TSDB_FUNC_FLAG_SCALAR | 0x0009)
#define TSDB_FUNC_SCALAR_CEIL (TSDB_FUNC_FLAG_SCALAR | 0x000A)
#define TSDB_FUNC_SCALAR_FLOOR (TSDB_FUNC_FLAG_SCALAR | 0x000B)
#define TSDB_FUNC_SCALAR_ROUND (TSDB_FUNC_FLAG_SCALAR | 0x000C)
#define TSDB_FUNC_SCALAR_CONCAT (TSDB_FUNC_FLAG_SCALAR | 0x000D)
#define TSDB_FUNC_SCALAR_LENGTH (TSDB_FUNC_FLAG_SCALAR | 0x000E)
#define TSDB_FUNC_SCALAR_CONCAT_WS (TSDB_FUNC_FLAG_SCALAR | 0x000F)
#define TSDB_FUNC_SCALAR_CHAR_LENGTH (TSDB_FUNC_FLAG_SCALAR | 0x0010)
#define TSDB_FUNC_SCALAR_CAST (TSDB_FUNC_FLAG_SCALAR | 0x0011)
#define TSDB_FUNC_SCALAR_LOWER (TSDB_FUNC_FLAG_SCALAR | 0x0012)
#define TSDB_FUNC_SCALAR_UPPER (TSDB_FUNC_FLAG_SCALAR | 0x0013)
#define TSDB_FUNC_SCALAR_LTRIM (TSDB_FUNC_FLAG_SCALAR | 0x0014)
#define TSDB_FUNC_SCALAR_RTRIM (TSDB_FUNC_FLAG_SCALAR | 0x0015)
#define TSDB_FUNC_SCALAR_SUBSTR (TSDB_FUNC_FLAG_SCALAR | 0x0016)
#define TSDB_FUNC_SCALAR_NUM_FUNCTIONS 23
#define TSDB_FUNC_SCALAR_POW (TSDB_FUNC_FLAG_SCALAR | 0x0000)
#define TSDB_FUNC_SCALAR_LOG (TSDB_FUNC_FLAG_SCALAR | 0x0001)
#define TSDB_FUNC_SCALAR_ABS (TSDB_FUNC_FLAG_SCALAR | 0x0002)
#define TSDB_FUNC_SCALAR_ACOS (TSDB_FUNC_FLAG_SCALAR | 0x0003)
#define TSDB_FUNC_SCALAR_ASIN (TSDB_FUNC_FLAG_SCALAR | 0x0004)
#define TSDB_FUNC_SCALAR_ATAN (TSDB_FUNC_FLAG_SCALAR | 0x0005)
#define TSDB_FUNC_SCALAR_COS (TSDB_FUNC_FLAG_SCALAR | 0x0006)
#define TSDB_FUNC_SCALAR_SIN (TSDB_FUNC_FLAG_SCALAR | 0x0007)
#define TSDB_FUNC_SCALAR_TAN (TSDB_FUNC_FLAG_SCALAR | 0x0008)
#define TSDB_FUNC_SCALAR_SQRT (TSDB_FUNC_FLAG_SCALAR | 0x0009)
#define TSDB_FUNC_SCALAR_CEIL (TSDB_FUNC_FLAG_SCALAR | 0x000A)
#define TSDB_FUNC_SCALAR_FLOOR (TSDB_FUNC_FLAG_SCALAR | 0x000B)
#define TSDB_FUNC_SCALAR_ROUND (TSDB_FUNC_FLAG_SCALAR | 0x000C)
#define TSDB_FUNC_SCALAR_CONCAT (TSDB_FUNC_FLAG_SCALAR | 0x000D)
#define TSDB_FUNC_SCALAR_LENGTH (TSDB_FUNC_FLAG_SCALAR | 0x000E)
#define TSDB_FUNC_SCALAR_CONCAT_WS (TSDB_FUNC_FLAG_SCALAR | 0x000F)
#define TSDB_FUNC_SCALAR_CHAR_LENGTH (TSDB_FUNC_FLAG_SCALAR | 0x0010)
#define TSDB_FUNC_SCALAR_CAST (TSDB_FUNC_FLAG_SCALAR | 0x0011)
#define TSDB_FUNC_SCALAR_LOWER (TSDB_FUNC_FLAG_SCALAR | 0x0012)
#define TSDB_FUNC_SCALAR_UPPER (TSDB_FUNC_FLAG_SCALAR | 0x0013)
#define TSDB_FUNC_SCALAR_LTRIM (TSDB_FUNC_FLAG_SCALAR | 0x0014)
#define TSDB_FUNC_SCALAR_RTRIM (TSDB_FUNC_FLAG_SCALAR | 0x0015)
#define TSDB_FUNC_SCALAR_SUBSTR (TSDB_FUNC_FLAG_SCALAR | 0x0016)
#define TSDB_FUNC_SCALAR_NOW (TSDB_FUNC_FLAG_SCALAR | 0x0017)
#define TSDB_FUNC_SCALAR_TODAY (TSDB_FUNC_FLAG_SCALAR | 0x0018)
#define TSDB_FUNC_SCALAR_TIMEZONE (TSDB_FUNC_FLAG_SCALAR | 0x0019)
#define TSDB_FUNC_SCALAR_TO_ISO8601 (TSDB_FUNC_FLAG_SCALAR | 0x001A)
#define TSDB_FUNC_SCALAR_TO_UNIXTIMESTAMP (TSDB_FUNC_FLAG_SCALAR | 0x001B)
#define TSDB_FUNC_SCALAR_TIMETRUNCATE (TSDB_FUNC_FLAG_SCALAR | 0x001C)
#define TSDB_FUNC_SCALAR_TIMEDIFF (TSDB_FUNC_FLAG_SCALAR | 0x001D)
#define TSDB_FUNC_SCALAR_NUM_FUNCTIONS 30
#define TSDB_FUNC_SCALAR_NAME_MAX_LEN 16
...
...
@@ -143,6 +151,7 @@ typedef struct tExprNode {
};
int16_t
resultType
;
int16_t
resultBytes
;
int32_t
precision
;
}
tExprNode
;
typedef
struct
SExprTraverseSupp
{
...
...
src/common/src/tarithoperator.c
浏览文件 @
e6058244
...
...
@@ -92,6 +92,9 @@ double getVectorDoubleValue_FLOAT(void *src, int32_t index) {
double
getVectorDoubleValue_DOUBLE
(
void
*
src
,
int32_t
index
)
{
return
(
double
)
*
((
double
*
)
src
+
index
);
}
int64_t
getVectorTimestampValue
(
void
*
src
,
int32_t
index
)
{
return
(
int64_t
)
*
((
int64_t
*
)
src
+
index
);
}
_arithmetic_getVectorDoubleValue_fn_t
getVectorDoubleValueFn
(
int32_t
srcType
)
{
_arithmetic_getVectorDoubleValue_fn_t
p
=
NULL
;
if
(
srcType
==
TSDB_DATA_TYPE_TINYINT
)
{
...
...
@@ -176,6 +179,8 @@ _arithmetic_getVectorValueAddr_fn_t getVectorValueAddrFn(int32_t srcType) {
p
=
getVectorValueAddr_FLOAT
;
}
else
if
(
srcType
==
TSDB_DATA_TYPE_DOUBLE
)
{
p
=
getVectorValueAddr_DOUBLE
;
}
else
if
(
srcType
==
TSDB_DATA_TYPE_TIMESTAMP
)
{
p
=
getVectorValueAddr_BIGINT
;
}
else
{
assert
(
0
);
}
...
...
@@ -185,35 +190,68 @@ _arithmetic_getVectorValueAddr_fn_t getVectorValueAddrFn(int32_t srcType) {
void
vectorAdd
(
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_getVectorDoubleValue_fn_t
getVectorDoubleValueFnLeft
=
getVectorDoubleValueFn
(
_left_type
);
_arithmetic_getVectorDoubleValue_fn_t
getVectorDoubleValueFnRight
=
getVectorDoubleValueFn
(
_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_DOUBLE_NULL
(
output
);
continue
;
if
(
!
IS_TIMESTAMP_TYPE
(
_left_type
)
&&
!
IS_TIMESTAMP_TYPE
(
_right_type
))
{
double
*
output
=
(
double
*
)
out
;
_arithmetic_getVectorValueAddr_fn_t
getVectorValueAddrFnLeft
=
getVectorValueAddrFn
(
_left_type
);
_arithmetic_getVectorValueAddr_fn_t
getVectorValueAddrFnRight
=
getVectorValueAddrFn
(
_right_type
);
_arithmetic_getVectorDoubleValue_fn_t
getVectorDoubleValueFnLeft
=
getVectorDoubleValueFn
(
_left_type
);
_arithmetic_getVectorDoubleValue_fn_t
getVectorDoubleValueFnRight
=
getVectorDoubleValueFn
(
_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_DOUBLE_NULL
(
output
);
continue
;
}
SET_DOUBLE_VAL
(
output
,
getVectorDoubleValueFnLeft
(
left
,
i
)
+
getVectorDoubleValueFnRight
(
right
,
i
));
}
SET_DOUBLE_VAL
(
output
,
getVectorDoubleValueFnLeft
(
left
,
i
)
+
getVectorDoubleValueFnRight
(
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_DOUBLE_NULL
(
output
);
continue
;
}
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_DOUBLE_NULL
(
output
);
continue
;
}
SET_DOUBLE_VAL
(
output
,
getVectorDoubleValueFnLeft
(
left
,
0
)
+
getVectorDoubleValueFnRight
(
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_DOUBLE_NULL
(
output
);
continue
;
}
SET_DOUBLE_VAL
(
output
,
getVectorDoubleValueFnLeft
(
left
,
i
)
+
getVectorDoubleValueFnRight
(
right
,
0
));
}
SET_DOUBLE_VAL
(
output
,
getVectorDoubleValueFnLeft
(
left
,
0
)
+
getVectorDoubleValueFnRight
(
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_DOUBLE_NULL
(
output
);
continue
;
}
else
{
int64_t
*
output
=
(
int64_t
*
)
out
;
_arithmetic_getVectorValueAddr_fn_t
getVectorValueAddrFnLeft
=
getVectorValueAddrFn
(
_left_type
);
_arithmetic_getVectorValueAddr_fn_t
getVectorValueAddrFnRight
=
getVectorValueAddrFn
(
_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_TIMESTAMP_NULL
(
output
);
continue
;
}
SET_TIMESTAMP_VAL
(
output
,
getVectorTimestampValue
(
left
,
i
)
+
getVectorTimestampValue
(
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_TIMESTAMP_NULL
(
output
);
continue
;
}
SET_TIMESTAMP_VAL
(
output
,
getVectorTimestampValue
(
left
,
0
)
+
getVectorTimestampValue
(
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_TIMESTAMP_NULL
(
output
);
continue
;
}
SET_TIMESTAMP_VAL
(
output
,
getVectorTimestampValue
(
left
,
i
)
+
getVectorTimestampValue
(
right
,
0
));
}
SET_DOUBLE_VAL
(
output
,
getVectorDoubleValueFnLeft
(
left
,
i
)
+
getVectorDoubleValueFnRight
(
right
,
0
));
}
}
}
...
...
@@ -221,35 +259,68 @@ void vectorAdd(void *left, int32_t len1, int32_t _left_type, void *right, int32_
void
vectorSub
(
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_getVectorDoubleValue_fn_t
getVectorDoubleValueFnLeft
=
getVectorDoubleValueFn
(
_left_type
);
_arithmetic_getVectorDoubleValue_fn_t
getVectorDoubleValueFnRight
=
getVectorDoubleValueFn
(
_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_DOUBLE_NULL
(
output
);
continue
;
if
(
!
IS_TIMESTAMP_TYPE
(
_left_type
)
&&
!
IS_TIMESTAMP_TYPE
(
_right_type
))
{
double
*
output
=
(
double
*
)
out
;
_arithmetic_getVectorValueAddr_fn_t
getVectorValueAddrFnLeft
=
getVectorValueAddrFn
(
_left_type
);
_arithmetic_getVectorValueAddr_fn_t
getVectorValueAddrFnRight
=
getVectorValueAddrFn
(
_right_type
);
_arithmetic_getVectorDoubleValue_fn_t
getVectorDoubleValueFnLeft
=
getVectorDoubleValueFn
(
_left_type
);
_arithmetic_getVectorDoubleValue_fn_t
getVectorDoubleValueFnRight
=
getVectorDoubleValueFn
(
_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_DOUBLE_NULL
(
output
);
continue
;
}
SET_DOUBLE_VAL
(
output
,
getVectorDoubleValueFnLeft
(
left
,
i
)
-
getVectorDoubleValueFnRight
(
right
,
i
));
}
SET_DOUBLE_VAL
(
output
,
getVectorDoubleValueFnLeft
(
left
,
i
)
-
getVectorDoubleValueFnRight
(
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_DOUBLE_NULL
(
output
);
continue
;
}
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_DOUBLE_NULL
(
output
);
continue
;
}
SET_DOUBLE_VAL
(
output
,
getVectorDoubleValueFnLeft
(
left
,
0
)
-
getVectorDoubleValueFnRight
(
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_DOUBLE_NULL
(
output
);
continue
;
}
SET_DOUBLE_VAL
(
output
,
getVectorDoubleValueFnLeft
(
left
,
i
)
-
getVectorDoubleValueFnRight
(
right
,
0
));
}
SET_DOUBLE_VAL
(
output
,
getVectorDoubleValueFnLeft
(
left
,
0
)
-
getVectorDoubleValueFnRight
(
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_DOUBLE_NULL
(
output
);
continue
;
}
else
{
int64_t
*
output
=
(
int64_t
*
)
out
;
_arithmetic_getVectorValueAddr_fn_t
getVectorValueAddrFnLeft
=
getVectorValueAddrFn
(
_left_type
);
_arithmetic_getVectorValueAddr_fn_t
getVectorValueAddrFnRight
=
getVectorValueAddrFn
(
_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_TIMESTAMP_NULL
(
output
);
continue
;
}
SET_TIMESTAMP_VAL
(
output
,
getVectorTimestampValue
(
left
,
i
)
-
getVectorTimestampValue
(
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_TIMESTAMP_NULL
(
output
);
continue
;
}
SET_TIMESTAMP_VAL
(
output
,
getVectorTimestampValue
(
left
,
0
)
-
getVectorTimestampValue
(
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_TIMESTAMP_NULL
(
output
);
continue
;
}
SET_TIMESTAMP_VAL
(
output
,
getVectorTimestampValue
(
left
,
i
)
-
getVectorTimestampValue
(
right
,
0
));
}
SET_DOUBLE_VAL
(
output
,
getVectorDoubleValueFnLeft
(
left
,
i
)
-
getVectorDoubleValueFnRight
(
right
,
0
));
}
}
}
...
...
src/common/src/texpr.c
浏览文件 @
e6058244
...
...
@@ -23,6 +23,7 @@
#include "tarray.h"
#include "tbuffer.h"
#include "tcompare.h"
#include "tglobal.h"
#include "tsdb.h"
#include "tskiplist.h"
#include "texpr.h"
...
...
@@ -36,6 +37,7 @@ static int32_t exprValidateStringLengthNode(tExprNode *pExpr);
static
int32_t
exprValidateStringLowerUpperTrimNode
(
char
*
msgBuf
,
tExprNode
*
pExpr
);
static
int32_t
exprValidateStringSubstrNode
(
char
*
msgBuf
,
tExprNode
*
pExpr
);
static
int32_t
exprValidateCastNode
(
char
*
msgbuf
,
tExprNode
*
pExpr
);
static
int32_t
exprValidateTimeNode
(
char
*
msgbuf
,
tExprNode
*
pExpr
);
static
int32_t
exprInvalidOperationMsg
(
char
*
msgbuf
,
const
char
*
msg
)
{
const
char
*
msgFormat
=
"invalid operation: %s"
;
...
...
@@ -49,7 +51,7 @@ static int32_t exprInvalidOperationMsg(char *msgbuf, const char *msg) {
int32_t
exprTreeValidateFunctionNode
(
char
*
msgbuf
,
tExprNode
*
pExpr
)
{
int32_t
code
=
TSDB_CODE_SUCCESS
;
//TODO: check child
s
for every function
//TODO: check child
ren
for every function
switch
(
pExpr
->
_func
.
functionId
)
{
case
TSDB_FUNC_SCALAR_POW
:
case
TSDB_FUNC_SCALAR_LOG
:
...
...
@@ -88,6 +90,15 @@ int32_t exprTreeValidateFunctionNode(char* msgbuf, tExprNode *pExpr) {
case
TSDB_FUNC_SCALAR_SUBSTR
:
{
return
exprValidateStringSubstrNode
(
msgbuf
,
pExpr
);
}
case
TSDB_FUNC_SCALAR_NOW
:
case
TSDB_FUNC_SCALAR_TODAY
:
case
TSDB_FUNC_SCALAR_TIMEZONE
:
case
TSDB_FUNC_SCALAR_TO_ISO8601
:
case
TSDB_FUNC_SCALAR_TO_UNIXTIMESTAMP
:
case
TSDB_FUNC_SCALAR_TIMETRUNCATE
:
case
TSDB_FUNC_SCALAR_TIMEDIFF
:
{
return
exprValidateTimeNode
(
msgbuf
,
pExpr
);
}
default:
break
;
...
...
@@ -101,11 +112,26 @@ int32_t exprTreeValidateExprNode(tExprNode *pExpr) {
pExpr
->
_node
.
optr
==
TSDB_BINARY_OP_REMAINDER
)
{
int16_t
leftType
=
pExpr
->
_node
.
pLeft
->
resultType
;
int16_t
rightType
=
pExpr
->
_node
.
pRight
->
resultType
;
if
(
!
IS_NUMERIC_TYPE
(
leftType
)
||
!
IS_NUMERIC_TYPE
(
rightType
))
{
if
((
!
IS_NUMERIC_TYPE
(
leftType
)
&&
!
IS_TIMESTAMP_TYPE
(
leftType
))
||
(
!
IS_NUMERIC_TYPE
(
rightType
)
&&
!
IS_TIMESTAMP_TYPE
(
rightType
)))
{
return
TSDB_CODE_TSC_INVALID_OPERATION
;
}
pExpr
->
resultType
=
TSDB_DATA_TYPE_DOUBLE
;
pExpr
->
resultBytes
=
tDataTypes
[
TSDB_DATA_TYPE_DOUBLE
].
bytes
;
if
(
IS_TIMESTAMP_TYPE
(
leftType
)
||
IS_TIMESTAMP_TYPE
(
rightType
))
{
if
(
pExpr
->
_node
.
pLeft
->
nodeType
==
TSQL_NODE_COL
&&
pExpr
->
_node
.
pRight
->
nodeType
==
TSQL_NODE_COL
)
{
return
TSDB_CODE_TSC_INVALID_OPERATION
;
}
//timestamp cannot be used in arithmetic
//operation with other data types
if
(
!
IS_TIMESTAMP_TYPE
(
leftType
)
||
!
IS_TIMESTAMP_TYPE
(
rightType
)
||
(
pExpr
->
_node
.
optr
!=
TSDB_BINARY_OP_ADD
&&
pExpr
->
_node
.
optr
!=
TSDB_BINARY_OP_SUBTRACT
))
{
return
TSDB_CODE_TSC_INVALID_OPERATION
;
}
pExpr
->
resultType
=
TSDB_DATA_TYPE_TIMESTAMP
;
pExpr
->
resultBytes
=
tDataTypes
[
TSDB_DATA_TYPE_TIMESTAMP
].
bytes
;
}
else
{
pExpr
->
resultType
=
TSDB_DATA_TYPE_DOUBLE
;
pExpr
->
resultBytes
=
tDataTypes
[
TSDB_DATA_TYPE_DOUBLE
].
bytes
;
}
return
TSDB_CODE_SUCCESS
;
}
else
{
return
TSDB_CODE_SUCCESS
;
...
...
@@ -119,6 +145,11 @@ int32_t exprTreeValidateTree(char* msgbuf, tExprNode *pExpr) {
}
if
(
pExpr
->
nodeType
==
TSQL_NODE_VALUE
)
{
pExpr
->
resultType
=
pExpr
->
pVal
->
nType
;
if
(
pExpr
->
pVal
->
nType
==
TSDB_DATA_TYPE_TIMESTAMP
)
{
//convert timestamp value according to db precision
pExpr
->
pVal
->
i64
=
convertTimePrecision
(
pExpr
->
pVal
->
i64
,
TSDB_TIME_PRECISION_NANO
,
pExpr
->
precision
);
}
if
(
!
IS_VAR_DATA_TYPE
(
pExpr
->
pVal
->
nType
))
{
pExpr
->
resultBytes
=
tDataTypes
[
pExpr
->
pVal
->
nType
].
bytes
;
}
else
{
...
...
@@ -499,9 +530,13 @@ void exprTreeExprNodeTraverse(tExprNode *pExpr, int32_t numOfRows, tExprOperandI
_arithmetic_operator_fn_t
OperatorFn
=
getArithmeticOperatorFn
(
pExpr
->
_node
.
optr
);
OperatorFn
(
leftIn
,
leftNum
,
leftType
,
rightIn
,
rightNum
,
rightType
,
output
->
data
,
fnOrder
);
output
->
numOfRows
=
MAX
(
leftNum
,
rightNum
);
output
->
type
=
TSDB_DATA_TYPE_DOUBLE
;
if
(
leftType
==
TSDB_DATA_TYPE_TIMESTAMP
||
rightType
==
TSDB_DATA_TYPE_TIMESTAMP
)
{
output
->
type
=
TSDB_DATA_TYPE_BIGINT
;
}
else
{
output
->
type
=
TSDB_DATA_TYPE_DOUBLE
;
}
output
->
bytes
=
tDataTypes
[
output
->
type
].
bytes
;
tfree
(
ltmp
);
...
...
@@ -1220,6 +1255,348 @@ int32_t exprValidateMathNode(tExprNode *pExpr) {
return
TSDB_CODE_SUCCESS
;
}
int32_t
exprValidateTimeNode
(
char
*
msgbuf
,
tExprNode
*
pExpr
)
{
const
char
*
msg1
=
"invalid timestamp digits"
;
const
char
*
msg2
=
"param must be positive integer"
;
switch
(
pExpr
->
_func
.
functionId
)
{
case
TSDB_FUNC_SCALAR_NOW
:
case
TSDB_FUNC_SCALAR_TODAY
:
{
if
(
pExpr
->
_func
.
numChildren
!=
0
||
pExpr
->
_func
.
pChildren
!=
NULL
)
{
return
TSDB_CODE_TSC_INVALID_OPERATION
;
}
pExpr
->
_func
.
numChildren
=
1
;
pExpr
->
_func
.
pChildren
=
(
tExprNode
**
)
tcalloc
(
1
,
sizeof
(
tExprNode
*
));
if
(
!
pExpr
->
_func
.
pChildren
)
{
return
TSDB_CODE_TSC_OUT_OF_MEMORY
;
}
pExpr
->
_func
.
pChildren
[
0
]
=
(
tExprNode
*
)
tcalloc
(
1
,
sizeof
(
tExprNode
));
tExprNode
*
child
=
pExpr
->
_func
.
pChildren
[
0
];
if
(
!
child
)
{
return
TSDB_CODE_TSC_OUT_OF_MEMORY
;
}
child
->
nodeType
=
TSQL_NODE_VALUE
;
child
->
resultType
=
TSDB_DATA_TYPE_TIMESTAMP
;
child
->
resultBytes
=
(
int16_t
)
tDataTypes
[
child
->
resultType
].
bytes
;
child
->
pVal
=
(
tVariant
*
)
tcalloc
(
1
,
sizeof
(
tVariant
));
if
(
!
child
->
pVal
)
{
return
TSDB_CODE_TSC_OUT_OF_MEMORY
;
}
child
->
pVal
->
nType
=
TSDB_DATA_TYPE_TIMESTAMP
;
int64_t
timeVal
;
if
(
pExpr
->
_func
.
functionId
==
TSDB_FUNC_SCALAR_NOW
)
{
switch
(
pExpr
->
precision
)
{
case
TSDB_TIME_PRECISION_MILLI
:
{
timeVal
=
taosGetTimestampMs
();
break
;
}
case
TSDB_TIME_PRECISION_MICRO
:
{
timeVal
=
taosGetTimestampUs
();
break
;
}
case
TSDB_TIME_PRECISION_NANO
:
{
timeVal
=
taosGetTimestampNs
();
break
;
}
default:
{
assert
(
false
);
break
;
}
}
child
->
pVal
->
i64
=
timeVal
;
}
else
{
timeVal
=
taosGetTimestampToday
()
*
1000
;
child
->
pVal
->
i64
=
convertTimePrecision
(
timeVal
,
TSDB_TIME_PRECISION_MILLI
,
pExpr
->
precision
);
}
pExpr
->
resultType
=
TSDB_DATA_TYPE_TIMESTAMP
;
pExpr
->
resultBytes
=
(
int16_t
)
tDataTypes
[
pExpr
->
resultType
].
bytes
;
break
;
}
case
TSDB_FUNC_SCALAR_TIMEZONE
:
{
if
(
pExpr
->
_func
.
numChildren
!=
0
||
pExpr
->
_func
.
pChildren
!=
NULL
)
{
return
TSDB_CODE_TSC_INVALID_OPERATION
;
}
pExpr
->
_func
.
numChildren
=
1
;
pExpr
->
_func
.
pChildren
=
(
tExprNode
**
)
tcalloc
(
1
,
sizeof
(
tExprNode
*
));
if
(
!
pExpr
->
_func
.
pChildren
)
{
return
TSDB_CODE_TSC_OUT_OF_MEMORY
;
}
pExpr
->
_func
.
pChildren
[
0
]
=
(
tExprNode
*
)
tcalloc
(
1
,
sizeof
(
tExprNode
));
tExprNode
*
child
=
pExpr
->
_func
.
pChildren
[
0
];
if
(
!
child
)
{
return
TSDB_CODE_TSC_OUT_OF_MEMORY
;
}
child
->
nodeType
=
TSQL_NODE_VALUE
;
child
->
resultType
=
TSDB_DATA_TYPE_BINARY
;
child
->
resultBytes
=
TSDB_TIMEZONE_LEN
;
child
->
pVal
=
(
tVariant
*
)
tcalloc
(
1
,
sizeof
(
tVariant
));
if
(
!
child
->
pVal
)
{
return
TSDB_CODE_TSC_OUT_OF_MEMORY
;
}
child
->
pVal
->
nType
=
TSDB_DATA_TYPE_BINARY
;
child
->
pVal
->
nLen
=
TSDB_TIMEZONE_LEN
;
child
->
pVal
->
pz
=
tcalloc
(
TSDB_TIMEZONE_LEN
,
sizeof
(
char
));
if
(
!
child
->
pVal
->
pz
)
{
return
TSDB_CODE_TSC_OUT_OF_MEMORY
;
}
memcpy
(
child
->
pVal
->
pz
,
tsTimezone
,
TSDB_TIMEZONE_LEN
);
pExpr
->
resultType
=
TSDB_DATA_TYPE_BINARY
;
pExpr
->
resultBytes
=
TSDB_TIMEZONE_LEN
;
break
;
}
case
TSDB_FUNC_SCALAR_TO_ISO8601
:
{
if
(
pExpr
->
_func
.
numChildren
!=
1
)
{
return
TSDB_CODE_TSC_INVALID_OPERATION
;
}
tExprNode
*
child
=
pExpr
->
_func
.
pChildren
[
0
];
if
(
child
->
resultType
!=
TSDB_DATA_TYPE_BIGINT
&&
child
->
resultType
!=
TSDB_DATA_TYPE_TIMESTAMP
)
{
return
TSDB_CODE_TSC_INVALID_OPERATION
;
}
if
(
child
->
nodeType
==
TSQL_NODE_VALUE
)
{
if
(
child
->
pVal
->
i64
<
0
)
{
return
exprInvalidOperationMsg
(
msgbuf
,
msg2
);
}
char
fraction
[
32
]
=
{
0
};
NUM_TO_STRING
(
child
->
resultType
,
&
child
->
pVal
->
i64
,
sizeof
(
fraction
),
fraction
);
int32_t
tsDigits
=
strlen
(
fraction
);
if
(
tsDigits
>
TSDB_TIME_PRECISION_SEC_DIGITS
&&
tsDigits
!=
TSDB_TIME_PRECISION_MILLI_DIGITS
&&
tsDigits
!=
TSDB_TIME_PRECISION_MICRO_DIGITS
&&
tsDigits
!=
TSDB_TIME_PRECISION_NANO_DIGITS
)
{
return
exprInvalidOperationMsg
(
msgbuf
,
msg1
);
}
}
else
if
(
child
->
nodeType
==
TSQL_NODE_COL
)
{
if
(
child
->
pSchema
->
type
!=
TSDB_DATA_TYPE_TIMESTAMP
)
{
return
TSDB_CODE_TSC_INVALID_OPERATION
;
}
}
pExpr
->
resultType
=
TSDB_DATA_TYPE_BINARY
;
pExpr
->
resultBytes
=
64
;
//2013-04-12T15:52:01.123000000+0800
break
;
}
case
TSDB_FUNC_SCALAR_TO_UNIXTIMESTAMP
:
{
if
(
pExpr
->
_func
.
numChildren
!=
1
)
{
return
TSDB_CODE_TSC_INVALID_OPERATION
;
}
tExprNode
*
child0
=
pExpr
->
_func
.
pChildren
[
0
];
if
(
child0
->
resultType
!=
TSDB_DATA_TYPE_BINARY
&&
child0
->
resultType
!=
TSDB_DATA_TYPE_NCHAR
)
{
return
TSDB_CODE_TSC_INVALID_OPERATION
;
}
pExpr
->
_func
.
numChildren
=
2
;
tExprNode
**
pChildren
=
(
tExprNode
**
)
trealloc
(
pExpr
->
_func
.
pChildren
,
pExpr
->
_func
.
numChildren
*
sizeof
(
tExprNode
*
));
if
(
!
pChildren
)
{
return
TSDB_CODE_TSC_OUT_OF_MEMORY
;
}
pExpr
->
_func
.
pChildren
=
pChildren
;
pExpr
->
_func
.
pChildren
[
0
]
=
child0
;
pExpr
->
_func
.
pChildren
[
1
]
=
(
tExprNode
*
)
tcalloc
(
1
,
sizeof
(
tExprNode
));
tExprNode
*
child1
=
pExpr
->
_func
.
pChildren
[
1
];
if
(
!
child1
)
{
return
TSDB_CODE_TSC_OUT_OF_MEMORY
;
}
child1
->
nodeType
=
TSQL_NODE_VALUE
;
child1
->
resultType
=
TSDB_DATA_TYPE_BIGINT
;
child1
->
resultBytes
=
tDataTypes
[
TSDB_DATA_TYPE_BIGINT
].
bytes
;
child1
->
pVal
=
(
tVariant
*
)
tcalloc
(
1
,
sizeof
(
tVariant
));
if
(
!
child1
->
pVal
)
{
return
TSDB_CODE_TSC_OUT_OF_MEMORY
;
}
child1
->
pVal
->
nType
=
TSDB_DATA_TYPE_BIGINT
;
child1
->
pVal
->
nLen
=
tDataTypes
[
TSDB_DATA_TYPE_BIGINT
].
bytes
;
child1
->
pVal
->
i64
=
(
int64_t
)
pExpr
->
precision
;
pExpr
->
resultType
=
TSDB_DATA_TYPE_BIGINT
;
pExpr
->
resultBytes
=
(
int16_t
)
tDataTypes
[
TSDB_DATA_TYPE_BIGINT
].
bytes
;
break
;
}
case
TSDB_FUNC_SCALAR_TIMETRUNCATE
:
{
if
(
pExpr
->
_func
.
numChildren
!=
2
)
{
return
TSDB_CODE_TSC_INVALID_OPERATION
;
}
tExprNode
*
child0
=
pExpr
->
_func
.
pChildren
[
0
];
tExprNode
*
child1
=
pExpr
->
_func
.
pChildren
[
1
];
if
(
child0
->
resultType
!=
TSDB_DATA_TYPE_BIGINT
&&
child0
->
resultType
!=
TSDB_DATA_TYPE_TIMESTAMP
&&
child0
->
resultType
!=
TSDB_DATA_TYPE_BINARY
&&
child0
->
resultType
!=
TSDB_DATA_TYPE_NCHAR
)
{
return
TSDB_CODE_TSC_INVALID_OPERATION
;
}
if
(
child0
->
nodeType
==
TSQL_NODE_VALUE
)
{
/* datetime format or epoch */
if
(
child0
->
pVal
->
nType
!=
TSDB_DATA_TYPE_BIGINT
&&
child0
->
pVal
->
nType
!=
TSDB_DATA_TYPE_BINARY
&&
child0
->
pVal
->
nType
!=
TSDB_DATA_TYPE_NCHAR
)
{
return
TSDB_CODE_TSC_INVALID_OPERATION
;
}
if
(
child0
->
pVal
->
nType
==
TSDB_DATA_TYPE_BIGINT
)
{
char
fraction
[
32
]
=
{
0
};
NUM_TO_STRING
(
child0
->
resultType
,
&
child0
->
pVal
->
i64
,
sizeof
(
fraction
),
fraction
);
int32_t
tsDigits
=
strlen
(
fraction
);
if
(
tsDigits
>
TSDB_TIME_PRECISION_SEC_DIGITS
&&
tsDigits
!=
TSDB_TIME_PRECISION_MILLI_DIGITS
&&
tsDigits
!=
TSDB_TIME_PRECISION_MICRO_DIGITS
&&
tsDigits
!=
TSDB_TIME_PRECISION_NANO_DIGITS
)
{
return
exprInvalidOperationMsg
(
msgbuf
,
msg1
);
}
}
}
else
if
(
child0
->
nodeType
==
TSQL_NODE_COL
)
{
/* ts column */
if
(
child0
->
pSchema
->
type
!=
TSDB_DATA_TYPE_TIMESTAMP
)
{
return
TSDB_CODE_TSC_INVALID_OPERATION
;
}
}
else
{
return
TSDB_CODE_TSC_INVALID_OPERATION
;
}
//time unit
if
(
child1
->
nodeType
!=
TSQL_NODE_VALUE
||
child1
->
resultType
!=
TSDB_DATA_TYPE_TIMESTAMP
||
child1
->
pVal
->
nType
!=
TSDB_DATA_TYPE_TIMESTAMP
)
{
return
TSDB_CODE_TSC_INVALID_OPERATION
;
}
//db precision
pExpr
->
_func
.
numChildren
=
3
;
tExprNode
**
pChildren
=
(
tExprNode
**
)
trealloc
(
pExpr
->
_func
.
pChildren
,
pExpr
->
_func
.
numChildren
*
sizeof
(
tExprNode
*
));
if
(
!
pChildren
)
{
return
TSDB_CODE_TSC_OUT_OF_MEMORY
;
}
pExpr
->
_func
.
pChildren
=
pChildren
;
pExpr
->
_func
.
pChildren
[
0
]
=
child0
;
pExpr
->
_func
.
pChildren
[
1
]
=
child1
;
pExpr
->
_func
.
pChildren
[
2
]
=
(
tExprNode
*
)
tcalloc
(
1
,
sizeof
(
tExprNode
));
tExprNode
*
child2
=
pExpr
->
_func
.
pChildren
[
2
];
if
(
!
child2
)
{
return
TSDB_CODE_TSC_OUT_OF_MEMORY
;
}
child2
->
nodeType
=
TSQL_NODE_VALUE
;
child2
->
resultType
=
TSDB_DATA_TYPE_BIGINT
;
child2
->
resultBytes
=
tDataTypes
[
TSDB_DATA_TYPE_BIGINT
].
bytes
;
child2
->
pVal
=
(
tVariant
*
)
tcalloc
(
1
,
sizeof
(
tVariant
));
if
(
!
child2
->
pVal
)
{
return
TSDB_CODE_TSC_OUT_OF_MEMORY
;
}
child2
->
pVal
->
nType
=
TSDB_DATA_TYPE_BIGINT
;
child2
->
pVal
->
nLen
=
tDataTypes
[
TSDB_DATA_TYPE_BIGINT
].
bytes
;
child2
->
pVal
->
i64
=
(
int64_t
)
pExpr
->
precision
;
pExpr
->
resultType
=
TSDB_DATA_TYPE_TIMESTAMP
;
pExpr
->
resultBytes
=
(
int16_t
)
tDataTypes
[
TSDB_DATA_TYPE_TIMESTAMP
].
bytes
;
break
;
}
case
TSDB_FUNC_SCALAR_TIMEDIFF
:
{
if
(
pExpr
->
_func
.
numChildren
!=
2
&&
pExpr
->
_func
.
numChildren
!=
3
)
{
return
TSDB_CODE_TSC_INVALID_OPERATION
;
}
tExprNode
**
child
=
(
tExprNode
**
)
tcalloc
(
pExpr
->
_func
.
numChildren
,
sizeof
(
tExprNode
*
));
for
(
int32_t
i
=
0
;
i
<
pExpr
->
_func
.
numChildren
;
++
i
)
{
child
[
i
]
=
pExpr
->
_func
.
pChildren
[
i
];
}
//operands
for
(
int32_t
i
=
0
;
i
<
2
;
++
i
)
{
if
(
child
[
i
]
->
resultType
!=
TSDB_DATA_TYPE_BIGINT
&&
child
[
i
]
->
resultType
!=
TSDB_DATA_TYPE_TIMESTAMP
&&
child
[
i
]
->
resultType
!=
TSDB_DATA_TYPE_BINARY
&&
child
[
i
]
->
resultType
!=
TSDB_DATA_TYPE_NCHAR
)
{
return
TSDB_CODE_TSC_INVALID_OPERATION
;
}
if
(
child
[
i
]
->
nodeType
==
TSQL_NODE_VALUE
)
{
/* datetime format or epoch */
if
(
child
[
i
]
->
pVal
->
nType
!=
TSDB_DATA_TYPE_BIGINT
&&
child
[
i
]
->
pVal
->
nType
!=
TSDB_DATA_TYPE_BINARY
&&
child
[
i
]
->
pVal
->
nType
!=
TSDB_DATA_TYPE_NCHAR
)
{
return
TSDB_CODE_TSC_INVALID_OPERATION
;
}
if
(
child
[
i
]
->
pVal
->
nType
==
TSDB_DATA_TYPE_BIGINT
)
{
char
fraction
[
32
]
=
{
0
};
NUM_TO_STRING
(
child
[
i
]
->
resultType
,
&
child
[
i
]
->
pVal
->
i64
,
sizeof
(
fraction
),
fraction
);
int32_t
tsDigits
=
strlen
(
fraction
);
if
(
tsDigits
>
TSDB_TIME_PRECISION_SEC_DIGITS
&&
tsDigits
!=
TSDB_TIME_PRECISION_MILLI_DIGITS
&&
tsDigits
!=
TSDB_TIME_PRECISION_MICRO_DIGITS
&&
tsDigits
!=
TSDB_TIME_PRECISION_NANO_DIGITS
)
{
return
exprInvalidOperationMsg
(
msgbuf
,
msg1
);
}
}
}
else
if
(
child
[
i
]
->
nodeType
==
TSQL_NODE_COL
)
{
/* ts column */
if
(
child
[
i
]
->
pSchema
->
type
!=
TSDB_DATA_TYPE_TIMESTAMP
)
{
return
TSDB_CODE_TSC_INVALID_OPERATION
;
}
}
else
{
return
TSDB_CODE_TSC_INVALID_OPERATION
;
}
}
//time unit
if
(
pExpr
->
_func
.
numChildren
==
3
)
{
if
(
child
[
2
]
->
nodeType
!=
TSQL_NODE_VALUE
||
child
[
2
]
->
pVal
->
nType
!=
TSDB_DATA_TYPE_TIMESTAMP
)
{
return
TSDB_CODE_TSC_INVALID_OPERATION
;
}
}
//db precision
pExpr
->
_func
.
numChildren
++
;
tExprNode
**
pChildren
=
(
tExprNode
**
)
trealloc
(
pExpr
->
_func
.
pChildren
,
pExpr
->
_func
.
numChildren
*
sizeof
(
tExprNode
*
));
if
(
!
pChildren
)
{
return
TSDB_CODE_TSC_OUT_OF_MEMORY
;
}
pExpr
->
_func
.
pChildren
=
pChildren
;
for
(
int32_t
i
=
0
;
i
<
pExpr
->
_func
.
numChildren
-
1
;
++
i
)
{
pExpr
->
_func
.
pChildren
[
i
]
=
child
[
i
];
}
tExprNode
*
childPrec
;
if
(
pExpr
->
_func
.
numChildren
==
3
)
{
pExpr
->
_func
.
pChildren
[
2
]
=
(
tExprNode
*
)
tcalloc
(
1
,
sizeof
(
tExprNode
));
childPrec
=
pExpr
->
_func
.
pChildren
[
2
];
}
else
{
pExpr
->
_func
.
pChildren
[
3
]
=
(
tExprNode
*
)
tcalloc
(
1
,
sizeof
(
tExprNode
));
childPrec
=
pExpr
->
_func
.
pChildren
[
3
];
}
if
(
!
childPrec
)
{
return
TSDB_CODE_TSC_OUT_OF_MEMORY
;
}
childPrec
->
nodeType
=
TSQL_NODE_VALUE
;
childPrec
->
resultType
=
TSDB_DATA_TYPE_BIGINT
;
childPrec
->
resultBytes
=
tDataTypes
[
TSDB_DATA_TYPE_BIGINT
].
bytes
;
childPrec
->
pVal
=
(
tVariant
*
)
tcalloc
(
1
,
sizeof
(
tVariant
));
if
(
!
childPrec
->
pVal
)
{
return
TSDB_CODE_TSC_OUT_OF_MEMORY
;
}
childPrec
->
pVal
->
nType
=
TSDB_DATA_TYPE_BIGINT
;
childPrec
->
pVal
->
nLen
=
tDataTypes
[
TSDB_DATA_TYPE_BIGINT
].
bytes
;
childPrec
->
pVal
->
i64
=
(
int64_t
)
pExpr
->
precision
;
free
(
child
);
pExpr
->
resultType
=
TSDB_DATA_TYPE_BIGINT
;
pExpr
->
resultBytes
=
(
int16_t
)
tDataTypes
[
TSDB_DATA_TYPE_BIGINT
].
bytes
;
break
;
}
default:
{
assert
(
false
);
break
;
}
}
return
TSDB_CODE_SUCCESS
;
}
void
vectorConcat
(
int16_t
functionId
,
tExprOperandInfo
*
pInputs
,
int32_t
numInputs
,
tExprOperandInfo
*
pOutput
,
int32_t
order
)
{
assert
(
functionId
==
TSDB_FUNC_SCALAR_CONCAT
&&
numInputs
>=
2
&&
order
==
TSDB_ORDER_ASC
);
for
(
int
i
=
0
;
i
<
numInputs
;
++
i
)
{
...
...
@@ -1851,6 +2228,421 @@ void vectorMathFunc(int16_t functionId, tExprOperandInfo *pInputs, int32_t numIn
free
(
inputData
);
}
void
vectorTimeFunc
(
int16_t
functionId
,
tExprOperandInfo
*
pInputs
,
int32_t
numInputs
,
tExprOperandInfo
*
pOutput
,
int32_t
order
)
{
for
(
int
i
=
0
;
i
<
numInputs
;
++
i
)
{
assert
(
pInputs
[
i
].
numOfRows
==
1
||
pInputs
[
i
].
numOfRows
==
pOutput
->
numOfRows
);
}
char
*
outputData
=
NULL
;
char
**
inputData
=
calloc
(
numInputs
,
sizeof
(
char
*
));
for
(
int
i
=
0
;
i
<
pOutput
->
numOfRows
;
++
i
)
{
for
(
int
j
=
0
;
j
<
numInputs
;
++
j
)
{
if
(
pInputs
[
j
].
numOfRows
==
1
)
{
inputData
[
j
]
=
pInputs
[
j
].
data
;
}
else
{
inputData
[
j
]
=
pInputs
[
j
].
data
+
i
*
pInputs
[
j
].
bytes
;
}
}
outputData
=
pOutput
->
data
+
i
*
pOutput
->
bytes
;
bool
hasNullInputs
=
false
;
for
(
int
j
=
0
;
j
<
numInputs
;
++
j
)
{
if
(
isNull
(
inputData
[
j
],
pInputs
[
j
].
type
))
{
hasNullInputs
=
true
;
setNull
(
outputData
,
pOutput
->
type
,
pOutput
->
bytes
);
}
}
if
(
!
hasNullInputs
)
{
switch
(
functionId
)
{
case
TSDB_FUNC_SCALAR_NOW
:
case
TSDB_FUNC_SCALAR_TODAY
:
{
assert
(
numInputs
==
1
);
int64_t
result
;
GET_TYPED_DATA
(
result
,
int64_t
,
pInputs
[
0
].
type
,
inputData
[
0
]);
SET_TYPED_DATA
(
outputData
,
pOutput
->
type
,
result
);
break
;
}
case
TSDB_FUNC_SCALAR_TIMEZONE
:
{
assert
(
numInputs
==
1
);
memcpy
(((
char
*
)
varDataVal
(
outputData
)),
varDataVal
(
inputData
[
0
]),
varDataLen
(
inputData
[
0
]));
varDataSetLen
(
outputData
,
varDataLen
(
inputData
[
0
]));
break
;
}
case
TSDB_FUNC_SCALAR_TO_ISO8601
:
{
assert
(
numInputs
==
1
);
assert
(
pInputs
[
0
].
type
==
TSDB_DATA_TYPE_BIGINT
||
pInputs
[
0
].
type
==
TSDB_DATA_TYPE_TIMESTAMP
);
char
fraction
[
20
]
=
{
0
};
bool
hasFraction
=
false
;
NUM_TO_STRING
(
pInputs
[
0
].
type
,
inputData
[
0
],
sizeof
(
fraction
),
fraction
);
int32_t
tsDigits
=
strlen
(
fraction
);
char
buf
[
64
]
=
{
0
};
int64_t
timeVal
;
GET_TYPED_DATA
(
timeVal
,
int64_t
,
pInputs
[
0
].
type
,
inputData
[
0
]);
if
(
tsDigits
>
TSDB_TIME_PRECISION_SEC_DIGITS
)
{
if
(
tsDigits
==
TSDB_TIME_PRECISION_MILLI_DIGITS
)
{
timeVal
=
timeVal
/
1000
;
}
else
if
(
tsDigits
==
TSDB_TIME_PRECISION_MICRO_DIGITS
)
{
timeVal
=
timeVal
/
(
1000
*
1000
);
}
else
if
(
tsDigits
==
TSDB_TIME_PRECISION_NANO_DIGITS
)
{
timeVal
=
timeVal
/
(
1000
*
1000
*
1000
);
}
else
{
assert
(
0
);
}
hasFraction
=
true
;
memmove
(
fraction
,
fraction
+
TSDB_TIME_PRECISION_SEC_DIGITS
,
TSDB_TIME_PRECISION_SEC_DIGITS
);
}
struct
tm
*
tmInfo
=
localtime
((
const
time_t
*
)
&
timeVal
);
strftime
(
buf
,
sizeof
(
buf
),
"%Y-%m-%dT%H:%M:%S%z"
,
tmInfo
);
int32_t
len
=
(
int32_t
)
strlen
(
buf
);
if
(
hasFraction
)
{
int32_t
fracLen
=
strlen
(
fraction
)
+
1
;
char
*
tzInfo
=
strchr
(
buf
,
'+'
);
if
(
tzInfo
)
{
memmove
(
tzInfo
+
fracLen
,
tzInfo
,
strlen
(
tzInfo
));
}
else
{
tzInfo
=
strchr
(
buf
,
'-'
);
memmove
(
tzInfo
+
fracLen
,
tzInfo
,
strlen
(
tzInfo
));
}
char
tmp
[
32
];
sprintf
(
tmp
,
".%s"
,
fraction
);
memcpy
(
tzInfo
,
tmp
,
fracLen
);
len
+=
fracLen
;
}
memcpy
(((
char
*
)
varDataVal
(
outputData
)),
buf
,
len
);
varDataSetLen
(
outputData
,
len
);
break
;
}
case
TSDB_FUNC_SCALAR_TO_UNIXTIMESTAMP
:
{
assert
(
numInputs
==
2
);
assert
(
pInputs
[
0
].
type
==
TSDB_DATA_TYPE_BINARY
||
pInputs
[
0
].
type
==
TSDB_DATA_TYPE_NCHAR
);
assert
(
pInputs
[
1
].
type
==
TSDB_DATA_TYPE_BIGINT
);
int64_t
timeVal
=
0
;
int64_t
timePrec
;
GET_TYPED_DATA
(
timePrec
,
int64_t
,
pInputs
[
1
].
type
,
inputData
[
1
]);
if
(
pInputs
[
0
].
type
==
TSDB_DATA_TYPE_BINARY
)
{
taosParseTime
((
char
*
)
varDataVal
(
inputData
[
0
]),
&
timeVal
,
pInputs
[
0
].
bytes
,
timePrec
,
0
);
}
else
{
int32_t
charLen
=
varDataLen
(
inputData
[
0
]);
char
*
newColData
=
calloc
(
1
,
charLen
/
TSDB_NCHAR_SIZE
+
1
);
int
len
=
taosUcs4ToMbs
(
varDataVal
(
inputData
[
0
]),
charLen
,
newColData
);
if
(
len
<
0
){
uError
(
"vectorTimeFunc taosUcs4ToMbs error"
);
tfree
(
newColData
);
return
;
}
newColData
[
len
]
=
0
;
taosParseTime
(
newColData
,
&
timeVal
,
len
+
1
,
timePrec
,
0
);
tfree
(
newColData
);
}
SET_TYPED_DATA
(
outputData
,
pOutput
->
type
,
timeVal
);
break
;
}
case
TSDB_FUNC_SCALAR_TIMETRUNCATE
:
{
assert
(
numInputs
==
3
);
assert
(
pInputs
[
0
].
type
==
TSDB_DATA_TYPE_BIGINT
||
pInputs
[
0
].
type
==
TSDB_DATA_TYPE_TIMESTAMP
||
pInputs
[
0
].
type
==
TSDB_DATA_TYPE_BINARY
||
pInputs
[
0
].
type
==
TSDB_DATA_TYPE_NCHAR
);
assert
(
pInputs
[
1
].
type
==
TSDB_DATA_TYPE_TIMESTAMP
);
assert
(
pInputs
[
2
].
type
==
TSDB_DATA_TYPE_BIGINT
);
int64_t
timeUnit
,
timePrec
,
timeVal
=
0
;
GET_TYPED_DATA
(
timeUnit
,
int64_t
,
pInputs
[
1
].
type
,
inputData
[
1
]);
GET_TYPED_DATA
(
timePrec
,
int64_t
,
pInputs
[
2
].
type
,
inputData
[
2
]);
int64_t
factor
=
(
timePrec
==
TSDB_TIME_PRECISION_MILLI
)
?
1000
:
(
timePrec
==
TSDB_TIME_PRECISION_MICRO
?
1000000
:
1000000000
);
if
(
pInputs
[
0
].
type
==
TSDB_DATA_TYPE_BINARY
||
pInputs
[
0
].
type
==
TSDB_DATA_TYPE_NCHAR
)
{
/* datetime format strings */
taosParseTime
((
char
*
)
varDataVal
(
inputData
[
0
]),
&
timeVal
,
pInputs
[
0
].
bytes
,
TSDB_TIME_PRECISION_NANO
,
0
);
//If converted value is less than 10digits in second, use value in second instead
int64_t
timeValSec
=
timeVal
/
1000000000
;
if
(
timeValSec
<
1000000000
)
{
timeVal
=
timeValSec
;
}
}
else
if
(
pInputs
[
0
].
type
==
TSDB_DATA_TYPE_BIGINT
)
{
/* unix timestamp */
GET_TYPED_DATA
(
timeVal
,
int64_t
,
pInputs
[
0
].
type
,
inputData
[
0
]);
}
else
if
(
pInputs
[
0
].
type
==
TSDB_DATA_TYPE_TIMESTAMP
)
{
/* timestamp column*/
GET_TYPED_DATA
(
timeVal
,
int64_t
,
pInputs
[
0
].
type
,
inputData
[
0
]);
int64_t
timeValSec
=
timeVal
/
factor
;
if
(
timeValSec
<
1000000000
)
{
timeVal
=
timeValSec
;
}
}
else
{
assert
(
0
);
}
char
buf
[
20
]
=
{
0
};
NUM_TO_STRING
(
TSDB_DATA_TYPE_BIGINT
,
&
timeVal
,
sizeof
(
buf
),
buf
);
int32_t
tsDigits
=
strlen
(
buf
);
timeUnit
=
timeUnit
*
1000
/
factor
;
switch
(
timeUnit
)
{
case
0
:
{
/* 1u */
if
(
tsDigits
==
TSDB_TIME_PRECISION_NANO_DIGITS
)
{
timeVal
=
timeVal
/
1000
*
1000
;
//} else if (tsDigits == TSDB_TIME_PRECISION_MICRO_DIGITS) {
// //timeVal = timeVal / 1000;
}
else
if
(
tsDigits
<=
TSDB_TIME_PRECISION_SEC_DIGITS
)
{
timeVal
=
timeVal
*
factor
;
}
else
{
timeVal
=
timeVal
*
1
;
}
break
;
}
case
1
:
{
/* 1a */
if
(
tsDigits
==
TSDB_TIME_PRECISION_MILLI_DIGITS
)
{
timeVal
=
timeVal
*
1
;
}
else
if
(
tsDigits
==
TSDB_TIME_PRECISION_MICRO_DIGITS
)
{
timeVal
=
timeVal
/
1000
*
1000
;
}
else
if
(
tsDigits
==
TSDB_TIME_PRECISION_NANO_DIGITS
)
{
timeVal
=
timeVal
/
1000000
*
1000000
;
}
else
if
(
tsDigits
<=
TSDB_TIME_PRECISION_SEC_DIGITS
){
timeVal
=
timeVal
*
factor
;
}
else
{
assert
(
0
);
}
break
;
}
case
1000
:
{
/* 1s */
if
(
tsDigits
==
TSDB_TIME_PRECISION_MILLI_DIGITS
)
{
timeVal
=
timeVal
/
1000
*
1000
;
}
else
if
(
tsDigits
==
TSDB_TIME_PRECISION_MICRO_DIGITS
)
{
timeVal
=
timeVal
/
1000000
*
1000000
;
}
else
if
(
tsDigits
==
TSDB_TIME_PRECISION_NANO_DIGITS
)
{
timeVal
=
timeVal
/
1000000000
*
1000000000
;
}
else
if
(
tsDigits
<=
TSDB_TIME_PRECISION_SEC_DIGITS
)
{
timeVal
=
timeVal
*
factor
;
}
else
{
assert
(
0
);
}
break
;
}
case
60000
:
{
/* 1m */
if
(
tsDigits
==
TSDB_TIME_PRECISION_MILLI_DIGITS
)
{
timeVal
=
timeVal
/
1000
/
60
*
60
*
1000
;
}
else
if
(
tsDigits
==
TSDB_TIME_PRECISION_MICRO_DIGITS
)
{
timeVal
=
timeVal
/
1000000
/
60
*
60
*
1000000
;
}
else
if
(
tsDigits
==
TSDB_TIME_PRECISION_NANO_DIGITS
)
{
timeVal
=
timeVal
/
1000000000
/
60
*
60
*
1000000000
;
}
else
if
(
tsDigits
<=
TSDB_TIME_PRECISION_SEC_DIGITS
)
{
timeVal
=
timeVal
*
factor
/
factor
/
60
*
60
*
factor
;
}
else
{
assert
(
0
);
}
break
;
}
case
3600000
:
{
/* 1h */
if
(
tsDigits
==
TSDB_TIME_PRECISION_MILLI_DIGITS
)
{
timeVal
=
timeVal
/
1000
/
3600
*
3600
*
1000
;
}
else
if
(
tsDigits
==
TSDB_TIME_PRECISION_MICRO_DIGITS
)
{
timeVal
=
timeVal
/
1000000
/
3600
*
3600
*
1000000
;
}
else
if
(
tsDigits
==
TSDB_TIME_PRECISION_NANO_DIGITS
)
{
timeVal
=
timeVal
/
1000000000
/
3600
*
3600
*
1000000000
;
}
else
if
(
tsDigits
<=
TSDB_TIME_PRECISION_SEC_DIGITS
)
{
timeVal
=
timeVal
*
factor
/
factor
/
3600
*
3600
*
factor
;
}
else
{
assert
(
0
);
}
break
;
}
case
86400000
:
{
/* 1d */
if
(
tsDigits
==
TSDB_TIME_PRECISION_MILLI_DIGITS
)
{
timeVal
=
timeVal
/
1000
/
86400
*
86400
*
1000
;
}
else
if
(
tsDigits
==
TSDB_TIME_PRECISION_MICRO_DIGITS
)
{
timeVal
=
timeVal
/
1000000
/
86400
*
86400
*
1000000
;
}
else
if
(
tsDigits
==
TSDB_TIME_PRECISION_NANO_DIGITS
)
{
timeVal
=
timeVal
/
1000000000
/
86400
*
86400
*
1000000000
;
}
else
if
(
tsDigits
<=
TSDB_TIME_PRECISION_SEC_DIGITS
)
{
timeVal
=
timeVal
*
factor
/
factor
/
86400
*
86400
*
factor
;
}
else
{
assert
(
0
);
}
break
;
}
case
604800000
:
{
/* 1w */
if
(
tsDigits
==
TSDB_TIME_PRECISION_MILLI_DIGITS
)
{
timeVal
=
timeVal
/
1000
/
604800
*
604800
*
1000
;
}
else
if
(
tsDigits
==
TSDB_TIME_PRECISION_MICRO_DIGITS
)
{
timeVal
=
timeVal
/
1000000
/
604800
*
604800
*
1000000
;
}
else
if
(
tsDigits
==
TSDB_TIME_PRECISION_NANO_DIGITS
)
{
timeVal
=
timeVal
/
1000000000
/
604800
*
604800
*
1000000000
;
}
else
if
(
tsDigits
<=
TSDB_TIME_PRECISION_SEC_DIGITS
)
{
timeVal
=
timeVal
*
factor
/
factor
/
604800
*
604800
*
factor
;
}
else
{
assert
(
0
);
}
break
;
}
default:
{
timeVal
=
timeVal
*
1
;
break
;
}
}
//truncate the timestamp to db precision
switch
(
timePrec
)
{
case
TSDB_TIME_PRECISION_MILLI
:
{
if
(
tsDigits
==
TSDB_TIME_PRECISION_MICRO_DIGITS
)
{
timeVal
=
timeVal
/
1000
;
}
else
if
(
tsDigits
==
TSDB_TIME_PRECISION_NANO_DIGITS
)
{
timeVal
=
timeVal
/
1000000
;
}
break
;
}
case
TSDB_TIME_PRECISION_MICRO
:
{
if
(
tsDigits
==
TSDB_TIME_PRECISION_NANO_DIGITS
)
{
timeVal
=
timeVal
/
1000
;
}
else
if
(
tsDigits
==
TSDB_TIME_PRECISION_MILLI_DIGITS
)
{
timeVal
=
timeVal
*
1000
;
}
break
;
}
case
TSDB_TIME_PRECISION_NANO
:
{
if
(
tsDigits
==
TSDB_TIME_PRECISION_MICRO_DIGITS
)
{
timeVal
=
timeVal
*
1000
;
}
else
if
(
tsDigits
==
TSDB_TIME_PRECISION_MILLI_DIGITS
)
{
timeVal
=
timeVal
*
1000000
;
}
break
;
}
}
SET_TYPED_DATA
(
outputData
,
pOutput
->
type
,
timeVal
);
break
;
}
case
TSDB_FUNC_SCALAR_TIMEDIFF
:
{
assert
(
numInputs
==
3
||
numInputs
==
4
);
int64_t
timePrec
,
timeUnit
=
-
1
;
int64_t
timeVal
[
2
]
=
{
0
};
if
(
numInputs
==
3
)
{
assert
(
pInputs
[
2
].
type
==
TSDB_DATA_TYPE_BIGINT
);
GET_TYPED_DATA
(
timePrec
,
int64_t
,
pInputs
[
2
].
type
,
inputData
[
2
]);
}
else
{
assert
(
pInputs
[
2
].
type
==
TSDB_DATA_TYPE_TIMESTAMP
);
assert
(
pInputs
[
3
].
type
==
TSDB_DATA_TYPE_BIGINT
);
GET_TYPED_DATA
(
timeUnit
,
int64_t
,
pInputs
[
2
].
type
,
inputData
[
2
]);
GET_TYPED_DATA
(
timePrec
,
int64_t
,
pInputs
[
3
].
type
,
inputData
[
3
]);
}
for
(
int32_t
j
=
0
;
j
<
2
;
++
j
)
{
assert
(
pInputs
[
j
].
type
==
TSDB_DATA_TYPE_BIGINT
||
pInputs
[
j
].
type
==
TSDB_DATA_TYPE_TIMESTAMP
||
pInputs
[
j
].
type
==
TSDB_DATA_TYPE_BINARY
||
pInputs
[
j
].
type
==
TSDB_DATA_TYPE_NCHAR
);
if
(
pInputs
[
j
].
type
==
TSDB_DATA_TYPE_BINARY
||
/* datetime format strings */
pInputs
[
j
].
type
==
TSDB_DATA_TYPE_NCHAR
)
{
taosParseTime
((
char
*
)
varDataVal
(
inputData
[
j
]),
&
timeVal
[
j
],
pInputs
[
j
].
bytes
,
TSDB_TIME_PRECISION_NANO
,
0
);
}
else
if
(
pInputs
[
j
].
type
==
TSDB_DATA_TYPE_BIGINT
||
pInputs
[
j
].
type
==
TSDB_DATA_TYPE_TIMESTAMP
)
{
/* unix timestamp or ts column*/
GET_TYPED_DATA
(
timeVal
[
j
],
int64_t
,
pInputs
[
j
].
type
,
inputData
[
j
]);
if
(
pInputs
[
j
].
type
==
TSDB_DATA_TYPE_TIMESTAMP
)
{
int64_t
factor
=
(
timePrec
==
TSDB_TIME_PRECISION_MILLI
)
?
1000
:
(
timePrec
==
TSDB_TIME_PRECISION_MICRO
?
1000000
:
1000000000
);
int64_t
timeValSec
=
timeVal
[
j
]
/
factor
;
if
(
timeValSec
<
1000000000
)
{
timeVal
[
j
]
=
timeValSec
;
}
}
char
buf
[
20
]
=
{
0
};
NUM_TO_STRING
(
TSDB_DATA_TYPE_BIGINT
,
&
timeVal
[
j
],
sizeof
(
buf
),
buf
);
int32_t
tsDigits
=
strlen
(
buf
);
if
(
tsDigits
<=
TSDB_TIME_PRECISION_SEC_DIGITS
)
{
timeVal
[
j
]
=
timeVal
[
j
]
*
1000000000
;
}
else
if
(
tsDigits
==
TSDB_TIME_PRECISION_MILLI_DIGITS
)
{
timeVal
[
j
]
=
timeVal
[
j
]
*
1000000
;
}
else
if
(
tsDigits
==
TSDB_TIME_PRECISION_MICRO_DIGITS
)
{
timeVal
[
j
]
=
timeVal
[
j
]
*
1000
;
}
else
if
(
tsDigits
==
TSDB_TIME_PRECISION_NANO_DIGITS
)
{
timeVal
[
j
]
=
timeVal
[
j
];
}
}
}
int64_t
result
=
(
timeVal
[
0
]
>=
timeVal
[
1
])
?
(
timeVal
[
0
]
-
timeVal
[
1
])
:
(
timeVal
[
1
]
-
timeVal
[
0
]);
if
(
timeUnit
<
0
)
{
// if no time unit given use db precision
switch
(
timePrec
)
{
case
TSDB_TIME_PRECISION_MILLI
:
{
result
=
result
/
1000000
;
break
;
}
case
TSDB_TIME_PRECISION_MICRO
:
{
result
=
result
/
1000
;
break
;
}
case
TSDB_TIME_PRECISION_NANO
:
{
result
=
result
/
1
;
break
;
}
}
}
else
{
int64_t
factor
=
(
timePrec
==
TSDB_TIME_PRECISION_MILLI
)
?
1000
:
(
timePrec
==
TSDB_TIME_PRECISION_MICRO
?
1000000
:
1000000000
);
timeUnit
=
timeUnit
*
1000
/
factor
;
switch
(
timeUnit
)
{
case
0
:
{
/* 1u */
result
=
result
/
1000
;
break
;
}
case
1
:
{
/* 1a */
result
=
result
/
1000000
;
break
;
}
case
1000
:
{
/* 1s */
result
=
result
/
1000000000
;
break
;
}
case
60000
:
{
/* 1m */
result
=
result
/
1000000000
/
60
;
break
;
}
case
3600000
:
{
/* 1h */
result
=
result
/
1000000000
/
3600
;
break
;
}
case
86400000
:
{
/* 1d */
result
=
result
/
1000000000
/
86400
;
break
;
}
case
604800000
:
{
/* 1w */
result
=
result
/
1000000000
/
604800
;
break
;
}
default:
{
break
;
}
}
}
SET_TYPED_DATA
(
outputData
,
pOutput
->
type
,
result
);
break
;
}
default:
{
assert
(
false
);
break
;
}
}
// end switch function(id)
}
// end can produce value, all child has value
}
// end for each row
free
(
inputData
);
}
_expr_scalar_function_t
getExprScalarFunction
(
uint16_t
funcId
)
{
assert
(
TSDB_FUNC_IS_SCALAR
(
funcId
));
int16_t
scalaIdx
=
TSDB_FUNC_SCALAR_INDEX
(
funcId
);
...
...
@@ -1974,5 +2766,40 @@ tScalarFunctionInfo aScalarFunctions[] = {
"substr"
,
vectorSubstrFunc
},
{
TSDB_FUNC_SCALAR_NOW
,
"now"
,
vectorTimeFunc
},
{
TSDB_FUNC_SCALAR_TODAY
,
"today"
,
vectorTimeFunc
},
{
TSDB_FUNC_SCALAR_TIMEZONE
,
"timezone"
,
vectorTimeFunc
},
{
TSDB_FUNC_SCALAR_TO_ISO8601
,
"to_iso8601"
,
vectorTimeFunc
},
{
TSDB_FUNC_SCALAR_TO_UNIXTIMESTAMP
,
"to_unixtimestamp"
,
vectorTimeFunc
},
{
TSDB_FUNC_SCALAR_TIMETRUNCATE
,
"timetruncate"
,
vectorTimeFunc
},
{
TSDB_FUNC_SCALAR_TIMEDIFF
,
"timediff"
,
vectorTimeFunc
},
};
src/common/src/tvariant.c
浏览文件 @
e6058244
...
...
@@ -93,6 +93,8 @@ void tVariantCreateExt(tVariant *pVar, SStrToken *token, int32_t optrType, bool
case
TSDB_DATA_TYPE_TIMESTAMP
:
{
if
(
optrType
==
TK_NOW
)
{
pVar
->
i64
=
taosGetTimestamp
(
TSDB_TIME_PRECISION_NANO
);
}
else
if
(
optrType
==
TK_TODAY
)
{
pVar
->
i64
=
taosGetTimestampToday
()
*
1000000000
;
}
else
if
(
optrType
==
TK_PLUS
||
optrType
==
TK_MINUS
)
{
char
unit
=
0
;
ret
=
parseAbsoluteDuration
(
token
->
z
,
token
->
n
,
&
pVar
->
i64
,
&
unit
,
TSDB_TIME_PRECISION_NANO
);
...
...
@@ -282,7 +284,7 @@ void tVariantAssign(tVariant *pDst, const tVariant *pSrc) {
}
if
(
IS_NUMERIC_TYPE
(
pSrc
->
nType
)
||
(
pSrc
->
nType
==
TSDB_DATA_TYPE_BOOL
))
{
if
(
IS_NUMERIC_TYPE
(
pSrc
->
nType
)
||
IS_TIMESTAMP_TYPE
(
pSrc
->
nType
)
||
(
pSrc
->
nType
==
TSDB_DATA_TYPE_BOOL
))
{
pDst
->
i64
=
pSrc
->
i64
;
}
else
if
(
pSrc
->
nType
==
TSDB_DATA_TYPE_POINTER_ARRAY
)
{
// this is only for string array
size_t
num
=
taosArrayGetSize
(
pSrc
->
arr
);
...
...
@@ -540,7 +542,7 @@ static FORCE_INLINE int32_t convertToInteger(tVariant *pVariant, int64_t *result
}
errno
=
0
;
if
(
IS_SIGNED_NUMERIC_TYPE
(
pVariant
->
nType
)
||
(
pVariant
->
nType
==
TSDB_DATA_TYPE_BOOL
))
{
if
(
IS_SIGNED_NUMERIC_TYPE
(
pVariant
->
nType
)
||
IS_TIMESTAMP_TYPE
(
pVariant
->
nType
)
||
(
pVariant
->
nType
==
TSDB_DATA_TYPE_BOOL
))
{
*
result
=
pVariant
->
i64
;
}
else
if
(
IS_UNSIGNED_NUMERIC_TYPE
(
pVariant
->
nType
))
{
*
result
=
pVariant
->
u64
;
...
...
src/inc/taosdef.h
浏览文件 @
e6058244
...
...
@@ -106,6 +106,11 @@ extern const int32_t TYPE_BYTES[16];
#define TSDB_TIME_PRECISION_MICRO_STR "us"
#define TSDB_TIME_PRECISION_NANO_STR "ns"
#define TSDB_TIME_PRECISION_SEC_DIGITS 10
#define TSDB_TIME_PRECISION_MILLI_DIGITS 13
#define TSDB_TIME_PRECISION_MICRO_DIGITS 16
#define TSDB_TIME_PRECISION_NANO_DIGITS 19
#define TSDB_TICK_PER_SECOND(precision) ((int64_t)((precision)==TSDB_TIME_PRECISION_MILLI ? 1e3L : ((precision)==TSDB_TIME_PRECISION_MICRO ? 1e6L : 1e9L)))
#define T_MEMBER_SIZE(type, member) sizeof(((type *)0)->member)
...
...
@@ -133,19 +138,21 @@ do { \
float
taos_align_get_float
(
const
char
*
pBuf
);
double
taos_align_get_double
(
const
char
*
pBuf
);
#define GET_FLOAT_VAL(x) taos_align_get_float(x)
#define GET_DOUBLE_VAL(x) taos_align_get_double(x)
#define SET_FLOAT_VAL(x, y) { float z = (float)(y); (*(int32_t*) x = *(int32_t*)(&z)); }
#define SET_DOUBLE_VAL(x, y) { double z = (double)(y); (*(int64_t*) x = *(int64_t*)(&z)); }
#define SET_FLOAT_PTR(x, y) { (*(int32_t*) x = *(int32_t*)y); }
#define SET_DOUBLE_PTR(x, y) { (*(int64_t*) x = *(int64_t*)y); }
#define GET_FLOAT_VAL(x) taos_align_get_float(x)
#define GET_DOUBLE_VAL(x) taos_align_get_double(x)
#define SET_FLOAT_VAL(x, y) { float z = (float)(y); (*(int32_t*) x = *(int32_t*)(&z)); }
#define SET_DOUBLE_VAL(x, y) { double z = (double)(y); (*(int64_t*) x = *(int64_t*)(&z)); }
#define SET_TIMESTAMP_VAL(x, y) { int64_t z = (int64_t)(y); (*(int64_t*) x = *(int64_t*)(&z)); }
#define SET_FLOAT_PTR(x, y) { (*(int32_t*) x = *(int32_t*)y); }
#define SET_DOUBLE_PTR(x, y) { (*(int64_t*) x = *(int64_t*)y); }
#else
#define GET_FLOAT_VAL(x) (*(float *)(x))
#define GET_DOUBLE_VAL(x) (*(double *)(x))
#define SET_FLOAT_VAL(x, y) { (*(float *)(x)) = (float)(y); }
#define SET_DOUBLE_VAL(x, y) { (*(double *)(x)) = (double)(y); }
#define SET_FLOAT_PTR(x, y) { (*(float *)(x)) = (*(float *)(y)); }
#define SET_DOUBLE_PTR(x, y) { (*(double *)(x)) = (*(double *)(y)); }
#define GET_FLOAT_VAL(x) (*(float *)(x))
#define GET_DOUBLE_VAL(x) (*(double *)(x))
#define SET_FLOAT_VAL(x, y) { (*(float *)(x)) = (float)(y); }
#define SET_DOUBLE_VAL(x, y) { (*(double *)(x)) = (double)(y); }
#define SET_TIMESTAMP_VAL(x, y) { (*(int64_t *)(x)) = (int64_t)(y); }
#define SET_FLOAT_PTR(x, y) { (*(float *)(x)) = (*(float *)(y)); }
#define SET_DOUBLE_PTR(x, y) { (*(double *)(x)) = (*(double *)(y)); }
#endif
// TODO: check if below is necessary
...
...
src/inc/ttokendef.h
浏览文件 @
e6058244
...
...
@@ -163,61 +163,62 @@
#define TK_SLIMIT 145
#define TK_SOFFSET 146
#define TK_WHERE 147
#define TK_RESET 148
#define TK_QUERY 149
#define TK_SYNCDB 150
#define TK_ADD 151
#define TK_COLUMN 152
#define TK_MODIFY 153
#define TK_TAG 154
#define TK_CHANGE 155
#define TK_SET 156
#define TK_KILL 157
#define TK_CONNECTION 158
#define TK_STREAM 159
#define TK_COLON 160
#define TK_ABORT 161
#define TK_AFTER 162
#define TK_ATTACH 163
#define TK_BEFORE 164
#define TK_BEGIN 165
#define TK_CASCADE 166
#define TK_CLUSTER 167
#define TK_CONFLICT 168
#define TK_COPY 169
#define TK_DEFERRED 170
#define TK_DELIMITERS 171
#define TK_DETACH 172
#define TK_EACH 173
#define TK_END 174
#define TK_EXPLAIN 175
#define TK_FAIL 176
#define TK_FOR 177
#define TK_IGNORE 178
#define TK_IMMEDIATE 179
#define TK_INITIALLY 180
#define TK_INSTEAD 181
#define TK_KEY 182
#define TK_OF 183
#define TK_RAISE 184
#define TK_REPLACE 185
#define TK_RESTRICT 186
#define TK_ROW 187
#define TK_STATEMENT 188
#define TK_TRIGGER 189
#define TK_VIEW 190
#define TK_IPTOKEN 191
#define TK_SEMI 192
#define TK_NONE 193
#define TK_PREV 194
#define TK_LINEAR 195
#define TK_IMPORT 196
#define TK_TBNAME 197
#define TK_JOIN 198
#define TK_INSERT 199
#define TK_INTO 200
#define TK_VALUES 201
#define TK_FILE 202
#define TK_TODAY 148
#define TK_RESET 149
#define TK_QUERY 150
#define TK_SYNCDB 151
#define TK_ADD 152
#define TK_COLUMN 153
#define TK_MODIFY 154
#define TK_TAG 155
#define TK_CHANGE 156
#define TK_SET 157
#define TK_KILL 158
#define TK_CONNECTION 159
#define TK_STREAM 160
#define TK_COLON 161
#define TK_ABORT 162
#define TK_AFTER 163
#define TK_ATTACH 164
#define TK_BEFORE 165
#define TK_BEGIN 166
#define TK_CASCADE 167
#define TK_CLUSTER 168
#define TK_CONFLICT 169
#define TK_COPY 170
#define TK_DEFERRED 171
#define TK_DELIMITERS 172
#define TK_DETACH 173
#define TK_EACH 174
#define TK_END 175
#define TK_EXPLAIN 176
#define TK_FAIL 177
#define TK_FOR 178
#define TK_IGNORE 179
#define TK_IMMEDIATE 180
#define TK_INITIALLY 181
#define TK_INSTEAD 182
#define TK_KEY 183
#define TK_OF 184
#define TK_RAISE 185
#define TK_REPLACE 186
#define TK_RESTRICT 187
#define TK_ROW 188
#define TK_STATEMENT 189
#define TK_TRIGGER 190
#define TK_VIEW 191
#define TK_IPTOKEN 192
#define TK_SEMI 193
#define TK_NONE 194
#define TK_PREV 195
#define TK_LINEAR 196
#define TK_IMPORT 197
#define TK_TBNAME 198
#define TK_JOIN 199
#define TK_INSERT 200
#define TK_INTO 201
#define TK_VALUES 202
#define TK_FILE 203
#define TK_SPACE 300
...
...
src/inc/ttype.h
浏览文件 @
e6058244
...
...
@@ -107,7 +107,7 @@ typedef struct {
case TSDB_DATA_TYPE_USMALLINT: \
(_v) = (_finalType)GET_UINT16_VAL(_data); \
break; \
case TSDB_DATA_TYPE_TIMESTAMP:\
case TSDB_DATA_TYPE_TIMESTAMP:
\
case TSDB_DATA_TYPE_BIGINT: \
(_v) = (_finalType)(GET_INT64_VAL(_data)); \
break; \
...
...
@@ -145,6 +145,7 @@ typedef struct {
case TSDB_DATA_TYPE_USMALLINT: \
*(uint16_t *)(_v) = (uint16_t)(_data); \
break; \
case TSDB_DATA_TYPE_TIMESTAMP: \
case TSDB_DATA_TYPE_BIGINT: \
*(int64_t *)(_v) = (int64_t)(_data); \
break; \
...
...
@@ -181,6 +182,7 @@ typedef struct {
case TSDB_DATA_TYPE_USMALLINT: \
snprintf(_output, (int32_t)(_outputBytes), "%d", *(uint16_t *)(_input)); \
break; \
case TSDB_DATA_TYPE_TIMESTAMP: \
case TSDB_DATA_TYPE_BIGINT: \
snprintf(_output, (int32_t)(_outputBytes), "%" PRId64, *(int64_t *)(_input)); \
break; \
...
...
@@ -205,6 +207,7 @@ typedef struct {
#define IS_SIGNED_NUMERIC_TYPE(_t) ((_t) >= TSDB_DATA_TYPE_TINYINT && (_t) <= TSDB_DATA_TYPE_BIGINT)
#define IS_UNSIGNED_NUMERIC_TYPE(_t) ((_t) >= TSDB_DATA_TYPE_UTINYINT && (_t) <= TSDB_DATA_TYPE_UBIGINT)
#define IS_FLOAT_TYPE(_t) ((_t) == TSDB_DATA_TYPE_FLOAT || (_t) == TSDB_DATA_TYPE_DOUBLE)
#define IS_TIMESTAMP_TYPE(_t) ((_t) == TSDB_DATA_TYPE_TIMESTAMP)
#define IS_NUMERIC_TYPE(_t) ((IS_SIGNED_NUMERIC_TYPE(_t)) || (IS_UNSIGNED_NUMERIC_TYPE(_t)) || (IS_FLOAT_TYPE(_t)))
...
...
@@ -289,6 +292,7 @@ void* getDataMax(int32_t type);
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_TIMESTAMP_NULL(v) (*(uint64_t *)(v) = TSDB_DATA_TIMESTAMP_NULL)
#ifdef __cplusplus
}
...
...
src/os/inc/osTime.h
浏览文件 @
e6058244
...
...
@@ -77,6 +77,15 @@ static FORCE_INLINE int64_t taosGetTimestamp(int32_t precision) {
}
}
//@return timestamp of today at 00:00:00 in seconds
static
FORCE_INLINE
int64_t
taosGetTimestampToday
()
{
time_t
t
=
time
(
NULL
);
struct
tm
*
tm
=
localtime
(
&
t
);
tm
->
tm_hour
=
0
;
tm
->
tm_min
=
0
;
tm
->
tm_sec
=
0
;
return
(
int64_t
)
mktime
(
tm
);
}
typedef
struct
SInterval
{
int32_t
tz
;
// query client timezone
...
...
src/os/src/detail/osTime.c
浏览文件 @
e6058244
...
...
@@ -83,12 +83,12 @@ void deltaToUtcInitOnce() {
static
int64_t
parseFraction
(
char
*
str
,
char
**
end
,
int32_t
timePrec
);
static
int32_t
parseTimeWithTz
(
char
*
timestr
,
int64_t
*
time
,
int32_t
timePrec
,
char
delim
);
static
int32_t
parseLocaltime
(
char
*
timestr
,
int64_t
*
time
,
int32_t
timePrec
);
static
int32_t
parseLocaltimeWithDst
(
char
*
timestr
,
int64_t
*
time
,
int32_t
timePrec
);
static
int32_t
parseLocaltime
(
char
*
timestr
,
int64_t
*
time
,
int32_t
timePrec
,
char
delim
);
static
int32_t
parseLocaltimeWithDst
(
char
*
timestr
,
int64_t
*
time
,
int32_t
timePrec
,
char
delim
);
static
char
*
forwardToTimeStringEnd
(
char
*
str
);
static
bool
checkTzPresent
(
char
*
str
,
int32_t
len
);
static
int32_t
(
*
parseLocaltimeFp
[])
(
char
*
timestr
,
int64_t
*
time
,
int32_t
timePrec
)
=
{
static
int32_t
(
*
parseLocaltimeFp
[])
(
char
*
timestr
,
int64_t
*
time
,
int32_t
timePrec
,
char
delim
)
=
{
parseLocaltime
,
parseLocaltimeWithDst
};
...
...
@@ -98,11 +98,17 @@ int32_t taosGetTimestampSec() { return (int32_t)time(NULL); }
int32_t
taosParseTime
(
char
*
timestr
,
int64_t
*
time
,
int32_t
len
,
int32_t
timePrec
,
int8_t
day_light
)
{
/* parse datatime string in with tz */
if
(
strnchr
(
timestr
,
'T'
,
len
,
false
)
!=
NULL
)
{
return
parseTimeWithTz
(
timestr
,
time
,
timePrec
,
'T'
);
}
else
if
(
checkTzPresent
(
timestr
,
len
))
{
return
parseTimeWithTz
(
timestr
,
time
,
timePrec
,
0
);
if
(
checkTzPresent
(
timestr
,
len
))
{
return
parseTimeWithTz
(
timestr
,
time
,
timePrec
,
'T'
);
}
else
{
return
(
*
parseLocaltimeFp
[
day_light
])(
timestr
,
time
,
timePrec
,
'T'
);
}
}
else
{
return
(
*
parseLocaltimeFp
[
day_light
])(
timestr
,
time
,
timePrec
);
if
(
checkTzPresent
(
timestr
,
len
))
{
return
parseTimeWithTz
(
timestr
,
time
,
timePrec
,
0
);
}
else
{
return
(
*
parseLocaltimeFp
[
day_light
])(
timestr
,
time
,
timePrec
,
0
);
}
}
}
...
...
@@ -316,11 +322,19 @@ int32_t parseTimeWithTz(char* timestr, int64_t* time, int32_t timePrec, char del
return
0
;
}
int32_t
parseLocaltime
(
char
*
timestr
,
int64_t
*
time
,
int32_t
timePrec
)
{
int32_t
parseLocaltime
(
char
*
timestr
,
int64_t
*
time
,
int32_t
timePrec
,
char
delim
)
{
*
time
=
0
;
struct
tm
tm
=
{
0
};
char
*
str
=
strptime
(
timestr
,
"%Y-%m-%d %H:%M:%S"
,
&
tm
);
char
*
str
;
if
(
delim
==
'T'
)
{
str
=
strptime
(
timestr
,
"%Y-%m-%dT%H:%M:%S"
,
&
tm
);
}
else
if
(
delim
==
0
)
{
str
=
strptime
(
timestr
,
"%Y-%m-%d %H:%M:%S"
,
&
tm
);
}
else
{
str
=
NULL
;
}
if
(
str
==
NULL
)
{
return
-
1
;
}
...
...
@@ -332,7 +346,7 @@ int32_t parseLocaltime(char* timestr, int64_t* time, int32_t timePrec) {
#endif
int64_t
seconds
=
user_mktime64
(
tm
.
tm_year
+
1900
,
tm
.
tm_mon
+
1
,
tm
.
tm_mday
,
tm
.
tm_hour
,
tm
.
tm_min
,
tm
.
tm_sec
,
timezone
);
int64_t
fraction
=
0
;
if
(
*
str
==
'.'
)
{
...
...
@@ -349,19 +363,27 @@ int32_t parseLocaltime(char* timestr, int64_t* time, int32_t timePrec) {
return
0
;
}
int32_t
parseLocaltimeWithDst
(
char
*
timestr
,
int64_t
*
time
,
int32_t
timePrec
)
{
int32_t
parseLocaltimeWithDst
(
char
*
timestr
,
int64_t
*
time
,
int32_t
timePrec
,
char
delim
)
{
*
time
=
0
;
struct
tm
tm
=
{
0
};
tm
.
tm_isdst
=
-
1
;
char
*
str
=
strptime
(
timestr
,
"%Y-%m-%d %H:%M:%S"
,
&
tm
);
char
*
str
;
if
(
delim
==
'T'
)
{
str
=
strptime
(
timestr
,
"%Y-%m-%dT%H:%M:%S"
,
&
tm
);
}
else
if
(
delim
==
0
)
{
str
=
strptime
(
timestr
,
"%Y-%m-%d %H:%M:%S"
,
&
tm
);
}
else
{
str
=
NULL
;
}
if
(
str
==
NULL
)
{
return
-
1
;
}
/* mktime will be affected by TZ, set by using taos_options */
int64_t
seconds
=
mktime
(
&
tm
);
int64_t
fraction
=
0
;
if
(
*
str
==
'.'
)
{
...
...
src/query/inc/sql.y
浏览文件 @
e6058244
...
...
@@ -762,6 +762,7 @@ expr(A) ::= MINUS(X) FLOAT(Y). { X.n += Y.n; X.type = TK_FLOAT; A = tSqlExprCr
expr(A) ::= PLUS(X) FLOAT(Y). { X.n += Y.n; X.type = TK_FLOAT; A = tSqlExprCreateIdValue(pInfo, &X, TK_FLOAT);}
expr(A) ::= STRING(X). { A = tSqlExprCreateIdValue(pInfo, &X, TK_STRING);}
expr(A) ::= NOW(X). { A = tSqlExprCreateIdValue(pInfo, &X, TK_NOW); }
expr(A) ::= TODAY(X). { A = tSqlExprCreateIdValue(pInfo, &X, TK_TODAY); }
expr(A) ::= VARIABLE(X). { A = tSqlExprCreateIdValue(pInfo, &X, TK_VARIABLE);}
expr(A) ::= PLUS(X) VARIABLE(Y). { X.n += Y.n; X.type = TK_VARIABLE; A = tSqlExprCreateIdValue(pInfo, &X, TK_VARIABLE);}
expr(A) ::= MINUS(X) VARIABLE(Y). { X.n += Y.n; X.type = TK_VARIABLE; A = tSqlExprCreateIdValue(pInfo, &X, TK_VARIABLE);}
...
...
@@ -986,4 +987,4 @@ cmd ::= KILL QUERY INTEGER(X) COLON(Z) INTEGER(Y). {X.n += (Z.n + Y.n); s
%fallback ID ABORT AFTER ASC ATTACH BEFORE BEGIN CASCADE CLUSTER CONFLICT COPY DATABASE DEFERRED
DELIMITERS DESC DETACH EACH END EXPLAIN FAIL FOR GLOB IGNORE IMMEDIATE INITIALLY INSTEAD
LIKE MATCH NMATCH KEY OF OFFSET RAISE REPLACE RESTRICT ROW STATEMENT TRIGGER VIEW ALL
NOW IPTOKEN SEMI NONE PREV LINEAR IMPORT TBNAME JOIN STABLE NULL INSERT INTO VALUES FILE.
NOW
TODAY
IPTOKEN SEMI NONE PREV LINEAR IMPORT TBNAME JOIN STABLE NULL INSERT INTO VALUES FILE.
src/query/src/qSqlParser.c
浏览文件 @
e6058244
...
...
@@ -33,6 +33,7 @@ SSqlInfo qSqlParse(const char *pStr) {
sqlInfo
.
funcs
=
taosArrayInit
(
4
,
sizeof
(
SStrToken
));
int32_t
i
=
0
;
bool
inWhere
=
false
;
while
(
1
)
{
SStrToken
t0
=
{
0
};
...
...
@@ -60,7 +61,7 @@ SSqlInfo qSqlParse(const char *pStr) {
sqlInfo
.
valid
=
false
;
goto
abort_parse
;
}
case
TK_HEX
:
case
TK_OCT
:
case
TK_BIN
:{
...
...
@@ -68,6 +69,25 @@ SSqlInfo qSqlParse(const char *pStr) {
sqlInfo
.
valid
=
false
;
goto
abort_parse
;
}
case
TK_WHERE
:{
inWhere
=
true
;
Parse
(
pParser
,
t0
.
type
,
t0
,
&
sqlInfo
);
if
(
sqlInfo
.
valid
==
false
)
{
goto
abort_parse
;
}
break
;
}
case
TK_NOW
:
case
TK_TODAY
:
{
//for now(),today() function used in select/where clause
if
(
pStr
[
i
]
==
'('
&&
pStr
[
i
+
1
]
==
')'
)
{
if
(
!
inWhere
)
{
t0
.
type
=
TK_ID
;
}
else
{
i
+=
2
;
}
}
}
default:
Parse
(
pParser
,
t0
.
type
,
t0
,
&
sqlInfo
);
if
(
sqlInfo
.
valid
==
false
)
{
...
...
@@ -155,9 +175,13 @@ tSqlExpr *tSqlExprCreateIdValue(SSqlInfo* pInfo, SStrToken *pToken, int32_t optr
}
pSqlExpr
->
tokenId
=
optrType
;
pSqlExpr
->
type
=
SQL_NODE_VALUE
;
}
else
if
(
optrType
==
TK_NOW
)
{
}
else
if
(
optrType
==
TK_NOW
||
optrType
==
TK_TODAY
)
{
// use nanosecond by default TODO set value after getting database precision
pSqlExpr
->
value
.
i64
=
taosGetTimestamp
(
TSDB_TIME_PRECISION_NANO
);
if
(
optrType
==
TK_NOW
)
{
pSqlExpr
->
value
.
i64
=
taosGetTimestamp
(
TSDB_TIME_PRECISION_NANO
);
}
else
{
pSqlExpr
->
value
.
i64
=
taosGetTimestampToday
()
*
1000000000
;
}
pSqlExpr
->
value
.
nType
=
TSDB_DATA_TYPE_BIGINT
;
pSqlExpr
->
tokenId
=
TK_TIMESTAMP
;
// TK_TIMESTAMP used to denote the time value is in microsecond
pSqlExpr
->
type
=
SQL_NODE_VALUE
;
...
...
@@ -176,7 +200,7 @@ tSqlExpr *tSqlExprCreateIdValue(SSqlInfo* pInfo, SStrToken *pToken, int32_t optr
pSqlExpr
->
flags
|=
1
<<
EXPR_FLAG_NS_TIMESTAMP
;
pSqlExpr
->
flags
|=
1
<<
EXPR_FLAG_TIMESTAMP_VAR
;
pSqlExpr
->
value
.
nType
=
TSDB_DATA_TYPE_
BIGINT
;
pSqlExpr
->
value
.
nType
=
TSDB_DATA_TYPE_
TIMESTAMP
;
pSqlExpr
->
tokenId
=
TK_TIMESTAMP
;
pSqlExpr
->
type
=
SQL_NODE_VALUE
;
}
else
if
(
optrType
==
TK_AS
)
{
...
...
@@ -184,7 +208,7 @@ tSqlExpr *tSqlExprCreateIdValue(SSqlInfo* pInfo, SStrToken *pToken, int32_t optr
if
(
pToken
!=
NULL
)
{
pSqlExpr
->
dataType
=
*
(
TAOS_FIELD
*
)
pToken
;
}
pSqlExpr
->
tokenId
=
optrType
;
pSqlExpr
->
type
=
SQL_NODE_DATA_TYPE
;
}
else
{
...
...
src/query/src/sql.c
浏览文件 @
e6058244
...
...
@@ -100,30 +100,30 @@
#endif
/************* Begin control #defines *****************************************/
#define YYCODETYPE unsigned short int
#define YYNOCODE 2
89
#define YYNOCODE 2
90
#define YYACTIONTYPE unsigned short int
#define ParseTOKENTYPE SStrToken
typedef
union
{
int
yyinit
;
ParseTOKENTYPE
yy0
;
SR
angeVal
yy22
;
S
CreatedTableInfo
yy34
;
tVariant
yy54
;
int64_t
yy55
;
S
IntervalVal
yy102
;
SS
essionWindowVal
yy115
;
S
SqlNode
*
yy16
0
;
SCreate
AcctInfo
yy205
;
S
Array
*
yy209
;
SWindowStateVal
yy290
;
int
yy332
;
TAOS_FIELD
yy369
;
int
32_t
yy380
;
SCreateTableSql
*
yy4
04
;
SRelationInfo
*
yy53
0
;
SLimitVal
yy534
;
SCreateDbInfo
yy560
;
tSqlExpr
*
yy574
;
SR
elationInfo
*
yy84
;
S
Array
*
yy161
;
SSessionWindowVal
yy219
;
TAOS_FIELD
yy223
;
S
CreateAcctInfo
yy231
;
SS
qlNode
*
yy276
;
S
IntervalVal
yy30
0
;
SCreate
DbInfo
yy302
;
S
CreatedTableInfo
yy356
;
int64_t
yy369
;
SLimitVal
yy394
;
SRangeVal
yy420
;
int
yy452
;
SCreateTableSql
*
yy4
62
;
int32_t
yy52
0
;
tVariant
yy526
;
tSqlExpr
*
yy546
;
SWindowStateVal
yy548
;
}
YYMINORTYPE
;
#ifndef YYSTACKDEPTH
#define YYSTACKDEPTH 100
...
...
@@ -140,16 +140,17 @@ typedef union {
#define ParseCTX_STORE
#define YYFALLBACK 1
#define YYNSTATE 398
#define YYNRULE 319
#define YYNTOKEN 203
#define YYNRULE 320
#define YYNRULE_WITH_ACTION 320
#define YYNTOKEN 204
#define YY_MAX_SHIFT 397
#define YY_MIN_SHIFTREDUCE 62
4
#define YY_MAX_SHIFTREDUCE 94
2
#define YY_ERROR_ACTION 94
3
#define YY_ACCEPT_ACTION 94
4
#define YY_NO_ACTION 94
5
#define YY_MIN_REDUCE 94
6
#define YY_MAX_REDUCE 126
4
#define YY_MIN_SHIFTREDUCE 62
5
#define YY_MAX_SHIFTREDUCE 94
4
#define YY_ERROR_ACTION 94
5
#define YY_ACCEPT_ACTION 94
6
#define YY_NO_ACTION 94
7
#define YY_MIN_REDUCE 94
8
#define YY_MAX_REDUCE 126
7
/************* End control #defines *******************************************/
#define YY_NLOOKAHEAD ((int)(sizeof(yy_lookahead)/sizeof(yy_lookahead[0])))
...
...
@@ -216,318 +217,318 @@ typedef union {
** yy_default[] Default action for each state.
**
*********** Begin parsing tables **********************************************/
#define YY_ACTTAB_COUNT (86
4
)
#define YY_ACTTAB_COUNT (86
5
)
static
const
YYACTIONTYPE
yy_action
[]
=
{
/* 0 */
105
,
67
5
,
1095
,
1129
,
944
,
397
,
262
,
759
,
675
,
676
,
/* 10 */
118
1
,
711
,
1182
,
314
,
37
,
38
,
676
,
41
,
42
,
396
,
/* 20 */
243
,
265
,
31
,
30
,
29
,
108
7
,
163
,
40
,
347
,
45
,
/* 30 */
43
,
46
,
44
,
108
4
,
1085
,
55
,
1088
,
36
,
35
,
372
,
/* 0 */
105
,
67
6
,
1097
,
1131
,
946
,
397
,
262
,
760
,
676
,
677
,
/* 10 */
118
3
,
712
,
1184
,
314
,
37
,
38
,
677
,
41
,
42
,
396
,
/* 20 */
243
,
265
,
31
,
30
,
29
,
108
9
,
163
,
40
,
347
,
45
,
/* 30 */
43
,
46
,
44
,
108
6
,
1087
,
55
,
1090
,
36
,
35
,
372
,
/* 40 */
371
,
34
,
33
,
32
,
37
,
38
,
252
,
41
,
42
,
258
,
/* 50 */
85
,
265
,
31
,
30
,
29
,
24
,
112
0
,
40
,
347
,
45
,
/* 60 */
43
,
46
,
44
,
318
,
100
,
12
38
,
99
,
36
,
35
,
218
,
/* 70 */
214
,
34
,
33
,
32
,
288
,
112
6
,
131
,
125
,
136
,
1238
,
/* 80 */
12
38
,
1240
,
1241
,
135
,
1086
,
141
,
144
,
134
,
37
,
38
,
/* 50 */
85
,
265
,
31
,
30
,
29
,
24
,
112
2
,
40
,
347
,
45
,
/* 60 */
43
,
46
,
44
,
318
,
100
,
12
41
,
99
,
36
,
35
,
218
,
/* 70 */
214
,
34
,
33
,
32
,
288
,
112
8
,
131
,
125
,
136
,
1241
,
/* 80 */
12
41
,
1243
,
1244
,
135
,
1088
,
141
,
144
,
134
,
37
,
38
,
/* 90 */
88
,
41
,
42
,
51
,
138
,
265
,
31
,
30
,
29
,
295
,
/* 100 */
294
,
40
,
347
,
45
,
43
,
46
,
44
,
343
,
34
,
33
,
/* 110 */
32
,
36
,
35
,
343
,
216
,
34
,
33
,
32
,
37
,
38
,
/* 120 */
58
,
41
,
42
,
59
,
12
38
,
265
,
31
,
30
,
29
,
275
,
/* 130 */
67
5
,
40
,
347
,
45
,
43
,
46
,
44
,
879
,
676
,
882
,
/* 140 */
185
,
36
,
35
,
67
5
,
217
,
34
,
33
,
32
,
13
,
37
,
/* 150 */
39
,
67
6
,
41
,
42
,
1238
,
382
,
265
,
31
,
30
,
29
,
/* 160 */
280
,
873
,
40
,
347
,
45
,
43
,
46
,
44
,
245
,
284
,
/* 170 */
283
,
1104
,
36
,
35
,
59
,
1102
,
34
,
33
,
32
,
209
,
/* 180 */
207
,
205
,
107
,
86
,
390
,
103
2
,
204
,
151
,
150
,
149
,
/* 190 */
148
,
62
5
,
626
,
627
,
628
,
629
,
630
,
631
,
632
,
633
,
/* 200 */
63
4
,
635
,
636
,
637
,
638
,
160
,
250
,
244
,
38
,
1260
,
/* 210 */
41
,
42
,
1252
,
1105
,
265
,
31
,
30
,
29
,
289
,
255
,
/* 220 */
40
,
347
,
45
,
43
,
46
,
44
,
110
2
,
395
,
393
,
652
,
/* 230 */
36
,
35
,
60
,
25
7
,
34
,
33
,
32
,
223
,
41
,
42
,
/* 240 */
1105
,
178
,
265
,
31
,
30
,
29
,
59
,
1238
,
40
,
347
,
/* 250 */
45
,
43
,
46
,
44
,
159
,
157
,
156
,
886
,
36
,
35
,
/* 120 */
58
,
41
,
42
,
59
,
12
41
,
265
,
31
,
30
,
29
,
275
,
/* 130 */
67
6
,
40
,
347
,
45
,
43
,
46
,
44
,
880
,
677
,
883
,
/* 140 */
185
,
36
,
35
,
67
6
,
217
,
34
,
33
,
32
,
13
,
37
,
/* 150 */
39
,
67
7
,
41
,
42
,
1241
,
382
,
265
,
31
,
30
,
29
,
/* 160 */
1106
,
874
,
40
,
347
,
45
,
43
,
46
,
44
,
245
,
395
,
/* 170 */
393
,
653
,
36
,
35
,
59
,
1104
,
34
,
33
,
32
,
209
,
/* 180 */
207
,
205
,
107
,
86
,
390
,
103
4
,
204
,
151
,
150
,
149
,
/* 190 */
148
,
62
6
,
627
,
628
,
629
,
630
,
631
,
632
,
633
,
634
,
/* 200 */
63
5
,
636
,
637
,
638
,
639
,
160
,
250
,
244
,
38
,
1263
,
/* 210 */
41
,
42
,
345
,
1107
,
265
,
31
,
30
,
29
,
280
,
255
,
/* 220 */
40
,
347
,
45
,
43
,
46
,
44
,
110
4
,
284
,
283
,
317
,
/* 230 */
36
,
35
,
1
,
18
7
,
34
,
33
,
32
,
223
,
41
,
42
,
/* 240 */
268
,
178
,
265
,
31
,
30
,
29
,
1255
,
1241
,
40
,
347
,
/* 250 */
45
,
43
,
46
,
44
,
879
,
296
,
882
,
888
,
36
,
35
,
/* 260 */
304
,
94
,
34
,
33
,
32
,
67
,
341
,
389
,
388
,
340
,
/* 270 */
339
,
338
,
387
,
337
,
336
,
335
,
386
,
334
,
385
,
384
,
/* 280 */
25
,
1063
,
1051
,
1052
,
1053
,
1054
,
1055
,
1056
,
1057
,
1058
,
/* 290 */
10
59
,
1060
,
1061
,
1062
,
1064
,
1065
,
802
,
222
,
1101
,
237
,
/* 300 */
8
88
,
68
,
296
,
877
,
230
,
880
,
878
,
883
,
881
,
108
,
/* 310 */
147
,
146
,
145
,
229
,
224
,
237
,
888
,
355
,
94
,
877
,
/* 320 */
2
59
,
880
,
275
,
883
,
1238
,
10
,
59
,
1105
,
261
,
45
,
/* 330 */
43
,
46
,
44
,
186
,
225
,
241
,
242
,
36
,
35
,
349
,
/* 340 */
1230
,
34
,
33
,
32
,
1238
,
1089
,
5
,
62
,
189
,
297
,
/* 350 */
1
238
,
241
,
242
,
188
,
114
,
119
,
110
,
118
,
68
,
787
,
/* 360 */
1229
,
268
,
784
,
1228
,
785
,
239
,
786
,
274
,
1192
,
240
,
/* 370 */
1
238
,
256
,
330
,
1238
,
67
,
1238
,
389
,
388
,
1102
,
1238
,
/* 380 */
287
,
387
,
84
,
1120
,
47
,
386
,
821
,
385
,
384
,
238
,
/* 390 */
824
,
266
,
218
,
346
,
270
,
271
,
1071
,
103
,
1069
,
1070
,
/* 400 */
47
,
246
,
1238
,
1072
,
1241
,
833
,
834
,
1073
,
59
,
1074
,
/* 410 */
107
5
,
59
,
89
,
853
,
59
,
345
,
59
,
59
,
300
,
301
,
/* 420 */
805
,
889
,
884
,
885
,
36
,
35
,
887
,
59
,
34
,
33
,
/* 430 */
32
,
59
,
264
,
220
,
1179
,
830
,
1180
,
889
,
884
,
885
,
/* 440 */
2
69
,
59
,
267
,
1238
,
358
,
357
,
276
,
221
,
273
,
165
,
/* 450 */
36
7
,
366
,
1120
,
359
,
6
,
218
,
360
,
1238
,
1191
,
361
,
/* 460 */
110
2
,
362
,
368
,
1102
,
352
,
1238
,
1102
,
1241
,
1102
,
1102
,
/* 470 */
247
,
275
,
369
,
852
,
226
,
219
,
370
,
227
,
228
,
1102
,
/* 480 */
78
8
,
272
,
348
,
1102
,
1238
,
1238
,
374
,
1238
,
1238
,
275
,
/* 490 */
994
,
232
,
233
,
1102
,
234
,
91
,
231
,
199
,
133
,
215
,
/* 500 */
1103
,
1238
,
1238
,
76
,
1238
,
248
,
1238
,
1004
,
809
,
1238
,
/* 510 */
382
,
102
,
92
,
101
,
199
,
995
,
1
,
187
,
3
,
200
,
/* 520 */
2
99
,
298
,
199
,
840
,
841
,
345
,
769
,
79
,
263
,
32
2
,
/* 530 */
771
,
324
,
770
,
54
,
351
,
291
,
917
,
71
,
48
,
890
,
/* 540 */
60
,
674
,
317
,
60
,
71
,
106
,
71
,
15
,
77
,
14
,
/* 550 */
9
,
83
,
291
,
9
,
285
,
9
,
350
,
124
,
17
,
123
,
/* 560 */
16
,
794
,
792
,
795
,
793
,
19
,
325
,
18
,
876
,
253
,
/* 570 */
80
,
893
,
364
,
363
,
130
,
21
,
129
,
20
,
143
,
142
,
/* 580 */
1188
,
1187
,
254
,
758
,
181
,
373
,
26
,
161
,
162
,
1100
,
/* 590 */
11
28
,
1139
,
1171
,
1136
,
1137
,
1141
,
1121
,
292
,
164
,
169
,
/* 600 */
11
70
,
310
,
1169
,
1168
,
180
,
1096
,
182
,
158
,
1094
,
183
,
/* 610 */
303
,
820
,
184
,
171
,
1009
,
327
,
328
,
329
,
24
9
,
332
,
/* 620 */
333
,
172
,
69
,
212
,
65
,
344
,
1003
,
305
,
1118
,
356
,
/* 630 */
170
,
307
,
1259
,
121
,
1258
,
1255
,
190
,
365
,
1251
,
127
,
/* 640 */
1250
,
81
,
78
,
1247
,
319
,
191
,
1029
,
28
,
315
,
313
,
/* 650 */
311
,
66
,
309
,
306
,
302
,
61
,
70
,
176
,
213
,
173
,
/* 660 */
991
,
137
,
989
,
139
,
140
,
987
,
986
,
277
,
202
,
203
,
/* 670 */
87
,
983
,
982
,
981
,
980
,
979
,
978
,
977
,
206
,
208
,
/* 680 */
969
,
210
,
966
,
27
,
211
,
962
,
331
,
383
,
290
,
1098
,
/* 690 */
132
,
90
,
95
,
375
,
308
,
376
,
377
,
378
,
379
,
380
,
/* 700 */
381
,
82
,
260
,
391
,
942
,
278
,
326
,
279
,
941
,
281
,
/* 710 */
282
,
235
,
940
,
923
,
922
,
286
,
115
,
1008
,
1007
,
236
,
/* 720 */
321
,
116
,
291
,
11
,
93
,
797
,
293
,
52
,
96
,
829
,
/* 730 */
74
,
985
,
827
,
984
,
823
,
193
,
1030
,
194
,
152
,
192
,
/* 740 */
1
53
,
196
,
195
,
197
,
198
,
976
,
1067
,
320
,
154
,
975
,
/* 750 */
4
,
968
,
179
,
177
,
53
,
174
,
175
,
1031
,
155
,
967
,
/* 760 */
2
,
826
,
822
,
75
,
168
,
831
,
1077
,
166
,
251
,
842
,
/* 770 */
167
,
63
,
836
,
97
,
22
,
838
,
98
,
312
,
350
,
316
,
/* 780 */
64
,
12
,
23
,
104
,
49
,
323
,
50
,
107
,
109
,
112
,
/* 790 */
689
,
724
,
56
,
722
,
111
,
721
,
720
,
718
,
717
,
57
,
/* 800 */
113
,
71
6
,
713
,
679
,
117
,
342
,
7
,
914
,
912
,
915
,
/* 810 */
892
,
891
,
913
,
8
,
353
,
894
,
354
,
60
,
72
,
120
,
/* 820 */
761
,
791
,
122
,
73
,
760
,
126
,
128
,
757
,
705
,
703
,
/* 830 */
695
,
701
,
697
,
699
,
790
,
693
,
691
,
727
,
726
,
725
,
/* 840 */
72
3
,
719
,
715
,
714
,
201
,
677
,
946
,
642
,
651
,
649
,
/* 850 */
945
,
392
,
945
,
945
,
945
,
945
,
945
,
945
,
945
,
945
,
/* 860 */
94
5
,
945
,
945
,
394
,
/* 280 */
25
,
59
,
1065
,
1053
,
1054
,
1055
,
1056
,
1057
,
1058
,
1059
,
/* 290 */
10
60
,
1061
,
1062
,
1063
,
1064
,
1066
,
1067
,
222
,
224
,
237
,
/* 300 */
8
90
,
68
,
297
,
878
,
230
,
881
,
352
,
884
,
1241
,
1122
,
/* 310 */
147
,
146
,
145
,
229
,
181
,
237
,
890
,
355
,
94
,
878
,
/* 320 */
2
69
,
881
,
267
,
884
,
358
,
357
,
256
,
246
,
59
,
45
,
/* 330 */
43
,
46
,
44
,
1104
,
225
,
241
,
242
,
36
,
35
,
349
,
/* 340 */
261
,
34
,
33
,
32
,
1241
,
59
,
5
,
62
,
189
,
1194
,
/* 350 */
1
122
,
241
,
242
,
188
,
114
,
119
,
110
,
118
,
68
,
788
,
/* 360 */
274
,
1233
,
785
,
257
,
786
,
108
,
787
,
266
,
247
,
1232
,
/* 370 */
1
107
,
1241
,
330
,
359
,
889
,
67
,
1193
,
389
,
388
,
1241
,
/* 380 */
1104
,
287
,
387
,
84
,
47
,
285
,
386
,
822
,
385
,
384
,
/* 390 */
238
,
825
,
1231
,
346
,
270
,
271
,
1073
,
1103
,
1071
,
1072
,
/* 400 */
47
,
1091
,
1241
,
1074
,
218
,
59
,
59
,
1075
,
59
,
1076
,
/* 410 */
107
7
,
59
,
161
,
895
,
1241
,
345
,
1244
,
239
,
79
,
300
,
/* 420 */
301
,
891
,
885
,
887
,
36
,
35
,
59
,
1241
,
34
,
33
,
/* 430 */
32
,
218
,
264
,
159
,
157
,
156
,
133
,
891
,
885
,
887
,
/* 440 */
2
76
,
1241
,
273
,
1244
,
367
,
366
,
886
,
59
,
382
,
59
,
/* 450 */
36
0
,
361
,
806
,
362
,
6
,
240
,
368
,
1104
,
1104
,
220
,
/* 460 */
110
4
,
80
,
886
,
1104
,
221
,
1241
,
226
,
219
,
275
,
1241
,
/* 470 */
854
,
369
,
227
,
228
,
1241
,
232
,
1241
,
1241
,
1104
,
186
,
/* 480 */
78
9
,
272
,
1241
,
1241
,
91
,
1241
,
233
,
92
,
234
,
275
,
/* 490 */
259
,
275
,
370
,
231
,
374
,
215
,
1241
,
1107
,
1241
,
1104
,
/* 500 */
348
,
1104
,
1105
,
1241
,
996
,
1241
,
248
,
834
,
835
,
1006
,
/* 510 */
1181
,
199
,
1182
,
102
,
997
,
101
,
199
,
103
,
3
,
200
,
/* 520 */
2
89
,
199
,
803
,
831
,
291
,
299
,
298
,
291
,
841
,
84
2
,
/* 530 */
853
,
76
,
89
,
770
,
60
,
322
,
772
,
165
,
324
,
771
,
/* 540 */
810
,
54
,
71
,
48
,
919
,
892
,
351
,
60
,
263
,
60
,
/* 550 */
71
,
10
,
106
,
71
,
15
,
675
,
14
,
83
,
9
,
9
,
/* 560 */
124
,
17
,
123
,
16
,
795
,
793
,
796
,
794
,
350
,
9
,
/* 570 */
364
,
363
,
253
,
19
,
325
,
18
,
77
,
130
,
21
,
129
,
/* 580 */
20
,
143
,
142
,
1190
,
1189
,
254
,
373
,
162
,
877
,
759
,
/* 590 */
11
02
,
1130
,
26
,
1173
,
1141
,
1138
,
1172
,
1139
,
1123
,
292
,
/* 600 */
11
43
,
164
,
169
,
1098
,
310
,
1171
,
1170
,
180
,
182
,
1096
,
/* 610 */
183
,
184
,
1011
,
158
,
821
,
327
,
328
,
303
,
32
9
,
332
,
/* 620 */
333
,
69
,
212
,
65
,
344
,
1005
,
249
,
170
,
356
,
1262
,
/* 630 */
305
,
307
,
121
,
1261
,
1258
,
190
,
81
,
365
,
1254
,
1120
,
/* 640 */
127
,
1253
,
78
,
1250
,
191
,
1031
,
66
,
319
,
171
,
61
,
/* 650 */
70
,
213
,
28
,
993
,
315
,
173
,
137
,
309
,
313
,
991
,
/* 660 */
139
,
311
,
140
,
172
,
306
,
989
,
988
,
277
,
202
,
203
,
/* 670 */
985
,
984
,
983
,
982
,
302
,
981
,
980
,
27
,
979
,
206
,
/* 680 */
208
,
971
,
210
,
968
,
211
,
964
,
87
,
331
,
290
,
1100
,
/* 690 */
90
,
95
,
308
,
383
,
376
,
132
,
375
,
377
,
378
,
379
,
/* 700 */
82
,
380
,
381
,
260
,
391
,
944
,
326
,
279
,
943
,
282
,
/* 710 */
942
,
278
,
235
,
236
,
281
,
925
,
924
,
115
,
1010
,
1009
,
/* 720 */
116
,
286
,
321
,
291
,
11
,
293
,
987
,
93
,
798
,
52
,
/* 730 */
96
,
830
,
986
,
193
,
1032
,
194
,
195
,
192
,
196
,
198
,
/* 740 */
1
97
,
152
,
828
,
153
,
978
,
977
,
320
,
1069
,
154
,
1033
,
/* 750 */
155
,
74
,
176
,
174
,
175
,
177
,
970
,
53
,
179
,
969
,
/* 760 */
1079
,
2
,
4
,
824
,
823
,
75
,
166
,
827
,
832
,
843
,
/* 770 */
167
,
168
,
837
,
97
,
251
,
839
,
98
,
312
,
63
,
350
,
/* 780 */
316
,
12
,
104
,
49
,
22
,
23
,
323
,
64
,
107
,
109
,
/* 790 */
56
,
111
,
50
,
112
,
690
,
725
,
723
,
722
,
721
,
57
,
/* 800 */
113
,
71
9
,
718
,
717
,
714
,
680
,
342
,
117
,
7
,
916
,
/* 810 */
914
,
894
,
917
,
893
,
915
,
8
,
896
,
354
,
120
,
72
,
/* 820 */
122
,
60
,
353
,
792
,
73
,
762
,
126
,
128
,
761
,
758
,
/* 830 */
706
,
704
,
696
,
702
,
791
,
698
,
700
,
694
,
692
,
728
,
/* 840 */
72
7
,
726
,
724
,
720
,
716
,
715
,
201
,
643
,
948
,
678
,
/* 850 */
652
,
392
,
650
,
947
,
947
,
947
,
947
,
947
,
947
,
947
,
/* 860 */
94
7
,
947
,
947
,
947
,
394
,
};
static
const
YYCODETYPE
yy_lookahead
[]
=
{
/* 0 */
21
3
,
1
,
205
,
205
,
203
,
204
,
212
,
5
,
1
,
9
,
/* 10 */
28
4
,
5
,
286
,
287
,
14
,
15
,
9
,
17
,
18
,
205
,
/* 20 */
20
6
,
21
,
22
,
23
,
24
,
0
,
205
,
27
,
28
,
29
,
/* 30 */
30
,
31
,
32
,
24
6
,
247
,
248
,
249
,
37
,
38
,
37
,
/* 40 */
38
,
41
,
42
,
43
,
14
,
15
,
1
,
17
,
18
,
25
2
,
/* 50 */
21
3
,
21
,
22
,
23
,
24
,
276
,
255
,
27
,
28
,
29
,
/* 60 */
30
,
31
,
32
,
28
3
,
284
,
286
,
286
,
37
,
38
,
276
,
/* 70 */
27
6
,
41
,
42
,
43
,
273
,
277
,
66
,
67
,
68
,
286
,
/* 80 */
28
6
,
288
,
288
,
73
,
247
,
75
,
76
,
77
,
14
,
15
,
/* 90 */
90
,
17
,
18
,
86
,
84
,
21
,
22
,
23
,
24
,
27
8
,
/* 100 */
2
79
,
27
,
28
,
29
,
30
,
31
,
32
,
88
,
41
,
42
,
/* 110 */
43
,
37
,
38
,
88
,
27
6
,
41
,
42
,
43
,
14
,
15
,
/* 120 */
90
,
17
,
18
,
20
5
,
286
,
21
,
22
,
23
,
24
,
205
,
/* 0 */
21
4
,
1
,
206
,
206
,
204
,
205
,
213
,
5
,
1
,
9
,
/* 10 */
28
5
,
5
,
287
,
288
,
14
,
15
,
9
,
17
,
18
,
206
,
/* 20 */
20
7
,
21
,
22
,
23
,
24
,
0
,
206
,
27
,
28
,
29
,
/* 30 */
30
,
31
,
32
,
24
7
,
248
,
249
,
250
,
37
,
38
,
37
,
/* 40 */
38
,
41
,
42
,
43
,
14
,
15
,
1
,
17
,
18
,
25
3
,
/* 50 */
21
4
,
21
,
22
,
23
,
24
,
277
,
256
,
27
,
28
,
29
,
/* 60 */
30
,
31
,
32
,
28
4
,
285
,
287
,
287
,
37
,
38
,
277
,
/* 70 */
27
7
,
41
,
42
,
43
,
274
,
278
,
66
,
67
,
68
,
287
,
/* 80 */
28
7
,
289
,
289
,
73
,
248
,
75
,
76
,
77
,
14
,
15
,
/* 90 */
90
,
17
,
18
,
86
,
84
,
21
,
22
,
23
,
24
,
27
9
,
/* 100 */
2
80
,
27
,
28
,
29
,
30
,
31
,
32
,
88
,
41
,
42
,
/* 110 */
43
,
37
,
38
,
88
,
27
7
,
41
,
42
,
43
,
14
,
15
,
/* 120 */
90
,
17
,
18
,
20
6
,
287
,
21
,
22
,
23
,
24
,
206
,
/* 130 */
1
,
27
,
28
,
29
,
30
,
31
,
32
,
5
,
9
,
7
,
/* 140 */
21
6
,
37
,
38
,
1
,
276
,
41
,
42
,
43
,
86
,
14
,
/* 150 */
15
,
9
,
17
,
18
,
28
6
,
94
,
21
,
22
,
23
,
24
,
/* 160 */
149
,
87
,
27
,
28
,
29
,
30
,
31
,
32
,
250
,
158
,
/* 170 */
159
,
258
,
37
,
38
,
205
,
257
,
41
,
42
,
43
,
66
,
/* 180 */
67
,
68
,
120
,
121
,
22
7
,
228
,
73
,
74
,
75
,
76
,
/* 140 */
21
7
,
37
,
38
,
1
,
277
,
41
,
42
,
43
,
86
,
14
,
/* 150 */
15
,
9
,
17
,
18
,
28
7
,
94
,
21
,
22
,
23
,
24
,
/* 160 */
259
,
87
,
27
,
28
,
29
,
30
,
31
,
32
,
251
,
69
,
/* 170 */
70
,
71
,
37
,
38
,
206
,
258
,
41
,
42
,
43
,
66
,
/* 180 */
67
,
68
,
120
,
121
,
22
8
,
229
,
73
,
74
,
75
,
76
,
/* 190 */
77
,
49
,
50
,
51
,
52
,
53
,
54
,
55
,
56
,
57
,
/* 200 */
58
,
59
,
60
,
61
,
62
,
63
,
25
1
,
65
,
15
,
258
,
/* 210 */
17
,
18
,
258
,
258
,
21
,
22
,
23
,
24
,
87
,
250
,
/* 220 */
27
,
28
,
29
,
30
,
31
,
32
,
25
7
,
69
,
70
,
71
,
/* 230 */
37
,
38
,
101
,
251
,
41
,
42
,
43
,
276
,
17
,
18
,
/* 240 */
258
,
263
,
21
,
22
,
23
,
24
,
205
,
286
,
27
,
28
,
/* 250 */
29
,
30
,
31
,
32
,
66
,
67
,
68
,
125
,
37
,
38
,
/* 260 */
28
2
,
86
,
41
,
42
,
43
,
102
,
103
,
104
,
105
,
106
,
/* 200 */
58
,
59
,
60
,
61
,
62
,
63
,
25
2
,
65
,
15
,
259
,
/* 210 */
17
,
18
,
47
,
259
,
21
,
22
,
23
,
24
,
150
,
251
,
/* 220 */
27
,
28
,
29
,
30
,
31
,
32
,
25
8
,
159
,
160
,
64
,
/* 230 */
37
,
38
,
215
,
216
,
41
,
42
,
43
,
277
,
17
,
18
,
/* 240 */
72
,
264
,
21
,
22
,
23
,
24
,
259
,
287
,
27
,
28
,
/* 250 */
29
,
30
,
31
,
32
,
5
,
282
,
7
,
125
,
37
,
38
,
/* 260 */
28
3
,
86
,
41
,
42
,
43
,
102
,
103
,
104
,
105
,
106
,
/* 270 */
107
,
108
,
109
,
110
,
111
,
112
,
113
,
114
,
115
,
116
,
/* 280 */
48
,
2
29
,
230
,
231
,
232
,
233
,
234
,
235
,
236
,
237
,
/* 290 */
238
,
239
,
240
,
241
,
242
,
243
,
101
,
65
,
25
7
,
1
,
/* 300 */
2
,
126
,
28
1
,
5
,
72
,
7
,
5
,
9
,
7
,
213
,
/* 310 */
78
,
79
,
80
,
81
,
2
76
,
1
,
2
,
85
,
86
,
5
,
/* 320 */
251
,
7
,
205
,
9
,
286
,
130
,
205
,
258
,
212
,
29
,
/* 330 */
30
,
31
,
32
,
2
16
,
276
,
37
,
38
,
37
,
38
,
41
,
/* 340 */
2
76
,
41
,
42
,
43
,
286
,
249
,
66
,
67
,
68
,
281
,
/* 350 */
2
8
6
,
37
,
38
,
73
,
74
,
75
,
76
,
77
,
126
,
2
,
/* 360 */
276
,
72
,
5
,
276
,
7
,
276
,
9
,
72
,
245
,
276
,
/* 370 */
2
86
,
250
,
92
,
286
,
102
,
286
,
104
,
105
,
257
,
286
,
/* 380 */
148
,
109
,
150
,
255
,
86
,
113
,
5
,
115
,
116
,
157
,
/* 390 */
9
,
212
,
276
,
25
,
37
,
38
,
229
,
259
,
231
,
232
,
/* 400 */
86
,
2
73
,
286
,
236
,
288
,
132
,
133
,
240
,
205
,
242
,
/* 410 */
24
3
,
205
,
274
,
80
,
205
,
47
,
205
,
205
,
37
,
38
,
/* 420 */
41
,
123
,
124
,
125
,
37
,
38
,
125
,
205
,
41
,
42
,
/* 430 */
43
,
2
05
,
64
,
276
,
284
,
87
,
286
,
123
,
124
,
125
,
/* 440 */
15
1
,
205
,
153
,
286
,
155
,
156
,
151
,
276
,
153
,
101
,
/* 450 */
155
,
156
,
255
,
250
,
86
,
276
,
250
,
286
,
245
,
250
,
/* 460 */
25
7
,
250
,
250
,
257
,
16
,
286
,
257
,
288
,
257
,
25
7
,
/* 470 */
273
,
205
,
250
,
140
,
276
,
276
,
250
,
276
,
276
,
25
7
,
/* 480 */
123
,
124
,
2
16
,
257
,
286
,
286
,
250
,
286
,
286
,
205
,
/* 490 */
2
11
,
276
,
276
,
257
,
276
,
87
,
276
,
218
,
82
,
276
,
/* 500 */
21
6
,
286
,
286
,
101
,
286
,
124
,
286
,
211
,
129
,
286
,
/* 510 */
94
,
284
,
87
,
286
,
218
,
211
,
214
,
215
,
209
,
210
,
/* 520 */
37
,
38
,
218
,
87
,
87
,
47
,
87
,
101
,
1
,
87
,
/* 530 */
87
,
87
,
87
,
86
,
25
,
127
,
87
,
101
,
101
,
87
,
/* 540 */
1
01
,
87
,
64
,
101
,
101
,
101
,
101
,
152
,
146
,
154
,
/* 550 */
101
,
86
,
127
,
101
,
205
,
101
,
47
,
152
,
152
,
154
,
/* 560 */
15
4
,
5
,
5
,
7
,
7
,
152
,
119
,
154
,
41
,
245
,
/* 570 */
144
,
123
,
37
,
38
,
152
,
152
,
154
,
154
,
82
,
83
,
/* 580 */
245
,
245
,
245
,
118
,
253
,
245
,
275
,
205
,
205
,
205
,
/* 590 */
20
5
,
205
,
285
,
205
,
205
,
205
,
255
,
255
,
205
,
205
,
/* 600 */
2
85
,
205
,
285
,
285
,
260
,
255
,
205
,
64
,
205
,
205
,
/* 610 */
2
80
,
125
,
205
,
270
,
205
,
205
,
205
,
205
,
280
,
205
,
/* 620 */
20
5
,
269
,
205
,
205
,
205
,
205
,
205
,
280
,
272
,
205
,
/* 630 */
2
71
,
280
,
205
,
205
,
205
,
205
,
205
,
205
,
205
,
205
,
/* 640 */
20
5
,
143
,
145
,
205
,
138
,
205
,
205
,
142
,
141
,
13
6
,
/* 650 */
135
,
205
,
134
,
137
,
131
,
205
,
205
,
265
,
205
,
268
,
/* 660 */
20
5
,
205
,
205
,
205
,
205
,
205
,
205
,
205
,
205
,
205
,
/* 670 */
122
,
205
,
205
,
205
,
205
,
205
,
205
,
205
,
205
,
205
,
/* 680 */
20
5
,
205
,
205
,
147
,
205
,
205
,
93
,
117
,
207
,
207
,
/* 690 */
100
,
207
,
207
,
99
,
207
,
55
,
96
,
98
,
59
,
97
,
/* 700 */
95
,
207
,
207
,
88
,
5
,
160
,
207
,
5
,
5
,
160
,
/* 710 */
5
,
207
,
5
,
104
,
103
,
149
,
213
,
217
,
217
,
207
,
/* 720 */
119
,
213
,
127
,
86
,
128
,
87
,
101
,
86
,
101
,
87
,
/* 730 */
101
,
207
,
125
,
207
,
5
,
224
,
226
,
220
,
208
,
225
,
/* 740 */
2
08
,
221
,
223
,
222
,
219
,
207
,
244
,
254
,
208
,
207
,
/* 750 */
209
,
207
,
261
,
264
,
262
,
267
,
266
,
228
,
208
,
207
,
/* 760 */
2
14
,
125
,
5
,
86
,
101
,
87
,
244
,
86
,
1
,
87
,
/* 770 */
86
,
101
,
87
,
86
,
139
,
87
,
86
,
86
,
47
,
1
,
/* 780 */
101
,
86
,
139
,
90
,
86
,
119
,
86
,
120
,
82
,
74
,
/* 790 */
5
,
9
,
91
,
5
,
90
,
5
,
5
,
5
,
5
,
91
,
/* 800 */
90
,
5
,
5
,
89
,
82
,
16
,
86
,
9
,
9
,
9
,
/* 810 */
87
,
87
,
9
,
86
,
28
,
123
,
63
,
101
,
17
,
154
,
/* 820 */
5
,
125
,
154
,
17
,
5
,
154
,
154
,
87
,
5
,
5
,
/* 280 */
48
,
2
06
,
230
,
231
,
232
,
233
,
234
,
235
,
236
,
237
,
/* 290 */
238
,
239
,
240
,
241
,
242
,
243
,
244
,
65
,
27
7
,
1
,
/* 300 */
2
,
126
,
28
2
,
5
,
72
,
7
,
16
,
9
,
287
,
256
,
/* 310 */
78
,
79
,
80
,
81
,
2
54
,
1
,
2
,
85
,
86
,
5
,
/* 320 */
152
,
7
,
154
,
9
,
156
,
157
,
251
,
274
,
206
,
29
,
/* 330 */
30
,
31
,
32
,
2
58
,
277
,
37
,
38
,
37
,
38
,
41
,
/* 340 */
2
13
,
41
,
42
,
43
,
287
,
206
,
66
,
67
,
68
,
246
,
/* 350 */
2
5
6
,
37
,
38
,
73
,
74
,
75
,
76
,
77
,
126
,
2
,
/* 360 */
72
,
277
,
5
,
252
,
7
,
214
,
9
,
213
,
274
,
277
,
/* 370 */
2
59
,
287
,
92
,
251
,
125
,
102
,
246
,
104
,
105
,
287
,
/* 380 */
258
,
149
,
109
,
151
,
86
,
206
,
113
,
5
,
115
,
116
,
/* 390 */
158
,
9
,
277
,
25
,
37
,
38
,
230
,
258
,
232
,
233
,
/* 400 */
86
,
2
50
,
287
,
237
,
277
,
206
,
206
,
241
,
206
,
243
,
/* 410 */
24
4
,
206
,
206
,
123
,
287
,
47
,
289
,
277
,
101
,
37
,
/* 420 */
38
,
123
,
124
,
125
,
37
,
38
,
206
,
287
,
41
,
42
,
/* 430 */
43
,
2
77
,
64
,
66
,
67
,
68
,
82
,
123
,
124
,
125
,
/* 440 */
15
2
,
287
,
154
,
289
,
156
,
157
,
148
,
206
,
94
,
206
,
/* 450 */
251
,
251
,
41
,
251
,
86
,
277
,
251
,
258
,
258
,
277
,
/* 460 */
25
8
,
144
,
148
,
258
,
277
,
287
,
277
,
277
,
206
,
28
7
,
/* 470 */
80
,
251
,
277
,
277
,
287
,
277
,
287
,
287
,
258
,
21
7
,
/* 480 */
123
,
124
,
2
87
,
287
,
87
,
287
,
277
,
87
,
277
,
206
,
/* 490 */
2
52
,
206
,
251
,
277
,
251
,
277
,
287
,
259
,
287
,
258
,
/* 500 */
21
7
,
258
,
217
,
287
,
212
,
287
,
124
,
132
,
133
,
212
,
/* 510 */
285
,
219
,
287
,
285
,
212
,
287
,
219
,
260
,
210
,
211
,
/* 520 */
87
,
219
,
101
,
87
,
127
,
37
,
38
,
127
,
87
,
87
,
/* 530 */
140
,
101
,
275
,
87
,
101
,
87
,
87
,
101
,
87
,
87
,
/* 540 */
1
29
,
86
,
101
,
101
,
87
,
87
,
25
,
101
,
1
,
101
,
/* 550 */
101
,
130
,
101
,
101
,
153
,
87
,
155
,
86
,
101
,
101
,
/* 560 */
15
3
,
153
,
155
,
155
,
5
,
5
,
7
,
7
,
47
,
101
,
/* 570 */
37
,
38
,
246
,
153
,
119
,
155
,
146
,
153
,
153
,
155
,
/* 580 */
155
,
82
,
83
,
246
,
246
,
246
,
246
,
206
,
41
,
118
,
/* 590 */
20
6
,
206
,
276
,
286
,
206
,
206
,
286
,
206
,
256
,
256
,
/* 600 */
2
06
,
206
,
206
,
256
,
206
,
286
,
286
,
261
,
206
,
206
,
/* 610 */
2
06
,
206
,
206
,
64
,
125
,
206
,
206
,
281
,
206
,
206
,
/* 620 */
20
6
,
206
,
206
,
206
,
206
,
206
,
281
,
272
,
206
,
206
,
/* 630 */
2
81
,
281
,
206
,
206
,
206
,
206
,
143
,
206
,
206
,
273
,
/* 640 */
20
6
,
206
,
145
,
206
,
206
,
206
,
206
,
138
,
271
,
20
6
,
/* 650 */
206
,
206
,
142
,
206
,
141
,
269
,
206
,
134
,
136
,
206
,
/* 660 */
20
6
,
135
,
206
,
270
,
137
,
206
,
206
,
206
,
206
,
206
,
/* 670 */
206
,
206
,
206
,
206
,
131
,
206
,
206
,
147
,
206
,
206
,
/* 680 */
20
6
,
206
,
206
,
206
,
206
,
206
,
122
,
93
,
208
,
208
,
/* 690 */
208
,
208
,
208
,
117
,
55
,
100
,
99
,
96
,
98
,
59
,
/* 700 */
208
,
97
,
95
,
208
,
88
,
5
,
208
,
5
,
5
,
5
,
/* 710 */
5
,
161
,
208
,
208
,
161
,
104
,
103
,
214
,
218
,
218
,
/* 720 */
214
,
150
,
119
,
127
,
86
,
101
,
208
,
128
,
87
,
86
,
/* 730 */
101
,
87
,
208
,
225
,
227
,
221
,
224
,
226
,
222
,
220
,
/* 740 */
2
23
,
209
,
125
,
209
,
208
,
208
,
255
,
245
,
209
,
229
,
/* 750 */
209
,
101
,
266
,
268
,
267
,
265
,
208
,
263
,
262
,
208
,
/* 760 */
2
45
,
215
,
210
,
5
,
5
,
86
,
86
,
125
,
87
,
87
,
/* 770 */
86
,
101
,
87
,
86
,
1
,
87
,
86
,
86
,
101
,
47
,
/* 780 */
1
,
86
,
90
,
86
,
139
,
139
,
119
,
101
,
120
,
82
,
/* 790 */
91
,
90
,
86
,
74
,
5
,
9
,
5
,
5
,
5
,
91
,
/* 800 */
90
,
5
,
5
,
5
,
5
,
89
,
16
,
82
,
86
,
9
,
/* 810 */
9
,
87
,
9
,
87
,
9
,
86
,
123
,
63
,
155
,
17
,
/* 820 */
155
,
101
,
28
,
125
,
17
,
5
,
155
,
155
,
5
,
87
,
/* 830 */
5
,
5
,
5
,
5
,
125
,
5
,
5
,
5
,
5
,
5
,
/* 840 */
5
,
5
,
5
,
5
,
101
,
89
,
0
,
64
,
9
,
9
,
/* 850 */
289
,
22
,
289
,
289
,
289
,
289
,
289
,
289
,
289
,
289
,
/* 860 */
2
89
,
289
,
289
,
22
,
289
,
289
,
289
,
289
,
289
,
289
,
/* 870 */
2
89
,
289
,
289
,
289
,
289
,
289
,
289
,
289
,
289
,
289
,
/* 880 */
2
89
,
289
,
289
,
289
,
289
,
289
,
289
,
289
,
289
,
289
,
/* 890 */
2
89
,
289
,
289
,
289
,
289
,
289
,
289
,
289
,
289
,
289
,
/* 900 */
2
89
,
289
,
289
,
289
,
289
,
289
,
289
,
289
,
289
,
289
,
/* 910 */
2
89
,
289
,
289
,
289
,
289
,
289
,
289
,
289
,
289
,
289
,
/* 920 */
2
89
,
289
,
289
,
289
,
289
,
289
,
289
,
289
,
289
,
289
,
/* 930 */
2
89
,
289
,
289
,
289
,
289
,
289
,
289
,
289
,
289
,
289
,
/* 940 */
2
89
,
289
,
289
,
289
,
289
,
289
,
289
,
289
,
289
,
289
,
/* 950 */
2
89
,
289
,
289
,
289
,
289
,
289
,
289
,
289
,
289
,
289
,
/* 960 */
2
89
,
289
,
289
,
289
,
289
,
289
,
289
,
289
,
289
,
289
,
/* 970 */
2
89
,
289
,
289
,
289
,
289
,
289
,
289
,
289
,
289
,
289
,
/* 980 */
2
89
,
289
,
289
,
289
,
289
,
289
,
289
,
289
,
289
,
289
,
/* 990 */
2
89
,
289
,
289
,
289
,
289
,
289
,
289
,
289
,
289
,
289
,
/* 1000 */
2
89
,
289
,
289
,
289
,
289
,
289
,
289
,
289
,
289
,
289
,
/* 1010 */
2
89
,
289
,
289
,
289
,
289
,
289
,
289
,
289
,
289
,
289
,
/* 1020 */
2
89
,
289
,
289
,
289
,
289
,
289
,
289
,
289
,
289
,
289
,
/* 1030 */
2
89
,
289
,
289
,
289
,
289
,
289
,
289
,
289
,
289
,
289
,
/* 1040 */
2
89
,
289
,
289
,
289
,
289
,
289
,
289
,
289
,
289
,
289
,
/* 1050 */
2
89
,
289
,
289
,
289
,
289
,
289
,
289
,
289
,
289
,
289
,
/* 1060 */
2
89
,
289
,
289
,
289
,
289
,
289
,
289
,
/* 840 */
5
,
5
,
5
,
5
,
5
,
5
,
101
,
64
,
0
,
8
9
,
/* 850 */
9
,
22
,
9
,
290
,
290
,
290
,
290
,
290
,
290
,
290
,
/* 860 */
2
90
,
290
,
290
,
290
,
22
,
290
,
290
,
290
,
290
,
290
,
/* 870 */
2
90
,
290
,
290
,
290
,
290
,
290
,
290
,
290
,
290
,
290
,
/* 880 */
2
90
,
290
,
290
,
290
,
290
,
290
,
290
,
290
,
290
,
290
,
/* 890 */
2
90
,
290
,
290
,
290
,
290
,
290
,
290
,
290
,
290
,
290
,
/* 900 */
2
90
,
290
,
290
,
290
,
290
,
290
,
290
,
290
,
290
,
290
,
/* 910 */
2
90
,
290
,
290
,
290
,
290
,
290
,
290
,
290
,
290
,
290
,
/* 920 */
2
90
,
290
,
290
,
290
,
290
,
290
,
290
,
290
,
290
,
290
,
/* 930 */
2
90
,
290
,
290
,
290
,
290
,
290
,
290
,
290
,
290
,
290
,
/* 940 */
2
90
,
290
,
290
,
290
,
290
,
290
,
290
,
290
,
290
,
290
,
/* 950 */
2
90
,
290
,
290
,
290
,
290
,
290
,
290
,
290
,
290
,
290
,
/* 960 */
2
90
,
290
,
290
,
290
,
290
,
290
,
290
,
290
,
290
,
290
,
/* 970 */
2
90
,
290
,
290
,
290
,
290
,
290
,
290
,
290
,
290
,
290
,
/* 980 */
2
90
,
290
,
290
,
290
,
290
,
290
,
290
,
290
,
290
,
290
,
/* 990 */
2
90
,
290
,
290
,
290
,
290
,
290
,
290
,
290
,
290
,
290
,
/* 1000 */
2
90
,
290
,
290
,
290
,
290
,
290
,
290
,
290
,
290
,
290
,
/* 1010 */
2
90
,
290
,
290
,
290
,
290
,
290
,
290
,
290
,
290
,
290
,
/* 1020 */
2
90
,
290
,
290
,
290
,
290
,
290
,
290
,
290
,
290
,
290
,
/* 1030 */
2
90
,
290
,
290
,
290
,
290
,
290
,
290
,
290
,
290
,
290
,
/* 1040 */
2
90
,
290
,
290
,
290
,
290
,
290
,
290
,
290
,
290
,
290
,
/* 1050 */
2
90
,
290
,
290
,
290
,
290
,
290
,
290
,
290
,
290
,
290
,
/* 1060 */
2
90
,
290
,
290
,
290
,
290
,
290
,
290
,
290
,
290
,
};
#define YY_SHIFT_COUNT (397)
#define YY_SHIFT_MIN (0)
#define YY_SHIFT_MAX (84
6
)
#define YY_SHIFT_MAX (84
8
)
static
const
unsigned
short
int
yy_shift_ofst
[]
=
{
/* 0 */
232
,
163
,
163
,
27
2
,
272
,
19
,
298
,
314
,
314
,
314
,
/* 0 */
232
,
163
,
163
,
27
3
,
273
,
19
,
298
,
314
,
314
,
314
,
/* 10 */
7
,
129
,
129
,
129
,
129
,
129
,
129
,
129
,
129
,
129
,
/* 20 */
129
,
129
,
45
,
45
,
0
,
142
,
314
,
314
,
314
,
314
,
/* 30 */
314
,
314
,
314
,
314
,
314
,
314
,
314
,
314
,
314
,
314
,
/* 40 */
314
,
314
,
314
,
314
,
314
,
314
,
314
,
314
,
357
,
357
,
/* 50 */
357
,
175
,
175
,
273
,
129
,
25
,
129
,
129
,
129
,
129
,
/* 60 */
129
,
416
,
19
,
45
,
45
,
61
,
61
,
6
,
864
,
864
,
/* 70 */
86
4
,
357
,
357
,
357
,
381
,
381
,
2
,
2
,
2
,
2
,
/* 80 */
2
,
2
,
62
,
2
,
129
,
129
,
129
,
129
,
129
,
379
,
/* 90 */
129
,
129
,
129
,
175
,
175
,
129
,
129
,
129
,
129
,
3
33
,
/* 100 */
3
33
,
333
,
333
,
195
,
175
,
129
,
129
,
129
,
129
,
129
,
/* 50 */
357
,
175
,
175
,
375
,
129
,
25
,
129
,
129
,
129
,
129
,
/* 60 */
129
,
354
,
19
,
45
,
45
,
61
,
61
,
6
,
865
,
865
,
/* 70 */
86
5
,
357
,
357
,
357
,
382
,
382
,
2
,
2
,
2
,
2
,
/* 80 */
2
,
2
,
62
,
2
,
129
,
129
,
129
,
129
,
129
,
411
,
/* 90 */
129
,
129
,
129
,
175
,
175
,
129
,
129
,
129
,
129
,
3
90
,
/* 100 */
3
90
,
390
,
390
,
421
,
175
,
129
,
129
,
129
,
129
,
129
,
/* 110 */
129
,
129
,
129
,
129
,
129
,
129
,
129
,
129
,
129
,
129
,
/* 120 */
129
,
129
,
129
,
129
,
129
,
129
,
129
,
129
,
129
,
129
,
/* 130 */
129
,
129
,
129
,
129
,
129
,
129
,
129
,
129
,
129
,
129
,
/* 140 */
129
,
129
,
129
,
129
,
129
,
129
,
129
,
129
,
129
,
129
,
/* 150 */
129
,
129
,
129
,
129
,
129
,
129
,
129
,
129
,
129
,
129
,
/* 160 */
129
,
54
3
,
543
,
543
,
543
,
486
,
486
,
486
,
486
,
543
,
/* 170 */
49
8
,
497
,
506
,
505
,
507
,
513
,
515
,
518
,
516
,
52
3
,
/* 180 */
53
6
,
548
,
543
,
543
,
543
,
593
,
593
,
570
,
19
,
19
,
/* 190 */
54
3
,
543
,
590
,
594
,
640
,
600
,
599
,
639
,
602
,
605
,
/* 200 */
57
0
,
6
,
543
,
543
,
615
,
615
,
543
,
615
,
543
,
615
,
/* 210 */
54
3
,
543
,
864
,
864
,
30
,
74
,
104
,
104
,
104
,
135
,
/* 160 */
129
,
54
9
,
549
,
549
,
549
,
489
,
489
,
489
,
489
,
549
,
/* 170 */
49
3
,
497
,
509
,
510
,
513
,
522
,
526
,
523
,
527
,
54
3
,
/* 180 */
53
0
,
564
,
549
,
549
,
549
,
594
,
594
,
576
,
19
,
19
,
/* 190 */
54
9
,
549
,
595
,
597
,
639
,
601
,
600
,
640
,
604
,
607
,
/* 200 */
57
6
,
6
,
549
,
549
,
616
,
616
,
549
,
616
,
549
,
616
,
/* 210 */
54
9
,
549
,
865
,
865
,
30
,
74
,
104
,
104
,
104
,
135
,
/* 220 */
193
,
221
,
280
,
300
,
300
,
300
,
300
,
300
,
300
,
10
,
/* 230 */
113
,
387
,
387
,
387
,
387
,
289
,
295
,
368
,
11
,
67
,
/* 240 */
67
,
132
,
301
,
158
,
188
,
131
,
408
,
425
,
483
,
348
,
/* 250 */
4
36
,
437
,
478
,
402
,
426
,
439
,
442
,
443
,
444
,
445
,
/* 260 */
4
47
,
449
,
452
,
509
,
527
,
448
,
454
,
395
,
405
,
406
,
/* 270 */
55
6
,
557
,
535
,
413
,
422
,
465
,
423
,
496
,
699
,
545
,
/* 280 */
702
,
703
,
5
49
,
705
,
707
,
609
,
611
,
566
,
595
,
601
,
/* 290 */
63
7
,
596
,
638
,
641
,
625
,
627
,
642
,
629
,
607
,
636
,
/* 300 */
7
29
,
757
,
677
,
678
,
681
,
682
,
684
,
685
,
663
,
687
,
/* 310 */
688
,
690
,
7
67
,
691
,
670
,
635
,
731
,
778
,
679
,
643
,
/* 320 */
69
3
,
695
,
601
,
698
,
666
,
700
,
667
,
706
,
701
,
704
,
/* 330 */
71
5
,
785
,
708
,
710
,
782
,
788
,
790
,
791
,
792
,
793
,
/* 340 */
79
6
,
797
,
714
,
789
,
722
,
798
,
799
,
720
,
723
,
724
,
/* 350 */
80
0
,
803
,
692
,
727
,
786
,
753
,
801
,
665
,
668
,
716
,
/* 360 */
7
16
,
716
,
716
,
696
,
709
,
806
,
671
,
672
,
716
,
716
,
/* 370 */
7
16
,
815
,
819
,
740
,
716
,
823
,
824
,
825
,
826
,
827
,
/* 380 */
8
28
,
830
,
831
,
832
,
833
,
834
,
835
,
836
,
837
,
838
,
/* 390 */
74
3
,
756
,
839
,
829
,
840
,
841
,
783
,
846
,
/* 230 */
113
,
387
,
387
,
387
,
387
,
168
,
288
,
368
,
68
,
67
,
/* 240 */
67
,
132
,
249
,
100
,
367
,
433
,
397
,
400
,
488
,
436
,
/* 250 */
4
41
,
442
,
165
,
430
,
317
,
446
,
448
,
449
,
451
,
452
,
/* 260 */
4
55
,
457
,
458
,
521
,
547
,
290
,
468
,
401
,
407
,
408
,
/* 270 */
55
9
,
560
,
533
,
420
,
424
,
471
,
425
,
499
,
700
,
550
,
/* 280 */
702
,
703
,
5
53
,
704
,
705
,
611
,
613
,
571
,
596
,
603
,
/* 290 */
63
8
,
599
,
641
,
643
,
624
,
629
,
644
,
650
,
617
,
642
,
/* 300 */
7
58
,
759
,
679
,
681
,
680
,
682
,
684
,
685
,
670
,
687
,
/* 310 */
688
,
690
,
7
73
,
691
,
677
,
645
,
732
,
779
,
686
,
646
,
/* 320 */
69
2
,
695
,
603
,
697
,
667
,
706
,
668
,
707
,
699
,
701
,
/* 330 */
71
9
,
789
,
708
,
710
,
786
,
791
,
792
,
793
,
796
,
797
,
/* 340 */
79
8
,
799
,
716
,
790
,
725
,
800
,
801
,
722
,
724
,
726
,
/* 350 */
80
3
,
805
,
693
,
729
,
794
,
754
,
802
,
663
,
665
,
720
,
/* 360 */
7
20
,
720
,
720
,
698
,
709
,
807
,
671
,
672
,
720
,
720
,
/* 370 */
7
20
,
820
,
823
,
742
,
720
,
825
,
826
,
827
,
828
,
830
,
/* 380 */
8
31
,
832
,
833
,
834
,
835
,
836
,
837
,
838
,
839
,
840
,
/* 390 */
74
5
,
760
,
841
,
829
,
843
,
842
,
783
,
848
,
};
#define YY_REDUCE_COUNT (213)
#define YY_REDUCE_MIN (-27
4
)
#define YY_REDUCE_MIN (-27
5
)
#define YY_REDUCE_MAX (552)
static
const
short
yy_reduce_ofst
[]
=
{
/* 0 */
-
199
,
52
,
52
,
167
,
167
,
-
213
,
-
206
,
116
,
179
,
-
207
,
/* 10 */
-
1
79
,
-
82
,
-
31
,
121
,
203
,
206
,
209
,
211
,
212
,
222
,
/* 20 */
2
26
,
236
,
-
274
,
-
220
,
-
202
,
-
186
,
-
221
,
-
162
,
-
132
,
-
39
,
/* 30 */
38
,
58
,
64
,
84
,
87
,
89
,
93
,
157
,
171
,
198
,
/* 40 */
19
9
,
201
,
202
,
215
,
216
,
218
,
220
,
223
,
-
45
,
-
18
,
/* 50 */
69
,
128
,
197
,
-
22
,
-
203
,
96
,
-
76
,
117
,
266
,
284
,
/* 60 */
41
,
279
,
-
163
,
150
,
227
,
296
,
304
,
-
43
,
138
,
302
,
/* 70 */
30
9
,
-
87
,
-
49
,
-
46
,
21
,
68
,
123
,
213
,
324
,
335
,
/* 80 */
33
6
,
337
,
331
,
340
,
349
,
382
,
383
,
384
,
385
,
311
,
/* 90 */
38
6
,
388
,
389
,
341
,
342
,
390
,
393
,
394
,
396
,
307
,
/* 100 */
31
5
,
317
,
318
,
344
,
350
,
401
,
403
,
404
,
407
,
409
,
/* 110 */
4
10
,
411
,
412
,
414
,
415
,
417
,
418
,
419
,
420
,
421
,
/* 120 */
42
4
,
427
,
428
,
429
,
430
,
431
,
432
,
433
,
434
,
435
,
/* 130 */
43
8
,
440
,
441
,
446
,
450
,
451
,
453
,
455
,
456
,
457
,
/* 140 */
45
8
,
459
,
460
,
461
,
462
,
463
,
464
,
466
,
467
,
468
,
/* 150 */
46
9
,
470
,
471
,
472
,
473
,
474
,
475
,
476
,
477
,
479
,
/* 160 */
4
80
,
481
,
482
,
484
,
485
,
330
,
338
,
347
,
351
,
487
,
/* 170 */
3
56
,
359
,
343
,
352
,
391
,
488
,
490
,
392
,
489
,
492
,
/* 180 */
49
1
,
493
,
494
,
495
,
499
,
500
,
501
,
502
,
503
,
508
,
/* 190 */
504
,
5
12
,
510
,
514
,
511
,
517
,
519
,
520
,
521
,
525
,
/* 200 */
5
22
,
529
,
524
,
526
,
530
,
532
,
538
,
540
,
542
,
550
,
/* 210 */
54
4
,
552
,
546
,
541
,
/* 0 */
-
200
,
52
,
52
,
166
,
166
,
-
214
,
-
207
,
127
,
154
,
-
208
,
/* 10 */
-
1
80
,
-
83
,
-
32
,
75
,
122
,
199
,
200
,
202
,
205
,
220
,
/* 20 */
2
41
,
243
,
-
275
,
-
221
,
-
203
,
-
187
,
-
222
,
-
163
,
-
133
,
-
40
,
/* 30 */
21
,
57
,
84
,
92
,
115
,
140
,
178
,
182
,
187
,
189
,
/* 40 */
19
0
,
195
,
196
,
198
,
209
,
211
,
216
,
218
,
-
46
,
111
,
/* 50 */
238
,
53
,
94
,
-
23
,
-
204
,
151
,
-
77
,
262
,
283
,
285
,
/* 60 */
139
,
292
,
-
164
,
225
,
228
,
297
,
302
,
-
44
,
257
,
17
,
/* 70 */
30
8
,
-
99
,
-
50
,
-
13
,
-
27
,
20
,
103
,
130
,
326
,
337
,
/* 80 */
33
8
,
339
,
60
,
340
,
179
,
206
,
381
,
384
,
385
,
316
,
/* 90 */
38
8
,
389
,
391
,
342
,
343
,
394
,
395
,
396
,
398
,
307
,
/* 100 */
31
0
,
319
,
320
,
346
,
347
,
402
,
403
,
404
,
405
,
406
,
/* 110 */
4
09
,
410
,
412
,
413
,
414
,
415
,
416
,
417
,
418
,
419
,
/* 120 */
42
2
,
423
,
426
,
427
,
428
,
429
,
431
,
432
,
434
,
435
,
/* 130 */
43
7
,
438
,
439
,
440
,
443
,
444
,
445
,
447
,
450
,
453
,
/* 140 */
45
4
,
456
,
459
,
460
,
461
,
462
,
463
,
464
,
465
,
466
,
/* 150 */
46
7
,
469
,
470
,
472
,
473
,
474
,
475
,
476
,
477
,
478
,
/* 160 */
4
79
,
480
,
481
,
482
,
483
,
336
,
345
,
349
,
350
,
484
,
/* 170 */
3
66
,
355
,
377
,
393
,
386
,
485
,
487
,
486
,
490
,
494
,
/* 180 */
49
6
,
491
,
492
,
495
,
498
,
500
,
501
,
502
,
503
,
506
,
/* 190 */
504
,
5
05
,
507
,
511
,
508
,
514
,
512
,
516
,
517
,
519
,
/* 200 */
5
15
,
520
,
518
,
524
,
532
,
534
,
536
,
539
,
537
,
541
,
/* 210 */
54
8
,
551
,
546
,
552
,
};
static
const
YYACTIONTYPE
yy_default
[]
=
{
/* 0 */
94
3
,
1066
,
1005
,
1076
,
992
,
1002
,
1243
,
1243
,
1243
,
1243
,
/* 10 */
94
3
,
943
,
943
,
943
,
943
,
943
,
943
,
943
,
943
,
943
,
/* 20 */
94
3
,
943
,
943
,
943
,
1130
,
963
,
943
,
943
,
943
,
943
,
/* 30 */
94
3
,
943
,
943
,
943
,
943
,
943
,
943
,
943
,
943
,
943
,
/* 40 */
94
3
,
943
,
943
,
943
,
943
,
943
,
943
,
943
,
943
,
943
,
/* 50 */
94
3
,
943
,
943
,
1154
,
943
,
1002
,
943
,
943
,
943
,
943
,
/* 60 */
94
3
,
1012
,
1002
,
943
,
943
,
1012
,
1012
,
943
,
1125
,
1050
,
/* 70 */
10
68
,
943
,
943
,
943
,
943
,
943
,
943
,
943
,
943
,
943
,
/* 80 */
94
3
,
943
,
1097
,
943
,
943
,
943
,
943
,
943
,
943
,
1132
,
/* 90 */
11
38
,
1135
,
943
,
943
,
943
,
1140
,
943
,
943
,
943
,
1176
,
/* 100 */
117
6
,
1176
,
1176
,
1123
,
943
,
943
,
943
,
943
,
943
,
943
,
/* 110 */
94
3
,
943
,
943
,
943
,
943
,
943
,
943
,
943
,
943
,
943
,
/* 120 */
94
3
,
943
,
943
,
943
,
943
,
943
,
943
,
943
,
943
,
943
,
/* 130 */
94
3
,
943
,
943
,
943
,
943
,
943
,
943
,
990
,
943
,
988
,
/* 140 */
94
3
,
943
,
943
,
943
,
943
,
943
,
943
,
943
,
943
,
943
,
/* 150 */
94
3
,
943
,
943
,
943
,
943
,
943
,
943
,
943
,
943
,
943
,
/* 160 */
96
1
,
965
,
965
,
965
,
965
,
943
,
943
,
943
,
943
,
965
,
/* 170 */
118
5
,
1189
,
1166
,
1183
,
1177
,
1161
,
1159
,
1157
,
1165
,
1150
,
/* 180 */
119
3
,
1099
,
965
,
965
,
965
,
1010
,
1010
,
1006
,
1002
,
1002
,
/* 190 */
96
5
,
965
,
1028
,
1026
,
1024
,
1016
,
1022
,
1018
,
1020
,
1014
,
/* 200 */
99
3
,
943
,
965
,
965
,
1000
,
1000
,
965
,
1000
,
965
,
1000
,
/* 210 */
96
5
,
965
,
1050
,
1068
,
1242
,
943
,
1194
,
1184
,
1242
,
943
,
/* 220 */
122
5
,
1224
,
943
,
1233
,
1232
,
1231
,
1223
,
1222
,
1221
,
943
,
/* 230 */
94
3
,
1217
,
1220
,
1219
,
1218
,
943
,
943
,
1196
,
943
,
1227
,
/* 240 */
122
6
,
943
,
943
,
943
,
943
,
943
,
943
,
943
,
1147
,
943
,
/* 250 */
94
3
,
943
,
1172
,
1190
,
1186
,
943
,
943
,
943
,
943
,
943
,
/* 260 */
94
3
,
943
,
943
,
1197
,
943
,
943
,
943
,
943
,
943
,
943
,
/* 270 */
94
3
,
943
,
1111
,
943
,
943
,
1078
,
943
,
943
,
943
,
943
,
/* 280 */
94
3
,
943
,
943
,
943
,
943
,
943
,
943
,
943
,
1122
,
943
,
/* 290 */
94
3
,
943
,
943
,
943
,
1134
,
1133
,
943
,
943
,
943
,
943
,
/* 300 */
94
3
,
943
,
943
,
943
,
943
,
943
,
943
,
943
,
943
,
943
,
/* 310 */
94
3
,
943
,
943
,
943
,
1178
,
943
,
1173
,
943
,
1167
,
943
,
/* 320 */
94
3
,
943
,
1090
,
943
,
943
,
943
,
943
,
943
,
943
,
943
,
/* 330 */
94
3
,
943
,
943
,
943
,
943
,
943
,
943
,
943
,
943
,
943
,
/* 340 */
94
3
,
943
,
943
,
943
,
943
,
943
,
943
,
943
,
943
,
943
,
/* 350 */
94
3
,
943
,
943
,
943
,
943
,
943
,
943
,
943
,
943
,
1261
,
/* 360 */
125
6
,
1257
,
1254
,
943
,
943
,
943
,
943
,
943
,
1253
,
1248
,
/* 370 */
12
49
,
943
,
943
,
943
,
1246
,
943
,
943
,
943
,
943
,
943
,
/* 380 */
94
3
,
943
,
943
,
943
,
943
,
943
,
943
,
943
,
943
,
943
,
/* 390 */
103
4
,
943
,
943
,
972
,
943
,
970
,
943
,
943
,
/* 0 */
94
5
,
1068
,
1007
,
1078
,
994
,
1004
,
1246
,
1246
,
1246
,
1246
,
/* 10 */
94
5
,
945
,
945
,
945
,
945
,
945
,
945
,
945
,
945
,
945
,
/* 20 */
94
5
,
945
,
945
,
945
,
1132
,
965
,
945
,
945
,
945
,
945
,
/* 30 */
94
5
,
945
,
945
,
945
,
945
,
945
,
945
,
945
,
945
,
945
,
/* 40 */
94
5
,
945
,
945
,
945
,
945
,
945
,
945
,
945
,
945
,
945
,
/* 50 */
94
5
,
945
,
945
,
1156
,
945
,
1004
,
945
,
945
,
945
,
945
,
/* 60 */
94
5
,
1014
,
1004
,
945
,
945
,
1014
,
1014
,
945
,
1127
,
1052
,
/* 70 */
10
70
,
945
,
945
,
945
,
945
,
945
,
945
,
945
,
945
,
945
,
/* 80 */
94
5
,
945
,
1099
,
945
,
945
,
945
,
945
,
945
,
945
,
1134
,
/* 90 */
11
40
,
1137
,
945
,
945
,
945
,
1142
,
945
,
945
,
945
,
1178
,
/* 100 */
117
8
,
1178
,
1178
,
1125
,
945
,
945
,
945
,
945
,
945
,
945
,
/* 110 */
94
5
,
945
,
945
,
945
,
945
,
945
,
945
,
945
,
945
,
945
,
/* 120 */
94
5
,
945
,
945
,
945
,
945
,
945
,
945
,
945
,
945
,
945
,
/* 130 */
94
5
,
945
,
945
,
945
,
945
,
945
,
945
,
992
,
945
,
990
,
/* 140 */
94
5
,
945
,
945
,
945
,
945
,
945
,
945
,
945
,
945
,
945
,
/* 150 */
94
5
,
945
,
945
,
945
,
945
,
945
,
945
,
945
,
945
,
945
,
/* 160 */
96
3
,
967
,
967
,
967
,
967
,
945
,
945
,
945
,
945
,
967
,
/* 170 */
118
7
,
1191
,
1168
,
1185
,
1179
,
1163
,
1161
,
1159
,
1167
,
1152
,
/* 180 */
119
5
,
1101
,
967
,
967
,
967
,
1012
,
1012
,
1008
,
1004
,
1004
,
/* 190 */
96
7
,
967
,
1030
,
1028
,
1026
,
1018
,
1024
,
1020
,
1022
,
1016
,
/* 200 */
99
5
,
945
,
967
,
967
,
1002
,
1002
,
967
,
1002
,
967
,
1002
,
/* 210 */
96
7
,
967
,
1052
,
1070
,
1245
,
945
,
1196
,
1186
,
1245
,
945
,
/* 220 */
122
8
,
1227
,
945
,
1236
,
1235
,
1234
,
1226
,
1225
,
1224
,
945
,
/* 230 */
94
5
,
1220
,
1223
,
1222
,
1221
,
945
,
945
,
1198
,
945
,
1230
,
/* 240 */
122
9
,
945
,
945
,
945
,
945
,
945
,
945
,
945
,
1149
,
945
,
/* 250 */
94
5
,
945
,
1174
,
1192
,
1188
,
945
,
945
,
945
,
945
,
945
,
/* 260 */
94
5
,
945
,
945
,
1199
,
945
,
945
,
945
,
945
,
945
,
945
,
/* 270 */
94
5
,
945
,
1113
,
945
,
945
,
1080
,
945
,
945
,
945
,
945
,
/* 280 */
94
5
,
945
,
945
,
945
,
945
,
945
,
945
,
945
,
1124
,
945
,
/* 290 */
94
5
,
945
,
945
,
945
,
1136
,
1135
,
945
,
945
,
945
,
945
,
/* 300 */
94
5
,
945
,
945
,
945
,
945
,
945
,
945
,
945
,
945
,
945
,
/* 310 */
94
5
,
945
,
945
,
945
,
1180
,
945
,
1175
,
945
,
1169
,
945
,
/* 320 */
94
5
,
945
,
1092
,
945
,
945
,
945
,
945
,
945
,
945
,
945
,
/* 330 */
94
5
,
945
,
945
,
945
,
945
,
945
,
945
,
945
,
945
,
945
,
/* 340 */
94
5
,
945
,
945
,
945
,
945
,
945
,
945
,
945
,
945
,
945
,
/* 350 */
94
5
,
945
,
945
,
945
,
945
,
945
,
945
,
945
,
945
,
1264
,
/* 360 */
125
9
,
1260
,
1257
,
945
,
945
,
945
,
945
,
945
,
1256
,
1251
,
/* 370 */
12
52
,
945
,
945
,
945
,
1249
,
945
,
945
,
945
,
945
,
945
,
/* 380 */
94
5
,
945
,
945
,
945
,
945
,
945
,
945
,
945
,
945
,
945
,
/* 390 */
103
6
,
945
,
945
,
974
,
945
,
972
,
945
,
945
,
};
/********** End of lemon-generated parsing tables *****************************/
...
...
@@ -695,6 +696,7 @@ static const YYCODETYPE yyFallback[] = {
0
,
/* SLIMIT => nothing */
0
,
/* SOFFSET => nothing */
0
,
/* WHERE => nothing */
1
,
/* TODAY => ID */
0
,
/* RESET => nothing */
0
,
/* QUERY => nothing */
0
,
/* SYNCDB => nothing */
...
...
@@ -985,147 +987,148 @@ static const char *const yyTokenName[] = {
/* 145 */
"SLIMIT"
,
/* 146 */
"SOFFSET"
,
/* 147 */
"WHERE"
,
/* 148 */
"RESET"
,
/* 149 */
"QUERY"
,
/* 150 */
"SYNCDB"
,
/* 151 */
"ADD"
,
/* 152 */
"COLUMN"
,
/* 153 */
"MODIFY"
,
/* 154 */
"TAG"
,
/* 155 */
"CHANGE"
,
/* 156 */
"SET"
,
/* 157 */
"KILL"
,
/* 158 */
"CONNECTION"
,
/* 159 */
"STREAM"
,
/* 160 */
"COLON"
,
/* 161 */
"ABORT"
,
/* 162 */
"AFTER"
,
/* 163 */
"ATTACH"
,
/* 164 */
"BEFORE"
,
/* 165 */
"BEGIN"
,
/* 166 */
"CASCADE"
,
/* 167 */
"CLUSTER"
,
/* 168 */
"CONFLICT"
,
/* 169 */
"COPY"
,
/* 170 */
"DEFERRED"
,
/* 171 */
"DELIMITERS"
,
/* 172 */
"DETACH"
,
/* 173 */
"EACH"
,
/* 174 */
"END"
,
/* 175 */
"EXPLAIN"
,
/* 176 */
"FAIL"
,
/* 177 */
"FOR"
,
/* 178 */
"IGNORE"
,
/* 179 */
"IMMEDIATE"
,
/* 180 */
"INITIALLY"
,
/* 181 */
"INSTEAD"
,
/* 182 */
"KEY"
,
/* 183 */
"OF"
,
/* 184 */
"RAISE"
,
/* 185 */
"REPLACE"
,
/* 186 */
"RESTRICT"
,
/* 187 */
"ROW"
,
/* 188 */
"STATEMENT"
,
/* 189 */
"TRIGGER"
,
/* 190 */
"VIEW"
,
/* 191 */
"IPTOKEN"
,
/* 192 */
"SEMI"
,
/* 193 */
"NONE"
,
/* 194 */
"PREV"
,
/* 195 */
"LINEAR"
,
/* 196 */
"IMPORT"
,
/* 197 */
"TBNAME"
,
/* 198 */
"JOIN"
,
/* 199 */
"INSERT"
,
/* 200 */
"INTO"
,
/* 201 */
"VALUES"
,
/* 202 */
"FILE"
,
/* 203 */
"program"
,
/* 204 */
"cmd"
,
/* 205 */
"ids"
,
/* 206 */
"dbPrefix"
,
/* 207 */
"cpxName"
,
/* 208 */
"ifexists"
,
/* 209 */
"alter_db_optr"
,
/* 210 */
"alter_topic_optr"
,
/* 211 */
"acct_optr"
,
/* 212 */
"exprlist"
,
/* 213 */
"ifnotexists"
,
/* 214 */
"db_optr"
,
/* 215 */
"topic_optr"
,
/* 216 */
"typename"
,
/* 217 */
"bufsize"
,
/* 218 */
"pps"
,
/* 219 */
"tseries"
,
/* 220 */
"dbs"
,
/* 221 */
"streams"
,
/* 222 */
"storage"
,
/* 223 */
"qtime"
,
/* 224 */
"users"
,
/* 225 */
"conns"
,
/* 226 */
"state"
,
/* 227 */
"intitemlist"
,
/* 228 */
"intitem"
,
/* 229 */
"keep"
,
/* 230 */
"cache"
,
/* 231 */
"replica"
,
/* 232 */
"quorum"
,
/* 233 */
"days"
,
/* 234 */
"minrows"
,
/* 235 */
"maxrows"
,
/* 236 */
"blocks"
,
/* 237 */
"ctime"
,
/* 238 */
"wal"
,
/* 239 */
"fsync"
,
/* 240 */
"comp"
,
/* 241 */
"prec"
,
/* 242 */
"update"
,
/* 243 */
"cachelast"
,
/* 244 */
"partitions"
,
/* 245 */
"signed"
,
/* 246 */
"create_table_args"
,
/* 247 */
"create_stable_args"
,
/* 248 */
"create_table_list"
,
/* 249 */
"create_from_stable"
,
/* 250 */
"columnlist"
,
/* 251 */
"tagitemlist"
,
/* 252 */
"tagNamelist"
,
/* 253 */
"to_opt"
,
/* 254 */
"split_opt"
,
/* 255 */
"select"
,
/* 256 */
"to_split"
,
/* 257 */
"column"
,
/* 258 */
"tagitem"
,
/* 259 */
"selcollist"
,
/* 260 */
"from"
,
/* 261 */
"where_opt"
,
/* 262 */
"range_option"
,
/* 263 */
"interval_option"
,
/* 264 */
"sliding_opt"
,
/* 265 */
"session_option"
,
/* 266 */
"windowstate_option"
,
/* 267 */
"fill_opt"
,
/* 268 */
"groupby_opt"
,
/* 269 */
"having_opt"
,
/* 270 */
"orderby_opt"
,
/* 271 */
"slimit_opt"
,
/* 272 */
"limit_opt"
,
/* 273 */
"union"
,
/* 274 */
"sclp"
,
/* 275 */
"distinct"
,
/* 276 */
"expr"
,
/* 277 */
"as"
,
/* 278 */
"tablelist"
,
/* 279 */
"sub"
,
/* 280 */
"tmvar"
,
/* 281 */
"timestamp"
,
/* 282 */
"intervalKey"
,
/* 283 */
"sortlist"
,
/* 284 */
"item"
,
/* 285 */
"sortorder"
,
/* 286 */
"arrow"
,
/* 287 */
"grouplist"
,
/* 288 */
"expritem"
,
/* 148 */
"TODAY"
,
/* 149 */
"RESET"
,
/* 150 */
"QUERY"
,
/* 151 */
"SYNCDB"
,
/* 152 */
"ADD"
,
/* 153 */
"COLUMN"
,
/* 154 */
"MODIFY"
,
/* 155 */
"TAG"
,
/* 156 */
"CHANGE"
,
/* 157 */
"SET"
,
/* 158 */
"KILL"
,
/* 159 */
"CONNECTION"
,
/* 160 */
"STREAM"
,
/* 161 */
"COLON"
,
/* 162 */
"ABORT"
,
/* 163 */
"AFTER"
,
/* 164 */
"ATTACH"
,
/* 165 */
"BEFORE"
,
/* 166 */
"BEGIN"
,
/* 167 */
"CASCADE"
,
/* 168 */
"CLUSTER"
,
/* 169 */
"CONFLICT"
,
/* 170 */
"COPY"
,
/* 171 */
"DEFERRED"
,
/* 172 */
"DELIMITERS"
,
/* 173 */
"DETACH"
,
/* 174 */
"EACH"
,
/* 175 */
"END"
,
/* 176 */
"EXPLAIN"
,
/* 177 */
"FAIL"
,
/* 178 */
"FOR"
,
/* 179 */
"IGNORE"
,
/* 180 */
"IMMEDIATE"
,
/* 181 */
"INITIALLY"
,
/* 182 */
"INSTEAD"
,
/* 183 */
"KEY"
,
/* 184 */
"OF"
,
/* 185 */
"RAISE"
,
/* 186 */
"REPLACE"
,
/* 187 */
"RESTRICT"
,
/* 188 */
"ROW"
,
/* 189 */
"STATEMENT"
,
/* 190 */
"TRIGGER"
,
/* 191 */
"VIEW"
,
/* 192 */
"IPTOKEN"
,
/* 193 */
"SEMI"
,
/* 194 */
"NONE"
,
/* 195 */
"PREV"
,
/* 196 */
"LINEAR"
,
/* 197 */
"IMPORT"
,
/* 198 */
"TBNAME"
,
/* 199 */
"JOIN"
,
/* 200 */
"INSERT"
,
/* 201 */
"INTO"
,
/* 202 */
"VALUES"
,
/* 203 */
"FILE"
,
/* 204 */
"program"
,
/* 205 */
"cmd"
,
/* 206 */
"ids"
,
/* 207 */
"dbPrefix"
,
/* 208 */
"cpxName"
,
/* 209 */
"ifexists"
,
/* 210 */
"alter_db_optr"
,
/* 211 */
"alter_topic_optr"
,
/* 212 */
"acct_optr"
,
/* 213 */
"exprlist"
,
/* 214 */
"ifnotexists"
,
/* 215 */
"db_optr"
,
/* 216 */
"topic_optr"
,
/* 217 */
"typename"
,
/* 218 */
"bufsize"
,
/* 219 */
"pps"
,
/* 220 */
"tseries"
,
/* 221 */
"dbs"
,
/* 222 */
"streams"
,
/* 223 */
"storage"
,
/* 224 */
"qtime"
,
/* 225 */
"users"
,
/* 226 */
"conns"
,
/* 227 */
"state"
,
/* 228 */
"intitemlist"
,
/* 229 */
"intitem"
,
/* 230 */
"keep"
,
/* 231 */
"cache"
,
/* 232 */
"replica"
,
/* 233 */
"quorum"
,
/* 234 */
"days"
,
/* 235 */
"minrows"
,
/* 236 */
"maxrows"
,
/* 237 */
"blocks"
,
/* 238 */
"ctime"
,
/* 239 */
"wal"
,
/* 240 */
"fsync"
,
/* 241 */
"comp"
,
/* 242 */
"prec"
,
/* 243 */
"update"
,
/* 244 */
"cachelast"
,
/* 245 */
"partitions"
,
/* 246 */
"signed"
,
/* 247 */
"create_table_args"
,
/* 248 */
"create_stable_args"
,
/* 249 */
"create_table_list"
,
/* 250 */
"create_from_stable"
,
/* 251 */
"columnlist"
,
/* 252 */
"tagitemlist"
,
/* 253 */
"tagNamelist"
,
/* 254 */
"to_opt"
,
/* 255 */
"split_opt"
,
/* 256 */
"select"
,
/* 257 */
"to_split"
,
/* 258 */
"column"
,
/* 259 */
"tagitem"
,
/* 260 */
"selcollist"
,
/* 261 */
"from"
,
/* 262 */
"where_opt"
,
/* 263 */
"range_option"
,
/* 264 */
"interval_option"
,
/* 265 */
"sliding_opt"
,
/* 266 */
"session_option"
,
/* 267 */
"windowstate_option"
,
/* 268 */
"fill_opt"
,
/* 269 */
"groupby_opt"
,
/* 270 */
"having_opt"
,
/* 271 */
"orderby_opt"
,
/* 272 */
"slimit_opt"
,
/* 273 */
"limit_opt"
,
/* 274 */
"union"
,
/* 275 */
"sclp"
,
/* 276 */
"distinct"
,
/* 277 */
"expr"
,
/* 278 */
"as"
,
/* 279 */
"tablelist"
,
/* 280 */
"sub"
,
/* 281 */
"tmvar"
,
/* 282 */
"timestamp"
,
/* 283 */
"intervalKey"
,
/* 284 */
"sortlist"
,
/* 285 */
"item"
,
/* 286 */
"sortorder"
,
/* 287 */
"arrow"
,
/* 288 */
"grouplist"
,
/* 289 */
"expritem"
,
};
#endif
/* defined(YYCOVERAGE) || !defined(NDEBUG) */
...
...
@@ -1394,64 +1397,65 @@ static const char *const yyRuleName[] = {
/* 258 */
"expr ::= PLUS FLOAT"
,
/* 259 */
"expr ::= STRING"
,
/* 260 */
"expr ::= NOW"
,
/* 261 */
"expr ::= VARIABLE"
,
/* 262 */
"expr ::= PLUS VARIABLE"
,
/* 263 */
"expr ::= MINUS VARIABLE"
,
/* 264 */
"expr ::= BOOL"
,
/* 265 */
"expr ::= NULL"
,
/* 266 */
"expr ::= ID LP exprlist RP"
,
/* 267 */
"expr ::= ID LP STAR RP"
,
/* 268 */
"expr ::= ID LP expr AS typename RP"
,
/* 269 */
"expr ::= expr IS NULL"
,
/* 270 */
"expr ::= expr IS NOT NULL"
,
/* 271 */
"expr ::= expr LT expr"
,
/* 272 */
"expr ::= expr GT expr"
,
/* 273 */
"expr ::= expr LE expr"
,
/* 274 */
"expr ::= expr GE expr"
,
/* 275 */
"expr ::= expr NE expr"
,
/* 276 */
"expr ::= expr EQ expr"
,
/* 277 */
"expr ::= expr BETWEEN expr AND expr"
,
/* 278 */
"expr ::= expr AND expr"
,
/* 279 */
"expr ::= expr OR expr"
,
/* 280 */
"expr ::= expr PLUS expr"
,
/* 281 */
"expr ::= expr MINUS expr"
,
/* 282 */
"expr ::= expr STAR expr"
,
/* 283 */
"expr ::= expr SLASH expr"
,
/* 284 */
"expr ::= expr REM expr"
,
/* 285 */
"expr ::= expr LIKE expr"
,
/* 286 */
"expr ::= expr MATCH expr"
,
/* 287 */
"expr ::= expr NMATCH expr"
,
/* 288 */
"expr ::= ID CONTAINS STRING"
,
/* 289 */
"expr ::= ID DOT ID CONTAINS STRING"
,
/* 290 */
"arrow ::= ID ARROW STRING"
,
/* 291 */
"arrow ::= ID DOT ID ARROW STRING"
,
/* 292 */
"expr ::= arrow"
,
/* 293 */
"expr ::= expr IN LP exprlist RP"
,
/* 294 */
"exprlist ::= exprlist COMMA expritem"
,
/* 295 */
"exprlist ::= expritem"
,
/* 296 */
"expritem ::= expr"
,
/* 297 */
"expritem ::="
,
/* 298 */
"cmd ::= RESET QUERY CACHE"
,
/* 299 */
"cmd ::= SYNCDB ids REPLICA"
,
/* 300 */
"cmd ::= ALTER TABLE ids cpxName ADD COLUMN columnlist"
,
/* 301 */
"cmd ::= ALTER TABLE ids cpxName DROP COLUMN ids"
,
/* 302 */
"cmd ::= ALTER TABLE ids cpxName MODIFY COLUMN columnlist"
,
/* 303 */
"cmd ::= ALTER TABLE ids cpxName ADD TAG columnlist"
,
/* 304 */
"cmd ::= ALTER TABLE ids cpxName DROP TAG ids"
,
/* 305 */
"cmd ::= ALTER TABLE ids cpxName CHANGE TAG ids ids"
,
/* 306 */
"cmd ::= ALTER TABLE ids cpxName SET TAG ids EQ tagitem"
,
/* 307 */
"cmd ::= ALTER TABLE ids cpxName MODIFY TAG columnlist"
,
/* 308 */
"cmd ::= ALTER STABLE ids cpxName ADD COLUMN columnlist"
,
/* 309 */
"cmd ::= ALTER STABLE ids cpxName DROP COLUMN ids"
,
/* 310 */
"cmd ::= ALTER STABLE ids cpxName MODIFY COLUMN columnlist"
,
/* 311 */
"cmd ::= ALTER STABLE ids cpxName ADD TAG columnlist"
,
/* 312 */
"cmd ::= ALTER STABLE ids cpxName DROP TAG ids"
,
/* 313 */
"cmd ::= ALTER STABLE ids cpxName CHANGE TAG ids ids"
,
/* 314 */
"cmd ::= ALTER STABLE ids cpxName SET TAG ids EQ tagitem"
,
/* 315 */
"cmd ::= ALTER STABLE ids cpxName MODIFY TAG columnlist"
,
/* 316 */
"cmd ::= KILL CONNECTION INTEGER"
,
/* 317 */
"cmd ::= KILL STREAM INTEGER COLON INTEGER"
,
/* 318 */
"cmd ::= KILL QUERY INTEGER COLON INTEGER"
,
/* 261 */
"expr ::= TODAY"
,
/* 262 */
"expr ::= VARIABLE"
,
/* 263 */
"expr ::= PLUS VARIABLE"
,
/* 264 */
"expr ::= MINUS VARIABLE"
,
/* 265 */
"expr ::= BOOL"
,
/* 266 */
"expr ::= NULL"
,
/* 267 */
"expr ::= ID LP exprlist RP"
,
/* 268 */
"expr ::= ID LP STAR RP"
,
/* 269 */
"expr ::= ID LP expr AS typename RP"
,
/* 270 */
"expr ::= expr IS NULL"
,
/* 271 */
"expr ::= expr IS NOT NULL"
,
/* 272 */
"expr ::= expr LT expr"
,
/* 273 */
"expr ::= expr GT expr"
,
/* 274 */
"expr ::= expr LE expr"
,
/* 275 */
"expr ::= expr GE expr"
,
/* 276 */
"expr ::= expr NE expr"
,
/* 277 */
"expr ::= expr EQ expr"
,
/* 278 */
"expr ::= expr BETWEEN expr AND expr"
,
/* 279 */
"expr ::= expr AND expr"
,
/* 280 */
"expr ::= expr OR expr"
,
/* 281 */
"expr ::= expr PLUS expr"
,
/* 282 */
"expr ::= expr MINUS expr"
,
/* 283 */
"expr ::= expr STAR expr"
,
/* 284 */
"expr ::= expr SLASH expr"
,
/* 285 */
"expr ::= expr REM expr"
,
/* 286 */
"expr ::= expr LIKE expr"
,
/* 287 */
"expr ::= expr MATCH expr"
,
/* 288 */
"expr ::= expr NMATCH expr"
,
/* 289 */
"expr ::= ID CONTAINS STRING"
,
/* 290 */
"expr ::= ID DOT ID CONTAINS STRING"
,
/* 291 */
"arrow ::= ID ARROW STRING"
,
/* 292 */
"arrow ::= ID DOT ID ARROW STRING"
,
/* 293 */
"expr ::= arrow"
,
/* 294 */
"expr ::= expr IN LP exprlist RP"
,
/* 295 */
"exprlist ::= exprlist COMMA expritem"
,
/* 296 */
"exprlist ::= expritem"
,
/* 297 */
"expritem ::= expr"
,
/* 298 */
"expritem ::="
,
/* 299 */
"cmd ::= RESET QUERY CACHE"
,
/* 300 */
"cmd ::= SYNCDB ids REPLICA"
,
/* 301 */
"cmd ::= ALTER TABLE ids cpxName ADD COLUMN columnlist"
,
/* 302 */
"cmd ::= ALTER TABLE ids cpxName DROP COLUMN ids"
,
/* 303 */
"cmd ::= ALTER TABLE ids cpxName MODIFY COLUMN columnlist"
,
/* 304 */
"cmd ::= ALTER TABLE ids cpxName ADD TAG columnlist"
,
/* 305 */
"cmd ::= ALTER TABLE ids cpxName DROP TAG ids"
,
/* 306 */
"cmd ::= ALTER TABLE ids cpxName CHANGE TAG ids ids"
,
/* 307 */
"cmd ::= ALTER TABLE ids cpxName SET TAG ids EQ tagitem"
,
/* 308 */
"cmd ::= ALTER TABLE ids cpxName MODIFY TAG columnlist"
,
/* 309 */
"cmd ::= ALTER STABLE ids cpxName ADD COLUMN columnlist"
,
/* 310 */
"cmd ::= ALTER STABLE ids cpxName DROP COLUMN ids"
,
/* 311 */
"cmd ::= ALTER STABLE ids cpxName MODIFY COLUMN columnlist"
,
/* 312 */
"cmd ::= ALTER STABLE ids cpxName ADD TAG columnlist"
,
/* 313 */
"cmd ::= ALTER STABLE ids cpxName DROP TAG ids"
,
/* 314 */
"cmd ::= ALTER STABLE ids cpxName CHANGE TAG ids ids"
,
/* 315 */
"cmd ::= ALTER STABLE ids cpxName SET TAG ids EQ tagitem"
,
/* 316 */
"cmd ::= ALTER STABLE ids cpxName MODIFY TAG columnlist"
,
/* 317 */
"cmd ::= KILL CONNECTION INTEGER"
,
/* 318 */
"cmd ::= KILL STREAM INTEGER COLON INTEGER"
,
/* 319 */
"cmd ::= KILL QUERY INTEGER COLON INTEGER"
,
};
#endif
/* NDEBUG */
...
...
@@ -1577,57 +1581,57 @@ static void yy_destructor(
** inside the C code.
*/
/********* Begin destructor definitions ***************************************/
case
21
2
:
/* exprlist */
case
2
59
:
/* selcollist */
case
27
4
:
/* sclp */
case
21
3
:
/* exprlist */
case
2
60
:
/* selcollist */
case
27
5
:
/* sclp */
{
tSqlExprListDestroy
((
yypminor
->
yy
209
));
tSqlExprListDestroy
((
yypminor
->
yy
161
));
}
break
;
case
22
7
:
/* intitemlist */
case
2
29
:
/* keep */
case
25
0
:
/* columnlist */
case
25
1
:
/* tagitemlist */
case
25
2
:
/* tagNamelist */
case
26
7
:
/* fill_opt */
case
26
8
:
/* groupby_opt */
case
27
0
:
/* orderby_opt */
case
28
3
:
/* sortlist */
case
28
7
:
/* grouplist */
{
taosArrayDestroy
(
&
(
yypminor
->
yy
209
));
case
22
8
:
/* intitemlist */
case
2
30
:
/* keep */
case
25
1
:
/* columnlist */
case
25
2
:
/* tagitemlist */
case
25
3
:
/* tagNamelist */
case
26
8
:
/* fill_opt */
case
26
9
:
/* groupby_opt */
case
27
1
:
/* orderby_opt */
case
28
4
:
/* sortlist */
case
28
8
:
/* grouplist */
{
taosArrayDestroy
(
&
(
yypminor
->
yy
161
));
}
break
;
case
24
8
:
/* create_table_list */
case
24
9
:
/* create_table_list */
{
destroyCreateTableSql
((
yypminor
->
yy4
04
));
destroyCreateTableSql
((
yypminor
->
yy4
62
));
}
break
;
case
25
5
:
/* select */
case
25
6
:
/* select */
{
destroySqlNode
((
yypminor
->
yy
160
));
destroySqlNode
((
yypminor
->
yy
276
));
}
break
;
case
26
0
:
/* from */
case
27
8
:
/* tablelist */
case
2
79
:
/* sub */
case
26
1
:
/* from */
case
27
9
:
/* tablelist */
case
2
80
:
/* sub */
{
destroyRelationInfo
((
yypminor
->
yy
530
));
destroyRelationInfo
((
yypminor
->
yy
84
));
}
break
;
case
26
1
:
/* where_opt */
case
2
69
:
/* having_opt */
case
27
6
:
/* expr */
case
28
1
:
/* timestamp */
case
28
6
:
/* arrow */
case
28
8
:
/* expritem */
case
26
2
:
/* where_opt */
case
2
70
:
/* having_opt */
case
27
7
:
/* expr */
case
28
2
:
/* timestamp */
case
28
7
:
/* arrow */
case
28
9
:
/* expritem */
{
tSqlExprDestroy
((
yypminor
->
yy5
74
));
tSqlExprDestroy
((
yypminor
->
yy5
46
));
}
break
;
case
27
3
:
/* union */
case
27
4
:
/* union */
{
destroyAllSqlNode
((
yypminor
->
yy
209
));
destroyAllSqlNode
((
yypminor
->
yy
161
));
}
break
;
/********* End destructor definitions *****************************************/
...
...
@@ -1753,15 +1757,18 @@ static YYACTIONTYPE yy_find_shift_action(
do
{
i
=
yy_shift_ofst
[
stateno
];
assert
(
i
>=
0
);
/* assert( i+YYNTOKEN<=(int)YY_NLOOKAHEAD ); */
assert
(
i
<=
YY_ACTTAB_COUNT
);
assert
(
i
+
YYNTOKEN
<=
(
int
)
YY_NLOOKAHEAD
);
assert
(
iLookAhead
!=
YYNOCODE
);
assert
(
iLookAhead
<
YYNTOKEN
);
i
+=
iLookAhead
;
if
(
i
>=
YY_NLOOKAHEAD
||
yy_lookahead
[
i
]
!=
iLookAhead
){
assert
(
i
<
(
int
)
YY_NLOOKAHEAD
);
if
(
yy_lookahead
[
i
]
!=
iLookAhead
){
#ifdef YYFALLBACK
YYCODETYPE
iFallback
;
/* Fallback token */
if
(
iLookAhead
<
sizeof
(
yyFallback
)
/
sizeof
(
yyFallback
[
0
])
&&
(
iFallback
=
yyFallback
[
iLookAhead
])
!=
0
){
assert
(
iLookAhead
<
sizeof
(
yyFallback
)
/
sizeof
(
yyFallback
[
0
])
);
iFallback
=
yyFallback
[
iLookAhead
];
if
(
iFallback
!=
0
){
#ifndef NDEBUG
if
(
yyTraceFILE
){
fprintf
(
yyTraceFILE
,
"%sFALLBACK %s => %s
\n
"
,
...
...
@@ -1776,16 +1783,8 @@ static YYACTIONTYPE yy_find_shift_action(
#ifdef YYWILDCARD
{
int
j
=
i
-
iLookAhead
+
YYWILDCARD
;
if
(
#if YY_SHIFT_MIN+YYWILDCARD<0
j
>=
0
&&
#endif
#if YY_SHIFT_MAX+YYWILDCARD>=YY_ACTTAB_COUNT
j
<
YY_ACTTAB_COUNT
&&
#endif
j
<
(
int
)(
sizeof
(
yy_lookahead
)
/
sizeof
(
yy_lookahead
[
0
]))
&&
yy_lookahead
[
j
]
==
YYWILDCARD
&&
iLookAhead
>
0
){
assert
(
j
<
(
int
)(
sizeof
(
yy_lookahead
)
/
sizeof
(
yy_lookahead
[
0
]))
);
if
(
yy_lookahead
[
j
]
==
YYWILDCARD
&&
iLookAhead
>
0
){
#ifndef NDEBUG
if
(
yyTraceFILE
){
fprintf
(
yyTraceFILE
,
"%sWILDCARD %s => %s
\n
"
,
...
...
@@ -1799,6 +1798,7 @@ static YYACTIONTYPE yy_find_shift_action(
#endif
/* YYWILDCARD */
return
yy_default
[
stateno
];
}
else
{
assert
(
i
>=
0
&&
i
<
sizeof
(
yy_action
)
/
sizeof
(
yy_action
[
0
])
);
return
yy_action
[
i
];
}
}
while
(
1
);
...
...
@@ -1917,332 +1917,654 @@ static void yy_shift(
yyTraceShift
(
yypParser
,
yyNewState
,
"Shift"
);
}
/* The following table contains information about every rule that
** is used during the reduce.
*/
static
const
struct
{
YYCODETYPE
lhs
;
/* Symbol on the left-hand side of the rule */
signed
char
nrhs
;
/* Negative of the number of RHS symbols in the rule */
}
yyRuleInfo
[]
=
{
{
203
,
-
1
},
/* (0) program ::= cmd */
{
204
,
-
2
},
/* (1) cmd ::= SHOW DATABASES */
{
204
,
-
2
},
/* (2) cmd ::= SHOW TOPICS */
{
204
,
-
2
},
/* (3) cmd ::= SHOW FUNCTIONS */
{
204
,
-
2
},
/* (4) cmd ::= SHOW MNODES */
{
204
,
-
2
},
/* (5) cmd ::= SHOW DNODES */
{
204
,
-
2
},
/* (6) cmd ::= SHOW ACCOUNTS */
{
204
,
-
2
},
/* (7) cmd ::= SHOW USERS */
{
204
,
-
2
},
/* (8) cmd ::= SHOW MODULES */
{
204
,
-
2
},
/* (9) cmd ::= SHOW QUERIES */
{
204
,
-
2
},
/* (10) cmd ::= SHOW CONNECTIONS */
{
204
,
-
2
},
/* (11) cmd ::= SHOW STREAMS */
{
204
,
-
2
},
/* (12) cmd ::= SHOW VARIABLES */
{
204
,
-
2
},
/* (13) cmd ::= SHOW SCORES */
{
204
,
-
2
},
/* (14) cmd ::= SHOW GRANTS */
{
204
,
-
2
},
/* (15) cmd ::= SHOW VNODES */
{
204
,
-
3
},
/* (16) cmd ::= SHOW VNODES ids */
{
206
,
0
},
/* (17) dbPrefix ::= */
{
206
,
-
2
},
/* (18) dbPrefix ::= ids DOT */
{
207
,
0
},
/* (19) cpxName ::= */
{
207
,
-
2
},
/* (20) cpxName ::= DOT ids */
{
204
,
-
5
},
/* (21) cmd ::= SHOW CREATE TABLE ids cpxName */
{
204
,
-
5
},
/* (22) cmd ::= SHOW CREATE STABLE ids cpxName */
{
204
,
-
4
},
/* (23) cmd ::= SHOW CREATE DATABASE ids */
{
204
,
-
3
},
/* (24) cmd ::= SHOW dbPrefix TABLES */
{
204
,
-
5
},
/* (25) cmd ::= SHOW dbPrefix TABLES LIKE STRING */
{
204
,
-
3
},
/* (26) cmd ::= SHOW dbPrefix STABLES */
{
204
,
-
5
},
/* (27) cmd ::= SHOW dbPrefix STABLES LIKE STRING */
{
204
,
-
3
},
/* (28) cmd ::= SHOW dbPrefix VGROUPS */
{
204
,
-
5
},
/* (29) cmd ::= DROP TABLE ifexists ids cpxName */
{
204
,
-
5
},
/* (30) cmd ::= DROP STABLE ifexists ids cpxName */
{
204
,
-
4
},
/* (31) cmd ::= DROP DATABASE ifexists ids */
{
204
,
-
4
},
/* (32) cmd ::= DROP TOPIC ifexists ids */
{
204
,
-
3
},
/* (33) cmd ::= DROP FUNCTION ids */
{
204
,
-
3
},
/* (34) cmd ::= DROP DNODE ids */
{
204
,
-
3
},
/* (35) cmd ::= DROP USER ids */
{
204
,
-
3
},
/* (36) cmd ::= DROP ACCOUNT ids */
{
204
,
-
2
},
/* (37) cmd ::= USE ids */
{
204
,
-
3
},
/* (38) cmd ::= DESCRIBE ids cpxName */
{
204
,
-
3
},
/* (39) cmd ::= DESC ids cpxName */
{
204
,
-
5
},
/* (40) cmd ::= ALTER USER ids PASS ids */
{
204
,
-
5
},
/* (41) cmd ::= ALTER USER ids PRIVILEGE ids */
{
204
,
-
4
},
/* (42) cmd ::= ALTER DNODE ids ids */
{
204
,
-
5
},
/* (43) cmd ::= ALTER DNODE ids ids ids */
{
204
,
-
3
},
/* (44) cmd ::= ALTER LOCAL ids */
{
204
,
-
4
},
/* (45) cmd ::= ALTER LOCAL ids ids */
{
204
,
-
4
},
/* (46) cmd ::= ALTER DATABASE ids alter_db_optr */
{
204
,
-
4
},
/* (47) cmd ::= ALTER TOPIC ids alter_topic_optr */
{
204
,
-
4
},
/* (48) cmd ::= ALTER ACCOUNT ids acct_optr */
{
204
,
-
6
},
/* (49) cmd ::= ALTER ACCOUNT ids PASS ids acct_optr */
{
204
,
-
6
},
/* (50) cmd ::= COMPACT VNODES IN LP exprlist RP */
{
205
,
-
1
},
/* (51) ids ::= ID */
{
205
,
-
1
},
/* (52) ids ::= STRING */
{
208
,
-
2
},
/* (53) ifexists ::= IF EXISTS */
{
208
,
0
},
/* (54) ifexists ::= */
{
213
,
-
3
},
/* (55) ifnotexists ::= IF NOT EXISTS */
{
213
,
0
},
/* (56) ifnotexists ::= */
{
204
,
-
3
},
/* (57) cmd ::= CREATE DNODE ids */
{
204
,
-
6
},
/* (58) cmd ::= CREATE ACCOUNT ids PASS ids acct_optr */
{
204
,
-
5
},
/* (59) cmd ::= CREATE DATABASE ifnotexists ids db_optr */
{
204
,
-
5
},
/* (60) cmd ::= CREATE TOPIC ifnotexists ids topic_optr */
{
204
,
-
8
},
/* (61) cmd ::= CREATE FUNCTION ids AS ids OUTPUTTYPE typename bufsize */
{
204
,
-
9
},
/* (62) cmd ::= CREATE AGGREGATE FUNCTION ids AS ids OUTPUTTYPE typename bufsize */
{
204
,
-
5
},
/* (63) cmd ::= CREATE USER ids PASS ids */
{
217
,
0
},
/* (64) bufsize ::= */
{
217
,
-
2
},
/* (65) bufsize ::= BUFSIZE INTEGER */
{
218
,
0
},
/* (66) pps ::= */
{
218
,
-
2
},
/* (67) pps ::= PPS INTEGER */
{
219
,
0
},
/* (68) tseries ::= */
{
219
,
-
2
},
/* (69) tseries ::= TSERIES INTEGER */
{
220
,
0
},
/* (70) dbs ::= */
{
220
,
-
2
},
/* (71) dbs ::= DBS INTEGER */
{
221
,
0
},
/* (72) streams ::= */
{
221
,
-
2
},
/* (73) streams ::= STREAMS INTEGER */
{
222
,
0
},
/* (74) storage ::= */
{
222
,
-
2
},
/* (75) storage ::= STORAGE INTEGER */
{
223
,
0
},
/* (76) qtime ::= */
{
223
,
-
2
},
/* (77) qtime ::= QTIME INTEGER */
{
224
,
0
},
/* (78) users ::= */
{
224
,
-
2
},
/* (79) users ::= USERS INTEGER */
{
225
,
0
},
/* (80) conns ::= */
{
225
,
-
2
},
/* (81) conns ::= CONNS INTEGER */
{
226
,
0
},
/* (82) state ::= */
{
226
,
-
2
},
/* (83) state ::= STATE ids */
{
211
,
-
9
},
/* (84) acct_optr ::= pps tseries storage streams qtime dbs users conns state */
{
227
,
-
3
},
/* (85) intitemlist ::= intitemlist COMMA intitem */
{
227
,
-
1
},
/* (86) intitemlist ::= intitem */
{
228
,
-
1
},
/* (87) intitem ::= INTEGER */
{
229
,
-
2
},
/* (88) keep ::= KEEP intitemlist */
{
230
,
-
2
},
/* (89) cache ::= CACHE INTEGER */
{
231
,
-
2
},
/* (90) replica ::= REPLICA INTEGER */
{
232
,
-
2
},
/* (91) quorum ::= QUORUM INTEGER */
{
233
,
-
2
},
/* (92) days ::= DAYS INTEGER */
{
234
,
-
2
},
/* (93) minrows ::= MINROWS INTEGER */
{
235
,
-
2
},
/* (94) maxrows ::= MAXROWS INTEGER */
{
236
,
-
2
},
/* (95) blocks ::= BLOCKS INTEGER */
{
237
,
-
2
},
/* (96) ctime ::= CTIME INTEGER */
{
238
,
-
2
},
/* (97) wal ::= WAL INTEGER */
{
239
,
-
2
},
/* (98) fsync ::= FSYNC INTEGER */
{
240
,
-
2
},
/* (99) comp ::= COMP INTEGER */
{
241
,
-
2
},
/* (100) prec ::= PRECISION STRING */
{
242
,
-
2
},
/* (101) update ::= UPDATE INTEGER */
{
243
,
-
2
},
/* (102) cachelast ::= CACHELAST INTEGER */
{
244
,
-
2
},
/* (103) partitions ::= PARTITIONS INTEGER */
{
214
,
0
},
/* (104) db_optr ::= */
{
214
,
-
2
},
/* (105) db_optr ::= db_optr cache */
{
214
,
-
2
},
/* (106) db_optr ::= db_optr replica */
{
214
,
-
2
},
/* (107) db_optr ::= db_optr quorum */
{
214
,
-
2
},
/* (108) db_optr ::= db_optr days */
{
214
,
-
2
},
/* (109) db_optr ::= db_optr minrows */
{
214
,
-
2
},
/* (110) db_optr ::= db_optr maxrows */
{
214
,
-
2
},
/* (111) db_optr ::= db_optr blocks */
{
214
,
-
2
},
/* (112) db_optr ::= db_optr ctime */
{
214
,
-
2
},
/* (113) db_optr ::= db_optr wal */
{
214
,
-
2
},
/* (114) db_optr ::= db_optr fsync */
{
214
,
-
2
},
/* (115) db_optr ::= db_optr comp */
{
214
,
-
2
},
/* (116) db_optr ::= db_optr prec */
{
214
,
-
2
},
/* (117) db_optr ::= db_optr keep */
{
214
,
-
2
},
/* (118) db_optr ::= db_optr update */
{
214
,
-
2
},
/* (119) db_optr ::= db_optr cachelast */
{
215
,
-
1
},
/* (120) topic_optr ::= db_optr */
{
215
,
-
2
},
/* (121) topic_optr ::= topic_optr partitions */
{
209
,
0
},
/* (122) alter_db_optr ::= */
{
209
,
-
2
},
/* (123) alter_db_optr ::= alter_db_optr replica */
{
209
,
-
2
},
/* (124) alter_db_optr ::= alter_db_optr quorum */
{
209
,
-
2
},
/* (125) alter_db_optr ::= alter_db_optr keep */
{
209
,
-
2
},
/* (126) alter_db_optr ::= alter_db_optr blocks */
{
209
,
-
2
},
/* (127) alter_db_optr ::= alter_db_optr comp */
{
209
,
-
2
},
/* (128) alter_db_optr ::= alter_db_optr update */
{
209
,
-
2
},
/* (129) alter_db_optr ::= alter_db_optr cachelast */
{
210
,
-
1
},
/* (130) alter_topic_optr ::= alter_db_optr */
{
210
,
-
2
},
/* (131) alter_topic_optr ::= alter_topic_optr partitions */
{
216
,
-
1
},
/* (132) typename ::= ids */
{
216
,
-
4
},
/* (133) typename ::= ids LP signed RP */
{
216
,
-
2
},
/* (134) typename ::= ids UNSIGNED */
{
245
,
-
1
},
/* (135) signed ::= INTEGER */
{
245
,
-
2
},
/* (136) signed ::= PLUS INTEGER */
{
245
,
-
2
},
/* (137) signed ::= MINUS INTEGER */
{
204
,
-
3
},
/* (138) cmd ::= CREATE TABLE create_table_args */
{
204
,
-
3
},
/* (139) cmd ::= CREATE TABLE create_stable_args */
{
204
,
-
3
},
/* (140) cmd ::= CREATE STABLE create_stable_args */
{
204
,
-
3
},
/* (141) cmd ::= CREATE TABLE create_table_list */
{
248
,
-
1
},
/* (142) create_table_list ::= create_from_stable */
{
248
,
-
2
},
/* (143) create_table_list ::= create_table_list create_from_stable */
{
246
,
-
6
},
/* (144) create_table_args ::= ifnotexists ids cpxName LP columnlist RP */
{
247
,
-
10
},
/* (145) create_stable_args ::= ifnotexists ids cpxName LP columnlist RP TAGS LP columnlist RP */
{
249
,
-
10
},
/* (146) create_from_stable ::= ifnotexists ids cpxName USING ids cpxName TAGS LP tagitemlist RP */
{
249
,
-
13
},
/* (147) create_from_stable ::= ifnotexists ids cpxName USING ids cpxName LP tagNamelist RP TAGS LP tagitemlist RP */
{
252
,
-
3
},
/* (148) tagNamelist ::= tagNamelist COMMA ids */
{
252
,
-
1
},
/* (149) tagNamelist ::= ids */
{
246
,
-
7
},
/* (150) create_table_args ::= ifnotexists ids cpxName to_opt split_opt AS select */
{
253
,
0
},
/* (151) to_opt ::= */
{
253
,
-
3
},
/* (152) to_opt ::= TO ids cpxName */
{
254
,
0
},
/* (153) split_opt ::= */
{
254
,
-
2
},
/* (154) split_opt ::= SPLIT ids */
{
250
,
-
3
},
/* (155) columnlist ::= columnlist COMMA column */
{
250
,
-
1
},
/* (156) columnlist ::= column */
{
257
,
-
2
},
/* (157) column ::= ids typename */
{
251
,
-
3
},
/* (158) tagitemlist ::= tagitemlist COMMA tagitem */
{
251
,
-
1
},
/* (159) tagitemlist ::= tagitem */
{
258
,
-
1
},
/* (160) tagitem ::= INTEGER */
{
258
,
-
1
},
/* (161) tagitem ::= FLOAT */
{
258
,
-
1
},
/* (162) tagitem ::= STRING */
{
258
,
-
1
},
/* (163) tagitem ::= BOOL */
{
258
,
-
1
},
/* (164) tagitem ::= NULL */
{
258
,
-
1
},
/* (165) tagitem ::= NOW */
{
258
,
-
3
},
/* (166) tagitem ::= NOW PLUS VARIABLE */
{
258
,
-
3
},
/* (167) tagitem ::= NOW MINUS VARIABLE */
{
258
,
-
2
},
/* (168) tagitem ::= MINUS INTEGER */
{
258
,
-
2
},
/* (169) tagitem ::= MINUS FLOAT */
{
258
,
-
2
},
/* (170) tagitem ::= PLUS INTEGER */
{
258
,
-
2
},
/* (171) tagitem ::= PLUS FLOAT */
{
255
,
-
15
},
/* (172) select ::= SELECT selcollist from where_opt range_option interval_option sliding_opt session_option windowstate_option fill_opt groupby_opt having_opt orderby_opt slimit_opt limit_opt */
{
255
,
-
3
},
/* (173) select ::= LP select RP */
{
273
,
-
1
},
/* (174) union ::= select */
{
273
,
-
4
},
/* (175) union ::= union UNION ALL select */
{
204
,
-
1
},
/* (176) cmd ::= union */
{
255
,
-
2
},
/* (177) select ::= SELECT selcollist */
{
274
,
-
2
},
/* (178) sclp ::= selcollist COMMA */
{
274
,
0
},
/* (179) sclp ::= */
{
259
,
-
4
},
/* (180) selcollist ::= sclp distinct expr as */
{
259
,
-
2
},
/* (181) selcollist ::= sclp STAR */
{
277
,
-
2
},
/* (182) as ::= AS ids */
{
277
,
-
1
},
/* (183) as ::= ids */
{
277
,
0
},
/* (184) as ::= */
{
275
,
-
1
},
/* (185) distinct ::= DISTINCT */
{
275
,
0
},
/* (186) distinct ::= */
{
260
,
-
2
},
/* (187) from ::= FROM tablelist */
{
260
,
-
2
},
/* (188) from ::= FROM sub */
{
279
,
-
3
},
/* (189) sub ::= LP union RP */
{
279
,
-
4
},
/* (190) sub ::= LP union RP ids */
{
279
,
-
6
},
/* (191) sub ::= sub COMMA LP union RP ids */
{
278
,
-
2
},
/* (192) tablelist ::= ids cpxName */
{
278
,
-
3
},
/* (193) tablelist ::= ids cpxName ids */
{
278
,
-
4
},
/* (194) tablelist ::= tablelist COMMA ids cpxName */
{
278
,
-
5
},
/* (195) tablelist ::= tablelist COMMA ids cpxName ids */
{
280
,
-
1
},
/* (196) tmvar ::= VARIABLE */
{
281
,
-
1
},
/* (197) timestamp ::= INTEGER */
{
281
,
-
2
},
/* (198) timestamp ::= MINUS INTEGER */
{
281
,
-
2
},
/* (199) timestamp ::= PLUS INTEGER */
{
281
,
-
1
},
/* (200) timestamp ::= STRING */
{
281
,
-
1
},
/* (201) timestamp ::= NOW */
{
281
,
-
3
},
/* (202) timestamp ::= NOW PLUS VARIABLE */
{
281
,
-
3
},
/* (203) timestamp ::= NOW MINUS VARIABLE */
{
262
,
0
},
/* (204) range_option ::= */
{
262
,
-
6
},
/* (205) range_option ::= RANGE LP timestamp COMMA timestamp RP */
{
263
,
-
4
},
/* (206) interval_option ::= intervalKey LP tmvar RP */
{
263
,
-
6
},
/* (207) interval_option ::= intervalKey LP tmvar COMMA tmvar RP */
{
263
,
0
},
/* (208) interval_option ::= */
{
282
,
-
1
},
/* (209) intervalKey ::= INTERVAL */
{
282
,
-
1
},
/* (210) intervalKey ::= EVERY */
{
265
,
0
},
/* (211) session_option ::= */
{
265
,
-
7
},
/* (212) session_option ::= SESSION LP ids cpxName COMMA tmvar RP */
{
266
,
0
},
/* (213) windowstate_option ::= */
{
266
,
-
4
},
/* (214) windowstate_option ::= STATE_WINDOW LP ids RP */
{
267
,
0
},
/* (215) fill_opt ::= */
{
267
,
-
6
},
/* (216) fill_opt ::= FILL LP ID COMMA tagitemlist RP */
{
267
,
-
4
},
/* (217) fill_opt ::= FILL LP ID RP */
{
264
,
-
4
},
/* (218) sliding_opt ::= SLIDING LP tmvar RP */
{
264
,
0
},
/* (219) sliding_opt ::= */
{
270
,
0
},
/* (220) orderby_opt ::= */
{
270
,
-
3
},
/* (221) orderby_opt ::= ORDER BY sortlist */
{
283
,
-
4
},
/* (222) sortlist ::= sortlist COMMA item sortorder */
{
283
,
-
4
},
/* (223) sortlist ::= sortlist COMMA arrow sortorder */
{
283
,
-
2
},
/* (224) sortlist ::= item sortorder */
{
283
,
-
2
},
/* (225) sortlist ::= arrow sortorder */
{
284
,
-
1
},
/* (226) item ::= ID */
{
284
,
-
3
},
/* (227) item ::= ID DOT ID */
{
285
,
-
1
},
/* (228) sortorder ::= ASC */
{
285
,
-
1
},
/* (229) sortorder ::= DESC */
{
285
,
0
},
/* (230) sortorder ::= */
{
268
,
0
},
/* (231) groupby_opt ::= */
{
268
,
-
3
},
/* (232) groupby_opt ::= GROUP BY grouplist */
{
287
,
-
3
},
/* (233) grouplist ::= grouplist COMMA item */
{
287
,
-
3
},
/* (234) grouplist ::= grouplist COMMA arrow */
{
287
,
-
1
},
/* (235) grouplist ::= item */
{
287
,
-
1
},
/* (236) grouplist ::= arrow */
{
269
,
0
},
/* (237) having_opt ::= */
{
269
,
-
2
},
/* (238) having_opt ::= HAVING expr */
{
272
,
0
},
/* (239) limit_opt ::= */
{
272
,
-
2
},
/* (240) limit_opt ::= LIMIT signed */
{
272
,
-
4
},
/* (241) limit_opt ::= LIMIT signed OFFSET signed */
{
272
,
-
4
},
/* (242) limit_opt ::= LIMIT signed COMMA signed */
{
271
,
0
},
/* (243) slimit_opt ::= */
{
271
,
-
2
},
/* (244) slimit_opt ::= SLIMIT signed */
{
271
,
-
4
},
/* (245) slimit_opt ::= SLIMIT signed SOFFSET signed */
{
271
,
-
4
},
/* (246) slimit_opt ::= SLIMIT signed COMMA signed */
{
261
,
0
},
/* (247) where_opt ::= */
{
261
,
-
2
},
/* (248) where_opt ::= WHERE expr */
{
276
,
-
3
},
/* (249) expr ::= LP expr RP */
{
276
,
-
1
},
/* (250) expr ::= ID */
{
276
,
-
3
},
/* (251) expr ::= ID DOT ID */
{
276
,
-
3
},
/* (252) expr ::= ID DOT STAR */
{
276
,
-
1
},
/* (253) expr ::= INTEGER */
{
276
,
-
2
},
/* (254) expr ::= MINUS INTEGER */
{
276
,
-
2
},
/* (255) expr ::= PLUS INTEGER */
{
276
,
-
1
},
/* (256) expr ::= FLOAT */
{
276
,
-
2
},
/* (257) expr ::= MINUS FLOAT */
{
276
,
-
2
},
/* (258) expr ::= PLUS FLOAT */
{
276
,
-
1
},
/* (259) expr ::= STRING */
{
276
,
-
1
},
/* (260) expr ::= NOW */
{
276
,
-
1
},
/* (261) expr ::= VARIABLE */
{
276
,
-
2
},
/* (262) expr ::= PLUS VARIABLE */
{
276
,
-
2
},
/* (263) expr ::= MINUS VARIABLE */
{
276
,
-
1
},
/* (264) expr ::= BOOL */
{
276
,
-
1
},
/* (265) expr ::= NULL */
{
276
,
-
4
},
/* (266) expr ::= ID LP exprlist RP */
{
276
,
-
4
},
/* (267) expr ::= ID LP STAR RP */
{
276
,
-
6
},
/* (268) expr ::= ID LP expr AS typename RP */
{
276
,
-
3
},
/* (269) expr ::= expr IS NULL */
{
276
,
-
4
},
/* (270) expr ::= expr IS NOT NULL */
{
276
,
-
3
},
/* (271) expr ::= expr LT expr */
{
276
,
-
3
},
/* (272) expr ::= expr GT expr */
{
276
,
-
3
},
/* (273) expr ::= expr LE expr */
{
276
,
-
3
},
/* (274) expr ::= expr GE expr */
{
276
,
-
3
},
/* (275) expr ::= expr NE expr */
{
276
,
-
3
},
/* (276) expr ::= expr EQ expr */
{
276
,
-
5
},
/* (277) expr ::= expr BETWEEN expr AND expr */
{
276
,
-
3
},
/* (278) expr ::= expr AND expr */
{
276
,
-
3
},
/* (279) expr ::= expr OR expr */
{
276
,
-
3
},
/* (280) expr ::= expr PLUS expr */
{
276
,
-
3
},
/* (281) expr ::= expr MINUS expr */
{
276
,
-
3
},
/* (282) expr ::= expr STAR expr */
{
276
,
-
3
},
/* (283) expr ::= expr SLASH expr */
{
276
,
-
3
},
/* (284) expr ::= expr REM expr */
{
276
,
-
3
},
/* (285) expr ::= expr LIKE expr */
{
276
,
-
3
},
/* (286) expr ::= expr MATCH expr */
{
276
,
-
3
},
/* (287) expr ::= expr NMATCH expr */
{
276
,
-
3
},
/* (288) expr ::= ID CONTAINS STRING */
{
276
,
-
5
},
/* (289) expr ::= ID DOT ID CONTAINS STRING */
{
286
,
-
3
},
/* (290) arrow ::= ID ARROW STRING */
{
286
,
-
5
},
/* (291) arrow ::= ID DOT ID ARROW STRING */
{
276
,
-
1
},
/* (292) expr ::= arrow */
{
276
,
-
5
},
/* (293) expr ::= expr IN LP exprlist RP */
{
212
,
-
3
},
/* (294) exprlist ::= exprlist COMMA expritem */
{
212
,
-
1
},
/* (295) exprlist ::= expritem */
{
288
,
-
1
},
/* (296) expritem ::= expr */
{
288
,
0
},
/* (297) expritem ::= */
{
204
,
-
3
},
/* (298) cmd ::= RESET QUERY CACHE */
{
204
,
-
3
},
/* (299) cmd ::= SYNCDB ids REPLICA */
{
204
,
-
7
},
/* (300) cmd ::= ALTER TABLE ids cpxName ADD COLUMN columnlist */
{
204
,
-
7
},
/* (301) cmd ::= ALTER TABLE ids cpxName DROP COLUMN ids */
{
204
,
-
7
},
/* (302) cmd ::= ALTER TABLE ids cpxName MODIFY COLUMN columnlist */
{
204
,
-
7
},
/* (303) cmd ::= ALTER TABLE ids cpxName ADD TAG columnlist */
{
204
,
-
7
},
/* (304) cmd ::= ALTER TABLE ids cpxName DROP TAG ids */
{
204
,
-
8
},
/* (305) cmd ::= ALTER TABLE ids cpxName CHANGE TAG ids ids */
{
204
,
-
9
},
/* (306) cmd ::= ALTER TABLE ids cpxName SET TAG ids EQ tagitem */
{
204
,
-
7
},
/* (307) cmd ::= ALTER TABLE ids cpxName MODIFY TAG columnlist */
{
204
,
-
7
},
/* (308) cmd ::= ALTER STABLE ids cpxName ADD COLUMN columnlist */
{
204
,
-
7
},
/* (309) cmd ::= ALTER STABLE ids cpxName DROP COLUMN ids */
{
204
,
-
7
},
/* (310) cmd ::= ALTER STABLE ids cpxName MODIFY COLUMN columnlist */
{
204
,
-
7
},
/* (311) cmd ::= ALTER STABLE ids cpxName ADD TAG columnlist */
{
204
,
-
7
},
/* (312) cmd ::= ALTER STABLE ids cpxName DROP TAG ids */
{
204
,
-
8
},
/* (313) cmd ::= ALTER STABLE ids cpxName CHANGE TAG ids ids */
{
204
,
-
9
},
/* (314) cmd ::= ALTER STABLE ids cpxName SET TAG ids EQ tagitem */
{
204
,
-
7
},
/* (315) cmd ::= ALTER STABLE ids cpxName MODIFY TAG columnlist */
{
204
,
-
3
},
/* (316) cmd ::= KILL CONNECTION INTEGER */
{
204
,
-
5
},
/* (317) cmd ::= KILL STREAM INTEGER COLON INTEGER */
{
204
,
-
5
},
/* (318) cmd ::= KILL QUERY INTEGER COLON INTEGER */
/* For rule J, yyRuleInfoLhs[J] contains the symbol on the left-hand side
** of that rule */
static
const
YYCODETYPE
yyRuleInfoLhs
[]
=
{
204
,
/* (0) program ::= cmd */
205
,
/* (1) cmd ::= SHOW DATABASES */
205
,
/* (2) cmd ::= SHOW TOPICS */
205
,
/* (3) cmd ::= SHOW FUNCTIONS */
205
,
/* (4) cmd ::= SHOW MNODES */
205
,
/* (5) cmd ::= SHOW DNODES */
205
,
/* (6) cmd ::= SHOW ACCOUNTS */
205
,
/* (7) cmd ::= SHOW USERS */
205
,
/* (8) cmd ::= SHOW MODULES */
205
,
/* (9) cmd ::= SHOW QUERIES */
205
,
/* (10) cmd ::= SHOW CONNECTIONS */
205
,
/* (11) cmd ::= SHOW STREAMS */
205
,
/* (12) cmd ::= SHOW VARIABLES */
205
,
/* (13) cmd ::= SHOW SCORES */
205
,
/* (14) cmd ::= SHOW GRANTS */
205
,
/* (15) cmd ::= SHOW VNODES */
205
,
/* (16) cmd ::= SHOW VNODES ids */
207
,
/* (17) dbPrefix ::= */
207
,
/* (18) dbPrefix ::= ids DOT */
208
,
/* (19) cpxName ::= */
208
,
/* (20) cpxName ::= DOT ids */
205
,
/* (21) cmd ::= SHOW CREATE TABLE ids cpxName */
205
,
/* (22) cmd ::= SHOW CREATE STABLE ids cpxName */
205
,
/* (23) cmd ::= SHOW CREATE DATABASE ids */
205
,
/* (24) cmd ::= SHOW dbPrefix TABLES */
205
,
/* (25) cmd ::= SHOW dbPrefix TABLES LIKE STRING */
205
,
/* (26) cmd ::= SHOW dbPrefix STABLES */
205
,
/* (27) cmd ::= SHOW dbPrefix STABLES LIKE STRING */
205
,
/* (28) cmd ::= SHOW dbPrefix VGROUPS */
205
,
/* (29) cmd ::= DROP TABLE ifexists ids cpxName */
205
,
/* (30) cmd ::= DROP STABLE ifexists ids cpxName */
205
,
/* (31) cmd ::= DROP DATABASE ifexists ids */
205
,
/* (32) cmd ::= DROP TOPIC ifexists ids */
205
,
/* (33) cmd ::= DROP FUNCTION ids */
205
,
/* (34) cmd ::= DROP DNODE ids */
205
,
/* (35) cmd ::= DROP USER ids */
205
,
/* (36) cmd ::= DROP ACCOUNT ids */
205
,
/* (37) cmd ::= USE ids */
205
,
/* (38) cmd ::= DESCRIBE ids cpxName */
205
,
/* (39) cmd ::= DESC ids cpxName */
205
,
/* (40) cmd ::= ALTER USER ids PASS ids */
205
,
/* (41) cmd ::= ALTER USER ids PRIVILEGE ids */
205
,
/* (42) cmd ::= ALTER DNODE ids ids */
205
,
/* (43) cmd ::= ALTER DNODE ids ids ids */
205
,
/* (44) cmd ::= ALTER LOCAL ids */
205
,
/* (45) cmd ::= ALTER LOCAL ids ids */
205
,
/* (46) cmd ::= ALTER DATABASE ids alter_db_optr */
205
,
/* (47) cmd ::= ALTER TOPIC ids alter_topic_optr */
205
,
/* (48) cmd ::= ALTER ACCOUNT ids acct_optr */
205
,
/* (49) cmd ::= ALTER ACCOUNT ids PASS ids acct_optr */
205
,
/* (50) cmd ::= COMPACT VNODES IN LP exprlist RP */
206
,
/* (51) ids ::= ID */
206
,
/* (52) ids ::= STRING */
209
,
/* (53) ifexists ::= IF EXISTS */
209
,
/* (54) ifexists ::= */
214
,
/* (55) ifnotexists ::= IF NOT EXISTS */
214
,
/* (56) ifnotexists ::= */
205
,
/* (57) cmd ::= CREATE DNODE ids */
205
,
/* (58) cmd ::= CREATE ACCOUNT ids PASS ids acct_optr */
205
,
/* (59) cmd ::= CREATE DATABASE ifnotexists ids db_optr */
205
,
/* (60) cmd ::= CREATE TOPIC ifnotexists ids topic_optr */
205
,
/* (61) cmd ::= CREATE FUNCTION ids AS ids OUTPUTTYPE typename bufsize */
205
,
/* (62) cmd ::= CREATE AGGREGATE FUNCTION ids AS ids OUTPUTTYPE typename bufsize */
205
,
/* (63) cmd ::= CREATE USER ids PASS ids */
218
,
/* (64) bufsize ::= */
218
,
/* (65) bufsize ::= BUFSIZE INTEGER */
219
,
/* (66) pps ::= */
219
,
/* (67) pps ::= PPS INTEGER */
220
,
/* (68) tseries ::= */
220
,
/* (69) tseries ::= TSERIES INTEGER */
221
,
/* (70) dbs ::= */
221
,
/* (71) dbs ::= DBS INTEGER */
222
,
/* (72) streams ::= */
222
,
/* (73) streams ::= STREAMS INTEGER */
223
,
/* (74) storage ::= */
223
,
/* (75) storage ::= STORAGE INTEGER */
224
,
/* (76) qtime ::= */
224
,
/* (77) qtime ::= QTIME INTEGER */
225
,
/* (78) users ::= */
225
,
/* (79) users ::= USERS INTEGER */
226
,
/* (80) conns ::= */
226
,
/* (81) conns ::= CONNS INTEGER */
227
,
/* (82) state ::= */
227
,
/* (83) state ::= STATE ids */
212
,
/* (84) acct_optr ::= pps tseries storage streams qtime dbs users conns state */
228
,
/* (85) intitemlist ::= intitemlist COMMA intitem */
228
,
/* (86) intitemlist ::= intitem */
229
,
/* (87) intitem ::= INTEGER */
230
,
/* (88) keep ::= KEEP intitemlist */
231
,
/* (89) cache ::= CACHE INTEGER */
232
,
/* (90) replica ::= REPLICA INTEGER */
233
,
/* (91) quorum ::= QUORUM INTEGER */
234
,
/* (92) days ::= DAYS INTEGER */
235
,
/* (93) minrows ::= MINROWS INTEGER */
236
,
/* (94) maxrows ::= MAXROWS INTEGER */
237
,
/* (95) blocks ::= BLOCKS INTEGER */
238
,
/* (96) ctime ::= CTIME INTEGER */
239
,
/* (97) wal ::= WAL INTEGER */
240
,
/* (98) fsync ::= FSYNC INTEGER */
241
,
/* (99) comp ::= COMP INTEGER */
242
,
/* (100) prec ::= PRECISION STRING */
243
,
/* (101) update ::= UPDATE INTEGER */
244
,
/* (102) cachelast ::= CACHELAST INTEGER */
245
,
/* (103) partitions ::= PARTITIONS INTEGER */
215
,
/* (104) db_optr ::= */
215
,
/* (105) db_optr ::= db_optr cache */
215
,
/* (106) db_optr ::= db_optr replica */
215
,
/* (107) db_optr ::= db_optr quorum */
215
,
/* (108) db_optr ::= db_optr days */
215
,
/* (109) db_optr ::= db_optr minrows */
215
,
/* (110) db_optr ::= db_optr maxrows */
215
,
/* (111) db_optr ::= db_optr blocks */
215
,
/* (112) db_optr ::= db_optr ctime */
215
,
/* (113) db_optr ::= db_optr wal */
215
,
/* (114) db_optr ::= db_optr fsync */
215
,
/* (115) db_optr ::= db_optr comp */
215
,
/* (116) db_optr ::= db_optr prec */
215
,
/* (117) db_optr ::= db_optr keep */
215
,
/* (118) db_optr ::= db_optr update */
215
,
/* (119) db_optr ::= db_optr cachelast */
216
,
/* (120) topic_optr ::= db_optr */
216
,
/* (121) topic_optr ::= topic_optr partitions */
210
,
/* (122) alter_db_optr ::= */
210
,
/* (123) alter_db_optr ::= alter_db_optr replica */
210
,
/* (124) alter_db_optr ::= alter_db_optr quorum */
210
,
/* (125) alter_db_optr ::= alter_db_optr keep */
210
,
/* (126) alter_db_optr ::= alter_db_optr blocks */
210
,
/* (127) alter_db_optr ::= alter_db_optr comp */
210
,
/* (128) alter_db_optr ::= alter_db_optr update */
210
,
/* (129) alter_db_optr ::= alter_db_optr cachelast */
211
,
/* (130) alter_topic_optr ::= alter_db_optr */
211
,
/* (131) alter_topic_optr ::= alter_topic_optr partitions */
217
,
/* (132) typename ::= ids */
217
,
/* (133) typename ::= ids LP signed RP */
217
,
/* (134) typename ::= ids UNSIGNED */
246
,
/* (135) signed ::= INTEGER */
246
,
/* (136) signed ::= PLUS INTEGER */
246
,
/* (137) signed ::= MINUS INTEGER */
205
,
/* (138) cmd ::= CREATE TABLE create_table_args */
205
,
/* (139) cmd ::= CREATE TABLE create_stable_args */
205
,
/* (140) cmd ::= CREATE STABLE create_stable_args */
205
,
/* (141) cmd ::= CREATE TABLE create_table_list */
249
,
/* (142) create_table_list ::= create_from_stable */
249
,
/* (143) create_table_list ::= create_table_list create_from_stable */
247
,
/* (144) create_table_args ::= ifnotexists ids cpxName LP columnlist RP */
248
,
/* (145) create_stable_args ::= ifnotexists ids cpxName LP columnlist RP TAGS LP columnlist RP */
250
,
/* (146) create_from_stable ::= ifnotexists ids cpxName USING ids cpxName TAGS LP tagitemlist RP */
250
,
/* (147) create_from_stable ::= ifnotexists ids cpxName USING ids cpxName LP tagNamelist RP TAGS LP tagitemlist RP */
253
,
/* (148) tagNamelist ::= tagNamelist COMMA ids */
253
,
/* (149) tagNamelist ::= ids */
247
,
/* (150) create_table_args ::= ifnotexists ids cpxName to_opt split_opt AS select */
254
,
/* (151) to_opt ::= */
254
,
/* (152) to_opt ::= TO ids cpxName */
255
,
/* (153) split_opt ::= */
255
,
/* (154) split_opt ::= SPLIT ids */
251
,
/* (155) columnlist ::= columnlist COMMA column */
251
,
/* (156) columnlist ::= column */
258
,
/* (157) column ::= ids typename */
252
,
/* (158) tagitemlist ::= tagitemlist COMMA tagitem */
252
,
/* (159) tagitemlist ::= tagitem */
259
,
/* (160) tagitem ::= INTEGER */
259
,
/* (161) tagitem ::= FLOAT */
259
,
/* (162) tagitem ::= STRING */
259
,
/* (163) tagitem ::= BOOL */
259
,
/* (164) tagitem ::= NULL */
259
,
/* (165) tagitem ::= NOW */
259
,
/* (166) tagitem ::= NOW PLUS VARIABLE */
259
,
/* (167) tagitem ::= NOW MINUS VARIABLE */
259
,
/* (168) tagitem ::= MINUS INTEGER */
259
,
/* (169) tagitem ::= MINUS FLOAT */
259
,
/* (170) tagitem ::= PLUS INTEGER */
259
,
/* (171) tagitem ::= PLUS FLOAT */
256
,
/* (172) select ::= SELECT selcollist from where_opt range_option interval_option sliding_opt session_option windowstate_option fill_opt groupby_opt having_opt orderby_opt slimit_opt limit_opt */
256
,
/* (173) select ::= LP select RP */
274
,
/* (174) union ::= select */
274
,
/* (175) union ::= union UNION ALL select */
205
,
/* (176) cmd ::= union */
256
,
/* (177) select ::= SELECT selcollist */
275
,
/* (178) sclp ::= selcollist COMMA */
275
,
/* (179) sclp ::= */
260
,
/* (180) selcollist ::= sclp distinct expr as */
260
,
/* (181) selcollist ::= sclp STAR */
278
,
/* (182) as ::= AS ids */
278
,
/* (183) as ::= ids */
278
,
/* (184) as ::= */
276
,
/* (185) distinct ::= DISTINCT */
276
,
/* (186) distinct ::= */
261
,
/* (187) from ::= FROM tablelist */
261
,
/* (188) from ::= FROM sub */
280
,
/* (189) sub ::= LP union RP */
280
,
/* (190) sub ::= LP union RP ids */
280
,
/* (191) sub ::= sub COMMA LP union RP ids */
279
,
/* (192) tablelist ::= ids cpxName */
279
,
/* (193) tablelist ::= ids cpxName ids */
279
,
/* (194) tablelist ::= tablelist COMMA ids cpxName */
279
,
/* (195) tablelist ::= tablelist COMMA ids cpxName ids */
281
,
/* (196) tmvar ::= VARIABLE */
282
,
/* (197) timestamp ::= INTEGER */
282
,
/* (198) timestamp ::= MINUS INTEGER */
282
,
/* (199) timestamp ::= PLUS INTEGER */
282
,
/* (200) timestamp ::= STRING */
282
,
/* (201) timestamp ::= NOW */
282
,
/* (202) timestamp ::= NOW PLUS VARIABLE */
282
,
/* (203) timestamp ::= NOW MINUS VARIABLE */
263
,
/* (204) range_option ::= */
263
,
/* (205) range_option ::= RANGE LP timestamp COMMA timestamp RP */
264
,
/* (206) interval_option ::= intervalKey LP tmvar RP */
264
,
/* (207) interval_option ::= intervalKey LP tmvar COMMA tmvar RP */
264
,
/* (208) interval_option ::= */
283
,
/* (209) intervalKey ::= INTERVAL */
283
,
/* (210) intervalKey ::= EVERY */
266
,
/* (211) session_option ::= */
266
,
/* (212) session_option ::= SESSION LP ids cpxName COMMA tmvar RP */
267
,
/* (213) windowstate_option ::= */
267
,
/* (214) windowstate_option ::= STATE_WINDOW LP ids RP */
268
,
/* (215) fill_opt ::= */
268
,
/* (216) fill_opt ::= FILL LP ID COMMA tagitemlist RP */
268
,
/* (217) fill_opt ::= FILL LP ID RP */
265
,
/* (218) sliding_opt ::= SLIDING LP tmvar RP */
265
,
/* (219) sliding_opt ::= */
271
,
/* (220) orderby_opt ::= */
271
,
/* (221) orderby_opt ::= ORDER BY sortlist */
284
,
/* (222) sortlist ::= sortlist COMMA item sortorder */
284
,
/* (223) sortlist ::= sortlist COMMA arrow sortorder */
284
,
/* (224) sortlist ::= item sortorder */
284
,
/* (225) sortlist ::= arrow sortorder */
285
,
/* (226) item ::= ID */
285
,
/* (227) item ::= ID DOT ID */
286
,
/* (228) sortorder ::= ASC */
286
,
/* (229) sortorder ::= DESC */
286
,
/* (230) sortorder ::= */
269
,
/* (231) groupby_opt ::= */
269
,
/* (232) groupby_opt ::= GROUP BY grouplist */
288
,
/* (233) grouplist ::= grouplist COMMA item */
288
,
/* (234) grouplist ::= grouplist COMMA arrow */
288
,
/* (235) grouplist ::= item */
288
,
/* (236) grouplist ::= arrow */
270
,
/* (237) having_opt ::= */
270
,
/* (238) having_opt ::= HAVING expr */
273
,
/* (239) limit_opt ::= */
273
,
/* (240) limit_opt ::= LIMIT signed */
273
,
/* (241) limit_opt ::= LIMIT signed OFFSET signed */
273
,
/* (242) limit_opt ::= LIMIT signed COMMA signed */
272
,
/* (243) slimit_opt ::= */
272
,
/* (244) slimit_opt ::= SLIMIT signed */
272
,
/* (245) slimit_opt ::= SLIMIT signed SOFFSET signed */
272
,
/* (246) slimit_opt ::= SLIMIT signed COMMA signed */
262
,
/* (247) where_opt ::= */
262
,
/* (248) where_opt ::= WHERE expr */
277
,
/* (249) expr ::= LP expr RP */
277
,
/* (250) expr ::= ID */
277
,
/* (251) expr ::= ID DOT ID */
277
,
/* (252) expr ::= ID DOT STAR */
277
,
/* (253) expr ::= INTEGER */
277
,
/* (254) expr ::= MINUS INTEGER */
277
,
/* (255) expr ::= PLUS INTEGER */
277
,
/* (256) expr ::= FLOAT */
277
,
/* (257) expr ::= MINUS FLOAT */
277
,
/* (258) expr ::= PLUS FLOAT */
277
,
/* (259) expr ::= STRING */
277
,
/* (260) expr ::= NOW */
277
,
/* (261) expr ::= TODAY */
277
,
/* (262) expr ::= VARIABLE */
277
,
/* (263) expr ::= PLUS VARIABLE */
277
,
/* (264) expr ::= MINUS VARIABLE */
277
,
/* (265) expr ::= BOOL */
277
,
/* (266) expr ::= NULL */
277
,
/* (267) expr ::= ID LP exprlist RP */
277
,
/* (268) expr ::= ID LP STAR RP */
277
,
/* (269) expr ::= ID LP expr AS typename RP */
277
,
/* (270) expr ::= expr IS NULL */
277
,
/* (271) expr ::= expr IS NOT NULL */
277
,
/* (272) expr ::= expr LT expr */
277
,
/* (273) expr ::= expr GT expr */
277
,
/* (274) expr ::= expr LE expr */
277
,
/* (275) expr ::= expr GE expr */
277
,
/* (276) expr ::= expr NE expr */
277
,
/* (277) expr ::= expr EQ expr */
277
,
/* (278) expr ::= expr BETWEEN expr AND expr */
277
,
/* (279) expr ::= expr AND expr */
277
,
/* (280) expr ::= expr OR expr */
277
,
/* (281) expr ::= expr PLUS expr */
277
,
/* (282) expr ::= expr MINUS expr */
277
,
/* (283) expr ::= expr STAR expr */
277
,
/* (284) expr ::= expr SLASH expr */
277
,
/* (285) expr ::= expr REM expr */
277
,
/* (286) expr ::= expr LIKE expr */
277
,
/* (287) expr ::= expr MATCH expr */
277
,
/* (288) expr ::= expr NMATCH expr */
277
,
/* (289) expr ::= ID CONTAINS STRING */
277
,
/* (290) expr ::= ID DOT ID CONTAINS STRING */
287
,
/* (291) arrow ::= ID ARROW STRING */
287
,
/* (292) arrow ::= ID DOT ID ARROW STRING */
277
,
/* (293) expr ::= arrow */
277
,
/* (294) expr ::= expr IN LP exprlist RP */
213
,
/* (295) exprlist ::= exprlist COMMA expritem */
213
,
/* (296) exprlist ::= expritem */
289
,
/* (297) expritem ::= expr */
289
,
/* (298) expritem ::= */
205
,
/* (299) cmd ::= RESET QUERY CACHE */
205
,
/* (300) cmd ::= SYNCDB ids REPLICA */
205
,
/* (301) cmd ::= ALTER TABLE ids cpxName ADD COLUMN columnlist */
205
,
/* (302) cmd ::= ALTER TABLE ids cpxName DROP COLUMN ids */
205
,
/* (303) cmd ::= ALTER TABLE ids cpxName MODIFY COLUMN columnlist */
205
,
/* (304) cmd ::= ALTER TABLE ids cpxName ADD TAG columnlist */
205
,
/* (305) cmd ::= ALTER TABLE ids cpxName DROP TAG ids */
205
,
/* (306) cmd ::= ALTER TABLE ids cpxName CHANGE TAG ids ids */
205
,
/* (307) cmd ::= ALTER TABLE ids cpxName SET TAG ids EQ tagitem */
205
,
/* (308) cmd ::= ALTER TABLE ids cpxName MODIFY TAG columnlist */
205
,
/* (309) cmd ::= ALTER STABLE ids cpxName ADD COLUMN columnlist */
205
,
/* (310) cmd ::= ALTER STABLE ids cpxName DROP COLUMN ids */
205
,
/* (311) cmd ::= ALTER STABLE ids cpxName MODIFY COLUMN columnlist */
205
,
/* (312) cmd ::= ALTER STABLE ids cpxName ADD TAG columnlist */
205
,
/* (313) cmd ::= ALTER STABLE ids cpxName DROP TAG ids */
205
,
/* (314) cmd ::= ALTER STABLE ids cpxName CHANGE TAG ids ids */
205
,
/* (315) cmd ::= ALTER STABLE ids cpxName SET TAG ids EQ tagitem */
205
,
/* (316) cmd ::= ALTER STABLE ids cpxName MODIFY TAG columnlist */
205
,
/* (317) cmd ::= KILL CONNECTION INTEGER */
205
,
/* (318) cmd ::= KILL STREAM INTEGER COLON INTEGER */
205
,
/* (319) cmd ::= KILL QUERY INTEGER COLON INTEGER */
};
/* For rule J, yyRuleInfoNRhs[J] contains the negative of the number
** of symbols on the right-hand side of that rule. */
static
const
signed
char
yyRuleInfoNRhs
[]
=
{
-
1
,
/* (0) program ::= cmd */
-
2
,
/* (1) cmd ::= SHOW DATABASES */
-
2
,
/* (2) cmd ::= SHOW TOPICS */
-
2
,
/* (3) cmd ::= SHOW FUNCTIONS */
-
2
,
/* (4) cmd ::= SHOW MNODES */
-
2
,
/* (5) cmd ::= SHOW DNODES */
-
2
,
/* (6) cmd ::= SHOW ACCOUNTS */
-
2
,
/* (7) cmd ::= SHOW USERS */
-
2
,
/* (8) cmd ::= SHOW MODULES */
-
2
,
/* (9) cmd ::= SHOW QUERIES */
-
2
,
/* (10) cmd ::= SHOW CONNECTIONS */
-
2
,
/* (11) cmd ::= SHOW STREAMS */
-
2
,
/* (12) cmd ::= SHOW VARIABLES */
-
2
,
/* (13) cmd ::= SHOW SCORES */
-
2
,
/* (14) cmd ::= SHOW GRANTS */
-
2
,
/* (15) cmd ::= SHOW VNODES */
-
3
,
/* (16) cmd ::= SHOW VNODES ids */
0
,
/* (17) dbPrefix ::= */
-
2
,
/* (18) dbPrefix ::= ids DOT */
0
,
/* (19) cpxName ::= */
-
2
,
/* (20) cpxName ::= DOT ids */
-
5
,
/* (21) cmd ::= SHOW CREATE TABLE ids cpxName */
-
5
,
/* (22) cmd ::= SHOW CREATE STABLE ids cpxName */
-
4
,
/* (23) cmd ::= SHOW CREATE DATABASE ids */
-
3
,
/* (24) cmd ::= SHOW dbPrefix TABLES */
-
5
,
/* (25) cmd ::= SHOW dbPrefix TABLES LIKE STRING */
-
3
,
/* (26) cmd ::= SHOW dbPrefix STABLES */
-
5
,
/* (27) cmd ::= SHOW dbPrefix STABLES LIKE STRING */
-
3
,
/* (28) cmd ::= SHOW dbPrefix VGROUPS */
-
5
,
/* (29) cmd ::= DROP TABLE ifexists ids cpxName */
-
5
,
/* (30) cmd ::= DROP STABLE ifexists ids cpxName */
-
4
,
/* (31) cmd ::= DROP DATABASE ifexists ids */
-
4
,
/* (32) cmd ::= DROP TOPIC ifexists ids */
-
3
,
/* (33) cmd ::= DROP FUNCTION ids */
-
3
,
/* (34) cmd ::= DROP DNODE ids */
-
3
,
/* (35) cmd ::= DROP USER ids */
-
3
,
/* (36) cmd ::= DROP ACCOUNT ids */
-
2
,
/* (37) cmd ::= USE ids */
-
3
,
/* (38) cmd ::= DESCRIBE ids cpxName */
-
3
,
/* (39) cmd ::= DESC ids cpxName */
-
5
,
/* (40) cmd ::= ALTER USER ids PASS ids */
-
5
,
/* (41) cmd ::= ALTER USER ids PRIVILEGE ids */
-
4
,
/* (42) cmd ::= ALTER DNODE ids ids */
-
5
,
/* (43) cmd ::= ALTER DNODE ids ids ids */
-
3
,
/* (44) cmd ::= ALTER LOCAL ids */
-
4
,
/* (45) cmd ::= ALTER LOCAL ids ids */
-
4
,
/* (46) cmd ::= ALTER DATABASE ids alter_db_optr */
-
4
,
/* (47) cmd ::= ALTER TOPIC ids alter_topic_optr */
-
4
,
/* (48) cmd ::= ALTER ACCOUNT ids acct_optr */
-
6
,
/* (49) cmd ::= ALTER ACCOUNT ids PASS ids acct_optr */
-
6
,
/* (50) cmd ::= COMPACT VNODES IN LP exprlist RP */
-
1
,
/* (51) ids ::= ID */
-
1
,
/* (52) ids ::= STRING */
-
2
,
/* (53) ifexists ::= IF EXISTS */
0
,
/* (54) ifexists ::= */
-
3
,
/* (55) ifnotexists ::= IF NOT EXISTS */
0
,
/* (56) ifnotexists ::= */
-
3
,
/* (57) cmd ::= CREATE DNODE ids */
-
6
,
/* (58) cmd ::= CREATE ACCOUNT ids PASS ids acct_optr */
-
5
,
/* (59) cmd ::= CREATE DATABASE ifnotexists ids db_optr */
-
5
,
/* (60) cmd ::= CREATE TOPIC ifnotexists ids topic_optr */
-
8
,
/* (61) cmd ::= CREATE FUNCTION ids AS ids OUTPUTTYPE typename bufsize */
-
9
,
/* (62) cmd ::= CREATE AGGREGATE FUNCTION ids AS ids OUTPUTTYPE typename bufsize */
-
5
,
/* (63) cmd ::= CREATE USER ids PASS ids */
0
,
/* (64) bufsize ::= */
-
2
,
/* (65) bufsize ::= BUFSIZE INTEGER */
0
,
/* (66) pps ::= */
-
2
,
/* (67) pps ::= PPS INTEGER */
0
,
/* (68) tseries ::= */
-
2
,
/* (69) tseries ::= TSERIES INTEGER */
0
,
/* (70) dbs ::= */
-
2
,
/* (71) dbs ::= DBS INTEGER */
0
,
/* (72) streams ::= */
-
2
,
/* (73) streams ::= STREAMS INTEGER */
0
,
/* (74) storage ::= */
-
2
,
/* (75) storage ::= STORAGE INTEGER */
0
,
/* (76) qtime ::= */
-
2
,
/* (77) qtime ::= QTIME INTEGER */
0
,
/* (78) users ::= */
-
2
,
/* (79) users ::= USERS INTEGER */
0
,
/* (80) conns ::= */
-
2
,
/* (81) conns ::= CONNS INTEGER */
0
,
/* (82) state ::= */
-
2
,
/* (83) state ::= STATE ids */
-
9
,
/* (84) acct_optr ::= pps tseries storage streams qtime dbs users conns state */
-
3
,
/* (85) intitemlist ::= intitemlist COMMA intitem */
-
1
,
/* (86) intitemlist ::= intitem */
-
1
,
/* (87) intitem ::= INTEGER */
-
2
,
/* (88) keep ::= KEEP intitemlist */
-
2
,
/* (89) cache ::= CACHE INTEGER */
-
2
,
/* (90) replica ::= REPLICA INTEGER */
-
2
,
/* (91) quorum ::= QUORUM INTEGER */
-
2
,
/* (92) days ::= DAYS INTEGER */
-
2
,
/* (93) minrows ::= MINROWS INTEGER */
-
2
,
/* (94) maxrows ::= MAXROWS INTEGER */
-
2
,
/* (95) blocks ::= BLOCKS INTEGER */
-
2
,
/* (96) ctime ::= CTIME INTEGER */
-
2
,
/* (97) wal ::= WAL INTEGER */
-
2
,
/* (98) fsync ::= FSYNC INTEGER */
-
2
,
/* (99) comp ::= COMP INTEGER */
-
2
,
/* (100) prec ::= PRECISION STRING */
-
2
,
/* (101) update ::= UPDATE INTEGER */
-
2
,
/* (102) cachelast ::= CACHELAST INTEGER */
-
2
,
/* (103) partitions ::= PARTITIONS INTEGER */
0
,
/* (104) db_optr ::= */
-
2
,
/* (105) db_optr ::= db_optr cache */
-
2
,
/* (106) db_optr ::= db_optr replica */
-
2
,
/* (107) db_optr ::= db_optr quorum */
-
2
,
/* (108) db_optr ::= db_optr days */
-
2
,
/* (109) db_optr ::= db_optr minrows */
-
2
,
/* (110) db_optr ::= db_optr maxrows */
-
2
,
/* (111) db_optr ::= db_optr blocks */
-
2
,
/* (112) db_optr ::= db_optr ctime */
-
2
,
/* (113) db_optr ::= db_optr wal */
-
2
,
/* (114) db_optr ::= db_optr fsync */
-
2
,
/* (115) db_optr ::= db_optr comp */
-
2
,
/* (116) db_optr ::= db_optr prec */
-
2
,
/* (117) db_optr ::= db_optr keep */
-
2
,
/* (118) db_optr ::= db_optr update */
-
2
,
/* (119) db_optr ::= db_optr cachelast */
-
1
,
/* (120) topic_optr ::= db_optr */
-
2
,
/* (121) topic_optr ::= topic_optr partitions */
0
,
/* (122) alter_db_optr ::= */
-
2
,
/* (123) alter_db_optr ::= alter_db_optr replica */
-
2
,
/* (124) alter_db_optr ::= alter_db_optr quorum */
-
2
,
/* (125) alter_db_optr ::= alter_db_optr keep */
-
2
,
/* (126) alter_db_optr ::= alter_db_optr blocks */
-
2
,
/* (127) alter_db_optr ::= alter_db_optr comp */
-
2
,
/* (128) alter_db_optr ::= alter_db_optr update */
-
2
,
/* (129) alter_db_optr ::= alter_db_optr cachelast */
-
1
,
/* (130) alter_topic_optr ::= alter_db_optr */
-
2
,
/* (131) alter_topic_optr ::= alter_topic_optr partitions */
-
1
,
/* (132) typename ::= ids */
-
4
,
/* (133) typename ::= ids LP signed RP */
-
2
,
/* (134) typename ::= ids UNSIGNED */
-
1
,
/* (135) signed ::= INTEGER */
-
2
,
/* (136) signed ::= PLUS INTEGER */
-
2
,
/* (137) signed ::= MINUS INTEGER */
-
3
,
/* (138) cmd ::= CREATE TABLE create_table_args */
-
3
,
/* (139) cmd ::= CREATE TABLE create_stable_args */
-
3
,
/* (140) cmd ::= CREATE STABLE create_stable_args */
-
3
,
/* (141) cmd ::= CREATE TABLE create_table_list */
-
1
,
/* (142) create_table_list ::= create_from_stable */
-
2
,
/* (143) create_table_list ::= create_table_list create_from_stable */
-
6
,
/* (144) create_table_args ::= ifnotexists ids cpxName LP columnlist RP */
-
10
,
/* (145) create_stable_args ::= ifnotexists ids cpxName LP columnlist RP TAGS LP columnlist RP */
-
10
,
/* (146) create_from_stable ::= ifnotexists ids cpxName USING ids cpxName TAGS LP tagitemlist RP */
-
13
,
/* (147) create_from_stable ::= ifnotexists ids cpxName USING ids cpxName LP tagNamelist RP TAGS LP tagitemlist RP */
-
3
,
/* (148) tagNamelist ::= tagNamelist COMMA ids */
-
1
,
/* (149) tagNamelist ::= ids */
-
7
,
/* (150) create_table_args ::= ifnotexists ids cpxName to_opt split_opt AS select */
0
,
/* (151) to_opt ::= */
-
3
,
/* (152) to_opt ::= TO ids cpxName */
0
,
/* (153) split_opt ::= */
-
2
,
/* (154) split_opt ::= SPLIT ids */
-
3
,
/* (155) columnlist ::= columnlist COMMA column */
-
1
,
/* (156) columnlist ::= column */
-
2
,
/* (157) column ::= ids typename */
-
3
,
/* (158) tagitemlist ::= tagitemlist COMMA tagitem */
-
1
,
/* (159) tagitemlist ::= tagitem */
-
1
,
/* (160) tagitem ::= INTEGER */
-
1
,
/* (161) tagitem ::= FLOAT */
-
1
,
/* (162) tagitem ::= STRING */
-
1
,
/* (163) tagitem ::= BOOL */
-
1
,
/* (164) tagitem ::= NULL */
-
1
,
/* (165) tagitem ::= NOW */
-
3
,
/* (166) tagitem ::= NOW PLUS VARIABLE */
-
3
,
/* (167) tagitem ::= NOW MINUS VARIABLE */
-
2
,
/* (168) tagitem ::= MINUS INTEGER */
-
2
,
/* (169) tagitem ::= MINUS FLOAT */
-
2
,
/* (170) tagitem ::= PLUS INTEGER */
-
2
,
/* (171) tagitem ::= PLUS FLOAT */
-
15
,
/* (172) select ::= SELECT selcollist from where_opt range_option interval_option sliding_opt session_option windowstate_option fill_opt groupby_opt having_opt orderby_opt slimit_opt limit_opt */
-
3
,
/* (173) select ::= LP select RP */
-
1
,
/* (174) union ::= select */
-
4
,
/* (175) union ::= union UNION ALL select */
-
1
,
/* (176) cmd ::= union */
-
2
,
/* (177) select ::= SELECT selcollist */
-
2
,
/* (178) sclp ::= selcollist COMMA */
0
,
/* (179) sclp ::= */
-
4
,
/* (180) selcollist ::= sclp distinct expr as */
-
2
,
/* (181) selcollist ::= sclp STAR */
-
2
,
/* (182) as ::= AS ids */
-
1
,
/* (183) as ::= ids */
0
,
/* (184) as ::= */
-
1
,
/* (185) distinct ::= DISTINCT */
0
,
/* (186) distinct ::= */
-
2
,
/* (187) from ::= FROM tablelist */
-
2
,
/* (188) from ::= FROM sub */
-
3
,
/* (189) sub ::= LP union RP */
-
4
,
/* (190) sub ::= LP union RP ids */
-
6
,
/* (191) sub ::= sub COMMA LP union RP ids */
-
2
,
/* (192) tablelist ::= ids cpxName */
-
3
,
/* (193) tablelist ::= ids cpxName ids */
-
4
,
/* (194) tablelist ::= tablelist COMMA ids cpxName */
-
5
,
/* (195) tablelist ::= tablelist COMMA ids cpxName ids */
-
1
,
/* (196) tmvar ::= VARIABLE */
-
1
,
/* (197) timestamp ::= INTEGER */
-
2
,
/* (198) timestamp ::= MINUS INTEGER */
-
2
,
/* (199) timestamp ::= PLUS INTEGER */
-
1
,
/* (200) timestamp ::= STRING */
-
1
,
/* (201) timestamp ::= NOW */
-
3
,
/* (202) timestamp ::= NOW PLUS VARIABLE */
-
3
,
/* (203) timestamp ::= NOW MINUS VARIABLE */
0
,
/* (204) range_option ::= */
-
6
,
/* (205) range_option ::= RANGE LP timestamp COMMA timestamp RP */
-
4
,
/* (206) interval_option ::= intervalKey LP tmvar RP */
-
6
,
/* (207) interval_option ::= intervalKey LP tmvar COMMA tmvar RP */
0
,
/* (208) interval_option ::= */
-
1
,
/* (209) intervalKey ::= INTERVAL */
-
1
,
/* (210) intervalKey ::= EVERY */
0
,
/* (211) session_option ::= */
-
7
,
/* (212) session_option ::= SESSION LP ids cpxName COMMA tmvar RP */
0
,
/* (213) windowstate_option ::= */
-
4
,
/* (214) windowstate_option ::= STATE_WINDOW LP ids RP */
0
,
/* (215) fill_opt ::= */
-
6
,
/* (216) fill_opt ::= FILL LP ID COMMA tagitemlist RP */
-
4
,
/* (217) fill_opt ::= FILL LP ID RP */
-
4
,
/* (218) sliding_opt ::= SLIDING LP tmvar RP */
0
,
/* (219) sliding_opt ::= */
0
,
/* (220) orderby_opt ::= */
-
3
,
/* (221) orderby_opt ::= ORDER BY sortlist */
-
4
,
/* (222) sortlist ::= sortlist COMMA item sortorder */
-
4
,
/* (223) sortlist ::= sortlist COMMA arrow sortorder */
-
2
,
/* (224) sortlist ::= item sortorder */
-
2
,
/* (225) sortlist ::= arrow sortorder */
-
1
,
/* (226) item ::= ID */
-
3
,
/* (227) item ::= ID DOT ID */
-
1
,
/* (228) sortorder ::= ASC */
-
1
,
/* (229) sortorder ::= DESC */
0
,
/* (230) sortorder ::= */
0
,
/* (231) groupby_opt ::= */
-
3
,
/* (232) groupby_opt ::= GROUP BY grouplist */
-
3
,
/* (233) grouplist ::= grouplist COMMA item */
-
3
,
/* (234) grouplist ::= grouplist COMMA arrow */
-
1
,
/* (235) grouplist ::= item */
-
1
,
/* (236) grouplist ::= arrow */
0
,
/* (237) having_opt ::= */
-
2
,
/* (238) having_opt ::= HAVING expr */
0
,
/* (239) limit_opt ::= */
-
2
,
/* (240) limit_opt ::= LIMIT signed */
-
4
,
/* (241) limit_opt ::= LIMIT signed OFFSET signed */
-
4
,
/* (242) limit_opt ::= LIMIT signed COMMA signed */
0
,
/* (243) slimit_opt ::= */
-
2
,
/* (244) slimit_opt ::= SLIMIT signed */
-
4
,
/* (245) slimit_opt ::= SLIMIT signed SOFFSET signed */
-
4
,
/* (246) slimit_opt ::= SLIMIT signed COMMA signed */
0
,
/* (247) where_opt ::= */
-
2
,
/* (248) where_opt ::= WHERE expr */
-
3
,
/* (249) expr ::= LP expr RP */
-
1
,
/* (250) expr ::= ID */
-
3
,
/* (251) expr ::= ID DOT ID */
-
3
,
/* (252) expr ::= ID DOT STAR */
-
1
,
/* (253) expr ::= INTEGER */
-
2
,
/* (254) expr ::= MINUS INTEGER */
-
2
,
/* (255) expr ::= PLUS INTEGER */
-
1
,
/* (256) expr ::= FLOAT */
-
2
,
/* (257) expr ::= MINUS FLOAT */
-
2
,
/* (258) expr ::= PLUS FLOAT */
-
1
,
/* (259) expr ::= STRING */
-
1
,
/* (260) expr ::= NOW */
-
1
,
/* (261) expr ::= TODAY */
-
1
,
/* (262) expr ::= VARIABLE */
-
2
,
/* (263) expr ::= PLUS VARIABLE */
-
2
,
/* (264) expr ::= MINUS VARIABLE */
-
1
,
/* (265) expr ::= BOOL */
-
1
,
/* (266) expr ::= NULL */
-
4
,
/* (267) expr ::= ID LP exprlist RP */
-
4
,
/* (268) expr ::= ID LP STAR RP */
-
6
,
/* (269) expr ::= ID LP expr AS typename RP */
-
3
,
/* (270) expr ::= expr IS NULL */
-
4
,
/* (271) expr ::= expr IS NOT NULL */
-
3
,
/* (272) expr ::= expr LT expr */
-
3
,
/* (273) expr ::= expr GT expr */
-
3
,
/* (274) expr ::= expr LE expr */
-
3
,
/* (275) expr ::= expr GE expr */
-
3
,
/* (276) expr ::= expr NE expr */
-
3
,
/* (277) expr ::= expr EQ expr */
-
5
,
/* (278) expr ::= expr BETWEEN expr AND expr */
-
3
,
/* (279) expr ::= expr AND expr */
-
3
,
/* (280) expr ::= expr OR expr */
-
3
,
/* (281) expr ::= expr PLUS expr */
-
3
,
/* (282) expr ::= expr MINUS expr */
-
3
,
/* (283) expr ::= expr STAR expr */
-
3
,
/* (284) expr ::= expr SLASH expr */
-
3
,
/* (285) expr ::= expr REM expr */
-
3
,
/* (286) expr ::= expr LIKE expr */
-
3
,
/* (287) expr ::= expr MATCH expr */
-
3
,
/* (288) expr ::= expr NMATCH expr */
-
3
,
/* (289) expr ::= ID CONTAINS STRING */
-
5
,
/* (290) expr ::= ID DOT ID CONTAINS STRING */
-
3
,
/* (291) arrow ::= ID ARROW STRING */
-
5
,
/* (292) arrow ::= ID DOT ID ARROW STRING */
-
1
,
/* (293) expr ::= arrow */
-
5
,
/* (294) expr ::= expr IN LP exprlist RP */
-
3
,
/* (295) exprlist ::= exprlist COMMA expritem */
-
1
,
/* (296) exprlist ::= expritem */
-
1
,
/* (297) expritem ::= expr */
0
,
/* (298) expritem ::= */
-
3
,
/* (299) cmd ::= RESET QUERY CACHE */
-
3
,
/* (300) cmd ::= SYNCDB ids REPLICA */
-
7
,
/* (301) cmd ::= ALTER TABLE ids cpxName ADD COLUMN columnlist */
-
7
,
/* (302) cmd ::= ALTER TABLE ids cpxName DROP COLUMN ids */
-
7
,
/* (303) cmd ::= ALTER TABLE ids cpxName MODIFY COLUMN columnlist */
-
7
,
/* (304) cmd ::= ALTER TABLE ids cpxName ADD TAG columnlist */
-
7
,
/* (305) cmd ::= ALTER TABLE ids cpxName DROP TAG ids */
-
8
,
/* (306) cmd ::= ALTER TABLE ids cpxName CHANGE TAG ids ids */
-
9
,
/* (307) cmd ::= ALTER TABLE ids cpxName SET TAG ids EQ tagitem */
-
7
,
/* (308) cmd ::= ALTER TABLE ids cpxName MODIFY TAG columnlist */
-
7
,
/* (309) cmd ::= ALTER STABLE ids cpxName ADD COLUMN columnlist */
-
7
,
/* (310) cmd ::= ALTER STABLE ids cpxName DROP COLUMN ids */
-
7
,
/* (311) cmd ::= ALTER STABLE ids cpxName MODIFY COLUMN columnlist */
-
7
,
/* (312) cmd ::= ALTER STABLE ids cpxName ADD TAG columnlist */
-
7
,
/* (313) cmd ::= ALTER STABLE ids cpxName DROP TAG ids */
-
8
,
/* (314) cmd ::= ALTER STABLE ids cpxName CHANGE TAG ids ids */
-
9
,
/* (315) cmd ::= ALTER STABLE ids cpxName SET TAG ids EQ tagitem */
-
7
,
/* (316) cmd ::= ALTER STABLE ids cpxName MODIFY TAG columnlist */
-
3
,
/* (317) cmd ::= KILL CONNECTION INTEGER */
-
5
,
/* (318) cmd ::= KILL STREAM INTEGER COLON INTEGER */
-
5
,
/* (319) cmd ::= KILL QUERY INTEGER COLON INTEGER */
};
static
void
yy_accept
(
yyParser
*
);
/* Forward Declaration */
...
...
@@ -2274,14 +2596,17 @@ static YYACTIONTYPE yy_reduce(
yymsp
=
yypParser
->
yytos
;
#ifndef NDEBUG
if
(
yyTraceFILE
&&
yyruleno
<
(
int
)(
sizeof
(
yyRuleName
)
/
sizeof
(
yyRuleName
[
0
]))
){
yysize
=
yyRuleInfo
[
yyruleno
].
nrhs
;
yysize
=
yyRuleInfo
NRhs
[
yyruleno
]
;
if
(
yysize
){
fprintf
(
yyTraceFILE
,
"%sReduce %d [%s]
, go
to state %d.
\n
"
,
fprintf
(
yyTraceFILE
,
"%sReduce %d [%s]
%s, pop back
to state %d.
\n
"
,
yyTracePrompt
,
yyruleno
,
yyRuleName
[
yyruleno
],
yymsp
[
yysize
].
stateno
);
yyruleno
,
yyRuleName
[
yyruleno
],
yyruleno
<
YYNRULE_WITH_ACTION
?
""
:
" without external action"
,
yymsp
[
yysize
].
stateno
);
}
else
{
fprintf
(
yyTraceFILE
,
"%sReduce %d [%s].
\n
"
,
yyTracePrompt
,
yyruleno
,
yyRuleName
[
yyruleno
]);
fprintf
(
yyTraceFILE
,
"%sReduce %d [%s]%s.
\n
"
,
yyTracePrompt
,
yyruleno
,
yyRuleName
[
yyruleno
],
yyruleno
<
YYNRULE_WITH_ACTION
?
""
:
" without external action"
);
}
}
#endif
/* NDEBUG */
...
...
@@ -2289,7 +2614,7 @@ static YYACTIONTYPE yy_reduce(
/* Check that the stack is large enough to grow by a single entry
** if the RHS of the rule is empty. This ensures that there is room
** enough on the stack to push the LHS value */
if
(
yyRuleInfo
[
yyruleno
].
nrhs
==
0
){
if
(
yyRuleInfo
NRhs
[
yyruleno
]
==
0
){
#ifdef YYTRACKMAXSTACKDEPTH
if
(
(
int
)(
yypParser
->
yytos
-
yypParser
->
yystack
)
>
yypParser
->
yyhwm
){
yypParser
->
yyhwm
++
;
...
...
@@ -2502,16 +2827,16 @@ static YYACTIONTYPE yy_reduce(
break
;
case
46
:
/* cmd ::= ALTER DATABASE ids alter_db_optr */
case
47
:
/* cmd ::= ALTER TOPIC ids alter_topic_optr */
yytestcase
(
yyruleno
==
47
);
{
SStrToken
t
=
{
0
};
setCreateDbInfo
(
pInfo
,
TSDB_SQL_ALTER_DB
,
&
yymsp
[
-
1
].
minor
.
yy0
,
&
yymsp
[
0
].
minor
.
yy
560
,
&
t
);}
{
SStrToken
t
=
{
0
};
setCreateDbInfo
(
pInfo
,
TSDB_SQL_ALTER_DB
,
&
yymsp
[
-
1
].
minor
.
yy0
,
&
yymsp
[
0
].
minor
.
yy
302
,
&
t
);}
break
;
case
48
:
/* cmd ::= ALTER ACCOUNT ids acct_optr */
{
setCreateAcctSql
(
pInfo
,
TSDB_SQL_ALTER_ACCT
,
&
yymsp
[
-
1
].
minor
.
yy0
,
NULL
,
&
yymsp
[
0
].
minor
.
yy2
05
);}
{
setCreateAcctSql
(
pInfo
,
TSDB_SQL_ALTER_ACCT
,
&
yymsp
[
-
1
].
minor
.
yy0
,
NULL
,
&
yymsp
[
0
].
minor
.
yy2
31
);}
break
;
case
49
:
/* cmd ::= ALTER ACCOUNT ids PASS ids acct_optr */
{
setCreateAcctSql
(
pInfo
,
TSDB_SQL_ALTER_ACCT
,
&
yymsp
[
-
3
].
minor
.
yy0
,
&
yymsp
[
-
1
].
minor
.
yy0
,
&
yymsp
[
0
].
minor
.
yy2
05
);}
{
setCreateAcctSql
(
pInfo
,
TSDB_SQL_ALTER_ACCT
,
&
yymsp
[
-
3
].
minor
.
yy0
,
&
yymsp
[
-
1
].
minor
.
yy0
,
&
yymsp
[
0
].
minor
.
yy2
31
);}
break
;
case
50
:
/* cmd ::= COMPACT VNODES IN LP exprlist RP */
{
setCompactVnodeSql
(
pInfo
,
TSDB_SQL_COMPACT_VNODE
,
yymsp
[
-
1
].
minor
.
yy
209
);}
{
setCompactVnodeSql
(
pInfo
,
TSDB_SQL_COMPACT_VNODE
,
yymsp
[
-
1
].
minor
.
yy
161
);}
break
;
case
51
:
/* ids ::= ID */
case
52
:
/* ids ::= STRING */
yytestcase
(
yyruleno
==
52
);
...
...
@@ -2533,17 +2858,17 @@ static YYACTIONTYPE yy_reduce(
{
setDCLSqlElems
(
pInfo
,
TSDB_SQL_CREATE_DNODE
,
1
,
&
yymsp
[
0
].
minor
.
yy0
);}
break
;
case
58
:
/* cmd ::= CREATE ACCOUNT ids PASS ids acct_optr */
{
setCreateAcctSql
(
pInfo
,
TSDB_SQL_CREATE_ACCT
,
&
yymsp
[
-
3
].
minor
.
yy0
,
&
yymsp
[
-
1
].
minor
.
yy0
,
&
yymsp
[
0
].
minor
.
yy2
05
);}
{
setCreateAcctSql
(
pInfo
,
TSDB_SQL_CREATE_ACCT
,
&
yymsp
[
-
3
].
minor
.
yy0
,
&
yymsp
[
-
1
].
minor
.
yy0
,
&
yymsp
[
0
].
minor
.
yy2
31
);}
break
;
case
59
:
/* cmd ::= CREATE DATABASE ifnotexists ids db_optr */
case
60
:
/* cmd ::= CREATE TOPIC ifnotexists ids topic_optr */
yytestcase
(
yyruleno
==
60
);
{
setCreateDbInfo
(
pInfo
,
TSDB_SQL_CREATE_DB
,
&
yymsp
[
-
1
].
minor
.
yy0
,
&
yymsp
[
0
].
minor
.
yy
560
,
&
yymsp
[
-
2
].
minor
.
yy0
);}
{
setCreateDbInfo
(
pInfo
,
TSDB_SQL_CREATE_DB
,
&
yymsp
[
-
1
].
minor
.
yy0
,
&
yymsp
[
0
].
minor
.
yy
302
,
&
yymsp
[
-
2
].
minor
.
yy0
);}
break
;
case
61
:
/* cmd ::= CREATE FUNCTION ids AS ids OUTPUTTYPE typename bufsize */
{
setCreateFuncInfo
(
pInfo
,
TSDB_SQL_CREATE_FUNCTION
,
&
yymsp
[
-
5
].
minor
.
yy0
,
&
yymsp
[
-
3
].
minor
.
yy0
,
&
yymsp
[
-
1
].
minor
.
yy
369
,
&
yymsp
[
0
].
minor
.
yy0
,
1
);}
{
setCreateFuncInfo
(
pInfo
,
TSDB_SQL_CREATE_FUNCTION
,
&
yymsp
[
-
5
].
minor
.
yy0
,
&
yymsp
[
-
3
].
minor
.
yy0
,
&
yymsp
[
-
1
].
minor
.
yy
223
,
&
yymsp
[
0
].
minor
.
yy0
,
1
);}
break
;
case
62
:
/* cmd ::= CREATE AGGREGATE FUNCTION ids AS ids OUTPUTTYPE typename bufsize */
{
setCreateFuncInfo
(
pInfo
,
TSDB_SQL_CREATE_FUNCTION
,
&
yymsp
[
-
5
].
minor
.
yy0
,
&
yymsp
[
-
3
].
minor
.
yy0
,
&
yymsp
[
-
1
].
minor
.
yy
369
,
&
yymsp
[
0
].
minor
.
yy0
,
2
);}
{
setCreateFuncInfo
(
pInfo
,
TSDB_SQL_CREATE_FUNCTION
,
&
yymsp
[
-
5
].
minor
.
yy0
,
&
yymsp
[
-
3
].
minor
.
yy0
,
&
yymsp
[
-
1
].
minor
.
yy
223
,
&
yymsp
[
0
].
minor
.
yy0
,
2
);}
break
;
case
63
:
/* cmd ::= CREATE USER ids PASS ids */
{
setCreateUserSql
(
pInfo
,
&
yymsp
[
-
2
].
minor
.
yy0
,
&
yymsp
[
0
].
minor
.
yy0
);}
...
...
@@ -2574,38 +2899,38 @@ static YYACTIONTYPE yy_reduce(
break
;
case
84
:
/* acct_optr ::= pps tseries storage streams qtime dbs users conns state */
{
yylhsminor
.
yy2
05
.
maxUsers
=
(
yymsp
[
-
2
].
minor
.
yy0
.
n
>
0
)
?
atoi
(
yymsp
[
-
2
].
minor
.
yy0
.
z
)
:-
1
;
yylhsminor
.
yy2
05
.
maxDbs
=
(
yymsp
[
-
3
].
minor
.
yy0
.
n
>
0
)
?
atoi
(
yymsp
[
-
3
].
minor
.
yy0
.
z
)
:-
1
;
yylhsminor
.
yy2
05
.
maxTimeSeries
=
(
yymsp
[
-
7
].
minor
.
yy0
.
n
>
0
)
?
atoi
(
yymsp
[
-
7
].
minor
.
yy0
.
z
)
:-
1
;
yylhsminor
.
yy2
05
.
maxStreams
=
(
yymsp
[
-
5
].
minor
.
yy0
.
n
>
0
)
?
atoi
(
yymsp
[
-
5
].
minor
.
yy0
.
z
)
:-
1
;
yylhsminor
.
yy2
05
.
maxPointsPerSecond
=
(
yymsp
[
-
8
].
minor
.
yy0
.
n
>
0
)
?
atoi
(
yymsp
[
-
8
].
minor
.
yy0
.
z
)
:-
1
;
yylhsminor
.
yy2
05
.
maxStorage
=
(
yymsp
[
-
6
].
minor
.
yy0
.
n
>
0
)
?
strtoll
(
yymsp
[
-
6
].
minor
.
yy0
.
z
,
NULL
,
10
)
:-
1
;
yylhsminor
.
yy2
05
.
maxQueryTime
=
(
yymsp
[
-
4
].
minor
.
yy0
.
n
>
0
)
?
strtoll
(
yymsp
[
-
4
].
minor
.
yy0
.
z
,
NULL
,
10
)
:-
1
;
yylhsminor
.
yy2
05
.
maxConnections
=
(
yymsp
[
-
1
].
minor
.
yy0
.
n
>
0
)
?
atoi
(
yymsp
[
-
1
].
minor
.
yy0
.
z
)
:-
1
;
yylhsminor
.
yy2
05
.
stat
=
yymsp
[
0
].
minor
.
yy0
;
yylhsminor
.
yy2
31
.
maxUsers
=
(
yymsp
[
-
2
].
minor
.
yy0
.
n
>
0
)
?
atoi
(
yymsp
[
-
2
].
minor
.
yy0
.
z
)
:-
1
;
yylhsminor
.
yy2
31
.
maxDbs
=
(
yymsp
[
-
3
].
minor
.
yy0
.
n
>
0
)
?
atoi
(
yymsp
[
-
3
].
minor
.
yy0
.
z
)
:-
1
;
yylhsminor
.
yy2
31
.
maxTimeSeries
=
(
yymsp
[
-
7
].
minor
.
yy0
.
n
>
0
)
?
atoi
(
yymsp
[
-
7
].
minor
.
yy0
.
z
)
:-
1
;
yylhsminor
.
yy2
31
.
maxStreams
=
(
yymsp
[
-
5
].
minor
.
yy0
.
n
>
0
)
?
atoi
(
yymsp
[
-
5
].
minor
.
yy0
.
z
)
:-
1
;
yylhsminor
.
yy2
31
.
maxPointsPerSecond
=
(
yymsp
[
-
8
].
minor
.
yy0
.
n
>
0
)
?
atoi
(
yymsp
[
-
8
].
minor
.
yy0
.
z
)
:-
1
;
yylhsminor
.
yy2
31
.
maxStorage
=
(
yymsp
[
-
6
].
minor
.
yy0
.
n
>
0
)
?
strtoll
(
yymsp
[
-
6
].
minor
.
yy0
.
z
,
NULL
,
10
)
:-
1
;
yylhsminor
.
yy2
31
.
maxQueryTime
=
(
yymsp
[
-
4
].
minor
.
yy0
.
n
>
0
)
?
strtoll
(
yymsp
[
-
4
].
minor
.
yy0
.
z
,
NULL
,
10
)
:-
1
;
yylhsminor
.
yy2
31
.
maxConnections
=
(
yymsp
[
-
1
].
minor
.
yy0
.
n
>
0
)
?
atoi
(
yymsp
[
-
1
].
minor
.
yy0
.
z
)
:-
1
;
yylhsminor
.
yy2
31
.
stat
=
yymsp
[
0
].
minor
.
yy0
;
}
yymsp
[
-
8
].
minor
.
yy2
05
=
yylhsminor
.
yy205
;
yymsp
[
-
8
].
minor
.
yy2
31
=
yylhsminor
.
yy231
;
break
;
case
85
:
/* intitemlist ::= intitemlist COMMA intitem */
case
158
:
/* tagitemlist ::= tagitemlist COMMA tagitem */
yytestcase
(
yyruleno
==
158
);
{
yylhsminor
.
yy
209
=
tVariantListAppend
(
yymsp
[
-
2
].
minor
.
yy209
,
&
yymsp
[
0
].
minor
.
yy54
,
-
1
);
}
yymsp
[
-
2
].
minor
.
yy
209
=
yylhsminor
.
yy209
;
{
yylhsminor
.
yy
161
=
tVariantListAppend
(
yymsp
[
-
2
].
minor
.
yy161
,
&
yymsp
[
0
].
minor
.
yy526
,
-
1
);
}
yymsp
[
-
2
].
minor
.
yy
161
=
yylhsminor
.
yy161
;
break
;
case
86
:
/* intitemlist ::= intitem */
case
159
:
/* tagitemlist ::= tagitem */
yytestcase
(
yyruleno
==
159
);
{
yylhsminor
.
yy
209
=
tVariantListAppend
(
NULL
,
&
yymsp
[
0
].
minor
.
yy54
,
-
1
);
}
yymsp
[
0
].
minor
.
yy
209
=
yylhsminor
.
yy209
;
{
yylhsminor
.
yy
161
=
tVariantListAppend
(
NULL
,
&
yymsp
[
0
].
minor
.
yy526
,
-
1
);
}
yymsp
[
0
].
minor
.
yy
161
=
yylhsminor
.
yy161
;
break
;
case
87
:
/* intitem ::= INTEGER */
case
160
:
/* tagitem ::= INTEGER */
yytestcase
(
yyruleno
==
160
);
case
161
:
/* tagitem ::= FLOAT */
yytestcase
(
yyruleno
==
161
);
case
162
:
/* tagitem ::= STRING */
yytestcase
(
yyruleno
==
162
);
case
163
:
/* tagitem ::= BOOL */
yytestcase
(
yyruleno
==
163
);
{
toTSDBType
(
yymsp
[
0
].
minor
.
yy0
.
type
);
tVariantCreate
(
&
yylhsminor
.
yy5
4
,
&
yymsp
[
0
].
minor
.
yy0
);
}
yymsp
[
0
].
minor
.
yy5
4
=
yylhsminor
.
yy54
;
{
toTSDBType
(
yymsp
[
0
].
minor
.
yy0
.
type
);
tVariantCreate
(
&
yylhsminor
.
yy5
26
,
&
yymsp
[
0
].
minor
.
yy0
);
}
yymsp
[
0
].
minor
.
yy5
26
=
yylhsminor
.
yy526
;
break
;
case
88
:
/* keep ::= KEEP intitemlist */
{
yymsp
[
-
1
].
minor
.
yy
209
=
yymsp
[
0
].
minor
.
yy209
;
}
{
yymsp
[
-
1
].
minor
.
yy
161
=
yymsp
[
0
].
minor
.
yy161
;
}
break
;
case
89
:
/* cache ::= CACHE INTEGER */
case
90
:
/* replica ::= REPLICA INTEGER */
yytestcase
(
yyruleno
==
90
);
...
...
@@ -2625,200 +2950,200 @@ static YYACTIONTYPE yy_reduce(
{
yymsp
[
-
1
].
minor
.
yy0
=
yymsp
[
0
].
minor
.
yy0
;
}
break
;
case
104
:
/* db_optr ::= */
{
setDefaultCreateDbOption
(
&
yymsp
[
1
].
minor
.
yy
560
);
yymsp
[
1
].
minor
.
yy560
.
dbType
=
TSDB_DB_TYPE_DEFAULT
;}
{
setDefaultCreateDbOption
(
&
yymsp
[
1
].
minor
.
yy
302
);
yymsp
[
1
].
minor
.
yy302
.
dbType
=
TSDB_DB_TYPE_DEFAULT
;}
break
;
case
105
:
/* db_optr ::= db_optr cache */
{
yylhsminor
.
yy
560
=
yymsp
[
-
1
].
minor
.
yy560
;
yylhsminor
.
yy560
.
cacheBlockSize
=
strtol
(
yymsp
[
0
].
minor
.
yy0
.
z
,
NULL
,
10
);
}
yymsp
[
-
1
].
minor
.
yy
560
=
yylhsminor
.
yy560
;
{
yylhsminor
.
yy
302
=
yymsp
[
-
1
].
minor
.
yy302
;
yylhsminor
.
yy302
.
cacheBlockSize
=
strtol
(
yymsp
[
0
].
minor
.
yy0
.
z
,
NULL
,
10
);
}
yymsp
[
-
1
].
minor
.
yy
302
=
yylhsminor
.
yy302
;
break
;
case
106
:
/* db_optr ::= db_optr replica */
case
123
:
/* alter_db_optr ::= alter_db_optr replica */
yytestcase
(
yyruleno
==
123
);
{
yylhsminor
.
yy
560
=
yymsp
[
-
1
].
minor
.
yy560
;
yylhsminor
.
yy560
.
replica
=
strtol
(
yymsp
[
0
].
minor
.
yy0
.
z
,
NULL
,
10
);
}
yymsp
[
-
1
].
minor
.
yy
560
=
yylhsminor
.
yy560
;
{
yylhsminor
.
yy
302
=
yymsp
[
-
1
].
minor
.
yy302
;
yylhsminor
.
yy302
.
replica
=
strtol
(
yymsp
[
0
].
minor
.
yy0
.
z
,
NULL
,
10
);
}
yymsp
[
-
1
].
minor
.
yy
302
=
yylhsminor
.
yy302
;
break
;
case
107
:
/* db_optr ::= db_optr quorum */
case
124
:
/* alter_db_optr ::= alter_db_optr quorum */
yytestcase
(
yyruleno
==
124
);
{
yylhsminor
.
yy
560
=
yymsp
[
-
1
].
minor
.
yy560
;
yylhsminor
.
yy560
.
quorum
=
strtol
(
yymsp
[
0
].
minor
.
yy0
.
z
,
NULL
,
10
);
}
yymsp
[
-
1
].
minor
.
yy
560
=
yylhsminor
.
yy560
;
{
yylhsminor
.
yy
302
=
yymsp
[
-
1
].
minor
.
yy302
;
yylhsminor
.
yy302
.
quorum
=
strtol
(
yymsp
[
0
].
minor
.
yy0
.
z
,
NULL
,
10
);
}
yymsp
[
-
1
].
minor
.
yy
302
=
yylhsminor
.
yy302
;
break
;
case
108
:
/* db_optr ::= db_optr days */
{
yylhsminor
.
yy
560
=
yymsp
[
-
1
].
minor
.
yy560
;
yylhsminor
.
yy560
.
daysPerFile
=
strtol
(
yymsp
[
0
].
minor
.
yy0
.
z
,
NULL
,
10
);
}
yymsp
[
-
1
].
minor
.
yy
560
=
yylhsminor
.
yy560
;
{
yylhsminor
.
yy
302
=
yymsp
[
-
1
].
minor
.
yy302
;
yylhsminor
.
yy302
.
daysPerFile
=
strtol
(
yymsp
[
0
].
minor
.
yy0
.
z
,
NULL
,
10
);
}
yymsp
[
-
1
].
minor
.
yy
302
=
yylhsminor
.
yy302
;
break
;
case
109
:
/* db_optr ::= db_optr minrows */
{
yylhsminor
.
yy
560
=
yymsp
[
-
1
].
minor
.
yy560
;
yylhsminor
.
yy560
.
minRowsPerBlock
=
strtod
(
yymsp
[
0
].
minor
.
yy0
.
z
,
NULL
);
}
yymsp
[
-
1
].
minor
.
yy
560
=
yylhsminor
.
yy560
;
{
yylhsminor
.
yy
302
=
yymsp
[
-
1
].
minor
.
yy302
;
yylhsminor
.
yy302
.
minRowsPerBlock
=
strtod
(
yymsp
[
0
].
minor
.
yy0
.
z
,
NULL
);
}
yymsp
[
-
1
].
minor
.
yy
302
=
yylhsminor
.
yy302
;
break
;
case
110
:
/* db_optr ::= db_optr maxrows */
{
yylhsminor
.
yy
560
=
yymsp
[
-
1
].
minor
.
yy560
;
yylhsminor
.
yy560
.
maxRowsPerBlock
=
strtod
(
yymsp
[
0
].
minor
.
yy0
.
z
,
NULL
);
}
yymsp
[
-
1
].
minor
.
yy
560
=
yylhsminor
.
yy560
;
{
yylhsminor
.
yy
302
=
yymsp
[
-
1
].
minor
.
yy302
;
yylhsminor
.
yy302
.
maxRowsPerBlock
=
strtod
(
yymsp
[
0
].
minor
.
yy0
.
z
,
NULL
);
}
yymsp
[
-
1
].
minor
.
yy
302
=
yylhsminor
.
yy302
;
break
;
case
111
:
/* db_optr ::= db_optr blocks */
case
126
:
/* alter_db_optr ::= alter_db_optr blocks */
yytestcase
(
yyruleno
==
126
);
{
yylhsminor
.
yy
560
=
yymsp
[
-
1
].
minor
.
yy560
;
yylhsminor
.
yy560
.
numOfBlocks
=
strtol
(
yymsp
[
0
].
minor
.
yy0
.
z
,
NULL
,
10
);
}
yymsp
[
-
1
].
minor
.
yy
560
=
yylhsminor
.
yy560
;
{
yylhsminor
.
yy
302
=
yymsp
[
-
1
].
minor
.
yy302
;
yylhsminor
.
yy302
.
numOfBlocks
=
strtol
(
yymsp
[
0
].
minor
.
yy0
.
z
,
NULL
,
10
);
}
yymsp
[
-
1
].
minor
.
yy
302
=
yylhsminor
.
yy302
;
break
;
case
112
:
/* db_optr ::= db_optr ctime */
{
yylhsminor
.
yy
560
=
yymsp
[
-
1
].
minor
.
yy560
;
yylhsminor
.
yy560
.
commitTime
=
strtol
(
yymsp
[
0
].
minor
.
yy0
.
z
,
NULL
,
10
);
}
yymsp
[
-
1
].
minor
.
yy
560
=
yylhsminor
.
yy560
;
{
yylhsminor
.
yy
302
=
yymsp
[
-
1
].
minor
.
yy302
;
yylhsminor
.
yy302
.
commitTime
=
strtol
(
yymsp
[
0
].
minor
.
yy0
.
z
,
NULL
,
10
);
}
yymsp
[
-
1
].
minor
.
yy
302
=
yylhsminor
.
yy302
;
break
;
case
113
:
/* db_optr ::= db_optr wal */
{
yylhsminor
.
yy
560
=
yymsp
[
-
1
].
minor
.
yy560
;
yylhsminor
.
yy560
.
walLevel
=
strtol
(
yymsp
[
0
].
minor
.
yy0
.
z
,
NULL
,
10
);
}
yymsp
[
-
1
].
minor
.
yy
560
=
yylhsminor
.
yy560
;
{
yylhsminor
.
yy
302
=
yymsp
[
-
1
].
minor
.
yy302
;
yylhsminor
.
yy302
.
walLevel
=
strtol
(
yymsp
[
0
].
minor
.
yy0
.
z
,
NULL
,
10
);
}
yymsp
[
-
1
].
minor
.
yy
302
=
yylhsminor
.
yy302
;
break
;
case
114
:
/* db_optr ::= db_optr fsync */
{
yylhsminor
.
yy
560
=
yymsp
[
-
1
].
minor
.
yy560
;
yylhsminor
.
yy560
.
fsyncPeriod
=
strtol
(
yymsp
[
0
].
minor
.
yy0
.
z
,
NULL
,
10
);
}
yymsp
[
-
1
].
minor
.
yy
560
=
yylhsminor
.
yy560
;
{
yylhsminor
.
yy
302
=
yymsp
[
-
1
].
minor
.
yy302
;
yylhsminor
.
yy302
.
fsyncPeriod
=
strtol
(
yymsp
[
0
].
minor
.
yy0
.
z
,
NULL
,
10
);
}
yymsp
[
-
1
].
minor
.
yy
302
=
yylhsminor
.
yy302
;
break
;
case
115
:
/* db_optr ::= db_optr comp */
case
127
:
/* alter_db_optr ::= alter_db_optr comp */
yytestcase
(
yyruleno
==
127
);
{
yylhsminor
.
yy
560
=
yymsp
[
-
1
].
minor
.
yy560
;
yylhsminor
.
yy560
.
compressionLevel
=
strtol
(
yymsp
[
0
].
minor
.
yy0
.
z
,
NULL
,
10
);
}
yymsp
[
-
1
].
minor
.
yy
560
=
yylhsminor
.
yy560
;
{
yylhsminor
.
yy
302
=
yymsp
[
-
1
].
minor
.
yy302
;
yylhsminor
.
yy302
.
compressionLevel
=
strtol
(
yymsp
[
0
].
minor
.
yy0
.
z
,
NULL
,
10
);
}
yymsp
[
-
1
].
minor
.
yy
302
=
yylhsminor
.
yy302
;
break
;
case
116
:
/* db_optr ::= db_optr prec */
{
yylhsminor
.
yy
560
=
yymsp
[
-
1
].
minor
.
yy560
;
yylhsminor
.
yy560
.
precision
=
yymsp
[
0
].
minor
.
yy0
;
}
yymsp
[
-
1
].
minor
.
yy
560
=
yylhsminor
.
yy560
;
{
yylhsminor
.
yy
302
=
yymsp
[
-
1
].
minor
.
yy302
;
yylhsminor
.
yy302
.
precision
=
yymsp
[
0
].
minor
.
yy0
;
}
yymsp
[
-
1
].
minor
.
yy
302
=
yylhsminor
.
yy302
;
break
;
case
117
:
/* db_optr ::= db_optr keep */
case
125
:
/* alter_db_optr ::= alter_db_optr keep */
yytestcase
(
yyruleno
==
125
);
{
yylhsminor
.
yy
560
=
yymsp
[
-
1
].
minor
.
yy560
;
yylhsminor
.
yy560
.
keep
=
yymsp
[
0
].
minor
.
yy209
;
}
yymsp
[
-
1
].
minor
.
yy
560
=
yylhsminor
.
yy560
;
{
yylhsminor
.
yy
302
=
yymsp
[
-
1
].
minor
.
yy302
;
yylhsminor
.
yy302
.
keep
=
yymsp
[
0
].
minor
.
yy161
;
}
yymsp
[
-
1
].
minor
.
yy
302
=
yylhsminor
.
yy302
;
break
;
case
118
:
/* db_optr ::= db_optr update */
case
128
:
/* alter_db_optr ::= alter_db_optr update */
yytestcase
(
yyruleno
==
128
);
{
yylhsminor
.
yy
560
=
yymsp
[
-
1
].
minor
.
yy560
;
yylhsminor
.
yy560
.
update
=
strtol
(
yymsp
[
0
].
minor
.
yy0
.
z
,
NULL
,
10
);
}
yymsp
[
-
1
].
minor
.
yy
560
=
yylhsminor
.
yy560
;
{
yylhsminor
.
yy
302
=
yymsp
[
-
1
].
minor
.
yy302
;
yylhsminor
.
yy302
.
update
=
strtol
(
yymsp
[
0
].
minor
.
yy0
.
z
,
NULL
,
10
);
}
yymsp
[
-
1
].
minor
.
yy
302
=
yylhsminor
.
yy302
;
break
;
case
119
:
/* db_optr ::= db_optr cachelast */
case
129
:
/* alter_db_optr ::= alter_db_optr cachelast */
yytestcase
(
yyruleno
==
129
);
{
yylhsminor
.
yy
560
=
yymsp
[
-
1
].
minor
.
yy560
;
yylhsminor
.
yy560
.
cachelast
=
strtol
(
yymsp
[
0
].
minor
.
yy0
.
z
,
NULL
,
10
);
}
yymsp
[
-
1
].
minor
.
yy
560
=
yylhsminor
.
yy560
;
{
yylhsminor
.
yy
302
=
yymsp
[
-
1
].
minor
.
yy302
;
yylhsminor
.
yy302
.
cachelast
=
strtol
(
yymsp
[
0
].
minor
.
yy0
.
z
,
NULL
,
10
);
}
yymsp
[
-
1
].
minor
.
yy
302
=
yylhsminor
.
yy302
;
break
;
case
120
:
/* topic_optr ::= db_optr */
case
130
:
/* alter_topic_optr ::= alter_db_optr */
yytestcase
(
yyruleno
==
130
);
{
yylhsminor
.
yy
560
=
yymsp
[
0
].
minor
.
yy560
;
yylhsminor
.
yy560
.
dbType
=
TSDB_DB_TYPE_TOPIC
;
}
yymsp
[
0
].
minor
.
yy
560
=
yylhsminor
.
yy560
;
{
yylhsminor
.
yy
302
=
yymsp
[
0
].
minor
.
yy302
;
yylhsminor
.
yy302
.
dbType
=
TSDB_DB_TYPE_TOPIC
;
}
yymsp
[
0
].
minor
.
yy
302
=
yylhsminor
.
yy302
;
break
;
case
121
:
/* topic_optr ::= topic_optr partitions */
case
131
:
/* alter_topic_optr ::= alter_topic_optr partitions */
yytestcase
(
yyruleno
==
131
);
{
yylhsminor
.
yy
560
=
yymsp
[
-
1
].
minor
.
yy560
;
yylhsminor
.
yy560
.
partitions
=
strtol
(
yymsp
[
0
].
minor
.
yy0
.
z
,
NULL
,
10
);
}
yymsp
[
-
1
].
minor
.
yy
560
=
yylhsminor
.
yy560
;
{
yylhsminor
.
yy
302
=
yymsp
[
-
1
].
minor
.
yy302
;
yylhsminor
.
yy302
.
partitions
=
strtol
(
yymsp
[
0
].
minor
.
yy0
.
z
,
NULL
,
10
);
}
yymsp
[
-
1
].
minor
.
yy
302
=
yylhsminor
.
yy302
;
break
;
case
122
:
/* alter_db_optr ::= */
{
setDefaultCreateDbOption
(
&
yymsp
[
1
].
minor
.
yy
560
);
yymsp
[
1
].
minor
.
yy560
.
dbType
=
TSDB_DB_TYPE_DEFAULT
;}
{
setDefaultCreateDbOption
(
&
yymsp
[
1
].
minor
.
yy
302
);
yymsp
[
1
].
minor
.
yy302
.
dbType
=
TSDB_DB_TYPE_DEFAULT
;}
break
;
case
132
:
/* typename ::= ids */
{
yymsp
[
0
].
minor
.
yy0
.
type
=
0
;
tSetColumnType
(
&
yylhsminor
.
yy
369
,
&
yymsp
[
0
].
minor
.
yy0
);
tSetColumnType
(
&
yylhsminor
.
yy
223
,
&
yymsp
[
0
].
minor
.
yy0
);
}
yymsp
[
0
].
minor
.
yy
369
=
yylhsminor
.
yy369
;
yymsp
[
0
].
minor
.
yy
223
=
yylhsminor
.
yy223
;
break
;
case
133
:
/* typename ::= ids LP signed RP */
{
if
(
yymsp
[
-
1
].
minor
.
yy
55
<=
0
)
{
if
(
yymsp
[
-
1
].
minor
.
yy
369
<=
0
)
{
yymsp
[
-
3
].
minor
.
yy0
.
type
=
0
;
tSetColumnType
(
&
yylhsminor
.
yy
369
,
&
yymsp
[
-
3
].
minor
.
yy0
);
tSetColumnType
(
&
yylhsminor
.
yy
223
,
&
yymsp
[
-
3
].
minor
.
yy0
);
}
else
{
yymsp
[
-
3
].
minor
.
yy0
.
type
=
-
yymsp
[
-
1
].
minor
.
yy
55
;
// negative value of name length
tSetColumnType
(
&
yylhsminor
.
yy
369
,
&
yymsp
[
-
3
].
minor
.
yy0
);
yymsp
[
-
3
].
minor
.
yy0
.
type
=
-
yymsp
[
-
1
].
minor
.
yy
369
;
// negative value of name length
tSetColumnType
(
&
yylhsminor
.
yy
223
,
&
yymsp
[
-
3
].
minor
.
yy0
);
}
}
yymsp
[
-
3
].
minor
.
yy
369
=
yylhsminor
.
yy369
;
yymsp
[
-
3
].
minor
.
yy
223
=
yylhsminor
.
yy223
;
break
;
case
134
:
/* typename ::= ids UNSIGNED */
{
yymsp
[
-
1
].
minor
.
yy0
.
type
=
0
;
yymsp
[
-
1
].
minor
.
yy0
.
n
=
((
yymsp
[
0
].
minor
.
yy0
.
z
+
yymsp
[
0
].
minor
.
yy0
.
n
)
-
yymsp
[
-
1
].
minor
.
yy0
.
z
);
tSetColumnType
(
&
yylhsminor
.
yy
369
,
&
yymsp
[
-
1
].
minor
.
yy0
);
tSetColumnType
(
&
yylhsminor
.
yy
223
,
&
yymsp
[
-
1
].
minor
.
yy0
);
}
yymsp
[
-
1
].
minor
.
yy
369
=
yylhsminor
.
yy369
;
yymsp
[
-
1
].
minor
.
yy
223
=
yylhsminor
.
yy223
;
break
;
case
135
:
/* signed ::= INTEGER */
{
yylhsminor
.
yy
55
=
strtol
(
yymsp
[
0
].
minor
.
yy0
.
z
,
NULL
,
10
);
}
yymsp
[
0
].
minor
.
yy
55
=
yylhsminor
.
yy55
;
{
yylhsminor
.
yy
369
=
strtol
(
yymsp
[
0
].
minor
.
yy0
.
z
,
NULL
,
10
);
}
yymsp
[
0
].
minor
.
yy
369
=
yylhsminor
.
yy369
;
break
;
case
136
:
/* signed ::= PLUS INTEGER */
{
yymsp
[
-
1
].
minor
.
yy
55
=
strtol
(
yymsp
[
0
].
minor
.
yy0
.
z
,
NULL
,
10
);
}
{
yymsp
[
-
1
].
minor
.
yy
369
=
strtol
(
yymsp
[
0
].
minor
.
yy0
.
z
,
NULL
,
10
);
}
break
;
case
137
:
/* signed ::= MINUS INTEGER */
{
yymsp
[
-
1
].
minor
.
yy
55
=
-
strtol
(
yymsp
[
0
].
minor
.
yy0
.
z
,
NULL
,
10
);}
{
yymsp
[
-
1
].
minor
.
yy
369
=
-
strtol
(
yymsp
[
0
].
minor
.
yy0
.
z
,
NULL
,
10
);}
break
;
case
141
:
/* cmd ::= CREATE TABLE create_table_list */
{
pInfo
->
type
=
TSDB_SQL_CREATE_TABLE
;
pInfo
->
pCreateTableInfo
=
yymsp
[
0
].
minor
.
yy4
04
;}
{
pInfo
->
type
=
TSDB_SQL_CREATE_TABLE
;
pInfo
->
pCreateTableInfo
=
yymsp
[
0
].
minor
.
yy4
62
;}
break
;
case
142
:
/* create_table_list ::= create_from_stable */
{
SCreateTableSql
*
pCreateTable
=
calloc
(
1
,
sizeof
(
SCreateTableSql
));
pCreateTable
->
childTableInfo
=
taosArrayInit
(
4
,
sizeof
(
SCreatedTableInfo
));
taosArrayPush
(
pCreateTable
->
childTableInfo
,
&
yymsp
[
0
].
minor
.
yy3
4
);
taosArrayPush
(
pCreateTable
->
childTableInfo
,
&
yymsp
[
0
].
minor
.
yy3
56
);
pCreateTable
->
type
=
TSQL_CREATE_TABLE_FROM_STABLE
;
yylhsminor
.
yy4
04
=
pCreateTable
;
yylhsminor
.
yy4
62
=
pCreateTable
;
}
yymsp
[
0
].
minor
.
yy4
04
=
yylhsminor
.
yy404
;
yymsp
[
0
].
minor
.
yy4
62
=
yylhsminor
.
yy462
;
break
;
case
143
:
/* create_table_list ::= create_table_list create_from_stable */
{
taosArrayPush
(
yymsp
[
-
1
].
minor
.
yy4
04
->
childTableInfo
,
&
yymsp
[
0
].
minor
.
yy34
);
yylhsminor
.
yy4
04
=
yymsp
[
-
1
].
minor
.
yy404
;
taosArrayPush
(
yymsp
[
-
1
].
minor
.
yy4
62
->
childTableInfo
,
&
yymsp
[
0
].
minor
.
yy356
);
yylhsminor
.
yy4
62
=
yymsp
[
-
1
].
minor
.
yy462
;
}
yymsp
[
-
1
].
minor
.
yy4
04
=
yylhsminor
.
yy404
;
yymsp
[
-
1
].
minor
.
yy4
62
=
yylhsminor
.
yy462
;
break
;
case
144
:
/* create_table_args ::= ifnotexists ids cpxName LP columnlist RP */
{
yylhsminor
.
yy4
04
=
tSetCreateTableInfo
(
yymsp
[
-
1
].
minor
.
yy209
,
NULL
,
NULL
,
TSQL_CREATE_TABLE
);
setSqlInfo
(
pInfo
,
yylhsminor
.
yy4
04
,
NULL
,
TSDB_SQL_CREATE_TABLE
);
yylhsminor
.
yy4
62
=
tSetCreateTableInfo
(
yymsp
[
-
1
].
minor
.
yy161
,
NULL
,
NULL
,
TSQL_CREATE_TABLE
);
setSqlInfo
(
pInfo
,
yylhsminor
.
yy4
62
,
NULL
,
TSDB_SQL_CREATE_TABLE
);
yymsp
[
-
4
].
minor
.
yy0
.
n
+=
yymsp
[
-
3
].
minor
.
yy0
.
n
;
setCreatedTableName
(
pInfo
,
&
yymsp
[
-
4
].
minor
.
yy0
,
&
yymsp
[
-
5
].
minor
.
yy0
);
}
yymsp
[
-
5
].
minor
.
yy4
04
=
yylhsminor
.
yy404
;
yymsp
[
-
5
].
minor
.
yy4
62
=
yylhsminor
.
yy462
;
break
;
case
145
:
/* create_stable_args ::= ifnotexists ids cpxName LP columnlist RP TAGS LP columnlist RP */
{
yylhsminor
.
yy4
04
=
tSetCreateTableInfo
(
yymsp
[
-
5
].
minor
.
yy209
,
yymsp
[
-
1
].
minor
.
yy209
,
NULL
,
TSQL_CREATE_STABLE
);
setSqlInfo
(
pInfo
,
yylhsminor
.
yy4
04
,
NULL
,
TSDB_SQL_CREATE_TABLE
);
yylhsminor
.
yy4
62
=
tSetCreateTableInfo
(
yymsp
[
-
5
].
minor
.
yy161
,
yymsp
[
-
1
].
minor
.
yy161
,
NULL
,
TSQL_CREATE_STABLE
);
setSqlInfo
(
pInfo
,
yylhsminor
.
yy4
62
,
NULL
,
TSDB_SQL_CREATE_TABLE
);
yymsp
[
-
8
].
minor
.
yy0
.
n
+=
yymsp
[
-
7
].
minor
.
yy0
.
n
;
setCreatedTableName
(
pInfo
,
&
yymsp
[
-
8
].
minor
.
yy0
,
&
yymsp
[
-
9
].
minor
.
yy0
);
}
yymsp
[
-
9
].
minor
.
yy4
04
=
yylhsminor
.
yy404
;
yymsp
[
-
9
].
minor
.
yy4
62
=
yylhsminor
.
yy462
;
break
;
case
146
:
/* create_from_stable ::= ifnotexists ids cpxName USING ids cpxName TAGS LP tagitemlist RP */
{
yymsp
[
-
5
].
minor
.
yy0
.
n
+=
yymsp
[
-
4
].
minor
.
yy0
.
n
;
yymsp
[
-
8
].
minor
.
yy0
.
n
+=
yymsp
[
-
7
].
minor
.
yy0
.
n
;
yylhsminor
.
yy3
4
=
createNewChildTableInfo
(
&
yymsp
[
-
5
].
minor
.
yy0
,
NULL
,
yymsp
[
-
1
].
minor
.
yy209
,
&
yymsp
[
-
8
].
minor
.
yy0
,
&
yymsp
[
-
9
].
minor
.
yy0
);
yylhsminor
.
yy3
56
=
createNewChildTableInfo
(
&
yymsp
[
-
5
].
minor
.
yy0
,
NULL
,
yymsp
[
-
1
].
minor
.
yy161
,
&
yymsp
[
-
8
].
minor
.
yy0
,
&
yymsp
[
-
9
].
minor
.
yy0
);
}
yymsp
[
-
9
].
minor
.
yy3
4
=
yylhsminor
.
yy34
;
yymsp
[
-
9
].
minor
.
yy3
56
=
yylhsminor
.
yy356
;
break
;
case
147
:
/* create_from_stable ::= ifnotexists ids cpxName USING ids cpxName LP tagNamelist RP TAGS LP tagitemlist RP */
{
yymsp
[
-
8
].
minor
.
yy0
.
n
+=
yymsp
[
-
7
].
minor
.
yy0
.
n
;
yymsp
[
-
11
].
minor
.
yy0
.
n
+=
yymsp
[
-
10
].
minor
.
yy0
.
n
;
yylhsminor
.
yy3
4
=
createNewChildTableInfo
(
&
yymsp
[
-
8
].
minor
.
yy0
,
yymsp
[
-
5
].
minor
.
yy209
,
yymsp
[
-
1
].
minor
.
yy209
,
&
yymsp
[
-
11
].
minor
.
yy0
,
&
yymsp
[
-
12
].
minor
.
yy0
);
yylhsminor
.
yy3
56
=
createNewChildTableInfo
(
&
yymsp
[
-
8
].
minor
.
yy0
,
yymsp
[
-
5
].
minor
.
yy161
,
yymsp
[
-
1
].
minor
.
yy161
,
&
yymsp
[
-
11
].
minor
.
yy0
,
&
yymsp
[
-
12
].
minor
.
yy0
);
}
yymsp
[
-
12
].
minor
.
yy3
4
=
yylhsminor
.
yy34
;
yymsp
[
-
12
].
minor
.
yy3
56
=
yylhsminor
.
yy356
;
break
;
case
148
:
/* tagNamelist ::= tagNamelist COMMA ids */
{
taosArrayPush
(
yymsp
[
-
2
].
minor
.
yy
209
,
&
yymsp
[
0
].
minor
.
yy0
);
yylhsminor
.
yy209
=
yymsp
[
-
2
].
minor
.
yy209
;
}
yymsp
[
-
2
].
minor
.
yy
209
=
yylhsminor
.
yy209
;
{
taosArrayPush
(
yymsp
[
-
2
].
minor
.
yy
161
,
&
yymsp
[
0
].
minor
.
yy0
);
yylhsminor
.
yy161
=
yymsp
[
-
2
].
minor
.
yy161
;
}
yymsp
[
-
2
].
minor
.
yy
161
=
yylhsminor
.
yy161
;
break
;
case
149
:
/* tagNamelist ::= ids */
{
yylhsminor
.
yy
209
=
taosArrayInit
(
4
,
sizeof
(
SStrToken
));
taosArrayPush
(
yylhsminor
.
yy209
,
&
yymsp
[
0
].
minor
.
yy0
);}
yymsp
[
0
].
minor
.
yy
209
=
yylhsminor
.
yy209
;
{
yylhsminor
.
yy
161
=
taosArrayInit
(
4
,
sizeof
(
SStrToken
));
taosArrayPush
(
yylhsminor
.
yy161
,
&
yymsp
[
0
].
minor
.
yy0
);}
yymsp
[
0
].
minor
.
yy
161
=
yylhsminor
.
yy161
;
break
;
case
150
:
/* create_table_args ::= ifnotexists ids cpxName to_opt split_opt AS select */
{
yylhsminor
.
yy4
04
=
tSetCreateTableInfo
(
NULL
,
NULL
,
yymsp
[
0
].
minor
.
yy160
,
TSQL_CREATE_STREAM
);
setSqlInfo
(
pInfo
,
yylhsminor
.
yy4
04
,
NULL
,
TSDB_SQL_CREATE_TABLE
);
yylhsminor
.
yy4
62
=
tSetCreateTableInfo
(
NULL
,
NULL
,
yymsp
[
0
].
minor
.
yy276
,
TSQL_CREATE_STREAM
);
setSqlInfo
(
pInfo
,
yylhsminor
.
yy4
62
,
NULL
,
TSDB_SQL_CREATE_TABLE
);
setCreatedStreamOpt
(
pInfo
,
&
yymsp
[
-
3
].
minor
.
yy0
,
&
yymsp
[
-
2
].
minor
.
yy0
);
yymsp
[
-
5
].
minor
.
yy0
.
n
+=
yymsp
[
-
4
].
minor
.
yy0
.
n
;
setCreatedTableName
(
pInfo
,
&
yymsp
[
-
5
].
minor
.
yy0
,
&
yymsp
[
-
6
].
minor
.
yy0
);
}
yymsp
[
-
6
].
minor
.
yy4
04
=
yylhsminor
.
yy404
;
yymsp
[
-
6
].
minor
.
yy4
62
=
yylhsminor
.
yy462
;
break
;
case
151
:
/* to_opt ::= */
case
153
:
/* split_opt ::= */
yytestcase
(
yyruleno
==
153
);
...
...
@@ -2834,37 +3159,37 @@ static YYACTIONTYPE yy_reduce(
{
yymsp
[
-
1
].
minor
.
yy0
=
yymsp
[
0
].
minor
.
yy0
;}
break
;
case
155
:
/* columnlist ::= columnlist COMMA column */
{
taosArrayPush
(
yymsp
[
-
2
].
minor
.
yy
209
,
&
yymsp
[
0
].
minor
.
yy369
);
yylhsminor
.
yy209
=
yymsp
[
-
2
].
minor
.
yy209
;
}
yymsp
[
-
2
].
minor
.
yy
209
=
yylhsminor
.
yy209
;
{
taosArrayPush
(
yymsp
[
-
2
].
minor
.
yy
161
,
&
yymsp
[
0
].
minor
.
yy223
);
yylhsminor
.
yy161
=
yymsp
[
-
2
].
minor
.
yy161
;
}
yymsp
[
-
2
].
minor
.
yy
161
=
yylhsminor
.
yy161
;
break
;
case
156
:
/* columnlist ::= column */
{
yylhsminor
.
yy
209
=
taosArrayInit
(
4
,
sizeof
(
TAOS_FIELD
));
taosArrayPush
(
yylhsminor
.
yy209
,
&
yymsp
[
0
].
minor
.
yy369
);}
yymsp
[
0
].
minor
.
yy
209
=
yylhsminor
.
yy209
;
{
yylhsminor
.
yy
161
=
taosArrayInit
(
4
,
sizeof
(
TAOS_FIELD
));
taosArrayPush
(
yylhsminor
.
yy161
,
&
yymsp
[
0
].
minor
.
yy223
);}
yymsp
[
0
].
minor
.
yy
161
=
yylhsminor
.
yy161
;
break
;
case
157
:
/* column ::= ids typename */
{
tSetColumnInfo
(
&
yylhsminor
.
yy
369
,
&
yymsp
[
-
1
].
minor
.
yy0
,
&
yymsp
[
0
].
minor
.
yy369
);
tSetColumnInfo
(
&
yylhsminor
.
yy
223
,
&
yymsp
[
-
1
].
minor
.
yy0
,
&
yymsp
[
0
].
minor
.
yy223
);
}
yymsp
[
-
1
].
minor
.
yy
369
=
yylhsminor
.
yy369
;
yymsp
[
-
1
].
minor
.
yy
223
=
yylhsminor
.
yy223
;
break
;
case
164
:
/* tagitem ::= NULL */
{
yymsp
[
0
].
minor
.
yy0
.
type
=
0
;
tVariantCreate
(
&
yylhsminor
.
yy5
4
,
&
yymsp
[
0
].
minor
.
yy0
);
}
yymsp
[
0
].
minor
.
yy5
4
=
yylhsminor
.
yy54
;
{
yymsp
[
0
].
minor
.
yy0
.
type
=
0
;
tVariantCreate
(
&
yylhsminor
.
yy5
26
,
&
yymsp
[
0
].
minor
.
yy0
);
}
yymsp
[
0
].
minor
.
yy5
26
=
yylhsminor
.
yy526
;
break
;
case
165
:
/* tagitem ::= NOW */
{
yymsp
[
0
].
minor
.
yy0
.
type
=
TSDB_DATA_TYPE_TIMESTAMP
;
tVariantCreateExt
(
&
yylhsminor
.
yy5
4
,
&
yymsp
[
0
].
minor
.
yy0
,
TK_NOW
,
true
);}
yymsp
[
0
].
minor
.
yy5
4
=
yylhsminor
.
yy54
;
{
yymsp
[
0
].
minor
.
yy0
.
type
=
TSDB_DATA_TYPE_TIMESTAMP
;
tVariantCreateExt
(
&
yylhsminor
.
yy5
26
,
&
yymsp
[
0
].
minor
.
yy0
,
TK_NOW
,
true
);}
yymsp
[
0
].
minor
.
yy5
26
=
yylhsminor
.
yy526
;
break
;
case
166
:
/* tagitem ::= NOW PLUS VARIABLE */
{
yymsp
[
0
].
minor
.
yy0
.
type
=
TSDB_DATA_TYPE_TIMESTAMP
;
tVariantCreateExt
(
&
yymsp
[
-
2
].
minor
.
yy5
4
,
&
yymsp
[
0
].
minor
.
yy0
,
TK_PLUS
,
true
);
tVariantCreateExt
(
&
yymsp
[
-
2
].
minor
.
yy5
26
,
&
yymsp
[
0
].
minor
.
yy0
,
TK_PLUS
,
true
);
}
break
;
case
167
:
/* tagitem ::= NOW MINUS VARIABLE */
{
yymsp
[
0
].
minor
.
yy0
.
type
=
TSDB_DATA_TYPE_TIMESTAMP
;
tVariantCreateExt
(
&
yymsp
[
-
2
].
minor
.
yy5
4
,
&
yymsp
[
0
].
minor
.
yy0
,
TK_MINUS
,
true
);
tVariantCreateExt
(
&
yymsp
[
-
2
].
minor
.
yy5
26
,
&
yymsp
[
0
].
minor
.
yy0
,
TK_MINUS
,
true
);
}
break
;
case
168
:
/* tagitem ::= MINUS INTEGER */
...
...
@@ -2875,56 +3200,56 @@ static YYACTIONTYPE yy_reduce(
yymsp
[
-
1
].
minor
.
yy0
.
n
+=
yymsp
[
0
].
minor
.
yy0
.
n
;
yymsp
[
-
1
].
minor
.
yy0
.
type
=
yymsp
[
0
].
minor
.
yy0
.
type
;
toTSDBType
(
yymsp
[
-
1
].
minor
.
yy0
.
type
);
tVariantCreate
(
&
yylhsminor
.
yy5
4
,
&
yymsp
[
-
1
].
minor
.
yy0
);
tVariantCreate
(
&
yylhsminor
.
yy5
26
,
&
yymsp
[
-
1
].
minor
.
yy0
);
}
yymsp
[
-
1
].
minor
.
yy5
4
=
yylhsminor
.
yy54
;
yymsp
[
-
1
].
minor
.
yy5
26
=
yylhsminor
.
yy526
;
break
;
case
172
:
/* select ::= SELECT selcollist from where_opt range_option interval_option sliding_opt session_option windowstate_option fill_opt groupby_opt having_opt orderby_opt slimit_opt limit_opt */
{
yylhsminor
.
yy
160
=
tSetQuerySqlNode
(
&
yymsp
[
-
14
].
minor
.
yy0
,
yymsp
[
-
13
].
minor
.
yy209
,
yymsp
[
-
12
].
minor
.
yy530
,
yymsp
[
-
11
].
minor
.
yy574
,
yymsp
[
-
4
].
minor
.
yy209
,
yymsp
[
-
2
].
minor
.
yy209
,
&
yymsp
[
-
9
].
minor
.
yy102
,
&
yymsp
[
-
7
].
minor
.
yy115
,
&
yymsp
[
-
6
].
minor
.
yy290
,
&
yymsp
[
-
8
].
minor
.
yy0
,
yymsp
[
-
5
].
minor
.
yy209
,
&
yymsp
[
0
].
minor
.
yy534
,
&
yymsp
[
-
1
].
minor
.
yy534
,
yymsp
[
-
3
].
minor
.
yy574
,
&
yymsp
[
-
10
].
minor
.
yy22
);
yylhsminor
.
yy
276
=
tSetQuerySqlNode
(
&
yymsp
[
-
14
].
minor
.
yy0
,
yymsp
[
-
13
].
minor
.
yy161
,
yymsp
[
-
12
].
minor
.
yy84
,
yymsp
[
-
11
].
minor
.
yy546
,
yymsp
[
-
4
].
minor
.
yy161
,
yymsp
[
-
2
].
minor
.
yy161
,
&
yymsp
[
-
9
].
minor
.
yy300
,
&
yymsp
[
-
7
].
minor
.
yy219
,
&
yymsp
[
-
6
].
minor
.
yy548
,
&
yymsp
[
-
8
].
minor
.
yy0
,
yymsp
[
-
5
].
minor
.
yy161
,
&
yymsp
[
0
].
minor
.
yy394
,
&
yymsp
[
-
1
].
minor
.
yy394
,
yymsp
[
-
3
].
minor
.
yy546
,
&
yymsp
[
-
10
].
minor
.
yy420
);
}
yymsp
[
-
14
].
minor
.
yy
160
=
yylhsminor
.
yy160
;
yymsp
[
-
14
].
minor
.
yy
276
=
yylhsminor
.
yy276
;
break
;
case
173
:
/* select ::= LP select RP */
{
yymsp
[
-
2
].
minor
.
yy
160
=
yymsp
[
-
1
].
minor
.
yy160
;}
{
yymsp
[
-
2
].
minor
.
yy
276
=
yymsp
[
-
1
].
minor
.
yy276
;}
break
;
case
174
:
/* union ::= select */
{
yylhsminor
.
yy
209
=
setSubclause
(
NULL
,
yymsp
[
0
].
minor
.
yy160
);
}
yymsp
[
0
].
minor
.
yy
209
=
yylhsminor
.
yy209
;
{
yylhsminor
.
yy
161
=
setSubclause
(
NULL
,
yymsp
[
0
].
minor
.
yy276
);
}
yymsp
[
0
].
minor
.
yy
161
=
yylhsminor
.
yy161
;
break
;
case
175
:
/* union ::= union UNION ALL select */
{
yylhsminor
.
yy
209
=
appendSelectClause
(
yymsp
[
-
3
].
minor
.
yy209
,
yymsp
[
0
].
minor
.
yy160
);
}
yymsp
[
-
3
].
minor
.
yy
209
=
yylhsminor
.
yy209
;
{
yylhsminor
.
yy
161
=
appendSelectClause
(
yymsp
[
-
3
].
minor
.
yy161
,
yymsp
[
0
].
minor
.
yy276
);
}
yymsp
[
-
3
].
minor
.
yy
161
=
yylhsminor
.
yy161
;
break
;
case
176
:
/* cmd ::= union */
{
setSqlInfo
(
pInfo
,
yymsp
[
0
].
minor
.
yy
209
,
NULL
,
TSDB_SQL_SELECT
);
}
{
setSqlInfo
(
pInfo
,
yymsp
[
0
].
minor
.
yy
161
,
NULL
,
TSDB_SQL_SELECT
);
}
break
;
case
177
:
/* select ::= SELECT selcollist */
{
yylhsminor
.
yy
160
=
tSetQuerySqlNode
(
&
yymsp
[
-
1
].
minor
.
yy0
,
yymsp
[
0
].
minor
.
yy209
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
);
yylhsminor
.
yy
276
=
tSetQuerySqlNode
(
&
yymsp
[
-
1
].
minor
.
yy0
,
yymsp
[
0
].
minor
.
yy161
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
);
}
yymsp
[
-
1
].
minor
.
yy
160
=
yylhsminor
.
yy160
;
yymsp
[
-
1
].
minor
.
yy
276
=
yylhsminor
.
yy276
;
break
;
case
178
:
/* sclp ::= selcollist COMMA */
{
yylhsminor
.
yy
209
=
yymsp
[
-
1
].
minor
.
yy209
;}
yymsp
[
-
1
].
minor
.
yy
209
=
yylhsminor
.
yy209
;
{
yylhsminor
.
yy
161
=
yymsp
[
-
1
].
minor
.
yy161
;}
yymsp
[
-
1
].
minor
.
yy
161
=
yylhsminor
.
yy161
;
break
;
case
179
:
/* sclp ::= */
case
220
:
/* orderby_opt ::= */
yytestcase
(
yyruleno
==
220
);
{
yymsp
[
1
].
minor
.
yy
209
=
0
;}
{
yymsp
[
1
].
minor
.
yy
161
=
0
;}
break
;
case
180
:
/* selcollist ::= sclp distinct expr as */
{
yylhsminor
.
yy
209
=
tSqlExprListAppend
(
yymsp
[
-
3
].
minor
.
yy209
,
yymsp
[
-
1
].
minor
.
yy574
,
yymsp
[
-
2
].
minor
.
yy0
.
n
?
&
yymsp
[
-
2
].
minor
.
yy0
:
0
,
yymsp
[
0
].
minor
.
yy0
.
n
?&
yymsp
[
0
].
minor
.
yy0
:
0
);
yylhsminor
.
yy
161
=
tSqlExprListAppend
(
yymsp
[
-
3
].
minor
.
yy161
,
yymsp
[
-
1
].
minor
.
yy546
,
yymsp
[
-
2
].
minor
.
yy0
.
n
?
&
yymsp
[
-
2
].
minor
.
yy0
:
0
,
yymsp
[
0
].
minor
.
yy0
.
n
?&
yymsp
[
0
].
minor
.
yy0
:
0
);
}
yymsp
[
-
3
].
minor
.
yy
209
=
yylhsminor
.
yy209
;
yymsp
[
-
3
].
minor
.
yy
161
=
yylhsminor
.
yy161
;
break
;
case
181
:
/* selcollist ::= sclp STAR */
{
tSqlExpr
*
pNode
=
tSqlExprCreateIdValue
(
pInfo
,
NULL
,
TK_ALL
);
yylhsminor
.
yy
209
=
tSqlExprListAppend
(
yymsp
[
-
1
].
minor
.
yy209
,
pNode
,
0
,
0
);
yylhsminor
.
yy
161
=
tSqlExprListAppend
(
yymsp
[
-
1
].
minor
.
yy161
,
pNode
,
0
,
0
);
}
yymsp
[
-
1
].
minor
.
yy
209
=
yylhsminor
.
yy209
;
yymsp
[
-
1
].
minor
.
yy
161
=
yylhsminor
.
yy161
;
break
;
case
182
:
/* as ::= AS ids */
{
yymsp
[
-
1
].
minor
.
yy0
=
yymsp
[
0
].
minor
.
yy0
;
}
...
...
@@ -2942,114 +3267,114 @@ static YYACTIONTYPE yy_reduce(
break
;
case
187
:
/* from ::= FROM tablelist */
case
188
:
/* from ::= FROM sub */
yytestcase
(
yyruleno
==
188
);
{
yymsp
[
-
1
].
minor
.
yy
530
=
yymsp
[
0
].
minor
.
yy530
;}
{
yymsp
[
-
1
].
minor
.
yy
84
=
yymsp
[
0
].
minor
.
yy84
;}
break
;
case
189
:
/* sub ::= LP union RP */
{
yymsp
[
-
2
].
minor
.
yy
530
=
addSubqueryElem
(
NULL
,
yymsp
[
-
1
].
minor
.
yy209
,
NULL
);}
{
yymsp
[
-
2
].
minor
.
yy
84
=
addSubqueryElem
(
NULL
,
yymsp
[
-
1
].
minor
.
yy161
,
NULL
);}
break
;
case
190
:
/* sub ::= LP union RP ids */
{
yymsp
[
-
3
].
minor
.
yy
530
=
addSubqueryElem
(
NULL
,
yymsp
[
-
2
].
minor
.
yy209
,
&
yymsp
[
0
].
minor
.
yy0
);}
{
yymsp
[
-
3
].
minor
.
yy
84
=
addSubqueryElem
(
NULL
,
yymsp
[
-
2
].
minor
.
yy161
,
&
yymsp
[
0
].
minor
.
yy0
);}
break
;
case
191
:
/* sub ::= sub COMMA LP union RP ids */
{
yylhsminor
.
yy
530
=
addSubqueryElem
(
yymsp
[
-
5
].
minor
.
yy530
,
yymsp
[
-
2
].
minor
.
yy209
,
&
yymsp
[
0
].
minor
.
yy0
);}
yymsp
[
-
5
].
minor
.
yy
530
=
yylhsminor
.
yy530
;
{
yylhsminor
.
yy
84
=
addSubqueryElem
(
yymsp
[
-
5
].
minor
.
yy84
,
yymsp
[
-
2
].
minor
.
yy161
,
&
yymsp
[
0
].
minor
.
yy0
);}
yymsp
[
-
5
].
minor
.
yy
84
=
yylhsminor
.
yy84
;
break
;
case
192
:
/* tablelist ::= ids cpxName */
{
yymsp
[
-
1
].
minor
.
yy0
.
n
+=
yymsp
[
0
].
minor
.
yy0
.
n
;
yylhsminor
.
yy
530
=
setTableNameList
(
NULL
,
&
yymsp
[
-
1
].
minor
.
yy0
,
NULL
);
yylhsminor
.
yy
84
=
setTableNameList
(
NULL
,
&
yymsp
[
-
1
].
minor
.
yy0
,
NULL
);
}
yymsp
[
-
1
].
minor
.
yy
530
=
yylhsminor
.
yy530
;
yymsp
[
-
1
].
minor
.
yy
84
=
yylhsminor
.
yy84
;
break
;
case
193
:
/* tablelist ::= ids cpxName ids */
{
yymsp
[
-
2
].
minor
.
yy0
.
n
+=
yymsp
[
-
1
].
minor
.
yy0
.
n
;
yylhsminor
.
yy
530
=
setTableNameList
(
NULL
,
&
yymsp
[
-
2
].
minor
.
yy0
,
&
yymsp
[
0
].
minor
.
yy0
);
yylhsminor
.
yy
84
=
setTableNameList
(
NULL
,
&
yymsp
[
-
2
].
minor
.
yy0
,
&
yymsp
[
0
].
minor
.
yy0
);
}
yymsp
[
-
2
].
minor
.
yy
530
=
yylhsminor
.
yy530
;
yymsp
[
-
2
].
minor
.
yy
84
=
yylhsminor
.
yy84
;
break
;
case
194
:
/* tablelist ::= tablelist COMMA ids cpxName */
{
yymsp
[
-
1
].
minor
.
yy0
.
n
+=
yymsp
[
0
].
minor
.
yy0
.
n
;
yylhsminor
.
yy
530
=
setTableNameList
(
yymsp
[
-
3
].
minor
.
yy530
,
&
yymsp
[
-
1
].
minor
.
yy0
,
NULL
);
yylhsminor
.
yy
84
=
setTableNameList
(
yymsp
[
-
3
].
minor
.
yy84
,
&
yymsp
[
-
1
].
minor
.
yy0
,
NULL
);
}
yymsp
[
-
3
].
minor
.
yy
530
=
yylhsminor
.
yy530
;
yymsp
[
-
3
].
minor
.
yy
84
=
yylhsminor
.
yy84
;
break
;
case
195
:
/* tablelist ::= tablelist COMMA ids cpxName ids */
{
yymsp
[
-
2
].
minor
.
yy0
.
n
+=
yymsp
[
-
1
].
minor
.
yy0
.
n
;
yylhsminor
.
yy
530
=
setTableNameList
(
yymsp
[
-
4
].
minor
.
yy530
,
&
yymsp
[
-
2
].
minor
.
yy0
,
&
yymsp
[
0
].
minor
.
yy0
);
yylhsminor
.
yy
84
=
setTableNameList
(
yymsp
[
-
4
].
minor
.
yy84
,
&
yymsp
[
-
2
].
minor
.
yy0
,
&
yymsp
[
0
].
minor
.
yy0
);
}
yymsp
[
-
4
].
minor
.
yy
530
=
yylhsminor
.
yy530
;
yymsp
[
-
4
].
minor
.
yy
84
=
yylhsminor
.
yy84
;
break
;
case
196
:
/* tmvar ::= VARIABLE */
{
yylhsminor
.
yy0
=
yymsp
[
0
].
minor
.
yy0
;}
yymsp
[
0
].
minor
.
yy0
=
yylhsminor
.
yy0
;
break
;
case
197
:
/* timestamp ::= INTEGER */
{
yylhsminor
.
yy5
74
=
tSqlExprCreateTimestamp
(
&
yymsp
[
0
].
minor
.
yy0
,
TK_INTEGER
);}
yymsp
[
0
].
minor
.
yy5
74
=
yylhsminor
.
yy574
;
{
yylhsminor
.
yy5
46
=
tSqlExprCreateTimestamp
(
&
yymsp
[
0
].
minor
.
yy0
,
TK_INTEGER
);}
yymsp
[
0
].
minor
.
yy5
46
=
yylhsminor
.
yy546
;
break
;
case
198
:
/* timestamp ::= MINUS INTEGER */
case
199
:
/* timestamp ::= PLUS INTEGER */
yytestcase
(
yyruleno
==
199
);
{
yymsp
[
-
1
].
minor
.
yy0
.
n
+=
yymsp
[
0
].
minor
.
yy0
.
n
;
yymsp
[
-
1
].
minor
.
yy0
.
type
=
TK_INTEGER
;
yylhsminor
.
yy5
74
=
tSqlExprCreateTimestamp
(
&
yymsp
[
-
1
].
minor
.
yy0
,
TK_INTEGER
);}
yymsp
[
-
1
].
minor
.
yy5
74
=
yylhsminor
.
yy574
;
{
yymsp
[
-
1
].
minor
.
yy0
.
n
+=
yymsp
[
0
].
minor
.
yy0
.
n
;
yymsp
[
-
1
].
minor
.
yy0
.
type
=
TK_INTEGER
;
yylhsminor
.
yy5
46
=
tSqlExprCreateTimestamp
(
&
yymsp
[
-
1
].
minor
.
yy0
,
TK_INTEGER
);}
yymsp
[
-
1
].
minor
.
yy5
46
=
yylhsminor
.
yy546
;
break
;
case
200
:
/* timestamp ::= STRING */
{
yylhsminor
.
yy5
74
=
tSqlExprCreateTimestamp
(
&
yymsp
[
0
].
minor
.
yy0
,
TK_STRING
);}
yymsp
[
0
].
minor
.
yy5
74
=
yylhsminor
.
yy574
;
{
yylhsminor
.
yy5
46
=
tSqlExprCreateTimestamp
(
&
yymsp
[
0
].
minor
.
yy0
,
TK_STRING
);}
yymsp
[
0
].
minor
.
yy5
46
=
yylhsminor
.
yy546
;
break
;
case
201
:
/* timestamp ::= NOW */
{
yylhsminor
.
yy5
74
=
tSqlExprCreateTimestamp
(
&
yymsp
[
0
].
minor
.
yy0
,
TK_NOW
);
}
yymsp
[
0
].
minor
.
yy5
74
=
yylhsminor
.
yy574
;
{
yylhsminor
.
yy5
46
=
tSqlExprCreateTimestamp
(
&
yymsp
[
0
].
minor
.
yy0
,
TK_NOW
);
}
yymsp
[
0
].
minor
.
yy5
46
=
yylhsminor
.
yy546
;
break
;
case
202
:
/* timestamp ::= NOW PLUS VARIABLE */
{
yymsp
[
-
2
].
minor
.
yy5
74
=
tSqlExprCreateTimestamp
(
&
yymsp
[
0
].
minor
.
yy0
,
TK_PLUS
);
}
{
yymsp
[
-
2
].
minor
.
yy5
46
=
tSqlExprCreateTimestamp
(
&
yymsp
[
0
].
minor
.
yy0
,
TK_PLUS
);
}
break
;
case
203
:
/* timestamp ::= NOW MINUS VARIABLE */
{
yymsp
[
-
2
].
minor
.
yy5
74
=
tSqlExprCreateTimestamp
(
&
yymsp
[
0
].
minor
.
yy0
,
TK_MINUS
);
}
{
yymsp
[
-
2
].
minor
.
yy5
46
=
tSqlExprCreateTimestamp
(
&
yymsp
[
0
].
minor
.
yy0
,
TK_MINUS
);
}
break
;
case
204
:
/* range_option ::= */
{
yymsp
[
1
].
minor
.
yy
22
.
start
=
0
;
yymsp
[
1
].
minor
.
yy22
.
end
=
0
;}
{
yymsp
[
1
].
minor
.
yy
420
.
start
=
0
;
yymsp
[
1
].
minor
.
yy420
.
end
=
0
;}
break
;
case
205
:
/* range_option ::= RANGE LP timestamp COMMA timestamp RP */
{
yymsp
[
-
5
].
minor
.
yy
22
.
start
=
yymsp
[
-
3
].
minor
.
yy574
;
yymsp
[
-
5
].
minor
.
yy22
.
end
=
yymsp
[
-
1
].
minor
.
yy574
;}
{
yymsp
[
-
5
].
minor
.
yy
420
.
start
=
yymsp
[
-
3
].
minor
.
yy546
;
yymsp
[
-
5
].
minor
.
yy420
.
end
=
yymsp
[
-
1
].
minor
.
yy546
;}
break
;
case
206
:
/* interval_option ::= intervalKey LP tmvar RP */
{
yylhsminor
.
yy
102
.
interval
=
yymsp
[
-
1
].
minor
.
yy0
;
yylhsminor
.
yy102
.
offset
.
n
=
0
;
yylhsminor
.
yy102
.
token
=
yymsp
[
-
3
].
minor
.
yy38
0
;}
yymsp
[
-
3
].
minor
.
yy
102
=
yylhsminor
.
yy102
;
{
yylhsminor
.
yy
300
.
interval
=
yymsp
[
-
1
].
minor
.
yy0
;
yylhsminor
.
yy300
.
offset
.
n
=
0
;
yylhsminor
.
yy300
.
token
=
yymsp
[
-
3
].
minor
.
yy52
0
;}
yymsp
[
-
3
].
minor
.
yy
300
=
yylhsminor
.
yy300
;
break
;
case
207
:
/* interval_option ::= intervalKey LP tmvar COMMA tmvar RP */
{
yylhsminor
.
yy
102
.
interval
=
yymsp
[
-
3
].
minor
.
yy0
;
yylhsminor
.
yy102
.
offset
=
yymsp
[
-
1
].
minor
.
yy0
;
yylhsminor
.
yy102
.
token
=
yymsp
[
-
5
].
minor
.
yy38
0
;}
yymsp
[
-
5
].
minor
.
yy
102
=
yylhsminor
.
yy102
;
{
yylhsminor
.
yy
300
.
interval
=
yymsp
[
-
3
].
minor
.
yy0
;
yylhsminor
.
yy300
.
offset
=
yymsp
[
-
1
].
minor
.
yy0
;
yylhsminor
.
yy300
.
token
=
yymsp
[
-
5
].
minor
.
yy52
0
;}
yymsp
[
-
5
].
minor
.
yy
300
=
yylhsminor
.
yy300
;
break
;
case
208
:
/* interval_option ::= */
{
memset
(
&
yymsp
[
1
].
minor
.
yy
102
,
0
,
sizeof
(
yymsp
[
1
].
minor
.
yy102
));}
{
memset
(
&
yymsp
[
1
].
minor
.
yy
300
,
0
,
sizeof
(
yymsp
[
1
].
minor
.
yy300
));}
break
;
case
209
:
/* intervalKey ::= INTERVAL */
{
yymsp
[
0
].
minor
.
yy
38
0
=
TK_INTERVAL
;}
{
yymsp
[
0
].
minor
.
yy
52
0
=
TK_INTERVAL
;}
break
;
case
210
:
/* intervalKey ::= EVERY */
{
yymsp
[
0
].
minor
.
yy
38
0
=
TK_EVERY
;
}
{
yymsp
[
0
].
minor
.
yy
52
0
=
TK_EVERY
;
}
break
;
case
211
:
/* session_option ::= */
{
yymsp
[
1
].
minor
.
yy
115
.
col
.
n
=
0
;
yymsp
[
1
].
minor
.
yy115
.
gap
.
n
=
0
;}
{
yymsp
[
1
].
minor
.
yy
219
.
col
.
n
=
0
;
yymsp
[
1
].
minor
.
yy219
.
gap
.
n
=
0
;}
break
;
case
212
:
/* session_option ::= SESSION LP ids cpxName COMMA tmvar RP */
{
yymsp
[
-
4
].
minor
.
yy0
.
n
+=
yymsp
[
-
3
].
minor
.
yy0
.
n
;
yymsp
[
-
6
].
minor
.
yy
115
.
col
=
yymsp
[
-
4
].
minor
.
yy0
;
yymsp
[
-
6
].
minor
.
yy
115
.
gap
=
yymsp
[
-
1
].
minor
.
yy0
;
yymsp
[
-
6
].
minor
.
yy
219
.
col
=
yymsp
[
-
4
].
minor
.
yy0
;
yymsp
[
-
6
].
minor
.
yy
219
.
gap
=
yymsp
[
-
1
].
minor
.
yy0
;
}
break
;
case
213
:
/* windowstate_option ::= */
{
yymsp
[
1
].
minor
.
yy
290
.
col
.
n
=
0
;
yymsp
[
1
].
minor
.
yy290
.
col
.
z
=
NULL
;}
{
yymsp
[
1
].
minor
.
yy
548
.
col
.
n
=
0
;
yymsp
[
1
].
minor
.
yy548
.
col
.
z
=
NULL
;}
break
;
case
214
:
/* windowstate_option ::= STATE_WINDOW LP ids RP */
{
yymsp
[
-
3
].
minor
.
yy
290
.
col
=
yymsp
[
-
1
].
minor
.
yy0
;
}
{
yymsp
[
-
3
].
minor
.
yy
548
.
col
=
yymsp
[
-
1
].
minor
.
yy0
;
}
break
;
case
215
:
/* fill_opt ::= */
{
yymsp
[
1
].
minor
.
yy
209
=
0
;
}
{
yymsp
[
1
].
minor
.
yy
161
=
0
;
}
break
;
case
216
:
/* fill_opt ::= FILL LP ID COMMA tagitemlist RP */
{
...
...
@@ -3057,14 +3382,14 @@ static YYACTIONTYPE yy_reduce(
toTSDBType
(
yymsp
[
-
3
].
minor
.
yy0
.
type
);
tVariantCreate
(
&
A
,
&
yymsp
[
-
3
].
minor
.
yy0
);
tVariantListInsert
(
yymsp
[
-
1
].
minor
.
yy
209
,
&
A
,
-
1
,
0
);
yymsp
[
-
5
].
minor
.
yy
209
=
yymsp
[
-
1
].
minor
.
yy209
;
tVariantListInsert
(
yymsp
[
-
1
].
minor
.
yy
161
,
&
A
,
-
1
,
0
);
yymsp
[
-
5
].
minor
.
yy
161
=
yymsp
[
-
1
].
minor
.
yy161
;
}
break
;
case
217
:
/* fill_opt ::= FILL LP ID RP */
{
toTSDBType
(
yymsp
[
-
1
].
minor
.
yy0
.
type
);
yymsp
[
-
3
].
minor
.
yy
209
=
tVariantListAppendToken
(
NULL
,
&
yymsp
[
-
1
].
minor
.
yy0
,
-
1
,
true
);
yymsp
[
-
3
].
minor
.
yy
161
=
tVariantListAppendToken
(
NULL
,
&
yymsp
[
-
1
].
minor
.
yy0
,
-
1
,
true
);
}
break
;
case
218
:
/* sliding_opt ::= SLIDING LP tmvar RP */
...
...
@@ -3074,309 +3399,313 @@ static YYACTIONTYPE yy_reduce(
{
yymsp
[
1
].
minor
.
yy0
.
n
=
0
;
yymsp
[
1
].
minor
.
yy0
.
z
=
NULL
;
yymsp
[
1
].
minor
.
yy0
.
type
=
0
;
}
break
;
case
221
:
/* orderby_opt ::= ORDER BY sortlist */
{
yymsp
[
-
2
].
minor
.
yy
209
=
yymsp
[
0
].
minor
.
yy209
;}
{
yymsp
[
-
2
].
minor
.
yy
161
=
yymsp
[
0
].
minor
.
yy161
;}
break
;
case
222
:
/* sortlist ::= sortlist COMMA item sortorder */
{
yylhsminor
.
yy
209
=
commonItemAppend
(
yymsp
[
-
3
].
minor
.
yy209
,
&
yymsp
[
-
1
].
minor
.
yy54
,
NULL
,
false
,
yymsp
[
0
].
minor
.
yy33
2
);
yylhsminor
.
yy
161
=
commonItemAppend
(
yymsp
[
-
3
].
minor
.
yy161
,
&
yymsp
[
-
1
].
minor
.
yy526
,
NULL
,
false
,
yymsp
[
0
].
minor
.
yy45
2
);
}
yymsp
[
-
3
].
minor
.
yy
209
=
yylhsminor
.
yy209
;
yymsp
[
-
3
].
minor
.
yy
161
=
yylhsminor
.
yy161
;
break
;
case
223
:
/* sortlist ::= sortlist COMMA arrow sortorder */
{
yylhsminor
.
yy
209
=
commonItemAppend
(
yymsp
[
-
3
].
minor
.
yy209
,
NULL
,
yymsp
[
-
1
].
minor
.
yy574
,
true
,
yymsp
[
0
].
minor
.
yy33
2
);
yylhsminor
.
yy
161
=
commonItemAppend
(
yymsp
[
-
3
].
minor
.
yy161
,
NULL
,
yymsp
[
-
1
].
minor
.
yy546
,
true
,
yymsp
[
0
].
minor
.
yy45
2
);
}
yymsp
[
-
3
].
minor
.
yy
209
=
yylhsminor
.
yy209
;
yymsp
[
-
3
].
minor
.
yy
161
=
yylhsminor
.
yy161
;
break
;
case
224
:
/* sortlist ::= item sortorder */
{
yylhsminor
.
yy
209
=
commonItemAppend
(
NULL
,
&
yymsp
[
-
1
].
minor
.
yy54
,
NULL
,
false
,
yymsp
[
0
].
minor
.
yy33
2
);
yylhsminor
.
yy
161
=
commonItemAppend
(
NULL
,
&
yymsp
[
-
1
].
minor
.
yy526
,
NULL
,
false
,
yymsp
[
0
].
minor
.
yy45
2
);
}
yymsp
[
-
1
].
minor
.
yy
209
=
yylhsminor
.
yy209
;
yymsp
[
-
1
].
minor
.
yy
161
=
yylhsminor
.
yy161
;
break
;
case
225
:
/* sortlist ::= arrow sortorder */
{
yylhsminor
.
yy
209
=
commonItemAppend
(
NULL
,
NULL
,
yymsp
[
-
1
].
minor
.
yy574
,
true
,
yymsp
[
0
].
minor
.
yy33
2
);
yylhsminor
.
yy
161
=
commonItemAppend
(
NULL
,
NULL
,
yymsp
[
-
1
].
minor
.
yy546
,
true
,
yymsp
[
0
].
minor
.
yy45
2
);
}
yymsp
[
-
1
].
minor
.
yy
209
=
yylhsminor
.
yy209
;
yymsp
[
-
1
].
minor
.
yy
161
=
yylhsminor
.
yy161
;
break
;
case
226
:
/* item ::= ID */
{
toTSDBType
(
yymsp
[
0
].
minor
.
yy0
.
type
);
tVariantCreate
(
&
yylhsminor
.
yy5
4
,
&
yymsp
[
0
].
minor
.
yy0
);
tVariantCreate
(
&
yylhsminor
.
yy5
26
,
&
yymsp
[
0
].
minor
.
yy0
);
}
yymsp
[
0
].
minor
.
yy5
4
=
yylhsminor
.
yy54
;
yymsp
[
0
].
minor
.
yy5
26
=
yylhsminor
.
yy526
;
break
;
case
227
:
/* item ::= ID DOT ID */
{
toTSDBType
(
yymsp
[
-
2
].
minor
.
yy0
.
type
);
yymsp
[
-
2
].
minor
.
yy0
.
n
+=
(
1
+
yymsp
[
0
].
minor
.
yy0
.
n
);
tVariantCreate
(
&
yylhsminor
.
yy5
4
,
&
yymsp
[
-
2
].
minor
.
yy0
);
tVariantCreate
(
&
yylhsminor
.
yy5
26
,
&
yymsp
[
-
2
].
minor
.
yy0
);
}
yymsp
[
-
2
].
minor
.
yy5
4
=
yylhsminor
.
yy54
;
yymsp
[
-
2
].
minor
.
yy5
26
=
yylhsminor
.
yy526
;
break
;
case
228
:
/* sortorder ::= ASC */
{
yymsp
[
0
].
minor
.
yy
33
2
=
TSDB_ORDER_ASC
;
}
{
yymsp
[
0
].
minor
.
yy
45
2
=
TSDB_ORDER_ASC
;
}
break
;
case
229
:
/* sortorder ::= DESC */
{
yymsp
[
0
].
minor
.
yy
33
2
=
TSDB_ORDER_DESC
;}
{
yymsp
[
0
].
minor
.
yy
45
2
=
TSDB_ORDER_DESC
;}
break
;
case
230
:
/* sortorder ::= */
{
yymsp
[
1
].
minor
.
yy
33
2
=
TSDB_ORDER_ASC
;
}
{
yymsp
[
1
].
minor
.
yy
45
2
=
TSDB_ORDER_ASC
;
}
break
;
case
231
:
/* groupby_opt ::= */
{
yymsp
[
1
].
minor
.
yy
209
=
0
;}
{
yymsp
[
1
].
minor
.
yy
161
=
0
;}
break
;
case
232
:
/* groupby_opt ::= GROUP BY grouplist */
{
yymsp
[
-
2
].
minor
.
yy
209
=
yymsp
[
0
].
minor
.
yy209
;}
{
yymsp
[
-
2
].
minor
.
yy
161
=
yymsp
[
0
].
minor
.
yy161
;}
break
;
case
233
:
/* grouplist ::= grouplist COMMA item */
{
yylhsminor
.
yy
209
=
commonItemAppend
(
yymsp
[
-
2
].
minor
.
yy209
,
&
yymsp
[
0
].
minor
.
yy54
,
NULL
,
false
,
-
1
);
yylhsminor
.
yy
161
=
commonItemAppend
(
yymsp
[
-
2
].
minor
.
yy161
,
&
yymsp
[
0
].
minor
.
yy526
,
NULL
,
false
,
-
1
);
}
yymsp
[
-
2
].
minor
.
yy
209
=
yylhsminor
.
yy209
;
yymsp
[
-
2
].
minor
.
yy
161
=
yylhsminor
.
yy161
;
break
;
case
234
:
/* grouplist ::= grouplist COMMA arrow */
{
yylhsminor
.
yy
209
=
commonItemAppend
(
yymsp
[
-
2
].
minor
.
yy209
,
NULL
,
yymsp
[
0
].
minor
.
yy574
,
true
,
-
1
);
yylhsminor
.
yy
161
=
commonItemAppend
(
yymsp
[
-
2
].
minor
.
yy161
,
NULL
,
yymsp
[
0
].
minor
.
yy546
,
true
,
-
1
);
}
yymsp
[
-
2
].
minor
.
yy
209
=
yylhsminor
.
yy209
;
yymsp
[
-
2
].
minor
.
yy
161
=
yylhsminor
.
yy161
;
break
;
case
235
:
/* grouplist ::= item */
{
yylhsminor
.
yy
209
=
commonItemAppend
(
NULL
,
&
yymsp
[
0
].
minor
.
yy54
,
NULL
,
false
,
-
1
);
yylhsminor
.
yy
161
=
commonItemAppend
(
NULL
,
&
yymsp
[
0
].
minor
.
yy526
,
NULL
,
false
,
-
1
);
}
yymsp
[
0
].
minor
.
yy
209
=
yylhsminor
.
yy209
;
yymsp
[
0
].
minor
.
yy
161
=
yylhsminor
.
yy161
;
break
;
case
236
:
/* grouplist ::= arrow */
{
yylhsminor
.
yy
209
=
commonItemAppend
(
NULL
,
NULL
,
yymsp
[
0
].
minor
.
yy574
,
true
,
-
1
);
yylhsminor
.
yy
161
=
commonItemAppend
(
NULL
,
NULL
,
yymsp
[
0
].
minor
.
yy546
,
true
,
-
1
);
}
yymsp
[
0
].
minor
.
yy
209
=
yylhsminor
.
yy209
;
yymsp
[
0
].
minor
.
yy
161
=
yylhsminor
.
yy161
;
break
;
case
237
:
/* having_opt ::= */
case
247
:
/* where_opt ::= */
yytestcase
(
yyruleno
==
247
);
case
29
7
:
/* expritem ::= */
yytestcase
(
yyruleno
==
297
);
{
yymsp
[
1
].
minor
.
yy5
74
=
0
;}
case
29
8
:
/* expritem ::= */
yytestcase
(
yyruleno
==
298
);
{
yymsp
[
1
].
minor
.
yy5
46
=
0
;}
break
;
case
238
:
/* having_opt ::= HAVING expr */
case
248
:
/* where_opt ::= WHERE expr */
yytestcase
(
yyruleno
==
248
);
{
yymsp
[
-
1
].
minor
.
yy5
74
=
yymsp
[
0
].
minor
.
yy574
;}
{
yymsp
[
-
1
].
minor
.
yy5
46
=
yymsp
[
0
].
minor
.
yy546
;}
break
;
case
239
:
/* limit_opt ::= */
case
243
:
/* slimit_opt ::= */
yytestcase
(
yyruleno
==
243
);
{
yymsp
[
1
].
minor
.
yy
534
.
limit
=
-
1
;
yymsp
[
1
].
minor
.
yy53
4
.
offset
=
0
;}
{
yymsp
[
1
].
minor
.
yy
394
.
limit
=
-
1
;
yymsp
[
1
].
minor
.
yy39
4
.
offset
=
0
;}
break
;
case
240
:
/* limit_opt ::= LIMIT signed */
case
244
:
/* slimit_opt ::= SLIMIT signed */
yytestcase
(
yyruleno
==
244
);
{
yymsp
[
-
1
].
minor
.
yy
534
.
limit
=
yymsp
[
0
].
minor
.
yy55
;
yymsp
[
-
1
].
minor
.
yy53
4
.
offset
=
0
;}
{
yymsp
[
-
1
].
minor
.
yy
394
.
limit
=
yymsp
[
0
].
minor
.
yy369
;
yymsp
[
-
1
].
minor
.
yy39
4
.
offset
=
0
;}
break
;
case
241
:
/* limit_opt ::= LIMIT signed OFFSET signed */
{
yymsp
[
-
3
].
minor
.
yy
534
.
limit
=
yymsp
[
-
2
].
minor
.
yy55
;
yymsp
[
-
3
].
minor
.
yy534
.
offset
=
yymsp
[
0
].
minor
.
yy55
;}
{
yymsp
[
-
3
].
minor
.
yy
394
.
limit
=
yymsp
[
-
2
].
minor
.
yy369
;
yymsp
[
-
3
].
minor
.
yy394
.
offset
=
yymsp
[
0
].
minor
.
yy369
;}
break
;
case
242
:
/* limit_opt ::= LIMIT signed COMMA signed */
{
yymsp
[
-
3
].
minor
.
yy
534
.
limit
=
yymsp
[
0
].
minor
.
yy55
;
yymsp
[
-
3
].
minor
.
yy534
.
offset
=
yymsp
[
-
2
].
minor
.
yy55
;}
{
yymsp
[
-
3
].
minor
.
yy
394
.
limit
=
yymsp
[
0
].
minor
.
yy369
;
yymsp
[
-
3
].
minor
.
yy394
.
offset
=
yymsp
[
-
2
].
minor
.
yy369
;}
break
;
case
245
:
/* slimit_opt ::= SLIMIT signed SOFFSET signed */
{
yymsp
[
-
3
].
minor
.
yy
534
.
limit
=
yymsp
[
-
2
].
minor
.
yy55
;
yymsp
[
-
3
].
minor
.
yy534
.
offset
=
yymsp
[
0
].
minor
.
yy55
;}
{
yymsp
[
-
3
].
minor
.
yy
394
.
limit
=
yymsp
[
-
2
].
minor
.
yy369
;
yymsp
[
-
3
].
minor
.
yy394
.
offset
=
yymsp
[
0
].
minor
.
yy369
;}
break
;
case
246
:
/* slimit_opt ::= SLIMIT signed COMMA signed */
{
yymsp
[
-
3
].
minor
.
yy
534
.
limit
=
yymsp
[
0
].
minor
.
yy55
;
yymsp
[
-
3
].
minor
.
yy534
.
offset
=
yymsp
[
-
2
].
minor
.
yy55
;}
{
yymsp
[
-
3
].
minor
.
yy
394
.
limit
=
yymsp
[
0
].
minor
.
yy369
;
yymsp
[
-
3
].
minor
.
yy394
.
offset
=
yymsp
[
-
2
].
minor
.
yy369
;}
break
;
case
249
:
/* expr ::= LP expr RP */
{
yylhsminor
.
yy5
74
=
yymsp
[
-
1
].
minor
.
yy574
;
yylhsminor
.
yy574
->
exprToken
.
z
=
yymsp
[
-
2
].
minor
.
yy0
.
z
;
yylhsminor
.
yy574
->
exprToken
.
n
=
(
yymsp
[
0
].
minor
.
yy0
.
z
-
yymsp
[
-
2
].
minor
.
yy0
.
z
+
1
);}
yymsp
[
-
2
].
minor
.
yy5
74
=
yylhsminor
.
yy574
;
{
yylhsminor
.
yy5
46
=
yymsp
[
-
1
].
minor
.
yy546
;
yylhsminor
.
yy546
->
exprToken
.
z
=
yymsp
[
-
2
].
minor
.
yy0
.
z
;
yylhsminor
.
yy546
->
exprToken
.
n
=
(
yymsp
[
0
].
minor
.
yy0
.
z
-
yymsp
[
-
2
].
minor
.
yy0
.
z
+
1
);}
yymsp
[
-
2
].
minor
.
yy5
46
=
yylhsminor
.
yy546
;
break
;
case
250
:
/* expr ::= ID */
{
yylhsminor
.
yy5
74
=
tSqlExprCreateIdValue
(
pInfo
,
&
yymsp
[
0
].
minor
.
yy0
,
TK_ID
);}
yymsp
[
0
].
minor
.
yy5
74
=
yylhsminor
.
yy574
;
{
yylhsminor
.
yy5
46
=
tSqlExprCreateIdValue
(
pInfo
,
&
yymsp
[
0
].
minor
.
yy0
,
TK_ID
);}
yymsp
[
0
].
minor
.
yy5
46
=
yylhsminor
.
yy546
;
break
;
case
251
:
/* expr ::= ID DOT ID */
{
yymsp
[
-
2
].
minor
.
yy0
.
n
+=
(
1
+
yymsp
[
0
].
minor
.
yy0
.
n
);
yylhsminor
.
yy5
74
=
tSqlExprCreateIdValue
(
pInfo
,
&
yymsp
[
-
2
].
minor
.
yy0
,
TK_ID
);}
yymsp
[
-
2
].
minor
.
yy5
74
=
yylhsminor
.
yy574
;
{
yymsp
[
-
2
].
minor
.
yy0
.
n
+=
(
1
+
yymsp
[
0
].
minor
.
yy0
.
n
);
yylhsminor
.
yy5
46
=
tSqlExprCreateIdValue
(
pInfo
,
&
yymsp
[
-
2
].
minor
.
yy0
,
TK_ID
);}
yymsp
[
-
2
].
minor
.
yy5
46
=
yylhsminor
.
yy546
;
break
;
case
252
:
/* expr ::= ID DOT STAR */
{
yymsp
[
-
2
].
minor
.
yy0
.
n
+=
(
1
+
yymsp
[
0
].
minor
.
yy0
.
n
);
yylhsminor
.
yy5
74
=
tSqlExprCreateIdValue
(
pInfo
,
&
yymsp
[
-
2
].
minor
.
yy0
,
TK_ALL
);}
yymsp
[
-
2
].
minor
.
yy5
74
=
yylhsminor
.
yy574
;
{
yymsp
[
-
2
].
minor
.
yy0
.
n
+=
(
1
+
yymsp
[
0
].
minor
.
yy0
.
n
);
yylhsminor
.
yy5
46
=
tSqlExprCreateIdValue
(
pInfo
,
&
yymsp
[
-
2
].
minor
.
yy0
,
TK_ALL
);}
yymsp
[
-
2
].
minor
.
yy5
46
=
yylhsminor
.
yy546
;
break
;
case
253
:
/* expr ::= INTEGER */
{
yylhsminor
.
yy5
74
=
tSqlExprCreateIdValue
(
pInfo
,
&
yymsp
[
0
].
minor
.
yy0
,
TK_INTEGER
);}
yymsp
[
0
].
minor
.
yy5
74
=
yylhsminor
.
yy574
;
{
yylhsminor
.
yy5
46
=
tSqlExprCreateIdValue
(
pInfo
,
&
yymsp
[
0
].
minor
.
yy0
,
TK_INTEGER
);}
yymsp
[
0
].
minor
.
yy5
46
=
yylhsminor
.
yy546
;
break
;
case
254
:
/* expr ::= MINUS INTEGER */
case
255
:
/* expr ::= PLUS INTEGER */
yytestcase
(
yyruleno
==
255
);
{
yymsp
[
-
1
].
minor
.
yy0
.
n
+=
yymsp
[
0
].
minor
.
yy0
.
n
;
yymsp
[
-
1
].
minor
.
yy0
.
type
=
TK_INTEGER
;
yylhsminor
.
yy5
74
=
tSqlExprCreateIdValue
(
pInfo
,
&
yymsp
[
-
1
].
minor
.
yy0
,
TK_INTEGER
);}
yymsp
[
-
1
].
minor
.
yy5
74
=
yylhsminor
.
yy574
;
{
yymsp
[
-
1
].
minor
.
yy0
.
n
+=
yymsp
[
0
].
minor
.
yy0
.
n
;
yymsp
[
-
1
].
minor
.
yy0
.
type
=
TK_INTEGER
;
yylhsminor
.
yy5
46
=
tSqlExprCreateIdValue
(
pInfo
,
&
yymsp
[
-
1
].
minor
.
yy0
,
TK_INTEGER
);}
yymsp
[
-
1
].
minor
.
yy5
46
=
yylhsminor
.
yy546
;
break
;
case
256
:
/* expr ::= FLOAT */
{
yylhsminor
.
yy5
74
=
tSqlExprCreateIdValue
(
pInfo
,
&
yymsp
[
0
].
minor
.
yy0
,
TK_FLOAT
);}
yymsp
[
0
].
minor
.
yy5
74
=
yylhsminor
.
yy574
;
{
yylhsminor
.
yy5
46
=
tSqlExprCreateIdValue
(
pInfo
,
&
yymsp
[
0
].
minor
.
yy0
,
TK_FLOAT
);}
yymsp
[
0
].
minor
.
yy5
46
=
yylhsminor
.
yy546
;
break
;
case
257
:
/* expr ::= MINUS FLOAT */
case
258
:
/* expr ::= PLUS FLOAT */
yytestcase
(
yyruleno
==
258
);
{
yymsp
[
-
1
].
minor
.
yy0
.
n
+=
yymsp
[
0
].
minor
.
yy0
.
n
;
yymsp
[
-
1
].
minor
.
yy0
.
type
=
TK_FLOAT
;
yylhsminor
.
yy5
74
=
tSqlExprCreateIdValue
(
pInfo
,
&
yymsp
[
-
1
].
minor
.
yy0
,
TK_FLOAT
);}
yymsp
[
-
1
].
minor
.
yy5
74
=
yylhsminor
.
yy574
;
{
yymsp
[
-
1
].
minor
.
yy0
.
n
+=
yymsp
[
0
].
minor
.
yy0
.
n
;
yymsp
[
-
1
].
minor
.
yy0
.
type
=
TK_FLOAT
;
yylhsminor
.
yy5
46
=
tSqlExprCreateIdValue
(
pInfo
,
&
yymsp
[
-
1
].
minor
.
yy0
,
TK_FLOAT
);}
yymsp
[
-
1
].
minor
.
yy5
46
=
yylhsminor
.
yy546
;
break
;
case
259
:
/* expr ::= STRING */
{
yylhsminor
.
yy5
74
=
tSqlExprCreateIdValue
(
pInfo
,
&
yymsp
[
0
].
minor
.
yy0
,
TK_STRING
);}
yymsp
[
0
].
minor
.
yy5
74
=
yylhsminor
.
yy574
;
{
yylhsminor
.
yy5
46
=
tSqlExprCreateIdValue
(
pInfo
,
&
yymsp
[
0
].
minor
.
yy0
,
TK_STRING
);}
yymsp
[
0
].
minor
.
yy5
46
=
yylhsminor
.
yy546
;
break
;
case
260
:
/* expr ::= NOW */
{
yylhsminor
.
yy574
=
tSqlExprCreateIdValue
(
pInfo
,
&
yymsp
[
0
].
minor
.
yy0
,
TK_NOW
);
}
yymsp
[
0
].
minor
.
yy574
=
yylhsminor
.
yy574
;
{
yylhsminor
.
yy546
=
tSqlExprCreateIdValue
(
pInfo
,
&
yymsp
[
0
].
minor
.
yy0
,
TK_NOW
);
}
yymsp
[
0
].
minor
.
yy546
=
yylhsminor
.
yy546
;
break
;
case
261
:
/* expr ::= TODAY */
{
yylhsminor
.
yy546
=
tSqlExprCreateIdValue
(
pInfo
,
&
yymsp
[
0
].
minor
.
yy0
,
TK_TODAY
);
}
yymsp
[
0
].
minor
.
yy546
=
yylhsminor
.
yy546
;
break
;
case
26
1
:
/* expr ::= VARIABLE */
{
yylhsminor
.
yy5
74
=
tSqlExprCreateIdValue
(
pInfo
,
&
yymsp
[
0
].
minor
.
yy0
,
TK_VARIABLE
);}
yymsp
[
0
].
minor
.
yy5
74
=
yylhsminor
.
yy574
;
case
26
2
:
/* expr ::= VARIABLE */
{
yylhsminor
.
yy5
46
=
tSqlExprCreateIdValue
(
pInfo
,
&
yymsp
[
0
].
minor
.
yy0
,
TK_VARIABLE
);}
yymsp
[
0
].
minor
.
yy5
46
=
yylhsminor
.
yy546
;
break
;
case
26
2
:
/* expr ::= PLUS VARIABLE */
case
26
3
:
/* expr ::= MINUS VARIABLE */
yytestcase
(
yyruleno
==
263
);
{
yymsp
[
-
1
].
minor
.
yy0
.
n
+=
yymsp
[
0
].
minor
.
yy0
.
n
;
yymsp
[
-
1
].
minor
.
yy0
.
type
=
TK_VARIABLE
;
yylhsminor
.
yy5
74
=
tSqlExprCreateIdValue
(
pInfo
,
&
yymsp
[
-
1
].
minor
.
yy0
,
TK_VARIABLE
);}
yymsp
[
-
1
].
minor
.
yy5
74
=
yylhsminor
.
yy574
;
case
26
3
:
/* expr ::= PLUS VARIABLE */
case
26
4
:
/* expr ::= MINUS VARIABLE */
yytestcase
(
yyruleno
==
264
);
{
yymsp
[
-
1
].
minor
.
yy0
.
n
+=
yymsp
[
0
].
minor
.
yy0
.
n
;
yymsp
[
-
1
].
minor
.
yy0
.
type
=
TK_VARIABLE
;
yylhsminor
.
yy5
46
=
tSqlExprCreateIdValue
(
pInfo
,
&
yymsp
[
-
1
].
minor
.
yy0
,
TK_VARIABLE
);}
yymsp
[
-
1
].
minor
.
yy5
46
=
yylhsminor
.
yy546
;
break
;
case
26
4
:
/* expr ::= BOOL */
{
yylhsminor
.
yy5
74
=
tSqlExprCreateIdValue
(
pInfo
,
&
yymsp
[
0
].
minor
.
yy0
,
TK_BOOL
);}
yymsp
[
0
].
minor
.
yy5
74
=
yylhsminor
.
yy574
;
case
26
5
:
/* expr ::= BOOL */
{
yylhsminor
.
yy5
46
=
tSqlExprCreateIdValue
(
pInfo
,
&
yymsp
[
0
].
minor
.
yy0
,
TK_BOOL
);}
yymsp
[
0
].
minor
.
yy5
46
=
yylhsminor
.
yy546
;
break
;
case
26
5
:
/* expr ::= NULL */
{
yylhsminor
.
yy5
74
=
tSqlExprCreateIdValue
(
pInfo
,
&
yymsp
[
0
].
minor
.
yy0
,
TK_NULL
);}
yymsp
[
0
].
minor
.
yy5
74
=
yylhsminor
.
yy574
;
case
26
6
:
/* expr ::= NULL */
{
yylhsminor
.
yy5
46
=
tSqlExprCreateIdValue
(
pInfo
,
&
yymsp
[
0
].
minor
.
yy0
,
TK_NULL
);}
yymsp
[
0
].
minor
.
yy5
46
=
yylhsminor
.
yy546
;
break
;
case
26
6
:
/* expr ::= ID LP exprlist RP */
{
tStrTokenAppend
(
pInfo
->
funcs
,
&
yymsp
[
-
3
].
minor
.
yy0
);
yylhsminor
.
yy5
74
=
tSqlExprCreateFunction
(
yymsp
[
-
1
].
minor
.
yy209
,
&
yymsp
[
-
3
].
minor
.
yy0
,
&
yymsp
[
0
].
minor
.
yy0
,
yymsp
[
-
3
].
minor
.
yy0
.
type
);
}
yymsp
[
-
3
].
minor
.
yy5
74
=
yylhsminor
.
yy574
;
case
26
7
:
/* expr ::= ID LP exprlist RP */
{
tStrTokenAppend
(
pInfo
->
funcs
,
&
yymsp
[
-
3
].
minor
.
yy0
);
yylhsminor
.
yy5
46
=
tSqlExprCreateFunction
(
yymsp
[
-
1
].
minor
.
yy161
,
&
yymsp
[
-
3
].
minor
.
yy0
,
&
yymsp
[
0
].
minor
.
yy0
,
yymsp
[
-
3
].
minor
.
yy0
.
type
);
}
yymsp
[
-
3
].
minor
.
yy5
46
=
yylhsminor
.
yy546
;
break
;
case
26
7
:
/* expr ::= ID LP STAR RP */
{
tStrTokenAppend
(
pInfo
->
funcs
,
&
yymsp
[
-
3
].
minor
.
yy0
);
yylhsminor
.
yy5
74
=
tSqlExprCreateFunction
(
NULL
,
&
yymsp
[
-
3
].
minor
.
yy0
,
&
yymsp
[
0
].
minor
.
yy0
,
yymsp
[
-
3
].
minor
.
yy0
.
type
);
}
yymsp
[
-
3
].
minor
.
yy5
74
=
yylhsminor
.
yy574
;
break
;
case
26
8
:
/* expr ::= ID LP expr AS typename RP */
{
tStrTokenAppend
(
pInfo
->
funcs
,
&
yymsp
[
-
5
].
minor
.
yy0
);
yylhsminor
.
yy5
74
=
tSqlExprCreateFuncWithParams
(
pInfo
,
yymsp
[
-
3
].
minor
.
yy574
,
&
yymsp
[
-
1
].
minor
.
yy369
,
&
yymsp
[
-
5
].
minor
.
yy0
,
&
yymsp
[
0
].
minor
.
yy0
,
yymsp
[
-
5
].
minor
.
yy0
.
type
);
}
yymsp
[
-
5
].
minor
.
yy5
74
=
yylhsminor
.
yy574
;
break
;
case
2
69
:
/* expr ::= expr IS NULL */
{
yylhsminor
.
yy5
74
=
tSqlExprCreate
(
yymsp
[
-
2
].
minor
.
yy574
,
NULL
,
TK_ISNULL
);}
yymsp
[
-
2
].
minor
.
yy5
74
=
yylhsminor
.
yy574
;
break
;
case
27
0
:
/* expr ::= expr IS NOT NULL */
{
yylhsminor
.
yy5
74
=
tSqlExprCreate
(
yymsp
[
-
3
].
minor
.
yy574
,
NULL
,
TK_NOTNULL
);}
yymsp
[
-
3
].
minor
.
yy5
74
=
yylhsminor
.
yy574
;
break
;
case
27
1
:
/* expr ::= expr LT expr */
{
yylhsminor
.
yy5
74
=
tSqlExprCreate
(
yymsp
[
-
2
].
minor
.
yy574
,
yymsp
[
0
].
minor
.
yy574
,
TK_LT
);}
yymsp
[
-
2
].
minor
.
yy5
74
=
yylhsminor
.
yy574
;
case
26
8
:
/* expr ::= ID LP STAR RP */
{
tStrTokenAppend
(
pInfo
->
funcs
,
&
yymsp
[
-
3
].
minor
.
yy0
);
yylhsminor
.
yy5
46
=
tSqlExprCreateFunction
(
NULL
,
&
yymsp
[
-
3
].
minor
.
yy0
,
&
yymsp
[
0
].
minor
.
yy0
,
yymsp
[
-
3
].
minor
.
yy0
.
type
);
}
yymsp
[
-
3
].
minor
.
yy5
46
=
yylhsminor
.
yy546
;
break
;
case
26
9
:
/* expr ::= ID LP expr AS typename RP */
{
tStrTokenAppend
(
pInfo
->
funcs
,
&
yymsp
[
-
5
].
minor
.
yy0
);
yylhsminor
.
yy5
46
=
tSqlExprCreateFuncWithParams
(
pInfo
,
yymsp
[
-
3
].
minor
.
yy546
,
&
yymsp
[
-
1
].
minor
.
yy223
,
&
yymsp
[
-
5
].
minor
.
yy0
,
&
yymsp
[
0
].
minor
.
yy0
,
yymsp
[
-
5
].
minor
.
yy0
.
type
);
}
yymsp
[
-
5
].
minor
.
yy5
46
=
yylhsminor
.
yy546
;
break
;
case
2
70
:
/* expr ::= expr IS NULL */
{
yylhsminor
.
yy5
46
=
tSqlExprCreate
(
yymsp
[
-
2
].
minor
.
yy546
,
NULL
,
TK_ISNULL
);}
yymsp
[
-
2
].
minor
.
yy5
46
=
yylhsminor
.
yy546
;
break
;
case
27
1
:
/* expr ::= expr IS NOT NULL */
{
yylhsminor
.
yy5
46
=
tSqlExprCreate
(
yymsp
[
-
3
].
minor
.
yy546
,
NULL
,
TK_NOTNULL
);}
yymsp
[
-
3
].
minor
.
yy5
46
=
yylhsminor
.
yy546
;
break
;
case
27
2
:
/* expr ::= expr LT expr */
{
yylhsminor
.
yy5
46
=
tSqlExprCreate
(
yymsp
[
-
2
].
minor
.
yy546
,
yymsp
[
0
].
minor
.
yy546
,
TK_LT
);}
yymsp
[
-
2
].
minor
.
yy5
46
=
yylhsminor
.
yy546
;
break
;
case
27
2
:
/* expr ::= expr GT expr */
{
yylhsminor
.
yy5
74
=
tSqlExprCreate
(
yymsp
[
-
2
].
minor
.
yy574
,
yymsp
[
0
].
minor
.
yy574
,
TK_GT
);}
yymsp
[
-
2
].
minor
.
yy5
74
=
yylhsminor
.
yy574
;
case
27
3
:
/* expr ::= expr GT expr */
{
yylhsminor
.
yy5
46
=
tSqlExprCreate
(
yymsp
[
-
2
].
minor
.
yy546
,
yymsp
[
0
].
minor
.
yy546
,
TK_GT
);}
yymsp
[
-
2
].
minor
.
yy5
46
=
yylhsminor
.
yy546
;
break
;
case
27
3
:
/* expr ::= expr LE expr */
{
yylhsminor
.
yy5
74
=
tSqlExprCreate
(
yymsp
[
-
2
].
minor
.
yy574
,
yymsp
[
0
].
minor
.
yy574
,
TK_LE
);}
yymsp
[
-
2
].
minor
.
yy5
74
=
yylhsminor
.
yy574
;
case
27
4
:
/* expr ::= expr LE expr */
{
yylhsminor
.
yy5
46
=
tSqlExprCreate
(
yymsp
[
-
2
].
minor
.
yy546
,
yymsp
[
0
].
minor
.
yy546
,
TK_LE
);}
yymsp
[
-
2
].
minor
.
yy5
46
=
yylhsminor
.
yy546
;
break
;
case
27
4
:
/* expr ::= expr GE expr */
{
yylhsminor
.
yy5
74
=
tSqlExprCreate
(
yymsp
[
-
2
].
minor
.
yy574
,
yymsp
[
0
].
minor
.
yy574
,
TK_GE
);}
yymsp
[
-
2
].
minor
.
yy5
74
=
yylhsminor
.
yy574
;
case
27
5
:
/* expr ::= expr GE expr */
{
yylhsminor
.
yy5
46
=
tSqlExprCreate
(
yymsp
[
-
2
].
minor
.
yy546
,
yymsp
[
0
].
minor
.
yy546
,
TK_GE
);}
yymsp
[
-
2
].
minor
.
yy5
46
=
yylhsminor
.
yy546
;
break
;
case
27
5
:
/* expr ::= expr NE expr */
{
yylhsminor
.
yy5
74
=
tSqlExprCreate
(
yymsp
[
-
2
].
minor
.
yy574
,
yymsp
[
0
].
minor
.
yy574
,
TK_NE
);}
yymsp
[
-
2
].
minor
.
yy5
74
=
yylhsminor
.
yy574
;
case
27
6
:
/* expr ::= expr NE expr */
{
yylhsminor
.
yy5
46
=
tSqlExprCreate
(
yymsp
[
-
2
].
minor
.
yy546
,
yymsp
[
0
].
minor
.
yy546
,
TK_NE
);}
yymsp
[
-
2
].
minor
.
yy5
46
=
yylhsminor
.
yy546
;
break
;
case
27
6
:
/* expr ::= expr EQ expr */
{
yylhsminor
.
yy5
74
=
tSqlExprCreate
(
yymsp
[
-
2
].
minor
.
yy574
,
yymsp
[
0
].
minor
.
yy574
,
TK_EQ
);}
yymsp
[
-
2
].
minor
.
yy5
74
=
yylhsminor
.
yy574
;
case
27
7
:
/* expr ::= expr EQ expr */
{
yylhsminor
.
yy5
46
=
tSqlExprCreate
(
yymsp
[
-
2
].
minor
.
yy546
,
yymsp
[
0
].
minor
.
yy546
,
TK_EQ
);}
yymsp
[
-
2
].
minor
.
yy5
46
=
yylhsminor
.
yy546
;
break
;
case
27
7
:
/* expr ::= expr BETWEEN expr AND expr */
{
tSqlExpr
*
X2
=
tSqlExprClone
(
yymsp
[
-
4
].
minor
.
yy5
74
);
yylhsminor
.
yy574
=
tSqlExprCreate
(
tSqlExprCreate
(
yymsp
[
-
4
].
minor
.
yy574
,
yymsp
[
-
2
].
minor
.
yy574
,
TK_GE
),
tSqlExprCreate
(
X2
,
yymsp
[
0
].
minor
.
yy574
,
TK_LE
),
TK_AND
);}
yymsp
[
-
4
].
minor
.
yy5
74
=
yylhsminor
.
yy574
;
case
27
8
:
/* expr ::= expr BETWEEN expr AND expr */
{
tSqlExpr
*
X2
=
tSqlExprClone
(
yymsp
[
-
4
].
minor
.
yy5
46
);
yylhsminor
.
yy546
=
tSqlExprCreate
(
tSqlExprCreate
(
yymsp
[
-
4
].
minor
.
yy546
,
yymsp
[
-
2
].
minor
.
yy546
,
TK_GE
),
tSqlExprCreate
(
X2
,
yymsp
[
0
].
minor
.
yy546
,
TK_LE
),
TK_AND
);}
yymsp
[
-
4
].
minor
.
yy5
46
=
yylhsminor
.
yy546
;
break
;
case
27
8
:
/* expr ::= expr AND expr */
{
yylhsminor
.
yy5
74
=
tSqlExprCreate
(
yymsp
[
-
2
].
minor
.
yy574
,
yymsp
[
0
].
minor
.
yy574
,
TK_AND
);}
yymsp
[
-
2
].
minor
.
yy5
74
=
yylhsminor
.
yy574
;
case
27
9
:
/* expr ::= expr AND expr */
{
yylhsminor
.
yy5
46
=
tSqlExprCreate
(
yymsp
[
-
2
].
minor
.
yy546
,
yymsp
[
0
].
minor
.
yy546
,
TK_AND
);}
yymsp
[
-
2
].
minor
.
yy5
46
=
yylhsminor
.
yy546
;
break
;
case
2
79
:
/* expr ::= expr OR expr */
{
yylhsminor
.
yy5
74
=
tSqlExprCreate
(
yymsp
[
-
2
].
minor
.
yy574
,
yymsp
[
0
].
minor
.
yy574
,
TK_OR
);
}
yymsp
[
-
2
].
minor
.
yy5
74
=
yylhsminor
.
yy574
;
case
2
80
:
/* expr ::= expr OR expr */
{
yylhsminor
.
yy5
46
=
tSqlExprCreate
(
yymsp
[
-
2
].
minor
.
yy546
,
yymsp
[
0
].
minor
.
yy546
,
TK_OR
);
}
yymsp
[
-
2
].
minor
.
yy5
46
=
yylhsminor
.
yy546
;
break
;
case
28
0
:
/* expr ::= expr PLUS expr */
{
yylhsminor
.
yy5
74
=
tSqlExprCreate
(
yymsp
[
-
2
].
minor
.
yy574
,
yymsp
[
0
].
minor
.
yy574
,
TK_PLUS
);
}
yymsp
[
-
2
].
minor
.
yy5
74
=
yylhsminor
.
yy574
;
case
28
1
:
/* expr ::= expr PLUS expr */
{
yylhsminor
.
yy5
46
=
tSqlExprCreate
(
yymsp
[
-
2
].
minor
.
yy546
,
yymsp
[
0
].
minor
.
yy546
,
TK_PLUS
);
}
yymsp
[
-
2
].
minor
.
yy5
46
=
yylhsminor
.
yy546
;
break
;
case
28
1
:
/* expr ::= expr MINUS expr */
{
yylhsminor
.
yy5
74
=
tSqlExprCreate
(
yymsp
[
-
2
].
minor
.
yy574
,
yymsp
[
0
].
minor
.
yy574
,
TK_MINUS
);
}
yymsp
[
-
2
].
minor
.
yy5
74
=
yylhsminor
.
yy574
;
case
28
2
:
/* expr ::= expr MINUS expr */
{
yylhsminor
.
yy5
46
=
tSqlExprCreate
(
yymsp
[
-
2
].
minor
.
yy546
,
yymsp
[
0
].
minor
.
yy546
,
TK_MINUS
);
}
yymsp
[
-
2
].
minor
.
yy5
46
=
yylhsminor
.
yy546
;
break
;
case
28
2
:
/* expr ::= expr STAR expr */
{
yylhsminor
.
yy5
74
=
tSqlExprCreate
(
yymsp
[
-
2
].
minor
.
yy574
,
yymsp
[
0
].
minor
.
yy574
,
TK_STAR
);
}
yymsp
[
-
2
].
minor
.
yy5
74
=
yylhsminor
.
yy574
;
case
28
3
:
/* expr ::= expr STAR expr */
{
yylhsminor
.
yy5
46
=
tSqlExprCreate
(
yymsp
[
-
2
].
minor
.
yy546
,
yymsp
[
0
].
minor
.
yy546
,
TK_STAR
);
}
yymsp
[
-
2
].
minor
.
yy5
46
=
yylhsminor
.
yy546
;
break
;
case
28
3
:
/* expr ::= expr SLASH expr */
{
yylhsminor
.
yy5
74
=
tSqlExprCreate
(
yymsp
[
-
2
].
minor
.
yy574
,
yymsp
[
0
].
minor
.
yy574
,
TK_DIVIDE
);}
yymsp
[
-
2
].
minor
.
yy5
74
=
yylhsminor
.
yy574
;
case
28
4
:
/* expr ::= expr SLASH expr */
{
yylhsminor
.
yy5
46
=
tSqlExprCreate
(
yymsp
[
-
2
].
minor
.
yy546
,
yymsp
[
0
].
minor
.
yy546
,
TK_DIVIDE
);}
yymsp
[
-
2
].
minor
.
yy5
46
=
yylhsminor
.
yy546
;
break
;
case
28
4
:
/* expr ::= expr REM expr */
{
yylhsminor
.
yy5
74
=
tSqlExprCreate
(
yymsp
[
-
2
].
minor
.
yy574
,
yymsp
[
0
].
minor
.
yy574
,
TK_REM
);
}
yymsp
[
-
2
].
minor
.
yy5
74
=
yylhsminor
.
yy574
;
case
28
5
:
/* expr ::= expr REM expr */
{
yylhsminor
.
yy5
46
=
tSqlExprCreate
(
yymsp
[
-
2
].
minor
.
yy546
,
yymsp
[
0
].
minor
.
yy546
,
TK_REM
);
}
yymsp
[
-
2
].
minor
.
yy5
46
=
yylhsminor
.
yy546
;
break
;
case
28
5
:
/* expr ::= expr LIKE expr */
{
yylhsminor
.
yy5
74
=
tSqlExprCreate
(
yymsp
[
-
2
].
minor
.
yy574
,
yymsp
[
0
].
minor
.
yy574
,
TK_LIKE
);
}
yymsp
[
-
2
].
minor
.
yy5
74
=
yylhsminor
.
yy574
;
case
28
6
:
/* expr ::= expr LIKE expr */
{
yylhsminor
.
yy5
46
=
tSqlExprCreate
(
yymsp
[
-
2
].
minor
.
yy546
,
yymsp
[
0
].
minor
.
yy546
,
TK_LIKE
);
}
yymsp
[
-
2
].
minor
.
yy5
46
=
yylhsminor
.
yy546
;
break
;
case
28
6
:
/* expr ::= expr MATCH expr */
{
yylhsminor
.
yy5
74
=
tSqlExprCreate
(
yymsp
[
-
2
].
minor
.
yy574
,
yymsp
[
0
].
minor
.
yy574
,
TK_MATCH
);
}
yymsp
[
-
2
].
minor
.
yy5
74
=
yylhsminor
.
yy574
;
case
28
7
:
/* expr ::= expr MATCH expr */
{
yylhsminor
.
yy5
46
=
tSqlExprCreate
(
yymsp
[
-
2
].
minor
.
yy546
,
yymsp
[
0
].
minor
.
yy546
,
TK_MATCH
);
}
yymsp
[
-
2
].
minor
.
yy5
46
=
yylhsminor
.
yy546
;
break
;
case
28
7
:
/* expr ::= expr NMATCH expr */
{
yylhsminor
.
yy5
74
=
tSqlExprCreate
(
yymsp
[
-
2
].
minor
.
yy574
,
yymsp
[
0
].
minor
.
yy574
,
TK_NMATCH
);
}
yymsp
[
-
2
].
minor
.
yy5
74
=
yylhsminor
.
yy574
;
case
28
8
:
/* expr ::= expr NMATCH expr */
{
yylhsminor
.
yy5
46
=
tSqlExprCreate
(
yymsp
[
-
2
].
minor
.
yy546
,
yymsp
[
0
].
minor
.
yy546
,
TK_NMATCH
);
}
yymsp
[
-
2
].
minor
.
yy5
46
=
yylhsminor
.
yy546
;
break
;
case
28
8
:
/* expr ::= ID CONTAINS STRING */
{
tSqlExpr
*
S
=
tSqlExprCreateIdValue
(
pInfo
,
&
yymsp
[
-
2
].
minor
.
yy0
,
TK_ID
);
tSqlExpr
*
M
=
tSqlExprCreateIdValue
(
pInfo
,
&
yymsp
[
0
].
minor
.
yy0
,
TK_STRING
);
yylhsminor
.
yy5
74
=
tSqlExprCreate
(
S
,
M
,
TK_CONTAINS
);
}
yymsp
[
-
2
].
minor
.
yy5
74
=
yylhsminor
.
yy574
;
case
28
9
:
/* expr ::= ID CONTAINS STRING */
{
tSqlExpr
*
S
=
tSqlExprCreateIdValue
(
pInfo
,
&
yymsp
[
-
2
].
minor
.
yy0
,
TK_ID
);
tSqlExpr
*
M
=
tSqlExprCreateIdValue
(
pInfo
,
&
yymsp
[
0
].
minor
.
yy0
,
TK_STRING
);
yylhsminor
.
yy5
46
=
tSqlExprCreate
(
S
,
M
,
TK_CONTAINS
);
}
yymsp
[
-
2
].
minor
.
yy5
46
=
yylhsminor
.
yy546
;
break
;
case
2
89
:
/* expr ::= ID DOT ID CONTAINS STRING */
{
yymsp
[
-
4
].
minor
.
yy0
.
n
+=
(
1
+
yymsp
[
-
2
].
minor
.
yy0
.
n
);
tSqlExpr
*
S
=
tSqlExprCreateIdValue
(
pInfo
,
&
yymsp
[
-
4
].
minor
.
yy0
,
TK_ID
);
tSqlExpr
*
M
=
tSqlExprCreateIdValue
(
pInfo
,
&
yymsp
[
0
].
minor
.
yy0
,
TK_STRING
);
yylhsminor
.
yy5
74
=
tSqlExprCreate
(
S
,
M
,
TK_CONTAINS
);
}
yymsp
[
-
4
].
minor
.
yy5
74
=
yylhsminor
.
yy574
;
case
2
90
:
/* expr ::= ID DOT ID CONTAINS STRING */
{
yymsp
[
-
4
].
minor
.
yy0
.
n
+=
(
1
+
yymsp
[
-
2
].
minor
.
yy0
.
n
);
tSqlExpr
*
S
=
tSqlExprCreateIdValue
(
pInfo
,
&
yymsp
[
-
4
].
minor
.
yy0
,
TK_ID
);
tSqlExpr
*
M
=
tSqlExprCreateIdValue
(
pInfo
,
&
yymsp
[
0
].
minor
.
yy0
,
TK_STRING
);
yylhsminor
.
yy5
46
=
tSqlExprCreate
(
S
,
M
,
TK_CONTAINS
);
}
yymsp
[
-
4
].
minor
.
yy5
46
=
yylhsminor
.
yy546
;
break
;
case
29
0
:
/* arrow ::= ID ARROW STRING */
{
tSqlExpr
*
S
=
tSqlExprCreateIdValue
(
pInfo
,
&
yymsp
[
-
2
].
minor
.
yy0
,
TK_ID
);
tSqlExpr
*
M
=
tSqlExprCreateIdValue
(
pInfo
,
&
yymsp
[
0
].
minor
.
yy0
,
TK_STRING
);
yylhsminor
.
yy5
74
=
tSqlExprCreate
(
S
,
M
,
TK_ARROW
);
}
yymsp
[
-
2
].
minor
.
yy5
74
=
yylhsminor
.
yy574
;
case
29
1
:
/* arrow ::= ID ARROW STRING */
{
tSqlExpr
*
S
=
tSqlExprCreateIdValue
(
pInfo
,
&
yymsp
[
-
2
].
minor
.
yy0
,
TK_ID
);
tSqlExpr
*
M
=
tSqlExprCreateIdValue
(
pInfo
,
&
yymsp
[
0
].
minor
.
yy0
,
TK_STRING
);
yylhsminor
.
yy5
46
=
tSqlExprCreate
(
S
,
M
,
TK_ARROW
);
}
yymsp
[
-
2
].
minor
.
yy5
46
=
yylhsminor
.
yy546
;
break
;
case
29
1
:
/* 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
.
yy5
74
=
tSqlExprCreate
(
S
,
M
,
TK_ARROW
);
}
yymsp
[
-
4
].
minor
.
yy5
74
=
yylhsminor
.
yy574
;
case
29
2
:
/* 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
.
yy5
46
=
tSqlExprCreate
(
S
,
M
,
TK_ARROW
);
}
yymsp
[
-
4
].
minor
.
yy5
46
=
yylhsminor
.
yy546
;
break
;
case
29
2
:
/* expr ::= arrow */
case
29
6
:
/* expritem ::= expr */
yytestcase
(
yyruleno
==
296
);
{
yylhsminor
.
yy5
74
=
yymsp
[
0
].
minor
.
yy574
;}
yymsp
[
0
].
minor
.
yy5
74
=
yylhsminor
.
yy574
;
case
29
3
:
/* expr ::= arrow */
case
29
7
:
/* expritem ::= expr */
yytestcase
(
yyruleno
==
297
);
{
yylhsminor
.
yy5
46
=
yymsp
[
0
].
minor
.
yy546
;}
yymsp
[
0
].
minor
.
yy5
46
=
yylhsminor
.
yy546
;
break
;
case
29
3
:
/* expr ::= expr IN LP exprlist RP */
{
yylhsminor
.
yy5
74
=
tSqlExprCreate
(
yymsp
[
-
4
].
minor
.
yy574
,
(
tSqlExpr
*
)
yymsp
[
-
1
].
minor
.
yy209
,
TK_IN
);
}
yymsp
[
-
4
].
minor
.
yy5
74
=
yylhsminor
.
yy574
;
case
29
4
:
/* expr ::= expr IN LP exprlist RP */
{
yylhsminor
.
yy5
46
=
tSqlExprCreate
(
yymsp
[
-
4
].
minor
.
yy546
,
(
tSqlExpr
*
)
yymsp
[
-
1
].
minor
.
yy161
,
TK_IN
);
}
yymsp
[
-
4
].
minor
.
yy5
46
=
yylhsminor
.
yy546
;
break
;
case
29
4
:
/* exprlist ::= exprlist COMMA expritem */
{
yylhsminor
.
yy
209
=
tSqlExprListAppend
(
yymsp
[
-
2
].
minor
.
yy209
,
yymsp
[
0
].
minor
.
yy574
,
0
,
0
);}
yymsp
[
-
2
].
minor
.
yy
209
=
yylhsminor
.
yy209
;
case
29
5
:
/* exprlist ::= exprlist COMMA expritem */
{
yylhsminor
.
yy
161
=
tSqlExprListAppend
(
yymsp
[
-
2
].
minor
.
yy161
,
yymsp
[
0
].
minor
.
yy546
,
0
,
0
);}
yymsp
[
-
2
].
minor
.
yy
161
=
yylhsminor
.
yy161
;
break
;
case
29
5
:
/* exprlist ::= expritem */
{
yylhsminor
.
yy
209
=
tSqlExprListAppend
(
0
,
yymsp
[
0
].
minor
.
yy574
,
0
,
0
);}
yymsp
[
0
].
minor
.
yy
209
=
yylhsminor
.
yy209
;
case
29
6
:
/* exprlist ::= expritem */
{
yylhsminor
.
yy
161
=
tSqlExprListAppend
(
0
,
yymsp
[
0
].
minor
.
yy546
,
0
,
0
);}
yymsp
[
0
].
minor
.
yy
161
=
yylhsminor
.
yy161
;
break
;
case
29
8
:
/* cmd ::= RESET QUERY CACHE */
case
29
9
:
/* cmd ::= RESET QUERY CACHE */
{
setDCLSqlElems
(
pInfo
,
TSDB_SQL_RESET_CACHE
,
0
);}
break
;
case
299
:
/* cmd ::= SYNCDB ids REPLICA */
case
300
:
/* cmd ::= SYNCDB ids REPLICA */
{
setDCLSqlElems
(
pInfo
,
TSDB_SQL_SYNC_DB_REPLICA
,
1
,
&
yymsp
[
-
1
].
minor
.
yy0
);}
break
;
case
30
0
:
/* cmd ::= ALTER TABLE ids cpxName ADD COLUMN columnlist */
case
30
1
:
/* cmd ::= ALTER TABLE ids cpxName ADD COLUMN columnlist */
{
yymsp
[
-
4
].
minor
.
yy0
.
n
+=
yymsp
[
-
3
].
minor
.
yy0
.
n
;
SAlterTableInfo
*
pAlterTable
=
tSetAlterTableInfo
(
&
yymsp
[
-
4
].
minor
.
yy0
,
yymsp
[
0
].
minor
.
yy
209
,
NULL
,
TSDB_ALTER_TABLE_ADD_COLUMN
,
-
1
);
SAlterTableInfo
*
pAlterTable
=
tSetAlterTableInfo
(
&
yymsp
[
-
4
].
minor
.
yy0
,
yymsp
[
0
].
minor
.
yy
161
,
NULL
,
TSDB_ALTER_TABLE_ADD_COLUMN
,
-
1
);
setSqlInfo
(
pInfo
,
pAlterTable
,
NULL
,
TSDB_SQL_ALTER_TABLE
);
}
break
;
case
30
1
:
/* cmd ::= ALTER TABLE ids cpxName DROP COLUMN ids */
case
30
2
:
/* cmd ::= ALTER TABLE ids cpxName DROP COLUMN ids */
{
yymsp
[
-
4
].
minor
.
yy0
.
n
+=
yymsp
[
-
3
].
minor
.
yy0
.
n
;
...
...
@@ -3387,21 +3716,21 @@ static YYACTIONTYPE yy_reduce(
setSqlInfo
(
pInfo
,
pAlterTable
,
NULL
,
TSDB_SQL_ALTER_TABLE
);
}
break
;
case
30
2
:
/* cmd ::= ALTER TABLE ids cpxName MODIFY COLUMN columnlist */
case
30
3
:
/* cmd ::= ALTER TABLE ids cpxName MODIFY COLUMN columnlist */
{
yymsp
[
-
4
].
minor
.
yy0
.
n
+=
yymsp
[
-
3
].
minor
.
yy0
.
n
;
SAlterTableInfo
*
pAlterTable
=
tSetAlterTableInfo
(
&
yymsp
[
-
4
].
minor
.
yy0
,
yymsp
[
0
].
minor
.
yy
209
,
NULL
,
TSDB_ALTER_TABLE_CHANGE_COLUMN
,
-
1
);
SAlterTableInfo
*
pAlterTable
=
tSetAlterTableInfo
(
&
yymsp
[
-
4
].
minor
.
yy0
,
yymsp
[
0
].
minor
.
yy
161
,
NULL
,
TSDB_ALTER_TABLE_CHANGE_COLUMN
,
-
1
);
setSqlInfo
(
pInfo
,
pAlterTable
,
NULL
,
TSDB_SQL_ALTER_TABLE
);
}
break
;
case
30
3
:
/* cmd ::= ALTER TABLE ids cpxName ADD TAG columnlist */
case
30
4
:
/* cmd ::= ALTER TABLE ids cpxName ADD TAG columnlist */
{
yymsp
[
-
4
].
minor
.
yy0
.
n
+=
yymsp
[
-
3
].
minor
.
yy0
.
n
;
SAlterTableInfo
*
pAlterTable
=
tSetAlterTableInfo
(
&
yymsp
[
-
4
].
minor
.
yy0
,
yymsp
[
0
].
minor
.
yy
209
,
NULL
,
TSDB_ALTER_TABLE_ADD_TAG_COLUMN
,
-
1
);
SAlterTableInfo
*
pAlterTable
=
tSetAlterTableInfo
(
&
yymsp
[
-
4
].
minor
.
yy0
,
yymsp
[
0
].
minor
.
yy
161
,
NULL
,
TSDB_ALTER_TABLE_ADD_TAG_COLUMN
,
-
1
);
setSqlInfo
(
pInfo
,
pAlterTable
,
NULL
,
TSDB_SQL_ALTER_TABLE
);
}
break
;
case
30
4
:
/* cmd ::= ALTER TABLE ids cpxName DROP TAG ids */
case
30
5
:
/* cmd ::= ALTER TABLE ids cpxName DROP TAG ids */
{
yymsp
[
-
4
].
minor
.
yy0
.
n
+=
yymsp
[
-
3
].
minor
.
yy0
.
n
;
...
...
@@ -3412,7 +3741,7 @@ static YYACTIONTYPE yy_reduce(
setSqlInfo
(
pInfo
,
pAlterTable
,
NULL
,
TSDB_SQL_ALTER_TABLE
);
}
break
;
case
30
5
:
/* cmd ::= ALTER TABLE ids cpxName CHANGE TAG ids ids */
case
30
6
:
/* cmd ::= ALTER TABLE ids cpxName CHANGE TAG ids ids */
{
yymsp
[
-
5
].
minor
.
yy0
.
n
+=
yymsp
[
-
4
].
minor
.
yy0
.
n
;
...
...
@@ -3426,33 +3755,33 @@ static YYACTIONTYPE yy_reduce(
setSqlInfo
(
pInfo
,
pAlterTable
,
NULL
,
TSDB_SQL_ALTER_TABLE
);
}
break
;
case
30
6
:
/* cmd ::= ALTER TABLE ids cpxName SET TAG ids EQ tagitem */
case
30
7
:
/* cmd ::= ALTER TABLE ids cpxName SET TAG ids EQ tagitem */
{
yymsp
[
-
6
].
minor
.
yy0
.
n
+=
yymsp
[
-
5
].
minor
.
yy0
.
n
;
toTSDBType
(
yymsp
[
-
2
].
minor
.
yy0
.
type
);
SArray
*
A
=
tVariantListAppendToken
(
NULL
,
&
yymsp
[
-
2
].
minor
.
yy0
,
-
1
,
false
);
A
=
tVariantListAppend
(
A
,
&
yymsp
[
0
].
minor
.
yy5
4
,
-
1
);
A
=
tVariantListAppend
(
A
,
&
yymsp
[
0
].
minor
.
yy5
26
,
-
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
);
}
break
;
case
30
7
:
/* cmd ::= ALTER TABLE ids cpxName MODIFY TAG columnlist */
case
30
8
:
/* cmd ::= ALTER TABLE ids cpxName MODIFY TAG columnlist */
{
yymsp
[
-
4
].
minor
.
yy0
.
n
+=
yymsp
[
-
3
].
minor
.
yy0
.
n
;
SAlterTableInfo
*
pAlterTable
=
tSetAlterTableInfo
(
&
yymsp
[
-
4
].
minor
.
yy0
,
yymsp
[
0
].
minor
.
yy
209
,
NULL
,
TSDB_ALTER_TABLE_MODIFY_TAG_COLUMN
,
-
1
);
SAlterTableInfo
*
pAlterTable
=
tSetAlterTableInfo
(
&
yymsp
[
-
4
].
minor
.
yy0
,
yymsp
[
0
].
minor
.
yy
161
,
NULL
,
TSDB_ALTER_TABLE_MODIFY_TAG_COLUMN
,
-
1
);
setSqlInfo
(
pInfo
,
pAlterTable
,
NULL
,
TSDB_SQL_ALTER_TABLE
);
}
break
;
case
30
8
:
/* cmd ::= ALTER STABLE ids cpxName ADD COLUMN columnlist */
case
30
9
:
/* cmd ::= ALTER STABLE ids cpxName ADD COLUMN columnlist */
{
yymsp
[
-
4
].
minor
.
yy0
.
n
+=
yymsp
[
-
3
].
minor
.
yy0
.
n
;
SAlterTableInfo
*
pAlterTable
=
tSetAlterTableInfo
(
&
yymsp
[
-
4
].
minor
.
yy0
,
yymsp
[
0
].
minor
.
yy
209
,
NULL
,
TSDB_ALTER_TABLE_ADD_COLUMN
,
TSDB_SUPER_TABLE
);
SAlterTableInfo
*
pAlterTable
=
tSetAlterTableInfo
(
&
yymsp
[
-
4
].
minor
.
yy0
,
yymsp
[
0
].
minor
.
yy
161
,
NULL
,
TSDB_ALTER_TABLE_ADD_COLUMN
,
TSDB_SUPER_TABLE
);
setSqlInfo
(
pInfo
,
pAlterTable
,
NULL
,
TSDB_SQL_ALTER_TABLE
);
}
break
;
case
3
09
:
/* cmd ::= ALTER STABLE ids cpxName DROP COLUMN ids */
case
3
10
:
/* cmd ::= ALTER STABLE ids cpxName DROP COLUMN ids */
{
yymsp
[
-
4
].
minor
.
yy0
.
n
+=
yymsp
[
-
3
].
minor
.
yy0
.
n
;
...
...
@@ -3463,21 +3792,21 @@ static YYACTIONTYPE yy_reduce(
setSqlInfo
(
pInfo
,
pAlterTable
,
NULL
,
TSDB_SQL_ALTER_TABLE
);
}
break
;
case
31
0
:
/* cmd ::= ALTER STABLE ids cpxName MODIFY COLUMN columnlist */
case
31
1
:
/* cmd ::= ALTER STABLE ids cpxName MODIFY COLUMN columnlist */
{
yymsp
[
-
4
].
minor
.
yy0
.
n
+=
yymsp
[
-
3
].
minor
.
yy0
.
n
;
SAlterTableInfo
*
pAlterTable
=
tSetAlterTableInfo
(
&
yymsp
[
-
4
].
minor
.
yy0
,
yymsp
[
0
].
minor
.
yy
209
,
NULL
,
TSDB_ALTER_TABLE_CHANGE_COLUMN
,
TSDB_SUPER_TABLE
);
SAlterTableInfo
*
pAlterTable
=
tSetAlterTableInfo
(
&
yymsp
[
-
4
].
minor
.
yy0
,
yymsp
[
0
].
minor
.
yy
161
,
NULL
,
TSDB_ALTER_TABLE_CHANGE_COLUMN
,
TSDB_SUPER_TABLE
);
setSqlInfo
(
pInfo
,
pAlterTable
,
NULL
,
TSDB_SQL_ALTER_TABLE
);
}
break
;
case
31
1
:
/* cmd ::= ALTER STABLE ids cpxName ADD TAG columnlist */
case
31
2
:
/* cmd ::= ALTER STABLE ids cpxName ADD TAG columnlist */
{
yymsp
[
-
4
].
minor
.
yy0
.
n
+=
yymsp
[
-
3
].
minor
.
yy0
.
n
;
SAlterTableInfo
*
pAlterTable
=
tSetAlterTableInfo
(
&
yymsp
[
-
4
].
minor
.
yy0
,
yymsp
[
0
].
minor
.
yy
209
,
NULL
,
TSDB_ALTER_TABLE_ADD_TAG_COLUMN
,
TSDB_SUPER_TABLE
);
SAlterTableInfo
*
pAlterTable
=
tSetAlterTableInfo
(
&
yymsp
[
-
4
].
minor
.
yy0
,
yymsp
[
0
].
minor
.
yy
161
,
NULL
,
TSDB_ALTER_TABLE_ADD_TAG_COLUMN
,
TSDB_SUPER_TABLE
);
setSqlInfo
(
pInfo
,
pAlterTable
,
NULL
,
TSDB_SQL_ALTER_TABLE
);
}
break
;
case
31
2
:
/* cmd ::= ALTER STABLE ids cpxName DROP TAG ids */
case
31
3
:
/* cmd ::= ALTER STABLE ids cpxName DROP TAG ids */
{
yymsp
[
-
4
].
minor
.
yy0
.
n
+=
yymsp
[
-
3
].
minor
.
yy0
.
n
;
...
...
@@ -3488,7 +3817,7 @@ static YYACTIONTYPE yy_reduce(
setSqlInfo
(
pInfo
,
pAlterTable
,
NULL
,
TSDB_SQL_ALTER_TABLE
);
}
break
;
case
31
3
:
/* cmd ::= ALTER STABLE ids cpxName CHANGE TAG ids ids */
case
31
4
:
/* cmd ::= ALTER STABLE ids cpxName CHANGE TAG ids ids */
{
yymsp
[
-
5
].
minor
.
yy0
.
n
+=
yymsp
[
-
4
].
minor
.
yy0
.
n
;
...
...
@@ -3502,41 +3831,41 @@ static YYACTIONTYPE yy_reduce(
setSqlInfo
(
pInfo
,
pAlterTable
,
NULL
,
TSDB_SQL_ALTER_TABLE
);
}
break
;
case
31
4
:
/* cmd ::= ALTER STABLE ids cpxName SET TAG ids EQ tagitem */
case
31
5
:
/* cmd ::= ALTER STABLE ids cpxName SET TAG ids EQ tagitem */
{
yymsp
[
-
6
].
minor
.
yy0
.
n
+=
yymsp
[
-
5
].
minor
.
yy0
.
n
;
toTSDBType
(
yymsp
[
-
2
].
minor
.
yy0
.
type
);
SArray
*
A
=
tVariantListAppendToken
(
NULL
,
&
yymsp
[
-
2
].
minor
.
yy0
,
-
1
,
false
);
A
=
tVariantListAppend
(
A
,
&
yymsp
[
0
].
minor
.
yy5
4
,
-
1
);
A
=
tVariantListAppend
(
A
,
&
yymsp
[
0
].
minor
.
yy5
26
,
-
1
);
SAlterTableInfo
*
pAlterTable
=
tSetAlterTableInfo
(
&
yymsp
[
-
6
].
minor
.
yy0
,
NULL
,
A
,
TSDB_ALTER_TABLE_UPDATE_TAG_VAL
,
TSDB_SUPER_TABLE
);
setSqlInfo
(
pInfo
,
pAlterTable
,
NULL
,
TSDB_SQL_ALTER_TABLE
);
}
break
;
case
31
5
:
/* cmd ::= ALTER STABLE ids cpxName MODIFY TAG columnlist */
case
31
6
:
/* cmd ::= ALTER STABLE ids cpxName MODIFY TAG columnlist */
{
yymsp
[
-
4
].
minor
.
yy0
.
n
+=
yymsp
[
-
3
].
minor
.
yy0
.
n
;
SAlterTableInfo
*
pAlterTable
=
tSetAlterTableInfo
(
&
yymsp
[
-
4
].
minor
.
yy0
,
yymsp
[
0
].
minor
.
yy
209
,
NULL
,
TSDB_ALTER_TABLE_MODIFY_TAG_COLUMN
,
TSDB_SUPER_TABLE
);
SAlterTableInfo
*
pAlterTable
=
tSetAlterTableInfo
(
&
yymsp
[
-
4
].
minor
.
yy0
,
yymsp
[
0
].
minor
.
yy
161
,
NULL
,
TSDB_ALTER_TABLE_MODIFY_TAG_COLUMN
,
TSDB_SUPER_TABLE
);
setSqlInfo
(
pInfo
,
pAlterTable
,
NULL
,
TSDB_SQL_ALTER_TABLE
);
}
break
;
case
31
6
:
/* cmd ::= KILL CONNECTION INTEGER */
case
31
7
:
/* cmd ::= KILL CONNECTION INTEGER */
{
setKillSql
(
pInfo
,
TSDB_SQL_KILL_CONNECTION
,
&
yymsp
[
0
].
minor
.
yy0
);}
break
;
case
31
7
:
/* cmd ::= KILL STREAM INTEGER COLON INTEGER */
case
31
8
:
/* 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
);}
break
;
case
31
8
:
/* cmd ::= KILL QUERY INTEGER COLON INTEGER */
case
31
9
:
/* cmd ::= KILL QUERY INTEGER COLON INTEGER */
{
yymsp
[
-
2
].
minor
.
yy0
.
n
+=
(
yymsp
[
-
1
].
minor
.
yy0
.
n
+
yymsp
[
0
].
minor
.
yy0
.
n
);
setKillSql
(
pInfo
,
TSDB_SQL_KILL_QUERY
,
&
yymsp
[
-
2
].
minor
.
yy0
);}
break
;
default:
break
;
/********** End reduce actions ************************************************/
};
assert
(
yyruleno
<
sizeof
(
yyRuleInfo
)
/
sizeof
(
yyRuleInfo
[
0
])
);
yygoto
=
yyRuleInfo
[
yyruleno
].
lhs
;
yysize
=
yyRuleInfo
[
yyruleno
].
nrhs
;
assert
(
yyruleno
<
sizeof
(
yyRuleInfo
Lhs
)
/
sizeof
(
yyRuleInfoLhs
[
0
])
);
yygoto
=
yyRuleInfo
Lhs
[
yyruleno
]
;
yysize
=
yyRuleInfo
NRhs
[
yyruleno
]
;
yyact
=
yy_find_reduce_action
(
yymsp
[
yysize
].
stateno
,(
YYCODETYPE
)
yygoto
);
/* There are no SHIFTREDUCE actions on nonterminals because the table
...
...
@@ -3838,11 +4167,10 @@ void Parse(
*/
int
ParseFallback
(
int
iToken
){
#ifdef YYFALLBACK
if
(
iToken
<
(
int
)(
sizeof
(
yyFallback
)
/
sizeof
(
yyFallback
[
0
]))
){
return
yyFallback
[
iToken
];
}
assert
(
iToken
<
(
int
)(
sizeof
(
yyFallback
)
/
sizeof
(
yyFallback
[
0
]))
);
return
yyFallback
[
iToken
];
#else
(
void
)
iToken
;
#endif
return
0
;
#endif
}
src/util/src/ttokenizer.c
浏览文件 @
e6058244
...
...
@@ -159,6 +159,7 @@ static SKeyword keywordTable[] = {
{
"SOFFSET"
,
TK_SOFFSET
},
{
"WHERE"
,
TK_WHERE
},
{
"NOW"
,
TK_NOW
},
{
"TODAY"
,
TK_TODAY
},
{
"INSERT"
,
TK_INSERT
},
{
"INTO"
,
TK_INTO
},
{
"VALUES"
,
TK_VALUES
},
...
...
@@ -591,6 +592,7 @@ uint32_t tGetToken(char* z, uint32_t* tokenId) {
for
(
i
=
1
;
((
z
[
i
]
&
0x80
)
==
0
)
&&
isIdChar
[(
uint8_t
)
z
[
i
]];
i
++
)
{
}
*
tokenId
=
tKeywordCode
(
z
,
i
);
return
i
;
}
}
...
...
@@ -667,6 +669,12 @@ SStrToken tStrGetToken(char* str, int32_t* i, bool isPrevOptr) {
#endif
}
//for now(),today() function used in insert clause
if
((
t0
.
type
==
TK_NOW
||
t0
.
type
==
TK_TODAY
)
&&
str
[
*
i
+
t0
.
n
]
==
'('
&&
str
[
*
i
+
t0
.
n
+
1
]
==
')'
)
{
t0
.
n
+=
2
;
}
if
(
t0
.
type
==
TK_SEMI
)
{
t0
.
n
=
0
;
return
t0
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录