Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
0b6fd5c2
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看板
未验证
提交
0b6fd5c2
编写于
1月 04, 2022
作者:
H
Haojun Liao
提交者:
GitHub
1月 04, 2022
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #8821 from taosdata/fix/TS-530
Fix/TS-530 CQ Support write result to superTable
上级
8f7f5ed4
66fd6554
变更
28
隐藏空白更改
内联
并排
Showing
28 changed file
with
2277 addition
and
2067 deletion
+2277
-2067
Jenkinsfile
Jenkinsfile
+4
-0
src/client/inc/tscUtil.h
src/client/inc/tscUtil.h
+8
-0
src/client/inc/tsclient.h
src/client/inc/tsclient.h
+6
-0
src/client/src/taos.def
src/client/src/taos.def
+1
-0
src/client/src/tscSQLParser.c
src/client/src/tscSQLParser.c
+15
-0
src/client/src/tscServer.c
src/client/src/tscServer.c
+87
-17
src/client/src/tscSql.c
src/client/src/tscSql.c
+122
-1
src/client/src/tscStream.c
src/client/src/tscStream.c
+384
-35
src/common/inc/tglobal.h
src/common/inc/tglobal.h
+1
-1
src/common/src/tglobal.c
src/common/src/tglobal.c
+4
-4
src/cq/src/cqMain.c
src/cq/src/cqMain.c
+6
-4
src/inc/taos.h
src/inc/taos.h
+5
-1
src/inc/trpc.h
src/inc/trpc.h
+1
-0
src/inc/ttokendef.h
src/inc/ttokendef.h
+81
-80
src/mnode/src/mnodeTable.c
src/mnode/src/mnodeTable.c
+16
-6
src/query/inc/qSqlparser.h
src/query/inc/qSqlparser.h
+5
-0
src/query/inc/sql.y
src/query/inc/sql.y
+15
-1
src/query/src/qSqlParser.c
src/query/src/qSqlParser.c
+5
-0
src/query/src/queryMain.c
src/query/src/queryMain.c
+2
-1
src/query/src/sql.c
src/query/src/sql.c
+1451
-1904
src/rpc/src/rpcMain.c
src/rpc/src/rpcMain.c
+6
-0
src/util/inc/tidpool.h
src/util/inc/tidpool.h
+2
-0
src/util/inc/ttoken.h
src/util/inc/ttoken.h
+9
-0
src/util/src/tidpool.c
src/util/src/tidpool.c
+13
-1
src/util/src/ttokenizer.c
src/util/src/ttokenizer.c
+14
-0
tests/pytest/stream/metric_1.py
tests/pytest/stream/metric_1.py
+3
-2
tests/pytest/stream/new.py
tests/pytest/stream/new.py
+10
-8
tests/pytest/stream/sys.py
tests/pytest/stream/sys.py
+1
-1
未找到文件。
Jenkinsfile
浏览文件 @
0b6fd5c2
...
...
@@ -67,6 +67,7 @@ def pre_test(){
}
sh
'''
cd ${WKC}
git remote prune origin
git pull >/dev/null
git fetch origin +refs/pull/${CHANGE_ID}/merge
git checkout -qf FETCH_HEAD
...
...
@@ -140,6 +141,7 @@ def pre_test_noinstall(){
}
sh
'''
cd ${WKC}
git remote prune origin
git pull >/dev/null
git fetch origin +refs/pull/${CHANGE_ID}/merge
git checkout -qf FETCH_HEAD
...
...
@@ -210,6 +212,7 @@ def pre_test_ningsi(){
}
sh
'''
cd ${WKC}
git remote prune origin
git pull >/dev/null
git fetch origin +refs/pull/${CHANGE_ID}/merge
git checkout -qf FETCH_HEAD
...
...
@@ -284,6 +287,7 @@ def pre_test_win(){
}
bat
'''
cd C:\\workspace\\TDinternal\\community
git remote prune origin
git pull
git fetch origin +refs/pull/%CHANGE_ID%/merge
git checkout -qf FETCH_HEAD
...
...
src/client/inc/tscUtil.h
浏览文件 @
0b6fd5c2
...
...
@@ -29,6 +29,14 @@ extern "C" {
#include "tsched.h"
#include "tsclient.h"
#define LABEL_SQL "sql:"
#define LABEL_TO " to:"
#define LABEL_SPLIT " split:"
#define LABEL_SQL_LEN (sizeof(LABEL_SQL) - 1)
#define LABEL_TO_LEN (sizeof(LABEL_TO) - 1)
#define LABEL_SPLIT_LEN (sizeof(LABEL_SPLIT) - 1)
#define UTIL_TABLE_IS_SUPER_TABLE(metaInfo) \
(((metaInfo)->pTableMeta != NULL) && ((metaInfo)->pTableMeta->tableType == TSDB_SUPER_TABLE))
...
...
src/client/inc/tsclient.h
浏览文件 @
0b6fd5c2
...
...
@@ -406,6 +406,10 @@ typedef struct SSqlStream {
int16_t
precision
;
int64_t
num
;
// number of computing count
int32_t
dstCols
;
// dstTable has number of columns
char
*
to
;
char
*
split
;
/*
* keep the number of current result in computing,
* the value will be set to 0 before set timer for next computing
...
...
@@ -482,6 +486,8 @@ TAOS *taos_connect_a(char *ip, char *user, char *pass, char *db, uint16_t port,
void
*
param
,
TAOS
**
taos
);
TAOS_RES
*
taos_query_h
(
TAOS
*
taos
,
const
char
*
sqlstr
,
int64_t
*
res
);
TAOS_RES
*
taos_query_ra
(
TAOS
*
taos
,
const
char
*
sqlstr
,
__async_cb_func_t
fp
,
void
*
param
);
// get taos connection unused session number
int32_t
taos_unused_session
(
TAOS
*
taos
);
void
waitForQueryRsp
(
void
*
param
,
TAOS_RES
*
tres
,
int
code
);
...
...
src/client/src/taos.def
浏览文件 @
0b6fd5c2
...
...
@@ -50,3 +50,4 @@ taos_stmt_bind_param_batch
taos_stmt_bind_single_param_batch
taos_is_null
taos_insert_lines
taos_print_row_ex
\ No newline at end of file
src/client/src/tscSQLParser.c
浏览文件 @
0b6fd5c2
...
...
@@ -1350,6 +1350,7 @@ int32_t tscSetTableFullName(SName* pName, SStrToken* pTableName, SSqlObj* pSql)
const
char
*
msg3
=
"no acctId"
;
const
char
*
msg4
=
"db name too long"
;
const
char
*
msg5
=
"table name too long"
;
const
char
*
msg6
=
"table name empty"
;
SSqlCmd
*
pCmd
=
&
pSql
->
cmd
;
int32_t
code
=
TSDB_CODE_SUCCESS
;
...
...
@@ -1396,6 +1397,8 @@ int32_t tscSetTableFullName(SName* pName, SStrToken* pTableName, SSqlObj* pSql)
if
(
pTableName
->
n
>=
TSDB_TABLE_NAME_LEN
)
{
return
invalidOperationMsg
(
tscGetErrorMsgPayload
(
pCmd
),
msg1
);
}
else
if
(
pTableName
->
n
==
0
)
{
return
invalidOperationMsg
(
tscGetErrorMsgPayload
(
pCmd
),
msg6
);
}
char
name
[
TSDB_TABLE_FNAME_LEN
]
=
{
0
};
...
...
@@ -7803,6 +7806,18 @@ int32_t doCheckForStream(SSqlObj* pSql, SSqlInfo* pInfo) {
if
(
tscValidateName
(
pName
)
!=
TSDB_CODE_SUCCESS
)
{
return
invalidOperationMsg
(
tscGetErrorMsgPayload
(
pCmd
),
msg1
);
}
// check to valid and create to name
if
(
pInfo
->
pCreateTableInfo
->
to
.
n
>
0
)
{
if
(
tscValidateName
(
&
pInfo
->
pCreateTableInfo
->
to
)
!=
TSDB_CODE_SUCCESS
)
{
return
invalidOperationMsg
(
tscGetErrorMsgPayload
(
pCmd
),
msg1
);
}
int32_t
code
=
tscSetTableFullName
(
&
pInfo
->
pCreateTableInfo
->
toSName
,
&
pInfo
->
pCreateTableInfo
->
to
,
pSql
);
if
(
code
!=
TSDB_CODE_SUCCESS
)
{
return
code
;
}
}
SRelationInfo
*
pFromInfo
=
pInfo
->
pCreateTableInfo
->
pSelect
->
from
;
if
(
pFromInfo
==
NULL
||
taosArrayGetSize
(
pFromInfo
->
list
)
==
0
)
{
...
...
src/client/src/tscServer.c
浏览文件 @
0b6fd5c2
...
...
@@ -1630,11 +1630,49 @@ int tscEstimateCreateTableMsgLength(SSqlObj *pSql, SSqlInfo *pInfo) {
if
(
pCreateTableInfo
->
pSelect
!=
NULL
)
{
size
+=
(
pCreateTableInfo
->
pSelect
->
sqlstr
.
n
+
1
);
// add size = create super table with same columns and 1 tags
if
(
pCreateTableInfo
->
to
.
n
>
0
)
{
size
+=
sizeof
(
SCreateTableMsg
);
size
+=
sizeof
(
SSchema
)
*
(
pCmd
->
numOfCols
+
1
);
size
+=
pCreateTableInfo
->
to
.
n
+
4
;
// to:
if
(
pCreateTableInfo
->
split
.
n
>
0
)
size
+=
pCreateTableInfo
->
split
.
n
+
7
;
// split:
}
}
return
size
+
TSDB_EXTRA_PAYLOAD_SIZE
;
}
char
*
fillCreateSTableMsg
(
SCreateTableMsg
*
pCreateMsg
,
SCreateTableSql
*
pTableSql
,
SSqlCmd
*
pCmd
,
SSqlInfo
*
pInfo
)
{
// SET
SSchema
*
pSchema
=
(
SSchema
*
)
pCreateMsg
->
schema
;
SQueryInfo
*
pQueryInfo
=
tscGetQueryInfo
(
pCmd
);
pCreateMsg
->
igExists
=
0
;
pCreateMsg
->
sqlLen
=
0
;
// FullName like acctID.dbName.tableName
tNameExtractFullName
(
&
pInfo
->
pCreateTableInfo
->
toSName
,
pCreateMsg
->
tableName
);
// copy columns
pCreateMsg
->
numOfColumns
=
htons
(
pCmd
->
numOfCols
);
for
(
int
i
=
0
;
i
<
pCmd
->
numOfCols
;
++
i
)
{
TAOS_FIELD
*
pField
=
tscFieldInfoGetField
(
&
pQueryInfo
->
fieldsInfo
,
i
);
pSchema
->
type
=
pField
->
type
;
strcpy
(
pSchema
->
name
,
pField
->
name
);
pSchema
->
bytes
=
htons
(
pField
->
bytes
);
pSchema
++
;
}
// append one tag
pCreateMsg
->
numOfTags
=
htons
(
1
);
// only one tag immutable
pSchema
->
type
=
TSDB_DATA_TYPE_INT
;
pSchema
->
bytes
=
htons
(
INT_BYTES
);
strcpy
(
pSchema
->
name
,
"tag1"
);
pSchema
++
;
return
(
char
*
)
pSchema
;
}
int
tscBuildCreateTableMsg
(
SSqlObj
*
pSql
,
SSqlInfo
*
pInfo
)
{
int
msgLen
=
0
;
int
size
=
0
;
...
...
@@ -1682,39 +1720,71 @@ int tscBuildCreateTableMsg(SSqlObj *pSql, SSqlInfo *pInfo) {
pCreate
->
len
=
htonl
(
len
);
}
}
else
{
// create (super) table
// FIRST MSG
SCreateTableMsg
*
pCreate
=
pCreateMsg
;
pCreateTableMsg
->
numOfTables
=
htonl
(
1
);
// only one table will be created
int32_t
code
=
tNameExtractFullName
(
&
pTableMetaInfo
->
name
,
pCreateMsg
->
tableName
)
;
int32_t
code
=
tNameExtractFullName
(
&
pTableMetaInfo
->
name
,
pCreate
->
tableName
);
bool
to
=
pInfo
->
pCreateTableInfo
->
to
.
n
>
0
;
assert
(
code
==
0
);
SCreateTableSql
*
pCreateTable
=
pInfo
->
pCreateTableInfo
;
pCreateMsg
->
igExists
=
pCreateTable
->
existCheck
?
1
:
0
;
pCreateMsg
->
numOfColumns
=
htons
(
pCmd
->
numOfCols
);
pCreateMsg
->
numOfTags
=
htons
(
pCmd
->
count
);
pCreateMsg
->
sqlLen
=
0
;
pMsg
=
(
char
*
)
pCreateMsg
->
schema
;
pSchema
=
(
SSchema
*
)
pCreateMsg
->
schema
;
pCreate
->
igExists
=
pCreateTable
->
existCheck
?
1
:
0
;
pCreate
->
numOfColumns
=
htons
(
pCmd
->
numOfCols
);
pCreate
->
numOfTags
=
htons
(
pCmd
->
count
);
pCreate
->
sqlLen
=
0
;
pSchema
=
(
SSchema
*
)
pCreate
->
schema
;
//copy schema
for
(
int
i
=
0
;
i
<
pCmd
->
numOfCols
+
pCmd
->
count
;
++
i
)
{
TAOS_FIELD
*
pField
=
tscFieldInfoGetField
(
&
pQueryInfo
->
fieldsInfo
,
i
);
pSchema
->
type
=
pField
->
type
;
strcpy
(
pSchema
->
name
,
pField
->
name
);
pSchema
->
bytes
=
htons
(
pField
->
bytes
);
pSchema
++
;
}
//copy stream sql if have
pMsg
=
(
char
*
)
pSchema
;
if
(
type
==
TSQL_CREATE_STREAM
)
{
// check if it is a stream sql
SSqlNode
*
pQuerySql
=
pInfo
->
pCreateTableInfo
->
pSelect
;
int16_t
len
=
0
;
if
(
to
)
{
//sql:
strcpy
(
pMsg
,
LABEL_SQL
);
len
+=
LABEL_SQL_LEN
;
len
+=
tStrNCpy
(
pMsg
+
len
,
&
pQuerySql
->
sqlstr
);
//to
strcpy
(
pMsg
+
len
,
LABEL_TO
);
len
+=
LABEL_TO_LEN
;
len
+=
tStrNCpy
(
pMsg
+
len
,
&
pInfo
->
pCreateTableInfo
->
to
);
//split if
if
(
pInfo
->
pCreateTableInfo
->
split
.
n
>
0
)
{
strcpy
(
pMsg
+
len
,
LABEL_SPLIT
);
len
+=
LABEL_SPLIT_LEN
;
len
+=
tStrNCpy
(
pMsg
+
len
,
&
pInfo
->
pCreateTableInfo
->
split
);
}
// append string end flag
pMsg
[
len
++
]
=
0
;
pMsg
+=
len
;
pCreate
->
sqlLen
=
htons
(
len
);
}
else
{
len
=
pQuerySql
->
sqlstr
.
n
;
strncpy
(
pMsg
,
pQuerySql
->
sqlstr
.
z
,
len
);
pMsg
[
len
++
]
=
0
;
// string end
pMsg
+=
len
;
pCreate
->
sqlLen
=
htons
(
len
);
}
}
// calc first msg length
int32_t
len
=
(
int32_t
)(
pMsg
-
(
char
*
)
pCreate
);
pCreate
->
len
=
htonl
(
len
);
strncpy
(
pMsg
,
pQuerySql
->
sqlstr
.
z
,
pQuerySql
->
sqlstr
.
n
+
1
);
pCreateMsg
->
sqlLen
=
htons
(
pQuerySql
->
sqlstr
.
n
+
1
);
pMsg
+=
pQuerySql
->
sqlstr
.
n
+
1
;
// filling second msg if to have value
if
(
to
)
{
pCreate
=
(
SCreateTableMsg
*
)
pMsg
;
pMsg
=
fillCreateSTableMsg
(
pCreate
,
pCreateTable
,
pCmd
,
pInfo
);
len
=
(
int32_t
)(
pMsg
-
(
char
*
)
pCreate
);
pCreate
->
len
=
htonl
(
len
);
pCreateTableMsg
->
numOfTables
=
htonl
(
2
);
}
}
...
...
src/client/src/tscSql.c
浏览文件 @
0b6fd5c2
...
...
@@ -28,6 +28,7 @@
#include "tutil.h"
#include "ttimer.h"
#include "tscProfile.h"
#include "tidpool.h"
static
bool
validImpl
(
const
char
*
str
,
size_t
maxsize
)
{
if
(
str
==
NULL
)
{
...
...
@@ -306,6 +307,25 @@ void taos_close(TAOS *taos) {
taosRemoveRef
(
tscRefId
,
pObj
->
rid
);
}
// get taos connection unused session number
int32_t
taos_unused_session
(
TAOS
*
taos
)
{
// param valid check
STscObj
*
pObj
=
(
STscObj
*
)
taos
;
if
(
pObj
==
NULL
||
pObj
->
signature
!=
pObj
)
{
tscError
(
"pObj:%p is NULL or freed"
,
pObj
);
terrno
=
TSDB_CODE_TSC_DISCONNECTED
;
return
0
;
}
if
(
pObj
->
pRpcObj
==
NULL
)
{
tscError
(
"pObj:%p pRpcObj is NULL."
,
pObj
);
terrno
=
TSDB_CODE_TSC_DISCONNECTED
;
return
0
;
}
// get number
return
rpcUnusedSession
(
pObj
->
pRpcObj
->
pDnodeConn
,
false
);
}
void
waitForQueryRsp
(
void
*
param
,
TAOS_RES
*
tres
,
int
code
)
{
assert
(
tres
!=
NULL
);
...
...
@@ -772,11 +792,15 @@ bool taos_is_null(TAOS_RES *res, int32_t row, int32_t col) {
}
int
taos_print_row
(
char
*
str
,
TAOS_ROW
row
,
TAOS_FIELD
*
fields
,
int
num_fields
)
{
return
taos_print_row_ex
(
str
,
row
,
fields
,
num_fields
,
' '
,
false
);
}
int
taos_print_row_ex
(
char
*
str
,
TAOS_ROW
row
,
TAOS_FIELD
*
fields
,
int
num_fields
,
char
split
,
bool
addQuota
)
{
int
len
=
0
;
for
(
int
i
=
0
;
i
<
num_fields
;
++
i
)
{
if
(
i
>
0
)
{
str
[
len
++
]
=
' '
;
str
[
len
++
]
=
split
;
}
if
(
row
[
i
]
==
NULL
)
{
...
...
@@ -837,9 +861,23 @@ int taos_print_row(char *str, TAOS_ROW row, TAOS_FIELD *fields, int num_fields)
}
else
{
assert
(
charLen
<=
fields
[
i
].
bytes
*
TSDB_NCHAR_SIZE
&&
charLen
>=
0
);
}
// add pre quotaion if require
if
(
addQuota
)
{
*
(
str
+
len
)
=
'\''
;
len
+=
1
;
}
// copy content
memcpy
(
str
+
len
,
row
[
i
],
charLen
);
len
+=
charLen
;
// add end quotaion if require
if
(
addQuota
)
{
*
(
str
+
len
)
=
'\''
;
len
+=
1
;
}
}
break
;
case
TSDB_DATA_TYPE_TIMESTAMP
:
...
...
@@ -856,6 +894,89 @@ int taos_print_row(char *str, TAOS_ROW row, TAOS_FIELD *fields, int num_fields)
return
len
;
}
// print field value to str
int
taos_print_field
(
char
*
str
,
void
*
value
,
TAOS_FIELD
*
field
)
{
// check valid
if
(
str
==
NULL
||
value
==
NULL
||
field
==
NULL
)
{
return
0
;
}
// get value
int
len
=
0
;
switch
(
field
->
type
)
{
//
// fixed length
//
case
TSDB_DATA_TYPE_TINYINT
:
len
=
sprintf
(
str
,
"%d"
,
*
((
int8_t
*
)
value
));
break
;
case
TSDB_DATA_TYPE_UTINYINT
:
len
=
sprintf
(
str
,
"%u"
,
*
((
uint8_t
*
)
value
));
break
;
case
TSDB_DATA_TYPE_SMALLINT
:
len
=
sprintf
(
str
,
"%d"
,
*
((
int16_t
*
)
value
));
break
;
case
TSDB_DATA_TYPE_USMALLINT
:
len
=
sprintf
(
str
,
"%u"
,
*
((
uint16_t
*
)
value
));
break
;
case
TSDB_DATA_TYPE_INT
:
len
=
sprintf
(
str
,
"%d"
,
*
((
int32_t
*
)
value
));
break
;
case
TSDB_DATA_TYPE_UINT
:
len
=
sprintf
(
str
,
"%u"
,
*
((
uint32_t
*
)
value
));
break
;
case
TSDB_DATA_TYPE_BIGINT
:
len
=
sprintf
(
str
,
"%"
PRId64
,
*
((
int64_t
*
)
value
));
break
;
case
TSDB_DATA_TYPE_UBIGINT
:
len
=
sprintf
(
str
,
"%"
PRIu64
,
*
((
uint64_t
*
)
value
));
break
;
case
TSDB_DATA_TYPE_FLOAT
:
{
float
fv
=
0
;
fv
=
GET_FLOAT_VAL
(
value
);
len
=
sprintf
(
str
,
"%f"
,
fv
);
}
break
;
case
TSDB_DATA_TYPE_DOUBLE
:
{
double
dv
=
0
;
dv
=
GET_DOUBLE_VAL
(
value
);
len
=
sprintf
(
str
,
"%lf"
,
dv
);
}
break
;
case
TSDB_DATA_TYPE_TIMESTAMP
:
len
=
sprintf
(
str
,
"%"
PRId64
,
*
((
int64_t
*
)
value
));
break
;
case
TSDB_DATA_TYPE_BOOL
:
len
=
sprintf
(
str
,
"%d"
,
*
((
int8_t
*
)
value
));
//
// variant length
//
case
TSDB_DATA_TYPE_BINARY
:
case
TSDB_DATA_TYPE_NCHAR
:
{
len
=
varDataLen
((
char
*
)
value
-
VARSTR_HEADER_SIZE
);
if
(
field
->
type
==
TSDB_DATA_TYPE_BINARY
)
{
assert
(
len
<=
field
->
bytes
&&
len
>=
0
);
}
else
{
assert
(
len
<=
field
->
bytes
*
TSDB_NCHAR_SIZE
&&
len
>=
0
);
}
memcpy
(
str
,
value
,
len
);
}
break
;
default:
break
;
}
return
len
;
}
static
void
asyncCallback
(
void
*
param
,
TAOS_RES
*
tres
,
int
code
)
{
assert
(
param
!=
NULL
);
SSqlObj
*
pSql
=
((
SSqlObj
*
)
param
);
...
...
src/client/src/tscStream.c
浏览文件 @
0b6fd5c2
...
...
@@ -30,6 +30,7 @@ static void tscProcessStreamQueryCallback(void *param, TAOS_RES *tres, int numOf
static
void
tscProcessStreamRetrieveResult
(
void
*
param
,
TAOS_RES
*
res
,
int
numOfRows
);
static
void
tscSetNextLaunchTimer
(
SSqlStream
*
pStream
,
SSqlObj
*
pSql
);
static
void
tscSetRetryTimer
(
SSqlStream
*
pStream
,
SSqlObj
*
pSql
,
int64_t
timer
);
static
int64_t
getLaunchTimeDelay
(
const
SSqlStream
*
pStream
);
static
int64_t
getDelayValueAfterTimewindowClosed
(
SSqlStream
*
pStream
,
int64_t
launchDelay
)
{
return
taosGetTimestamp
(
pStream
->
precision
)
+
launchDelay
-
pStream
->
stime
-
1
;
...
...
@@ -49,7 +50,7 @@ static bool isProjectStream(SQueryInfo* pQueryInfo) {
static
int64_t
tscGetRetryDelayTime
(
SSqlStream
*
pStream
,
int64_t
slidingTime
,
int16_t
prec
)
{
float
retryRangeFactor
=
0
.
3
f
;
int64_t
retryDelta
=
(
int64_t
)(
tsRetryStreamCompDelay
*
retryRangeFactor
);
retryDelta
=
(
(
rand
()
%
retryDelta
)
+
tsRetryStreamCompDelay
)
*
1000L
;
retryDelta
=
(
rand
()
%
retryDelta
)
+
tsRetryStreamCompDelay
;
if
(
pStream
->
interval
.
intervalUnit
!=
'n'
&&
pStream
->
interval
.
intervalUnit
!=
'y'
)
{
// change to ms
...
...
@@ -159,18 +160,19 @@ static void tscProcessStreamTimer(void *handle, void *tmrId) {
}
else
{
pQueryInfo
->
window
.
skey
=
pStream
->
stime
;
int64_t
etime
=
taosGetTimestamp
(
pStream
->
precision
);
int64_t
one
=
convertTimePrecision
(
1
,
TSDB_TIME_PRECISION_MILLI
,
pStream
->
precision
);
// delay to wait all data in last time window
etime
-=
convertTimePrecision
(
tsMaxStreamComputDelay
,
TSDB_TIME_PRECISION_MILLI
,
pStream
->
precision
);
if
(
etime
>
pStream
->
etime
)
{
etime
=
pStream
->
etime
;
}
else
if
(
pStream
->
interval
.
intervalUnit
!=
'y'
&&
pStream
->
interval
.
intervalUnit
!=
'n'
)
{
if
(
pStream
->
stime
==
INT64_MIN
)
{
etime
=
taosTimeTruncate
(
etime
,
&
pStream
->
interval
,
pStream
->
precision
);
etime
=
taosTimeTruncate
(
etime
,
&
pStream
->
interval
,
pStream
->
precision
)
-
one
;
}
else
{
etime
=
pStream
->
stime
+
(
etime
-
pStream
->
stime
)
/
pStream
->
interval
.
interval
*
pStream
->
interval
.
interval
;
etime
=
pStream
->
stime
+
(
etime
-
pStream
->
stime
)
/
pStream
->
interval
.
interval
*
pStream
->
interval
.
interval
-
one
;
}
}
else
{
etime
=
taosTimeTruncate
(
etime
,
&
pStream
->
interval
,
pStream
->
precision
);
etime
=
taosTimeTruncate
(
etime
,
&
pStream
->
interval
,
pStream
->
precision
)
-
one
;
}
pQueryInfo
->
window
.
ekey
=
etime
;
if
(
pQueryInfo
->
window
.
skey
>=
pQueryInfo
->
window
.
ekey
)
{
...
...
@@ -178,13 +180,30 @@ static void tscProcessStreamTimer(void *handle, void *tmrId) {
if
(
pStream
->
interval
.
intervalUnit
==
'y'
||
pStream
->
interval
.
intervalUnit
==
'n'
)
{
timer
=
86400
*
1000l
;
}
else
{
timer
=
convertTimePrecision
(
timer
,
pStream
->
precision
,
TSDB_TIME_PRECISION_MILLI
);
int64_t
next_time
=
0
;
while
(
1
)
{
// get next time
next_time
=
taosTimeAdd
(
pStream
->
stime
,
pStream
->
interval
.
sliding
,
pStream
->
interval
.
intervalUnit
,
TSDB_TIME_PRECISION_MILLI
);
next_time
=
taosTimeTruncate
(
next_time
,
&
pStream
->
interval
,
pStream
->
precision
);
timer
=
next_time
-
taosGetTimestamp
(
pStream
->
precision
);
// next time - now()
if
(
timer
<
0
)
{
//tscDebug("CQ next time < now so loop add sliding. next_time=%" PRId64, next_time);
continue
;
}
// calc launch delay time
int64_t
delay
=
getLaunchTimeDelay
((
const
SSqlStream
*
)
pStream
);
timer
+=
delay
;
tscDebug
(
"CQ execute next query after %"
PRId64
"ms (delay=%"
PRId64
")"
,
timer
,
delay
);
break
;
}
}
tscSetRetryTimer
(
pStream
,
pSql
,
timer
);
return
;
}
}
tscDebug
(
"CQ ProcessStreamTimer skey=%"
PRId64
" ekey=%"
PRId64
" stime=%"
PRId64
" etime=%"
PRId64
,
pQueryInfo
->
window
.
skey
,
pQueryInfo
->
window
.
ekey
,
pStream
->
stime
,
pStream
->
etime
);
// launch stream computing in a new thread
SSchedMsg
schedMsg
=
{
0
};
schedMsg
.
fp
=
tscProcessStreamLaunchQuery
;
...
...
@@ -195,7 +214,7 @@ static void tscProcessStreamTimer(void *handle, void *tmrId) {
}
static
void
tscProcessStreamQueryCallback
(
void
*
param
,
TAOS_RES
*
tres
,
int
numOfRows
)
{
SSqlStream
*
pStream
=
(
SSqlStream
*
)
param
;
SSqlStream
*
pStream
=
(
SSqlStream
*
)
param
;
if
(
tres
==
NULL
||
numOfRows
<
0
)
{
int64_t
retryDelay
=
tscGetRetryDelayTime
(
pStream
,
pStream
->
interval
.
sliding
,
pStream
->
precision
);
tscError
(
"0x%"
PRIx64
" stream:%p, query data failed, code:0x%08x, retry in %"
PRId64
"ms"
,
pStream
->
pSql
->
self
,
...
...
@@ -216,7 +235,6 @@ static void tscProcessStreamQueryCallback(void *param, TAOS_RES *tres, int numOf
pStream
->
pSql
->
subState
.
numOfSub
=
0
;
pTableMetaInfo
->
vgroupList
=
tscVgroupInfoClear
(
pTableMetaInfo
->
vgroupList
);
tscSetRetryTimer
(
pStream
,
pStream
->
pSql
,
retryDelay
);
return
;
}
...
...
@@ -265,14 +283,233 @@ static void tscStreamFillTimeGap(SSqlStream* pStream, TSKEY ts) {
#endif
}
// callback send values
int32_t
ok_cnt
=
0
;
int32_t
err_cnt
=
0
;
void
cbSendValues
(
void
*
param
,
TAOS_RES
*
res
,
int
code
)
{
if
(
code
<
0
)
{
err_cnt
++
;
tscError
(
"CQ Send Failed. code=0x%x ok_cnt=%d err_cnt=%d"
,
code
,
ok_cnt
,
err_cnt
);
}
else
{
ok_cnt
++
;
tscInfo
(
"CQ Send OK. row=%d ok_cnt=%d err_cnt=%d"
,
code
,
ok_cnt
,
err_cnt
);
}
}
// append values
size_t
appendValues
(
TAOS_FIELD
*
fields
,
int32_t
numCols
,
TAOS_ROW
row
,
char
*
pBuf
,
size_t
bufLen
,
size_t
curLen
,
bool
*
full
)
{
// calc buf is full
size_t
needLen
=
0
;
size_t
rowLen
=
0
;
int
i
;
for
(
i
=
0
;
i
<
numCols
;
i
++
)
{
needLen
+=
fields
[
i
].
bytes
;
}
// estimate length for use
needLen
+=
numCols
*
5
+
20
;
if
(
needLen
>=
bufLen
-
curLen
)
{
*
full
=
true
;
return
0
;
}
// row append to values
char
*
strRow
=
tmalloc
(
needLen
);
char
*
value
=
pBuf
+
curLen
;
strcpy
(
value
,
"("
);
rowLen
+=
taos_print_row_ex
(
strRow
,
row
,
fields
,
numCols
,
','
,
true
);
strcat
(
value
,
strRow
);
strcat
(
value
,
")"
);
rowLen
+=
2
;
tfree
(
strRow
);
return
rowLen
;
}
bool
sqlBufSend
(
TAOS
*
taos
,
char
*
sqlBuf
)
{
// if no enough free session, wait max 10s
int32_t
sleepCnt
=
0
;
do
{
int32_t
session
=
taos_unused_session
(
taos
);
if
(
session
>
1000
)
{
break
;
}
taosMsleep
(
500
);
tscInfo
(
"CQ session < 1000. session=%d Wait 0.5s cnt=%d"
,
session
,
sleepCnt
);
}
while
(
++
sleepCnt
<
20
);
strcat
(
sqlBuf
,
";"
);
taos_query_ra
(
taos
,
sqlBuf
,
cbSendValues
,
NULL
);
return
true
;
}
#define STR_SQL_INSERT "insert into "
// send one table all rows for once
bool
sendChildTalbe
(
TAOS
*
taos
,
char
*
superName
,
char
*
tableName
,
TAOS_FIELD
*
fields
,
int32_t
numCols
,
SArray
*
arr
,
char
*
sqlBuf
,
int32_t
bufLen
)
{
char
dbName
[
TSDB_DB_NAME_LEN
]
=
""
;
char
dbTable
[
TSDB_TABLE_FNAME_LEN
];
size_t
numRows
=
taosArrayGetSize
(
arr
);
if
(
numRows
==
0
)
return
false
;
// obtain dbname
char
*
p
=
strstr
(
superName
,
"."
);
if
(
p
)
{
// if have db prefix , under this db create table
int32_t
len
=
(
int32_t
)(
p
-
superName
);
strncpy
(
dbName
,
superName
,
len
);
dbName
[
len
]
=
0
;
// append str end
sprintf
(
dbTable
,
"%s.%s"
,
dbName
,
tableName
);
}
else
{
// no db prefix
strcpy
(
dbTable
,
tableName
);
}
// first enter
if
(
sqlBuf
[
0
]
==
0
)
{
strcpy
(
sqlBuf
,
STR_SQL_INSERT
);
}
else
{
// check need send
if
(
bufLen
-
strlen
(
sqlBuf
)
<
300
)
{
sqlBufSend
(
taos
,
sqlBuf
);
strcpy
(
sqlBuf
,
STR_SQL_INSERT
);
}
}
// init
int32_t
preLen
=
(
int32_t
)
strlen
(
sqlBuf
);
char
*
subBuf
=
sqlBuf
+
preLen
;
int32_t
subLen
=
bufLen
-
preLen
;
sprintf
(
subBuf
,
" %s using %s tags(0) values "
,
dbTable
,
superName
);
size_t
curLen
=
strlen
(
subBuf
);
TAOS_ROW
row
;
bool
full
=
false
;
for
(
size_t
i
=
0
;
i
<
numRows
;
i
++
)
{
row
=
(
TAOS_ROW
)
taosArrayGetP
(
arr
,
i
);
if
(
row
==
NULL
)
continue
;
if
(
subLen
>
200
)
curLen
+=
appendValues
(
fields
,
numCols
,
row
,
subBuf
,
subLen
-
100
,
curLen
,
&
full
);
else
full
=
true
;
if
(
full
)
{
// need send
// send current
sqlBufSend
(
taos
,
sqlBuf
);
// init reset
strcpy
(
sqlBuf
,
STR_SQL_INSERT
);
preLen
=
(
int32_t
)
strlen
(
sqlBuf
);
subBuf
=
sqlBuf
+
preLen
;
subLen
=
bufLen
-
preLen
;
sprintf
(
subBuf
,
" %s using %s tags(0) values "
,
dbTable
,
superName
);
curLen
=
strlen
(
subBuf
);
// retry append. if full is true again, ignore this row
curLen
+=
appendValues
(
fields
,
numCols
,
row
,
subBuf
,
subLen
-
100
,
curLen
,
&
full
);
full
=
false
;
// reset to false
}
tfree
(
row
);
}
return
true
;
}
// write cq result to another table
bool
toAnotherTable
(
STscObj
*
pTscObj
,
char
*
superName
,
TAOS_FIELD
*
fields
,
int32_t
numCols
,
SHashObj
*
tbHash
,
int32_t
numRows
)
{
int32_t
bufLen
=
TSDB_MAX_SQL_LEN
/
2
-
128
;
char
*
sqlBuf
=
tmalloc
(
bufLen
);
sqlBuf
[
0
]
=
0
;
// init
ok_cnt
=
0
;
err_cnt
=
0
;
int
cnt_table
=
0
;
void
*
pIter
=
taosHashIterate
(
tbHash
,
NULL
);
while
(
pIter
)
{
SArray
*
arr
=
*
(
SArray
**
)
pIter
;
if
(
arr
)
{
// get key as tableName
SHashNode
*
pNode
=
(
SHashNode
*
)
GET_HASH_PNODE
(
pIter
);
char
*
data
=
(
char
*
)
GET_HASH_NODE_KEY
(
pNode
);
uint32_t
len
=
pNode
->
keyLen
;
char
*
key
=
tmalloc
(
len
+
1
);
memcpy
(
key
,
data
,
len
);
key
[
len
]
=
0
;
// string end '\0'
// send all this table rows
sendChildTalbe
(
pTscObj
,
superName
,
key
,
fields
,
numCols
,
arr
,
sqlBuf
,
bufLen
);
// release SArray
taosArrayDestroy
(
arr
);
tfree
(
key
);
cnt_table
++
;
}
pIter
=
taosHashIterate
(
tbHash
,
pIter
);
}
if
(
sqlBuf
[
0
])
{
sqlBufSend
(
pTscObj
,
sqlBuf
);
}
tscInfo
(
"CQ ===== stream %d rows write to %d tables =====
\n
"
,
numRows
,
cnt_table
);
tfree
(
sqlBuf
);
return
true
;
}
// add row to hash to group by tbname
bool
tbHashAdd
(
SHashObj
*
tbHash
,
TAOS_ROW
row
,
TAOS_FIELD
*
fields
,
int32_t
idx
,
int32_t
numCols
)
{
void
*
v
=
row
[
idx
];
TAOS_FIELD
*
field
=
&
fields
[
idx
];
VarDataLenT
len
=
0
;
char
str
[
128
];
memset
(
str
,
0
,
sizeof
(
str
));
char
*
key
=
str
;
// get key and len
if
(
field
->
type
==
TSDB_DATA_TYPE_BINARY
||
field
->
type
==
TSDB_DATA_TYPE_NCHAR
)
{
key
=
v
;
len
=
varDataLen
((
char
*
)
v
-
VARSTR_HEADER_SIZE
);
}
else
{
len
=
taos_print_field
(
str
,
v
,
field
);
}
if
(
len
==
0
)
{
return
false
;
}
// append key with len
SArray
*
arr
=
NULL
;
void
*
pdata
=
taosHashGet
(
tbHash
,
key
,
len
);
if
(
pdata
)
{
arr
=
*
(
SArray
**
)
pdata
;
}
// if group is null create new
if
(
arr
==
NULL
)
{
arr
=
(
SArray
*
)
taosArrayInit
(
10
,
sizeof
(
TAOS_ROW
));
if
(
arr
==
NULL
)
{
tscError
(
"tbHashAdd tbHash:%p, taosArrayInit(10,sizeof(TAOS_ROW) return NULL."
,
tbHash
);
return
false
;
}
taosHashPut
(
tbHash
,
key
,
len
,
&
arr
,
sizeof
(
SArray
*
));
}
// append to group
int32_t
new_len
=
sizeof
(
void
*
)
*
numCols
;
TAOS_ROW
new_row
=
(
TAOS_ROW
)
tmalloc
(
new_len
);
memcpy
(
new_row
,
row
,
new_len
);
taosArrayPush
(
arr
,
&
new_row
);
return
true
;
}
static
void
tscProcessStreamRetrieveResult
(
void
*
param
,
TAOS_RES
*
res
,
int
numOfRows
)
{
SSqlStream
*
pStream
=
(
SSqlStream
*
)
param
;
SSqlObj
*
pSql
=
(
SSqlObj
*
)
res
;
bool
toAnother
=
pStream
->
to
!=
NULL
;
if
(
pSql
==
NULL
||
numOfRows
<
0
)
{
int64_t
retryDelayTime
=
tscGetRetryDelayTime
(
pStream
,
pStream
->
interval
.
sliding
,
pStream
->
precision
);
tscError
(
"stream:%p, retrieve data failed, code:0x%08x, retry in %"
PRId64
" ms"
,
pStream
,
numOfRows
,
retryDelayTime
);
tscSetRetryTimer
(
pStream
,
pStream
->
pSql
,
retryDelayTime
);
return
;
}
...
...
@@ -281,23 +518,72 @@ static void tscProcessStreamRetrieveResult(void *param, TAOS_RES *res, int numOf
STableMetaInfo
*
pTableMetaInfo
=
pQueryInfo
->
pTableMetaInfo
[
0
];
if
(
numOfRows
>
0
)
{
// when reaching here the first execution of stream computing is successful.
// init hash
SHashObj
*
tbHash
=
NULL
;
int32_t
colIdx
=
-
1
;
TAOS_FIELD
*
fields
=
NULL
;
int32_t
dstColsNum
=
pStream
->
dstCols
;
int32_t
fieldsNum
=
0
;
if
(
toAnother
)
{
//init hash
tbHash
=
taosHashInit
(
100
,
taosGetDefaultHashFunction
(
TSDB_DATA_TYPE_BINARY
),
true
,
HASH_NO_LOCK
);
fields
=
taos_fetch_fields
(
res
);
fieldsNum
=
tscNumOfFields
(
pQueryInfo
);
if
(
dstColsNum
==
-
1
)
dstColsNum
=
fieldsNum
;
//search split column
char
*
split
=
"tbname"
;
// default
if
(
pStream
->
split
)
split
=
pStream
->
split
;
for
(
int32_t
i
=
1
;
i
<
fieldsNum
;
i
++
)
{
if
(
strcasecmp
(
fields
[
i
].
name
,
split
)
==
0
)
{
colIdx
=
i
;
break
;
}
}
// set default with last fields if
if
(
colIdx
==
-
1
)
{
colIdx
=
fieldsNum
-
1
;
}
}
// save rows
for
(
int32_t
i
=
0
;
i
<
numOfRows
;
++
i
)
{
TAOS_ROW
row
=
taos_fetch_row
(
res
);
if
(
row
!=
NULL
)
{
tscDebug
(
"0x%"
PRIx64
" stream:%p fetch result
"
,
pSql
->
self
,
pStream
);
tscDebug
(
"0x%"
PRIx64
" stream:%p fetch result
row=%d"
,
pSql
->
self
,
pStream
,
i
);
tscStreamFillTimeGap
(
pStream
,
*
(
TSKEY
*
)
row
[
0
]);
pStream
->
stime
=
*
(
TSKEY
*
)
row
[
0
];
// user callback function
(
*
pStream
->
fp
)(
pStream
->
param
,
res
,
row
);
// write to another table if true
if
(
toAnother
)
{
tbHashAdd
(
tbHash
,
row
,
fields
,
colIdx
,
dstColsNum
);
if
(
i
==
numOfRows
-
1
)
//write last row to record last query time avoid query from begin for each
(
*
pStream
->
fp
)(
pStream
->
param
,
res
,
row
);
}
else
{
(
*
pStream
->
fp
)(
pStream
->
param
,
res
,
row
);
}
pStream
->
numOfRes
++
;
}
}
// write Another
if
(
toAnother
)
{
toAnotherTable
(
pSql
->
pTscObj
,
pStream
->
to
,
fields
,
dstColsNum
,
tbHash
,
numOfRows
);
taosHashCleanup
(
tbHash
);
}
if
(
!
pStream
->
isProject
)
{
pStream
->
stime
=
taosTimeAdd
(
pStream
->
stime
,
pStream
->
interval
.
sliding
,
pStream
->
interval
.
slidingUnit
,
pStream
->
precision
);
}
int32_t
code
=
TSDB_CODE_SUCCESS
;
if
(
pQueryInfo
&&
pQueryInfo
->
pQInfo
)
code
=
pQueryInfo
->
pQInfo
->
code
;
// actually only one row is returned. this following is not necessary
taos_fetch_rows_a
(
res
,
tscProcessStreamRetrieveResult
,
pStream
);
if
(
code
==
TSDB_CODE_SUCCESS
)
{
taos_fetch_rows_a
(
res
,
tscProcessStreamRetrieveResult
,
pStream
);
}
}
else
{
// numOfRows == 0, all data has been retrieved
pStream
->
useconds
+=
pSql
->
res
.
useconds
;
if
(
pStream
->
numOfRes
==
0
)
{
...
...
@@ -306,7 +592,6 @@ static void tscProcessStreamRetrieveResult(void *param, TAOS_RES *res, int numOf
// todo set retry dynamic time
int32_t
retry
=
tsProjectExecInterval
;
tscError
(
"0x%"
PRIx64
" stream:%p, retrieve no data, code:0x%08x, retry in %"
PRId32
"ms"
,
pSql
->
self
,
pStream
,
numOfRows
,
retry
);
tscSetRetryTimer
(
pStream
,
pStream
->
pSql
,
retry
);
return
;
}
...
...
@@ -371,28 +656,33 @@ static void tscSetRetryTimer(SSqlStream *pStream, SSqlObj *pSql, int64_t timer)
taosTmrReset
(
tscProcessStreamTimer
,
(
int32_t
)
timer
,
pStream
,
tscTmr
,
&
pStream
->
pTimer
);
}
// get need delay time for every launch to exeucte query, include first and next launch
static
int64_t
getLaunchTimeDelay
(
const
SSqlStream
*
pStream
)
{
// step 1 read setting delay time in taos.cfg
int64_t
maxDelay
=
convertTimePrecision
(
tsMaxStreamComputDelay
,
TSDB_TIME_PRECISION_MILLI
,
pStream
->
precision
);
int64_t
delayDelta
=
maxDelay
;
int64_t
ratioDelay
=
maxDelay
;
if
(
pStream
->
interval
.
intervalUnit
!=
'n'
&&
pStream
->
interval
.
intervalUnit
!=
'y'
)
{
delayDelta
=
(
int64_t
)(
pStream
->
interval
.
sliding
*
tsStreamComputDelayRatio
);
if
(
delayDelta
>
maxDelay
)
{
delayDelta
=
maxDelay
;
ratioDelay
=
(
int64_t
)(
pStream
->
interval
.
sliding
*
tsStreamComputDelayRatio
);
if
(
ratioDelay
>
maxDelay
)
{
ratioDelay
=
maxDelay
;
}
int64_t
remainTimeWindow
=
pStream
->
interval
.
sliding
-
delayDelta
;
int64_t
remainTimeWindow
=
pStream
->
interval
.
sliding
-
ratioDelay
;
if
(
maxDelay
>
remainTimeWindow
)
{
maxDelay
=
(
int64_t
)(
remainTimeWindow
/
1
.
5
f
);
}
}
int64_t
currentDelay
=
(
rand
()
%
maxDelay
);
// a random number
currentDelay
+=
delayDelta
;
// PART 2 calc allDelay = rand delay + fixed delay
int64_t
allDelay
=
(
rand
()
%
maxDelay
)
+
ratioDelay
;
if
(
pStream
->
interval
.
intervalUnit
!=
'n'
&&
pStream
->
interval
.
intervalUnit
!=
'y'
)
{
assert
(
currentDelay
<
pStream
->
interval
.
sliding
);
if
(
allDelay
>=
pStream
->
interval
.
sliding
)
{
tscWarn
(
"CQ delay >= sliding error. delay=%"
PRId64
" sliding=%"
PRId64
". so set delay=sliding/2."
,
allDelay
,
pStream
->
interval
.
sliding
);
allDelay
=
pStream
->
interval
.
sliding
/
2
;
}
}
return
currentDelay
;
tscDebug
(
"getLanchDelay allDelay=%"
PRId64
"(ratioDelay=%"
PRId64
")"
,
allDelay
,
ratioDelay
);
return
allDelay
;
}
...
...
@@ -441,7 +731,6 @@ static void tscSetNextLaunchTimer(SSqlStream *pStream, SSqlObj *pSql) {
timer
+=
getLaunchTimeDelay
(
pStream
);
timer
=
convertTimePrecision
(
timer
,
pStream
->
precision
,
TSDB_TIME_PRECISION_MILLI
);
tscSetRetryTimer
(
pStream
,
pSql
,
timer
);
}
...
...
@@ -533,16 +822,18 @@ static int64_t tscGetStreamStartTimestamp(SSqlObj *pSql, SSqlStream *pStream, in
return
tsc_stime
;
}
static
int64_t
tscGetLaunchTimestamp
(
const
SSqlStream
*
pStream
)
{
static
int64_t
tscGetFirstLaunchTime
(
const
SSqlStream
*
pStream
)
{
// PART 1 now to stime span
int64_t
timer
=
0
,
now
=
taosGetTimestamp
(
pStream
->
precision
);
if
(
pStream
->
stime
>
now
)
{
timer
=
pStream
->
stime
-
now
;
}
int64_t
startDelay
=
convertTimePrecision
(
tsStreamCompStartDelay
,
TSDB_TIME_PRECISION_MILLI
,
pStream
->
precision
);
// PART 2 stream first Launch need delay, setting with taos.cfg
timer
+=
convertTimePrecision
(
tsFirstLaunchDelay
,
TSDB_TIME_PRECISION_MILLI
,
pStream
->
precision
);
// PART 3 every launch need delay, include first and next launch
timer
+=
getLaunchTimeDelay
(
pStream
);
timer
+=
startDelay
;
return
convertTimePrecision
(
timer
,
pStream
->
precision
,
TSDB_TIME_PRECISION_MILLI
);
}
...
...
@@ -588,7 +879,7 @@ static void tscCreateStream(void *param, TAOS_RES *res, int code) {
pStream
->
stime
=
pStream
->
ltime
;
}
int64_t
starttime
=
tscGet
LaunchTimestamp
(
pStream
);
int64_t
starttime
=
tscGet
FirstLaunchTime
(
pStream
);
pCmd
->
command
=
TSDB_SQL_SELECT
;
tscAddIntoStreamList
(
pStream
);
...
...
@@ -662,7 +953,50 @@ void cbParseSql(void* param, TAOS_RES* res, int code) {
return
;
}
TAOS_STREAM
*
taos_open_stream_withname
(
TAOS
*
taos
,
const
char
*
dstTable
,
const
char
*
sqlstr
,
void
(
*
fp
)(
void
*
param
,
TAOS_RES
*
,
TAOS_ROW
row
),
void
splitStreamSql
(
const
char
*
str
,
char
**
sql
,
char
**
to
,
char
**
split
)
{
// OLD FORMAT only sql
if
(
strncmp
(
str
,
LABEL_SQL
,
LABEL_SQL_LEN
)
!=
0
)
{
*
sql
=
tmalloc
(
strlen
(
str
)
+
1
);
if
(
*
sql
==
NULL
)
return
;
strcpy
(
*
sql
,
str
);
return
;
}
// NEW FORMAT sql:...to:...split:...
char
*
p1
=
strstr
(
str
+
LABEL_SQL_LEN
,
LABEL_TO
);
if
(
p1
==
NULL
)
{
char
*
p
=
(
char
*
)
str
+
LABEL_SQL_LEN
;
*
sql
=
(
char
*
)
tmalloc
(
strlen
(
p
)
+
1
);
strcpy
(
*
sql
,
p
);
return
;
}
// SQL value
int32_t
len
=
(
int32_t
)(
p1
-
str
-
LABEL_SQL_LEN
);
*
sql
=
(
char
*
)
tmalloc
(
len
+
1
);
strncpy
(
*
sql
,
str
+
LABEL_SQL_LEN
,
len
);
(
*
sql
)[
len
]
=
0
;
// str end
// TO value
char
*
p2
=
strstr
(
p1
+
LABEL_TO_LEN
,
LABEL_SPLIT
);
if
(
p2
==
NULL
)
{
char
*
p
=
p1
+
LABEL_TO_LEN
;
*
to
=
(
char
*
)
tmalloc
(
strlen
(
p
)
+
1
);
strcpy
(
*
to
,
p
);
return
;
}
len
=
(
int32_t
)(
p2
-
p1
-
LABEL_TO_LEN
);
*
to
=
(
char
*
)
tmalloc
(
len
+
1
);
strncpy
(
*
to
,
p1
+
LABEL_TO_LEN
,
len
);
(
*
to
)[
len
]
=
0
;
// str end
// SPLIT value
char
*
p
=
p2
+
LABEL_SPLIT_LEN
;
*
split
=
(
char
*
)
tmalloc
(
strlen
(
p
)
+
1
);
strcpy
(
*
split
,
p
);
}
TAOS_STREAM
*
taos_open_stream_withname
(
TAOS
*
taos
,
const
char
*
dstTable
,
int32_t
dstCols
,
const
char
*
sqlstr
,
void
(
*
fp
)(
void
*
param
,
TAOS_RES
*
,
TAOS_ROW
row
),
int64_t
tsc_stime
,
void
*
param
,
void
(
*
callback
)(
void
*
),
void
*
cqhandle
)
{
STscObj
*
pObj
=
(
STscObj
*
)
taos
;
if
(
pObj
==
NULL
||
pObj
->
signature
!=
pObj
)
return
NULL
;
...
...
@@ -698,6 +1032,9 @@ TAOS_STREAM *taos_open_stream_withname(TAOS *taos, const char* dstTable, const c
pStream
->
param
=
param
;
pStream
->
pSql
=
pSql
;
pStream
->
cqhandle
=
cqhandle
;
pStream
->
dstCols
=
dstCols
;
pStream
->
to
=
NULL
;
pStream
->
split
=
NULL
;
pSql
->
pStream
=
pStream
;
pSql
->
param
=
pStream
;
pSql
->
maxRetry
=
TSDB_MAX_REPLICA
;
...
...
@@ -706,7 +1043,9 @@ TAOS_STREAM *taos_open_stream_withname(TAOS *taos, const char* dstTable, const c
pSql
->
pStream
=
pStream
;
pSql
->
param
=
pStream
;
pSql
->
maxRetry
=
TSDB_MAX_REPLICA
;
pSql
->
sqlstr
=
calloc
(
1
,
strlen
(
sqlstr
)
+
1
);
// split stream sqlstr to sql,to,split
splitStreamSql
(
sqlstr
,
&
pSql
->
sqlstr
,
&
pStream
->
to
,
&
pStream
->
split
);
if
(
pSql
->
sqlstr
==
NULL
)
{
tscError
(
"0x%"
PRIx64
" failed to malloc sql string buffer"
,
pSql
->
self
);
tscFreeSqlObj
(
pSql
);
...
...
@@ -714,7 +1053,7 @@ TAOS_STREAM *taos_open_stream_withname(TAOS *taos, const char* dstTable, const c
return
NULL
;
}
strtolower
(
pSql
->
sqlstr
,
sqlstr
);
strtolower
(
pSql
->
sqlstr
,
pSql
->
sqlstr
);
pSql
->
fp
=
tscCreateStream
;
pSql
->
fetchFp
=
tscCreateStream
;
pSql
->
cmd
.
resColumnId
=
TSDB_RES_COL_ID
;
...
...
@@ -733,7 +1072,7 @@ TAOS_STREAM *taos_open_stream_withname(TAOS *taos, const char* dstTable, const c
if
(
code
==
TSDB_CODE_SUCCESS
)
{
cbParseSql
(
pStream
,
pSql
,
code
);
}
else
if
(
code
==
TSDB_CODE_TSC_ACTION_IN_PROGRESS
)
{
tscDebug
(
" CQ ta
so
_open_stream IN Process. sql=%s"
,
sqlstr
);
tscDebug
(
" CQ ta
os
_open_stream IN Process. sql=%s"
,
sqlstr
);
}
else
{
tscError
(
"0x%"
PRIx64
" open stream failed, sql:%s, code:%s"
,
pSql
->
self
,
sqlstr
,
tstrerror
(
code
));
taosReleaseRef
(
tscObjRef
,
pSql
->
self
);
...
...
@@ -746,7 +1085,7 @@ TAOS_STREAM *taos_open_stream_withname(TAOS *taos, const char* dstTable, const c
TAOS_STREAM
*
taos_open_stream
(
TAOS
*
taos
,
const
char
*
sqlstr
,
void
(
*
fp
)(
void
*
param
,
TAOS_RES
*
,
TAOS_ROW
row
),
int64_t
tsc_stime
,
void
*
param
,
void
(
*
callback
)(
void
*
))
{
return
taos_open_stream_withname
(
taos
,
""
,
sqlstr
,
fp
,
tsc_stime
,
param
,
callback
,
NULL
);
return
taos_open_stream_withname
(
taos
,
""
,
-
1
,
sqlstr
,
fp
,
tsc_stime
,
param
,
callback
,
NULL
);
}
void
taos_close_stream
(
TAOS_STREAM
*
handle
)
{
...
...
@@ -772,6 +1111,16 @@ void taos_close_stream(TAOS_STREAM *handle) {
pStream
->
fp
(
pStream
->
param
,
NULL
,
NULL
);
taos_free_result
(
pSql
);
// free malloc
if
(
pStream
->
to
)
{
tfree
(
pStream
->
to
);
pStream
->
to
=
NULL
;
}
if
(
pStream
->
split
)
{
tfree
(
pStream
->
split
);
pStream
->
split
=
NULL
;
}
tfree
(
pStream
);
}
}
src/common/inc/tglobal.h
浏览文件 @
0b6fd5c2
...
...
@@ -78,7 +78,7 @@ extern int32_t tsMaxNumOfOrderedResults;
extern
int32_t
tsMinSlidingTime
;
extern
int32_t
tsMinIntervalTime
;
extern
int32_t
tsMaxStreamComputDelay
;
extern
int32_t
ts
StreamCompStart
Delay
;
extern
int32_t
ts
FirstLaunch
Delay
;
extern
int32_t
tsRetryStreamCompDelay
;
extern
float
tsStreamComputDelayRatio
;
// the delayed computing ration of the whole time window
extern
int32_t
tsProjectExecInterval
;
...
...
src/common/src/tglobal.c
浏览文件 @
0b6fd5c2
...
...
@@ -98,11 +98,11 @@ int32_t tsMinIntervalTime = 1;
// 20sec, the maximum value of stream computing delay, changed accordingly
int32_t
tsMaxStreamComputDelay
=
20000
;
// 10sec, the
first stream computing
delay time after system launched successfully, changed accordingly
int32_t
ts
StreamCompStart
Delay
=
10000
;
// 10sec, the
stream first launched to execute
delay time after system launched successfully, changed accordingly
int32_t
ts
FirstLaunch
Delay
=
10000
;
// the stream computing delay time after executing failed, change accordingly
int32_t
tsRetryStreamCompDelay
=
1
0
*
1000
;
int32_t
tsRetryStreamCompDelay
=
30
*
6
0
*
1000
;
// The delayed computing ration. 10% of the whole computing time window by default.
float
tsStreamComputDelayRatio
=
0
.
1
f
;
...
...
@@ -755,7 +755,7 @@ static void doInitGlobalConfig(void) {
taosInitConfigOption
(
cfg
);
cfg
.
option
=
"maxFirstStreamCompDelay"
;
cfg
.
ptr
=
&
ts
StreamCompStartDelay
;
cfg
.
ptr
=
&
ts
FirstLaunchDelay
;
// stream first launch delay time
cfg
.
valType
=
TAOS_CFG_VTYPE_INT32
;
cfg
.
cfgType
=
TSDB_CFG_CTYPE_B_CONFIG
|
TSDB_CFG_CTYPE_B_SHOW
;
cfg
.
minValue
=
1000
;
...
...
src/cq/src/cqMain.c
浏览文件 @
0b6fd5c2
...
...
@@ -423,8 +423,8 @@ static void cqProcessCreateTimer(void *param, void *tmrId) {
}
// inner implement in tscStream.c
TAOS_STREAM
*
taos_open_stream_withname
(
TAOS
*
taos
,
const
char
*
desName
,
const
char
*
sqlstr
,
void
(
*
fp
)(
void
*
param
,
TAOS_RES
*
,
TAOS_ROW
row
),
int64_t
tsc_
stime
,
void
*
param
,
void
(
*
callback
)(
void
*
),
void
*
cqhandle
);
TAOS_STREAM
*
taos_open_stream_withname
(
TAOS
*
taos
,
const
char
*
desName
,
int32_t
dstCols
,
const
char
*
sqlstr
,
void
(
*
fp
)(
void
*
param
,
TAOS_RES
*
,
TAOS_ROW
row
),
int64_t
stime
,
void
*
param
,
void
(
*
callback
)(
void
*
),
void
*
cqhandle
);
static
void
cqCreateStream
(
SCqContext
*
pContext
,
SCqObj
*
pObj
)
{
pObj
->
pContext
=
pContext
;
...
...
@@ -436,9 +436,11 @@ static void cqCreateStream(SCqContext *pContext, SCqObj *pObj) {
}
pObj
->
tmrId
=
0
;
int32_t
dstCols
=
-
1
;
if
(
pObj
->
pSchema
)
dstCols
=
pObj
->
pSchema
->
numOfCols
;
if
(
pObj
->
pStream
==
NULL
)
{
pObj
->
pStream
=
taos_open_stream_withname
(
pContext
->
dbConn
,
pObj
->
dstTable
,
pObj
->
sqlStr
,
cqProcessStreamRes
,
\
pObj
->
pStream
=
taos_open_stream_withname
(
pContext
->
dbConn
,
pObj
->
dstTable
,
dstCols
,
pObj
->
sqlStr
,
cqProcessStreamRes
,
\
INT64_MIN
,
(
void
*
)
pObj
->
rid
,
NULL
,
pContext
);
// TODO the pObj->pStream may be released if error happens
...
...
src/inc/taos.h
浏览文件 @
0b6fd5c2
...
...
@@ -137,7 +137,11 @@ DLL_EXPORT int taos_num_fields(TAOS_RES *res);
DLL_EXPORT
int
taos_affected_rows
(
TAOS_RES
*
res
);
DLL_EXPORT
TAOS_FIELD
*
taos_fetch_fields
(
TAOS_RES
*
res
);
DLL_EXPORT
int
taos_select_db
(
TAOS
*
taos
,
const
char
*
db
);
// row to string
DLL_EXPORT
int
taos_print_row
(
char
*
str
,
TAOS_ROW
row
,
TAOS_FIELD
*
fields
,
int
num_fields
);
DLL_EXPORT
int
taos_print_row_ex
(
char
*
str
,
TAOS_ROW
row
,
TAOS_FIELD
*
fields
,
int
num_fields
,
char
split
,
bool
addQuota
);
// one field to string
DLL_EXPORT
int
taos_print_field
(
char
*
str
,
void
*
value
,
TAOS_FIELD
*
field
);
DLL_EXPORT
void
taos_stop_query
(
TAOS_RES
*
res
);
DLL_EXPORT
bool
taos_is_null
(
TAOS_RES
*
res
,
int32_t
row
,
int32_t
col
);
DLL_EXPORT
int
taos_fetch_block
(
TAOS_RES
*
res
,
TAOS_ROW
*
rows
);
...
...
@@ -165,7 +169,7 @@ DLL_EXPORT TAOS_RES *taos_consume(TAOS_SUB *tsub);
DLL_EXPORT
void
taos_unsubscribe
(
TAOS_SUB
*
tsub
,
int
keepProgress
);
DLL_EXPORT
TAOS_STREAM
*
taos_open_stream
(
TAOS
*
taos
,
const
char
*
sql
,
void
(
*
fp
)(
void
*
param
,
TAOS_RES
*
,
TAOS_ROW
row
),
int64_t
stime
,
void
*
param
,
void
(
*
callback
)(
void
*
));
int64_t
tsc_
stime
,
void
*
param
,
void
(
*
callback
)(
void
*
));
DLL_EXPORT
void
taos_close_stream
(
TAOS_STREAM
*
tstr
);
DLL_EXPORT
int
taos_load_table_info
(
TAOS
*
taos
,
const
char
*
tableNameList
);
...
...
src/inc/trpc.h
浏览文件 @
0b6fd5c2
...
...
@@ -92,6 +92,7 @@ int rpcGetConnInfo(void *thandle, SRpcConnInfo *pInfo);
void
rpcSendRecv
(
void
*
shandle
,
SRpcEpSet
*
pEpSet
,
SRpcMsg
*
pReq
,
SRpcMsg
*
pRsp
);
int
rpcReportProgress
(
void
*
pConn
,
char
*
pCont
,
int
contLen
);
void
rpcCancelRequest
(
int64_t
rid
);
int32_t
rpcUnusedSession
(
void
*
rpcInfo
,
bool
bLock
);
#ifdef __cplusplus
}
...
...
src/inc/ttokendef.h
浏览文件 @
0b6fd5c2
...
...
@@ -133,86 +133,87 @@
#define TK_UNSIGNED 115
#define TK_TAGS 116
#define TK_USING 117
#define TK_NULL 118
#define TK_NOW 119
#define TK_VARIABLE 120
#define TK_SELECT 121
#define TK_UNION 122
#define TK_ALL 123
#define TK_DISTINCT 124
#define TK_FROM 125
#define TK_INTERVAL 126
#define TK_EVERY 127
#define TK_SESSION 128
#define TK_STATE_WINDOW 129
#define TK_FILL 130
#define TK_SLIDING 131
#define TK_ORDER 132
#define TK_BY 133
#define TK_ASC 134
#define TK_GROUP 135
#define TK_HAVING 136
#define TK_LIMIT 137
#define TK_OFFSET 138
#define TK_SLIMIT 139
#define TK_SOFFSET 140
#define TK_WHERE 141
#define TK_RESET 142
#define TK_QUERY 143
#define TK_SYNCDB 144
#define TK_ADD 145
#define TK_COLUMN 146
#define TK_MODIFY 147
#define TK_TAG 148
#define TK_CHANGE 149
#define TK_SET 150
#define TK_KILL 151
#define TK_CONNECTION 152
#define TK_STREAM 153
#define TK_COLON 154
#define TK_ABORT 155
#define TK_AFTER 156
#define TK_ATTACH 157
#define TK_BEFORE 158
#define TK_BEGIN 159
#define TK_CASCADE 160
#define TK_CLUSTER 161
#define TK_CONFLICT 162
#define TK_COPY 163
#define TK_DEFERRED 164
#define TK_DELIMITERS 165
#define TK_DETACH 166
#define TK_EACH 167
#define TK_END 168
#define TK_EXPLAIN 169
#define TK_FAIL 170
#define TK_FOR 171
#define TK_IGNORE 172
#define TK_IMMEDIATE 173
#define TK_INITIALLY 174
#define TK_INSTEAD 175
#define TK_MATCH 176
#define TK_KEY 177
#define TK_OF 178
#define TK_RAISE 179
#define TK_REPLACE 180
#define TK_RESTRICT 181
#define TK_ROW 182
#define TK_STATEMENT 183
#define TK_TRIGGER 184
#define TK_VIEW 185
#define TK_SEMI 186
#define TK_NONE 187
#define TK_PREV 188
#define TK_LINEAR 189
#define TK_IMPORT 190
#define TK_TBNAME 191
#define TK_JOIN 192
#define TK_INSERT 193
#define TK_INTO 194
#define TK_VALUES 195
#define TK_FILE 196
#define TK_TO 118
#define TK_SPLIT 119
#define TK_NULL 120
#define TK_NOW 121
#define TK_VARIABLE 122
#define TK_SELECT 123
#define TK_UNION 124
#define TK_ALL 125
#define TK_DISTINCT 126
#define TK_FROM 127
#define TK_INTERVAL 128
#define TK_EVERY 129
#define TK_SESSION 130
#define TK_STATE_WINDOW 131
#define TK_FILL 132
#define TK_SLIDING 133
#define TK_ORDER 134
#define TK_BY 135
#define TK_ASC 136
#define TK_GROUP 137
#define TK_HAVING 138
#define TK_LIMIT 139
#define TK_OFFSET 140
#define TK_SLIMIT 141
#define TK_SOFFSET 142
#define TK_WHERE 143
#define TK_RESET 144
#define TK_QUERY 145
#define TK_SYNCDB 146
#define TK_ADD 147
#define TK_COLUMN 148
#define TK_MODIFY 149
#define TK_TAG 150
#define TK_CHANGE 151
#define TK_SET 152
#define TK_KILL 153
#define TK_CONNECTION 154
#define TK_STREAM 155
#define TK_COLON 156
#define TK_ABORT 157
#define TK_AFTER 158
#define TK_ATTACH 159
#define TK_BEFORE 160
#define TK_BEGIN 161
#define TK_CASCADE 162
#define TK_CLUSTER 163
#define TK_CONFLICT 164
#define TK_COPY 165
#define TK_DEFERRED 166
#define TK_DELIMITERS 167
#define TK_DETACH 168
#define TK_EACH 169
#define TK_END 170
#define TK_EXPLAIN 171
#define TK_FAIL 172
#define TK_FOR 173
#define TK_IGNORE 174
#define TK_IMMEDIATE 175
#define TK_INITIALLY 176
#define TK_INSTEAD 177
#define TK_MATCH 178
#define TK_KEY 179
#define TK_OF 180
#define TK_RAISE 181
#define TK_REPLACE 182
#define TK_RESTRICT 183
#define TK_ROW 184
#define TK_STATEMENT 185
#define TK_TRIGGER 186
#define TK_VIEW 187
#define TK_SEMI 188
#define TK_NONE 189
#define TK_PREV 190
#define TK_LINEAR 191
#define TK_IMPORT 192
#define TK_TBNAME 193
#define TK_JOIN 194
#define TK_INSERT 195
#define TK_INTO 196
#define TK_VALUES 197
#define TK_FILE 198
#define TK_SPACE 300
#define TK_COMMENT 301
...
...
src/mnode/src/mnodeTable.c
浏览文件 @
0b6fd5c2
...
...
@@ -845,15 +845,15 @@ static int32_t mnodeProcessBatchCreateTableMsg(SMnodeMsg *pMsg) {
memcpy
(
pSubMsg
->
pCont
+
sizeof
(
SCMCreateTableMsg
),
p
,
htonl
(
p
->
len
));
code
=
mnodeValidateCreateTableMsg
(
p
,
pSubMsg
);
if
(
code
==
TSDB_CODE_SUCCESS
||
code
==
TSDB_CODE_MND_TABLE_ALREADY_EXIST
)
{
++
pSubMsg
->
pBatchMasterMsg
->
successed
;
mnodeDestroySubMsg
(
pSubMsg
);
continue
;
if
(
code
==
TSDB_CODE_SUCCESS
||
(
p
->
igExists
==
1
&&
code
==
TSDB_CODE_MND_TABLE_ALREADY_EXIST
)
)
{
++
pSubMsg
->
pBatchMasterMsg
->
successed
;
mnodeDestroySubMsg
(
pSubMsg
);
continue
;
}
if
(
code
!=
TSDB_CODE_MND_ACTION_IN_PROGRESS
)
{
mnodeDestroySubMsg
(
pSubMsg
);
return
code
;
mnodeDestroySubMsg
(
pSubMsg
);
return
code
;
}
}
...
...
@@ -1045,11 +1045,21 @@ static int32_t mnodeCreateSuperTableCb(SMnodeMsg *pMsg, int32_t code) {
if
(
code
==
TSDB_CODE_SUCCESS
)
{
mLInfo
(
"stable:%s, is created in sdb, uid:%"
PRIu64
,
pTable
->
info
.
tableId
,
pTable
->
uid
);
if
(
pMsg
->
pBatchMasterMsg
)
pMsg
->
pBatchMasterMsg
->
successed
++
;
}
else
{
mError
(
"msg:%p, app:%p stable:%s, failed to create in sdb, reason:%s"
,
pMsg
,
pMsg
->
rpcMsg
.
ahandle
,
pTable
->
info
.
tableId
,
tstrerror
(
code
));
SSdbRow
desc
=
{.
type
=
SDB_OPER_GLOBAL
,
.
pObj
=
pTable
,
.
pTable
=
tsSuperTableSdb
};
sdbDeleteRow
(
&
desc
);
if
(
pMsg
->
pBatchMasterMsg
)
pMsg
->
pBatchMasterMsg
->
received
++
;
}
// if super table create by batch msg, check done and send finished to client
if
(
pMsg
->
pBatchMasterMsg
)
{
if
(
pMsg
->
pBatchMasterMsg
->
successed
+
pMsg
->
pBatchMasterMsg
->
received
>=
pMsg
->
pBatchMasterMsg
->
expected
)
dnodeSendRpcMWriteRsp
(
pMsg
->
pBatchMasterMsg
,
code
);
}
return
code
;
...
...
src/query/inc/qSqlparser.h
浏览文件 @
0b6fd5c2
...
...
@@ -25,6 +25,7 @@ extern "C" {
#include "tstrbuild.h"
#include "ttoken.h"
#include "tvariant.h"
#include "tname.h"
#define ParseTOKENTYPE SStrToken
...
...
@@ -139,8 +140,11 @@ typedef struct SCreatedTableInfo {
typedef
struct
SCreateTableSql
{
SStrToken
name
;
// table name, create table [name] xxx
SStrToken
to
;
// create stream to anohter table
SStrToken
split
;
// split columns
int8_t
type
;
// create normal table/from super table/ stream
bool
existCheck
;
SName
toSName
;
struct
{
SArray
*
pTagColumns
;
// SArray<TAOS_FIELD>
...
...
@@ -313,6 +317,7 @@ SArray *setSubclause(SArray *pList, void *pSqlNode);
SArray
*
appendSelectClause
(
SArray
*
pList
,
void
*
pSubclause
);
void
setCreatedTableName
(
SSqlInfo
*
pInfo
,
SStrToken
*
pTableNameToken
,
SStrToken
*
pIfNotExists
);
void
setCreatedStreamOpt
(
SSqlInfo
*
pInfo
,
SStrToken
*
pTo
,
SStrToken
*
pSplit
);
void
SqlInfoDestroy
(
SSqlInfo
*
pInfo
);
...
...
src/query/inc/sql.y
浏览文件 @
0b6fd5c2
...
...
@@ -413,14 +413,28 @@ tagNamelist(A) ::= ids(X). {A = taosArrayInit(4, sizeof(SSt
// create stream
// create table table_name as select count(*) from super_table_name interval(time)
create_table_args(A) ::= ifnotexists(U) ids(V) cpxName(Z) AS select(S). {
create_table_args(A) ::= ifnotexists(U) ids(V) cpxName(Z)
to_opt(E) split_opt(F)
AS select(S). {
A = tSetCreateTableInfo(NULL, NULL, S, TSQL_CREATE_STREAM);
setSqlInfo(pInfo, A, NULL, TSDB_SQL_CREATE_TABLE);
setCreatedStreamOpt(pInfo, &E, &F);
V.n += Z.n;
setCreatedTableName(pInfo, &V, &U);
}
// to_opt
%type to_opt {SStrToken}
to_opt(A) ::= . {A.n = 0;}
to_opt(A) ::= TO ids(X) cpxName(Y). {
A = X;
A.n += Y.n;
}
// split_opt
%type to_split {SStrToken}
split_opt(A) ::= . {A.n = 0;}
split_opt(A) ::= SPLIT ids(X). { A = X;}
%type column{TAOS_FIELD}
%type columnlist{SArray*}
%destructor columnlist {taosArrayDestroy($$);}
...
...
src/query/src/qSqlParser.c
浏览文件 @
0b6fd5c2
...
...
@@ -1009,6 +1009,11 @@ void setCreatedTableName(SSqlInfo *pInfo, SStrToken *pTableNameToken, SStrToken
pInfo
->
pCreateTableInfo
->
existCheck
=
(
pIfNotExists
->
n
!=
0
);
}
void
setCreatedStreamOpt
(
SSqlInfo
*
pInfo
,
SStrToken
*
pTo
,
SStrToken
*
pSplit
)
{
pInfo
->
pCreateTableInfo
->
to
=
*
pTo
;
pInfo
->
pCreateTableInfo
->
split
=
*
pSplit
;
}
void
setDCLSqlElems
(
SSqlInfo
*
pInfo
,
int32_t
type
,
int32_t
nParam
,
...)
{
pInfo
->
type
=
type
;
if
(
nParam
==
0
)
{
...
...
src/query/src/queryMain.c
浏览文件 @
0b6fd5c2
...
...
@@ -220,6 +220,7 @@ bool qTableQuery(qinfo_t qinfo, uint64_t *qId) {
if
(
isQueryKilled
(
pQInfo
))
{
qDebug
(
"QInfo:0x%"
PRIx64
" it is already killed, abort"
,
pQInfo
->
qId
);
setQueryKilled
(
pQInfo
);
pQInfo
->
runtimeEnv
.
outputBuf
=
NULL
;
return
doBuildResCheck
(
pQInfo
);
}
...
...
@@ -692,4 +693,4 @@ bool qSolveCommitNoBlock(void* pRepo, void* pMgmt) {
}
qWarn
(
"pRepo=%p solve problem failed."
,
pRepo
);
return
false
;
}
\ No newline at end of file
}
src/query/src/sql.c
浏览文件 @
0b6fd5c2
/* This file is automatically generated by Lemon from input grammar
** source file "sql.y". */
/*
** 2000-05-29
**
...
...
@@ -24,7 +22,10 @@
** The following is the concatenation of all %include directives from the
** input grammar file:
*/
#include <stdio.h>
#include <assert.h>
/************ Begin %include sections from the grammar ************************/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
...
...
@@ -37,207 +38,11 @@
#include "tutil.h"
#include "tvariant.h"
/**************** End of %include directives **********************************/
/* These constants specify the various numeric values for terminal symbols.
***************** Begin token definitions *************************************/
#ifndef TK_ID
#define TK_ID 1
#define TK_BOOL 2
#define TK_TINYINT 3
#define TK_SMALLINT 4
#define TK_INTEGER 5
#define TK_BIGINT 6
#define TK_FLOAT 7
#define TK_DOUBLE 8
#define TK_STRING 9
#define TK_TIMESTAMP 10
#define TK_BINARY 11
#define TK_NCHAR 12
#define TK_OR 13
#define TK_AND 14
#define TK_NOT 15
#define TK_EQ 16
#define TK_NE 17
#define TK_ISNULL 18
#define TK_NOTNULL 19
#define TK_IS 20
#define TK_LIKE 21
#define TK_GLOB 22
#define TK_BETWEEN 23
#define TK_IN 24
#define TK_GT 25
#define TK_GE 26
#define TK_LT 27
#define TK_LE 28
#define TK_BITAND 29
#define TK_BITOR 30
#define TK_LSHIFT 31
#define TK_RSHIFT 32
#define TK_PLUS 33
#define TK_MINUS 34
#define TK_DIVIDE 35
#define TK_TIMES 36
#define TK_STAR 37
#define TK_SLASH 38
#define TK_REM 39
#define TK_CONCAT 40
#define TK_UMINUS 41
#define TK_UPLUS 42
#define TK_BITNOT 43
#define TK_SHOW 44
#define TK_DATABASES 45
#define TK_TOPICS 46
#define TK_FUNCTIONS 47
#define TK_MNODES 48
#define TK_DNODES 49
#define TK_ACCOUNTS 50
#define TK_USERS 51
#define TK_MODULES 52
#define TK_QUERIES 53
#define TK_CONNECTIONS 54
#define TK_STREAMS 55
#define TK_VARIABLES 56
#define TK_SCORES 57
#define TK_GRANTS 58
#define TK_VNODES 59
#define TK_IPTOKEN 60
#define TK_DOT 61
#define TK_CREATE 62
#define TK_TABLE 63
#define TK_STABLE 64
#define TK_DATABASE 65
#define TK_TABLES 66
#define TK_STABLES 67
#define TK_VGROUPS 68
#define TK_DROP 69
#define TK_TOPIC 70
#define TK_FUNCTION 71
#define TK_DNODE 72
#define TK_USER 73
#define TK_ACCOUNT 74
#define TK_USE 75
#define TK_DESCRIBE 76
#define TK_DESC 77
#define TK_ALTER 78
#define TK_PASS 79
#define TK_PRIVILEGE 80
#define TK_LOCAL 81
#define TK_COMPACT 82
#define TK_LP 83
#define TK_RP 84
#define TK_IF 85
#define TK_EXISTS 86
#define TK_AS 87
#define TK_OUTPUTTYPE 88
#define TK_AGGREGATE 89
#define TK_BUFSIZE 90
#define TK_PPS 91
#define TK_TSERIES 92
#define TK_DBS 93
#define TK_STORAGE 94
#define TK_QTIME 95
#define TK_CONNS 96
#define TK_STATE 97
#define TK_COMMA 98
#define TK_KEEP 99
#define TK_CACHE 100
#define TK_REPLICA 101
#define TK_QUORUM 102
#define TK_DAYS 103
#define TK_MINROWS 104
#define TK_MAXROWS 105
#define TK_BLOCKS 106
#define TK_CTIME 107
#define TK_WAL 108
#define TK_FSYNC 109
#define TK_COMP 110
#define TK_PRECISION 111
#define TK_UPDATE 112
#define TK_CACHELAST 113
#define TK_PARTITIONS 114
#define TK_UNSIGNED 115
#define TK_TAGS 116
#define TK_USING 117
#define TK_NULL 118
#define TK_NOW 119
#define TK_VARIABLE 120
#define TK_SELECT 121
#define TK_UNION 122
#define TK_ALL 123
#define TK_DISTINCT 124
#define TK_FROM 125
#define TK_INTERVAL 126
#define TK_EVERY 127
#define TK_SESSION 128
#define TK_STATE_WINDOW 129
#define TK_FILL 130
#define TK_SLIDING 131
#define TK_ORDER 132
#define TK_BY 133
#define TK_ASC 134
#define TK_GROUP 135
#define TK_HAVING 136
#define TK_LIMIT 137
#define TK_OFFSET 138
#define TK_SLIMIT 139
#define TK_SOFFSET 140
#define TK_WHERE 141
#define TK_RESET 142
#define TK_QUERY 143
#define TK_SYNCDB 144
#define TK_ADD 145
#define TK_COLUMN 146
#define TK_MODIFY 147
#define TK_TAG 148
#define TK_CHANGE 149
#define TK_SET 150
#define TK_KILL 151
#define TK_CONNECTION 152
#define TK_STREAM 153
#define TK_COLON 154
#define TK_ABORT 155
#define TK_AFTER 156
#define TK_ATTACH 157
#define TK_BEFORE 158
#define TK_BEGIN 159
#define TK_CASCADE 160
#define TK_CLUSTER 161
#define TK_CONFLICT 162
#define TK_COPY 163
#define TK_DEFERRED 164
#define TK_DELIMITERS 165
#define TK_DETACH 166
#define TK_EACH 167
#define TK_END 168
#define TK_EXPLAIN 169
#define TK_FAIL 170
#define TK_FOR 171
#define TK_IGNORE 172
#define TK_IMMEDIATE 173
#define TK_INITIALLY 174
#define TK_INSTEAD 175
#define TK_MATCH 176
#define TK_KEY 177
#define TK_OF 178
#define TK_RAISE 179
#define TK_REPLACE 180
#define TK_RESTRICT 181
#define TK_ROW 182
#define TK_STATEMENT 183
#define TK_TRIGGER 184
#define TK_VIEW 185
#define TK_SEMI 186
#define TK_NONE 187
#define TK_PREV 188
#define TK_LINEAR 189
#define TK_IMPORT 190
#define TK_TBNAME 191
#define TK_JOIN 192
#define TK_INSERT 193
#define TK_INTO 194
#define TK_VALUES 195
#define TK_FILE 196
#endif
/**************** End token definitions ***************************************/
/* These constants specify the various numeric values for terminal symbols
** in a format understandable to "makeheaders". This section is blank unless
** "lemon" is run with the "-m" command-line option.
***************** Begin makeheaders token definitions *************************/
/**************** End makeheaders token definitions ***************************/
/* The next sections is a series of control #defines.
** various aspects of the generated parser.
...
...
@@ -295,29 +100,29 @@
#endif
/************* Begin control #defines *****************************************/
#define YYCODETYPE unsigned short int
#define YYNOCODE 2
78
#define YYNOCODE 2
83
#define YYACTIONTYPE unsigned short int
#define ParseTOKENTYPE SStrToken
typedef
union
{
int
yyinit
;
ParseTOKENTYPE
yy0
;
S
RelationInfo
*
yy8
;
S
WindowStateVal
yy40
;
S
SqlNode
*
yy56
;
SCreateDbInfo
yy90
;
int
yy96
;
int
32_t
yy104
;
S
SessionWindowVal
yy147
;
SCreate
dTableInfo
yy152
;
SLimitVal
yy166
;
SCreateAcctInfo
yy171
;
TAOS_FIELD
yy183
;
int64_t
yy325
;
S
IntervalVal
yy400
;
S
Array
*
yy42
1
;
tVariant
yy430
;
SCreate
TableSql
*
yy438
;
tSqlExpr
*
yy439
;
S
IntervalVal
yy66
;
S
CreateTableSql
*
yy86
;
S
Array
*
yy89
;
tVariant
yy112
;
int
32_t
yy130
;
int
64_t
yy145
;
S
RelationInfo
*
yy166
;
SCreate
AcctInfo
yy307
;
tSqlExpr
*
yy342
;
int
yy346
;
SLimitVal
yy372
;
SSqlNode
*
yy378
;
S
WindowStateVal
yy392
;
S
SessionWindowVal
yy43
1
;
TAOS_FIELD
yy465
;
SCreate
DbInfo
yy470
;
SCreatedTableInfo
yy506
;
}
YYMINORTYPE
;
#ifndef YYSTACKDEPTH
#define YYSTACKDEPTH 100
...
...
@@ -333,18 +138,17 @@ typedef union {
#define ParseCTX_FETCH
#define ParseCTX_STORE
#define YYFALLBACK 1
#define YYNSTATE 366
#define YYNRULE 293
#define YYNRULE_WITH_ACTION 293
#define YYNTOKEN 197
#define YY_MAX_SHIFT 365
#define YY_MIN_SHIFTREDUCE 575
#define YY_MAX_SHIFTREDUCE 867
#define YY_ERROR_ACTION 868
#define YY_ACCEPT_ACTION 869
#define YY_NO_ACTION 870
#define YY_MIN_REDUCE 871
#define YY_MAX_REDUCE 1163
#define YYNSTATE 371
#define YYNRULE 297
#define YYNTOKEN 199
#define YY_MAX_SHIFT 370
#define YY_MIN_SHIFTREDUCE 582
#define YY_MAX_SHIFTREDUCE 878
#define YY_ERROR_ACTION 879
#define YY_ACCEPT_ACTION 880
#define YY_NO_ACTION 881
#define YY_MIN_REDUCE 882
#define YY_MAX_REDUCE 1178
/************* End control #defines *******************************************/
#define YY_NLOOKAHEAD ((int)(sizeof(yy_lookahead)/sizeof(yy_lookahead[0])))
...
...
@@ -411,290 +215,293 @@ typedef union {
** yy_default[] Default action for each state.
**
*********** Begin parsing tables **********************************************/
#define YY_ACTTAB_COUNT (76
1
)
#define YY_ACTTAB_COUNT (76
8
)
static
const
YYACTIONTYPE
yy_action
[]
=
{
/* 0 */
169
,
626
,
235
,
626
,
229
,
363
,
1026
,
1050
,
241
,
627
,
/* 10 */
246
,
627
,
1026
,
57
,
58
,
153
,
61
,
62
,
281
,
38
,
/* 20 */
2
49
,
51
,
626
,
60
,
319
,
65
,
63
,
66
,
64
,
996
,
/* 30 */
6
27
,
994
,
995
,
56
,
55
,
160
,
997
,
54
,
53
,
52
,
/* 40 */
998
,
160
,
999
,
1000
,
869
,
365
,
1041
,
576
,
577
,
578
,
/* 50 */
5
79
,
580
,
581
,
582
,
583
,
584
,
585
,
586
,
587
,
588
,
/* 60 */
5
89
,
364
,
232
,
231
,
230
,
57
,
58
,
1023
,
61
,
62
,
/* 70 */
2
07
,
662
,
249
,
51
,
1047
,
60
,
319
,
65
,
63
,
66
,
/* 80 */
64
,
11
40
,
23
,
279
,
278
,
56
,
55
,
80
,
98
,
54
,
/* 90 */
53
,
52
,
57
,
58
,
1
041
,
61
,
62
,
207
,
1041
,
249
,
/* 100 */
51
,
1020
,
60
,
319
,
65
,
63
,
66
,
64
,
1139
,
1089
,
/* 110 */
272
,
291
,
56
,
55
,
233
,
1088
,
54
,
53
,
52
,
57
,
/* 120 */
59
,
243
,
61
,
62
,
1014
,
1026
,
249
,
51
,
95
,
60
,
/* 130 */
3
19
,
65
,
63
,
66
,
64
,
812
,
806
,
815
,
317
,
56
,
/* 140 */
55
,
16
0
,
123
,
54
,
53
,
52
,
58
,
242
,
61
,
62
,
/* 150 */
771
,
772
,
249
,
51
,
351
,
60
,
319
,
65
,
63
,
66
,
/* 160 */
64
,
10
09
,
1010
,
35
,
1013
,
56
,
55
,
86
,
245
,
54
,
/* 170 */
53
,
52
,
44
,
3
15
,
358
,
357
,
314
,
313
,
312
,
356
,
/* 180 */
31
1
,
310
,
309
,
355
,
308
,
354
,
353
,
988
,
976
,
977
,
/* 190 */
9
78
,
979
,
980
,
981
,
982
,
983
,
984
,
985
,
986
,
987
,
/* 200 */
989
,
990
,
61
,
62
,
24
,
45
,
249
,
51
,
264
,
60
,
/* 210 */
3
19
,
65
,
63
,
66
,
64
,
92
,
1012
,
268
,
267
,
56
,
/* 220 */
55
,
204
,
210
,
54
,
53
,
52
,
248
,
821
,
207
,
216
,
/* 230 */
8
10
,
741
,
813
,
742
,
816
,
137
,
136
,
135
,
215
,
1140
,
/* 240 */
2
48
,
821
,
324
,
86
,
810
,
811
,
813
,
814
,
816
,
250
,
/* 250 */
819
,
205
,
65
,
63
,
66
,
64
,
919
,
160
,
227
,
228
,
/* 260 */
56
,
55
,
32
0
,
188
,
54
,
53
,
52
,
5
,
41
,
178
,
/* 270 */
259
,
626
,
227
,
228
,
177
,
104
,
109
,
100
,
108
,
627
,
/* 280 */
174
,
45
,
259
,
749
,
734
,
259
,
38
,
731
,
38
,
732
,
/* 290 */
25
2
,
733
,
175
,
304
,
351
,
1024
,
121
,
115
,
126
,
258
,
/* 300 */
2
11
,
317
,
271
,
125
,
78
,
131
,
134
,
124
,
67
,
20
7
,
/* 310 */
9
,
223
,
359
,
957
,
128
,
254
,
255
,
198
,
196
,
194
,
/* 320 */
1140
,
38
,
67
,
1025
,
193
,
141
,
140
,
139
,
138
,
293
,
/* 330 */
239
,
91
,
240
,
38
,
1023
,
44
,
1023
,
358
,
357
,
34
,
/* 340 */
38
,
38
,
356
,
822
,
817
,
818
,
355
,
38
,
354
,
353
,
/* 350 */
56
,
55
,
752
,
29
,
54
,
53
,
52
,
822
,
817
,
818
,
/* 360 */
82
0
,
38
,
38
,
38
,
38
,
328
,
253
,
788
,
251
,
1023
,
/* 370 */
327
,
326
,
299
,
93
,
710
,
260
,
273
,
257
,
321
,
336
,
/* 380 */
335
,
1022
,
14
,
79
,
329
,
330
,
94
,
81
,
1023
,
1023
,
/* 390 */
39
,
331
,
54
,
53
,
52
,
1023
,
362
,
361
,
603
,
1159
,
/* 400 */
735
,
256
,
341
,
340
,
83
,
337
,
338
,
339
,
343
,
1023
,
/* 410 */
1023
,
1023
,
1023
,
151
,
149
,
148
,
97
,
1011
,
929
,
920
,
/* 420 */
1
,
176
,
3
,
189
,
787
,
188
,
188
,
84
,
808
,
768
,
/* 430 */
778
,
779
,
71
,
74
,
247
,
720
,
296
,
722
,
298
,
75
6
,
/* 440 */
721
,
842
,
275
,
155
,
68
,
26
,
823
,
1136
,
625
,
39
,
/* 450 */
39
,
68
,
96
,
77
,
68
,
25
,
6
,
16
,
1135
,
15
,
/* 460 */
25
,
739
,
25
,
740
,
809
,
275
,
1134
,
114
,
18
,
113
,
/* 470 */
1
7
,
333
,
332
,
75
,
72
,
20
,
225
,
19
,
120
,
269
,
/* 480 */
119
,
825
,
22
,
226
,
21
,
709
,
133
,
132
,
208
,
209
,
/* 490 */
21
2
,
1151
,
1099
,
152
,
206
,
213
,
1098
,
214
,
218
,
237
,
/* 500 */
2
19
,
220
,
1095
,
217
,
203
,
1094
,
238
,
342
,
1049
,
48
,
/* 510 */
1060
,
1042
,
1057
,
1058
,
1062
,
150
,
276
,
274
,
154
,
159
,
/* 520 */
1081
,
1080
,
170
,
287
,
1021
,
171
,
1019
,
172
,
173
,
767
,
/* 530 */
166
,
934
,
280
,
301
,
1039
,
234
,
162
,
302
,
303
,
306
,
/* 540 */
307
,
46
,
201
,
282
,
42
,
284
,
161
,
294
,
318
,
928
,
/* 550 */
76
,
73
,
50
,
163
,
292
,
164
,
290
,
165
,
325
,
1158
,
/* 560 */
11
1
,
1157
,
288
,
286
,
167
,
1154
,
179
,
334
,
1150
,
49
,
/* 570 */
283
,
117
,
1149
,
305
,
1146
,
180
,
954
,
43
,
40
,
47
,
/* 580 */
202
,
916
,
127
,
914
,
129
,
130
,
912
,
911
,
261
,
191
,
/* 590 */
192
,
908
,
907
,
906
,
905
,
904
,
903
,
902
,
195
,
197
,
/* 600 */
898
,
896
,
894
,
199
,
891
,
200
,
352
,
82
,
122
,
87
,
/* 610 */
344
,
285
,
1082
,
345
,
346
,
347
,
348
,
349
,
350
,
224
,
/* 620 */
360
,
244
,
300
,
867
,
262
,
263
,
866
,
265
,
266
,
865
,
/* 630 */
8
48
,
221
,
105
,
933
,
932
,
222
,
106
,
847
,
270
,
275
,
/* 640 */
295
,
10
,
85
,
744
,
277
,
88
,
30
,
910
,
909
,
901
,
/* 650 */
18
2
,
955
,
185
,
142
,
183
,
181
,
900
,
187
,
184
,
186
,
/* 660 */
14
3
,
144
,
992
,
145
,
893
,
892
,
769
,
956
,
168
,
3
3
,
/* 670 */
2
,
4
,
156
,
158
,
780
,
157
,
236
,
774
,
89
,
90
,
/* 680 */
1002
,
776
,
289
,
31
,
11
,
32
,
12
,
13
,
27
,
297
,
/* 690 */
28
,
97
,
99
,
102
,
36
,
101
,
640
,
37
,
103
,
675
,
/* 700 */
6
73
,
672
,
671
,
669
,
668
,
667
,
664
,
316
,
107
,
7
,
/* 710 */
8
,
630
,
824
,
322
,
323
,
110
,
826
,
112
,
69
,
70
,
/* 720 */
738
,
737
,
712
,
711
,
116
,
118
,
708
,
656
,
39
,
654
,
/* 730 */
646
,
652
,
648
,
650
,
644
,
642
,
678
,
677
,
676
,
674
,
/* 740 */
6
70
,
666
,
665
,
190
,
628
,
593
,
591
,
871
,
870
,
870
,
/* 750 */
870
,
870
,
870
,
870
,
870
,
870
,
870
,
870
,
870
,
146
,
/* 760 */
147
,
/* 0 */
250
,
633
,
633
,
633
,
233
,
368
,
23
,
249
,
254
,
634
,
/* 10 */
634
,
634
,
239
,
57
,
58
,
669
,
61
,
62
,
1065
,
1041
,
/* 20 */
2
53
,
51
,
633
,
60
,
324
,
65
,
63
,
66
,
64
,
1007
,
/* 30 */
6
34
,
1005
,
1006
,
56
,
55
,
209
,
1008
,
54
,
53
,
52
,
/* 40 */
1009
,
210
,
1010
,
1011
,
164
,
880
,
370
,
583
,
584
,
585
,
/* 50 */
5
86
,
587
,
588
,
589
,
590
,
591
,
592
,
593
,
594
,
595
,
/* 60 */
5
96
,
369
,
216
,
212
,
234
,
57
,
58
,
1151
,
61
,
62
,
/* 70 */
2
12
,
212
,
253
,
51
,
1155
,
60
,
324
,
65
,
63
,
66
,
/* 80 */
64
,
11
55
,
1155
,
212
,
29
,
56
,
55
,
83
,
1062
,
54
,
/* 90 */
53
,
52
,
57
,
58
,
1
154
,
61
,
62
,
1056
,
1056
,
253
,
/* 100 */
51
,
101
,
60
,
324
,
65
,
63
,
66
,
64
,
54
,
53
,
/* 110 */
52
,
89
,
56
,
55
,
276
,
236
,
54
,
53
,
52
,
57
,
/* 120 */
59
,
1103
,
61
,
62
,
364
,
968
,
253
,
51
,
98
,
60
,
/* 130 */
3
24
,
65
,
63
,
66
,
64
,
245
,
817
,
1025
,
164
,
56
,
/* 140 */
55
,
16
4
,
1041
,
54
,
53
,
52
,
58
,
247
,
61
,
62
,
/* 150 */
1056
,
45
,
253
,
51
,
1041
,
60
,
324
,
65
,
63
,
66
,
/* 160 */
64
,
10
20
,
1021
,
35
,
1024
,
56
,
55
,
237
,
164
,
54
,
/* 170 */
53
,
52
,
44
,
3
20
,
363
,
362
,
319
,
318
,
317
,
361
,
/* 180 */
31
6
,
315
,
314
,
360
,
313
,
359
,
358
,
999
,
987
,
988
,
/* 190 */
9
89
,
990
,
991
,
992
,
993
,
994
,
995
,
996
,
997
,
998
,
/* 200 */
1000
,
1001
,
61
,
62
,
24
,
38
,
253
,
51
,
322
,
60
,
/* 210 */
3
24
,
65
,
63
,
66
,
64
,
1104
,
297
,
295
,
94
,
56
,
/* 220 */
55
,
173
,
215
,
54
,
53
,
52
,
252
,
832
,
74
,
221
,
/* 230 */
8
21
,
157
,
824
,
96
,
827
,
140
,
139
,
138
,
220
,
285
,
/* 240 */
2
52
,
832
,
329
,
89
,
821
,
95
,
824
,
84
,
827
,
235
,
/* 250 */
782
,
783
,
65
,
63
,
66
,
64
,
1038
,
14
,
231
,
232
,
/* 260 */
56
,
55
,
32
5
,
38
,
54
,
53
,
52
,
5
,
41
,
183
,
/* 270 */
75
,
263
,
231
,
232
,
182
,
107
,
112
,
103
,
111
,
745
,
/* 280 */
799
,
179
,
742
,
45
,
743
,
263
,
744
,
124
,
118
,
129
,
/* 290 */
25
6
,
100
,
81
,
309
,
128
,
180
,
134
,
137
,
127
,
823
,
/* 300 */
2
62
,
826
,
283
,
282
,
275
,
131
,
79
,
243
,
67
,
71
7
,
/* 310 */
258
,
259
,
251
,
228
,
1038
,
763
,
203
,
201
,
199
,
822
,
/* 320 */
38
,
825
,
67
,
198
,
144
,
143
,
142
,
141
,
1023
,
44
,
/* 330 */
38
,
363
,
362
,
38
,
6
,
38
,
361
,
346
,
345
,
798
,
/* 340 */
360
,
38
,
359
,
358
,
38
,
833
,
828
,
829
,
1031
,
38
,
/* 350 */
56
,
55
,
38
,
268
,
54
,
53
,
52
,
38
,
38
,
833
,
/* 360 */
82
8
,
829
,
272
,
271
,
244
,
367
,
366
,
610
,
257
,
930
,
/* 370 */
255
,
1038
,
332
,
331
,
333
,
126
,
193
,
334
,
264
,
335
,
/* 380 */
261
,
1038
,
341
,
340
,
1038
,
336
,
1038
,
356
,
342
,
154
,
/* 390 */
152
,
151
,
1038
,
343
,
246
,
1038
,
344
,
746
,
260
,
80
,
/* 400 */
1038
,
263
,
348
,
1038
,
767
,
940
,
760
,
931
,
1037
,
1038
,
/* 410 */
71
,
1039
,
193
,
322
,
193
,
277
,
830
,
1
,
181
,
3
,
/* 420 */
194
,
86
,
87
,
779
,
789
,
790
,
727
,
301
,
729
,
39
,
/* 430 */
303
,
728
,
34
,
1022
,
853
,
9
,
831
,
159
,
68
,
2
6
,
/* 440 */
39
,
39
,
68
,
834
,
99
,
68
,
819
,
326
,
25
,
632
,
/* 450 */
16
,
117
,
15
,
116
,
72
,
338
,
337
,
25
,
18
,
78
,
/* 460 */
17
,
279
,
279
,
25
,
752
,
304
,
753
,
750
,
20
,
751
,
/* 470 */
1
9
,
123
,
22
,
122
,
21
,
136
,
135
,
356
,
1114
,
153
,
/* 480 */
1150
,
1149
,
820
,
229
,
230
,
1113
,
213
,
214
,
217
,
211
,
/* 490 */
21
8
,
716
,
1040
,
219
,
223
,
1174
,
1166
,
224
,
241
,
225
,
/* 500 */
2
22
,
1110
,
1109
,
208
,
242
,
175
,
347
,
273
,
155
,
156
,
/* 510 */
48
,
1036
,
1054
,
1064
,
1096
,
1075
,
1095
,
1072
,
1073
,
1057
,
/* 520 */
280
,
1077
,
174
,
158
,
163
,
1032
,
299
,
291
,
165
,
176
,
/* 530 */
778
,
1030
,
177
,
284
,
178
,
945
,
306
,
307
,
308
,
238
,
/* 540 */
166
,
170
,
286
,
167
,
168
,
288
,
298
,
311
,
296
,
76
,
/* 550 */
312
,
50
,
836
,
46
,
206
,
42
,
323
,
939
,
330
,
1173
,
/* 560 */
11
4
,
73
,
1172
,
1169
,
184
,
339
,
1165
,
294
,
120
,
1164
,
/* 570 */
1161
,
185
,
965
,
43
,
40
,
47
,
207
,
927
,
292
,
130
,
/* 580 */
925
,
132
,
133
,
923
,
922
,
265
,
196
,
197
,
290
,
919
,
/* 590 */
918
,
917
,
916
,
915
,
914
,
913
,
200
,
202
,
287
,
909
,
/* 600 */
907
,
905
,
204
,
902
,
205
,
82
,
278
,
1034
,
85
,
90
,
/* 610 */
289
,
49
,
1097
,
310
,
357
,
125
,
349
,
350
,
351
,
352
,
/* 620 */
77
,
354
,
353
,
355
,
248
,
365
,
305
,
878
,
266
,
267
,
/* 630 */
8
77
,
226
,
227
,
269
,
270
,
876
,
108
,
944
,
943
,
109
,
/* 640 */
859
,
858
,
274
,
279
,
300
,
921
,
920
,
10
,
30
,
912
,
/* 650 */
18
8
,
88
,
145
,
966
,
186
,
191
,
187
,
189
,
190
,
192
,
/* 660 */
14
6
,
147
,
2
,
911
,
967
,
148
,
1003
,
904
,
4
,
90
3
,
/* 670 */
755
,
281
,
91
,
33
,
780
,
171
,
169
,
160
,
172
,
1013
,
/* 680 */
791
,
161
,
162
,
785
,
92
,
240
,
787
,
93
,
293
,
31
,
/* 690 */
11
,
32
,
12
,
97
,
13
,
27
,
302
,
28
,
100
,
102
,
/* 700 */
6
47
,
36
,
104
,
105
,
37
,
106
,
682
,
680
,
679
,
678
,
/* 710 */
676
,
675
,
674
,
671
,
637
,
321
,
110
,
7
,
327
,
835
,
/* 720 */
837
,
8
,
328
,
719
,
39
,
69
,
113
,
115
,
70
,
749
,
/* 730 */
748
,
718
,
119
,
121
,
715
,
663
,
661
,
653
,
659
,
655
,
/* 740 */
6
57
,
651
,
649
,
685
,
684
,
683
,
681
,
677
,
673
,
672
,
/* 750 */
195
,
635
,
600
,
598
,
882
,
881
,
881
,
881
,
881
,
881
,
/* 760 */
881
,
881
,
881
,
881
,
881
,
881
,
149
,
150
,
};
static
const
YYCODETYPE
yy_lookahead
[]
=
{
/* 0 */
2
53
,
1
,
245
,
1
,
199
,
200
,
249
,
200
,
245
,
9
,
/* 10 */
206
,
9
,
249
,
13
,
14
,
200
,
16
,
17
,
271
,
200
,
/* 20 */
20
,
21
,
1
,
23
,
24
,
25
,
26
,
27
,
28
,
22
3
,
/* 30 */
9
,
22
5
,
226
,
33
,
34
,
200
,
230
,
37
,
38
,
39
,
/* 40 */
23
4
,
200
,
236
,
237
,
197
,
198
,
247
,
45
,
46
,
47
,
/* 0 */
2
08
,
1
,
1
,
1
,
201
,
202
,
271
,
208
,
208
,
9
,
/* 10 */
9
,
9
,
247
,
13
,
14
,
5
,
16
,
17
,
202
,
254
,
/* 20 */
20
,
21
,
1
,
23
,
24
,
25
,
26
,
27
,
28
,
22
5
,
/* 30 */
9
,
22
7
,
228
,
33
,
34
,
271
,
232
,
37
,
38
,
39
,
/* 40 */
23
6
,
271
,
238
,
239
,
202
,
199
,
200
,
45
,
46
,
47
,
/* 50 */
48
,
49
,
50
,
51
,
52
,
53
,
54
,
55
,
56
,
57
,
/* 60 */
58
,
59
,
2
63
,
244
,
62
,
13
,
14
,
248
,
16
,
17
,
/* 70 */
2
66
,
5
,
20
,
21
,
267
,
23
,
24
,
25
,
26
,
27
,
/* 80 */
28
,
2
77
,
266
,
268
,
269
,
33
,
34
,
87
,
207
,
37
,
/* 90 */
38
,
39
,
13
,
14
,
2
47
,
16
,
17
,
266
,
247
,
20
,
/* 100 */
21
,
20
0
,
23
,
24
,
25
,
26
,
27
,
28
,
277
,
274
,
/* 110 */
263
,
276
,
33
,
34
,
263
,
274
,
37
,
38
,
39
,
13
,
/* 120 */
14
,
2
45
,
16
,
17
,
243
,
249
,
20
,
21
,
207
,
23
,
/* 130 */
24
,
25
,
26
,
27
,
28
,
5
,
84
,
7
,
85
,
33
,
/* 140 */
34
,
20
0
,
79
,
37
,
38
,
39
,
14
,
246
,
16
,
17
,
/* 150 */
126
,
127
,
20
,
21
,
91
,
23
,
24
,
25
,
26
,
27
,
/* 160 */
28
,
24
0
,
241
,
242
,
243
,
33
,
34
,
83
,
206
,
37
,
/* 60 */
58
,
59
,
2
71
,
271
,
62
,
13
,
14
,
271
,
16
,
17
,
/* 70 */
2
71
,
271
,
20
,
21
,
282
,
23
,
24
,
25
,
26
,
27
,
/* 80 */
28
,
2
82
,
282
,
271
,
83
,
33
,
34
,
87
,
272
,
37
,
/* 90 */
38
,
39
,
13
,
14
,
2
82
,
16
,
17
,
251
,
251
,
20
,
/* 100 */
21
,
20
9
,
23
,
24
,
25
,
26
,
27
,
28
,
37
,
38
,
/* 110 */
39
,
83
,
33
,
34
,
268
,
268
,
37
,
38
,
39
,
13
,
/* 120 */
14
,
2
79
,
16
,
17
,
223
,
224
,
20
,
21
,
209
,
23
,
/* 130 */
24
,
25
,
26
,
27
,
28
,
247
,
84
,
245
,
202
,
33
,
/* 140 */
34
,
20
2
,
254
,
37
,
38
,
39
,
14
,
247
,
16
,
17
,
/* 150 */
251
,
123
,
20
,
21
,
254
,
23
,
24
,
25
,
26
,
27
,
/* 160 */
28
,
24
2
,
243
,
244
,
245
,
33
,
34
,
268
,
202
,
37
,
/* 170 */
38
,
39
,
99
,
100
,
101
,
102
,
103
,
104
,
105
,
106
,
/* 180 */
107
,
108
,
109
,
110
,
111
,
112
,
113
,
223
,
224
,
225
,
/* 190 */
226
,
227
,
228
,
229
,
230
,
231
,
232
,
233
,
234
,
235
,
/* 200 */
236
,
237
,
16
,
17
,
44
,
121
,
20
,
21
,
143
,
23
,
/* 210 */
24
,
25
,
26
,
27
,
28
,
274
,
0
,
152
,
153
,
33
,
/* 220 */
34
,
266
,
62
,
37
,
38
,
39
,
1
,
2
,
266
,
69
,
/* 230 */
5
,
5
,
7
,
7
,
9
,
75
,
76
,
77
,
78
,
277
,
/* 240 */
1
,
2
,
82
,
83
,
5
,
5
,
7
,
7
,
9
,
206
,
/* 250 */
120
,
266
,
25
,
26
,
27
,
28
,
205
,
200
,
33
,
34
,
/* 260 */
33
,
34
,
37
,
212
,
37
,
38
,
39
,
63
,
64
,
65
,
/* 270 */
200
,
1
,
33
,
34
,
70
,
71
,
72
,
73
,
74
,
9
,
/* 280 */
210
,
121
,
200
,
98
,
2
,
200
,
200
,
5
,
200
,
7
,
/* 290 */
69
,
9
,
210
,
89
,
91
,
210
,
63
,
64
,
65
,
69
,
/* 300 */
266
,
85
,
142
,
70
,
144
,
72
,
73
,
74
,
83
,
266
,
/* 310 */
125
,
151
,
221
,
222
,
81
,
33
,
34
,
63
,
64
,
65
,
/* 320 */
277
,
200
,
83
,
249
,
70
,
71
,
72
,
73
,
74
,
272
,
/* 330 */
244
,
274
,
244
,
200
,
248
,
99
,
248
,
101
,
102
,
83
,
/* 340 */
200
,
200
,
106
,
118
,
119
,
120
,
110
,
200
,
112
,
113
,
/* 350 */
33
,
34
,
37
,
83
,
37
,
38
,
39
,
118
,
119
,
120
,
/* 360 */
120
,
200
,
200
,
200
,
200
,
244
,
145
,
77
,
147
,
248
,
/* 370 */
149
,
150
,
116
,
250
,
5
,
145
,
84
,
147
,
15
,
149
,
/* 380 */
150
,
248
,
83
,
207
,
244
,
244
,
87
,
264
,
248
,
248
,
/* 390 */
98
,
244
,
37
,
38
,
39
,
248
,
66
,
67
,
68
,
249
,
/* 400 */
118
,
119
,
33
,
34
,
84
,
244
,
244
,
244
,
244
,
248
,
/* 410 */
248
,
248
,
248
,
63
,
64
,
65
,
117
,
241
,
205
,
205
,
/* 420 */
208
,
209
,
203
,
204
,
134
,
212
,
212
,
84
,
1
,
84
,
/* 430 */
84
,
84
,
98
,
98
,
61
,
84
,
84
,
84
,
84
,
124
,
/* 440 */
84
,
84
,
122
,
98
,
98
,
98
,
84
,
266
,
84
,
98
,
/* 450 */
98
,
98
,
98
,
83
,
98
,
98
,
83
,
146
,
266
,
148
,
/* 460 */
98
,
5
,
98
,
7
,
37
,
122
,
266
,
146
,
146
,
148
,
/* 470 */
148
,
33
,
34
,
138
,
140
,
146
,
266
,
148
,
146
,
200
,
/* 480 */
148
,
118
,
146
,
266
,
148
,
115
,
79
,
80
,
266
,
266
,
/* 490 */
266
,
249
,
239
,
200
,
266
,
266
,
239
,
266
,
266
,
239
,
/* 500 */
266
,
266
,
239
,
266
,
266
,
239
,
239
,
239
,
200
,
265
,
/* 510 */
200
,
247
,
200
,
200
,
200
,
61
,
247
,
201
,
200
,
200
,
/* 520 */
275
,
275
,
251
,
200
,
247
,
200
,
200
,
200
,
200
,
120
,
/* 530 */
256
,
200
,
270
,
200
,
262
,
270
,
260
,
200
,
200
,
200
,
/* 540 */
200
,
200
,
200
,
270
,
200
,
270
,
261
,
132
,
200
,
200
,
/* 550 */
137
,
139
,
136
,
259
,
135
,
258
,
130
,
257
,
200
,
200
,
/* 560 */
200
,
200
,
129
,
128
,
255
,
200
,
200
,
200
,
200
,
141
,
/* 570 */
131
,
200
,
200
,
90
,
200
,
200
,
200
,
200
,
200
,
200
,
/* 580 */
200
,
200
,
200
,
200
,
200
,
200
,
200
,
200
,
200
,
200
,
/* 590 */
200
,
200
,
200
,
200
,
200
,
200
,
200
,
200
,
200
,
200
,
/* 600 */
200
,
200
,
200
,
200
,
200
,
200
,
114
,
201
,
97
,
201
,
/* 610 */
96
,
201
,
201
,
51
,
93
,
95
,
55
,
94
,
92
,
201
,
/* 620 */
85
,
201
,
201
,
5
,
154
,
5
,
5
,
154
,
5
,
5
,
/* 630 */
101
,
201
,
207
,
211
,
211
,
201
,
207
,
100
,
143
,
122
,
/* 640 */
116
,
83
,
123
,
84
,
98
,
98
,
83
,
201
,
201
,
201
,
/* 650 */
218
,
220
,
215
,
202
,
214
,
219
,
201
,
213
,
217
,
216
,
/* 660 */
202
,
202
,
238
,
202
,
201
,
201
,
84
,
222
,
254
,
252
,
/* 670 */
208
,
203
,
83
,
98
,
84
,
83
,
1
,
84
,
83
,
83
,
/* 680 */
238
,
84
,
83
,
98
,
133
,
98
,
133
,
83
,
83
,
116
,
/* 690 */
83
,
117
,
79
,
71
,
88
,
87
,
5
,
88
,
87
,
9
,
/* 700 */
5
,
5
,
5
,
5
,
5
,
5
,
5
,
15
,
79
,
83
,
/* 710 */
83
,
86
,
84
,
24
,
59
,
148
,
118
,
148
,
16
,
16
,
/* 720 */
120
,
120
,
5
,
5
,
148
,
148
,
84
,
5
,
98
,
5
,
/* 730 */
5
,
5
,
5
,
5
,
5
,
5
,
5
,
5
,
5
,
5
,
/* 740 */
5
,
5
,
5
,
98
,
86
,
61
,
60
,
0
,
278
,
278
,
/* 750 */
278
,
278
,
278
,
278
,
278
,
278
,
278
,
278
,
278
,
21
,
/* 760 */
21
,
278
,
278
,
278
,
278
,
278
,
278
,
278
,
278
,
278
,
/* 770 */
278
,
278
,
278
,
278
,
278
,
278
,
278
,
278
,
278
,
278
,
/* 780 */
278
,
278
,
278
,
278
,
278
,
278
,
278
,
278
,
278
,
278
,
/* 790 */
278
,
278
,
278
,
278
,
278
,
278
,
278
,
278
,
278
,
278
,
/* 800 */
278
,
278
,
278
,
278
,
278
,
278
,
278
,
278
,
278
,
278
,
/* 810 */
278
,
278
,
278
,
278
,
278
,
278
,
278
,
278
,
278
,
278
,
/* 820 */
278
,
278
,
278
,
278
,
278
,
278
,
278
,
278
,
278
,
278
,
/* 830 */
278
,
278
,
278
,
278
,
278
,
278
,
278
,
278
,
278
,
278
,
/* 840 */
278
,
278
,
278
,
278
,
278
,
278
,
278
,
278
,
278
,
278
,
/* 850 */
278
,
278
,
278
,
278
,
278
,
278
,
278
,
278
,
278
,
278
,
/* 860 */
278
,
278
,
278
,
278
,
278
,
278
,
278
,
278
,
278
,
278
,
/* 870 */
278
,
278
,
278
,
278
,
278
,
278
,
278
,
278
,
278
,
278
,
/* 880 */
278
,
278
,
278
,
278
,
278
,
278
,
278
,
278
,
278
,
278
,
/* 890 */
278
,
278
,
278
,
278
,
278
,
278
,
278
,
278
,
278
,
278
,
/* 900 */
278
,
278
,
278
,
278
,
278
,
278
,
278
,
278
,
278
,
278
,
/* 910 */
278
,
278
,
278
,
278
,
278
,
278
,
278
,
278
,
278
,
278
,
/* 920 */
278
,
278
,
278
,
278
,
278
,
278
,
278
,
278
,
278
,
278
,
/* 930 */
278
,
278
,
278
,
278
,
278
,
278
,
278
,
278
,
278
,
278
,
/* 940 */
278
,
278
,
278
,
278
,
278
,
278
,
278
,
278
,
278
,
278
,
/* 950 */
278
,
278
,
278
,
278
,
278
,
278
,
278
,
278
,
/* 180 */
107
,
108
,
109
,
110
,
111
,
112
,
113
,
225
,
226
,
227
,
/* 190 */
228
,
229
,
230
,
231
,
232
,
233
,
234
,
235
,
236
,
237
,
/* 200 */
238
,
239
,
16
,
17
,
44
,
202
,
20
,
21
,
85
,
23
,
/* 210 */
24
,
25
,
26
,
27
,
28
,
279
,
277
,
281
,
279
,
33
,
/* 220 */
34
,
258
,
62
,
37
,
38
,
39
,
1
,
2
,
98
,
69
,
/* 230 */
5
,
202
,
7
,
255
,
9
,
75
,
76
,
77
,
78
,
276
,
/* 240 */
1
,
2
,
82
,
83
,
5
,
279
,
7
,
269
,
9
,
246
,
/* 250 */
128
,
129
,
25
,
26
,
27
,
28
,
253
,
83
,
33
,
34
,
/* 260 */
33
,
34
,
37
,
202
,
37
,
38
,
39
,
63
,
64
,
65
,
/* 270 */
140
,
202
,
33
,
34
,
70
,
71
,
72
,
73
,
74
,
2
,
/* 280 */
77
,
212
,
5
,
123
,
7
,
202
,
9
,
63
,
64
,
65
,
/* 290 */
69
,
117
,
118
,
89
,
70
,
212
,
72
,
73
,
74
,
5
,
/* 300 */
69
,
7
,
273
,
274
,
144
,
81
,
146
,
246
,
83
,
5
,
/* 310 */
33
,
34
,
61
,
153
,
253
,
37
,
63
,
64
,
65
,
5
,
/* 320 */
202
,
7
,
83
,
70
,
71
,
72
,
73
,
74
,
0
,
99
,
/* 330 */
202
,
101
,
102
,
202
,
83
,
202
,
106
,
33
,
34
,
136
,
/* 340 */
110
,
202
,
112
,
113
,
202
,
120
,
121
,
122
,
202
,
202
,
/* 350 */
33
,
34
,
202
,
145
,
37
,
38
,
39
,
202
,
202
,
120
,
/* 360 */
121
,
122
,
154
,
155
,
246
,
66
,
67
,
68
,
147
,
207
,
/* 370 */
149
,
253
,
151
,
152
,
246
,
79
,
214
,
246
,
147
,
246
,
/* 380 */
149
,
253
,
151
,
152
,
253
,
246
,
253
,
91
,
246
,
63
,
/* 390 */
64
,
65
,
253
,
246
,
248
,
253
,
246
,
120
,
121
,
209
,
/* 400 */
253
,
202
,
246
,
253
,
126
,
207
,
98
,
207
,
253
,
253
,
/* 410 */
98
,
212
,
214
,
85
,
214
,
84
,
122
,
210
,
211
,
205
,
/* 420 */
206
,
84
,
84
,
84
,
84
,
84
,
84
,
84
,
84
,
98
,
/* 430 */
84
,
84
,
83
,
243
,
84
,
127
,
122
,
98
,
98
,
98
,
/* 440 */
98
,
98
,
98
,
84
,
98
,
98
,
1
,
15
,
98
,
84
,
/* 450 */
148
,
148
,
150
,
150
,
142
,
33
,
34
,
98
,
148
,
83
,
/* 460 */
150
,
124
,
124
,
98
,
5
,
116
,
7
,
5
,
148
,
7
,
/* 470 */
150
,
148
,
148
,
150
,
150
,
79
,
80
,
91
,
241
,
61
,
/* 480 */
271
,
271
,
37
,
271
,
271
,
241
,
271
,
271
,
271
,
271
,
/* 490 */
271
,
115
,
254
,
271
,
271
,
254
,
254
,
271
,
241
,
271
,
/* 500 */
271
,
241
,
241
,
271
,
241
,
249
,
241
,
202
,
202
,
202
,
/* 510 */
270
,
202
,
267
,
202
,
280
,
202
,
280
,
202
,
202
,
251
,
/* 520 */
251
,
202
,
256
,
202
,
202
,
251
,
250
,
202
,
266
,
202
,
/* 530 */
122
,
202
,
202
,
275
,
202
,
202
,
202
,
202
,
202
,
275
,
/* 540 */
265
,
261
,
275
,
264
,
263
,
275
,
134
,
202
,
137
,
139
,
/* 550 */
202
,
138
,
120
,
202
,
202
,
202
,
202
,
202
,
202
,
202
,
/* 560 */
202
,
141
,
202
,
202
,
202
,
202
,
202
,
132
,
202
,
202
,
/* 570 */
202
,
202
,
202
,
202
,
202
,
202
,
202
,
202
,
131
,
202
,
/* 580 */
202
,
202
,
202
,
202
,
202
,
202
,
202
,
202
,
130
,
202
,
/* 590 */
202
,
202
,
202
,
202
,
202
,
202
,
202
,
202
,
133
,
202
,
/* 600 */
202
,
202
,
202
,
202
,
202
,
119
,
203
,
203
,
203
,
203
,
/* 610 */
203
,
143
,
203
,
90
,
114
,
97
,
96
,
51
,
93
,
95
,
/* 620 */
203
,
94
,
55
,
92
,
203
,
85
,
203
,
5
,
156
,
5
,
/* 630 */
5
,
203
,
203
,
156
,
5
,
5
,
209
,
213
,
213
,
209
,
/* 640 */
101
,
100
,
145
,
124
,
116
,
203
,
203
,
83
,
83
,
203
,
/* 650 */
216
,
125
,
204
,
222
,
221
,
218
,
220
,
219
,
217
,
215
,
/* 660 */
204
,
204
,
210
,
203
,
224
,
204
,
240
,
203
,
205
,
203
,
/* 670 */
84
,
98
,
98
,
257
,
84
,
260
,
262
,
83
,
259
,
240
,
/* 680 */
84
,
83
,
98
,
84
,
83
,
1
,
84
,
83
,
83
,
98
,
/* 690 */
135
,
98
,
135
,
87
,
83
,
83
,
116
,
83
,
117
,
79
,
/* 700 */
5
,
88
,
87
,
71
,
88
,
87
,
9
,
5
,
5
,
5
,
/* 710 */
5
,
5
,
5
,
5
,
86
,
15
,
79
,
83
,
24
,
84
,
/* 720 */
120
,
83
,
59
,
5
,
98
,
16
,
150
,
150
,
16
,
122
,
/* 730 */
122
,
5
,
150
,
150
,
84
,
5
,
5
,
5
,
5
,
5
,
/* 740 */
5
,
5
,
5
,
5
,
5
,
5
,
5
,
5
,
5
,
5
,
/* 750 */
98
,
86
,
61
,
60
,
0
,
283
,
283
,
283
,
283
,
283
,
/* 760 */
283
,
283
,
283
,
283
,
283
,
283
,
21
,
21
,
283
,
283
,
/* 770 */
283
,
283
,
283
,
283
,
283
,
283
,
283
,
283
,
283
,
283
,
/* 780 */
283
,
283
,
283
,
283
,
283
,
283
,
283
,
283
,
283
,
283
,
/* 790 */
283
,
283
,
283
,
283
,
283
,
283
,
283
,
283
,
283
,
283
,
/* 800 */
283
,
283
,
283
,
283
,
283
,
283
,
283
,
283
,
283
,
283
,
/* 810 */
283
,
283
,
283
,
283
,
283
,
283
,
283
,
283
,
283
,
283
,
/* 820 */
283
,
283
,
283
,
283
,
283
,
283
,
283
,
283
,
283
,
283
,
/* 830 */
283
,
283
,
283
,
283
,
283
,
283
,
283
,
283
,
283
,
283
,
/* 840 */
283
,
283
,
283
,
283
,
283
,
283
,
283
,
283
,
283
,
283
,
/* 850 */
283
,
283
,
283
,
283
,
283
,
283
,
283
,
283
,
283
,
283
,
/* 860 */
283
,
283
,
283
,
283
,
283
,
283
,
283
,
283
,
283
,
283
,
/* 870 */
283
,
283
,
283
,
283
,
283
,
283
,
283
,
283
,
283
,
283
,
/* 880 */
283
,
283
,
283
,
283
,
283
,
283
,
283
,
283
,
283
,
283
,
/* 890 */
283
,
283
,
283
,
283
,
283
,
283
,
283
,
283
,
283
,
283
,
/* 900 */
283
,
283
,
283
,
283
,
283
,
283
,
283
,
283
,
283
,
283
,
/* 910 */
283
,
283
,
283
,
283
,
283
,
283
,
283
,
283
,
283
,
283
,
/* 920 */
283
,
283
,
283
,
283
,
283
,
283
,
283
,
283
,
283
,
283
,
/* 930 */
283
,
283
,
283
,
283
,
283
,
283
,
283
,
283
,
283
,
283
,
/* 940 */
283
,
283
,
283
,
283
,
283
,
283
,
283
,
283
,
283
,
283
,
/* 950 */
283
,
283
,
283
,
283
,
283
,
283
,
283
,
283
,
283
,
283
,
/* 960 */
283
,
283
,
283
,
283
,
283
,
283
,
283
,
};
#define YY_SHIFT_COUNT (3
65
)
#define YY_SHIFT_COUNT (3
70
)
#define YY_SHIFT_MIN (0)
#define YY_SHIFT_MAX (7
47
)
#define YY_SHIFT_MAX (7
54
)
static
const
unsigned
short
int
yy_shift_ofst
[]
=
{
/* 0 */
160
,
73
,
73
,
23
6
,
236
,
53
,
225
,
239
,
239
,
270
,
/* 0 */
160
,
73
,
73
,
23
0
,
230
,
123
,
225
,
239
,
239
,
1
,
/* 10 */
21
,
21
,
21
,
21
,
21
,
21
,
21
,
21
,
21
,
21
,
/* 20 */
21
,
21
,
21
,
0
,
2
,
239
,
2
82
,
282
,
282
,
84
,
/* 30 */
84
,
21
,
21
,
24
,
21
,
216
,
21
,
21
,
21
,
21
,
/* 40 */
63
,
53
,
203
,
203
,
66
,
761
,
761
,
761
,
239
,
239
,
/* 20 */
21
,
21
,
21
,
0
,
2
,
239
,
2
77
,
277
,
277
,
28
,
/* 30 */
28
,
21
,
21
,
122
,
21
,
328
,
21
,
21
,
21
,
21
,
/* 40 */
296
,
123
,
386
,
386
,
10
,
768
,
768
,
768
,
239
,
239
,
/* 50 */
239
,
239
,
239
,
239
,
239
,
239
,
239
,
239
,
239
,
239
,
/* 60 */
239
,
239
,
239
,
239
,
239
,
239
,
239
,
239
,
2
82
,
282
,
/* 70 */
2
82
,
369
,
369
,
369
,
369
,
369
,
369
,
369
,
21
,
21
,
/* 80 */
21
,
315
,
21
,
21
,
21
,
84
,
84
,
21
,
21
,
21
,
/* 90 */
21
,
290
,
290
,
185
,
84
,
21
,
21
,
21
,
21
,
21
,
/* 60 */
239
,
239
,
239
,
239
,
239
,
239
,
239
,
239
,
2
77
,
277
,
/* 70 */
2
77
,
304
,
304
,
304
,
304
,
304
,
304
,
174
,
304
,
21
,
/* 80 */
21
,
21
,
21
,
21
,
278
,
21
,
21
,
21
,
28
,
28
,
/* 90 */
21
,
21
,
21
,
21
,
203
,
203
,
308
,
28
,
21
,
21
,
/* 100 */
21
,
21
,
21
,
21
,
21
,
21
,
21
,
21
,
21
,
21
,
/* 110 */
21
,
21
,
21
,
21
,
21
,
21
,
21
,
21
,
21
,
21
,
/* 120 */
21
,
21
,
21
,
21
,
21
,
21
,
21
,
21
,
21
,
21
,
/* 130 */
21
,
21
,
21
,
21
,
21
,
21
,
21
,
21
,
21
,
21
,
/* 140 */
21
,
21
,
21
,
21
,
21
,
21
,
21
,
21
,
21
,
21
,
/* 150 */
21
,
21
,
454
,
454
,
454
,
409
,
409
,
409
,
409
,
454
,
/* 160 */
454
,
413
,
412
,
415
,
416
,
419
,
426
,
433
,
435
,
439
,
/* 170 */
428
,
454
,
454
,
454
,
483
,
483
,
492
,
53
,
53
,
454
,
/* 180 */
454
,
511
,
514
,
562
,
521
,
520
,
561
,
523
,
526
,
492
,
/* 190 */
66
,
454
,
454
,
535
,
535
,
454
,
535
,
454
,
535
,
454
,
/* 200 */
454
,
761
,
761
,
52
,
79
,
79
,
106
,
79
,
132
,
186
,
/* 210 */
204
,
227
,
227
,
227
,
227
,
233
,
254
,
317
,
317
,
317
,
/* 220 */
317
,
221
,
230
,
65
,
299
,
355
,
355
,
130
,
240
,
330
,
/* 230 */
350
,
292
,
320
,
343
,
345
,
346
,
347
,
334
,
335
,
351
,
/* 240 */
352
,
353
,
354
,
356
,
256
,
357
,
362
,
427
,
373
,
363
,
/* 250 */
364
,
311
,
321
,
322
,
226
,
456
,
438
,
329
,
332
,
370
,
/* 260 */
336
,
407
,
618
,
470
,
620
,
621
,
473
,
623
,
624
,
529
,
/* 270 */
537
,
495
,
517
,
524
,
558
,
519
,
559
,
563
,
546
,
547
,
/* 280 */
582
,
589
,
590
,
592
,
593
,
575
,
595
,
597
,
596
,
675
,
/* 290 */
599
,
585
,
551
,
587
,
553
,
604
,
524
,
605
,
573
,
607
,
/* 300 */
574
,
613
,
606
,
608
,
622
,
691
,
609
,
611
,
690
,
695
,
/* 310 */
696
,
697
,
698
,
699
,
700
,
701
,
625
,
692
,
629
,
626
,
/* 320 */
628
,
598
,
627
,
689
,
655
,
702
,
567
,
569
,
630
,
630
,
/* 330 */
630
,
630
,
600
,
601
,
703
,
576
,
577
,
630
,
630
,
630
,
/* 340 */
717
,
718
,
642
,
630
,
722
,
724
,
725
,
726
,
727
,
728
,
/* 350 */
729
,
730
,
731
,
732
,
733
,
734
,
735
,
736
,
737
,
645
,
/* 360 */
658
,
738
,
739
,
684
,
686
,
747
,
/* 150 */
21
,
21
,
21
,
21
,
21
,
418
,
418
,
418
,
418
,
408
,
/* 160 */
408
,
408
,
408
,
418
,
418
,
410
,
420
,
412
,
413
,
411
,
/* 170 */
435
,
447
,
458
,
465
,
468
,
486
,
418
,
418
,
418
,
523
,
/* 180 */
523
,
500
,
123
,
123
,
418
,
418
,
518
,
520
,
566
,
525
,
/* 190 */
524
,
567
,
527
,
531
,
500
,
10
,
418
,
418
,
540
,
540
,
/* 200 */
418
,
540
,
418
,
540
,
418
,
418
,
768
,
768
,
52
,
79
,
/* 210 */
79
,
106
,
79
,
132
,
186
,
204
,
227
,
227
,
227
,
227
,
/* 220 */
224
,
253
,
317
,
317
,
317
,
317
,
221
,
231
,
208
,
71
,
/* 230 */
71
,
294
,
314
,
299
,
326
,
331
,
337
,
338
,
339
,
340
,
/* 240 */
341
,
312
,
130
,
342
,
343
,
344
,
346
,
347
,
349
,
350
,
/* 250 */
359
,
445
,
251
,
432
,
365
,
302
,
303
,
310
,
459
,
462
,
/* 260 */
422
,
320
,
323
,
376
,
324
,
396
,
622
,
472
,
624
,
625
,
/* 270 */
477
,
629
,
630
,
539
,
541
,
497
,
519
,
528
,
564
,
526
,
/* 280 */
586
,
565
,
573
,
574
,
590
,
594
,
596
,
598
,
599
,
584
,
/* 290 */
601
,
602
,
604
,
684
,
605
,
591
,
555
,
593
,
557
,
606
,
/* 300 */
611
,
528
,
612
,
580
,
614
,
581
,
620
,
613
,
615
,
632
,
/* 310 */
695
,
616
,
618
,
697
,
702
,
703
,
704
,
705
,
706
,
707
,
/* 320 */
708
,
628
,
700
,
637
,
634
,
635
,
600
,
638
,
694
,
663
,
/* 330 */
709
,
576
,
577
,
626
,
626
,
626
,
626
,
607
,
608
,
712
,
/* 340 */
582
,
583
,
626
,
626
,
626
,
718
,
726
,
650
,
626
,
730
,
/* 350 */
731
,
732
,
733
,
734
,
735
,
736
,
737
,
738
,
739
,
740
,
/* 360 */
741
,
742
,
743
,
744
,
652
,
665
,
745
,
746
,
691
,
693
,
/* 370 */
754
,
};
#define YY_REDUCE_COUNT (20
2
)
#define YY_REDUCE_MIN (-2
53
)
#define YY_REDUCE_MAX (46
8
)
#define YY_REDUCE_COUNT (20
7
)
#define YY_REDUCE_MIN (-2
65
)
#define YY_REDUCE_MAX (46
6
)
static
const
short
yy_reduce_ofst
[]
=
{
/* 0 */
-
15
3
,
-
36
,
-
36
,
-
194
,
-
194
,
-
79
,
-
196
,
-
38
,
43
,
-
185
,
/* 10 */
-
181
,
-
165
,
57
,
86
,
88
,
121
,
140
,
141
,
147
,
161
,
/* 20 */
1
62
,
163
,
164
,
-
193
,
-
195
,
-
169
,
-
243
,
-
237
,
-
124
,
-
201
,
/* 30 */
-
1
49
,
-
159
,
-
59
,
-
253
,
-
99
,
-
119
,
70
,
82
,
85
,
133
,
/* 40 */
51
,
176
,
213
,
214
,
91
,
123
,
212
,
219
,
-
184
,
-
45
,
/* 50 */
-
15
,
34
,
181
,
192
,
200
,
210
,
217
,
222
,
223
,
224
,
/* 60 */
2
28
,
229
,
231
,
232
,
234
,
235
,
237
,
238
,
74
,
150
,
/* 70 */
242
,
2
53
,
257
,
260
,
263
,
266
,
267
,
268
,
279
,
293
,
/* 80 */
30
8
,
244
,
310
,
312
,
313
,
264
,
269
,
314
,
318
,
31
9
,
/* 90 */
3
23
,
245
,
246
,
271
,
277
,
325
,
326
,
327
,
328
,
331
,
/* 100 */
33
3
,
337
,
338
,
339
,
340
,
341
,
342
,
344
,
348
,
349
,
/* 110 */
35
8
,
359
,
360
,
361
,
365
,
366
,
367
,
368
,
371
,
372
,
/* 120 */
3
74
,
375
,
376
,
377
,
378
,
379
,
380
,
381
,
382
,
383
,
/* 130 */
3
84
,
385
,
386
,
387
,
388
,
389
,
390
,
391
,
392
,
393
,
/* 140 */
3
94
,
395
,
396
,
397
,
398
,
399
,
400
,
401
,
402
,
403
,
/* 150 */
404
,
405
,
316
,
406
,
408
,
262
,
265
,
273
,
275
,
410
,
/* 160 */
411
,
272
,
285
,
276
,
294
,
297
,
300
,
274
,
309
,
414
,
/* 170 */
41
7
,
418
,
420
,
421
,
422
,
423
,
424
,
425
,
429
,
430
,
/* 180 */
4
34
,
431
,
436
,
432
,
440
,
441
,
437
,
443
,
444
,
442
,
/* 190 */
4
45
,
446
,
447
,
451
,
458
,
448
,
459
,
455
,
461
,
463
,
/* 200 */
4
64
,
462
,
468
,
/* 0 */
-
15
4
,
-
38
,
-
38
,
-
196
,
-
196
,
-
81
,
-
208
,
-
201
,
-
200
,
29
,
/* 10 */
3
,
-
64
,
-
61
,
61
,
118
,
128
,
131
,
133
,
139
,
142
,
/* 20 */
1
47
,
150
,
156
,
-
184
,
-
197
,
-
188
,
-
235
,
-
112
,
-
100
,
-
153
,
/* 30 */
-
1
01
,
-
158
,
-
34
,
-
37
,
146
,
-
108
,
69
,
83
,
199
,
155
,
/* 40 */
162
,
190
,
198
,
200
,
-
99
,
-
22
,
207
,
214
,
-
265
,
-
236
,
/* 50 */
-
230
,
-
209
,
-
204
,
209
,
210
,
212
,
213
,
215
,
216
,
217
,
/* 60 */
2
18
,
219
,
222
,
223
,
226
,
228
,
229
,
232
,
238
,
241
,
/* 70 */
242
,
2
37
,
244
,
257
,
260
,
261
,
263
,
256
,
265
,
305
,
/* 80 */
30
6
,
307
,
309
,
311
,
240
,
313
,
315
,
316
,
268
,
26
9
,
/* 90 */
3
19
,
321
,
322
,
325
,
234
,
236
,
266
,
274
,
327
,
329
,
/* 100 */
33
0
,
332
,
333
,
334
,
335
,
336
,
345
,
348
,
351
,
352
,
/* 110 */
35
3
,
354
,
355
,
356
,
357
,
358
,
360
,
361
,
362
,
363
,
/* 120 */
3
64
,
366
,
367
,
368
,
369
,
370
,
371
,
372
,
373
,
374
,
/* 130 */
3
75
,
377
,
378
,
379
,
380
,
381
,
382
,
383
,
384
,
385
,
/* 140 */
3
87
,
388
,
389
,
390
,
391
,
392
,
393
,
394
,
395
,
397
,
/* 150 */
398
,
399
,
400
,
401
,
402
,
403
,
404
,
405
,
406
,
258
,
/* 160 */
264
,
267
,
270
,
407
,
409
,
245
,
262
,
275
,
279
,
281
,
/* 170 */
41
4
,
280
,
415
,
419
,
416
,
276
,
417
,
421
,
423
,
424
,
/* 180 */
4
25
,
426
,
427
,
430
,
428
,
429
,
431
,
433
,
436
,
434
,
/* 190 */
4
38
,
441
,
437
,
444
,
439
,
440
,
442
,
443
,
448
,
456
,
/* 200 */
4
46
,
457
,
460
,
461
,
464
,
466
,
452
,
463
,
};
static
const
YYACTIONTYPE
yy_default
[]
=
{
/* 0 */
868
,
991
,
930
,
1001
,
917
,
927
,
1142
,
1142
,
1142
,
868
,
/* 10 */
868
,
868
,
868
,
868
,
868
,
868
,
868
,
868
,
868
,
868
,
/* 20 */
868
,
868
,
868
,
1051
,
888
,
1142
,
868
,
868
,
868
,
868
,
/* 30 */
868
,
868
,
868
,
1066
,
868
,
927
,
868
,
868
,
868
,
868
,
/* 40 */
937
,
927
,
937
,
937
,
868
,
1046
,
975
,
993
,
868
,
868
,
/* 50 */
868
,
868
,
868
,
868
,
868
,
868
,
868
,
868
,
868
,
868
,
/* 60 */
868
,
868
,
868
,
868
,
868
,
868
,
868
,
868
,
868
,
868
,
/* 70 */
868
,
868
,
868
,
868
,
868
,
868
,
868
,
868
,
868
,
868
,
/* 80 */
868
,
1053
,
1059
,
1056
,
868
,
868
,
868
,
1061
,
868
,
868
,
/* 90 */
868
,
1085
,
1085
,
1044
,
868
,
868
,
868
,
868
,
868
,
868
,
/* 100 */
868
,
868
,
868
,
868
,
868
,
868
,
868
,
868
,
868
,
868
,
/* 110 */
868
,
868
,
868
,
868
,
868
,
868
,
868
,
868
,
868
,
868
,
/* 120 */
868
,
868
,
868
,
868
,
868
,
868
,
868
,
915
,
868
,
913
,
/* 130 */
868
,
868
,
868
,
868
,
868
,
868
,
868
,
868
,
868
,
868
,
/* 140 */
868
,
868
,
868
,
868
,
868
,
868
,
868
,
868
,
868
,
868
,
/* 150 */
868
,
868
,
890
,
890
,
890
,
868
,
868
,
868
,
868
,
890
,
/* 160 */
890
,
1092
,
1096
,
1078
,
1090
,
1086
,
1073
,
1071
,
1069
,
1077
,
/* 170 */
1100
,
890
,
890
,
890
,
935
,
935
,
931
,
927
,
927
,
890
,
/* 180 */
890
,
953
,
951
,
949
,
941
,
947
,
943
,
945
,
939
,
918
,
/* 190 */
868
,
890
,
890
,
925
,
925
,
890
,
925
,
890
,
925
,
890
,
/* 200 */
890
,
975
,
993
,
868
,
1101
,
1091
,
868
,
1141
,
1131
,
1130
,
/* 210 */
868
,
1137
,
1129
,
1128
,
1127
,
868
,
868
,
1123
,
1126
,
1125
,
/* 220 */
1124
,
868
,
868
,
868
,
868
,
1133
,
1132
,
868
,
868
,
868
,
/* 230 */
868
,
868
,
868
,
868
,
868
,
868
,
868
,
1097
,
1093
,
868
,
/* 240 */
868
,
868
,
868
,
868
,
868
,
868
,
868
,
868
,
1103
,
868
,
/* 250 */
868
,
868
,
868
,
868
,
868
,
868
,
1032
,
868
,
868
,
1003
,
/* 260 */
868
,
868
,
868
,
868
,
868
,
868
,
868
,
868
,
868
,
868
,
/* 270 */
868
,
868
,
1043
,
868
,
868
,
868
,
868
,
868
,
1055
,
1054
,
/* 280 */
868
,
868
,
868
,
868
,
868
,
868
,
868
,
868
,
868
,
868
,
/* 290 */
868
,
1087
,
868
,
1079
,
868
,
868
,
1015
,
868
,
868
,
868
,
/* 300 */
868
,
868
,
868
,
868
,
868
,
868
,
868
,
868
,
868
,
868
,
/* 310 */
868
,
868
,
868
,
868
,
868
,
868
,
868
,
868
,
868
,
868
,
/* 320 */
868
,
868
,
868
,
868
,
868
,
868
,
868
,
868
,
1160
,
1155
,
/* 330 */
1156
,
1153
,
868
,
868
,
868
,
868
,
868
,
1152
,
1147
,
1148
,
/* 340 */
868
,
868
,
868
,
1145
,
868
,
868
,
868
,
868
,
868
,
868
,
/* 350 */
868
,
868
,
868
,
868
,
868
,
868
,
868
,
868
,
868
,
959
,
/* 360 */
868
,
897
,
895
,
868
,
886
,
868
,
/* 0 */
879
,
1002
,
941
,
1012
,
928
,
938
,
1157
,
1157
,
1157
,
879
,
/* 10 */
879
,
879
,
879
,
879
,
879
,
879
,
879
,
879
,
879
,
879
,
/* 20 */
879
,
879
,
879
,
1066
,
899
,
1157
,
879
,
879
,
879
,
879
,
/* 30 */
879
,
879
,
879
,
1081
,
879
,
938
,
879
,
879
,
879
,
879
,
/* 40 */
948
,
938
,
948
,
948
,
879
,
1061
,
986
,
1004
,
879
,
879
,
/* 50 */
879
,
879
,
879
,
879
,
879
,
879
,
879
,
879
,
879
,
879
,
/* 60 */
879
,
879
,
879
,
879
,
879
,
879
,
879
,
879
,
879
,
879
,
/* 70 */
879
,
879
,
879
,
879
,
879
,
879
,
879
,
1033
,
879
,
879
,
/* 80 */
879
,
879
,
879
,
879
,
1068
,
1074
,
1071
,
879
,
879
,
879
,
/* 90 */
1076
,
879
,
879
,
879
,
1100
,
1100
,
1059
,
879
,
879
,
879
,
/* 100 */
879
,
879
,
879
,
879
,
879
,
879
,
879
,
879
,
879
,
879
,
/* 110 */
879
,
879
,
879
,
879
,
879
,
879
,
879
,
879
,
879
,
879
,
/* 120 */
879
,
879
,
879
,
879
,
879
,
879
,
879
,
879
,
879
,
879
,
/* 130 */
926
,
879
,
924
,
879
,
879
,
879
,
879
,
879
,
879
,
879
,
/* 140 */
879
,
879
,
879
,
879
,
879
,
879
,
879
,
879
,
879
,
879
,
/* 150 */
879
,
879
,
879
,
879
,
879
,
901
,
901
,
901
,
901
,
879
,
/* 160 */
879
,
879
,
879
,
901
,
901
,
1107
,
1111
,
1093
,
1105
,
1101
,
/* 170 */
1088
,
1086
,
1084
,
1092
,
1115
,
1035
,
901
,
901
,
901
,
946
,
/* 180 */
946
,
942
,
938
,
938
,
901
,
901
,
964
,
962
,
960
,
952
,
/* 190 */
958
,
954
,
956
,
950
,
929
,
879
,
901
,
901
,
936
,
936
,
/* 200 */
901
,
936
,
901
,
936
,
901
,
901
,
986
,
1004
,
879
,
1116
,
/* 210 */
1106
,
879
,
1156
,
1146
,
1145
,
879
,
1152
,
1144
,
1143
,
1142
,
/* 220 */
879
,
879
,
1138
,
1141
,
1140
,
1139
,
879
,
879
,
879
,
1148
,
/* 230 */
1147
,
879
,
879
,
879
,
879
,
879
,
879
,
879
,
879
,
879
,
/* 240 */
879
,
1112
,
1108
,
879
,
879
,
879
,
879
,
879
,
879
,
879
,
/* 250 */
879
,
879
,
1118
,
879
,
879
,
879
,
879
,
879
,
879
,
879
,
/* 260 */
1047
,
879
,
879
,
1014
,
879
,
879
,
879
,
879
,
879
,
879
,
/* 270 */
879
,
879
,
879
,
879
,
879
,
879
,
1058
,
879
,
879
,
879
,
/* 280 */
879
,
879
,
1070
,
1069
,
879
,
879
,
879
,
879
,
879
,
879
,
/* 290 */
879
,
879
,
879
,
879
,
879
,
1102
,
879
,
1094
,
879
,
879
,
/* 300 */
879
,
1026
,
879
,
879
,
879
,
879
,
879
,
879
,
879
,
879
,
/* 310 */
879
,
879
,
879
,
879
,
879
,
879
,
879
,
879
,
879
,
879
,
/* 320 */
879
,
879
,
879
,
879
,
879
,
879
,
879
,
879
,
879
,
879
,
/* 330 */
879
,
879
,
879
,
1175
,
1170
,
1171
,
1168
,
879
,
879
,
879
,
/* 340 */
879
,
879
,
1167
,
1162
,
1163
,
879
,
879
,
879
,
1160
,
879
,
/* 350 */
879
,
879
,
879
,
879
,
879
,
879
,
879
,
879
,
879
,
879
,
/* 360 */
879
,
879
,
879
,
879
,
970
,
879
,
908
,
906
,
879
,
897
,
/* 370 */
879
,
};
/********** End of lemon-generated parsing tables *****************************/
...
...
@@ -832,6 +639,8 @@ static const YYCODETYPE yyFallback[] = {
0
,
/* UNSIGNED => nothing */
0
,
/* TAGS => nothing */
0
,
/* USING => nothing */
0
,
/* TO => nothing */
0
,
/* SPLIT => nothing */
1
,
/* NULL => ID */
1
,
/* NOW => ID */
0
,
/* VARIABLE => nothing */
...
...
@@ -964,7 +773,6 @@ typedef struct yyParser yyParser;
#ifndef NDEBUG
#include <stdio.h>
#include <assert.h>
static
FILE
*
yyTraceFILE
=
0
;
static
char
*
yyTracePrompt
=
0
;
#endif
/* NDEBUG */
...
...
@@ -1117,166 +925,171 @@ static const char *const yyTokenName[] = {
/* 115 */
"UNSIGNED"
,
/* 116 */
"TAGS"
,
/* 117 */
"USING"
,
/* 118 */
"NULL"
,
/* 119 */
"NOW"
,
/* 120 */
"VARIABLE"
,
/* 121 */
"SELECT"
,
/* 122 */
"UNION"
,
/* 123 */
"ALL"
,
/* 124 */
"DISTINCT"
,
/* 125 */
"FROM"
,
/* 126 */
"INTERVAL"
,
/* 127 */
"EVERY"
,
/* 128 */
"SESSION"
,
/* 129 */
"STATE_WINDOW"
,
/* 130 */
"FILL"
,
/* 131 */
"SLIDING"
,
/* 132 */
"ORDER"
,
/* 133 */
"BY"
,
/* 134 */
"ASC"
,
/* 135 */
"GROUP"
,
/* 136 */
"HAVING"
,
/* 137 */
"LIMIT"
,
/* 138 */
"OFFSET"
,
/* 139 */
"SLIMIT"
,
/* 140 */
"SOFFSET"
,
/* 141 */
"WHERE"
,
/* 142 */
"RESET"
,
/* 143 */
"QUERY"
,
/* 144 */
"SYNCDB"
,
/* 145 */
"ADD"
,
/* 146 */
"COLUMN"
,
/* 147 */
"MODIFY"
,
/* 148 */
"TAG"
,
/* 149 */
"CHANGE"
,
/* 150 */
"SET"
,
/* 151 */
"KILL"
,
/* 152 */
"CONNECTION"
,
/* 153 */
"STREAM"
,
/* 154 */
"COLON"
,
/* 155 */
"ABORT"
,
/* 156 */
"AFTER"
,
/* 157 */
"ATTACH"
,
/* 158 */
"BEFORE"
,
/* 159 */
"BEGIN"
,
/* 160 */
"CASCADE"
,
/* 161 */
"CLUSTER"
,
/* 162 */
"CONFLICT"
,
/* 163 */
"COPY"
,
/* 164 */
"DEFERRED"
,
/* 165 */
"DELIMITERS"
,
/* 166 */
"DETACH"
,
/* 167 */
"EACH"
,
/* 168 */
"END"
,
/* 169 */
"EXPLAIN"
,
/* 170 */
"FAIL"
,
/* 171 */
"FOR"
,
/* 172 */
"IGNORE"
,
/* 173 */
"IMMEDIATE"
,
/* 174 */
"INITIALLY"
,
/* 175 */
"INSTEAD"
,
/* 176 */
"MATCH"
,
/* 177 */
"KEY"
,
/* 178 */
"OF"
,
/* 179 */
"RAISE"
,
/* 180 */
"REPLACE"
,
/* 181 */
"RESTRICT"
,
/* 182 */
"ROW"
,
/* 183 */
"STATEMENT"
,
/* 184 */
"TRIGGER"
,
/* 185 */
"VIEW"
,
/* 186 */
"SEMI"
,
/* 187 */
"NONE"
,
/* 188 */
"PREV"
,
/* 189 */
"LINEAR"
,
/* 190 */
"IMPORT"
,
/* 191 */
"TBNAME"
,
/* 192 */
"JOIN"
,
/* 193 */
"INSERT"
,
/* 194 */
"INTO"
,
/* 195 */
"VALUES"
,
/* 196 */
"FILE"
,
/* 197 */
"program"
,
/* 198 */
"cmd"
,
/* 199 */
"dbPrefix"
,
/* 200 */
"ids"
,
/* 201 */
"cpxName"
,
/* 202 */
"ifexists"
,
/* 203 */
"alter_db_optr"
,
/* 204 */
"alter_topic_optr"
,
/* 205 */
"acct_optr"
,
/* 206 */
"exprlist"
,
/* 207 */
"ifnotexists"
,
/* 208 */
"db_optr"
,
/* 209 */
"topic_optr"
,
/* 210 */
"typename"
,
/* 211 */
"bufsize"
,
/* 212 */
"pps"
,
/* 213 */
"tseries"
,
/* 214 */
"dbs"
,
/* 215 */
"streams"
,
/* 216 */
"storage"
,
/* 217 */
"qtime"
,
/* 218 */
"users"
,
/* 219 */
"conns"
,
/* 220 */
"state"
,
/* 221 */
"intitemlist"
,
/* 222 */
"intitem"
,
/* 223 */
"keep"
,
/* 224 */
"cache"
,
/* 225 */
"replica"
,
/* 226 */
"quorum"
,
/* 227 */
"days"
,
/* 228 */
"minrows"
,
/* 229 */
"maxrows"
,
/* 230 */
"blocks"
,
/* 231 */
"ctime"
,
/* 232 */
"wal"
,
/* 233 */
"fsync"
,
/* 234 */
"comp"
,
/* 235 */
"prec"
,
/* 236 */
"update"
,
/* 237 */
"cachelast"
,
/* 238 */
"partitions"
,
/* 239 */
"signed"
,
/* 240 */
"create_table_args"
,
/* 241 */
"create_stable_args"
,
/* 242 */
"create_table_list"
,
/* 243 */
"create_from_stable"
,
/* 244 */
"columnlist"
,
/* 245 */
"tagitemlist"
,
/* 246 */
"tagNamelist"
,
/* 247 */
"select"
,
/* 248 */
"column"
,
/* 249 */
"tagitem"
,
/* 250 */
"selcollist"
,
/* 251 */
"from"
,
/* 252 */
"where_opt"
,
/* 253 */
"interval_option"
,
/* 254 */
"sliding_opt"
,
/* 255 */
"session_option"
,
/* 256 */
"windowstate_option"
,
/* 257 */
"fill_opt"
,
/* 258 */
"groupby_opt"
,
/* 259 */
"having_opt"
,
/* 260 */
"orderby_opt"
,
/* 261 */
"slimit_opt"
,
/* 262 */
"limit_opt"
,
/* 263 */
"union"
,
/* 264 */
"sclp"
,
/* 265 */
"distinct"
,
/* 266 */
"expr"
,
/* 267 */
"as"
,
/* 268 */
"tablelist"
,
/* 269 */
"sub"
,
/* 270 */
"tmvar"
,
/* 271 */
"intervalKey"
,
/* 272 */
"sortlist"
,
/* 273 */
"sortitem"
,
/* 274 */
"item"
,
/* 275 */
"sortorder"
,
/* 276 */
"grouplist"
,
/* 277 */
"expritem"
,
/* 118 */
"TO"
,
/* 119 */
"SPLIT"
,
/* 120 */
"NULL"
,
/* 121 */
"NOW"
,
/* 122 */
"VARIABLE"
,
/* 123 */
"SELECT"
,
/* 124 */
"UNION"
,
/* 125 */
"ALL"
,
/* 126 */
"DISTINCT"
,
/* 127 */
"FROM"
,
/* 128 */
"INTERVAL"
,
/* 129 */
"EVERY"
,
/* 130 */
"SESSION"
,
/* 131 */
"STATE_WINDOW"
,
/* 132 */
"FILL"
,
/* 133 */
"SLIDING"
,
/* 134 */
"ORDER"
,
/* 135 */
"BY"
,
/* 136 */
"ASC"
,
/* 137 */
"GROUP"
,
/* 138 */
"HAVING"
,
/* 139 */
"LIMIT"
,
/* 140 */
"OFFSET"
,
/* 141 */
"SLIMIT"
,
/* 142 */
"SOFFSET"
,
/* 143 */
"WHERE"
,
/* 144 */
"RESET"
,
/* 145 */
"QUERY"
,
/* 146 */
"SYNCDB"
,
/* 147 */
"ADD"
,
/* 148 */
"COLUMN"
,
/* 149 */
"MODIFY"
,
/* 150 */
"TAG"
,
/* 151 */
"CHANGE"
,
/* 152 */
"SET"
,
/* 153 */
"KILL"
,
/* 154 */
"CONNECTION"
,
/* 155 */
"STREAM"
,
/* 156 */
"COLON"
,
/* 157 */
"ABORT"
,
/* 158 */
"AFTER"
,
/* 159 */
"ATTACH"
,
/* 160 */
"BEFORE"
,
/* 161 */
"BEGIN"
,
/* 162 */
"CASCADE"
,
/* 163 */
"CLUSTER"
,
/* 164 */
"CONFLICT"
,
/* 165 */
"COPY"
,
/* 166 */
"DEFERRED"
,
/* 167 */
"DELIMITERS"
,
/* 168 */
"DETACH"
,
/* 169 */
"EACH"
,
/* 170 */
"END"
,
/* 171 */
"EXPLAIN"
,
/* 172 */
"FAIL"
,
/* 173 */
"FOR"
,
/* 174 */
"IGNORE"
,
/* 175 */
"IMMEDIATE"
,
/* 176 */
"INITIALLY"
,
/* 177 */
"INSTEAD"
,
/* 178 */
"MATCH"
,
/* 179 */
"KEY"
,
/* 180 */
"OF"
,
/* 181 */
"RAISE"
,
/* 182 */
"REPLACE"
,
/* 183 */
"RESTRICT"
,
/* 184 */
"ROW"
,
/* 185 */
"STATEMENT"
,
/* 186 */
"TRIGGER"
,
/* 187 */
"VIEW"
,
/* 188 */
"SEMI"
,
/* 189 */
"NONE"
,
/* 190 */
"PREV"
,
/* 191 */
"LINEAR"
,
/* 192 */
"IMPORT"
,
/* 193 */
"TBNAME"
,
/* 194 */
"JOIN"
,
/* 195 */
"INSERT"
,
/* 196 */
"INTO"
,
/* 197 */
"VALUES"
,
/* 198 */
"FILE"
,
/* 199 */
"program"
,
/* 200 */
"cmd"
,
/* 201 */
"dbPrefix"
,
/* 202 */
"ids"
,
/* 203 */
"cpxName"
,
/* 204 */
"ifexists"
,
/* 205 */
"alter_db_optr"
,
/* 206 */
"alter_topic_optr"
,
/* 207 */
"acct_optr"
,
/* 208 */
"exprlist"
,
/* 209 */
"ifnotexists"
,
/* 210 */
"db_optr"
,
/* 211 */
"topic_optr"
,
/* 212 */
"typename"
,
/* 213 */
"bufsize"
,
/* 214 */
"pps"
,
/* 215 */
"tseries"
,
/* 216 */
"dbs"
,
/* 217 */
"streams"
,
/* 218 */
"storage"
,
/* 219 */
"qtime"
,
/* 220 */
"users"
,
/* 221 */
"conns"
,
/* 222 */
"state"
,
/* 223 */
"intitemlist"
,
/* 224 */
"intitem"
,
/* 225 */
"keep"
,
/* 226 */
"cache"
,
/* 227 */
"replica"
,
/* 228 */
"quorum"
,
/* 229 */
"days"
,
/* 230 */
"minrows"
,
/* 231 */
"maxrows"
,
/* 232 */
"blocks"
,
/* 233 */
"ctime"
,
/* 234 */
"wal"
,
/* 235 */
"fsync"
,
/* 236 */
"comp"
,
/* 237 */
"prec"
,
/* 238 */
"update"
,
/* 239 */
"cachelast"
,
/* 240 */
"partitions"
,
/* 241 */
"signed"
,
/* 242 */
"create_table_args"
,
/* 243 */
"create_stable_args"
,
/* 244 */
"create_table_list"
,
/* 245 */
"create_from_stable"
,
/* 246 */
"columnlist"
,
/* 247 */
"tagitemlist"
,
/* 248 */
"tagNamelist"
,
/* 249 */
"to_opt"
,
/* 250 */
"split_opt"
,
/* 251 */
"select"
,
/* 252 */
"to_split"
,
/* 253 */
"column"
,
/* 254 */
"tagitem"
,
/* 255 */
"selcollist"
,
/* 256 */
"from"
,
/* 257 */
"where_opt"
,
/* 258 */
"interval_option"
,
/* 259 */
"sliding_opt"
,
/* 260 */
"session_option"
,
/* 261 */
"windowstate_option"
,
/* 262 */
"fill_opt"
,
/* 263 */
"groupby_opt"
,
/* 264 */
"having_opt"
,
/* 265 */
"orderby_opt"
,
/* 266 */
"slimit_opt"
,
/* 267 */
"limit_opt"
,
/* 268 */
"union"
,
/* 269 */
"sclp"
,
/* 270 */
"distinct"
,
/* 271 */
"expr"
,
/* 272 */
"as"
,
/* 273 */
"tablelist"
,
/* 274 */
"sub"
,
/* 275 */
"tmvar"
,
/* 276 */
"intervalKey"
,
/* 277 */
"sortlist"
,
/* 278 */
"sortitem"
,
/* 279 */
"item"
,
/* 280 */
"sortorder"
,
/* 281 */
"grouplist"
,
/* 282 */
"expritem"
,
};
#endif
/* defined(YYCOVERAGE) || !defined(NDEBUG) */
...
...
@@ -1434,149 +1247,153 @@ static const char *const yyRuleName[] = {
/* 147 */
"create_from_stable ::= ifnotexists ids cpxName USING ids cpxName LP tagNamelist RP TAGS LP tagitemlist RP"
,
/* 148 */
"tagNamelist ::= tagNamelist COMMA ids"
,
/* 149 */
"tagNamelist ::= ids"
,
/* 150 */
"create_table_args ::= ifnotexists ids cpxName AS select"
,
/* 151 */
"columnlist ::= columnlist COMMA column"
,
/* 152 */
"columnlist ::= column"
,
/* 153 */
"column ::= ids typename"
,
/* 154 */
"tagitemlist ::= tagitemlist COMMA tagitem"
,
/* 155 */
"tagitemlist ::= tagitem"
,
/* 156 */
"tagitem ::= INTEGER"
,
/* 157 */
"tagitem ::= FLOAT"
,
/* 158 */
"tagitem ::= STRING"
,
/* 159 */
"tagitem ::= BOOL"
,
/* 160 */
"tagitem ::= NULL"
,
/* 161 */
"tagitem ::= NOW"
,
/* 162 */
"tagitem ::= NOW PLUS VARIABLE"
,
/* 163 */
"tagitem ::= NOW MINUS VARIABLE"
,
/* 164 */
"tagitem ::= MINUS INTEGER"
,
/* 165 */
"tagitem ::= MINUS FLOAT"
,
/* 166 */
"tagitem ::= PLUS INTEGER"
,
/* 167 */
"tagitem ::= PLUS FLOAT"
,
/* 168 */
"select ::= SELECT selcollist from where_opt interval_option sliding_opt session_option windowstate_option fill_opt groupby_opt having_opt orderby_opt slimit_opt limit_opt"
,
/* 169 */
"select ::= LP select RP"
,
/* 170 */
"union ::= select"
,
/* 171 */
"union ::= union UNION ALL select"
,
/* 172 */
"cmd ::= union"
,
/* 173 */
"select ::= SELECT selcollist"
,
/* 174 */
"sclp ::= selcollist COMMA"
,
/* 175 */
"sclp ::="
,
/* 176 */
"selcollist ::= sclp distinct expr as"
,
/* 177 */
"selcollist ::= sclp STAR"
,
/* 178 */
"as ::= AS ids"
,
/* 179 */
"as ::= ids"
,
/* 180 */
"as ::="
,
/* 181 */
"distinct ::= DISTINCT"
,
/* 182 */
"distinct ::="
,
/* 183 */
"from ::= FROM tablelist"
,
/* 184 */
"from ::= FROM sub"
,
/* 185 */
"sub ::= LP union RP"
,
/* 186 */
"sub ::= LP union RP ids"
,
/* 187 */
"sub ::= sub COMMA LP union RP ids"
,
/* 188 */
"tablelist ::= ids cpxName"
,
/* 189 */
"tablelist ::= ids cpxName ids"
,
/* 190 */
"tablelist ::= tablelist COMMA ids cpxName"
,
/* 191 */
"tablelist ::= tablelist COMMA ids cpxName ids"
,
/* 192 */
"tmvar ::= VARIABLE"
,
/* 193 */
"interval_option ::= intervalKey LP tmvar RP"
,
/* 194 */
"interval_option ::= intervalKey LP tmvar COMMA tmvar RP"
,
/* 195 */
"interval_option ::="
,
/* 196 */
"intervalKey ::= INTERVAL"
,
/* 197 */
"intervalKey ::= EVERY"
,
/* 198 */
"session_option ::="
,
/* 199 */
"session_option ::= SESSION LP ids cpxName COMMA tmvar RP"
,
/* 200 */
"windowstate_option ::="
,
/* 201 */
"windowstate_option ::= STATE_WINDOW LP ids RP"
,
/* 202 */
"fill_opt ::="
,
/* 203 */
"fill_opt ::= FILL LP ID COMMA tagitemlist RP"
,
/* 204 */
"fill_opt ::= FILL LP ID RP"
,
/* 205 */
"sliding_opt ::= SLIDING LP tmvar RP"
,
/* 206 */
"sliding_opt ::="
,
/* 207 */
"orderby_opt ::="
,
/* 208 */
"orderby_opt ::= ORDER BY sortlist"
,
/* 209 */
"sortlist ::= sortlist COMMA item sortorder"
,
/* 210 */
"sortlist ::= item sortorder"
,
/* 211 */
"item ::= ids cpxName"
,
/* 212 */
"sortorder ::= ASC"
,
/* 213 */
"sortorder ::= DESC"
,
/* 214 */
"sortorder ::="
,
/* 215 */
"groupby_opt ::="
,
/* 216 */
"groupby_opt ::= GROUP BY grouplist"
,
/* 217 */
"grouplist ::= grouplist COMMA item"
,
/* 218 */
"grouplist ::= item"
,
/* 219 */
"having_opt ::="
,
/* 220 */
"having_opt ::= HAVING expr"
,
/* 221 */
"limit_opt ::="
,
/* 222 */
"limit_opt ::= LIMIT signed"
,
/* 223 */
"limit_opt ::= LIMIT signed OFFSET signed"
,
/* 224 */
"limit_opt ::= LIMIT signed COMMA signed"
,
/* 225 */
"slimit_opt ::="
,
/* 226 */
"slimit_opt ::= SLIMIT signed"
,
/* 227 */
"slimit_opt ::= SLIMIT signed SOFFSET signed"
,
/* 228 */
"slimit_opt ::= SLIMIT signed COMMA signed"
,
/* 229 */
"where_opt ::="
,
/* 230 */
"where_opt ::= WHERE expr"
,
/* 231 */
"expr ::= LP expr RP"
,
/* 232 */
"expr ::= ID"
,
/* 233 */
"expr ::= ID DOT ID"
,
/* 234 */
"expr ::= ID DOT STAR"
,
/* 235 */
"expr ::= INTEGER"
,
/* 236 */
"expr ::= MINUS INTEGER"
,
/* 237 */
"expr ::= PLUS INTEGER"
,
/* 238 */
"expr ::= FLOAT"
,
/* 239 */
"expr ::= MINUS FLOAT"
,
/* 240 */
"expr ::= PLUS FLOAT"
,
/* 241 */
"expr ::= STRING"
,
/* 242 */
"expr ::= NOW"
,
/* 243 */
"expr ::= VARIABLE"
,
/* 244 */
"expr ::= PLUS VARIABLE"
,
/* 245 */
"expr ::= MINUS VARIABLE"
,
/* 246 */
"expr ::= BOOL"
,
/* 247 */
"expr ::= NULL"
,
/* 248 */
"expr ::= ID LP exprlist RP"
,
/* 249 */
"expr ::= ID LP STAR RP"
,
/* 250 */
"expr ::= expr IS NULL"
,
/* 251 */
"expr ::= expr IS NOT NULL"
,
/* 252 */
"expr ::= expr LT expr"
,
/* 253 */
"expr ::= expr GT expr"
,
/* 254 */
"expr ::= expr LE expr"
,
/* 255 */
"expr ::= expr GE expr"
,
/* 256 */
"expr ::= expr NE expr"
,
/* 257 */
"expr ::= expr EQ expr"
,
/* 258 */
"expr ::= expr BETWEEN expr AND expr"
,
/* 259 */
"expr ::= expr AND expr"
,
/* 260 */
"expr ::= expr OR expr"
,
/* 261 */
"expr ::= expr PLUS expr"
,
/* 262 */
"expr ::= expr MINUS expr"
,
/* 263 */
"expr ::= expr STAR expr"
,
/* 264 */
"expr ::= expr SLASH expr"
,
/* 265 */
"expr ::= expr REM expr"
,
/* 266 */
"expr ::= expr LIKE expr"
,
/* 267 */
"expr ::= expr IN LP exprlist RP"
,
/* 268 */
"exprlist ::= exprlist COMMA expritem"
,
/* 269 */
"exprlist ::= expritem"
,
/* 270 */
"expritem ::= expr"
,
/* 271 */
"expritem ::="
,
/* 272 */
"cmd ::= RESET QUERY CACHE"
,
/* 273 */
"cmd ::= SYNCDB ids REPLICA"
,
/* 274 */
"cmd ::= ALTER TABLE ids cpxName ADD COLUMN columnlist"
,
/* 275 */
"cmd ::= ALTER TABLE ids cpxName DROP COLUMN ids"
,
/* 276 */
"cmd ::= ALTER TABLE ids cpxName MODIFY COLUMN columnlist"
,
/* 277 */
"cmd ::= ALTER TABLE ids cpxName ADD TAG columnlist"
,
/* 278 */
"cmd ::= ALTER TABLE ids cpxName DROP TAG ids"
,
/* 279 */
"cmd ::= ALTER TABLE ids cpxName CHANGE TAG ids ids"
,
/* 280 */
"cmd ::= ALTER TABLE ids cpxName SET TAG ids EQ tagitem"
,
/* 281 */
"cmd ::= ALTER TABLE ids cpxName MODIFY TAG columnlist"
,
/* 282 */
"cmd ::= ALTER STABLE ids cpxName ADD COLUMN columnlist"
,
/* 283 */
"cmd ::= ALTER STABLE ids cpxName DROP COLUMN ids"
,
/* 284 */
"cmd ::= ALTER STABLE ids cpxName MODIFY COLUMN columnlist"
,
/* 285 */
"cmd ::= ALTER STABLE ids cpxName ADD TAG columnlist"
,
/* 286 */
"cmd ::= ALTER STABLE ids cpxName DROP TAG ids"
,
/* 287 */
"cmd ::= ALTER STABLE ids cpxName CHANGE TAG ids ids"
,
/* 288 */
"cmd ::= ALTER STABLE ids cpxName SET TAG ids EQ tagitem"
,
/* 289 */
"cmd ::= ALTER STABLE ids cpxName MODIFY TAG columnlist"
,
/* 290 */
"cmd ::= KILL CONNECTION INTEGER"
,
/* 291 */
"cmd ::= KILL STREAM INTEGER COLON INTEGER"
,
/* 292 */
"cmd ::= KILL QUERY INTEGER COLON INTEGER"
,
/* 150 */
"create_table_args ::= ifnotexists ids cpxName to_opt split_opt AS select"
,
/* 151 */
"to_opt ::="
,
/* 152 */
"to_opt ::= TO ids cpxName"
,
/* 153 */
"split_opt ::="
,
/* 154 */
"split_opt ::= SPLIT ids"
,
/* 155 */
"columnlist ::= columnlist COMMA column"
,
/* 156 */
"columnlist ::= column"
,
/* 157 */
"column ::= ids typename"
,
/* 158 */
"tagitemlist ::= tagitemlist COMMA tagitem"
,
/* 159 */
"tagitemlist ::= tagitem"
,
/* 160 */
"tagitem ::= INTEGER"
,
/* 161 */
"tagitem ::= FLOAT"
,
/* 162 */
"tagitem ::= STRING"
,
/* 163 */
"tagitem ::= BOOL"
,
/* 164 */
"tagitem ::= NULL"
,
/* 165 */
"tagitem ::= NOW"
,
/* 166 */
"tagitem ::= NOW PLUS VARIABLE"
,
/* 167 */
"tagitem ::= NOW MINUS VARIABLE"
,
/* 168 */
"tagitem ::= MINUS INTEGER"
,
/* 169 */
"tagitem ::= MINUS FLOAT"
,
/* 170 */
"tagitem ::= PLUS INTEGER"
,
/* 171 */
"tagitem ::= PLUS FLOAT"
,
/* 172 */
"select ::= SELECT selcollist from where_opt interval_option sliding_opt session_option windowstate_option fill_opt groupby_opt having_opt orderby_opt slimit_opt limit_opt"
,
/* 173 */
"select ::= LP select RP"
,
/* 174 */
"union ::= select"
,
/* 175 */
"union ::= union UNION ALL select"
,
/* 176 */
"cmd ::= union"
,
/* 177 */
"select ::= SELECT selcollist"
,
/* 178 */
"sclp ::= selcollist COMMA"
,
/* 179 */
"sclp ::="
,
/* 180 */
"selcollist ::= sclp distinct expr as"
,
/* 181 */
"selcollist ::= sclp STAR"
,
/* 182 */
"as ::= AS ids"
,
/* 183 */
"as ::= ids"
,
/* 184 */
"as ::="
,
/* 185 */
"distinct ::= DISTINCT"
,
/* 186 */
"distinct ::="
,
/* 187 */
"from ::= FROM tablelist"
,
/* 188 */
"from ::= FROM sub"
,
/* 189 */
"sub ::= LP union RP"
,
/* 190 */
"sub ::= LP union RP ids"
,
/* 191 */
"sub ::= sub COMMA LP union RP ids"
,
/* 192 */
"tablelist ::= ids cpxName"
,
/* 193 */
"tablelist ::= ids cpxName ids"
,
/* 194 */
"tablelist ::= tablelist COMMA ids cpxName"
,
/* 195 */
"tablelist ::= tablelist COMMA ids cpxName ids"
,
/* 196 */
"tmvar ::= VARIABLE"
,
/* 197 */
"interval_option ::= intervalKey LP tmvar RP"
,
/* 198 */
"interval_option ::= intervalKey LP tmvar COMMA tmvar RP"
,
/* 199 */
"interval_option ::="
,
/* 200 */
"intervalKey ::= INTERVAL"
,
/* 201 */
"intervalKey ::= EVERY"
,
/* 202 */
"session_option ::="
,
/* 203 */
"session_option ::= SESSION LP ids cpxName COMMA tmvar RP"
,
/* 204 */
"windowstate_option ::="
,
/* 205 */
"windowstate_option ::= STATE_WINDOW LP ids RP"
,
/* 206 */
"fill_opt ::="
,
/* 207 */
"fill_opt ::= FILL LP ID COMMA tagitemlist RP"
,
/* 208 */
"fill_opt ::= FILL LP ID RP"
,
/* 209 */
"sliding_opt ::= SLIDING LP tmvar RP"
,
/* 210 */
"sliding_opt ::="
,
/* 211 */
"orderby_opt ::="
,
/* 212 */
"orderby_opt ::= ORDER BY sortlist"
,
/* 213 */
"sortlist ::= sortlist COMMA item sortorder"
,
/* 214 */
"sortlist ::= item sortorder"
,
/* 215 */
"item ::= ids cpxName"
,
/* 216 */
"sortorder ::= ASC"
,
/* 217 */
"sortorder ::= DESC"
,
/* 218 */
"sortorder ::="
,
/* 219 */
"groupby_opt ::="
,
/* 220 */
"groupby_opt ::= GROUP BY grouplist"
,
/* 221 */
"grouplist ::= grouplist COMMA item"
,
/* 222 */
"grouplist ::= item"
,
/* 223 */
"having_opt ::="
,
/* 224 */
"having_opt ::= HAVING expr"
,
/* 225 */
"limit_opt ::="
,
/* 226 */
"limit_opt ::= LIMIT signed"
,
/* 227 */
"limit_opt ::= LIMIT signed OFFSET signed"
,
/* 228 */
"limit_opt ::= LIMIT signed COMMA signed"
,
/* 229 */
"slimit_opt ::="
,
/* 230 */
"slimit_opt ::= SLIMIT signed"
,
/* 231 */
"slimit_opt ::= SLIMIT signed SOFFSET signed"
,
/* 232 */
"slimit_opt ::= SLIMIT signed COMMA signed"
,
/* 233 */
"where_opt ::="
,
/* 234 */
"where_opt ::= WHERE expr"
,
/* 235 */
"expr ::= LP expr RP"
,
/* 236 */
"expr ::= ID"
,
/* 237 */
"expr ::= ID DOT ID"
,
/* 238 */
"expr ::= ID DOT STAR"
,
/* 239 */
"expr ::= INTEGER"
,
/* 240 */
"expr ::= MINUS INTEGER"
,
/* 241 */
"expr ::= PLUS INTEGER"
,
/* 242 */
"expr ::= FLOAT"
,
/* 243 */
"expr ::= MINUS FLOAT"
,
/* 244 */
"expr ::= PLUS FLOAT"
,
/* 245 */
"expr ::= STRING"
,
/* 246 */
"expr ::= NOW"
,
/* 247 */
"expr ::= VARIABLE"
,
/* 248 */
"expr ::= PLUS VARIABLE"
,
/* 249 */
"expr ::= MINUS VARIABLE"
,
/* 250 */
"expr ::= BOOL"
,
/* 251 */
"expr ::= NULL"
,
/* 252 */
"expr ::= ID LP exprlist RP"
,
/* 253 */
"expr ::= ID LP STAR RP"
,
/* 254 */
"expr ::= expr IS NULL"
,
/* 255 */
"expr ::= expr IS NOT NULL"
,
/* 256 */
"expr ::= expr LT expr"
,
/* 257 */
"expr ::= expr GT expr"
,
/* 258 */
"expr ::= expr LE expr"
,
/* 259 */
"expr ::= expr GE expr"
,
/* 260 */
"expr ::= expr NE expr"
,
/* 261 */
"expr ::= expr EQ expr"
,
/* 262 */
"expr ::= expr BETWEEN expr AND expr"
,
/* 263 */
"expr ::= expr AND expr"
,
/* 264 */
"expr ::= expr OR expr"
,
/* 265 */
"expr ::= expr PLUS expr"
,
/* 266 */
"expr ::= expr MINUS expr"
,
/* 267 */
"expr ::= expr STAR expr"
,
/* 268 */
"expr ::= expr SLASH expr"
,
/* 269 */
"expr ::= expr REM expr"
,
/* 270 */
"expr ::= expr LIKE expr"
,
/* 271 */
"expr ::= expr IN LP exprlist RP"
,
/* 272 */
"exprlist ::= exprlist COMMA expritem"
,
/* 273 */
"exprlist ::= expritem"
,
/* 274 */
"expritem ::= expr"
,
/* 275 */
"expritem ::="
,
/* 276 */
"cmd ::= RESET QUERY CACHE"
,
/* 277 */
"cmd ::= SYNCDB ids REPLICA"
,
/* 278 */
"cmd ::= ALTER TABLE ids cpxName ADD COLUMN columnlist"
,
/* 279 */
"cmd ::= ALTER TABLE ids cpxName DROP COLUMN ids"
,
/* 280 */
"cmd ::= ALTER TABLE ids cpxName MODIFY COLUMN columnlist"
,
/* 281 */
"cmd ::= ALTER TABLE ids cpxName ADD TAG columnlist"
,
/* 282 */
"cmd ::= ALTER TABLE ids cpxName DROP TAG ids"
,
/* 283 */
"cmd ::= ALTER TABLE ids cpxName CHANGE TAG ids ids"
,
/* 284 */
"cmd ::= ALTER TABLE ids cpxName SET TAG ids EQ tagitem"
,
/* 285 */
"cmd ::= ALTER TABLE ids cpxName MODIFY TAG columnlist"
,
/* 286 */
"cmd ::= ALTER STABLE ids cpxName ADD COLUMN columnlist"
,
/* 287 */
"cmd ::= ALTER STABLE ids cpxName DROP COLUMN ids"
,
/* 288 */
"cmd ::= ALTER STABLE ids cpxName MODIFY COLUMN columnlist"
,
/* 289 */
"cmd ::= ALTER STABLE ids cpxName ADD TAG columnlist"
,
/* 290 */
"cmd ::= ALTER STABLE ids cpxName DROP TAG ids"
,
/* 291 */
"cmd ::= ALTER STABLE ids cpxName CHANGE TAG ids ids"
,
/* 292 */
"cmd ::= ALTER STABLE ids cpxName SET TAG ids EQ tagitem"
,
/* 293 */
"cmd ::= ALTER STABLE ids cpxName MODIFY TAG columnlist"
,
/* 294 */
"cmd ::= KILL CONNECTION INTEGER"
,
/* 295 */
"cmd ::= KILL STREAM INTEGER COLON INTEGER"
,
/* 296 */
"cmd ::= KILL QUERY INTEGER COLON INTEGER"
,
};
#endif
/* NDEBUG */
...
...
@@ -1702,60 +1519,60 @@ static void yy_destructor(
** inside the C code.
*/
/********* Begin destructor definitions ***************************************/
case
20
6
:
/* exprlist */
case
25
0
:
/* selcollist */
case
26
4
:
/* sclp */
case
20
8
:
/* exprlist */
case
25
5
:
/* selcollist */
case
26
9
:
/* sclp */
{
tSqlExprListDestroy
((
yypminor
->
yy
421
));
tSqlExprListDestroy
((
yypminor
->
yy
89
));
}
break
;
case
22
1
:
/* intitemlist */
case
22
3
:
/* keep */
case
24
4
:
/* columnlist */
case
24
5
:
/* tagitemlist */
case
24
6
:
/* tagNamelist */
case
2
57
:
/* fill_opt */
case
2
58
:
/* groupby_opt */
case
26
0
:
/* orderby_opt */
case
27
2
:
/* sortlist */
case
2
76
:
/* grouplist */
{
taosArrayDestroy
((
yypminor
->
yy
421
));
case
22
3
:
/* intitemlist */
case
22
5
:
/* keep */
case
24
6
:
/* columnlist */
case
24
7
:
/* tagitemlist */
case
24
8
:
/* tagNamelist */
case
2
62
:
/* fill_opt */
case
2
63
:
/* groupby_opt */
case
26
5
:
/* orderby_opt */
case
27
7
:
/* sortlist */
case
2
81
:
/* grouplist */
{
taosArrayDestroy
((
yypminor
->
yy
89
));
}
break
;
case
24
2
:
/* create_table_list */
case
24
4
:
/* create_table_list */
{
destroyCreateTableSql
((
yypminor
->
yy
438
));
destroyCreateTableSql
((
yypminor
->
yy
86
));
}
break
;
case
2
47
:
/* select */
case
2
51
:
/* select */
{
destroySqlNode
((
yypminor
->
yy
56
));
destroySqlNode
((
yypminor
->
yy
378
));
}
break
;
case
25
1
:
/* from */
case
2
68
:
/* tablelist */
case
2
69
:
/* sub */
case
25
6
:
/* from */
case
2
73
:
/* tablelist */
case
2
74
:
/* sub */
{
destroyRelationInfo
((
yypminor
->
yy
8
));
destroyRelationInfo
((
yypminor
->
yy
166
));
}
break
;
case
25
2
:
/* where_opt */
case
2
59
:
/* having_opt */
case
2
66
:
/* expr */
case
2
77
:
/* expritem */
case
25
7
:
/* where_opt */
case
2
64
:
/* having_opt */
case
2
71
:
/* expr */
case
2
82
:
/* expritem */
{
tSqlExprDestroy
((
yypminor
->
yy
439
));
tSqlExprDestroy
((
yypminor
->
yy
342
));
}
break
;
case
26
3
:
/* union */
case
26
8
:
/* union */
{
destroyAllSqlNode
((
yypminor
->
yy
421
));
destroyAllSqlNode
((
yypminor
->
yy
89
));
}
break
;
case
27
3
:
/* sortitem */
case
27
8
:
/* sortitem */
{
tVariantDestroy
(
&
(
yypminor
->
yy
430
));
tVariantDestroy
(
&
(
yypminor
->
yy
112
));
}
break
;
/********* End destructor definitions *****************************************/
...
...
@@ -1881,18 +1698,15 @@ static YYACTIONTYPE yy_find_shift_action(
do
{
i
=
yy_shift_ofst
[
stateno
];
assert
(
i
>=
0
);
assert
(
i
<=
YY_ACTTAB_COUNT
);
assert
(
i
+
YYNTOKEN
<=
(
int
)
YY_NLOOKAHEAD
);
/* assert( i+YYNTOKEN<=(int)YY_NLOOKAHEAD ); */
assert
(
iLookAhead
!=
YYNOCODE
);
assert
(
iLookAhead
<
YYNTOKEN
);
i
+=
iLookAhead
;
assert
(
i
<
(
int
)
YY_NLOOKAHEAD
);
if
(
yy_lookahead
[
i
]
!=
iLookAhead
){
if
(
i
>=
YY_NLOOKAHEAD
||
yy_lookahead
[
i
]
!=
iLookAhead
){
#ifdef YYFALLBACK
YYCODETYPE
iFallback
;
/* Fallback token */
assert
(
iLookAhead
<
sizeof
(
yyFallback
)
/
sizeof
(
yyFallback
[
0
])
);
iFallback
=
yyFallback
[
iLookAhead
];
if
(
iFallback
!=
0
){
if
(
iLookAhead
<
sizeof
(
yyFallback
)
/
sizeof
(
yyFallback
[
0
])
&&
(
iFallback
=
yyFallback
[
iLookAhead
])
!=
0
){
#ifndef NDEBUG
if
(
yyTraceFILE
){
fprintf
(
yyTraceFILE
,
"%sFALLBACK %s => %s
\n
"
,
...
...
@@ -1907,8 +1721,16 @@ static YYACTIONTYPE yy_find_shift_action(
#ifdef YYWILDCARD
{
int
j
=
i
-
iLookAhead
+
YYWILDCARD
;
assert
(
j
<
(
int
)(
sizeof
(
yy_lookahead
)
/
sizeof
(
yy_lookahead
[
0
]))
);
if
(
yy_lookahead
[
j
]
==
YYWILDCARD
&&
iLookAhead
>
0
){
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
){
#ifndef NDEBUG
if
(
yyTraceFILE
){
fprintf
(
yyTraceFILE
,
"%sWILDCARD %s => %s
\n
"
,
...
...
@@ -1922,7 +1744,6 @@ static YYACTIONTYPE yy_find_shift_action(
#endif
/* YYWILDCARD */
return
yy_default
[
stateno
];
}
else
{
assert
(
i
>=
0
&&
i
<
(
int
)(
sizeof
(
yy_action
)
/
sizeof
(
yy_action
[
0
]))
);
return
yy_action
[
i
];
}
}
while
(
1
);
...
...
@@ -2041,600 +1862,310 @@ static void yy_shift(
yyTraceShift
(
yypParser
,
yyNewState
,
"Shift"
);
}
/* For rule J, yyRuleInfoLhs[J] contains the symbol on the left-hand side
** of that rule */
static
const
YYCODETYPE
yyRuleInfoLhs
[]
=
{
197
,
/* (0) program ::= cmd */
198
,
/* (1) cmd ::= SHOW DATABASES */
198
,
/* (2) cmd ::= SHOW TOPICS */
198
,
/* (3) cmd ::= SHOW FUNCTIONS */
198
,
/* (4) cmd ::= SHOW MNODES */
198
,
/* (5) cmd ::= SHOW DNODES */
198
,
/* (6) cmd ::= SHOW ACCOUNTS */
198
,
/* (7) cmd ::= SHOW USERS */
198
,
/* (8) cmd ::= SHOW MODULES */
198
,
/* (9) cmd ::= SHOW QUERIES */
198
,
/* (10) cmd ::= SHOW CONNECTIONS */
198
,
/* (11) cmd ::= SHOW STREAMS */
198
,
/* (12) cmd ::= SHOW VARIABLES */
198
,
/* (13) cmd ::= SHOW SCORES */
198
,
/* (14) cmd ::= SHOW GRANTS */
198
,
/* (15) cmd ::= SHOW VNODES */
198
,
/* (16) cmd ::= SHOW VNODES IPTOKEN */
199
,
/* (17) dbPrefix ::= */
199
,
/* (18) dbPrefix ::= ids DOT */
201
,
/* (19) cpxName ::= */
201
,
/* (20) cpxName ::= DOT ids */
198
,
/* (21) cmd ::= SHOW CREATE TABLE ids cpxName */
198
,
/* (22) cmd ::= SHOW CREATE STABLE ids cpxName */
198
,
/* (23) cmd ::= SHOW CREATE DATABASE ids */
198
,
/* (24) cmd ::= SHOW dbPrefix TABLES */
198
,
/* (25) cmd ::= SHOW dbPrefix TABLES LIKE ids */
198
,
/* (26) cmd ::= SHOW dbPrefix STABLES */
198
,
/* (27) cmd ::= SHOW dbPrefix STABLES LIKE ids */
198
,
/* (28) cmd ::= SHOW dbPrefix VGROUPS */
198
,
/* (29) cmd ::= DROP TABLE ifexists ids cpxName */
198
,
/* (30) cmd ::= DROP STABLE ifexists ids cpxName */
198
,
/* (31) cmd ::= DROP DATABASE ifexists ids */
198
,
/* (32) cmd ::= DROP TOPIC ifexists ids */
198
,
/* (33) cmd ::= DROP FUNCTION ids */
198
,
/* (34) cmd ::= DROP DNODE ids */
198
,
/* (35) cmd ::= DROP USER ids */
198
,
/* (36) cmd ::= DROP ACCOUNT ids */
198
,
/* (37) cmd ::= USE ids */
198
,
/* (38) cmd ::= DESCRIBE ids cpxName */
198
,
/* (39) cmd ::= DESC ids cpxName */
198
,
/* (40) cmd ::= ALTER USER ids PASS ids */
198
,
/* (41) cmd ::= ALTER USER ids PRIVILEGE ids */
198
,
/* (42) cmd ::= ALTER DNODE ids ids */
198
,
/* (43) cmd ::= ALTER DNODE ids ids ids */
198
,
/* (44) cmd ::= ALTER LOCAL ids */
198
,
/* (45) cmd ::= ALTER LOCAL ids ids */
198
,
/* (46) cmd ::= ALTER DATABASE ids alter_db_optr */
198
,
/* (47) cmd ::= ALTER TOPIC ids alter_topic_optr */
198
,
/* (48) cmd ::= ALTER ACCOUNT ids acct_optr */
198
,
/* (49) cmd ::= ALTER ACCOUNT ids PASS ids acct_optr */
198
,
/* (50) cmd ::= COMPACT VNODES IN LP exprlist RP */
200
,
/* (51) ids ::= ID */
200
,
/* (52) ids ::= STRING */
202
,
/* (53) ifexists ::= IF EXISTS */
202
,
/* (54) ifexists ::= */
207
,
/* (55) ifnotexists ::= IF NOT EXISTS */
207
,
/* (56) ifnotexists ::= */
198
,
/* (57) cmd ::= CREATE DNODE ids */
198
,
/* (58) cmd ::= CREATE ACCOUNT ids PASS ids acct_optr */
198
,
/* (59) cmd ::= CREATE DATABASE ifnotexists ids db_optr */
198
,
/* (60) cmd ::= CREATE TOPIC ifnotexists ids topic_optr */
198
,
/* (61) cmd ::= CREATE FUNCTION ids AS ids OUTPUTTYPE typename bufsize */
198
,
/* (62) cmd ::= CREATE AGGREGATE FUNCTION ids AS ids OUTPUTTYPE typename bufsize */
198
,
/* (63) cmd ::= CREATE USER ids PASS ids */
211
,
/* (64) bufsize ::= */
211
,
/* (65) bufsize ::= BUFSIZE INTEGER */
212
,
/* (66) pps ::= */
212
,
/* (67) pps ::= PPS INTEGER */
213
,
/* (68) tseries ::= */
213
,
/* (69) tseries ::= TSERIES INTEGER */
214
,
/* (70) dbs ::= */
214
,
/* (71) dbs ::= DBS INTEGER */
215
,
/* (72) streams ::= */
215
,
/* (73) streams ::= STREAMS INTEGER */
216
,
/* (74) storage ::= */
216
,
/* (75) storage ::= STORAGE INTEGER */
217
,
/* (76) qtime ::= */
217
,
/* (77) qtime ::= QTIME INTEGER */
218
,
/* (78) users ::= */
218
,
/* (79) users ::= USERS INTEGER */
219
,
/* (80) conns ::= */
219
,
/* (81) conns ::= CONNS INTEGER */
220
,
/* (82) state ::= */
220
,
/* (83) state ::= STATE ids */
205
,
/* (84) acct_optr ::= pps tseries storage streams qtime dbs users conns state */
221
,
/* (85) intitemlist ::= intitemlist COMMA intitem */
221
,
/* (86) intitemlist ::= intitem */
222
,
/* (87) intitem ::= INTEGER */
223
,
/* (88) keep ::= KEEP intitemlist */
224
,
/* (89) cache ::= CACHE INTEGER */
225
,
/* (90) replica ::= REPLICA INTEGER */
226
,
/* (91) quorum ::= QUORUM INTEGER */
227
,
/* (92) days ::= DAYS INTEGER */
228
,
/* (93) minrows ::= MINROWS INTEGER */
229
,
/* (94) maxrows ::= MAXROWS INTEGER */
230
,
/* (95) blocks ::= BLOCKS INTEGER */
231
,
/* (96) ctime ::= CTIME INTEGER */
232
,
/* (97) wal ::= WAL INTEGER */
233
,
/* (98) fsync ::= FSYNC INTEGER */
234
,
/* (99) comp ::= COMP INTEGER */
235
,
/* (100) prec ::= PRECISION STRING */
236
,
/* (101) update ::= UPDATE INTEGER */
237
,
/* (102) cachelast ::= CACHELAST INTEGER */
238
,
/* (103) partitions ::= PARTITIONS INTEGER */
208
,
/* (104) db_optr ::= */
208
,
/* (105) db_optr ::= db_optr cache */
208
,
/* (106) db_optr ::= db_optr replica */
208
,
/* (107) db_optr ::= db_optr quorum */
208
,
/* (108) db_optr ::= db_optr days */
208
,
/* (109) db_optr ::= db_optr minrows */
208
,
/* (110) db_optr ::= db_optr maxrows */
208
,
/* (111) db_optr ::= db_optr blocks */
208
,
/* (112) db_optr ::= db_optr ctime */
208
,
/* (113) db_optr ::= db_optr wal */
208
,
/* (114) db_optr ::= db_optr fsync */
208
,
/* (115) db_optr ::= db_optr comp */
208
,
/* (116) db_optr ::= db_optr prec */
208
,
/* (117) db_optr ::= db_optr keep */
208
,
/* (118) db_optr ::= db_optr update */
208
,
/* (119) db_optr ::= db_optr cachelast */
209
,
/* (120) topic_optr ::= db_optr */
209
,
/* (121) topic_optr ::= topic_optr partitions */
203
,
/* (122) alter_db_optr ::= */
203
,
/* (123) alter_db_optr ::= alter_db_optr replica */
203
,
/* (124) alter_db_optr ::= alter_db_optr quorum */
203
,
/* (125) alter_db_optr ::= alter_db_optr keep */
203
,
/* (126) alter_db_optr ::= alter_db_optr blocks */
203
,
/* (127) alter_db_optr ::= alter_db_optr comp */
203
,
/* (128) alter_db_optr ::= alter_db_optr update */
203
,
/* (129) alter_db_optr ::= alter_db_optr cachelast */
204
,
/* (130) alter_topic_optr ::= alter_db_optr */
204
,
/* (131) alter_topic_optr ::= alter_topic_optr partitions */
210
,
/* (132) typename ::= ids */
210
,
/* (133) typename ::= ids LP signed RP */
210
,
/* (134) typename ::= ids UNSIGNED */
239
,
/* (135) signed ::= INTEGER */
239
,
/* (136) signed ::= PLUS INTEGER */
239
,
/* (137) signed ::= MINUS INTEGER */
198
,
/* (138) cmd ::= CREATE TABLE create_table_args */
198
,
/* (139) cmd ::= CREATE TABLE create_stable_args */
198
,
/* (140) cmd ::= CREATE STABLE create_stable_args */
198
,
/* (141) cmd ::= CREATE TABLE create_table_list */
242
,
/* (142) create_table_list ::= create_from_stable */
242
,
/* (143) create_table_list ::= create_table_list create_from_stable */
240
,
/* (144) create_table_args ::= ifnotexists ids cpxName LP columnlist RP */
241
,
/* (145) create_stable_args ::= ifnotexists ids cpxName LP columnlist RP TAGS LP columnlist RP */
243
,
/* (146) create_from_stable ::= ifnotexists ids cpxName USING ids cpxName TAGS LP tagitemlist RP */
243
,
/* (147) create_from_stable ::= ifnotexists ids cpxName USING ids cpxName LP tagNamelist RP TAGS LP tagitemlist RP */
246
,
/* (148) tagNamelist ::= tagNamelist COMMA ids */
246
,
/* (149) tagNamelist ::= ids */
240
,
/* (150) create_table_args ::= ifnotexists ids cpxName AS select */
244
,
/* (151) columnlist ::= columnlist COMMA column */
244
,
/* (152) columnlist ::= column */
248
,
/* (153) column ::= ids typename */
245
,
/* (154) tagitemlist ::= tagitemlist COMMA tagitem */
245
,
/* (155) tagitemlist ::= tagitem */
249
,
/* (156) tagitem ::= INTEGER */
249
,
/* (157) tagitem ::= FLOAT */
249
,
/* (158) tagitem ::= STRING */
249
,
/* (159) tagitem ::= BOOL */
249
,
/* (160) tagitem ::= NULL */
249
,
/* (161) tagitem ::= NOW */
249
,
/* (162) tagitem ::= NOW PLUS VARIABLE */
249
,
/* (163) tagitem ::= NOW MINUS VARIABLE */
249
,
/* (164) tagitem ::= MINUS INTEGER */
249
,
/* (165) tagitem ::= MINUS FLOAT */
249
,
/* (166) tagitem ::= PLUS INTEGER */
249
,
/* (167) tagitem ::= PLUS FLOAT */
247
,
/* (168) select ::= SELECT selcollist from where_opt interval_option sliding_opt session_option windowstate_option fill_opt groupby_opt having_opt orderby_opt slimit_opt limit_opt */
247
,
/* (169) select ::= LP select RP */
263
,
/* (170) union ::= select */
263
,
/* (171) union ::= union UNION ALL select */
198
,
/* (172) cmd ::= union */
247
,
/* (173) select ::= SELECT selcollist */
264
,
/* (174) sclp ::= selcollist COMMA */
264
,
/* (175) sclp ::= */
250
,
/* (176) selcollist ::= sclp distinct expr as */
250
,
/* (177) selcollist ::= sclp STAR */
267
,
/* (178) as ::= AS ids */
267
,
/* (179) as ::= ids */
267
,
/* (180) as ::= */
265
,
/* (181) distinct ::= DISTINCT */
265
,
/* (182) distinct ::= */
251
,
/* (183) from ::= FROM tablelist */
251
,
/* (184) from ::= FROM sub */
269
,
/* (185) sub ::= LP union RP */
269
,
/* (186) sub ::= LP union RP ids */
269
,
/* (187) sub ::= sub COMMA LP union RP ids */
268
,
/* (188) tablelist ::= ids cpxName */
268
,
/* (189) tablelist ::= ids cpxName ids */
268
,
/* (190) tablelist ::= tablelist COMMA ids cpxName */
268
,
/* (191) tablelist ::= tablelist COMMA ids cpxName ids */
270
,
/* (192) tmvar ::= VARIABLE */
253
,
/* (193) interval_option ::= intervalKey LP tmvar RP */
253
,
/* (194) interval_option ::= intervalKey LP tmvar COMMA tmvar RP */
253
,
/* (195) interval_option ::= */
271
,
/* (196) intervalKey ::= INTERVAL */
271
,
/* (197) intervalKey ::= EVERY */
255
,
/* (198) session_option ::= */
255
,
/* (199) session_option ::= SESSION LP ids cpxName COMMA tmvar RP */
256
,
/* (200) windowstate_option ::= */
256
,
/* (201) windowstate_option ::= STATE_WINDOW LP ids RP */
257
,
/* (202) fill_opt ::= */
257
,
/* (203) fill_opt ::= FILL LP ID COMMA tagitemlist RP */
257
,
/* (204) fill_opt ::= FILL LP ID RP */
254
,
/* (205) sliding_opt ::= SLIDING LP tmvar RP */
254
,
/* (206) sliding_opt ::= */
260
,
/* (207) orderby_opt ::= */
260
,
/* (208) orderby_opt ::= ORDER BY sortlist */
272
,
/* (209) sortlist ::= sortlist COMMA item sortorder */
272
,
/* (210) sortlist ::= item sortorder */
274
,
/* (211) item ::= ids cpxName */
275
,
/* (212) sortorder ::= ASC */
275
,
/* (213) sortorder ::= DESC */
275
,
/* (214) sortorder ::= */
258
,
/* (215) groupby_opt ::= */
258
,
/* (216) groupby_opt ::= GROUP BY grouplist */
276
,
/* (217) grouplist ::= grouplist COMMA item */
276
,
/* (218) grouplist ::= item */
259
,
/* (219) having_opt ::= */
259
,
/* (220) having_opt ::= HAVING expr */
262
,
/* (221) limit_opt ::= */
262
,
/* (222) limit_opt ::= LIMIT signed */
262
,
/* (223) limit_opt ::= LIMIT signed OFFSET signed */
262
,
/* (224) limit_opt ::= LIMIT signed COMMA signed */
261
,
/* (225) slimit_opt ::= */
261
,
/* (226) slimit_opt ::= SLIMIT signed */
261
,
/* (227) slimit_opt ::= SLIMIT signed SOFFSET signed */
261
,
/* (228) slimit_opt ::= SLIMIT signed COMMA signed */
252
,
/* (229) where_opt ::= */
252
,
/* (230) where_opt ::= WHERE expr */
266
,
/* (231) expr ::= LP expr RP */
266
,
/* (232) expr ::= ID */
266
,
/* (233) expr ::= ID DOT ID */
266
,
/* (234) expr ::= ID DOT STAR */
266
,
/* (235) expr ::= INTEGER */
266
,
/* (236) expr ::= MINUS INTEGER */
266
,
/* (237) expr ::= PLUS INTEGER */
266
,
/* (238) expr ::= FLOAT */
266
,
/* (239) expr ::= MINUS FLOAT */
266
,
/* (240) expr ::= PLUS FLOAT */
266
,
/* (241) expr ::= STRING */
266
,
/* (242) expr ::= NOW */
266
,
/* (243) expr ::= VARIABLE */
266
,
/* (244) expr ::= PLUS VARIABLE */
266
,
/* (245) expr ::= MINUS VARIABLE */
266
,
/* (246) expr ::= BOOL */
266
,
/* (247) expr ::= NULL */
266
,
/* (248) expr ::= ID LP exprlist RP */
266
,
/* (249) expr ::= ID LP STAR RP */
266
,
/* (250) expr ::= expr IS NULL */
266
,
/* (251) expr ::= expr IS NOT NULL */
266
,
/* (252) expr ::= expr LT expr */
266
,
/* (253) expr ::= expr GT expr */
266
,
/* (254) expr ::= expr LE expr */
266
,
/* (255) expr ::= expr GE expr */
266
,
/* (256) expr ::= expr NE expr */
266
,
/* (257) expr ::= expr EQ expr */
266
,
/* (258) expr ::= expr BETWEEN expr AND expr */
266
,
/* (259) expr ::= expr AND expr */
266
,
/* (260) expr ::= expr OR expr */
266
,
/* (261) expr ::= expr PLUS expr */
266
,
/* (262) expr ::= expr MINUS expr */
266
,
/* (263) expr ::= expr STAR expr */
266
,
/* (264) expr ::= expr SLASH expr */
266
,
/* (265) expr ::= expr REM expr */
266
,
/* (266) expr ::= expr LIKE expr */
266
,
/* (267) expr ::= expr IN LP exprlist RP */
206
,
/* (268) exprlist ::= exprlist COMMA expritem */
206
,
/* (269) exprlist ::= expritem */
277
,
/* (270) expritem ::= expr */
277
,
/* (271) expritem ::= */
198
,
/* (272) cmd ::= RESET QUERY CACHE */
198
,
/* (273) cmd ::= SYNCDB ids REPLICA */
198
,
/* (274) cmd ::= ALTER TABLE ids cpxName ADD COLUMN columnlist */
198
,
/* (275) cmd ::= ALTER TABLE ids cpxName DROP COLUMN ids */
198
,
/* (276) cmd ::= ALTER TABLE ids cpxName MODIFY COLUMN columnlist */
198
,
/* (277) cmd ::= ALTER TABLE ids cpxName ADD TAG columnlist */
198
,
/* (278) cmd ::= ALTER TABLE ids cpxName DROP TAG ids */
198
,
/* (279) cmd ::= ALTER TABLE ids cpxName CHANGE TAG ids ids */
198
,
/* (280) cmd ::= ALTER TABLE ids cpxName SET TAG ids EQ tagitem */
198
,
/* (281) cmd ::= ALTER TABLE ids cpxName MODIFY TAG columnlist */
198
,
/* (282) cmd ::= ALTER STABLE ids cpxName ADD COLUMN columnlist */
198
,
/* (283) cmd ::= ALTER STABLE ids cpxName DROP COLUMN ids */
198
,
/* (284) cmd ::= ALTER STABLE ids cpxName MODIFY COLUMN columnlist */
198
,
/* (285) cmd ::= ALTER STABLE ids cpxName ADD TAG columnlist */
198
,
/* (286) cmd ::= ALTER STABLE ids cpxName DROP TAG ids */
198
,
/* (287) cmd ::= ALTER STABLE ids cpxName CHANGE TAG ids ids */
198
,
/* (288) cmd ::= ALTER STABLE ids cpxName SET TAG ids EQ tagitem */
198
,
/* (289) cmd ::= ALTER STABLE ids cpxName MODIFY TAG columnlist */
198
,
/* (290) cmd ::= KILL CONNECTION INTEGER */
198
,
/* (291) cmd ::= KILL STREAM INTEGER COLON INTEGER */
198
,
/* (292) 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 IPTOKEN */
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 ids */
-
3
,
/* (26) cmd ::= SHOW dbPrefix STABLES */
-
5
,
/* (27) cmd ::= SHOW dbPrefix STABLES LIKE ids */
-
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 */
-
5
,
/* (150) create_table_args ::= ifnotexists ids cpxName AS select */
-
3
,
/* (151) columnlist ::= columnlist COMMA column */
-
1
,
/* (152) columnlist ::= column */
-
2
,
/* (153) column ::= ids typename */
-
3
,
/* (154) tagitemlist ::= tagitemlist COMMA tagitem */
-
1
,
/* (155) tagitemlist ::= tagitem */
-
1
,
/* (156) tagitem ::= INTEGER */
-
1
,
/* (157) tagitem ::= FLOAT */
-
1
,
/* (158) tagitem ::= STRING */
-
1
,
/* (159) tagitem ::= BOOL */
-
1
,
/* (160) tagitem ::= NULL */
-
1
,
/* (161) tagitem ::= NOW */
-
3
,
/* (162) tagitem ::= NOW PLUS VARIABLE */
-
3
,
/* (163) tagitem ::= NOW MINUS VARIABLE */
-
2
,
/* (164) tagitem ::= MINUS INTEGER */
-
2
,
/* (165) tagitem ::= MINUS FLOAT */
-
2
,
/* (166) tagitem ::= PLUS INTEGER */
-
2
,
/* (167) tagitem ::= PLUS FLOAT */
-
14
,
/* (168) select ::= SELECT selcollist from where_opt interval_option sliding_opt session_option windowstate_option fill_opt groupby_opt having_opt orderby_opt slimit_opt limit_opt */
-
3
,
/* (169) select ::= LP select RP */
-
1
,
/* (170) union ::= select */
-
4
,
/* (171) union ::= union UNION ALL select */
-
1
,
/* (172) cmd ::= union */
-
2
,
/* (173) select ::= SELECT selcollist */
-
2
,
/* (174) sclp ::= selcollist COMMA */
0
,
/* (175) sclp ::= */
-
4
,
/* (176) selcollist ::= sclp distinct expr as */
-
2
,
/* (177) selcollist ::= sclp STAR */
-
2
,
/* (178) as ::= AS ids */
-
1
,
/* (179) as ::= ids */
0
,
/* (180) as ::= */
-
1
,
/* (181) distinct ::= DISTINCT */
0
,
/* (182) distinct ::= */
-
2
,
/* (183) from ::= FROM tablelist */
-
2
,
/* (184) from ::= FROM sub */
-
3
,
/* (185) sub ::= LP union RP */
-
4
,
/* (186) sub ::= LP union RP ids */
-
6
,
/* (187) sub ::= sub COMMA LP union RP ids */
-
2
,
/* (188) tablelist ::= ids cpxName */
-
3
,
/* (189) tablelist ::= ids cpxName ids */
-
4
,
/* (190) tablelist ::= tablelist COMMA ids cpxName */
-
5
,
/* (191) tablelist ::= tablelist COMMA ids cpxName ids */
-
1
,
/* (192) tmvar ::= VARIABLE */
-
4
,
/* (193) interval_option ::= intervalKey LP tmvar RP */
-
6
,
/* (194) interval_option ::= intervalKey LP tmvar COMMA tmvar RP */
0
,
/* (195) interval_option ::= */
-
1
,
/* (196) intervalKey ::= INTERVAL */
-
1
,
/* (197) intervalKey ::= EVERY */
0
,
/* (198) session_option ::= */
-
7
,
/* (199) session_option ::= SESSION LP ids cpxName COMMA tmvar RP */
0
,
/* (200) windowstate_option ::= */
-
4
,
/* (201) windowstate_option ::= STATE_WINDOW LP ids RP */
0
,
/* (202) fill_opt ::= */
-
6
,
/* (203) fill_opt ::= FILL LP ID COMMA tagitemlist RP */
-
4
,
/* (204) fill_opt ::= FILL LP ID RP */
-
4
,
/* (205) sliding_opt ::= SLIDING LP tmvar RP */
0
,
/* (206) sliding_opt ::= */
0
,
/* (207) orderby_opt ::= */
-
3
,
/* (208) orderby_opt ::= ORDER BY sortlist */
-
4
,
/* (209) sortlist ::= sortlist COMMA item sortorder */
-
2
,
/* (210) sortlist ::= item sortorder */
-
2
,
/* (211) item ::= ids cpxName */
-
1
,
/* (212) sortorder ::= ASC */
-
1
,
/* (213) sortorder ::= DESC */
0
,
/* (214) sortorder ::= */
0
,
/* (215) groupby_opt ::= */
-
3
,
/* (216) groupby_opt ::= GROUP BY grouplist */
-
3
,
/* (217) grouplist ::= grouplist COMMA item */
-
1
,
/* (218) grouplist ::= item */
0
,
/* (219) having_opt ::= */
-
2
,
/* (220) having_opt ::= HAVING expr */
0
,
/* (221) limit_opt ::= */
-
2
,
/* (222) limit_opt ::= LIMIT signed */
-
4
,
/* (223) limit_opt ::= LIMIT signed OFFSET signed */
-
4
,
/* (224) limit_opt ::= LIMIT signed COMMA signed */
0
,
/* (225) slimit_opt ::= */
-
2
,
/* (226) slimit_opt ::= SLIMIT signed */
-
4
,
/* (227) slimit_opt ::= SLIMIT signed SOFFSET signed */
-
4
,
/* (228) slimit_opt ::= SLIMIT signed COMMA signed */
0
,
/* (229) where_opt ::= */
-
2
,
/* (230) where_opt ::= WHERE expr */
-
3
,
/* (231) expr ::= LP expr RP */
-
1
,
/* (232) expr ::= ID */
-
3
,
/* (233) expr ::= ID DOT ID */
-
3
,
/* (234) expr ::= ID DOT STAR */
-
1
,
/* (235) expr ::= INTEGER */
-
2
,
/* (236) expr ::= MINUS INTEGER */
-
2
,
/* (237) expr ::= PLUS INTEGER */
-
1
,
/* (238) expr ::= FLOAT */
-
2
,
/* (239) expr ::= MINUS FLOAT */
-
2
,
/* (240) expr ::= PLUS FLOAT */
-
1
,
/* (241) expr ::= STRING */
-
1
,
/* (242) expr ::= NOW */
-
1
,
/* (243) expr ::= VARIABLE */
-
2
,
/* (244) expr ::= PLUS VARIABLE */
-
2
,
/* (245) expr ::= MINUS VARIABLE */
-
1
,
/* (246) expr ::= BOOL */
-
1
,
/* (247) expr ::= NULL */
-
4
,
/* (248) expr ::= ID LP exprlist RP */
-
4
,
/* (249) expr ::= ID LP STAR RP */
-
3
,
/* (250) expr ::= expr IS NULL */
-
4
,
/* (251) expr ::= expr IS NOT NULL */
-
3
,
/* (252) expr ::= expr LT expr */
-
3
,
/* (253) expr ::= expr GT expr */
-
3
,
/* (254) expr ::= expr LE expr */
-
3
,
/* (255) expr ::= expr GE expr */
-
3
,
/* (256) expr ::= expr NE expr */
-
3
,
/* (257) expr ::= expr EQ expr */
-
5
,
/* (258) expr ::= expr BETWEEN expr AND expr */
-
3
,
/* (259) expr ::= expr AND expr */
-
3
,
/* (260) expr ::= expr OR expr */
-
3
,
/* (261) expr ::= expr PLUS expr */
-
3
,
/* (262) expr ::= expr MINUS expr */
-
3
,
/* (263) expr ::= expr STAR expr */
-
3
,
/* (264) expr ::= expr SLASH expr */
-
3
,
/* (265) expr ::= expr REM expr */
-
3
,
/* (266) expr ::= expr LIKE expr */
-
5
,
/* (267) expr ::= expr IN LP exprlist RP */
-
3
,
/* (268) exprlist ::= exprlist COMMA expritem */
-
1
,
/* (269) exprlist ::= expritem */
-
1
,
/* (270) expritem ::= expr */
0
,
/* (271) expritem ::= */
-
3
,
/* (272) cmd ::= RESET QUERY CACHE */
-
3
,
/* (273) cmd ::= SYNCDB ids REPLICA */
-
7
,
/* (274) cmd ::= ALTER TABLE ids cpxName ADD COLUMN columnlist */
-
7
,
/* (275) cmd ::= ALTER TABLE ids cpxName DROP COLUMN ids */
-
7
,
/* (276) cmd ::= ALTER TABLE ids cpxName MODIFY COLUMN columnlist */
-
7
,
/* (277) cmd ::= ALTER TABLE ids cpxName ADD TAG columnlist */
-
7
,
/* (278) cmd ::= ALTER TABLE ids cpxName DROP TAG ids */
-
8
,
/* (279) cmd ::= ALTER TABLE ids cpxName CHANGE TAG ids ids */
-
9
,
/* (280) cmd ::= ALTER TABLE ids cpxName SET TAG ids EQ tagitem */
-
7
,
/* (281) cmd ::= ALTER TABLE ids cpxName MODIFY TAG columnlist */
-
7
,
/* (282) cmd ::= ALTER STABLE ids cpxName ADD COLUMN columnlist */
-
7
,
/* (283) cmd ::= ALTER STABLE ids cpxName DROP COLUMN ids */
-
7
,
/* (284) cmd ::= ALTER STABLE ids cpxName MODIFY COLUMN columnlist */
-
7
,
/* (285) cmd ::= ALTER STABLE ids cpxName ADD TAG columnlist */
-
7
,
/* (286) cmd ::= ALTER STABLE ids cpxName DROP TAG ids */
-
8
,
/* (287) cmd ::= ALTER STABLE ids cpxName CHANGE TAG ids ids */
-
9
,
/* (288) cmd ::= ALTER STABLE ids cpxName SET TAG ids EQ tagitem */
-
7
,
/* (289) cmd ::= ALTER STABLE ids cpxName MODIFY TAG columnlist */
-
3
,
/* (290) cmd ::= KILL CONNECTION INTEGER */
-
5
,
/* (291) cmd ::= KILL STREAM INTEGER COLON INTEGER */
-
5
,
/* (292) cmd ::= KILL QUERY INTEGER COLON INTEGER */
/* 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
[]
=
{
{
199
,
-
1
},
/* (0) program ::= cmd */
{
200
,
-
2
},
/* (1) cmd ::= SHOW DATABASES */
{
200
,
-
2
},
/* (2) cmd ::= SHOW TOPICS */
{
200
,
-
2
},
/* (3) cmd ::= SHOW FUNCTIONS */
{
200
,
-
2
},
/* (4) cmd ::= SHOW MNODES */
{
200
,
-
2
},
/* (5) cmd ::= SHOW DNODES */
{
200
,
-
2
},
/* (6) cmd ::= SHOW ACCOUNTS */
{
200
,
-
2
},
/* (7) cmd ::= SHOW USERS */
{
200
,
-
2
},
/* (8) cmd ::= SHOW MODULES */
{
200
,
-
2
},
/* (9) cmd ::= SHOW QUERIES */
{
200
,
-
2
},
/* (10) cmd ::= SHOW CONNECTIONS */
{
200
,
-
2
},
/* (11) cmd ::= SHOW STREAMS */
{
200
,
-
2
},
/* (12) cmd ::= SHOW VARIABLES */
{
200
,
-
2
},
/* (13) cmd ::= SHOW SCORES */
{
200
,
-
2
},
/* (14) cmd ::= SHOW GRANTS */
{
200
,
-
2
},
/* (15) cmd ::= SHOW VNODES */
{
200
,
-
3
},
/* (16) cmd ::= SHOW VNODES IPTOKEN */
{
201
,
0
},
/* (17) dbPrefix ::= */
{
201
,
-
2
},
/* (18) dbPrefix ::= ids DOT */
{
203
,
0
},
/* (19) cpxName ::= */
{
203
,
-
2
},
/* (20) cpxName ::= DOT ids */
{
200
,
-
5
},
/* (21) cmd ::= SHOW CREATE TABLE ids cpxName */
{
200
,
-
5
},
/* (22) cmd ::= SHOW CREATE STABLE ids cpxName */
{
200
,
-
4
},
/* (23) cmd ::= SHOW CREATE DATABASE ids */
{
200
,
-
3
},
/* (24) cmd ::= SHOW dbPrefix TABLES */
{
200
,
-
5
},
/* (25) cmd ::= SHOW dbPrefix TABLES LIKE ids */
{
200
,
-
3
},
/* (26) cmd ::= SHOW dbPrefix STABLES */
{
200
,
-
5
},
/* (27) cmd ::= SHOW dbPrefix STABLES LIKE ids */
{
200
,
-
3
},
/* (28) cmd ::= SHOW dbPrefix VGROUPS */
{
200
,
-
5
},
/* (29) cmd ::= DROP TABLE ifexists ids cpxName */
{
200
,
-
5
},
/* (30) cmd ::= DROP STABLE ifexists ids cpxName */
{
200
,
-
4
},
/* (31) cmd ::= DROP DATABASE ifexists ids */
{
200
,
-
4
},
/* (32) cmd ::= DROP TOPIC ifexists ids */
{
200
,
-
3
},
/* (33) cmd ::= DROP FUNCTION ids */
{
200
,
-
3
},
/* (34) cmd ::= DROP DNODE ids */
{
200
,
-
3
},
/* (35) cmd ::= DROP USER ids */
{
200
,
-
3
},
/* (36) cmd ::= DROP ACCOUNT ids */
{
200
,
-
2
},
/* (37) cmd ::= USE ids */
{
200
,
-
3
},
/* (38) cmd ::= DESCRIBE ids cpxName */
{
200
,
-
3
},
/* (39) cmd ::= DESC ids cpxName */
{
200
,
-
5
},
/* (40) cmd ::= ALTER USER ids PASS ids */
{
200
,
-
5
},
/* (41) cmd ::= ALTER USER ids PRIVILEGE ids */
{
200
,
-
4
},
/* (42) cmd ::= ALTER DNODE ids ids */
{
200
,
-
5
},
/* (43) cmd ::= ALTER DNODE ids ids ids */
{
200
,
-
3
},
/* (44) cmd ::= ALTER LOCAL ids */
{
200
,
-
4
},
/* (45) cmd ::= ALTER LOCAL ids ids */
{
200
,
-
4
},
/* (46) cmd ::= ALTER DATABASE ids alter_db_optr */
{
200
,
-
4
},
/* (47) cmd ::= ALTER TOPIC ids alter_topic_optr */
{
200
,
-
4
},
/* (48) cmd ::= ALTER ACCOUNT ids acct_optr */
{
200
,
-
6
},
/* (49) cmd ::= ALTER ACCOUNT ids PASS ids acct_optr */
{
200
,
-
6
},
/* (50) cmd ::= COMPACT VNODES IN LP exprlist RP */
{
202
,
-
1
},
/* (51) ids ::= ID */
{
202
,
-
1
},
/* (52) ids ::= STRING */
{
204
,
-
2
},
/* (53) ifexists ::= IF EXISTS */
{
204
,
0
},
/* (54) ifexists ::= */
{
209
,
-
3
},
/* (55) ifnotexists ::= IF NOT EXISTS */
{
209
,
0
},
/* (56) ifnotexists ::= */
{
200
,
-
3
},
/* (57) cmd ::= CREATE DNODE ids */
{
200
,
-
6
},
/* (58) cmd ::= CREATE ACCOUNT ids PASS ids acct_optr */
{
200
,
-
5
},
/* (59) cmd ::= CREATE DATABASE ifnotexists ids db_optr */
{
200
,
-
5
},
/* (60) cmd ::= CREATE TOPIC ifnotexists ids topic_optr */
{
200
,
-
8
},
/* (61) cmd ::= CREATE FUNCTION ids AS ids OUTPUTTYPE typename bufsize */
{
200
,
-
9
},
/* (62) cmd ::= CREATE AGGREGATE FUNCTION ids AS ids OUTPUTTYPE typename bufsize */
{
200
,
-
5
},
/* (63) cmd ::= CREATE USER ids PASS ids */
{
213
,
0
},
/* (64) bufsize ::= */
{
213
,
-
2
},
/* (65) bufsize ::= BUFSIZE INTEGER */
{
214
,
0
},
/* (66) pps ::= */
{
214
,
-
2
},
/* (67) pps ::= PPS INTEGER */
{
215
,
0
},
/* (68) tseries ::= */
{
215
,
-
2
},
/* (69) tseries ::= TSERIES INTEGER */
{
216
,
0
},
/* (70) dbs ::= */
{
216
,
-
2
},
/* (71) dbs ::= DBS INTEGER */
{
217
,
0
},
/* (72) streams ::= */
{
217
,
-
2
},
/* (73) streams ::= STREAMS INTEGER */
{
218
,
0
},
/* (74) storage ::= */
{
218
,
-
2
},
/* (75) storage ::= STORAGE INTEGER */
{
219
,
0
},
/* (76) qtime ::= */
{
219
,
-
2
},
/* (77) qtime ::= QTIME INTEGER */
{
220
,
0
},
/* (78) users ::= */
{
220
,
-
2
},
/* (79) users ::= USERS INTEGER */
{
221
,
0
},
/* (80) conns ::= */
{
221
,
-
2
},
/* (81) conns ::= CONNS INTEGER */
{
222
,
0
},
/* (82) state ::= */
{
222
,
-
2
},
/* (83) state ::= STATE ids */
{
207
,
-
9
},
/* (84) acct_optr ::= pps tseries storage streams qtime dbs users conns state */
{
223
,
-
3
},
/* (85) intitemlist ::= intitemlist COMMA intitem */
{
223
,
-
1
},
/* (86) intitemlist ::= intitem */
{
224
,
-
1
},
/* (87) intitem ::= INTEGER */
{
225
,
-
2
},
/* (88) keep ::= KEEP intitemlist */
{
226
,
-
2
},
/* (89) cache ::= CACHE INTEGER */
{
227
,
-
2
},
/* (90) replica ::= REPLICA INTEGER */
{
228
,
-
2
},
/* (91) quorum ::= QUORUM INTEGER */
{
229
,
-
2
},
/* (92) days ::= DAYS INTEGER */
{
230
,
-
2
},
/* (93) minrows ::= MINROWS INTEGER */
{
231
,
-
2
},
/* (94) maxrows ::= MAXROWS INTEGER */
{
232
,
-
2
},
/* (95) blocks ::= BLOCKS INTEGER */
{
233
,
-
2
},
/* (96) ctime ::= CTIME INTEGER */
{
234
,
-
2
},
/* (97) wal ::= WAL INTEGER */
{
235
,
-
2
},
/* (98) fsync ::= FSYNC INTEGER */
{
236
,
-
2
},
/* (99) comp ::= COMP INTEGER */
{
237
,
-
2
},
/* (100) prec ::= PRECISION STRING */
{
238
,
-
2
},
/* (101) update ::= UPDATE INTEGER */
{
239
,
-
2
},
/* (102) cachelast ::= CACHELAST INTEGER */
{
240
,
-
2
},
/* (103) partitions ::= PARTITIONS INTEGER */
{
210
,
0
},
/* (104) db_optr ::= */
{
210
,
-
2
},
/* (105) db_optr ::= db_optr cache */
{
210
,
-
2
},
/* (106) db_optr ::= db_optr replica */
{
210
,
-
2
},
/* (107) db_optr ::= db_optr quorum */
{
210
,
-
2
},
/* (108) db_optr ::= db_optr days */
{
210
,
-
2
},
/* (109) db_optr ::= db_optr minrows */
{
210
,
-
2
},
/* (110) db_optr ::= db_optr maxrows */
{
210
,
-
2
},
/* (111) db_optr ::= db_optr blocks */
{
210
,
-
2
},
/* (112) db_optr ::= db_optr ctime */
{
210
,
-
2
},
/* (113) db_optr ::= db_optr wal */
{
210
,
-
2
},
/* (114) db_optr ::= db_optr fsync */
{
210
,
-
2
},
/* (115) db_optr ::= db_optr comp */
{
210
,
-
2
},
/* (116) db_optr ::= db_optr prec */
{
210
,
-
2
},
/* (117) db_optr ::= db_optr keep */
{
210
,
-
2
},
/* (118) db_optr ::= db_optr update */
{
210
,
-
2
},
/* (119) db_optr ::= db_optr cachelast */
{
211
,
-
1
},
/* (120) topic_optr ::= db_optr */
{
211
,
-
2
},
/* (121) topic_optr ::= topic_optr partitions */
{
205
,
0
},
/* (122) alter_db_optr ::= */
{
205
,
-
2
},
/* (123) alter_db_optr ::= alter_db_optr replica */
{
205
,
-
2
},
/* (124) alter_db_optr ::= alter_db_optr quorum */
{
205
,
-
2
},
/* (125) alter_db_optr ::= alter_db_optr keep */
{
205
,
-
2
},
/* (126) alter_db_optr ::= alter_db_optr blocks */
{
205
,
-
2
},
/* (127) alter_db_optr ::= alter_db_optr comp */
{
205
,
-
2
},
/* (128) alter_db_optr ::= alter_db_optr update */
{
205
,
-
2
},
/* (129) alter_db_optr ::= alter_db_optr cachelast */
{
206
,
-
1
},
/* (130) alter_topic_optr ::= alter_db_optr */
{
206
,
-
2
},
/* (131) alter_topic_optr ::= alter_topic_optr partitions */
{
212
,
-
1
},
/* (132) typename ::= ids */
{
212
,
-
4
},
/* (133) typename ::= ids LP signed RP */
{
212
,
-
2
},
/* (134) typename ::= ids UNSIGNED */
{
241
,
-
1
},
/* (135) signed ::= INTEGER */
{
241
,
-
2
},
/* (136) signed ::= PLUS INTEGER */
{
241
,
-
2
},
/* (137) signed ::= MINUS INTEGER */
{
200
,
-
3
},
/* (138) cmd ::= CREATE TABLE create_table_args */
{
200
,
-
3
},
/* (139) cmd ::= CREATE TABLE create_stable_args */
{
200
,
-
3
},
/* (140) cmd ::= CREATE STABLE create_stable_args */
{
200
,
-
3
},
/* (141) cmd ::= CREATE TABLE create_table_list */
{
244
,
-
1
},
/* (142) create_table_list ::= create_from_stable */
{
244
,
-
2
},
/* (143) create_table_list ::= create_table_list create_from_stable */
{
242
,
-
6
},
/* (144) create_table_args ::= ifnotexists ids cpxName LP columnlist RP */
{
243
,
-
10
},
/* (145) create_stable_args ::= ifnotexists ids cpxName LP columnlist RP TAGS LP columnlist RP */
{
245
,
-
10
},
/* (146) create_from_stable ::= ifnotexists ids cpxName USING ids cpxName TAGS LP tagitemlist RP */
{
245
,
-
13
},
/* (147) create_from_stable ::= ifnotexists ids cpxName USING ids cpxName LP tagNamelist RP TAGS LP tagitemlist RP */
{
248
,
-
3
},
/* (148) tagNamelist ::= tagNamelist COMMA ids */
{
248
,
-
1
},
/* (149) tagNamelist ::= ids */
{
242
,
-
7
},
/* (150) create_table_args ::= ifnotexists ids cpxName to_opt split_opt AS select */
{
249
,
0
},
/* (151) to_opt ::= */
{
249
,
-
3
},
/* (152) to_opt ::= TO ids cpxName */
{
250
,
0
},
/* (153) split_opt ::= */
{
250
,
-
2
},
/* (154) split_opt ::= SPLIT ids */
{
246
,
-
3
},
/* (155) columnlist ::= columnlist COMMA column */
{
246
,
-
1
},
/* (156) columnlist ::= column */
{
253
,
-
2
},
/* (157) column ::= ids typename */
{
247
,
-
3
},
/* (158) tagitemlist ::= tagitemlist COMMA tagitem */
{
247
,
-
1
},
/* (159) tagitemlist ::= tagitem */
{
254
,
-
1
},
/* (160) tagitem ::= INTEGER */
{
254
,
-
1
},
/* (161) tagitem ::= FLOAT */
{
254
,
-
1
},
/* (162) tagitem ::= STRING */
{
254
,
-
1
},
/* (163) tagitem ::= BOOL */
{
254
,
-
1
},
/* (164) tagitem ::= NULL */
{
254
,
-
1
},
/* (165) tagitem ::= NOW */
{
254
,
-
3
},
/* (166) tagitem ::= NOW PLUS VARIABLE */
{
254
,
-
3
},
/* (167) tagitem ::= NOW MINUS VARIABLE */
{
254
,
-
2
},
/* (168) tagitem ::= MINUS INTEGER */
{
254
,
-
2
},
/* (169) tagitem ::= MINUS FLOAT */
{
254
,
-
2
},
/* (170) tagitem ::= PLUS INTEGER */
{
254
,
-
2
},
/* (171) tagitem ::= PLUS FLOAT */
{
251
,
-
14
},
/* (172) select ::= SELECT selcollist from where_opt interval_option sliding_opt session_option windowstate_option fill_opt groupby_opt having_opt orderby_opt slimit_opt limit_opt */
{
251
,
-
3
},
/* (173) select ::= LP select RP */
{
268
,
-
1
},
/* (174) union ::= select */
{
268
,
-
4
},
/* (175) union ::= union UNION ALL select */
{
200
,
-
1
},
/* (176) cmd ::= union */
{
251
,
-
2
},
/* (177) select ::= SELECT selcollist */
{
269
,
-
2
},
/* (178) sclp ::= selcollist COMMA */
{
269
,
0
},
/* (179) sclp ::= */
{
255
,
-
4
},
/* (180) selcollist ::= sclp distinct expr as */
{
255
,
-
2
},
/* (181) selcollist ::= sclp STAR */
{
272
,
-
2
},
/* (182) as ::= AS ids */
{
272
,
-
1
},
/* (183) as ::= ids */
{
272
,
0
},
/* (184) as ::= */
{
270
,
-
1
},
/* (185) distinct ::= DISTINCT */
{
270
,
0
},
/* (186) distinct ::= */
{
256
,
-
2
},
/* (187) from ::= FROM tablelist */
{
256
,
-
2
},
/* (188) from ::= FROM sub */
{
274
,
-
3
},
/* (189) sub ::= LP union RP */
{
274
,
-
4
},
/* (190) sub ::= LP union RP ids */
{
274
,
-
6
},
/* (191) sub ::= sub COMMA LP union RP ids */
{
273
,
-
2
},
/* (192) tablelist ::= ids cpxName */
{
273
,
-
3
},
/* (193) tablelist ::= ids cpxName ids */
{
273
,
-
4
},
/* (194) tablelist ::= tablelist COMMA ids cpxName */
{
273
,
-
5
},
/* (195) tablelist ::= tablelist COMMA ids cpxName ids */
{
275
,
-
1
},
/* (196) tmvar ::= VARIABLE */
{
258
,
-
4
},
/* (197) interval_option ::= intervalKey LP tmvar RP */
{
258
,
-
6
},
/* (198) interval_option ::= intervalKey LP tmvar COMMA tmvar RP */
{
258
,
0
},
/* (199) interval_option ::= */
{
276
,
-
1
},
/* (200) intervalKey ::= INTERVAL */
{
276
,
-
1
},
/* (201) intervalKey ::= EVERY */
{
260
,
0
},
/* (202) session_option ::= */
{
260
,
-
7
},
/* (203) session_option ::= SESSION LP ids cpxName COMMA tmvar RP */
{
261
,
0
},
/* (204) windowstate_option ::= */
{
261
,
-
4
},
/* (205) windowstate_option ::= STATE_WINDOW LP ids RP */
{
262
,
0
},
/* (206) fill_opt ::= */
{
262
,
-
6
},
/* (207) fill_opt ::= FILL LP ID COMMA tagitemlist RP */
{
262
,
-
4
},
/* (208) fill_opt ::= FILL LP ID RP */
{
259
,
-
4
},
/* (209) sliding_opt ::= SLIDING LP tmvar RP */
{
259
,
0
},
/* (210) sliding_opt ::= */
{
265
,
0
},
/* (211) orderby_opt ::= */
{
265
,
-
3
},
/* (212) orderby_opt ::= ORDER BY sortlist */
{
277
,
-
4
},
/* (213) sortlist ::= sortlist COMMA item sortorder */
{
277
,
-
2
},
/* (214) sortlist ::= item sortorder */
{
279
,
-
2
},
/* (215) item ::= ids cpxName */
{
280
,
-
1
},
/* (216) sortorder ::= ASC */
{
280
,
-
1
},
/* (217) sortorder ::= DESC */
{
280
,
0
},
/* (218) sortorder ::= */
{
263
,
0
},
/* (219) groupby_opt ::= */
{
263
,
-
3
},
/* (220) groupby_opt ::= GROUP BY grouplist */
{
281
,
-
3
},
/* (221) grouplist ::= grouplist COMMA item */
{
281
,
-
1
},
/* (222) grouplist ::= item */
{
264
,
0
},
/* (223) having_opt ::= */
{
264
,
-
2
},
/* (224) having_opt ::= HAVING expr */
{
267
,
0
},
/* (225) limit_opt ::= */
{
267
,
-
2
},
/* (226) limit_opt ::= LIMIT signed */
{
267
,
-
4
},
/* (227) limit_opt ::= LIMIT signed OFFSET signed */
{
267
,
-
4
},
/* (228) limit_opt ::= LIMIT signed COMMA signed */
{
266
,
0
},
/* (229) slimit_opt ::= */
{
266
,
-
2
},
/* (230) slimit_opt ::= SLIMIT signed */
{
266
,
-
4
},
/* (231) slimit_opt ::= SLIMIT signed SOFFSET signed */
{
266
,
-
4
},
/* (232) slimit_opt ::= SLIMIT signed COMMA signed */
{
257
,
0
},
/* (233) where_opt ::= */
{
257
,
-
2
},
/* (234) where_opt ::= WHERE expr */
{
271
,
-
3
},
/* (235) expr ::= LP expr RP */
{
271
,
-
1
},
/* (236) expr ::= ID */
{
271
,
-
3
},
/* (237) expr ::= ID DOT ID */
{
271
,
-
3
},
/* (238) expr ::= ID DOT STAR */
{
271
,
-
1
},
/* (239) expr ::= INTEGER */
{
271
,
-
2
},
/* (240) expr ::= MINUS INTEGER */
{
271
,
-
2
},
/* (241) expr ::= PLUS INTEGER */
{
271
,
-
1
},
/* (242) expr ::= FLOAT */
{
271
,
-
2
},
/* (243) expr ::= MINUS FLOAT */
{
271
,
-
2
},
/* (244) expr ::= PLUS FLOAT */
{
271
,
-
1
},
/* (245) expr ::= STRING */
{
271
,
-
1
},
/* (246) expr ::= NOW */
{
271
,
-
1
},
/* (247) expr ::= VARIABLE */
{
271
,
-
2
},
/* (248) expr ::= PLUS VARIABLE */
{
271
,
-
2
},
/* (249) expr ::= MINUS VARIABLE */
{
271
,
-
1
},
/* (250) expr ::= BOOL */
{
271
,
-
1
},
/* (251) expr ::= NULL */
{
271
,
-
4
},
/* (252) expr ::= ID LP exprlist RP */
{
271
,
-
4
},
/* (253) expr ::= ID LP STAR RP */
{
271
,
-
3
},
/* (254) expr ::= expr IS NULL */
{
271
,
-
4
},
/* (255) expr ::= expr IS NOT NULL */
{
271
,
-
3
},
/* (256) expr ::= expr LT expr */
{
271
,
-
3
},
/* (257) expr ::= expr GT expr */
{
271
,
-
3
},
/* (258) expr ::= expr LE expr */
{
271
,
-
3
},
/* (259) expr ::= expr GE expr */
{
271
,
-
3
},
/* (260) expr ::= expr NE expr */
{
271
,
-
3
},
/* (261) expr ::= expr EQ expr */
{
271
,
-
5
},
/* (262) expr ::= expr BETWEEN expr AND expr */
{
271
,
-
3
},
/* (263) expr ::= expr AND expr */
{
271
,
-
3
},
/* (264) expr ::= expr OR expr */
{
271
,
-
3
},
/* (265) expr ::= expr PLUS expr */
{
271
,
-
3
},
/* (266) expr ::= expr MINUS expr */
{
271
,
-
3
},
/* (267) expr ::= expr STAR expr */
{
271
,
-
3
},
/* (268) expr ::= expr SLASH expr */
{
271
,
-
3
},
/* (269) expr ::= expr REM expr */
{
271
,
-
3
},
/* (270) expr ::= expr LIKE expr */
{
271
,
-
5
},
/* (271) expr ::= expr IN LP exprlist RP */
{
208
,
-
3
},
/* (272) exprlist ::= exprlist COMMA expritem */
{
208
,
-
1
},
/* (273) exprlist ::= expritem */
{
282
,
-
1
},
/* (274) expritem ::= expr */
{
282
,
0
},
/* (275) expritem ::= */
{
200
,
-
3
},
/* (276) cmd ::= RESET QUERY CACHE */
{
200
,
-
3
},
/* (277) cmd ::= SYNCDB ids REPLICA */
{
200
,
-
7
},
/* (278) cmd ::= ALTER TABLE ids cpxName ADD COLUMN columnlist */
{
200
,
-
7
},
/* (279) cmd ::= ALTER TABLE ids cpxName DROP COLUMN ids */
{
200
,
-
7
},
/* (280) cmd ::= ALTER TABLE ids cpxName MODIFY COLUMN columnlist */
{
200
,
-
7
},
/* (281) cmd ::= ALTER TABLE ids cpxName ADD TAG columnlist */
{
200
,
-
7
},
/* (282) cmd ::= ALTER TABLE ids cpxName DROP TAG ids */
{
200
,
-
8
},
/* (283) cmd ::= ALTER TABLE ids cpxName CHANGE TAG ids ids */
{
200
,
-
9
},
/* (284) cmd ::= ALTER TABLE ids cpxName SET TAG ids EQ tagitem */
{
200
,
-
7
},
/* (285) cmd ::= ALTER TABLE ids cpxName MODIFY TAG columnlist */
{
200
,
-
7
},
/* (286) cmd ::= ALTER STABLE ids cpxName ADD COLUMN columnlist */
{
200
,
-
7
},
/* (287) cmd ::= ALTER STABLE ids cpxName DROP COLUMN ids */
{
200
,
-
7
},
/* (288) cmd ::= ALTER STABLE ids cpxName MODIFY COLUMN columnlist */
{
200
,
-
7
},
/* (289) cmd ::= ALTER STABLE ids cpxName ADD TAG columnlist */
{
200
,
-
7
},
/* (290) cmd ::= ALTER STABLE ids cpxName DROP TAG ids */
{
200
,
-
8
},
/* (291) cmd ::= ALTER STABLE ids cpxName CHANGE TAG ids ids */
{
200
,
-
9
},
/* (292) cmd ::= ALTER STABLE ids cpxName SET TAG ids EQ tagitem */
{
200
,
-
7
},
/* (293) cmd ::= ALTER STABLE ids cpxName MODIFY TAG columnlist */
{
200
,
-
3
},
/* (294) cmd ::= KILL CONNECTION INTEGER */
{
200
,
-
5
},
/* (295) cmd ::= KILL STREAM INTEGER COLON INTEGER */
{
200
,
-
5
},
/* (296) cmd ::= KILL QUERY INTEGER COLON INTEGER */
};
static
void
yy_accept
(
yyParser
*
);
/* Forward Declaration */
...
...
@@ -2664,6 +2195,51 @@ static YYACTIONTYPE yy_reduce(
(
void
)
yyLookahead
;
(
void
)
yyLookaheadToken
;
yymsp
=
yypParser
->
yytos
;
#ifndef NDEBUG
if
(
yyTraceFILE
&&
yyruleno
<
(
int
)(
sizeof
(
yyRuleName
)
/
sizeof
(
yyRuleName
[
0
]))
){
yysize
=
yyRuleInfo
[
yyruleno
].
nrhs
;
if
(
yysize
){
fprintf
(
yyTraceFILE
,
"%sReduce %d [%s], go to state %d.
\n
"
,
yyTracePrompt
,
yyruleno
,
yyRuleName
[
yyruleno
],
yymsp
[
yysize
].
stateno
);
}
else
{
fprintf
(
yyTraceFILE
,
"%sReduce %d [%s].
\n
"
,
yyTracePrompt
,
yyruleno
,
yyRuleName
[
yyruleno
]);
}
}
#endif
/* NDEBUG */
/* 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
){
#ifdef YYTRACKMAXSTACKDEPTH
if
(
(
int
)(
yypParser
->
yytos
-
yypParser
->
yystack
)
>
yypParser
->
yyhwm
){
yypParser
->
yyhwm
++
;
assert
(
yypParser
->
yyhwm
==
(
int
)(
yypParser
->
yytos
-
yypParser
->
yystack
));
}
#endif
#if YYSTACKDEPTH>0
if
(
yypParser
->
yytos
>=
yypParser
->
yystackEnd
){
yyStackOverflow
(
yypParser
);
/* The call to yyStackOverflow() above pops the stack until it is
** empty, causing the main parser loop to exit. So the return value
** is never used and does not matter. */
return
0
;
}
#else
if
(
yypParser
->
yytos
>=&
yypParser
->
yystack
[
yypParser
->
yystksz
-
1
]
){
if
(
yyGrowStack
(
yypParser
)
){
yyStackOverflow
(
yypParser
);
/* The call to yyStackOverflow() above pops the stack until it is
** empty, causing the main parser loop to exit. So the return value
** is never used and does not matter. */
return
0
;
}
yymsp
=
yypParser
->
yytos
;
}
#endif
}
switch
(
yyruleno
){
/* Beginning here are the reduction cases. A typical example
...
...
@@ -2849,16 +2425,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
9
0
,
&
t
);}
{
SStrToken
t
=
{
0
};
setCreateDbInfo
(
pInfo
,
TSDB_SQL_ALTER_DB
,
&
yymsp
[
-
1
].
minor
.
yy0
,
&
yymsp
[
0
].
minor
.
yy
47
0
,
&
t
);}
break
;
case
48
:
/* cmd ::= ALTER ACCOUNT ids acct_optr */
{
setCreateAcctSql
(
pInfo
,
TSDB_SQL_ALTER_ACCT
,
&
yymsp
[
-
1
].
minor
.
yy0
,
NULL
,
&
yymsp
[
0
].
minor
.
yy
171
);}
{
setCreateAcctSql
(
pInfo
,
TSDB_SQL_ALTER_ACCT
,
&
yymsp
[
-
1
].
minor
.
yy0
,
NULL
,
&
yymsp
[
0
].
minor
.
yy
307
);}
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
.
yy
171
);}
{
setCreateAcctSql
(
pInfo
,
TSDB_SQL_ALTER_ACCT
,
&
yymsp
[
-
3
].
minor
.
yy0
,
&
yymsp
[
-
1
].
minor
.
yy0
,
&
yymsp
[
0
].
minor
.
yy
307
);}
break
;
case
50
:
/* cmd ::= COMPACT VNODES IN LP exprlist RP */
{
setCompactVnodeSql
(
pInfo
,
TSDB_SQL_COMPACT_VNODE
,
yymsp
[
-
1
].
minor
.
yy
421
);}
{
setCompactVnodeSql
(
pInfo
,
TSDB_SQL_COMPACT_VNODE
,
yymsp
[
-
1
].
minor
.
yy
89
);}
break
;
case
51
:
/* ids ::= ID */
case
52
:
/* ids ::= STRING */
yytestcase
(
yyruleno
==
52
);
...
...
@@ -2870,7 +2446,7 @@ static YYACTIONTYPE yy_reduce(
break
;
case
54
:
/* ifexists ::= */
case
56
:
/* ifnotexists ::= */
yytestcase
(
yyruleno
==
56
);
case
18
2
:
/* distinct ::= */
yytestcase
(
yyruleno
==
182
);
case
18
6
:
/* distinct ::= */
yytestcase
(
yyruleno
==
186
);
{
yymsp
[
1
].
minor
.
yy0
.
n
=
0
;}
break
;
case
55
:
/* ifnotexists ::= IF NOT EXISTS */
...
...
@@ -2880,17 +2456,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
.
yy
171
);}
{
setCreateAcctSql
(
pInfo
,
TSDB_SQL_CREATE_ACCT
,
&
yymsp
[
-
3
].
minor
.
yy0
,
&
yymsp
[
-
1
].
minor
.
yy0
,
&
yymsp
[
0
].
minor
.
yy
307
);}
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
9
0
,
&
yymsp
[
-
2
].
minor
.
yy0
);}
{
setCreateDbInfo
(
pInfo
,
TSDB_SQL_CREATE_DB
,
&
yymsp
[
-
1
].
minor
.
yy0
,
&
yymsp
[
0
].
minor
.
yy
47
0
,
&
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
183
,
&
yymsp
[
0
].
minor
.
yy0
,
1
);}
{
setCreateFuncInfo
(
pInfo
,
TSDB_SQL_CREATE_FUNCTION
,
&
yymsp
[
-
5
].
minor
.
yy0
,
&
yymsp
[
-
3
].
minor
.
yy0
,
&
yymsp
[
-
1
].
minor
.
yy
465
,
&
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
183
,
&
yymsp
[
0
].
minor
.
yy0
,
2
);}
{
setCreateFuncInfo
(
pInfo
,
TSDB_SQL_CREATE_FUNCTION
,
&
yymsp
[
-
5
].
minor
.
yy0
,
&
yymsp
[
-
3
].
minor
.
yy0
,
&
yymsp
[
-
1
].
minor
.
yy
465
,
&
yymsp
[
0
].
minor
.
yy0
,
2
);}
break
;
case
63
:
/* cmd ::= CREATE USER ids PASS ids */
{
setCreateUserSql
(
pInfo
,
&
yymsp
[
-
2
].
minor
.
yy0
,
&
yymsp
[
0
].
minor
.
yy0
);}
...
...
@@ -2921,38 +2497,38 @@ static YYACTIONTYPE yy_reduce(
break
;
case
84
:
/* acct_optr ::= pps tseries storage streams qtime dbs users conns state */
{
yylhsminor
.
yy
171
.
maxUsers
=
(
yymsp
[
-
2
].
minor
.
yy0
.
n
>
0
)
?
atoi
(
yymsp
[
-
2
].
minor
.
yy0
.
z
)
:-
1
;
yylhsminor
.
yy
171
.
maxDbs
=
(
yymsp
[
-
3
].
minor
.
yy0
.
n
>
0
)
?
atoi
(
yymsp
[
-
3
].
minor
.
yy0
.
z
)
:-
1
;
yylhsminor
.
yy
171
.
maxTimeSeries
=
(
yymsp
[
-
7
].
minor
.
yy0
.
n
>
0
)
?
atoi
(
yymsp
[
-
7
].
minor
.
yy0
.
z
)
:-
1
;
yylhsminor
.
yy
171
.
maxStreams
=
(
yymsp
[
-
5
].
minor
.
yy0
.
n
>
0
)
?
atoi
(
yymsp
[
-
5
].
minor
.
yy0
.
z
)
:-
1
;
yylhsminor
.
yy
171
.
maxPointsPerSecond
=
(
yymsp
[
-
8
].
minor
.
yy0
.
n
>
0
)
?
atoi
(
yymsp
[
-
8
].
minor
.
yy0
.
z
)
:-
1
;
yylhsminor
.
yy
171
.
maxStorage
=
(
yymsp
[
-
6
].
minor
.
yy0
.
n
>
0
)
?
strtoll
(
yymsp
[
-
6
].
minor
.
yy0
.
z
,
NULL
,
10
)
:-
1
;
yylhsminor
.
yy
171
.
maxQueryTime
=
(
yymsp
[
-
4
].
minor
.
yy0
.
n
>
0
)
?
strtoll
(
yymsp
[
-
4
].
minor
.
yy0
.
z
,
NULL
,
10
)
:-
1
;
yylhsminor
.
yy
171
.
maxConnections
=
(
yymsp
[
-
1
].
minor
.
yy0
.
n
>
0
)
?
atoi
(
yymsp
[
-
1
].
minor
.
yy0
.
z
)
:-
1
;
yylhsminor
.
yy
171
.
stat
=
yymsp
[
0
].
minor
.
yy0
;
yylhsminor
.
yy
307
.
maxUsers
=
(
yymsp
[
-
2
].
minor
.
yy0
.
n
>
0
)
?
atoi
(
yymsp
[
-
2
].
minor
.
yy0
.
z
)
:-
1
;
yylhsminor
.
yy
307
.
maxDbs
=
(
yymsp
[
-
3
].
minor
.
yy0
.
n
>
0
)
?
atoi
(
yymsp
[
-
3
].
minor
.
yy0
.
z
)
:-
1
;
yylhsminor
.
yy
307
.
maxTimeSeries
=
(
yymsp
[
-
7
].
minor
.
yy0
.
n
>
0
)
?
atoi
(
yymsp
[
-
7
].
minor
.
yy0
.
z
)
:-
1
;
yylhsminor
.
yy
307
.
maxStreams
=
(
yymsp
[
-
5
].
minor
.
yy0
.
n
>
0
)
?
atoi
(
yymsp
[
-
5
].
minor
.
yy0
.
z
)
:-
1
;
yylhsminor
.
yy
307
.
maxPointsPerSecond
=
(
yymsp
[
-
8
].
minor
.
yy0
.
n
>
0
)
?
atoi
(
yymsp
[
-
8
].
minor
.
yy0
.
z
)
:-
1
;
yylhsminor
.
yy
307
.
maxStorage
=
(
yymsp
[
-
6
].
minor
.
yy0
.
n
>
0
)
?
strtoll
(
yymsp
[
-
6
].
minor
.
yy0
.
z
,
NULL
,
10
)
:-
1
;
yylhsminor
.
yy
307
.
maxQueryTime
=
(
yymsp
[
-
4
].
minor
.
yy0
.
n
>
0
)
?
strtoll
(
yymsp
[
-
4
].
minor
.
yy0
.
z
,
NULL
,
10
)
:-
1
;
yylhsminor
.
yy
307
.
maxConnections
=
(
yymsp
[
-
1
].
minor
.
yy0
.
n
>
0
)
?
atoi
(
yymsp
[
-
1
].
minor
.
yy0
.
z
)
:-
1
;
yylhsminor
.
yy
307
.
stat
=
yymsp
[
0
].
minor
.
yy0
;
}
yymsp
[
-
8
].
minor
.
yy
171
=
yylhsminor
.
yy171
;
yymsp
[
-
8
].
minor
.
yy
307
=
yylhsminor
.
yy307
;
break
;
case
85
:
/* intitemlist ::= intitemlist COMMA intitem */
case
15
4
:
/* tagitemlist ::= tagitemlist COMMA tagitem */
yytestcase
(
yyruleno
==
154
);
{
yylhsminor
.
yy
421
=
tVariantListAppend
(
yymsp
[
-
2
].
minor
.
yy421
,
&
yymsp
[
0
].
minor
.
yy430
,
-
1
);
}
yymsp
[
-
2
].
minor
.
yy
421
=
yylhsminor
.
yy421
;
case
15
8
:
/* tagitemlist ::= tagitemlist COMMA tagitem */
yytestcase
(
yyruleno
==
158
);
{
yylhsminor
.
yy
89
=
tVariantListAppend
(
yymsp
[
-
2
].
minor
.
yy89
,
&
yymsp
[
0
].
minor
.
yy112
,
-
1
);
}
yymsp
[
-
2
].
minor
.
yy
89
=
yylhsminor
.
yy89
;
break
;
case
86
:
/* intitemlist ::= intitem */
case
15
5
:
/* tagitemlist ::= tagitem */
yytestcase
(
yyruleno
==
155
);
{
yylhsminor
.
yy
421
=
tVariantListAppend
(
NULL
,
&
yymsp
[
0
].
minor
.
yy430
,
-
1
);
}
yymsp
[
0
].
minor
.
yy
421
=
yylhsminor
.
yy421
;
case
15
9
:
/* tagitemlist ::= tagitem */
yytestcase
(
yyruleno
==
159
);
{
yylhsminor
.
yy
89
=
tVariantListAppend
(
NULL
,
&
yymsp
[
0
].
minor
.
yy112
,
-
1
);
}
yymsp
[
0
].
minor
.
yy
89
=
yylhsminor
.
yy89
;
break
;
case
87
:
/* intitem ::= INTEGER */
case
1
56
:
/* tagitem ::= INTEGER */
yytestcase
(
yyruleno
==
156
);
case
1
57
:
/* tagitem ::= FLOAT */
yytestcase
(
yyruleno
==
157
);
case
1
58
:
/* tagitem ::= STRING */
yytestcase
(
yyruleno
==
158
);
case
1
59
:
/* tagitem ::= BOOL */
yytestcase
(
yyruleno
==
159
);
{
toTSDBType
(
yymsp
[
0
].
minor
.
yy0
.
type
);
tVariantCreate
(
&
yylhsminor
.
yy
430
,
&
yymsp
[
0
].
minor
.
yy0
);
}
yymsp
[
0
].
minor
.
yy
430
=
yylhsminor
.
yy430
;
case
1
60
:
/* tagitem ::= INTEGER */
yytestcase
(
yyruleno
==
160
);
case
1
61
:
/* tagitem ::= FLOAT */
yytestcase
(
yyruleno
==
161
);
case
1
62
:
/* tagitem ::= STRING */
yytestcase
(
yyruleno
==
162
);
case
1
63
:
/* tagitem ::= BOOL */
yytestcase
(
yyruleno
==
163
);
{
toTSDBType
(
yymsp
[
0
].
minor
.
yy0
.
type
);
tVariantCreate
(
&
yylhsminor
.
yy
112
,
&
yymsp
[
0
].
minor
.
yy0
);
}
yymsp
[
0
].
minor
.
yy
112
=
yylhsminor
.
yy112
;
break
;
case
88
:
/* keep ::= KEEP intitemlist */
{
yymsp
[
-
1
].
minor
.
yy
421
=
yymsp
[
0
].
minor
.
yy421
;
}
{
yymsp
[
-
1
].
minor
.
yy
89
=
yymsp
[
0
].
minor
.
yy89
;
}
break
;
case
89
:
/* cache ::= CACHE INTEGER */
case
90
:
/* replica ::= REPLICA INTEGER */
yytestcase
(
yyruleno
==
90
);
...
...
@@ -2972,656 +2548,670 @@ static YYACTIONTYPE yy_reduce(
{
yymsp
[
-
1
].
minor
.
yy0
=
yymsp
[
0
].
minor
.
yy0
;
}
break
;
case
104
:
/* db_optr ::= */
{
setDefaultCreateDbOption
(
&
yymsp
[
1
].
minor
.
yy
90
);
yymsp
[
1
].
minor
.
yy9
0
.
dbType
=
TSDB_DB_TYPE_DEFAULT
;}
{
setDefaultCreateDbOption
(
&
yymsp
[
1
].
minor
.
yy
470
);
yymsp
[
1
].
minor
.
yy47
0
.
dbType
=
TSDB_DB_TYPE_DEFAULT
;}
break
;
case
105
:
/* db_optr ::= db_optr cache */
{
yylhsminor
.
yy
90
=
yymsp
[
-
1
].
minor
.
yy90
;
yylhsminor
.
yy9
0
.
cacheBlockSize
=
strtol
(
yymsp
[
0
].
minor
.
yy0
.
z
,
NULL
,
10
);
}
yymsp
[
-
1
].
minor
.
yy
90
=
yylhsminor
.
yy9
0
;
{
yylhsminor
.
yy
470
=
yymsp
[
-
1
].
minor
.
yy470
;
yylhsminor
.
yy47
0
.
cacheBlockSize
=
strtol
(
yymsp
[
0
].
minor
.
yy0
.
z
,
NULL
,
10
);
}
yymsp
[
-
1
].
minor
.
yy
470
=
yylhsminor
.
yy47
0
;
break
;
case
106
:
/* db_optr ::= db_optr replica */
case
123
:
/* alter_db_optr ::= alter_db_optr replica */
yytestcase
(
yyruleno
==
123
);
{
yylhsminor
.
yy
90
=
yymsp
[
-
1
].
minor
.
yy90
;
yylhsminor
.
yy9
0
.
replica
=
strtol
(
yymsp
[
0
].
minor
.
yy0
.
z
,
NULL
,
10
);
}
yymsp
[
-
1
].
minor
.
yy
90
=
yylhsminor
.
yy9
0
;
{
yylhsminor
.
yy
470
=
yymsp
[
-
1
].
minor
.
yy470
;
yylhsminor
.
yy47
0
.
replica
=
strtol
(
yymsp
[
0
].
minor
.
yy0
.
z
,
NULL
,
10
);
}
yymsp
[
-
1
].
minor
.
yy
470
=
yylhsminor
.
yy47
0
;
break
;
case
107
:
/* db_optr ::= db_optr quorum */
case
124
:
/* alter_db_optr ::= alter_db_optr quorum */
yytestcase
(
yyruleno
==
124
);
{
yylhsminor
.
yy
90
=
yymsp
[
-
1
].
minor
.
yy90
;
yylhsminor
.
yy9
0
.
quorum
=
strtol
(
yymsp
[
0
].
minor
.
yy0
.
z
,
NULL
,
10
);
}
yymsp
[
-
1
].
minor
.
yy
90
=
yylhsminor
.
yy9
0
;
{
yylhsminor
.
yy
470
=
yymsp
[
-
1
].
minor
.
yy470
;
yylhsminor
.
yy47
0
.
quorum
=
strtol
(
yymsp
[
0
].
minor
.
yy0
.
z
,
NULL
,
10
);
}
yymsp
[
-
1
].
minor
.
yy
470
=
yylhsminor
.
yy47
0
;
break
;
case
108
:
/* db_optr ::= db_optr days */
{
yylhsminor
.
yy
90
=
yymsp
[
-
1
].
minor
.
yy90
;
yylhsminor
.
yy9
0
.
daysPerFile
=
strtol
(
yymsp
[
0
].
minor
.
yy0
.
z
,
NULL
,
10
);
}
yymsp
[
-
1
].
minor
.
yy
90
=
yylhsminor
.
yy9
0
;
{
yylhsminor
.
yy
470
=
yymsp
[
-
1
].
minor
.
yy470
;
yylhsminor
.
yy47
0
.
daysPerFile
=
strtol
(
yymsp
[
0
].
minor
.
yy0
.
z
,
NULL
,
10
);
}
yymsp
[
-
1
].
minor
.
yy
470
=
yylhsminor
.
yy47
0
;
break
;
case
109
:
/* db_optr ::= db_optr minrows */
{
yylhsminor
.
yy
90
=
yymsp
[
-
1
].
minor
.
yy90
;
yylhsminor
.
yy9
0
.
minRowsPerBlock
=
strtod
(
yymsp
[
0
].
minor
.
yy0
.
z
,
NULL
);
}
yymsp
[
-
1
].
minor
.
yy
90
=
yylhsminor
.
yy9
0
;
{
yylhsminor
.
yy
470
=
yymsp
[
-
1
].
minor
.
yy470
;
yylhsminor
.
yy47
0
.
minRowsPerBlock
=
strtod
(
yymsp
[
0
].
minor
.
yy0
.
z
,
NULL
);
}
yymsp
[
-
1
].
minor
.
yy
470
=
yylhsminor
.
yy47
0
;
break
;
case
110
:
/* db_optr ::= db_optr maxrows */
{
yylhsminor
.
yy
90
=
yymsp
[
-
1
].
minor
.
yy90
;
yylhsminor
.
yy9
0
.
maxRowsPerBlock
=
strtod
(
yymsp
[
0
].
minor
.
yy0
.
z
,
NULL
);
}
yymsp
[
-
1
].
minor
.
yy
90
=
yylhsminor
.
yy9
0
;
{
yylhsminor
.
yy
470
=
yymsp
[
-
1
].
minor
.
yy470
;
yylhsminor
.
yy47
0
.
maxRowsPerBlock
=
strtod
(
yymsp
[
0
].
minor
.
yy0
.
z
,
NULL
);
}
yymsp
[
-
1
].
minor
.
yy
470
=
yylhsminor
.
yy47
0
;
break
;
case
111
:
/* db_optr ::= db_optr blocks */
case
126
:
/* alter_db_optr ::= alter_db_optr blocks */
yytestcase
(
yyruleno
==
126
);
{
yylhsminor
.
yy
90
=
yymsp
[
-
1
].
minor
.
yy90
;
yylhsminor
.
yy9
0
.
numOfBlocks
=
strtol
(
yymsp
[
0
].
minor
.
yy0
.
z
,
NULL
,
10
);
}
yymsp
[
-
1
].
minor
.
yy
90
=
yylhsminor
.
yy9
0
;
{
yylhsminor
.
yy
470
=
yymsp
[
-
1
].
minor
.
yy470
;
yylhsminor
.
yy47
0
.
numOfBlocks
=
strtol
(
yymsp
[
0
].
minor
.
yy0
.
z
,
NULL
,
10
);
}
yymsp
[
-
1
].
minor
.
yy
470
=
yylhsminor
.
yy47
0
;
break
;
case
112
:
/* db_optr ::= db_optr ctime */
{
yylhsminor
.
yy
90
=
yymsp
[
-
1
].
minor
.
yy90
;
yylhsminor
.
yy9
0
.
commitTime
=
strtol
(
yymsp
[
0
].
minor
.
yy0
.
z
,
NULL
,
10
);
}
yymsp
[
-
1
].
minor
.
yy
90
=
yylhsminor
.
yy9
0
;
{
yylhsminor
.
yy
470
=
yymsp
[
-
1
].
minor
.
yy470
;
yylhsminor
.
yy47
0
.
commitTime
=
strtol
(
yymsp
[
0
].
minor
.
yy0
.
z
,
NULL
,
10
);
}
yymsp
[
-
1
].
minor
.
yy
470
=
yylhsminor
.
yy47
0
;
break
;
case
113
:
/* db_optr ::= db_optr wal */
{
yylhsminor
.
yy
90
=
yymsp
[
-
1
].
minor
.
yy90
;
yylhsminor
.
yy9
0
.
walLevel
=
strtol
(
yymsp
[
0
].
minor
.
yy0
.
z
,
NULL
,
10
);
}
yymsp
[
-
1
].
minor
.
yy
90
=
yylhsminor
.
yy9
0
;
{
yylhsminor
.
yy
470
=
yymsp
[
-
1
].
minor
.
yy470
;
yylhsminor
.
yy47
0
.
walLevel
=
strtol
(
yymsp
[
0
].
minor
.
yy0
.
z
,
NULL
,
10
);
}
yymsp
[
-
1
].
minor
.
yy
470
=
yylhsminor
.
yy47
0
;
break
;
case
114
:
/* db_optr ::= db_optr fsync */
{
yylhsminor
.
yy
90
=
yymsp
[
-
1
].
minor
.
yy90
;
yylhsminor
.
yy9
0
.
fsyncPeriod
=
strtol
(
yymsp
[
0
].
minor
.
yy0
.
z
,
NULL
,
10
);
}
yymsp
[
-
1
].
minor
.
yy
90
=
yylhsminor
.
yy9
0
;
{
yylhsminor
.
yy
470
=
yymsp
[
-
1
].
minor
.
yy470
;
yylhsminor
.
yy47
0
.
fsyncPeriod
=
strtol
(
yymsp
[
0
].
minor
.
yy0
.
z
,
NULL
,
10
);
}
yymsp
[
-
1
].
minor
.
yy
470
=
yylhsminor
.
yy47
0
;
break
;
case
115
:
/* db_optr ::= db_optr comp */
case
127
:
/* alter_db_optr ::= alter_db_optr comp */
yytestcase
(
yyruleno
==
127
);
{
yylhsminor
.
yy
90
=
yymsp
[
-
1
].
minor
.
yy90
;
yylhsminor
.
yy9
0
.
compressionLevel
=
strtol
(
yymsp
[
0
].
minor
.
yy0
.
z
,
NULL
,
10
);
}
yymsp
[
-
1
].
minor
.
yy
90
=
yylhsminor
.
yy9
0
;
{
yylhsminor
.
yy
470
=
yymsp
[
-
1
].
minor
.
yy470
;
yylhsminor
.
yy47
0
.
compressionLevel
=
strtol
(
yymsp
[
0
].
minor
.
yy0
.
z
,
NULL
,
10
);
}
yymsp
[
-
1
].
minor
.
yy
470
=
yylhsminor
.
yy47
0
;
break
;
case
116
:
/* db_optr ::= db_optr prec */
{
yylhsminor
.
yy
90
=
yymsp
[
-
1
].
minor
.
yy90
;
yylhsminor
.
yy9
0
.
precision
=
yymsp
[
0
].
minor
.
yy0
;
}
yymsp
[
-
1
].
minor
.
yy
90
=
yylhsminor
.
yy9
0
;
{
yylhsminor
.
yy
470
=
yymsp
[
-
1
].
minor
.
yy470
;
yylhsminor
.
yy47
0
.
precision
=
yymsp
[
0
].
minor
.
yy0
;
}
yymsp
[
-
1
].
minor
.
yy
470
=
yylhsminor
.
yy47
0
;
break
;
case
117
:
/* db_optr ::= db_optr keep */
case
125
:
/* alter_db_optr ::= alter_db_optr keep */
yytestcase
(
yyruleno
==
125
);
{
yylhsminor
.
yy
90
=
yymsp
[
-
1
].
minor
.
yy90
;
yylhsminor
.
yy90
.
keep
=
yymsp
[
0
].
minor
.
yy421
;
}
yymsp
[
-
1
].
minor
.
yy
90
=
yylhsminor
.
yy9
0
;
{
yylhsminor
.
yy
470
=
yymsp
[
-
1
].
minor
.
yy470
;
yylhsminor
.
yy470
.
keep
=
yymsp
[
0
].
minor
.
yy89
;
}
yymsp
[
-
1
].
minor
.
yy
470
=
yylhsminor
.
yy47
0
;
break
;
case
118
:
/* db_optr ::= db_optr update */
case
128
:
/* alter_db_optr ::= alter_db_optr update */
yytestcase
(
yyruleno
==
128
);
{
yylhsminor
.
yy
90
=
yymsp
[
-
1
].
minor
.
yy90
;
yylhsminor
.
yy9
0
.
update
=
strtol
(
yymsp
[
0
].
minor
.
yy0
.
z
,
NULL
,
10
);
}
yymsp
[
-
1
].
minor
.
yy
90
=
yylhsminor
.
yy9
0
;
{
yylhsminor
.
yy
470
=
yymsp
[
-
1
].
minor
.
yy470
;
yylhsminor
.
yy47
0
.
update
=
strtol
(
yymsp
[
0
].
minor
.
yy0
.
z
,
NULL
,
10
);
}
yymsp
[
-
1
].
minor
.
yy
470
=
yylhsminor
.
yy47
0
;
break
;
case
119
:
/* db_optr ::= db_optr cachelast */
case
129
:
/* alter_db_optr ::= alter_db_optr cachelast */
yytestcase
(
yyruleno
==
129
);
{
yylhsminor
.
yy
90
=
yymsp
[
-
1
].
minor
.
yy90
;
yylhsminor
.
yy9
0
.
cachelast
=
strtol
(
yymsp
[
0
].
minor
.
yy0
.
z
,
NULL
,
10
);
}
yymsp
[
-
1
].
minor
.
yy
90
=
yylhsminor
.
yy9
0
;
{
yylhsminor
.
yy
470
=
yymsp
[
-
1
].
minor
.
yy470
;
yylhsminor
.
yy47
0
.
cachelast
=
strtol
(
yymsp
[
0
].
minor
.
yy0
.
z
,
NULL
,
10
);
}
yymsp
[
-
1
].
minor
.
yy
470
=
yylhsminor
.
yy47
0
;
break
;
case
120
:
/* topic_optr ::= db_optr */
case
130
:
/* alter_topic_optr ::= alter_db_optr */
yytestcase
(
yyruleno
==
130
);
{
yylhsminor
.
yy
90
=
yymsp
[
0
].
minor
.
yy90
;
yylhsminor
.
yy9
0
.
dbType
=
TSDB_DB_TYPE_TOPIC
;
}
yymsp
[
0
].
minor
.
yy
90
=
yylhsminor
.
yy9
0
;
{
yylhsminor
.
yy
470
=
yymsp
[
0
].
minor
.
yy470
;
yylhsminor
.
yy47
0
.
dbType
=
TSDB_DB_TYPE_TOPIC
;
}
yymsp
[
0
].
minor
.
yy
470
=
yylhsminor
.
yy47
0
;
break
;
case
121
:
/* topic_optr ::= topic_optr partitions */
case
131
:
/* alter_topic_optr ::= alter_topic_optr partitions */
yytestcase
(
yyruleno
==
131
);
{
yylhsminor
.
yy
90
=
yymsp
[
-
1
].
minor
.
yy90
;
yylhsminor
.
yy9
0
.
partitions
=
strtol
(
yymsp
[
0
].
minor
.
yy0
.
z
,
NULL
,
10
);
}
yymsp
[
-
1
].
minor
.
yy
90
=
yylhsminor
.
yy9
0
;
{
yylhsminor
.
yy
470
=
yymsp
[
-
1
].
minor
.
yy470
;
yylhsminor
.
yy47
0
.
partitions
=
strtol
(
yymsp
[
0
].
minor
.
yy0
.
z
,
NULL
,
10
);
}
yymsp
[
-
1
].
minor
.
yy
470
=
yylhsminor
.
yy47
0
;
break
;
case
122
:
/* alter_db_optr ::= */
{
setDefaultCreateDbOption
(
&
yymsp
[
1
].
minor
.
yy
90
);
yymsp
[
1
].
minor
.
yy9
0
.
dbType
=
TSDB_DB_TYPE_DEFAULT
;}
{
setDefaultCreateDbOption
(
&
yymsp
[
1
].
minor
.
yy
470
);
yymsp
[
1
].
minor
.
yy47
0
.
dbType
=
TSDB_DB_TYPE_DEFAULT
;}
break
;
case
132
:
/* typename ::= ids */
{
yymsp
[
0
].
minor
.
yy0
.
type
=
0
;
tSetColumnType
(
&
yylhsminor
.
yy
183
,
&
yymsp
[
0
].
minor
.
yy0
);
tSetColumnType
(
&
yylhsminor
.
yy
465
,
&
yymsp
[
0
].
minor
.
yy0
);
}
yymsp
[
0
].
minor
.
yy
183
=
yylhsminor
.
yy183
;
yymsp
[
0
].
minor
.
yy
465
=
yylhsminor
.
yy465
;
break
;
case
133
:
/* typename ::= ids LP signed RP */
{
if
(
yymsp
[
-
1
].
minor
.
yy
32
5
<=
0
)
{
if
(
yymsp
[
-
1
].
minor
.
yy
14
5
<=
0
)
{
yymsp
[
-
3
].
minor
.
yy0
.
type
=
0
;
tSetColumnType
(
&
yylhsminor
.
yy
183
,
&
yymsp
[
-
3
].
minor
.
yy0
);
tSetColumnType
(
&
yylhsminor
.
yy
465
,
&
yymsp
[
-
3
].
minor
.
yy0
);
}
else
{
yymsp
[
-
3
].
minor
.
yy0
.
type
=
-
yymsp
[
-
1
].
minor
.
yy
32
5
;
// negative value of name length
tSetColumnType
(
&
yylhsminor
.
yy
183
,
&
yymsp
[
-
3
].
minor
.
yy0
);
yymsp
[
-
3
].
minor
.
yy0
.
type
=
-
yymsp
[
-
1
].
minor
.
yy
14
5
;
// negative value of name length
tSetColumnType
(
&
yylhsminor
.
yy
465
,
&
yymsp
[
-
3
].
minor
.
yy0
);
}
}
yymsp
[
-
3
].
minor
.
yy
183
=
yylhsminor
.
yy183
;
yymsp
[
-
3
].
minor
.
yy
465
=
yylhsminor
.
yy465
;
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
183
,
&
yymsp
[
-
1
].
minor
.
yy0
);
tSetColumnType
(
&
yylhsminor
.
yy
465
,
&
yymsp
[
-
1
].
minor
.
yy0
);
}
yymsp
[
-
1
].
minor
.
yy
183
=
yylhsminor
.
yy183
;
yymsp
[
-
1
].
minor
.
yy
465
=
yylhsminor
.
yy465
;
break
;
case
135
:
/* signed ::= INTEGER */
{
yylhsminor
.
yy
32
5
=
strtol
(
yymsp
[
0
].
minor
.
yy0
.
z
,
NULL
,
10
);
}
yymsp
[
0
].
minor
.
yy
325
=
yylhsminor
.
yy32
5
;
{
yylhsminor
.
yy
14
5
=
strtol
(
yymsp
[
0
].
minor
.
yy0
.
z
,
NULL
,
10
);
}
yymsp
[
0
].
minor
.
yy
145
=
yylhsminor
.
yy14
5
;
break
;
case
136
:
/* signed ::= PLUS INTEGER */
{
yymsp
[
-
1
].
minor
.
yy
32
5
=
strtol
(
yymsp
[
0
].
minor
.
yy0
.
z
,
NULL
,
10
);
}
{
yymsp
[
-
1
].
minor
.
yy
14
5
=
strtol
(
yymsp
[
0
].
minor
.
yy0
.
z
,
NULL
,
10
);
}
break
;
case
137
:
/* signed ::= MINUS INTEGER */
{
yymsp
[
-
1
].
minor
.
yy
32
5
=
-
strtol
(
yymsp
[
0
].
minor
.
yy0
.
z
,
NULL
,
10
);}
{
yymsp
[
-
1
].
minor
.
yy
14
5
=
-
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
.
yy
438
;}
{
pInfo
->
type
=
TSDB_SQL_CREATE_TABLE
;
pInfo
->
pCreateTableInfo
=
yymsp
[
0
].
minor
.
yy
86
;}
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
.
yy
152
);
taosArrayPush
(
pCreateTable
->
childTableInfo
,
&
yymsp
[
0
].
minor
.
yy
506
);
pCreateTable
->
type
=
TSQL_CREATE_TABLE_FROM_STABLE
;
yylhsminor
.
yy
438
=
pCreateTable
;
yylhsminor
.
yy
86
=
pCreateTable
;
}
yymsp
[
0
].
minor
.
yy
438
=
yylhsminor
.
yy438
;
yymsp
[
0
].
minor
.
yy
86
=
yylhsminor
.
yy86
;
break
;
case
143
:
/* create_table_list ::= create_table_list create_from_stable */
{
taosArrayPush
(
yymsp
[
-
1
].
minor
.
yy
438
->
childTableInfo
,
&
yymsp
[
0
].
minor
.
yy152
);
yylhsminor
.
yy
438
=
yymsp
[
-
1
].
minor
.
yy438
;
taosArrayPush
(
yymsp
[
-
1
].
minor
.
yy
86
->
childTableInfo
,
&
yymsp
[
0
].
minor
.
yy506
);
yylhsminor
.
yy
86
=
yymsp
[
-
1
].
minor
.
yy86
;
}
yymsp
[
-
1
].
minor
.
yy
438
=
yylhsminor
.
yy438
;
yymsp
[
-
1
].
minor
.
yy
86
=
yylhsminor
.
yy86
;
break
;
case
144
:
/* create_table_args ::= ifnotexists ids cpxName LP columnlist RP */
{
yylhsminor
.
yy
438
=
tSetCreateTableInfo
(
yymsp
[
-
1
].
minor
.
yy421
,
NULL
,
NULL
,
TSQL_CREATE_TABLE
);
setSqlInfo
(
pInfo
,
yylhsminor
.
yy
438
,
NULL
,
TSDB_SQL_CREATE_TABLE
);
yylhsminor
.
yy
86
=
tSetCreateTableInfo
(
yymsp
[
-
1
].
minor
.
yy89
,
NULL
,
NULL
,
TSQL_CREATE_TABLE
);
setSqlInfo
(
pInfo
,
yylhsminor
.
yy
86
,
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
.
yy
438
=
yylhsminor
.
yy438
;
yymsp
[
-
5
].
minor
.
yy
86
=
yylhsminor
.
yy86
;
break
;
case
145
:
/* create_stable_args ::= ifnotexists ids cpxName LP columnlist RP TAGS LP columnlist RP */
{
yylhsminor
.
yy
438
=
tSetCreateTableInfo
(
yymsp
[
-
5
].
minor
.
yy421
,
yymsp
[
-
1
].
minor
.
yy421
,
NULL
,
TSQL_CREATE_STABLE
);
setSqlInfo
(
pInfo
,
yylhsminor
.
yy
438
,
NULL
,
TSDB_SQL_CREATE_TABLE
);
yylhsminor
.
yy
86
=
tSetCreateTableInfo
(
yymsp
[
-
5
].
minor
.
yy89
,
yymsp
[
-
1
].
minor
.
yy89
,
NULL
,
TSQL_CREATE_STABLE
);
setSqlInfo
(
pInfo
,
yylhsminor
.
yy
86
,
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
.
yy
438
=
yylhsminor
.
yy438
;
yymsp
[
-
9
].
minor
.
yy
86
=
yylhsminor
.
yy86
;
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
.
yy
152
=
createNewChildTableInfo
(
&
yymsp
[
-
5
].
minor
.
yy0
,
NULL
,
yymsp
[
-
1
].
minor
.
yy421
,
&
yymsp
[
-
8
].
minor
.
yy0
,
&
yymsp
[
-
9
].
minor
.
yy0
);
yylhsminor
.
yy
506
=
createNewChildTableInfo
(
&
yymsp
[
-
5
].
minor
.
yy0
,
NULL
,
yymsp
[
-
1
].
minor
.
yy89
,
&
yymsp
[
-
8
].
minor
.
yy0
,
&
yymsp
[
-
9
].
minor
.
yy0
);
}
yymsp
[
-
9
].
minor
.
yy
152
=
yylhsminor
.
yy152
;
yymsp
[
-
9
].
minor
.
yy
506
=
yylhsminor
.
yy506
;
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
.
yy
152
=
createNewChildTableInfo
(
&
yymsp
[
-
8
].
minor
.
yy0
,
yymsp
[
-
5
].
minor
.
yy421
,
yymsp
[
-
1
].
minor
.
yy421
,
&
yymsp
[
-
11
].
minor
.
yy0
,
&
yymsp
[
-
12
].
minor
.
yy0
);
yylhsminor
.
yy
506
=
createNewChildTableInfo
(
&
yymsp
[
-
8
].
minor
.
yy0
,
yymsp
[
-
5
].
minor
.
yy89
,
yymsp
[
-
1
].
minor
.
yy89
,
&
yymsp
[
-
11
].
minor
.
yy0
,
&
yymsp
[
-
12
].
minor
.
yy0
);
}
yymsp
[
-
12
].
minor
.
yy
152
=
yylhsminor
.
yy152
;
yymsp
[
-
12
].
minor
.
yy
506
=
yylhsminor
.
yy506
;
break
;
case
148
:
/* tagNamelist ::= tagNamelist COMMA ids */
{
taosArrayPush
(
yymsp
[
-
2
].
minor
.
yy
421
,
&
yymsp
[
0
].
minor
.
yy0
);
yylhsminor
.
yy421
=
yymsp
[
-
2
].
minor
.
yy421
;
}
yymsp
[
-
2
].
minor
.
yy
421
=
yylhsminor
.
yy421
;
{
taosArrayPush
(
yymsp
[
-
2
].
minor
.
yy
89
,
&
yymsp
[
0
].
minor
.
yy0
);
yylhsminor
.
yy89
=
yymsp
[
-
2
].
minor
.
yy89
;
}
yymsp
[
-
2
].
minor
.
yy
89
=
yylhsminor
.
yy89
;
break
;
case
149
:
/* tagNamelist ::= ids */
{
yylhsminor
.
yy
421
=
taosArrayInit
(
4
,
sizeof
(
SStrToken
));
taosArrayPush
(
yylhsminor
.
yy421
,
&
yymsp
[
0
].
minor
.
yy0
);}
yymsp
[
0
].
minor
.
yy
421
=
yylhsminor
.
yy421
;
{
yylhsminor
.
yy
89
=
taosArrayInit
(
4
,
sizeof
(
SStrToken
));
taosArrayPush
(
yylhsminor
.
yy89
,
&
yymsp
[
0
].
minor
.
yy0
);}
yymsp
[
0
].
minor
.
yy
89
=
yylhsminor
.
yy89
;
break
;
case
150
:
/* create_table_args ::= ifnotexists ids cpxName AS select */
case
150
:
/* create_table_args ::= ifnotexists ids cpxName
to_opt split_opt
AS select */
{
yylhsminor
.
yy
438
=
tSetCreateTableInfo
(
NULL
,
NULL
,
yymsp
[
0
].
minor
.
yy56
,
TSQL_CREATE_STREAM
);
setSqlInfo
(
pInfo
,
yylhsminor
.
yy
438
,
NULL
,
TSDB_SQL_CREATE_TABLE
);
yylhsminor
.
yy
86
=
tSetCreateTableInfo
(
NULL
,
NULL
,
yymsp
[
0
].
minor
.
yy378
,
TSQL_CREATE_STREAM
);
setSqlInfo
(
pInfo
,
yylhsminor
.
yy
86
,
NULL
,
TSDB_SQL_CREATE_TABLE
);
yymsp
[
-
3
].
minor
.
yy0
.
n
+=
yymsp
[
-
2
].
minor
.
yy0
.
n
;
setCreatedTableName
(
pInfo
,
&
yymsp
[
-
3
].
minor
.
yy0
,
&
yymsp
[
-
4
].
minor
.
yy0
);
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
[
-
4
].
minor
.
yy438
=
yylhsminor
.
yy438
;
yymsp
[
-
6
].
minor
.
yy86
=
yylhsminor
.
yy86
;
break
;
case
151
:
/* to_opt ::= */
case
153
:
/* split_opt ::= */
yytestcase
(
yyruleno
==
153
);
{
yymsp
[
1
].
minor
.
yy0
.
n
=
0
;}
break
;
case
152
:
/* to_opt ::= TO ids cpxName */
{
yymsp
[
-
2
].
minor
.
yy0
=
yymsp
[
-
1
].
minor
.
yy0
;
yymsp
[
-
2
].
minor
.
yy0
.
n
+=
yymsp
[
0
].
minor
.
yy0
.
n
;
}
break
;
case
154
:
/* split_opt ::= SPLIT ids */
{
yymsp
[
-
1
].
minor
.
yy0
=
yymsp
[
0
].
minor
.
yy0
;}
break
;
case
15
1
:
/* columnlist ::= columnlist COMMA column */
{
taosArrayPush
(
yymsp
[
-
2
].
minor
.
yy
421
,
&
yymsp
[
0
].
minor
.
yy183
);
yylhsminor
.
yy421
=
yymsp
[
-
2
].
minor
.
yy421
;
}
yymsp
[
-
2
].
minor
.
yy
421
=
yylhsminor
.
yy421
;
case
15
5
:
/* columnlist ::= columnlist COMMA column */
{
taosArrayPush
(
yymsp
[
-
2
].
minor
.
yy
89
,
&
yymsp
[
0
].
minor
.
yy465
);
yylhsminor
.
yy89
=
yymsp
[
-
2
].
minor
.
yy89
;
}
yymsp
[
-
2
].
minor
.
yy
89
=
yylhsminor
.
yy89
;
break
;
case
15
2
:
/* columnlist ::= column */
{
yylhsminor
.
yy
421
=
taosArrayInit
(
4
,
sizeof
(
TAOS_FIELD
));
taosArrayPush
(
yylhsminor
.
yy421
,
&
yymsp
[
0
].
minor
.
yy183
);}
yymsp
[
0
].
minor
.
yy
421
=
yylhsminor
.
yy421
;
case
15
6
:
/* columnlist ::= column */
{
yylhsminor
.
yy
89
=
taosArrayInit
(
4
,
sizeof
(
TAOS_FIELD
));
taosArrayPush
(
yylhsminor
.
yy89
,
&
yymsp
[
0
].
minor
.
yy465
);}
yymsp
[
0
].
minor
.
yy
89
=
yylhsminor
.
yy89
;
break
;
case
15
3
:
/* column ::= ids typename */
case
15
7
:
/* column ::= ids typename */
{
tSetColumnInfo
(
&
yylhsminor
.
yy
183
,
&
yymsp
[
-
1
].
minor
.
yy0
,
&
yymsp
[
0
].
minor
.
yy183
);
tSetColumnInfo
(
&
yylhsminor
.
yy
465
,
&
yymsp
[
-
1
].
minor
.
yy0
,
&
yymsp
[
0
].
minor
.
yy465
);
}
yymsp
[
-
1
].
minor
.
yy
183
=
yylhsminor
.
yy183
;
yymsp
[
-
1
].
minor
.
yy
465
=
yylhsminor
.
yy465
;
break
;
case
16
0
:
/* tagitem ::= NULL */
{
yymsp
[
0
].
minor
.
yy0
.
type
=
0
;
tVariantCreate
(
&
yylhsminor
.
yy
430
,
&
yymsp
[
0
].
minor
.
yy0
);
}
yymsp
[
0
].
minor
.
yy
430
=
yylhsminor
.
yy430
;
case
16
4
:
/* tagitem ::= NULL */
{
yymsp
[
0
].
minor
.
yy0
.
type
=
0
;
tVariantCreate
(
&
yylhsminor
.
yy
112
,
&
yymsp
[
0
].
minor
.
yy0
);
}
yymsp
[
0
].
minor
.
yy
112
=
yylhsminor
.
yy112
;
break
;
case
16
1
:
/* tagitem ::= NOW */
{
yymsp
[
0
].
minor
.
yy0
.
type
=
TSDB_DATA_TYPE_TIMESTAMP
;
tVariantCreateExt
(
&
yylhsminor
.
yy
430
,
&
yymsp
[
0
].
minor
.
yy0
,
TK_NOW
);}
yymsp
[
0
].
minor
.
yy
430
=
yylhsminor
.
yy430
;
case
16
5
:
/* tagitem ::= NOW */
{
yymsp
[
0
].
minor
.
yy0
.
type
=
TSDB_DATA_TYPE_TIMESTAMP
;
tVariantCreateExt
(
&
yylhsminor
.
yy
112
,
&
yymsp
[
0
].
minor
.
yy0
,
TK_NOW
);}
yymsp
[
0
].
minor
.
yy
112
=
yylhsminor
.
yy112
;
break
;
case
16
2
:
/* tagitem ::= NOW PLUS VARIABLE */
case
16
6
:
/* tagitem ::= NOW PLUS VARIABLE */
{
yymsp
[
0
].
minor
.
yy0
.
type
=
TSDB_DATA_TYPE_TIMESTAMP
;
tVariantCreateExt
(
&
yymsp
[
-
2
].
minor
.
yy
430
,
&
yymsp
[
0
].
minor
.
yy0
,
TK_PLUS
);
tVariantCreateExt
(
&
yymsp
[
-
2
].
minor
.
yy
112
,
&
yymsp
[
0
].
minor
.
yy0
,
TK_PLUS
);
}
break
;
case
16
3
:
/* tagitem ::= NOW MINUS VARIABLE */
case
16
7
:
/* tagitem ::= NOW MINUS VARIABLE */
{
yymsp
[
0
].
minor
.
yy0
.
type
=
TSDB_DATA_TYPE_TIMESTAMP
;
tVariantCreateExt
(
&
yymsp
[
-
2
].
minor
.
yy
430
,
&
yymsp
[
0
].
minor
.
yy0
,
TK_MINUS
);
tVariantCreateExt
(
&
yymsp
[
-
2
].
minor
.
yy
112
,
&
yymsp
[
0
].
minor
.
yy0
,
TK_MINUS
);
}
break
;
case
16
4
:
/* tagitem ::= MINUS INTEGER */
case
16
5
:
/* tagitem ::= MINUS FLOAT */
yytestcase
(
yyruleno
==
165
);
case
1
66
:
/* tagitem ::= PLUS INTEGER */
yytestcase
(
yyruleno
==
166
);
case
1
67
:
/* tagitem ::= PLUS FLOAT */
yytestcase
(
yyruleno
==
167
);
case
16
8
:
/* tagitem ::= MINUS INTEGER */
case
16
9
:
/* tagitem ::= MINUS FLOAT */
yytestcase
(
yyruleno
==
169
);
case
1
70
:
/* tagitem ::= PLUS INTEGER */
yytestcase
(
yyruleno
==
170
);
case
1
71
:
/* tagitem ::= PLUS FLOAT */
yytestcase
(
yyruleno
==
171
);
{
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
.
yy
430
,
&
yymsp
[
-
1
].
minor
.
yy0
);
tVariantCreate
(
&
yylhsminor
.
yy
112
,
&
yymsp
[
-
1
].
minor
.
yy0
);
}
yymsp
[
-
1
].
minor
.
yy
430
=
yylhsminor
.
yy430
;
yymsp
[
-
1
].
minor
.
yy
112
=
yylhsminor
.
yy112
;
break
;
case
1
68
:
/* select ::= SELECT selcollist from where_opt interval_option sliding_opt session_option windowstate_option fill_opt groupby_opt having_opt orderby_opt slimit_opt limit_opt */
case
1
72
:
/* select ::= SELECT selcollist from where_opt interval_option sliding_opt session_option windowstate_option fill_opt groupby_opt having_opt orderby_opt slimit_opt limit_opt */
{
yylhsminor
.
yy
56
=
tSetQuerySqlNode
(
&
yymsp
[
-
13
].
minor
.
yy0
,
yymsp
[
-
12
].
minor
.
yy421
,
yymsp
[
-
11
].
minor
.
yy8
,
yymsp
[
-
10
].
minor
.
yy439
,
yymsp
[
-
4
].
minor
.
yy421
,
yymsp
[
-
2
].
minor
.
yy421
,
&
yymsp
[
-
9
].
minor
.
yy400
,
&
yymsp
[
-
7
].
minor
.
yy147
,
&
yymsp
[
-
6
].
minor
.
yy40
,
&
yymsp
[
-
8
].
minor
.
yy0
,
yymsp
[
-
5
].
minor
.
yy421
,
&
yymsp
[
0
].
minor
.
yy166
,
&
yymsp
[
-
1
].
minor
.
yy166
,
yymsp
[
-
3
].
minor
.
yy439
);
yylhsminor
.
yy
378
=
tSetQuerySqlNode
(
&
yymsp
[
-
13
].
minor
.
yy0
,
yymsp
[
-
12
].
minor
.
yy89
,
yymsp
[
-
11
].
minor
.
yy166
,
yymsp
[
-
10
].
minor
.
yy342
,
yymsp
[
-
4
].
minor
.
yy89
,
yymsp
[
-
2
].
minor
.
yy89
,
&
yymsp
[
-
9
].
minor
.
yy66
,
&
yymsp
[
-
7
].
minor
.
yy431
,
&
yymsp
[
-
6
].
minor
.
yy392
,
&
yymsp
[
-
8
].
minor
.
yy0
,
yymsp
[
-
5
].
minor
.
yy89
,
&
yymsp
[
0
].
minor
.
yy372
,
&
yymsp
[
-
1
].
minor
.
yy372
,
yymsp
[
-
3
].
minor
.
yy342
);
}
yymsp
[
-
13
].
minor
.
yy
56
=
yylhsminor
.
yy56
;
yymsp
[
-
13
].
minor
.
yy
378
=
yylhsminor
.
yy378
;
break
;
case
1
69
:
/* select ::= LP select RP */
{
yymsp
[
-
2
].
minor
.
yy
56
=
yymsp
[
-
1
].
minor
.
yy56
;}
case
1
73
:
/* select ::= LP select RP */
{
yymsp
[
-
2
].
minor
.
yy
378
=
yymsp
[
-
1
].
minor
.
yy378
;}
break
;
case
17
0
:
/* union ::= select */
{
yylhsminor
.
yy
421
=
setSubclause
(
NULL
,
yymsp
[
0
].
minor
.
yy56
);
}
yymsp
[
0
].
minor
.
yy
421
=
yylhsminor
.
yy421
;
case
17
4
:
/* union ::= select */
{
yylhsminor
.
yy
89
=
setSubclause
(
NULL
,
yymsp
[
0
].
minor
.
yy378
);
}
yymsp
[
0
].
minor
.
yy
89
=
yylhsminor
.
yy89
;
break
;
case
17
1
:
/* union ::= union UNION ALL select */
{
yylhsminor
.
yy
421
=
appendSelectClause
(
yymsp
[
-
3
].
minor
.
yy421
,
yymsp
[
0
].
minor
.
yy56
);
}
yymsp
[
-
3
].
minor
.
yy
421
=
yylhsminor
.
yy421
;
case
17
5
:
/* union ::= union UNION ALL select */
{
yylhsminor
.
yy
89
=
appendSelectClause
(
yymsp
[
-
3
].
minor
.
yy89
,
yymsp
[
0
].
minor
.
yy378
);
}
yymsp
[
-
3
].
minor
.
yy
89
=
yylhsminor
.
yy89
;
break
;
case
17
2
:
/* cmd ::= union */
{
setSqlInfo
(
pInfo
,
yymsp
[
0
].
minor
.
yy
421
,
NULL
,
TSDB_SQL_SELECT
);
}
case
17
6
:
/* cmd ::= union */
{
setSqlInfo
(
pInfo
,
yymsp
[
0
].
minor
.
yy
89
,
NULL
,
TSDB_SQL_SELECT
);
}
break
;
case
17
3
:
/* select ::= SELECT selcollist */
case
17
7
:
/* select ::= SELECT selcollist */
{
yylhsminor
.
yy
56
=
tSetQuerySqlNode
(
&
yymsp
[
-
1
].
minor
.
yy0
,
yymsp
[
0
].
minor
.
yy421
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
);
yylhsminor
.
yy
378
=
tSetQuerySqlNode
(
&
yymsp
[
-
1
].
minor
.
yy0
,
yymsp
[
0
].
minor
.
yy89
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
);
}
yymsp
[
-
1
].
minor
.
yy
56
=
yylhsminor
.
yy56
;
yymsp
[
-
1
].
minor
.
yy
378
=
yylhsminor
.
yy378
;
break
;
case
17
4
:
/* sclp ::= selcollist COMMA */
{
yylhsminor
.
yy
421
=
yymsp
[
-
1
].
minor
.
yy421
;}
yymsp
[
-
1
].
minor
.
yy
421
=
yylhsminor
.
yy421
;
case
17
8
:
/* sclp ::= selcollist COMMA */
{
yylhsminor
.
yy
89
=
yymsp
[
-
1
].
minor
.
yy89
;}
yymsp
[
-
1
].
minor
.
yy
89
=
yylhsminor
.
yy89
;
break
;
case
17
5
:
/* sclp ::= */
case
2
07
:
/* orderby_opt ::= */
yytestcase
(
yyruleno
==
207
);
{
yymsp
[
1
].
minor
.
yy
421
=
0
;}
case
17
9
:
/* sclp ::= */
case
2
11
:
/* orderby_opt ::= */
yytestcase
(
yyruleno
==
211
);
{
yymsp
[
1
].
minor
.
yy
89
=
0
;}
break
;
case
1
76
:
/* selcollist ::= sclp distinct expr as */
case
1
80
:
/* selcollist ::= sclp distinct expr as */
{
yylhsminor
.
yy
421
=
tSqlExprListAppend
(
yymsp
[
-
3
].
minor
.
yy421
,
yymsp
[
-
1
].
minor
.
yy439
,
yymsp
[
-
2
].
minor
.
yy0
.
n
?
&
yymsp
[
-
2
].
minor
.
yy0
:
0
,
yymsp
[
0
].
minor
.
yy0
.
n
?&
yymsp
[
0
].
minor
.
yy0
:
0
);
yylhsminor
.
yy
89
=
tSqlExprListAppend
(
yymsp
[
-
3
].
minor
.
yy89
,
yymsp
[
-
1
].
minor
.
yy342
,
yymsp
[
-
2
].
minor
.
yy0
.
n
?
&
yymsp
[
-
2
].
minor
.
yy0
:
0
,
yymsp
[
0
].
minor
.
yy0
.
n
?&
yymsp
[
0
].
minor
.
yy0
:
0
);
}
yymsp
[
-
3
].
minor
.
yy
421
=
yylhsminor
.
yy421
;
yymsp
[
-
3
].
minor
.
yy
89
=
yylhsminor
.
yy89
;
break
;
case
1
77
:
/* selcollist ::= sclp STAR */
case
1
81
:
/* selcollist ::= sclp STAR */
{
tSqlExpr
*
pNode
=
tSqlExprCreateIdValue
(
pInfo
,
NULL
,
TK_ALL
);
yylhsminor
.
yy
421
=
tSqlExprListAppend
(
yymsp
[
-
1
].
minor
.
yy421
,
pNode
,
0
,
0
);
yylhsminor
.
yy
89
=
tSqlExprListAppend
(
yymsp
[
-
1
].
minor
.
yy89
,
pNode
,
0
,
0
);
}
yymsp
[
-
1
].
minor
.
yy
421
=
yylhsminor
.
yy421
;
yymsp
[
-
1
].
minor
.
yy
89
=
yylhsminor
.
yy89
;
break
;
case
1
78
:
/* as ::= AS ids */
case
1
82
:
/* as ::= AS ids */
{
yymsp
[
-
1
].
minor
.
yy0
=
yymsp
[
0
].
minor
.
yy0
;
}
break
;
case
1
79
:
/* as ::= ids */
case
1
83
:
/* as ::= ids */
{
yylhsminor
.
yy0
=
yymsp
[
0
].
minor
.
yy0
;
}
yymsp
[
0
].
minor
.
yy0
=
yylhsminor
.
yy0
;
break
;
case
18
0
:
/* as ::= */
case
18
4
:
/* as ::= */
{
yymsp
[
1
].
minor
.
yy0
.
n
=
0
;
}
break
;
case
18
1
:
/* distinct ::= DISTINCT */
case
18
5
:
/* distinct ::= DISTINCT */
{
yylhsminor
.
yy0
=
yymsp
[
0
].
minor
.
yy0
;
}
yymsp
[
0
].
minor
.
yy0
=
yylhsminor
.
yy0
;
break
;
case
18
3
:
/* from ::= FROM tablelist */
case
18
4
:
/* from ::= FROM sub */
yytestcase
(
yyruleno
==
184
);
{
yymsp
[
-
1
].
minor
.
yy
8
=
yymsp
[
0
].
minor
.
yy8
;}
case
18
7
:
/* from ::= FROM tablelist */
case
18
8
:
/* from ::= FROM sub */
yytestcase
(
yyruleno
==
188
);
{
yymsp
[
-
1
].
minor
.
yy
166
=
yymsp
[
0
].
minor
.
yy166
;}
break
;
case
18
5
:
/* sub ::= LP union RP */
{
yymsp
[
-
2
].
minor
.
yy
8
=
addSubqueryElem
(
NULL
,
yymsp
[
-
1
].
minor
.
yy421
,
NULL
);}
case
18
9
:
/* sub ::= LP union RP */
{
yymsp
[
-
2
].
minor
.
yy
166
=
addSubqueryElem
(
NULL
,
yymsp
[
-
1
].
minor
.
yy89
,
NULL
);}
break
;
case
1
86
:
/* sub ::= LP union RP ids */
{
yymsp
[
-
3
].
minor
.
yy
8
=
addSubqueryElem
(
NULL
,
yymsp
[
-
2
].
minor
.
yy421
,
&
yymsp
[
0
].
minor
.
yy0
);}
case
1
90
:
/* sub ::= LP union RP ids */
{
yymsp
[
-
3
].
minor
.
yy
166
=
addSubqueryElem
(
NULL
,
yymsp
[
-
2
].
minor
.
yy89
,
&
yymsp
[
0
].
minor
.
yy0
);}
break
;
case
1
87
:
/* sub ::= sub COMMA LP union RP ids */
{
yylhsminor
.
yy
8
=
addSubqueryElem
(
yymsp
[
-
5
].
minor
.
yy8
,
yymsp
[
-
2
].
minor
.
yy421
,
&
yymsp
[
0
].
minor
.
yy0
);}
yymsp
[
-
5
].
minor
.
yy
8
=
yylhsminor
.
yy8
;
case
1
91
:
/* sub ::= sub COMMA LP union RP ids */
{
yylhsminor
.
yy
166
=
addSubqueryElem
(
yymsp
[
-
5
].
minor
.
yy166
,
yymsp
[
-
2
].
minor
.
yy89
,
&
yymsp
[
0
].
minor
.
yy0
);}
yymsp
[
-
5
].
minor
.
yy
166
=
yylhsminor
.
yy166
;
break
;
case
1
88
:
/* tablelist ::= ids cpxName */
case
1
92
:
/* tablelist ::= ids cpxName */
{
yymsp
[
-
1
].
minor
.
yy0
.
n
+=
yymsp
[
0
].
minor
.
yy0
.
n
;
yylhsminor
.
yy
8
=
setTableNameList
(
NULL
,
&
yymsp
[
-
1
].
minor
.
yy0
,
NULL
);
yylhsminor
.
yy
166
=
setTableNameList
(
NULL
,
&
yymsp
[
-
1
].
minor
.
yy0
,
NULL
);
}
yymsp
[
-
1
].
minor
.
yy
8
=
yylhsminor
.
yy8
;
yymsp
[
-
1
].
minor
.
yy
166
=
yylhsminor
.
yy166
;
break
;
case
1
89
:
/* tablelist ::= ids cpxName ids */
case
1
93
:
/* tablelist ::= ids cpxName ids */
{
yymsp
[
-
2
].
minor
.
yy0
.
n
+=
yymsp
[
-
1
].
minor
.
yy0
.
n
;
yylhsminor
.
yy
8
=
setTableNameList
(
NULL
,
&
yymsp
[
-
2
].
minor
.
yy0
,
&
yymsp
[
0
].
minor
.
yy0
);
yylhsminor
.
yy
166
=
setTableNameList
(
NULL
,
&
yymsp
[
-
2
].
minor
.
yy0
,
&
yymsp
[
0
].
minor
.
yy0
);
}
yymsp
[
-
2
].
minor
.
yy
8
=
yylhsminor
.
yy8
;
yymsp
[
-
2
].
minor
.
yy
166
=
yylhsminor
.
yy166
;
break
;
case
19
0
:
/* tablelist ::= tablelist COMMA ids cpxName */
case
19
4
:
/* tablelist ::= tablelist COMMA ids cpxName */
{
yymsp
[
-
1
].
minor
.
yy0
.
n
+=
yymsp
[
0
].
minor
.
yy0
.
n
;
yylhsminor
.
yy
8
=
setTableNameList
(
yymsp
[
-
3
].
minor
.
yy8
,
&
yymsp
[
-
1
].
minor
.
yy0
,
NULL
);
yylhsminor
.
yy
166
=
setTableNameList
(
yymsp
[
-
3
].
minor
.
yy166
,
&
yymsp
[
-
1
].
minor
.
yy0
,
NULL
);
}
yymsp
[
-
3
].
minor
.
yy
8
=
yylhsminor
.
yy8
;
yymsp
[
-
3
].
minor
.
yy
166
=
yylhsminor
.
yy166
;
break
;
case
19
1
:
/* tablelist ::= tablelist COMMA ids cpxName ids */
case
19
5
:
/* tablelist ::= tablelist COMMA ids cpxName ids */
{
yymsp
[
-
2
].
minor
.
yy0
.
n
+=
yymsp
[
-
1
].
minor
.
yy0
.
n
;
yylhsminor
.
yy
8
=
setTableNameList
(
yymsp
[
-
4
].
minor
.
yy8
,
&
yymsp
[
-
2
].
minor
.
yy0
,
&
yymsp
[
0
].
minor
.
yy0
);
yylhsminor
.
yy
166
=
setTableNameList
(
yymsp
[
-
4
].
minor
.
yy166
,
&
yymsp
[
-
2
].
minor
.
yy0
,
&
yymsp
[
0
].
minor
.
yy0
);
}
yymsp
[
-
4
].
minor
.
yy
8
=
yylhsminor
.
yy8
;
yymsp
[
-
4
].
minor
.
yy
166
=
yylhsminor
.
yy166
;
break
;
case
19
2
:
/* tmvar ::= VARIABLE */
case
19
6
:
/* tmvar ::= VARIABLE */
{
yylhsminor
.
yy0
=
yymsp
[
0
].
minor
.
yy0
;}
yymsp
[
0
].
minor
.
yy0
=
yylhsminor
.
yy0
;
break
;
case
19
3
:
/* interval_option ::= intervalKey LP tmvar RP */
{
yylhsminor
.
yy
400
.
interval
=
yymsp
[
-
1
].
minor
.
yy0
;
yylhsminor
.
yy400
.
offset
.
n
=
0
;
yylhsminor
.
yy400
.
token
=
yymsp
[
-
3
].
minor
.
yy104
;}
yymsp
[
-
3
].
minor
.
yy
400
=
yylhsminor
.
yy400
;
case
19
7
:
/* interval_option ::= intervalKey LP tmvar RP */
{
yylhsminor
.
yy
66
.
interval
=
yymsp
[
-
1
].
minor
.
yy0
;
yylhsminor
.
yy66
.
offset
.
n
=
0
;
yylhsminor
.
yy66
.
token
=
yymsp
[
-
3
].
minor
.
yy130
;}
yymsp
[
-
3
].
minor
.
yy
66
=
yylhsminor
.
yy66
;
break
;
case
19
4
:
/* interval_option ::= intervalKey LP tmvar COMMA tmvar RP */
{
yylhsminor
.
yy
400
.
interval
=
yymsp
[
-
3
].
minor
.
yy0
;
yylhsminor
.
yy400
.
offset
=
yymsp
[
-
1
].
minor
.
yy0
;
yylhsminor
.
yy400
.
token
=
yymsp
[
-
5
].
minor
.
yy104
;}
yymsp
[
-
5
].
minor
.
yy
400
=
yylhsminor
.
yy400
;
case
19
8
:
/* interval_option ::= intervalKey LP tmvar COMMA tmvar RP */
{
yylhsminor
.
yy
66
.
interval
=
yymsp
[
-
3
].
minor
.
yy0
;
yylhsminor
.
yy66
.
offset
=
yymsp
[
-
1
].
minor
.
yy0
;
yylhsminor
.
yy66
.
token
=
yymsp
[
-
5
].
minor
.
yy130
;}
yymsp
[
-
5
].
minor
.
yy
66
=
yylhsminor
.
yy66
;
break
;
case
19
5
:
/* interval_option ::= */
{
memset
(
&
yymsp
[
1
].
minor
.
yy
400
,
0
,
sizeof
(
yymsp
[
1
].
minor
.
yy400
));}
case
19
9
:
/* interval_option ::= */
{
memset
(
&
yymsp
[
1
].
minor
.
yy
66
,
0
,
sizeof
(
yymsp
[
1
].
minor
.
yy66
));}
break
;
case
196
:
/* intervalKey ::= INTERVAL */
{
yymsp
[
0
].
minor
.
yy1
04
=
TK_INTERVAL
;}
case
200
:
/* intervalKey ::= INTERVAL */
{
yymsp
[
0
].
minor
.
yy1
30
=
TK_INTERVAL
;}
break
;
case
197
:
/* intervalKey ::= EVERY */
{
yymsp
[
0
].
minor
.
yy1
04
=
TK_EVERY
;
}
case
201
:
/* intervalKey ::= EVERY */
{
yymsp
[
0
].
minor
.
yy1
30
=
TK_EVERY
;
}
break
;
case
198
:
/* session_option ::= */
{
yymsp
[
1
].
minor
.
yy
147
.
col
.
n
=
0
;
yymsp
[
1
].
minor
.
yy147
.
gap
.
n
=
0
;}
case
202
:
/* session_option ::= */
{
yymsp
[
1
].
minor
.
yy
431
.
col
.
n
=
0
;
yymsp
[
1
].
minor
.
yy431
.
gap
.
n
=
0
;}
break
;
case
199
:
/* session_option ::= SESSION LP ids cpxName COMMA tmvar RP */
case
203
:
/* session_option ::= SESSION LP ids cpxName COMMA tmvar RP */
{
yymsp
[
-
4
].
minor
.
yy0
.
n
+=
yymsp
[
-
3
].
minor
.
yy0
.
n
;
yymsp
[
-
6
].
minor
.
yy
147
.
col
=
yymsp
[
-
4
].
minor
.
yy0
;
yymsp
[
-
6
].
minor
.
yy
147
.
gap
=
yymsp
[
-
1
].
minor
.
yy0
;
yymsp
[
-
6
].
minor
.
yy
431
.
col
=
yymsp
[
-
4
].
minor
.
yy0
;
yymsp
[
-
6
].
minor
.
yy
431
.
gap
=
yymsp
[
-
1
].
minor
.
yy0
;
}
break
;
case
20
0
:
/* windowstate_option ::= */
{
yymsp
[
1
].
minor
.
yy
40
.
col
.
n
=
0
;
yymsp
[
1
].
minor
.
yy40
.
col
.
z
=
NULL
;}
case
20
4
:
/* windowstate_option ::= */
{
yymsp
[
1
].
minor
.
yy
392
.
col
.
n
=
0
;
yymsp
[
1
].
minor
.
yy392
.
col
.
z
=
NULL
;}
break
;
case
20
1
:
/* windowstate_option ::= STATE_WINDOW LP ids RP */
{
yymsp
[
-
3
].
minor
.
yy
40
.
col
=
yymsp
[
-
1
].
minor
.
yy0
;
}
case
20
5
:
/* windowstate_option ::= STATE_WINDOW LP ids RP */
{
yymsp
[
-
3
].
minor
.
yy
392
.
col
=
yymsp
[
-
1
].
minor
.
yy0
;
}
break
;
case
20
2
:
/* fill_opt ::= */
{
yymsp
[
1
].
minor
.
yy
421
=
0
;
}
case
20
6
:
/* fill_opt ::= */
{
yymsp
[
1
].
minor
.
yy
89
=
0
;
}
break
;
case
20
3
:
/* fill_opt ::= FILL LP ID COMMA tagitemlist RP */
case
20
7
:
/* fill_opt ::= FILL LP ID COMMA tagitemlist RP */
{
tVariant
A
=
{
0
};
toTSDBType
(
yymsp
[
-
3
].
minor
.
yy0
.
type
);
tVariantCreate
(
&
A
,
&
yymsp
[
-
3
].
minor
.
yy0
);
tVariantListInsert
(
yymsp
[
-
1
].
minor
.
yy
421
,
&
A
,
-
1
,
0
);
yymsp
[
-
5
].
minor
.
yy
421
=
yymsp
[
-
1
].
minor
.
yy421
;
tVariantListInsert
(
yymsp
[
-
1
].
minor
.
yy
89
,
&
A
,
-
1
,
0
);
yymsp
[
-
5
].
minor
.
yy
89
=
yymsp
[
-
1
].
minor
.
yy89
;
}
break
;
case
20
4
:
/* fill_opt ::= FILL LP ID RP */
case
20
8
:
/* fill_opt ::= FILL LP ID RP */
{
toTSDBType
(
yymsp
[
-
1
].
minor
.
yy0
.
type
);
yymsp
[
-
3
].
minor
.
yy
421
=
tVariantListAppendToken
(
NULL
,
&
yymsp
[
-
1
].
minor
.
yy0
,
-
1
);
yymsp
[
-
3
].
minor
.
yy
89
=
tVariantListAppendToken
(
NULL
,
&
yymsp
[
-
1
].
minor
.
yy0
,
-
1
);
}
break
;
case
20
5
:
/* sliding_opt ::= SLIDING LP tmvar RP */
case
20
9
:
/* sliding_opt ::= SLIDING LP tmvar RP */
{
yymsp
[
-
3
].
minor
.
yy0
=
yymsp
[
-
1
].
minor
.
yy0
;
}
break
;
case
2
06
:
/* sliding_opt ::= */
case
2
10
:
/* sliding_opt ::= */
{
yymsp
[
1
].
minor
.
yy0
.
n
=
0
;
yymsp
[
1
].
minor
.
yy0
.
z
=
NULL
;
yymsp
[
1
].
minor
.
yy0
.
type
=
0
;
}
break
;
case
2
08
:
/* orderby_opt ::= ORDER BY sortlist */
{
yymsp
[
-
2
].
minor
.
yy
421
=
yymsp
[
0
].
minor
.
yy421
;}
case
2
12
:
/* orderby_opt ::= ORDER BY sortlist */
{
yymsp
[
-
2
].
minor
.
yy
89
=
yymsp
[
0
].
minor
.
yy89
;}
break
;
case
2
09
:
/* sortlist ::= sortlist COMMA item sortorder */
case
2
13
:
/* sortlist ::= sortlist COMMA item sortorder */
{
yylhsminor
.
yy
421
=
tVariantListAppend
(
yymsp
[
-
3
].
minor
.
yy421
,
&
yymsp
[
-
1
].
minor
.
yy430
,
yymsp
[
0
].
minor
.
yy9
6
);
yylhsminor
.
yy
89
=
tVariantListAppend
(
yymsp
[
-
3
].
minor
.
yy89
,
&
yymsp
[
-
1
].
minor
.
yy112
,
yymsp
[
0
].
minor
.
yy34
6
);
}
yymsp
[
-
3
].
minor
.
yy
421
=
yylhsminor
.
yy421
;
yymsp
[
-
3
].
minor
.
yy
89
=
yylhsminor
.
yy89
;
break
;
case
21
0
:
/* sortlist ::= item sortorder */
case
21
4
:
/* sortlist ::= item sortorder */
{
yylhsminor
.
yy
421
=
tVariantListAppend
(
NULL
,
&
yymsp
[
-
1
].
minor
.
yy430
,
yymsp
[
0
].
minor
.
yy9
6
);
yylhsminor
.
yy
89
=
tVariantListAppend
(
NULL
,
&
yymsp
[
-
1
].
minor
.
yy112
,
yymsp
[
0
].
minor
.
yy34
6
);
}
yymsp
[
-
1
].
minor
.
yy
421
=
yylhsminor
.
yy421
;
yymsp
[
-
1
].
minor
.
yy
89
=
yylhsminor
.
yy89
;
break
;
case
21
1
:
/* item ::= ids cpxName */
case
21
5
:
/* item ::= ids cpxName */
{
toTSDBType
(
yymsp
[
-
1
].
minor
.
yy0
.
type
);
yymsp
[
-
1
].
minor
.
yy0
.
n
+=
yymsp
[
0
].
minor
.
yy0
.
n
;
tVariantCreate
(
&
yylhsminor
.
yy
430
,
&
yymsp
[
-
1
].
minor
.
yy0
);
tVariantCreate
(
&
yylhsminor
.
yy
112
,
&
yymsp
[
-
1
].
minor
.
yy0
);
}
yymsp
[
-
1
].
minor
.
yy
430
=
yylhsminor
.
yy430
;
yymsp
[
-
1
].
minor
.
yy
112
=
yylhsminor
.
yy112
;
break
;
case
21
2
:
/* sortorder ::= ASC */
{
yymsp
[
0
].
minor
.
yy
9
6
=
TSDB_ORDER_ASC
;
}
case
21
6
:
/* sortorder ::= ASC */
{
yymsp
[
0
].
minor
.
yy
34
6
=
TSDB_ORDER_ASC
;
}
break
;
case
21
3
:
/* sortorder ::= DESC */
{
yymsp
[
0
].
minor
.
yy
9
6
=
TSDB_ORDER_DESC
;}
case
21
7
:
/* sortorder ::= DESC */
{
yymsp
[
0
].
minor
.
yy
34
6
=
TSDB_ORDER_DESC
;}
break
;
case
21
4
:
/* sortorder ::= */
{
yymsp
[
1
].
minor
.
yy
9
6
=
TSDB_ORDER_ASC
;
}
case
21
8
:
/* sortorder ::= */
{
yymsp
[
1
].
minor
.
yy
34
6
=
TSDB_ORDER_ASC
;
}
break
;
case
21
5
:
/* groupby_opt ::= */
{
yymsp
[
1
].
minor
.
yy
421
=
0
;}
case
21
9
:
/* groupby_opt ::= */
{
yymsp
[
1
].
minor
.
yy
89
=
0
;}
break
;
case
2
16
:
/* groupby_opt ::= GROUP BY grouplist */
{
yymsp
[
-
2
].
minor
.
yy
421
=
yymsp
[
0
].
minor
.
yy421
;}
case
2
20
:
/* groupby_opt ::= GROUP BY grouplist */
{
yymsp
[
-
2
].
minor
.
yy
89
=
yymsp
[
0
].
minor
.
yy89
;}
break
;
case
2
17
:
/* grouplist ::= grouplist COMMA item */
case
2
21
:
/* grouplist ::= grouplist COMMA item */
{
yylhsminor
.
yy
421
=
tVariantListAppend
(
yymsp
[
-
2
].
minor
.
yy421
,
&
yymsp
[
0
].
minor
.
yy430
,
-
1
);
yylhsminor
.
yy
89
=
tVariantListAppend
(
yymsp
[
-
2
].
minor
.
yy89
,
&
yymsp
[
0
].
minor
.
yy112
,
-
1
);
}
yymsp
[
-
2
].
minor
.
yy
421
=
yylhsminor
.
yy421
;
yymsp
[
-
2
].
minor
.
yy
89
=
yylhsminor
.
yy89
;
break
;
case
2
18
:
/* grouplist ::= item */
case
2
22
:
/* grouplist ::= item */
{
yylhsminor
.
yy
421
=
tVariantListAppend
(
NULL
,
&
yymsp
[
0
].
minor
.
yy430
,
-
1
);
yylhsminor
.
yy
89
=
tVariantListAppend
(
NULL
,
&
yymsp
[
0
].
minor
.
yy112
,
-
1
);
}
yymsp
[
0
].
minor
.
yy
421
=
yylhsminor
.
yy421
;
yymsp
[
0
].
minor
.
yy
89
=
yylhsminor
.
yy89
;
break
;
case
2
19
:
/* having_opt ::= */
case
2
29
:
/* where_opt ::= */
yytestcase
(
yyruleno
==
229
);
case
27
1
:
/* expritem ::= */
yytestcase
(
yyruleno
==
271
);
{
yymsp
[
1
].
minor
.
yy
439
=
0
;}
case
2
23
:
/* having_opt ::= */
case
2
33
:
/* where_opt ::= */
yytestcase
(
yyruleno
==
233
);
case
27
5
:
/* expritem ::= */
yytestcase
(
yyruleno
==
275
);
{
yymsp
[
1
].
minor
.
yy
342
=
0
;}
break
;
case
22
0
:
/* having_opt ::= HAVING expr */
case
23
0
:
/* where_opt ::= WHERE expr */
yytestcase
(
yyruleno
==
230
);
{
yymsp
[
-
1
].
minor
.
yy
439
=
yymsp
[
0
].
minor
.
yy439
;}
case
22
4
:
/* having_opt ::= HAVING expr */
case
23
4
:
/* where_opt ::= WHERE expr */
yytestcase
(
yyruleno
==
234
);
{
yymsp
[
-
1
].
minor
.
yy
342
=
yymsp
[
0
].
minor
.
yy342
;}
break
;
case
22
1
:
/* limit_opt ::= */
case
22
5
:
/* slimit_opt ::= */
yytestcase
(
yyruleno
==
225
);
{
yymsp
[
1
].
minor
.
yy
166
.
limit
=
-
1
;
yymsp
[
1
].
minor
.
yy166
.
offset
=
0
;}
case
22
5
:
/* limit_opt ::= */
case
22
9
:
/* slimit_opt ::= */
yytestcase
(
yyruleno
==
229
);
{
yymsp
[
1
].
minor
.
yy
372
.
limit
=
-
1
;
yymsp
[
1
].
minor
.
yy372
.
offset
=
0
;}
break
;
case
22
2
:
/* limit_opt ::= LIMIT signed */
case
2
26
:
/* slimit_opt ::= SLIMIT signed */
yytestcase
(
yyruleno
==
226
);
{
yymsp
[
-
1
].
minor
.
yy
166
.
limit
=
yymsp
[
0
].
minor
.
yy325
;
yymsp
[
-
1
].
minor
.
yy166
.
offset
=
0
;}
case
22
6
:
/* limit_opt ::= LIMIT signed */
case
2
30
:
/* slimit_opt ::= SLIMIT signed */
yytestcase
(
yyruleno
==
230
);
{
yymsp
[
-
1
].
minor
.
yy
372
.
limit
=
yymsp
[
0
].
minor
.
yy145
;
yymsp
[
-
1
].
minor
.
yy372
.
offset
=
0
;}
break
;
case
22
3
:
/* limit_opt ::= LIMIT signed OFFSET signed */
{
yymsp
[
-
3
].
minor
.
yy
166
.
limit
=
yymsp
[
-
2
].
minor
.
yy325
;
yymsp
[
-
3
].
minor
.
yy166
.
offset
=
yymsp
[
0
].
minor
.
yy32
5
;}
case
22
7
:
/* limit_opt ::= LIMIT signed OFFSET signed */
{
yymsp
[
-
3
].
minor
.
yy
372
.
limit
=
yymsp
[
-
2
].
minor
.
yy145
;
yymsp
[
-
3
].
minor
.
yy372
.
offset
=
yymsp
[
0
].
minor
.
yy14
5
;}
break
;
case
22
4
:
/* limit_opt ::= LIMIT signed COMMA signed */
{
yymsp
[
-
3
].
minor
.
yy
166
.
limit
=
yymsp
[
0
].
minor
.
yy325
;
yymsp
[
-
3
].
minor
.
yy166
.
offset
=
yymsp
[
-
2
].
minor
.
yy32
5
;}
case
22
8
:
/* limit_opt ::= LIMIT signed COMMA signed */
{
yymsp
[
-
3
].
minor
.
yy
372
.
limit
=
yymsp
[
0
].
minor
.
yy145
;
yymsp
[
-
3
].
minor
.
yy372
.
offset
=
yymsp
[
-
2
].
minor
.
yy14
5
;}
break
;
case
2
27
:
/* slimit_opt ::= SLIMIT signed SOFFSET signed */
{
yymsp
[
-
3
].
minor
.
yy
166
.
limit
=
yymsp
[
-
2
].
minor
.
yy325
;
yymsp
[
-
3
].
minor
.
yy166
.
offset
=
yymsp
[
0
].
minor
.
yy32
5
;}
case
2
31
:
/* slimit_opt ::= SLIMIT signed SOFFSET signed */
{
yymsp
[
-
3
].
minor
.
yy
372
.
limit
=
yymsp
[
-
2
].
minor
.
yy145
;
yymsp
[
-
3
].
minor
.
yy372
.
offset
=
yymsp
[
0
].
minor
.
yy14
5
;}
break
;
case
2
28
:
/* slimit_opt ::= SLIMIT signed COMMA signed */
{
yymsp
[
-
3
].
minor
.
yy
166
.
limit
=
yymsp
[
0
].
minor
.
yy325
;
yymsp
[
-
3
].
minor
.
yy166
.
offset
=
yymsp
[
-
2
].
minor
.
yy32
5
;}
case
2
32
:
/* slimit_opt ::= SLIMIT signed COMMA signed */
{
yymsp
[
-
3
].
minor
.
yy
372
.
limit
=
yymsp
[
0
].
minor
.
yy145
;
yymsp
[
-
3
].
minor
.
yy372
.
offset
=
yymsp
[
-
2
].
minor
.
yy14
5
;}
break
;
case
23
1
:
/* expr ::= LP expr RP */
{
yylhsminor
.
yy
439
=
yymsp
[
-
1
].
minor
.
yy439
;
yylhsminor
.
yy439
->
exprToken
.
z
=
yymsp
[
-
2
].
minor
.
yy0
.
z
;
yylhsminor
.
yy439
->
exprToken
.
n
=
(
yymsp
[
0
].
minor
.
yy0
.
z
-
yymsp
[
-
2
].
minor
.
yy0
.
z
+
1
);}
yymsp
[
-
2
].
minor
.
yy
439
=
yylhsminor
.
yy439
;
case
23
5
:
/* expr ::= LP expr RP */
{
yylhsminor
.
yy
342
=
yymsp
[
-
1
].
minor
.
yy342
;
yylhsminor
.
yy342
->
exprToken
.
z
=
yymsp
[
-
2
].
minor
.
yy0
.
z
;
yylhsminor
.
yy342
->
exprToken
.
n
=
(
yymsp
[
0
].
minor
.
yy0
.
z
-
yymsp
[
-
2
].
minor
.
yy0
.
z
+
1
);}
yymsp
[
-
2
].
minor
.
yy
342
=
yylhsminor
.
yy342
;
break
;
case
23
2
:
/* expr ::= ID */
{
yylhsminor
.
yy
439
=
tSqlExprCreateIdValue
(
pInfo
,
&
yymsp
[
0
].
minor
.
yy0
,
TK_ID
);}
yymsp
[
0
].
minor
.
yy
439
=
yylhsminor
.
yy439
;
case
23
6
:
/* expr ::= ID */
{
yylhsminor
.
yy
342
=
tSqlExprCreateIdValue
(
pInfo
,
&
yymsp
[
0
].
minor
.
yy0
,
TK_ID
);}
yymsp
[
0
].
minor
.
yy
342
=
yylhsminor
.
yy342
;
break
;
case
23
3
:
/* expr ::= ID DOT ID */
{
yymsp
[
-
2
].
minor
.
yy0
.
n
+=
(
1
+
yymsp
[
0
].
minor
.
yy0
.
n
);
yylhsminor
.
yy
439
=
tSqlExprCreateIdValue
(
pInfo
,
&
yymsp
[
-
2
].
minor
.
yy0
,
TK_ID
);}
yymsp
[
-
2
].
minor
.
yy
439
=
yylhsminor
.
yy439
;
case
23
7
:
/* expr ::= ID DOT ID */
{
yymsp
[
-
2
].
minor
.
yy0
.
n
+=
(
1
+
yymsp
[
0
].
minor
.
yy0
.
n
);
yylhsminor
.
yy
342
=
tSqlExprCreateIdValue
(
pInfo
,
&
yymsp
[
-
2
].
minor
.
yy0
,
TK_ID
);}
yymsp
[
-
2
].
minor
.
yy
342
=
yylhsminor
.
yy342
;
break
;
case
23
4
:
/* expr ::= ID DOT STAR */
{
yymsp
[
-
2
].
minor
.
yy0
.
n
+=
(
1
+
yymsp
[
0
].
minor
.
yy0
.
n
);
yylhsminor
.
yy
439
=
tSqlExprCreateIdValue
(
pInfo
,
&
yymsp
[
-
2
].
minor
.
yy0
,
TK_ALL
);}
yymsp
[
-
2
].
minor
.
yy
439
=
yylhsminor
.
yy439
;
case
23
8
:
/* expr ::= ID DOT STAR */
{
yymsp
[
-
2
].
minor
.
yy0
.
n
+=
(
1
+
yymsp
[
0
].
minor
.
yy0
.
n
);
yylhsminor
.
yy
342
=
tSqlExprCreateIdValue
(
pInfo
,
&
yymsp
[
-
2
].
minor
.
yy0
,
TK_ALL
);}
yymsp
[
-
2
].
minor
.
yy
342
=
yylhsminor
.
yy342
;
break
;
case
23
5
:
/* expr ::= INTEGER */
{
yylhsminor
.
yy
439
=
tSqlExprCreateIdValue
(
pInfo
,
&
yymsp
[
0
].
minor
.
yy0
,
TK_INTEGER
);}
yymsp
[
0
].
minor
.
yy
439
=
yylhsminor
.
yy439
;
case
23
9
:
/* expr ::= INTEGER */
{
yylhsminor
.
yy
342
=
tSqlExprCreateIdValue
(
pInfo
,
&
yymsp
[
0
].
minor
.
yy0
,
TK_INTEGER
);}
yymsp
[
0
].
minor
.
yy
342
=
yylhsminor
.
yy342
;
break
;
case
2
36
:
/* expr ::= MINUS INTEGER */
case
2
37
:
/* expr ::= PLUS INTEGER */
yytestcase
(
yyruleno
==
237
);
{
yymsp
[
-
1
].
minor
.
yy0
.
n
+=
yymsp
[
0
].
minor
.
yy0
.
n
;
yymsp
[
-
1
].
minor
.
yy0
.
type
=
TK_INTEGER
;
yylhsminor
.
yy
439
=
tSqlExprCreateIdValue
(
pInfo
,
&
yymsp
[
-
1
].
minor
.
yy0
,
TK_INTEGER
);}
yymsp
[
-
1
].
minor
.
yy
439
=
yylhsminor
.
yy439
;
case
2
40
:
/* expr ::= MINUS INTEGER */
case
2
41
:
/* expr ::= PLUS INTEGER */
yytestcase
(
yyruleno
==
241
);
{
yymsp
[
-
1
].
minor
.
yy0
.
n
+=
yymsp
[
0
].
minor
.
yy0
.
n
;
yymsp
[
-
1
].
minor
.
yy0
.
type
=
TK_INTEGER
;
yylhsminor
.
yy
342
=
tSqlExprCreateIdValue
(
pInfo
,
&
yymsp
[
-
1
].
minor
.
yy0
,
TK_INTEGER
);}
yymsp
[
-
1
].
minor
.
yy
342
=
yylhsminor
.
yy342
;
break
;
case
2
38
:
/* expr ::= FLOAT */
{
yylhsminor
.
yy
439
=
tSqlExprCreateIdValue
(
pInfo
,
&
yymsp
[
0
].
minor
.
yy0
,
TK_FLOAT
);}
yymsp
[
0
].
minor
.
yy
439
=
yylhsminor
.
yy439
;
case
2
42
:
/* expr ::= FLOAT */
{
yylhsminor
.
yy
342
=
tSqlExprCreateIdValue
(
pInfo
,
&
yymsp
[
0
].
minor
.
yy0
,
TK_FLOAT
);}
yymsp
[
0
].
minor
.
yy
342
=
yylhsminor
.
yy342
;
break
;
case
2
39
:
/* expr ::= MINUS FLOAT */
case
24
0
:
/* expr ::= PLUS FLOAT */
yytestcase
(
yyruleno
==
240
);
{
yymsp
[
-
1
].
minor
.
yy0
.
n
+=
yymsp
[
0
].
minor
.
yy0
.
n
;
yymsp
[
-
1
].
minor
.
yy0
.
type
=
TK_FLOAT
;
yylhsminor
.
yy
439
=
tSqlExprCreateIdValue
(
pInfo
,
&
yymsp
[
-
1
].
minor
.
yy0
,
TK_FLOAT
);}
yymsp
[
-
1
].
minor
.
yy
439
=
yylhsminor
.
yy439
;
case
2
43
:
/* expr ::= MINUS FLOAT */
case
24
4
:
/* expr ::= PLUS FLOAT */
yytestcase
(
yyruleno
==
244
);
{
yymsp
[
-
1
].
minor
.
yy0
.
n
+=
yymsp
[
0
].
minor
.
yy0
.
n
;
yymsp
[
-
1
].
minor
.
yy0
.
type
=
TK_FLOAT
;
yylhsminor
.
yy
342
=
tSqlExprCreateIdValue
(
pInfo
,
&
yymsp
[
-
1
].
minor
.
yy0
,
TK_FLOAT
);}
yymsp
[
-
1
].
minor
.
yy
342
=
yylhsminor
.
yy342
;
break
;
case
24
1
:
/* expr ::= STRING */
{
yylhsminor
.
yy
439
=
tSqlExprCreateIdValue
(
pInfo
,
&
yymsp
[
0
].
minor
.
yy0
,
TK_STRING
);}
yymsp
[
0
].
minor
.
yy
439
=
yylhsminor
.
yy439
;
case
24
5
:
/* expr ::= STRING */
{
yylhsminor
.
yy
342
=
tSqlExprCreateIdValue
(
pInfo
,
&
yymsp
[
0
].
minor
.
yy0
,
TK_STRING
);}
yymsp
[
0
].
minor
.
yy
342
=
yylhsminor
.
yy342
;
break
;
case
24
2
:
/* expr ::= NOW */
{
yylhsminor
.
yy
439
=
tSqlExprCreateIdValue
(
pInfo
,
&
yymsp
[
0
].
minor
.
yy0
,
TK_NOW
);
}
yymsp
[
0
].
minor
.
yy
439
=
yylhsminor
.
yy439
;
case
24
6
:
/* expr ::= NOW */
{
yylhsminor
.
yy
342
=
tSqlExprCreateIdValue
(
pInfo
,
&
yymsp
[
0
].
minor
.
yy0
,
TK_NOW
);
}
yymsp
[
0
].
minor
.
yy
342
=
yylhsminor
.
yy342
;
break
;
case
24
3
:
/* expr ::= VARIABLE */
{
yylhsminor
.
yy
439
=
tSqlExprCreateIdValue
(
pInfo
,
&
yymsp
[
0
].
minor
.
yy0
,
TK_VARIABLE
);}
yymsp
[
0
].
minor
.
yy
439
=
yylhsminor
.
yy439
;
case
24
7
:
/* expr ::= VARIABLE */
{
yylhsminor
.
yy
342
=
tSqlExprCreateIdValue
(
pInfo
,
&
yymsp
[
0
].
minor
.
yy0
,
TK_VARIABLE
);}
yymsp
[
0
].
minor
.
yy
342
=
yylhsminor
.
yy342
;
break
;
case
24
4
:
/* expr ::= PLUS VARIABLE */
case
24
5
:
/* expr ::= MINUS VARIABLE */
yytestcase
(
yyruleno
==
245
);
{
yymsp
[
-
1
].
minor
.
yy0
.
n
+=
yymsp
[
0
].
minor
.
yy0
.
n
;
yymsp
[
-
1
].
minor
.
yy0
.
type
=
TK_VARIABLE
;
yylhsminor
.
yy
439
=
tSqlExprCreateIdValue
(
pInfo
,
&
yymsp
[
-
1
].
minor
.
yy0
,
TK_VARIABLE
);}
yymsp
[
-
1
].
minor
.
yy
439
=
yylhsminor
.
yy439
;
case
24
8
:
/* expr ::= PLUS VARIABLE */
case
24
9
:
/* expr ::= MINUS VARIABLE */
yytestcase
(
yyruleno
==
249
);
{
yymsp
[
-
1
].
minor
.
yy0
.
n
+=
yymsp
[
0
].
minor
.
yy0
.
n
;
yymsp
[
-
1
].
minor
.
yy0
.
type
=
TK_VARIABLE
;
yylhsminor
.
yy
342
=
tSqlExprCreateIdValue
(
pInfo
,
&
yymsp
[
-
1
].
minor
.
yy0
,
TK_VARIABLE
);}
yymsp
[
-
1
].
minor
.
yy
342
=
yylhsminor
.
yy342
;
break
;
case
2
46
:
/* expr ::= BOOL */
{
yylhsminor
.
yy
439
=
tSqlExprCreateIdValue
(
pInfo
,
&
yymsp
[
0
].
minor
.
yy0
,
TK_BOOL
);}
yymsp
[
0
].
minor
.
yy
439
=
yylhsminor
.
yy439
;
case
2
50
:
/* expr ::= BOOL */
{
yylhsminor
.
yy
342
=
tSqlExprCreateIdValue
(
pInfo
,
&
yymsp
[
0
].
minor
.
yy0
,
TK_BOOL
);}
yymsp
[
0
].
minor
.
yy
342
=
yylhsminor
.
yy342
;
break
;
case
2
47
:
/* expr ::= NULL */
{
yylhsminor
.
yy
439
=
tSqlExprCreateIdValue
(
pInfo
,
&
yymsp
[
0
].
minor
.
yy0
,
TK_NULL
);}
yymsp
[
0
].
minor
.
yy
439
=
yylhsminor
.
yy439
;
case
2
51
:
/* expr ::= NULL */
{
yylhsminor
.
yy
342
=
tSqlExprCreateIdValue
(
pInfo
,
&
yymsp
[
0
].
minor
.
yy0
,
TK_NULL
);}
yymsp
[
0
].
minor
.
yy
342
=
yylhsminor
.
yy342
;
break
;
case
2
48
:
/* expr ::= ID LP exprlist RP */
{
tStrTokenAppend
(
pInfo
->
funcs
,
&
yymsp
[
-
3
].
minor
.
yy0
);
yylhsminor
.
yy
439
=
tSqlExprCreateFunction
(
yymsp
[
-
1
].
minor
.
yy421
,
&
yymsp
[
-
3
].
minor
.
yy0
,
&
yymsp
[
0
].
minor
.
yy0
,
yymsp
[
-
3
].
minor
.
yy0
.
type
);
}
yymsp
[
-
3
].
minor
.
yy
439
=
yylhsminor
.
yy439
;
case
2
52
:
/* expr ::= ID LP exprlist RP */
{
tStrTokenAppend
(
pInfo
->
funcs
,
&
yymsp
[
-
3
].
minor
.
yy0
);
yylhsminor
.
yy
342
=
tSqlExprCreateFunction
(
yymsp
[
-
1
].
minor
.
yy89
,
&
yymsp
[
-
3
].
minor
.
yy0
,
&
yymsp
[
0
].
minor
.
yy0
,
yymsp
[
-
3
].
minor
.
yy0
.
type
);
}
yymsp
[
-
3
].
minor
.
yy
342
=
yylhsminor
.
yy342
;
break
;
case
2
49
:
/* expr ::= ID LP STAR RP */
{
tStrTokenAppend
(
pInfo
->
funcs
,
&
yymsp
[
-
3
].
minor
.
yy0
);
yylhsminor
.
yy
439
=
tSqlExprCreateFunction
(
NULL
,
&
yymsp
[
-
3
].
minor
.
yy0
,
&
yymsp
[
0
].
minor
.
yy0
,
yymsp
[
-
3
].
minor
.
yy0
.
type
);
}
yymsp
[
-
3
].
minor
.
yy
439
=
yylhsminor
.
yy439
;
case
2
53
:
/* expr ::= ID LP STAR RP */
{
tStrTokenAppend
(
pInfo
->
funcs
,
&
yymsp
[
-
3
].
minor
.
yy0
);
yylhsminor
.
yy
342
=
tSqlExprCreateFunction
(
NULL
,
&
yymsp
[
-
3
].
minor
.
yy0
,
&
yymsp
[
0
].
minor
.
yy0
,
yymsp
[
-
3
].
minor
.
yy0
.
type
);
}
yymsp
[
-
3
].
minor
.
yy
342
=
yylhsminor
.
yy342
;
break
;
case
25
0
:
/* expr ::= expr IS NULL */
{
yylhsminor
.
yy
439
=
tSqlExprCreate
(
yymsp
[
-
2
].
minor
.
yy439
,
NULL
,
TK_ISNULL
);}
yymsp
[
-
2
].
minor
.
yy
439
=
yylhsminor
.
yy439
;
case
25
4
:
/* expr ::= expr IS NULL */
{
yylhsminor
.
yy
342
=
tSqlExprCreate
(
yymsp
[
-
2
].
minor
.
yy342
,
NULL
,
TK_ISNULL
);}
yymsp
[
-
2
].
minor
.
yy
342
=
yylhsminor
.
yy342
;
break
;
case
25
1
:
/* expr ::= expr IS NOT NULL */
{
yylhsminor
.
yy
439
=
tSqlExprCreate
(
yymsp
[
-
3
].
minor
.
yy439
,
NULL
,
TK_NOTNULL
);}
yymsp
[
-
3
].
minor
.
yy
439
=
yylhsminor
.
yy439
;
case
25
5
:
/* expr ::= expr IS NOT NULL */
{
yylhsminor
.
yy
342
=
tSqlExprCreate
(
yymsp
[
-
3
].
minor
.
yy342
,
NULL
,
TK_NOTNULL
);}
yymsp
[
-
3
].
minor
.
yy
342
=
yylhsminor
.
yy342
;
break
;
case
25
2
:
/* expr ::= expr LT expr */
{
yylhsminor
.
yy
439
=
tSqlExprCreate
(
yymsp
[
-
2
].
minor
.
yy439
,
yymsp
[
0
].
minor
.
yy439
,
TK_LT
);}
yymsp
[
-
2
].
minor
.
yy
439
=
yylhsminor
.
yy439
;
case
25
6
:
/* expr ::= expr LT expr */
{
yylhsminor
.
yy
342
=
tSqlExprCreate
(
yymsp
[
-
2
].
minor
.
yy342
,
yymsp
[
0
].
minor
.
yy342
,
TK_LT
);}
yymsp
[
-
2
].
minor
.
yy
342
=
yylhsminor
.
yy342
;
break
;
case
25
3
:
/* expr ::= expr GT expr */
{
yylhsminor
.
yy
439
=
tSqlExprCreate
(
yymsp
[
-
2
].
minor
.
yy439
,
yymsp
[
0
].
minor
.
yy439
,
TK_GT
);}
yymsp
[
-
2
].
minor
.
yy
439
=
yylhsminor
.
yy439
;
case
25
7
:
/* expr ::= expr GT expr */
{
yylhsminor
.
yy
342
=
tSqlExprCreate
(
yymsp
[
-
2
].
minor
.
yy342
,
yymsp
[
0
].
minor
.
yy342
,
TK_GT
);}
yymsp
[
-
2
].
minor
.
yy
342
=
yylhsminor
.
yy342
;
break
;
case
25
4
:
/* expr ::= expr LE expr */
{
yylhsminor
.
yy
439
=
tSqlExprCreate
(
yymsp
[
-
2
].
minor
.
yy439
,
yymsp
[
0
].
minor
.
yy439
,
TK_LE
);}
yymsp
[
-
2
].
minor
.
yy
439
=
yylhsminor
.
yy439
;
case
25
8
:
/* expr ::= expr LE expr */
{
yylhsminor
.
yy
342
=
tSqlExprCreate
(
yymsp
[
-
2
].
minor
.
yy342
,
yymsp
[
0
].
minor
.
yy342
,
TK_LE
);}
yymsp
[
-
2
].
minor
.
yy
342
=
yylhsminor
.
yy342
;
break
;
case
25
5
:
/* expr ::= expr GE expr */
{
yylhsminor
.
yy
439
=
tSqlExprCreate
(
yymsp
[
-
2
].
minor
.
yy439
,
yymsp
[
0
].
minor
.
yy439
,
TK_GE
);}
yymsp
[
-
2
].
minor
.
yy
439
=
yylhsminor
.
yy439
;
case
25
9
:
/* expr ::= expr GE expr */
{
yylhsminor
.
yy
342
=
tSqlExprCreate
(
yymsp
[
-
2
].
minor
.
yy342
,
yymsp
[
0
].
minor
.
yy342
,
TK_GE
);}
yymsp
[
-
2
].
minor
.
yy
342
=
yylhsminor
.
yy342
;
break
;
case
2
56
:
/* expr ::= expr NE expr */
{
yylhsminor
.
yy
439
=
tSqlExprCreate
(
yymsp
[
-
2
].
minor
.
yy439
,
yymsp
[
0
].
minor
.
yy439
,
TK_NE
);}
yymsp
[
-
2
].
minor
.
yy
439
=
yylhsminor
.
yy439
;
case
2
60
:
/* expr ::= expr NE expr */
{
yylhsminor
.
yy
342
=
tSqlExprCreate
(
yymsp
[
-
2
].
minor
.
yy342
,
yymsp
[
0
].
minor
.
yy342
,
TK_NE
);}
yymsp
[
-
2
].
minor
.
yy
342
=
yylhsminor
.
yy342
;
break
;
case
2
57
:
/* expr ::= expr EQ expr */
{
yylhsminor
.
yy
439
=
tSqlExprCreate
(
yymsp
[
-
2
].
minor
.
yy439
,
yymsp
[
0
].
minor
.
yy439
,
TK_EQ
);}
yymsp
[
-
2
].
minor
.
yy
439
=
yylhsminor
.
yy439
;
case
2
61
:
/* expr ::= expr EQ expr */
{
yylhsminor
.
yy
342
=
tSqlExprCreate
(
yymsp
[
-
2
].
minor
.
yy342
,
yymsp
[
0
].
minor
.
yy342
,
TK_EQ
);}
yymsp
[
-
2
].
minor
.
yy
342
=
yylhsminor
.
yy342
;
break
;
case
2
58
:
/* expr ::= expr BETWEEN expr AND expr */
{
tSqlExpr
*
X2
=
tSqlExprClone
(
yymsp
[
-
4
].
minor
.
yy
439
);
yylhsminor
.
yy439
=
tSqlExprCreate
(
tSqlExprCreate
(
yymsp
[
-
4
].
minor
.
yy439
,
yymsp
[
-
2
].
minor
.
yy439
,
TK_GE
),
tSqlExprCreate
(
X2
,
yymsp
[
0
].
minor
.
yy439
,
TK_LE
),
TK_AND
);}
yymsp
[
-
4
].
minor
.
yy
439
=
yylhsminor
.
yy439
;
case
2
62
:
/* expr ::= expr BETWEEN expr AND expr */
{
tSqlExpr
*
X2
=
tSqlExprClone
(
yymsp
[
-
4
].
minor
.
yy
342
);
yylhsminor
.
yy342
=
tSqlExprCreate
(
tSqlExprCreate
(
yymsp
[
-
4
].
minor
.
yy342
,
yymsp
[
-
2
].
minor
.
yy342
,
TK_GE
),
tSqlExprCreate
(
X2
,
yymsp
[
0
].
minor
.
yy342
,
TK_LE
),
TK_AND
);}
yymsp
[
-
4
].
minor
.
yy
342
=
yylhsminor
.
yy342
;
break
;
case
2
59
:
/* expr ::= expr AND expr */
{
yylhsminor
.
yy
439
=
tSqlExprCreate
(
yymsp
[
-
2
].
minor
.
yy439
,
yymsp
[
0
].
minor
.
yy439
,
TK_AND
);}
yymsp
[
-
2
].
minor
.
yy
439
=
yylhsminor
.
yy439
;
case
2
63
:
/* expr ::= expr AND expr */
{
yylhsminor
.
yy
342
=
tSqlExprCreate
(
yymsp
[
-
2
].
minor
.
yy342
,
yymsp
[
0
].
minor
.
yy342
,
TK_AND
);}
yymsp
[
-
2
].
minor
.
yy
342
=
yylhsminor
.
yy342
;
break
;
case
26
0
:
/* expr ::= expr OR expr */
{
yylhsminor
.
yy
439
=
tSqlExprCreate
(
yymsp
[
-
2
].
minor
.
yy439
,
yymsp
[
0
].
minor
.
yy439
,
TK_OR
);
}
yymsp
[
-
2
].
minor
.
yy
439
=
yylhsminor
.
yy439
;
case
26
4
:
/* expr ::= expr OR expr */
{
yylhsminor
.
yy
342
=
tSqlExprCreate
(
yymsp
[
-
2
].
minor
.
yy342
,
yymsp
[
0
].
minor
.
yy342
,
TK_OR
);
}
yymsp
[
-
2
].
minor
.
yy
342
=
yylhsminor
.
yy342
;
break
;
case
26
1
:
/* expr ::= expr PLUS expr */
{
yylhsminor
.
yy
439
=
tSqlExprCreate
(
yymsp
[
-
2
].
minor
.
yy439
,
yymsp
[
0
].
minor
.
yy439
,
TK_PLUS
);
}
yymsp
[
-
2
].
minor
.
yy
439
=
yylhsminor
.
yy439
;
case
26
5
:
/* expr ::= expr PLUS expr */
{
yylhsminor
.
yy
342
=
tSqlExprCreate
(
yymsp
[
-
2
].
minor
.
yy342
,
yymsp
[
0
].
minor
.
yy342
,
TK_PLUS
);
}
yymsp
[
-
2
].
minor
.
yy
342
=
yylhsminor
.
yy342
;
break
;
case
26
2
:
/* expr ::= expr MINUS expr */
{
yylhsminor
.
yy
439
=
tSqlExprCreate
(
yymsp
[
-
2
].
minor
.
yy439
,
yymsp
[
0
].
minor
.
yy439
,
TK_MINUS
);
}
yymsp
[
-
2
].
minor
.
yy
439
=
yylhsminor
.
yy439
;
case
26
6
:
/* expr ::= expr MINUS expr */
{
yylhsminor
.
yy
342
=
tSqlExprCreate
(
yymsp
[
-
2
].
minor
.
yy342
,
yymsp
[
0
].
minor
.
yy342
,
TK_MINUS
);
}
yymsp
[
-
2
].
minor
.
yy
342
=
yylhsminor
.
yy342
;
break
;
case
26
3
:
/* expr ::= expr STAR expr */
{
yylhsminor
.
yy
439
=
tSqlExprCreate
(
yymsp
[
-
2
].
minor
.
yy439
,
yymsp
[
0
].
minor
.
yy439
,
TK_STAR
);
}
yymsp
[
-
2
].
minor
.
yy
439
=
yylhsminor
.
yy439
;
case
26
7
:
/* expr ::= expr STAR expr */
{
yylhsminor
.
yy
342
=
tSqlExprCreate
(
yymsp
[
-
2
].
minor
.
yy342
,
yymsp
[
0
].
minor
.
yy342
,
TK_STAR
);
}
yymsp
[
-
2
].
minor
.
yy
342
=
yylhsminor
.
yy342
;
break
;
case
26
4
:
/* expr ::= expr SLASH expr */
{
yylhsminor
.
yy
439
=
tSqlExprCreate
(
yymsp
[
-
2
].
minor
.
yy439
,
yymsp
[
0
].
minor
.
yy439
,
TK_DIVIDE
);}
yymsp
[
-
2
].
minor
.
yy
439
=
yylhsminor
.
yy439
;
case
26
8
:
/* expr ::= expr SLASH expr */
{
yylhsminor
.
yy
342
=
tSqlExprCreate
(
yymsp
[
-
2
].
minor
.
yy342
,
yymsp
[
0
].
minor
.
yy342
,
TK_DIVIDE
);}
yymsp
[
-
2
].
minor
.
yy
342
=
yylhsminor
.
yy342
;
break
;
case
26
5
:
/* expr ::= expr REM expr */
{
yylhsminor
.
yy
439
=
tSqlExprCreate
(
yymsp
[
-
2
].
minor
.
yy439
,
yymsp
[
0
].
minor
.
yy439
,
TK_REM
);
}
yymsp
[
-
2
].
minor
.
yy
439
=
yylhsminor
.
yy439
;
case
26
9
:
/* expr ::= expr REM expr */
{
yylhsminor
.
yy
342
=
tSqlExprCreate
(
yymsp
[
-
2
].
minor
.
yy342
,
yymsp
[
0
].
minor
.
yy342
,
TK_REM
);
}
yymsp
[
-
2
].
minor
.
yy
342
=
yylhsminor
.
yy342
;
break
;
case
2
66
:
/* expr ::= expr LIKE expr */
{
yylhsminor
.
yy
439
=
tSqlExprCreate
(
yymsp
[
-
2
].
minor
.
yy439
,
yymsp
[
0
].
minor
.
yy439
,
TK_LIKE
);
}
yymsp
[
-
2
].
minor
.
yy
439
=
yylhsminor
.
yy439
;
case
2
70
:
/* expr ::= expr LIKE expr */
{
yylhsminor
.
yy
342
=
tSqlExprCreate
(
yymsp
[
-
2
].
minor
.
yy342
,
yymsp
[
0
].
minor
.
yy342
,
TK_LIKE
);
}
yymsp
[
-
2
].
minor
.
yy
342
=
yylhsminor
.
yy342
;
break
;
case
2
67
:
/* expr ::= expr IN LP exprlist RP */
{
yylhsminor
.
yy
439
=
tSqlExprCreate
(
yymsp
[
-
4
].
minor
.
yy439
,
(
tSqlExpr
*
)
yymsp
[
-
1
].
minor
.
yy421
,
TK_IN
);
}
yymsp
[
-
4
].
minor
.
yy
439
=
yylhsminor
.
yy439
;
case
2
71
:
/* expr ::= expr IN LP exprlist RP */
{
yylhsminor
.
yy
342
=
tSqlExprCreate
(
yymsp
[
-
4
].
minor
.
yy342
,
(
tSqlExpr
*
)
yymsp
[
-
1
].
minor
.
yy89
,
TK_IN
);
}
yymsp
[
-
4
].
minor
.
yy
342
=
yylhsminor
.
yy342
;
break
;
case
2
68
:
/* exprlist ::= exprlist COMMA expritem */
{
yylhsminor
.
yy
421
=
tSqlExprListAppend
(
yymsp
[
-
2
].
minor
.
yy421
,
yymsp
[
0
].
minor
.
yy439
,
0
,
0
);}
yymsp
[
-
2
].
minor
.
yy
421
=
yylhsminor
.
yy421
;
case
2
72
:
/* exprlist ::= exprlist COMMA expritem */
{
yylhsminor
.
yy
89
=
tSqlExprListAppend
(
yymsp
[
-
2
].
minor
.
yy89
,
yymsp
[
0
].
minor
.
yy342
,
0
,
0
);}
yymsp
[
-
2
].
minor
.
yy
89
=
yylhsminor
.
yy89
;
break
;
case
2
69
:
/* exprlist ::= expritem */
{
yylhsminor
.
yy
421
=
tSqlExprListAppend
(
0
,
yymsp
[
0
].
minor
.
yy439
,
0
,
0
);}
yymsp
[
0
].
minor
.
yy
421
=
yylhsminor
.
yy421
;
case
2
73
:
/* exprlist ::= expritem */
{
yylhsminor
.
yy
89
=
tSqlExprListAppend
(
0
,
yymsp
[
0
].
minor
.
yy342
,
0
,
0
);}
yymsp
[
0
].
minor
.
yy
89
=
yylhsminor
.
yy89
;
break
;
case
27
0
:
/* expritem ::= expr */
{
yylhsminor
.
yy
439
=
yymsp
[
0
].
minor
.
yy439
;}
yymsp
[
0
].
minor
.
yy
439
=
yylhsminor
.
yy439
;
case
27
4
:
/* expritem ::= expr */
{
yylhsminor
.
yy
342
=
yymsp
[
0
].
minor
.
yy342
;}
yymsp
[
0
].
minor
.
yy
342
=
yylhsminor
.
yy342
;
break
;
case
27
2
:
/* cmd ::= RESET QUERY CACHE */
case
27
6
:
/* cmd ::= RESET QUERY CACHE */
{
setDCLSqlElems
(
pInfo
,
TSDB_SQL_RESET_CACHE
,
0
);}
break
;
case
27
3
:
/* cmd ::= SYNCDB ids REPLICA */
case
27
7
:
/* cmd ::= SYNCDB ids REPLICA */
{
setDCLSqlElems
(
pInfo
,
TSDB_SQL_SYNC_DB_REPLICA
,
1
,
&
yymsp
[
-
1
].
minor
.
yy0
);}
break
;
case
27
4
:
/* cmd ::= ALTER TABLE ids cpxName ADD COLUMN columnlist */
case
27
8
:
/* 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
421
,
NULL
,
TSDB_ALTER_TABLE_ADD_COLUMN
,
-
1
);
SAlterTableInfo
*
pAlterTable
=
tSetAlterTableInfo
(
&
yymsp
[
-
4
].
minor
.
yy0
,
yymsp
[
0
].
minor
.
yy
89
,
NULL
,
TSDB_ALTER_TABLE_ADD_COLUMN
,
-
1
);
setSqlInfo
(
pInfo
,
pAlterTable
,
NULL
,
TSDB_SQL_ALTER_TABLE
);
}
break
;
case
27
5
:
/* cmd ::= ALTER TABLE ids cpxName DROP COLUMN ids */
case
27
9
:
/* cmd ::= ALTER TABLE ids cpxName DROP COLUMN ids */
{
yymsp
[
-
4
].
minor
.
yy0
.
n
+=
yymsp
[
-
3
].
minor
.
yy0
.
n
;
...
...
@@ -3632,21 +3222,21 @@ static YYACTIONTYPE yy_reduce(
setSqlInfo
(
pInfo
,
pAlterTable
,
NULL
,
TSDB_SQL_ALTER_TABLE
);
}
break
;
case
2
76
:
/* cmd ::= ALTER TABLE ids cpxName MODIFY COLUMN columnlist */
case
2
80
:
/* 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
421
,
NULL
,
TSDB_ALTER_TABLE_CHANGE_COLUMN
,
-
1
);
SAlterTableInfo
*
pAlterTable
=
tSetAlterTableInfo
(
&
yymsp
[
-
4
].
minor
.
yy0
,
yymsp
[
0
].
minor
.
yy
89
,
NULL
,
TSDB_ALTER_TABLE_CHANGE_COLUMN
,
-
1
);
setSqlInfo
(
pInfo
,
pAlterTable
,
NULL
,
TSDB_SQL_ALTER_TABLE
);
}
break
;
case
2
77
:
/* cmd ::= ALTER TABLE ids cpxName ADD TAG columnlist */
case
2
81
:
/* 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
421
,
NULL
,
TSDB_ALTER_TABLE_ADD_TAG_COLUMN
,
-
1
);
SAlterTableInfo
*
pAlterTable
=
tSetAlterTableInfo
(
&
yymsp
[
-
4
].
minor
.
yy0
,
yymsp
[
0
].
minor
.
yy
89
,
NULL
,
TSDB_ALTER_TABLE_ADD_TAG_COLUMN
,
-
1
);
setSqlInfo
(
pInfo
,
pAlterTable
,
NULL
,
TSDB_SQL_ALTER_TABLE
);
}
break
;
case
2
78
:
/* cmd ::= ALTER TABLE ids cpxName DROP TAG ids */
case
2
82
:
/* cmd ::= ALTER TABLE ids cpxName DROP TAG ids */
{
yymsp
[
-
4
].
minor
.
yy0
.
n
+=
yymsp
[
-
3
].
minor
.
yy0
.
n
;
...
...
@@ -3657,7 +3247,7 @@ static YYACTIONTYPE yy_reduce(
setSqlInfo
(
pInfo
,
pAlterTable
,
NULL
,
TSDB_SQL_ALTER_TABLE
);
}
break
;
case
2
79
:
/* cmd ::= ALTER TABLE ids cpxName CHANGE TAG ids ids */
case
2
83
:
/* cmd ::= ALTER TABLE ids cpxName CHANGE TAG ids ids */
{
yymsp
[
-
5
].
minor
.
yy0
.
n
+=
yymsp
[
-
4
].
minor
.
yy0
.
n
;
...
...
@@ -3671,33 +3261,33 @@ static YYACTIONTYPE yy_reduce(
setSqlInfo
(
pInfo
,
pAlterTable
,
NULL
,
TSDB_SQL_ALTER_TABLE
);
}
break
;
case
28
0
:
/* cmd ::= ALTER TABLE ids cpxName SET TAG ids EQ tagitem */
case
28
4
:
/* 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
);
A
=
tVariantListAppend
(
A
,
&
yymsp
[
0
].
minor
.
yy
430
,
-
1
);
A
=
tVariantListAppend
(
A
,
&
yymsp
[
0
].
minor
.
yy
112
,
-
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
28
1
:
/* cmd ::= ALTER TABLE ids cpxName MODIFY TAG columnlist */
case
28
5
:
/* 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
421
,
NULL
,
TSDB_ALTER_TABLE_MODIFY_TAG_COLUMN
,
-
1
);
SAlterTableInfo
*
pAlterTable
=
tSetAlterTableInfo
(
&
yymsp
[
-
4
].
minor
.
yy0
,
yymsp
[
0
].
minor
.
yy
89
,
NULL
,
TSDB_ALTER_TABLE_MODIFY_TAG_COLUMN
,
-
1
);
setSqlInfo
(
pInfo
,
pAlterTable
,
NULL
,
TSDB_SQL_ALTER_TABLE
);
}
break
;
case
28
2
:
/* cmd ::= ALTER STABLE ids cpxName ADD COLUMN columnlist */
case
28
6
:
/* 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
421
,
NULL
,
TSDB_ALTER_TABLE_ADD_COLUMN
,
TSDB_SUPER_TABLE
);
SAlterTableInfo
*
pAlterTable
=
tSetAlterTableInfo
(
&
yymsp
[
-
4
].
minor
.
yy0
,
yymsp
[
0
].
minor
.
yy
89
,
NULL
,
TSDB_ALTER_TABLE_ADD_COLUMN
,
TSDB_SUPER_TABLE
);
setSqlInfo
(
pInfo
,
pAlterTable
,
NULL
,
TSDB_SQL_ALTER_TABLE
);
}
break
;
case
28
3
:
/* cmd ::= ALTER STABLE ids cpxName DROP COLUMN ids */
case
28
7
:
/* cmd ::= ALTER STABLE ids cpxName DROP COLUMN ids */
{
yymsp
[
-
4
].
minor
.
yy0
.
n
+=
yymsp
[
-
3
].
minor
.
yy0
.
n
;
...
...
@@ -3708,21 +3298,21 @@ static YYACTIONTYPE yy_reduce(
setSqlInfo
(
pInfo
,
pAlterTable
,
NULL
,
TSDB_SQL_ALTER_TABLE
);
}
break
;
case
28
4
:
/* cmd ::= ALTER STABLE ids cpxName MODIFY COLUMN columnlist */
case
28
8
:
/* 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
421
,
NULL
,
TSDB_ALTER_TABLE_CHANGE_COLUMN
,
TSDB_SUPER_TABLE
);
SAlterTableInfo
*
pAlterTable
=
tSetAlterTableInfo
(
&
yymsp
[
-
4
].
minor
.
yy0
,
yymsp
[
0
].
minor
.
yy
89
,
NULL
,
TSDB_ALTER_TABLE_CHANGE_COLUMN
,
TSDB_SUPER_TABLE
);
setSqlInfo
(
pInfo
,
pAlterTable
,
NULL
,
TSDB_SQL_ALTER_TABLE
);
}
break
;
case
28
5
:
/* cmd ::= ALTER STABLE ids cpxName ADD TAG columnlist */
case
28
9
:
/* 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
421
,
NULL
,
TSDB_ALTER_TABLE_ADD_TAG_COLUMN
,
TSDB_SUPER_TABLE
);
SAlterTableInfo
*
pAlterTable
=
tSetAlterTableInfo
(
&
yymsp
[
-
4
].
minor
.
yy0
,
yymsp
[
0
].
minor
.
yy
89
,
NULL
,
TSDB_ALTER_TABLE_ADD_TAG_COLUMN
,
TSDB_SUPER_TABLE
);
setSqlInfo
(
pInfo
,
pAlterTable
,
NULL
,
TSDB_SQL_ALTER_TABLE
);
}
break
;
case
2
86
:
/* cmd ::= ALTER STABLE ids cpxName DROP TAG ids */
case
2
90
:
/* cmd ::= ALTER STABLE ids cpxName DROP TAG ids */
{
yymsp
[
-
4
].
minor
.
yy0
.
n
+=
yymsp
[
-
3
].
minor
.
yy0
.
n
;
...
...
@@ -3733,7 +3323,7 @@ static YYACTIONTYPE yy_reduce(
setSqlInfo
(
pInfo
,
pAlterTable
,
NULL
,
TSDB_SQL_ALTER_TABLE
);
}
break
;
case
2
87
:
/* cmd ::= ALTER STABLE ids cpxName CHANGE TAG ids ids */
case
2
91
:
/* cmd ::= ALTER STABLE ids cpxName CHANGE TAG ids ids */
{
yymsp
[
-
5
].
minor
.
yy0
.
n
+=
yymsp
[
-
4
].
minor
.
yy0
.
n
;
...
...
@@ -3747,41 +3337,41 @@ static YYACTIONTYPE yy_reduce(
setSqlInfo
(
pInfo
,
pAlterTable
,
NULL
,
TSDB_SQL_ALTER_TABLE
);
}
break
;
case
2
88
:
/* cmd ::= ALTER STABLE ids cpxName SET TAG ids EQ tagitem */
case
2
92
:
/* 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
);
A
=
tVariantListAppend
(
A
,
&
yymsp
[
0
].
minor
.
yy
430
,
-
1
);
A
=
tVariantListAppend
(
A
,
&
yymsp
[
0
].
minor
.
yy
112
,
-
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
2
89
:
/* cmd ::= ALTER STABLE ids cpxName MODIFY TAG columnlist */
case
2
93
:
/* 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
421
,
NULL
,
TSDB_ALTER_TABLE_MODIFY_TAG_COLUMN
,
TSDB_SUPER_TABLE
);
SAlterTableInfo
*
pAlterTable
=
tSetAlterTableInfo
(
&
yymsp
[
-
4
].
minor
.
yy0
,
yymsp
[
0
].
minor
.
yy
89
,
NULL
,
TSDB_ALTER_TABLE_MODIFY_TAG_COLUMN
,
TSDB_SUPER_TABLE
);
setSqlInfo
(
pInfo
,
pAlterTable
,
NULL
,
TSDB_SQL_ALTER_TABLE
);
}
break
;
case
29
0
:
/* cmd ::= KILL CONNECTION INTEGER */
case
29
4
:
/* cmd ::= KILL CONNECTION INTEGER */
{
setKillSql
(
pInfo
,
TSDB_SQL_KILL_CONNECTION
,
&
yymsp
[
0
].
minor
.
yy0
);}
break
;
case
29
1
:
/* cmd ::= KILL STREAM INTEGER COLON INTEGER */
case
29
5
:
/* 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
29
2
:
/* cmd ::= KILL QUERY INTEGER COLON INTEGER */
case
29
6
:
/* 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
Lhs
)
/
sizeof
(
yyRuleInfoLhs
[
0
])
);
yygoto
=
yyRuleInfo
Lhs
[
yyruleno
]
;
yysize
=
yyRuleInfo
NRhs
[
yyruleno
]
;
assert
(
yyruleno
<
sizeof
(
yyRuleInfo
)
/
sizeof
(
yyRuleInfo
[
0
])
);
yygoto
=
yyRuleInfo
[
yyruleno
].
lhs
;
yysize
=
yyRuleInfo
[
yyruleno
].
nrhs
;
yyact
=
yy_find_reduce_action
(
yymsp
[
yysize
].
stateno
,(
YYCODETYPE
)
yygoto
);
/* There are no SHIFTREDUCE actions on nonterminals because the table
...
...
@@ -3943,56 +3533,12 @@ void Parse(
}
#endif
while
(
1
){
/* Exit by "break" */
assert
(
yypParser
->
yytos
>=
yypParser
->
yystack
);
do
{
assert
(
yyact
==
yypParser
->
yytos
->
stateno
);
yyact
=
yy_find_shift_action
((
YYCODETYPE
)
yymajor
,
yyact
);
if
(
yyact
>=
YY_MIN_REDUCE
){
unsigned
int
yyruleno
=
yyact
-
YY_MIN_REDUCE
;
/* Reduce by this rule */
assert
(
yyruleno
<
(
int
)(
sizeof
(
yyRuleName
)
/
sizeof
(
yyRuleName
[
0
]))
);
#ifndef NDEBUG
if
(
yyTraceFILE
){
int
yysize
=
yyRuleInfoNRhs
[
yyruleno
];
if
(
yysize
){
fprintf
(
yyTraceFILE
,
"%sReduce %d [%s]%s, pop back to state %d.
\n
"
,
yyTracePrompt
,
yyruleno
,
yyRuleName
[
yyruleno
],
yyruleno
<
YYNRULE_WITH_ACTION
?
""
:
" without external action"
,
yypParser
->
yytos
[
yysize
].
stateno
);
}
else
{
fprintf
(
yyTraceFILE
,
"%sReduce %d [%s]%s.
\n
"
,
yyTracePrompt
,
yyruleno
,
yyRuleName
[
yyruleno
],
yyruleno
<
YYNRULE_WITH_ACTION
?
""
:
" without external action"
);
}
}
#endif
/* NDEBUG */
/* 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
(
yyRuleInfoNRhs
[
yyruleno
]
==
0
){
#ifdef YYTRACKMAXSTACKDEPTH
if
(
(
int
)(
yypParser
->
yytos
-
yypParser
->
yystack
)
>
yypParser
->
yyhwm
){
yypParser
->
yyhwm
++
;
assert
(
yypParser
->
yyhwm
==
(
int
)(
yypParser
->
yytos
-
yypParser
->
yystack
));
}
#endif
#if YYSTACKDEPTH>0
if
(
yypParser
->
yytos
>=
yypParser
->
yystackEnd
){
yyStackOverflow
(
yypParser
);
break
;
}
#else
if
(
yypParser
->
yytos
>=&
yypParser
->
yystack
[
yypParser
->
yystksz
-
1
]
){
if
(
yyGrowStack
(
yypParser
)
){
yyStackOverflow
(
yypParser
);
break
;
}
}
#endif
}
yyact
=
yy_reduce
(
yypParser
,
yyruleno
,
yymajor
,
yyminor
ParseCTX_PARAM
);
yyact
=
yy_reduce
(
yypParser
,
yyact
-
YY_MIN_REDUCE
,
yymajor
,
yyminor
ParseCTX_PARAM
);
}
else
if
(
yyact
<=
YY_MAX_SHIFTREDUCE
){
yy_shift
(
yypParser
,
yyact
,(
YYCODETYPE
)
yymajor
,
yyminor
);
#ifndef YYNOERRORRECOVERY
...
...
@@ -4105,7 +3651,7 @@ void Parse(
break
;
#endif
}
}
}
while
(
yypParser
->
yytos
>
yypParser
->
yystack
);
#ifndef NDEBUG
if
(
yyTraceFILE
){
yyStackEntry
*
i
;
...
...
@@ -4127,10 +3673,11 @@ void Parse(
*/
int
ParseFallback
(
int
iToken
){
#ifdef YYFALLBACK
assert
(
iToken
<
(
int
)(
sizeof
(
yyFallback
)
/
sizeof
(
yyFallback
[
0
]))
);
return
yyFallback
[
iToken
];
if
(
iToken
<
(
int
)(
sizeof
(
yyFallback
)
/
sizeof
(
yyFallback
[
0
]))
){
return
yyFallback
[
iToken
];
}
#else
(
void
)
iToken
;
return
0
;
#endif
return
0
;
}
src/rpc/src/rpcMain.c
浏览文件 @
0b6fd5c2
...
...
@@ -1669,3 +1669,9 @@ static void rpcDecRef(SRpcInfo *pRpc)
}
}
int32_t
rpcUnusedSession
(
void
*
rpcInfo
,
bool
bLock
)
{
SRpcInfo
*
info
=
(
SRpcInfo
*
)
rpcInfo
;
if
(
info
==
NULL
)
return
0
;
return
taosIdPoolNumOfFree
(
info
->
idPool
,
bLock
);
}
\ No newline at end of file
src/util/inc/tidpool.h
浏览文件 @
0b6fd5c2
...
...
@@ -36,6 +36,8 @@ int taosIdPoolNumOfUsed(void *handle);
bool
taosIdPoolMarkStatus
(
void
*
handle
,
int
id
);
// get free count from pool , if bLock is true, locked pool than get free count, accuracy but slowly
int
taosIdPoolNumOfFree
(
void
*
handle
,
bool
bLock
);
#ifdef __cplusplus
}
#endif
...
...
src/util/inc/ttoken.h
浏览文件 @
0b6fd5c2
...
...
@@ -63,6 +63,15 @@ uint32_t tGetToken(char *z, uint32_t *tokenType);
*/
SStrToken
tStrGetToken
(
char
*
str
,
int32_t
*
i
,
bool
isPrevOptr
);
/**
* strcpy implement source from SStrToken
*
* @param dst copy to
* @param srcToken copy from
* @return size of copy successful bytes, not include '\0'
*/
int32_t
tStrNCpy
(
char
*
dst
,
SStrToken
*
srcToken
);
/**
* check if it is a keyword or not
* @param z
...
...
src/util/src/tidpool.c
浏览文件 @
0b6fd5c2
...
...
@@ -163,4 +163,16 @@ int taosIdPoolMaxSize(void *handle) {
pthread_mutex_unlock
(
&
pIdPool
->
mutex
);
return
ret
;
}
\ No newline at end of file
}
// get free count from pool , if bLock is true, locked pool than get free count, accuracy but slowly
int
taosIdPoolNumOfFree
(
void
*
handle
,
bool
bLock
)
{
id_pool_t
*
pIdPool
=
handle
;
if
(
bLock
)
pthread_mutex_lock
(
&
pIdPool
->
mutex
);
int
ret
=
pIdPool
->
numOfFree
;
if
(
bLock
)
pthread_mutex_unlock
(
&
pIdPool
->
mutex
);
return
ret
;
}
src/util/src/ttokenizer.c
浏览文件 @
0b6fd5c2
...
...
@@ -227,6 +227,8 @@ static SKeyword keywordTable[] = {
{
"OUTPUTTYPE"
,
TK_OUTPUTTYPE
},
{
"AGGREGATE"
,
TK_AGGREGATE
},
{
"BUFSIZE"
,
TK_BUFSIZE
},
{
"TO"
,
TK_TO
},
{
"SPLIT"
,
TK_SPLIT
},
};
static
const
char
isIdChar
[]
=
{
...
...
@@ -676,6 +678,18 @@ SStrToken tStrGetToken(char* str, int32_t* i, bool isPrevOptr) {
return
t0
;
}
/**
* strcpy implement source from SStrToken
*
* @param dst copy to
* @param srcToken copy from
* @return size of copy successful bytes
*/
int32_t
tStrNCpy
(
char
*
dst
,
SStrToken
*
srcToken
)
{
strncpy
(
dst
,
srcToken
->
z
,
srcToken
->
n
);
return
srcToken
->
n
;
}
bool
taosIsKeyWordToken
(
const
char
*
z
,
int32_t
len
)
{
return
(
tKeywordCode
((
char
*
)
z
,
len
)
!=
TK_ID
);
}
...
...
tests/pytest/stream/metric_1.py
浏览文件 @
0b6fd5c2
...
...
@@ -39,6 +39,7 @@ class TDTestCase:
def
run
(
self
):
tbNum
=
10
rowNum
=
20
ts_begin
=
1633017600000
tdSql
.
prepare
()
...
...
@@ -49,8 +50,8 @@ class TDTestCase:
tdSql
.
execute
(
"create table tb%d using stb tags(%d)"
%
(
i
,
i
))
for
j
in
range
(
rowNum
):
tdSql
.
execute
(
"insert into tb%d values (
now - %dm
, %d, %d)"
%
(
i
,
1440
-
j
,
j
,
j
))
"insert into tb%d values (
%d
, %d, %d)"
%
(
i
,
ts_begin
+
j
,
j
,
j
))
time
.
sleep
(
0.1
)
self
.
createFuncStream
(
"count(*)"
,
"c1"
,
200
)
...
...
tests/pytest/stream/new.py
浏览文件 @
0b6fd5c2
...
...
@@ -27,13 +27,14 @@ class TDTestCase:
def
run
(
self
):
rowNum
=
200
tdSql
.
prepare
()
ts_now
=
1633017600000
tdLog
.
info
(
"=============== step1"
)
tdSql
.
execute
(
"create table mt(ts timestamp, tbcol int, tbcol2 float) TAGS(tgcol int)"
)
for
i
in
range
(
5
):
tdSql
.
execute
(
"create table tb%d using mt tags(%d)"
%
(
i
,
i
))
for
j
in
range
(
rowNum
):
tdSql
.
execute
(
"insert into tb%d values(now + %ds, %d, %d)"
%
(
i
,
j
,
j
,
j
))
tdSql
.
execute
(
"insert into tb%d values(%d, %d, %d)"
%
(
i
,
ts_now
,
j
,
j
))
ts_now
+=
1000
time
.
sleep
(
0.1
)
tdLog
.
info
(
"=============== step2"
)
...
...
@@ -45,14 +46,15 @@ class TDTestCase:
tdSql
.
waitedQuery
(
"select * from st"
,
1
,
180
)
delay
=
int
(
time
.
time
()
-
start
)
+
80
v
=
tdSql
.
getData
(
0
,
3
)
if
v
>=
51
:
tdLog
.
exit
(
"value is %d,
which is larger than 51
"
%
v
)
if
v
!=
10
:
tdLog
.
exit
(
"value is %d,
expect is 10.
"
%
v
)
tdLog
.
info
(
"=============== step4"
)
for
i
in
range
(
5
,
10
):
tdSql
.
execute
(
"create table tb%d using mt tags(%d)"
%
(
i
,
i
))
for
j
in
range
(
rowNum
):
tdSql
.
execute
(
"insert into tb%d values(now + %ds, %d, %d)"
%
(
i
,
j
,
j
,
j
))
tdSql
.
execute
(
"insert into tb%d values(%d, %d, %d)"
%
(
i
,
ts_now
,
j
,
j
))
ts_now
+=
1000
tdLog
.
info
(
"=============== step5"
)
maxValue
=
0
...
...
@@ -62,11 +64,11 @@ class TDTestCase:
v
=
tdSql
.
getData
(
0
,
3
)
if
v
>
maxValue
:
maxValue
=
v
if
v
>
51
:
if
v
>
=
10
:
break
if
maxValue
<
=
51
:
tdLog
.
exit
(
"value is %d,
which is smaller than 51
"
%
maxValue
)
if
maxValue
<
10
:
tdLog
.
exit
(
"value is %d,
expect is 10
"
%
maxValue
)
def
stop
(
self
):
tdSql
.
close
()
...
...
tests/pytest/stream/sys.py
浏览文件 @
0b6fd5c2
...
...
@@ -47,7 +47,7 @@ class TDTestCase:
"select * from iostrm"
,
]
for
sql
in
sqls
:
(
rows
,
_
)
=
tdSql
.
waitedQuery
(
sql
,
1
,
24
0
)
(
rows
,
_
)
=
tdSql
.
waitedQuery
(
sql
,
1
,
60
0
)
if
rows
<
1
:
tdLog
.
exit
(
"failed: sql:%s, expect at least one row"
%
sql
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录