Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
5b2d664d
TDengine
项目概览
taosdata
/
TDengine
大约 2 年 前同步成功
通知
1192
Star
22018
Fork
4786
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
TDengine
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
5b2d664d
编写于
3月 30, 2022
作者:
wmmhello
浏览文件
操作
浏览文件
下载
差异文件
fix conflicts
上级
bceb5578
869ce1e0
变更
120
隐藏空白更改
内联
并排
Showing
120 changed file
with
4321 addition
and
4056 deletion
+4321
-4056
example/src/tmq.c
example/src/tmq.c
+3
-2
include/client/taos.h
include/client/taos.h
+28
-10
include/common/tcommon.h
include/common/tcommon.h
+5
-0
include/common/tmsg.h
include/common/tmsg.h
+11
-45
include/common/tmsgcb.h
include/common/tmsgcb.h
+3
-2
include/common/ttokendef.h
include/common/ttokendef.h
+12
-12
include/libs/executor/executor.h
include/libs/executor/executor.h
+3
-4
include/os/os.h
include/os/os.h
+3
-0
include/util/taoserror.h
include/util/taoserror.h
+1
-1
include/util/tprocess.h
include/util/tprocess.h
+1
-1
source/client/src/clientMain.c
source/client/src/clientMain.c
+130
-90
source/client/src/tmq.c
source/client/src/tmq.c
+30
-10
source/client/test/tmqTest.cpp
source/client/test/tmqTest.cpp
+8
-6
source/common/src/tmsgcb.c
source/common/src/tmsgcb.c
+7
-3
source/dnode/mgmt/CMakeLists.txt
source/dnode/mgmt/CMakeLists.txt
+21
-17
source/dnode/mgmt/bm/inc/bm.h
source/dnode/mgmt/bm/inc/bm.h
+0
-0
source/dnode/mgmt/bm/inc/bmInt.h
source/dnode/mgmt/bm/inc/bmInt.h
+0
-0
source/dnode/mgmt/bm/src/bmInt.c
source/dnode/mgmt/bm/src/bmInt.c
+0
-0
source/dnode/mgmt/bm/src/bmMsg.c
source/dnode/mgmt/bm/src/bmMsg.c
+0
-0
source/dnode/mgmt/bm/src/bmWorker.c
source/dnode/mgmt/bm/src/bmWorker.c
+0
-0
source/dnode/mgmt/dm/inc/dm.h
source/dnode/mgmt/dm/inc/dm.h
+0
-0
source/dnode/mgmt/dm/inc/dmInt.h
source/dnode/mgmt/dm/inc/dmInt.h
+0
-0
source/dnode/mgmt/dm/src/dmFile.c
source/dnode/mgmt/dm/src/dmFile.c
+0
-0
source/dnode/mgmt/dm/src/dmInt.c
source/dnode/mgmt/dm/src/dmInt.c
+0
-0
source/dnode/mgmt/dm/src/dmMsg.c
source/dnode/mgmt/dm/src/dmMsg.c
+0
-0
source/dnode/mgmt/dm/src/dmWorker.c
source/dnode/mgmt/dm/src/dmWorker.c
+0
-0
source/dnode/mgmt/main/CMakeLists.txt
source/dnode/mgmt/main/CMakeLists.txt
+0
-9
source/dnode/mgmt/main/exe/dndMain.c
source/dnode/mgmt/main/exe/dndMain.c
+199
-0
source/dnode/mgmt/main/inc/dnd.h
source/dnode/mgmt/main/inc/dnd.h
+9
-5
source/dnode/mgmt/main/inc/dndInt.h
source/dnode/mgmt/main/inc/dndInt.h
+0
-0
source/dnode/mgmt/main/inc/dndMain.h
source/dnode/mgmt/main/inc/dndMain.h
+0
-48
source/dnode/mgmt/main/src/dndExec.c
source/dnode/mgmt/main/src/dndExec.c
+29
-11
source/dnode/mgmt/main/src/dndFile.c
source/dnode/mgmt/main/src/dndFile.c
+0
-0
source/dnode/mgmt/main/src/dndInt.c
source/dnode/mgmt/main/src/dndInt.c
+0
-13
source/dnode/mgmt/main/src/dndMonitor.c
source/dnode/mgmt/main/src/dndMonitor.c
+0
-0
source/dnode/mgmt/main/src/dndMsg.c
source/dnode/mgmt/main/src/dndMsg.c
+0
-0
source/dnode/mgmt/main/src/dndObj.c
source/dnode/mgmt/main/src/dndObj.c
+0
-0
source/dnode/mgmt/main/src/dndStr.c
source/dnode/mgmt/main/src/dndStr.c
+64
-0
source/dnode/mgmt/main/src/dndTransport.c
source/dnode/mgmt/main/src/dndTransport.c
+46
-31
source/dnode/mgmt/mm/inc/mm.h
source/dnode/mgmt/mm/inc/mm.h
+0
-0
source/dnode/mgmt/mm/inc/mmInt.h
source/dnode/mgmt/mm/inc/mmInt.h
+0
-0
source/dnode/mgmt/mm/src/mmFile.c
source/dnode/mgmt/mm/src/mmFile.c
+0
-0
source/dnode/mgmt/mm/src/mmInt.c
source/dnode/mgmt/mm/src/mmInt.c
+0
-0
source/dnode/mgmt/mm/src/mmMsg.c
source/dnode/mgmt/mm/src/mmMsg.c
+0
-0
source/dnode/mgmt/mm/src/mmWorker.c
source/dnode/mgmt/mm/src/mmWorker.c
+0
-0
source/dnode/mgmt/qm/inc/qm.h
source/dnode/mgmt/qm/inc/qm.h
+0
-0
source/dnode/mgmt/qm/inc/qmInt.h
source/dnode/mgmt/qm/inc/qmInt.h
+0
-0
source/dnode/mgmt/qm/src/qmInt.c
source/dnode/mgmt/qm/src/qmInt.c
+0
-0
source/dnode/mgmt/qm/src/qmMsg.c
source/dnode/mgmt/qm/src/qmMsg.c
+0
-0
source/dnode/mgmt/qm/src/qmWorker.c
source/dnode/mgmt/qm/src/qmWorker.c
+0
-0
source/dnode/mgmt/sm/inc/sm.h
source/dnode/mgmt/sm/inc/sm.h
+0
-0
source/dnode/mgmt/sm/inc/smInt.h
source/dnode/mgmt/sm/inc/smInt.h
+0
-0
source/dnode/mgmt/sm/src/smInt.c
source/dnode/mgmt/sm/src/smInt.c
+0
-0
source/dnode/mgmt/sm/src/smMsg.c
source/dnode/mgmt/sm/src/smMsg.c
+0
-0
source/dnode/mgmt/sm/src/smWorker.c
source/dnode/mgmt/sm/src/smWorker.c
+0
-0
source/dnode/mgmt/vm/inc/vm.h
source/dnode/mgmt/vm/inc/vm.h
+0
-0
source/dnode/mgmt/vm/inc/vmInt.h
source/dnode/mgmt/vm/inc/vmInt.h
+0
-0
source/dnode/mgmt/vm/src/vmFile.c
source/dnode/mgmt/vm/src/vmFile.c
+0
-0
source/dnode/mgmt/vm/src/vmInt.c
source/dnode/mgmt/vm/src/vmInt.c
+0
-0
source/dnode/mgmt/vm/src/vmMsg.c
source/dnode/mgmt/vm/src/vmMsg.c
+0
-0
source/dnode/mgmt/vm/src/vmWorker.c
source/dnode/mgmt/vm/src/vmWorker.c
+0
-0
source/dnode/mnode/impl/src/mndInfoSchema.c
source/dnode/mnode/impl/src/mndInfoSchema.c
+177
-139
source/dnode/mnode/impl/src/mndSubscribe.c
source/dnode/mnode/impl/src/mndSubscribe.c
+1
-295
source/dnode/mnode/impl/src/mndTopic.c
source/dnode/mnode/impl/src/mndTopic.c
+6
-5
source/dnode/mnode/impl/src/mndTrans.c
source/dnode/mnode/impl/src/mndTrans.c
+3
-3
source/dnode/vnode/src/tq/tq.c
source/dnode/vnode/src/tq/tq.c
+4
-3
source/dnode/vnode/src/tq/tqRead.c
source/dnode/vnode/src/tq/tqRead.c
+6
-57
source/dnode/vnode/src/vnd/vnodeQuery.c
source/dnode/vnode/src/vnd/vnodeQuery.c
+2
-4
source/libs/executor/src/executor.c
source/libs/executor/src/executor.c
+7
-6
source/libs/executor/src/executorimpl.c
source/libs/executor/src/executorimpl.c
+2174
-1975
source/libs/function/src/builtins.c
source/libs/function/src/builtins.c
+18
-2
source/libs/index/inc/indexCache.h
source/libs/index/inc/indexCache.h
+2
-3
source/libs/index/inc/indexComm.h
source/libs/index/inc/indexComm.h
+0
-0
source/libs/index/inc/indexFst.h
source/libs/index/inc/indexFst.h
+5
-5
source/libs/index/inc/indexFstAutomation.h
source/libs/index/inc/indexFstAutomation.h
+1
-1
source/libs/index/inc/indexFstCommon.h
source/libs/index/inc/indexFstCommon.h
+0
-0
source/libs/index/inc/indexFstCountingWriter.h
source/libs/index/inc/indexFstCountingWriter.h
+0
-0
source/libs/index/inc/indexFstNode.h
source/libs/index/inc/indexFstNode.h
+2
-2
source/libs/index/inc/indexFstRegistry.h
source/libs/index/inc/indexFstRegistry.h
+2
-2
source/libs/index/inc/indexFstUtil.h
source/libs/index/inc/indexFstUtil.h
+1
-1
source/libs/index/inc/indexSparse.h
source/libs/index/inc/indexSparse.h
+18
-7
source/libs/index/inc/indexTfile.h
source/libs/index/inc/indexTfile.h
+4
-4
source/libs/index/inc/indexUtil.h
source/libs/index/inc/indexUtil.h
+0
-0
source/libs/index/src/index.c
source/libs/index/src/index.c
+6
-6
source/libs/index/src/indexCache.c
source/libs/index/src/indexCache.c
+3
-3
source/libs/index/src/indexComm.c
source/libs/index/src/indexComm.c
+0
-0
source/libs/index/src/indexFst.c
source/libs/index/src/indexFst.c
+2
-2
source/libs/index/src/indexFstAutomation.c
source/libs/index/src/indexFstAutomation.c
+1
-1
source/libs/index/src/indexFstCommon.c
source/libs/index/src/indexFstCommon.c
+20
-17
source/libs/index/src/indexFstCountingWriter.c
source/libs/index/src/indexFstCountingWriter.c
+21
-9
source/libs/index/src/indexFstNode.c
source/libs/index/src/indexFstNode.c
+25
-9
source/libs/index/src/indexFstRegister.c
source/libs/index/src/indexFstRegister.c
+17
-9
source/libs/index/src/indexFstUtil.c
source/libs/index/src/indexFstUtil.c
+2
-2
source/libs/index/src/indexJson.c
source/libs/index/src/indexJson.c
+0
-0
source/libs/index/src/indexSparse.c
source/libs/index/src/indexSparse.c
+71
-0
source/libs/index/src/indexTfile.c
source/libs/index/src/indexTfile.c
+5
-5
source/libs/index/src/indexUtil.c
source/libs/index/src/indexUtil.c
+1
-1
source/libs/index/test/fstTest.cc
source/libs/index/test/fstTest.cc
+5
-5
source/libs/index/test/fstUT.cc
source/libs/index/test/fstUT.cc
+5
-5
source/libs/index/test/indexTests.cc
source/libs/index/test/indexTests.cc
+6
-6
source/libs/index/test/jsonUT.cc
source/libs/index/test/jsonUT.cc
+6
-6
source/libs/index/test/utilUT.cc
source/libs/index/test/utilUT.cc
+6
-6
source/libs/parser/inc/sql.y
source/libs/parser/inc/sql.y
+2
-0
source/libs/parser/src/parAstCreater.c
source/libs/parser/src/parAstCreater.c
+6
-4
source/libs/parser/src/sql.c
source/libs/parser/src/sql.c
+854
-845
source/libs/parser/test/parserAstTest.cpp
source/libs/parser/test/parserAstTest.cpp
+4
-1
source/libs/qworker/inc/qworkerMsg.h
source/libs/qworker/inc/qworkerMsg.h
+6
-6
source/libs/qworker/src/qworker.c
source/libs/qworker/src/qworker.c
+18
-18
source/libs/qworker/src/qworkerMsg.c
source/libs/qworker/src/qworkerMsg.c
+19
-23
source/libs/scalar/src/sclfunc.c
source/libs/scalar/src/sclfunc.c
+41
-90
source/libs/scalar/test/scalar/scalarTests.cpp
source/libs/scalar/test/scalar/scalarTests.cpp
+10
-10
source/libs/stream/src/tstream.c
source/libs/stream/src/tstream.c
+15
-14
source/util/src/tprocess.c
source/util/src/tprocess.c
+23
-30
tests/script/jenkins/basic.txt
tests/script/jenkins/basic.txt
+1
-1
tests/script/sh/deploy.sh
tests/script/sh/deploy.sh
+7
-10
tests/script/sh/exec.sh
tests/script/sh/exec.sh
+1
-1
tests/script/tsim/parser/groupby-basic.sim
tests/script/tsim/parser/groupby-basic.sim
+25
-51
tests/script/tsim/testCaseSuite.sim
tests/script/tsim/testCaseSuite.sim
+1
-1
tests/script/tsim/tmq/basic1.sim
tests/script/tsim/tmq/basic1.sim
+8
-7
tests/test/c/tmqSim.c
tests/test/c/tmqSim.c
+32
-18
未找到文件。
example/src/tmq.c
浏览文件 @
5b2d664d
...
...
@@ -80,8 +80,9 @@ int32_t create_topic() {
}
taos_free_result
(
pRes
);
const
char
*
sql
=
"select * from tu1"
;
pRes
=
tmq_create_topic
(
pConn
,
"test_stb_topic_1"
,
sql
,
strlen
(
sql
));
/*const char* sql = "select * from tu1";*/
/*pRes = tmq_create_topic(pConn, "test_stb_topic_1", sql, strlen(sql));*/
pRes
=
taos_query
(
pConn
,
"create topic test_stb_topic_1 as select * from tu1"
);
if
(
taos_errno
(
pRes
)
!=
0
)
{
printf
(
"failed to create topic test_stb_topic_1, reason:%s
\n
"
,
taos_errstr
(
pRes
));
return
-
1
;
...
...
include/client/taos.h
浏览文件 @
5b2d664d
...
...
@@ -26,9 +26,11 @@ extern "C" {
typedef
void
TAOS
;
typedef
void
TAOS_STMT
;
typedef
void
TAOS_RES
;
typedef
void
**
TAOS_ROW
;
#if 0
typedef void TAOS_STREAM;
#endif
typedef
void
TAOS_SUB
;
typedef
void
**
TAOS_ROW
;
// Data type definition
#define TSDB_DATA_TYPE_NULL 0 // 1 bytes
...
...
@@ -149,6 +151,7 @@ DLL_EXPORT int taos_stmt_execute(TAOS_STMT *stmt);
DLL_EXPORT
TAOS_RES
*
taos_stmt_use_result
(
TAOS_STMT
*
stmt
);
DLL_EXPORT
int
taos_stmt_close
(
TAOS_STMT
*
stmt
);
DLL_EXPORT
char
*
taos_stmt_errstr
(
TAOS_STMT
*
stmt
);
DLL_EXPORT
int
taos_stmt_affected_rows
(
TAOS_STMT
*
stmt
);
DLL_EXPORT
TAOS_RES
*
taos_query
(
TAOS
*
taos
,
const
char
*
sql
);
DLL_EXPORT
TAOS_RES
*
taos_query_l
(
TAOS
*
taos
,
const
char
*
sql
,
int
sqlLen
);
...
...
@@ -179,15 +182,20 @@ DLL_EXPORT int taos_errno(TAOS_RES *tres);
DLL_EXPORT
void
taos_query_a
(
TAOS
*
taos
,
const
char
*
sql
,
__taos_async_fn_t
fp
,
void
*
param
);
DLL_EXPORT
void
taos_fetch_rows_a
(
TAOS_RES
*
res
,
__taos_async_fn_t
fp
,
void
*
param
);
// Shuduo: temporary enable for app build
#if 1
typedef
void
(
*
__taos_sub_fn_t
)(
TAOS_SUB
*
tsub
,
TAOS_RES
*
res
,
void
*
param
,
int
code
);
DLL_EXPORT
TAOS_SUB
*
taos_subscribe
(
TAOS
*
taos
,
int
restart
,
const
char
*
topic
,
const
char
*
sql
,
__taos_sub_fn_t
fp
,
void
*
param
,
int
interval
);
DLL_EXPORT
TAOS_RES
*
taos_consume
(
TAOS_SUB
*
tsub
);
DLL_EXPORT
void
taos_unsubscribe
(
TAOS_SUB
*
tsub
,
int
keepProgress
);
#endif
#if 0
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 *));
DLL_EXPORT void taos_close_stream(TAOS_STREAM *tstr);
#endif
DLL_EXPORT
int
taos_load_table_info
(
TAOS
*
taos
,
const
char
*
tableNameList
);
DLL_EXPORT
TAOS_RES
*
taos_schemaless_insert
(
TAOS
*
taos
,
char
*
lines
[],
int
numLines
,
int
protocol
,
int
precision
);
...
...
@@ -215,8 +223,12 @@ DLL_EXPORT tmq_list_t *tmq_list_new();
DLL_EXPORT
int32_t
tmq_list_append
(
tmq_list_t
*
,
const
char
*
);
DLL_EXPORT
void
tmq_list_destroy
(
tmq_list_t
*
);
DLL_EXPORT
tmq_t
*
tmq_consumer_new
(
void
*
conn
,
tmq_conf_t
*
conf
,
char
*
errstr
,
int32_t
errstrLen
);
DLL_EXPORT
tmq_t
*
tmq_consumer_new1
(
tmq_conf_t
*
conf
,
char
*
errstr
,
int32_t
errstrLen
);
// will be removed in 3.0
DLL_EXPORT
tmq_t
*
tmq_consumer_new
(
void
*
conn
,
tmq_conf_t
*
conf
,
char
*
errstr
,
int32_t
errstrLen
);
// will replace last one
DLL_EXPORT
tmq_t
*
tmq_consumer_new1
(
tmq_conf_t
*
conf
,
char
*
errstr
,
int32_t
errstrLen
);
DLL_EXPORT
const
char
*
tmq_err2str
(
tmq_resp_err_t
);
/* ------------------------TMQ CONSUMER INTERFACE------------------------ */
...
...
@@ -255,20 +267,26 @@ int32_t tmqGetSkipLogNum(tmq_message_t *tmq_message);
/* -------------------------TMQ MSG HANDLE INTERFACE---------------------- */
DLL_EXPORT
TAOS_ROW
tmq_get_row
(
tmq_message_t
*
message
);
DLL_EXPORT
char
*
tmq_get_topic_name
(
tmq_message_t
*
message
);
DLL_EXPORT
void
*
tmq_get_topic_schema
(
tmq_t
*
tmq
,
const
char
*
topic
);
DLL_EXPORT
void
tmq_message_destroy
(
tmq_message_t
*
tmq_message
);
DLL_EXPORT
TAOS_ROW
tmq_get_row
(
tmq_message_t
*
message
);
DLL_EXPORT
char
*
tmq_get_topic_name
(
tmq_message_t
*
message
);
DLL_EXPORT
int32_t
tmq_get_vgroup_id
(
tmq_message_t
*
message
);
DLL_EXPORT
int64_t
tmq_get_request_offset
(
tmq_message_t
*
message
);
DLL_EXPORT
int64_t
tmq_get_response_offset
(
tmq_message_t
*
message
);
DLL_EXPORT
TAOS_FIELD
*
tmq_get_fields
(
tmq_t
*
tmq
,
const
char
*
topic
);
DLL_EXPORT
int32_t
tmq_field_count
(
tmq_t
*
tmq
,
const
char
*
topic
);
DLL_EXPORT
void
tmq_message_destroy
(
tmq_message_t
*
tmq_message
);
/* --------------------TMPORARY INTERFACE FOR TESTING--------------------- */
#if 0
DLL_EXPORT TAOS_RES *tmq_create_topic(TAOS *taos, const char *name, const char *sql, int sqlLen);
#endif
DLL_EXPORT
TAOS_RES
*
tmq_create_stream
(
TAOS
*
taos
,
const
char
*
streamName
,
const
char
*
tbName
,
const
char
*
sql
);
/* -------------------------------- OTHER -------------------------------- */
/* ------------------------------ TMQ END -------------------------------- */
#if 1 // Shuduo: temporary enable for app build
typedef
void
(
*
TAOS_SUBSCRIBE_CALLBACK
)(
TAOS_SUB
*
tsub
,
TAOS_RES
*
res
,
void
*
param
,
int
code
);
DLL_EXPORT
int
taos_stmt_affected_rows
(
TAOS_STMT
*
stmt
);
#endif
#ifdef __cplusplus
}
...
...
include/common/tcommon.h
浏览文件 @
5b2d664d
...
...
@@ -197,6 +197,11 @@ typedef struct SGroupbyExpr {
bool
groupbyTag
;
// group by tag or column
}
SGroupbyExpr
;
enum
{
FUNC_PARAM_TYPE_VALUE
=
0
,
FUNC_PARAM_TYPE_COLUMN
,
};
typedef
struct
SFunctParam
{
int32_t
type
;
SColumn
*
pCol
;
...
...
include/common/tmsg.h
浏览文件 @
5b2d664d
...
...
@@ -2215,23 +2215,6 @@ static FORCE_INLINE void* tDecodeTSmaWrapper(void* buf, STSmaWrapper* pSW) {
return
buf
;
}
typedef
struct
{
int64_t
uid
;
int32_t
numOfRows
;
char
*
colData
;
}
SMqTbData
;
typedef
struct
{
char
topicName
[
TSDB_TOPIC_FNAME_LEN
];
int64_t
committedOffset
;
int64_t
reqOffset
;
int64_t
rspOffset
;
int32_t
skipLogNum
;
int32_t
bodyLen
;
int32_t
numOfTb
;
SMqTbData
*
tbData
;
}
SMqTopicData
;
typedef
struct
{
int8_t
mqMsgType
;
int32_t
code
;
...
...
@@ -2259,8 +2242,11 @@ typedef struct {
}
SMqSubVgEp
;
typedef
struct
{
char
topic
[
TSDB_TOPIC_FNAME_LEN
];
SArray
*
vgs
;
// SArray<SMqSubVgEp>
char
topic
[
TSDB_TOPIC_FNAME_LEN
];
int8_t
isSchemaAdaptive
;
SArray
*
vgs
;
// SArray<SMqSubVgEp>
int32_t
numOfFields
;
TAOS_FIELD
*
fields
;
}
SMqSubTopicEp
;
typedef
struct
{
...
...
@@ -2281,32 +2267,6 @@ typedef struct {
SArray
*
topics
;
// SArray<SMqSubTopicEp>
}
SMqCMGetSubEpRsp
;
typedef
struct
{
int32_t
curBlock
;
int32_t
curRow
;
void
**
uData
;
}
SMqRowIter
;
struct
tmq_message_t
{
SMqPollRsp
msg
;
void
*
vg
;
SMqRowIter
iter
;
};
#if 0
struct tmq_message_t {
SMqRspHead head;
union {
SMqPollRsp consumeRsp;
SMqCMGetSubEpRsp getEpRsp;
};
void* extra;
int32_t curBlock;
int32_t curRow;
void** uData;
};
#endif
static
FORCE_INLINE
void
tDeleteSMqSubTopicEp
(
SMqSubTopicEp
*
pSubTopicEp
)
{
taosArrayDestroy
(
pSubTopicEp
->
vgs
);
}
static
FORCE_INLINE
int32_t
tEncodeSMqSubVgEp
(
void
**
buf
,
const
SMqSubVgEp
*
pVgEp
)
{
...
...
@@ -2331,17 +2291,21 @@ static FORCE_INLINE void tDeleteSMqCMGetSubEpRsp(SMqCMGetSubEpRsp* pRsp) {
static
FORCE_INLINE
int32_t
tEncodeSMqSubTopicEp
(
void
**
buf
,
const
SMqSubTopicEp
*
pTopicEp
)
{
int32_t
tlen
=
0
;
tlen
+=
taosEncodeString
(
buf
,
pTopicEp
->
topic
);
tlen
+=
taosEncodeFixedI8
(
buf
,
pTopicEp
->
isSchemaAdaptive
);
int32_t
sz
=
taosArrayGetSize
(
pTopicEp
->
vgs
);
tlen
+=
taosEncodeFixedI32
(
buf
,
sz
);
for
(
int32_t
i
=
0
;
i
<
sz
;
i
++
)
{
SMqSubVgEp
*
pVgEp
=
(
SMqSubVgEp
*
)
taosArrayGet
(
pTopicEp
->
vgs
,
i
);
tlen
+=
tEncodeSMqSubVgEp
(
buf
,
pVgEp
);
}
tlen
+=
taosEncodeFixedI32
(
buf
,
pTopicEp
->
numOfFields
);
// tlen += taosEncodeBinary(buf, pTopicEp->fields, pTopicEp->numOfFields * sizeof(TAOS_FIELD));
return
tlen
;
}
static
FORCE_INLINE
void
*
tDecodeSMqSubTopicEp
(
void
*
buf
,
SMqSubTopicEp
*
pTopicEp
)
{
buf
=
taosDecodeStringTo
(
buf
,
pTopicEp
->
topic
);
buf
=
taosDecodeFixedI8
(
buf
,
&
pTopicEp
->
isSchemaAdaptive
);
int32_t
sz
;
buf
=
taosDecodeFixedI32
(
buf
,
&
sz
);
pTopicEp
->
vgs
=
taosArrayInit
(
sz
,
sizeof
(
SMqSubVgEp
));
...
...
@@ -2353,6 +2317,8 @@ static FORCE_INLINE void* tDecodeSMqSubTopicEp(void* buf, SMqSubTopicEp* pTopicE
buf
=
tDecodeSMqSubVgEp
(
buf
,
&
vgEp
);
taosArrayPush
(
pTopicEp
->
vgs
,
&
vgEp
);
}
buf
=
taosDecodeFixedI32
(
buf
,
&
pTopicEp
->
numOfFields
);
// buf = taosDecodeBinary(buf, (void**)&pTopicEp->fields, pTopicEp->numOfFields * sizeof(TAOS_FIELD));
return
buf
;
}
...
...
include/common/tmsgcb.h
浏览文件 @
5b2d664d
...
...
@@ -56,13 +56,14 @@ typedef struct {
ReleaseHandleFp
releaseHandleFp
;
}
SMsgCb
;
void
tmsgSetDefaultMsgCb
(
const
SMsgCb
*
pMsgCb
);
int32_t
tmsgPutToQueue
(
const
SMsgCb
*
pMsgCb
,
EQueueType
qtype
,
SRpcMsg
*
pReq
);
int32_t
tmsgGetQueueSize
(
const
SMsgCb
*
pMsgCb
,
int32_t
vgId
,
EQueueType
qtype
);
int32_t
tmsgSendReq
(
const
SMsgCb
*
pMsgCb
,
const
SEpSet
*
epSet
,
SRpcMsg
*
pReq
);
int32_t
tmsgSendMnodeReq
(
const
SMsgCb
*
pMsgCb
,
SRpcMsg
*
pReq
);
void
tmsgSendRsp
(
const
S
MsgCb
*
pMsgCb
,
const
S
RpcMsg
*
pRsp
);
void
tmsgSendRsp
(
const
SRpcMsg
*
pRsp
);
void
tmsgRegisterBrokenLinkArg
(
const
SMsgCb
*
pMsgCb
,
SRpcMsg
*
pMsg
);
void
tmsgReleaseHandle
(
const
SMsgCb
*
pMsgCb
,
void
*
handle
,
int8_t
type
);
void
tmsgReleaseHandle
(
void
*
handle
,
int8_t
type
);
#ifdef __cplusplus
}
...
...
include/common/ttokendef.h
浏览文件 @
5b2d664d
...
...
@@ -139,18 +139,18 @@
#define TK_TOPIC 121
#define TK_AS 122
#define TK_NK_BOOL 123
#define TK_N
K_VARIABLE
124
#define TK_NK_
UNDERLINE
125
#define TK_
ROWTS
126
#define TK_
TBNAME
127
#define TK_
QSTARTTS
128
#define TK_Q
ENDTS
129
#define TK_
WSTARTTS
130
#define TK_W
ENDTS
131
#define TK_W
DURATION
132
#define TK_
BETWEEN
133
#define TK_
IS
134
#define TK_
NULL
135
#define TK_N
ULL
124
#define TK_NK_
VARIABLE
125
#define TK_
NK_UNDERLINE
126
#define TK_
ROWTS
127
#define TK_
TBNAME
128
#define TK_Q
STARTTS
129
#define TK_
QENDTS
130
#define TK_W
STARTTS
131
#define TK_W
ENDTS
132
#define TK_
WDURATION
133
#define TK_
BETWEEN
134
#define TK_
IS
135
#define TK_NK_LT 136
#define TK_NK_GT 137
#define TK_NK_LE 138
...
...
include/libs/executor/executor.h
浏览文件 @
5b2d664d
...
...
@@ -20,8 +20,8 @@
extern
"C"
{
#endif
#include "tcommon.h"
#include "query.h"
#include "tcommon.h"
typedef
void
*
qTaskInfo_t
;
typedef
void
*
DataSinkHandle
;
...
...
@@ -36,7 +36,7 @@ typedef struct SReadHandle {
#define STREAM_DATA_TYPE_SUBMIT_BLOCK 0x1
#define STREAM_DATA_TYPE_SSDATA_BLOCK 0x2
/**
* Create the exec task for streaming mode
* @param pMsg
...
...
@@ -62,7 +62,7 @@ int32_t qSetStreamInput(qTaskInfo_t tinfo, const void* input, int32_t type);
* @param type
* @return
*/
int32_t
qSetMultiStreamInput
(
qTaskInfo_t
tinfo
,
void
*
*
pBlocks
,
size_t
numOfBlocks
,
int32_t
type
);
int32_t
qSetMultiStreamInput
(
qTaskInfo_t
tinfo
,
const
void
*
pBlocks
,
size_t
numOfBlocks
,
int32_t
type
);
/**
* Update the table id list, add or remove.
...
...
@@ -167,7 +167,6 @@ int32_t qUpdateQueriedTableIdList(qTaskInfo_t tinfo, int64_t uid, int32_t type);
*/
void
**
qReleaseTask
(
void
*
pMgmt
,
void
*
pQInfo
,
bool
freeHandle
);
void
qProcessFetchRsp
(
void
*
parent
,
struct
SRpcMsg
*
pMsg
,
struct
SEpSet
*
pEpSet
);
#ifdef __cplusplus
...
...
include/os/os.h
浏览文件 @
5b2d664d
...
...
@@ -42,6 +42,9 @@ extern "C" {
#include <sys/types.h>
#include <termios.h>
#include <sys/statvfs.h>
#include <sys/prctl.h>
#include <sys/shm.h>
#include <sys/wait.h>
#if defined(DARWIN)
#else
...
...
include/util/taoserror.h
浏览文件 @
5b2d664d
...
...
@@ -16,7 +16,7 @@
#ifndef _TD_UTIL_TAOS_ERROR_H_
#define _TD_UTIL_TAOS_ERROR_H_
#include
"os.h"
#include
<stdint.h>
#ifdef __cplusplus
extern
"C"
{
...
...
include/util/tprocess.h
浏览文件 @
5b2d664d
...
...
@@ -22,7 +22,7 @@
extern
"C"
{
#endif
typedef
enum
{
PROC_REQ
,
PROC_RSP
,
PROC_REG
ISTER
}
ProcFuncType
;
typedef
enum
{
PROC_REQ
,
PROC_RSP
,
PROC_REG
,
PROC_RELEASE
}
ProcFuncType
;
typedef
struct
SProcQueue
SProcQueue
;
typedef
struct
SProcObj
SProcObj
;
...
...
source/client/src/clientMain.c
浏览文件 @
5b2d664d
#include "os.h"
#include "tref.h"
#include "trpc.h"
/*
* Copyright (c) 2019 TAOS Data, Inc. <jhtao@taosdata.com>
*
* This program is free software: you can use, redistribute, and/or modify
* it under the terms of the GNU Affero General Public License, version 3
* or later ("AGPL"), as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "catalog.h"
#include "clientInt.h"
#include "clientLog.h"
#include "os.h"
#include "query.h"
#include "tmsg.h"
#include "tglobal.h"
#include "catalog.h"
#include "tmsg.h"
#include "tref.h"
#include "trpc.h"
#include "version.h"
#define TSC_VAR_NOT_RELEASE 1
...
...
@@ -24,7 +39,7 @@ int taos_options(TSDB_OPTION option, const void *arg, ...) {
}
}
int
ret
=
taos_options_imp
(
option
,
(
const
char
*
)
arg
);
int
ret
=
taos_options_imp
(
option
,
(
const
char
*
)
arg
);
atomic_store_32
(
&
lock
,
0
);
return
ret
;
}
...
...
@@ -69,13 +84,13 @@ TAOS *taos_connect(const char *ip, const char *user, const char *pass, const cha
return
taos_connect_internal
(
ip
,
user
,
pass
,
NULL
,
db
,
port
);
}
void
taos_close
(
TAOS
*
taos
)
{
void
taos_close
(
TAOS
*
taos
)
{
if
(
taos
==
NULL
)
{
return
;
}
STscObj
*
pTscObj
=
(
STscObj
*
)
taos
;
tscDebug
(
"0x%"
PRIx64
" try to close connection, numOfReq:%d"
,
pTscObj
->
id
,
pTscObj
->
numOfReqs
);
tscDebug
(
"0x%"
PRIx64
" try to close connection, numOfReq:%d"
,
pTscObj
->
id
,
pTscObj
->
numOfReqs
);
/*taosRemoveRef(clientConnRefPool, pTscObj->id);*/
}
...
...
@@ -85,48 +100,46 @@ int taos_errno(TAOS_RES *tres) {
return
terrno
;
}
return
((
SRequestObj
*
)
tres
)
->
code
;
return
((
SRequestObj
*
)
tres
)
->
code
;
}
const
char
*
taos_errstr
(
TAOS_RES
*
res
)
{
SRequestObj
*
pRequest
=
(
SRequestObj
*
)
res
;
SRequestObj
*
pRequest
=
(
SRequestObj
*
)
res
;
if
(
pRequest
==
NULL
)
{
return
(
const
char
*
)
tstrerror
(
terrno
);
return
(
const
char
*
)
tstrerror
(
terrno
);
}
if
(
strlen
(
pRequest
->
msgBuf
)
>
0
||
pRequest
->
code
==
TSDB_CODE_RPC_FQDN_ERROR
)
{
return
pRequest
->
msgBuf
;
}
else
{
return
(
const
char
*
)
tstrerror
(
pRequest
->
code
);
return
(
const
char
*
)
tstrerror
(
pRequest
->
code
);
}
}
void
taos_free_result
(
TAOS_RES
*
res
)
{
SRequestObj
*
pRequest
=
(
SRequestObj
*
)
res
;
SRequestObj
*
pRequest
=
(
SRequestObj
*
)
res
;
destroyRequest
(
pRequest
);
}
int
taos_field_count
(
TAOS_RES
*
res
)
{
int
taos_field_count
(
TAOS_RES
*
res
)
{
if
(
res
==
NULL
)
{
return
0
;
}
SRequestObj
*
pRequest
=
(
SRequestObj
*
)
res
;
SReqResultInfo
*
pResInfo
=
&
pRequest
->
body
.
resInfo
;
SRequestObj
*
pRequest
=
(
SRequestObj
*
)
res
;
SReqResultInfo
*
pResInfo
=
&
pRequest
->
body
.
resInfo
;
return
pResInfo
->
numOfCols
;
}
int
taos_num_fields
(
TAOS_RES
*
res
)
{
return
taos_field_count
(
res
);
}
int
taos_num_fields
(
TAOS_RES
*
res
)
{
return
taos_field_count
(
res
);
}
TAOS_FIELD
*
taos_fetch_fields
(
TAOS_RES
*
res
)
{
if
(
taos_num_fields
(
res
)
==
0
)
{
return
NULL
;
}
SReqResultInfo
*
pResInfo
=
&
(((
SRequestObj
*
)
res
)
->
body
.
resInfo
);
SReqResultInfo
*
pResInfo
=
&
(((
SRequestObj
*
)
res
)
->
body
.
resInfo
);
return
pResInfo
->
fields
;
}
...
...
@@ -135,7 +148,7 @@ TAOS_RES *taos_query(TAOS *taos, const char *sql) {
return
NULL
;
}
return
taos_query_l
(
taos
,
sql
,
(
int32_t
)
strlen
(
sql
));
return
taos_query_l
(
taos
,
sql
,
(
int32_t
)
strlen
(
sql
));
}
TAOS_ROW
taos_fetch_row
(
TAOS_RES
*
res
)
{
...
...
@@ -143,18 +156,16 @@ TAOS_ROW taos_fetch_row(TAOS_RES *res) {
return
NULL
;
}
SRequestObj
*
pRequest
=
(
SRequestObj
*
)
res
;
if
(
pRequest
->
type
==
TSDB_SQL_RETRIEVE_EMPTY_RESULT
||
pRequest
->
type
==
TSDB_SQL_INSERT
||
pRequest
->
code
!=
TSDB_CODE_SUCCESS
||
taos_num_fields
(
res
)
==
0
)
{
SRequestObj
*
pRequest
=
(
SRequestObj
*
)
res
;
if
(
pRequest
->
type
==
TSDB_SQL_RETRIEVE_EMPTY_RESULT
||
pRequest
->
type
==
TSDB_SQL_INSERT
||
pRequest
->
code
!=
TSDB_CODE_SUCCESS
||
taos_num_fields
(
res
)
==
0
)
{
return
NULL
;
}
return
doFetchRow
(
pRequest
,
true
);
}
int
taos_print_row
(
char
*
str
,
TAOS_ROW
row
,
TAOS_FIELD
*
fields
,
int
num_fields
)
{
int
taos_print_row
(
char
*
str
,
TAOS_ROW
row
,
TAOS_FIELD
*
fields
,
int
num_fields
)
{
int32_t
len
=
0
;
for
(
int
i
=
0
;
i
<
num_fields
;
++
i
)
{
if
(
i
>
0
)
{
...
...
@@ -213,7 +224,7 @@ int taos_print_row(char *str, TAOS_ROW row, TAOS_FIELD *fields, int num_fields)
case
TSDB_DATA_TYPE_BINARY
:
case
TSDB_DATA_TYPE_NCHAR
:
{
int32_t
charLen
=
varDataLen
((
char
*
)
row
[
i
]
-
VARSTR_HEADER_SIZE
);
int32_t
charLen
=
varDataLen
((
char
*
)
row
[
i
]
-
VARSTR_HEADER_SIZE
);
if
(
fields
[
i
].
type
==
TSDB_DATA_TYPE_BINARY
)
{
assert
(
charLen
<=
fields
[
i
].
bytes
&&
charLen
>=
0
);
}
else
{
...
...
@@ -238,31 +249,44 @@ int taos_print_row(char *str, TAOS_ROW row, TAOS_FIELD *fields, int num_fields)
return
len
;
}
int
*
taos_fetch_lengths
(
TAOS_RES
*
res
)
{
int
*
taos_fetch_lengths
(
TAOS_RES
*
res
)
{
if
(
res
==
NULL
)
{
return
NULL
;
}
return
((
SRequestObj
*
)
res
)
->
body
.
resInfo
.
length
;
return
((
SRequestObj
*
)
res
)
->
body
.
resInfo
.
length
;
}
// todo intergrate with tDataTypes
const
char
*
taos_data_type
(
int
type
)
{
switch
(
type
)
{
case
TSDB_DATA_TYPE_NULL
:
return
"TSDB_DATA_TYPE_NULL"
;
case
TSDB_DATA_TYPE_BOOL
:
return
"TSDB_DATA_TYPE_BOOL"
;
case
TSDB_DATA_TYPE_TINYINT
:
return
"TSDB_DATA_TYPE_TINYINT"
;
case
TSDB_DATA_TYPE_SMALLINT
:
return
"TSDB_DATA_TYPE_SMALLINT"
;
case
TSDB_DATA_TYPE_INT
:
return
"TSDB_DATA_TYPE_INT"
;
case
TSDB_DATA_TYPE_BIGINT
:
return
"TSDB_DATA_TYPE_BIGINT"
;
case
TSDB_DATA_TYPE_FLOAT
:
return
"TSDB_DATA_TYPE_FLOAT"
;
case
TSDB_DATA_TYPE_DOUBLE
:
return
"TSDB_DATA_TYPE_DOUBLE"
;
case
TSDB_DATA_TYPE_VARCHAR
:
return
"TSDB_DATA_TYPE_VARCHAR"
;
// case TSDB_DATA_TYPE_BINARY: return "TSDB_DATA_TYPE_VARCHAR";
case
TSDB_DATA_TYPE_TIMESTAMP
:
return
"TSDB_DATA_TYPE_TIMESTAMP"
;
case
TSDB_DATA_TYPE_NCHAR
:
return
"TSDB_DATA_TYPE_NCHAR"
;
case
TSDB_DATA_TYPE_JSON
:
return
"TSDB_DATA_TYPE_JSON"
;
default:
return
"UNKNOWN"
;
case
TSDB_DATA_TYPE_NULL
:
return
"TSDB_DATA_TYPE_NULL"
;
case
TSDB_DATA_TYPE_BOOL
:
return
"TSDB_DATA_TYPE_BOOL"
;
case
TSDB_DATA_TYPE_TINYINT
:
return
"TSDB_DATA_TYPE_TINYINT"
;
case
TSDB_DATA_TYPE_SMALLINT
:
return
"TSDB_DATA_TYPE_SMALLINT"
;
case
TSDB_DATA_TYPE_INT
:
return
"TSDB_DATA_TYPE_INT"
;
case
TSDB_DATA_TYPE_BIGINT
:
return
"TSDB_DATA_TYPE_BIGINT"
;
case
TSDB_DATA_TYPE_FLOAT
:
return
"TSDB_DATA_TYPE_FLOAT"
;
case
TSDB_DATA_TYPE_DOUBLE
:
return
"TSDB_DATA_TYPE_DOUBLE"
;
case
TSDB_DATA_TYPE_VARCHAR
:
return
"TSDB_DATA_TYPE_VARCHAR"
;
// case TSDB_DATA_TYPE_BINARY: return "TSDB_DATA_TYPE_VARCHAR";
case
TSDB_DATA_TYPE_TIMESTAMP
:
return
"TSDB_DATA_TYPE_TIMESTAMP"
;
case
TSDB_DATA_TYPE_NCHAR
:
return
"TSDB_DATA_TYPE_NCHAR"
;
case
TSDB_DATA_TYPE_JSON
:
return
"TSDB_DATA_TYPE_JSON"
;
default:
return
"UNKNOWN"
;
}
}
...
...
@@ -273,8 +297,8 @@ int taos_affected_rows(TAOS_RES *res) {
return
0
;
}
SRequestObj
*
pRequest
=
(
SRequestObj
*
)
res
;
SReqResultInfo
*
pResInfo
=
&
pRequest
->
body
.
resInfo
;
SRequestObj
*
pRequest
=
(
SRequestObj
*
)
res
;
SReqResultInfo
*
pResInfo
=
&
pRequest
->
body
.
resInfo
;
return
pResInfo
->
numOfRows
;
}
...
...
@@ -295,8 +319,8 @@ int taos_select_db(TAOS *taos, const char *db) {
char
sql
[
256
]
=
{
0
};
snprintf
(
sql
,
tListLen
(
sql
),
"use %s"
,
db
);
TAOS_RES
*
pRequest
=
taos_query
(
taos
,
sql
);
int32_t
code
=
taos_errno
(
pRequest
);
TAOS_RES
*
pRequest
=
taos_query
(
taos
,
sql
);
int32_t
code
=
taos_errno
(
pRequest
);
taos_free_result
(
pRequest
);
return
code
;
...
...
@@ -307,61 +331,57 @@ void taos_stop_query(TAOS_RES *res) {
return
;
}
SRequestObj
*
pRequest
=
(
SRequestObj
*
)
res
;
int32_t
numOfFields
=
taos_num_fields
(
pRequest
);
SRequestObj
*
pRequest
=
(
SRequestObj
*
)
res
;
int32_t
numOfFields
=
taos_num_fields
(
pRequest
);
// It is not a query, no need to stop.
if
(
numOfFields
==
0
)
{
return
;
}
// scheduleCancelJob(pRequest->body.pQueryJob);
// scheduleCancelJob(pRequest->body.pQueryJob);
}
bool
taos_is_null
(
TAOS_RES
*
res
,
int32_t
row
,
int32_t
col
)
{
SRequestObj
*
pRequestObj
=
res
;
SReqResultInfo
*
pResultInfo
=
&
pRequestObj
->
body
.
resInfo
;
SRequestObj
*
pRequestObj
=
res
;
SReqResultInfo
*
pResultInfo
=
&
pRequestObj
->
body
.
resInfo
;
if
(
col
>=
pResultInfo
->
numOfCols
||
col
<
0
||
row
>=
pResultInfo
->
numOfRows
||
row
<
0
)
{
return
true
;
}
SResultColumn
*
pCol
=
&
pRequestObj
->
body
.
resInfo
.
pCol
[
col
];
SResultColumn
*
pCol
=
&
pRequestObj
->
body
.
resInfo
.
pCol
[
col
];
return
colDataIsNull_f
(
pCol
->
nullbitmap
,
row
);
}
int
taos_fetch_block
(
TAOS_RES
*
res
,
TAOS_ROW
*
rows
)
{
int
taos_fetch_block
(
TAOS_RES
*
res
,
TAOS_ROW
*
rows
)
{
if
(
res
==
NULL
)
{
return
0
;
}
SRequestObj
*
pRequest
=
(
SRequestObj
*
)
res
;
if
(
pRequest
->
type
==
TSDB_SQL_RETRIEVE_EMPTY_RESULT
||
pRequest
->
type
==
TSDB_SQL_INSERT
||
pRequest
->
code
!=
TSDB_CODE_SUCCESS
||
taos_num_fields
(
res
)
==
0
)
{
SRequestObj
*
pRequest
=
(
SRequestObj
*
)
res
;
if
(
pRequest
->
type
==
TSDB_SQL_RETRIEVE_EMPTY_RESULT
||
pRequest
->
type
==
TSDB_SQL_INSERT
||
pRequest
->
code
!=
TSDB_CODE_SUCCESS
||
taos_num_fields
(
res
)
==
0
)
{
return
0
;
}
doFetchRow
(
pRequest
,
false
);
// TODO refactor
SReqResultInfo
*
pResultInfo
=
&
pRequest
->
body
.
resInfo
;
SReqResultInfo
*
pResultInfo
=
&
pRequest
->
body
.
resInfo
;
pResultInfo
->
current
=
pResultInfo
->
numOfRows
;
*
rows
=
pResultInfo
->
row
;
return
pResultInfo
->
numOfRows
;
}
int
taos_validate_sql
(
TAOS
*
taos
,
const
char
*
sql
)
{
return
true
;
}
int
taos_validate_sql
(
TAOS
*
taos
,
const
char
*
sql
)
{
return
true
;
}
const
char
*
taos_get_server_info
(
TAOS
*
taos
)
{
if
(
taos
==
NULL
)
{
return
NULL
;
}
STscObj
*
pTscObj
=
(
STscObj
*
)
taos
;
STscObj
*
pTscObj
=
(
STscObj
*
)
taos
;
return
pTscObj
->
ver
;
}
...
...
@@ -387,52 +407,67 @@ void taos_unsubscribe(TAOS_SUB *tsub, int keepProgress) {
// TODO
}
TAOS_STMT
*
taos_stmt_init
(
TAOS
*
taos
)
{
// TODO
return
NULL
;
int
taos_load_table_info
(
TAOS
*
taos
,
const
char
*
tableNameList
)
{
// TODO
return
-
1
;
}
int
taos_stmt_close
(
TAOS_STMT
*
stmt
)
{
// TODO
return
-
1
;
TAOS_STMT
*
taos_stmt_init
(
TAOS
*
taos
)
{
// TODO
return
NULL
;
}
int
taos_stmt_execute
(
TAOS_STMT
*
stmt
)
{
// TODO
return
-
1
;
int
taos_stmt_close
(
TAOS_STMT
*
stmt
)
{
// TODO
return
-
1
;
}
int
taos_stmt_execute
(
TAOS_STMT
*
stmt
)
{
// TODO
return
-
1
;
}
char
*
taos_stmt_errstr
(
TAOS_STMT
*
stmt
)
{
// TODO
return
NULL
;
// TODO
return
NULL
;
}
int
taos_stmt_affected_rows
(
TAOS_STMT
*
stmt
)
{
// TODO
return
-
1
;
int
taos_stmt_affected_rows
(
TAOS_STMT
*
stmt
)
{
// TODO
return
-
1
;
}
TAOS_RES
*
taos_schemaless_insert
(
TAOS
*
taos
,
char
*
lines
[],
int
numLines
,
int
protocol
,
int
precision
)
{
// TODO
return
NULL
;
TAOS_RES
*
taos_schemaless_insert
(
TAOS
*
taos
,
char
*
lines
[],
int
numLines
,
int
protocol
,
int
precision
)
{
// TODO
return
NULL
;
}
int
taos_stmt_bind_param
(
TAOS_STMT
*
stmt
,
TAOS_BIND
*
bind
)
{
// TODO
return
-
1
;
int
taos_stmt_bind_param
(
TAOS_STMT
*
stmt
,
TAOS_BIND
*
bind
)
{
// TODO
return
-
1
;
}
int
taos_stmt_prepare
(
TAOS_STMT
*
stmt
,
const
char
*
sql
,
unsigned
long
length
)
{
// TODO
return
-
1
;
int
taos_stmt_prepare
(
TAOS_STMT
*
stmt
,
const
char
*
sql
,
unsigned
long
length
)
{
// TODO
return
-
1
;
}
int
taos_stmt_set_tbname_tags
(
TAOS_STMT
*
stmt
,
const
char
*
name
,
TAOS_BIND
*
tags
)
{
// TODO
return
-
1
;
}
int
taos_stmt_set_tbname
(
TAOS_STMT
*
stmt
,
const
char
*
name
)
{
// TODO
return
-
1
;
}
int
taos_stmt_
set_tbname_tags
(
TAOS_STMT
*
stmt
,
const
char
*
name
,
TAOS_BIND
*
tags
)
{
int
taos_stmt_
is_insert
(
TAOS_STMT
*
stmt
,
int
*
insert
)
{
// TODO
return
-
1
;
}
int
taos_stmt_
set_tbname
(
TAOS_STMT
*
stmt
,
const
char
*
name
)
{
int
taos_stmt_
num_params
(
TAOS_STMT
*
stmt
,
int
*
nums
)
{
// TODO
return
-
1
;
}
...
...
@@ -442,6 +477,11 @@ int taos_stmt_add_batch(TAOS_STMT* stmt) {
return
-
1
;
}
TAOS_RES
*
taos_stmt_use_result
(
TAOS_STMT
*
stmt
)
{
// TODO
return
NULL
;
}
int
taos_stmt_bind_param_batch
(
TAOS_STMT
*
stmt
,
TAOS_MULTI_BIND
*
bind
)
{
// TODO
return
-
1
;
...
...
source/client/src/tmq.c
浏览文件 @
5b2d664d
...
...
@@ -26,6 +26,18 @@
#include "tqueue.h"
#include "tref.h"
typedef
struct
{
int32_t
curBlock
;
int32_t
curRow
;
void
**
uData
;
}
SMqRowIter
;
struct
tmq_message_t
{
SMqPollRsp
msg
;
void
*
vg
;
SMqRowIter
iter
;
};
struct
tmq_list_t
{
SArray
container
;
};
...
...
@@ -99,13 +111,14 @@ typedef struct {
typedef
struct
{
// subscribe info
int32_t
sqlLen
;
char
*
sql
;
char
*
topicName
;
int64_t
topicId
;
int32_t
nextVgIdx
;
SArray
*
vgs
;
// SArray<SMqClientVg>
SSchemaWrapper
schema
;
int32_t
sqlLen
;
char
*
sql
;
char
*
topicName
;
int64_t
topicId
;
SArray
*
vgs
;
// SArray<SMqClientVg>
int8_t
isSchemaAdaptive
;
int32_t
numOfFields
;
TAOS_FIELD
*
fields
;
}
SMqClientTopic
;
typedef
struct
{
...
...
@@ -130,11 +143,11 @@ typedef struct {
}
SMqPollCbParam
;
typedef
struct
{
tmq_t
*
tmq
;
/*SMqClientVg* pVg;*/
tmq_t
*
tmq
;
int32_t
async
;
tsem_t
rspSem
;
tmq_resp_err_t
rspErr
;
/*SMqClientVg* pVg;*/
}
SMqCommitCbParam
;
tmq_conf_t
*
tmq_conf_new
()
{
...
...
@@ -471,7 +484,12 @@ tmq_resp_err_t tmq_subscribe(tmq_t* tmq, tmq_list_t* topic_list) {
tNameExtractFullName
(
&
name
,
topicFname
);
tscDebug
(
"subscribe topic: %s"
,
topicFname
);
SMqClientTopic
topic
=
{
.
nextVgIdx
=
0
,
.
sql
=
NULL
,
.
sqlLen
=
0
,
.
topicId
=
0
,
.
topicName
=
topicFname
,
.
vgs
=
NULL
};
.
sql
=
NULL
,
.
sqlLen
=
0
,
.
topicId
=
0
,
.
topicName
=
topicFname
,
.
vgs
=
NULL
,
};
topic
.
vgs
=
taosArrayInit
(
0
,
sizeof
(
SMqClientVg
));
taosArrayPush
(
tmq
->
clientTopics
,
&
topic
);
taosArrayPush
(
req
.
topicNames
,
&
topicFname
);
...
...
@@ -615,6 +633,7 @@ _return:
return
pRequest
;
}
#if 0
TAOS_RES* tmq_create_topic(TAOS* taos, const char* topicName, const char* sql, int sqlLen) {
STscObj* pTscObj = (STscObj*)taos;
SRequestObj* pRequest = NULL;
...
...
@@ -700,6 +719,7 @@ _return:
return pRequest;
}
#endif
static
char
*
formatTimestamp
(
char
*
buf
,
int64_t
val
,
int
precision
)
{
time_t
tt
;
...
...
source/client/test/tmqTest.cpp
浏览文件 @
5b2d664d
...
...
@@ -35,7 +35,7 @@ int main(int argc, char** argv) {
TEST
(
testCase
,
driverInit_Test
)
{
// taosInitGlobalCfg();
// taos_init();
// taos_init();
}
TEST
(
testCase
,
create_topic_ctb_Test
)
{
...
...
@@ -55,8 +55,9 @@ TEST(testCase, create_topic_ctb_Test) {
taos_free_result
(
pRes
);
char
*
sql
=
"select * from tu"
;
pRes
=
tmq_create_topic
(
pConn
,
"test_ctb_topic_1"
,
sql
,
strlen
(
sql
));
// char* sql = "select * from tu";
// pRes = tmq_create_topic(pConn, "test_ctb_topic_1", sql, strlen(sql));
pRes
=
taos_query
(
pConn
,
"create test_ctb_topic_1 as select * from tu"
);
taos_free_result
(
pRes
);
taos_close
(
pConn
);
}
...
...
@@ -69,7 +70,7 @@ TEST(testCase, create_topic_stb_Test) {
if
(
taos_errno
(
pRes
)
!=
0
)
{
printf
(
"error in use db, reason:%s
\n
"
,
taos_errstr
(
pRes
));
}
//taos_free_result(pRes);
//
taos_free_result(pRes);
TAOS_FIELD
*
pFields
=
taos_fetch_fields
(
pRes
);
ASSERT_TRUE
(
pFields
==
nullptr
);
...
...
@@ -79,8 +80,9 @@ TEST(testCase, create_topic_stb_Test) {
taos_free_result
(
pRes
);
char
*
sql
=
"select * from st1"
;
pRes
=
tmq_create_topic
(
pConn
,
"test_stb_topic_1"
,
sql
,
strlen
(
sql
));
// char* sql = "select * from st1";
// pRes = tmq_create_topic(pConn, "test_stb_topic_1", sql, strlen(sql));
pRes
=
taos_query
(
pConn
,
"create test_ctb_topic_1 as select * from st1"
);
taos_free_result
(
pRes
);
taos_close
(
pConn
);
}
...
...
source/common/src/tmsgcb.c
浏览文件 @
5b2d664d
...
...
@@ -16,6 +16,10 @@
#define _DEFAULT_SOURCE
#include "tmsgcb.h"
static
SMsgCb
tsDefaultMsgCb
;
void
tmsgSetDefaultMsgCb
(
const
SMsgCb
*
pMsgCb
)
{
tsDefaultMsgCb
=
*
pMsgCb
;
}
int32_t
tmsgPutToQueue
(
const
SMsgCb
*
pMsgCb
,
EQueueType
qtype
,
SRpcMsg
*
pReq
)
{
return
(
*
pMsgCb
->
queueFps
[
qtype
])(
pMsgCb
->
pWrapper
,
pReq
);
}
...
...
@@ -32,12 +36,12 @@ int32_t tmsgSendMnodeReq(const SMsgCb* pMsgCb, SRpcMsg* pReq) {
return
(
*
pMsgCb
->
sendMnodeReqFp
)(
pMsgCb
->
pWrapper
,
pReq
);
}
void
tmsgSendRsp
(
const
S
MsgCb
*
pMsgCb
,
const
SRpcMsg
*
pRsp
)
{
return
(
*
pMsgCb
->
sendRspFp
)(
pMsgCb
->
pWrapper
,
pRsp
);
}
void
tmsgSendRsp
(
const
S
RpcMsg
*
pRsp
)
{
return
(
*
tsDefaultMsgCb
.
sendRspFp
)(
tsDefaultMsgCb
.
pWrapper
,
pRsp
);
}
void
tmsgRegisterBrokenLinkArg
(
const
SMsgCb
*
pMsgCb
,
SRpcMsg
*
pMsg
)
{
(
*
pMsgCb
->
registerBrokenLinkArgFp
)(
pMsgCb
->
pWrapper
,
pMsg
);
}
void
tmsgReleaseHandle
(
const
SMsgCb
*
pMsgCb
,
void
*
handle
,
int8_t
type
)
{
(
*
pMsgCb
->
releaseHandleFp
)(
pMsgCb
->
pWrapper
,
handle
,
type
);
void
tmsgReleaseHandle
(
void
*
handle
,
int8_t
type
)
{
(
*
tsDefaultMsgCb
.
releaseHandleFp
)(
tsDefaultMsgCb
.
pWrapper
,
handle
,
type
);
}
\ No newline at end of file
source/dnode/mgmt/CMakeLists.txt
浏览文件 @
5b2d664d
aux_source_directory
(
src DNODE_SRC
)
aux_source_directory
(
dnode/src DNODE_SRC
)
aux_source_directory
(
qnode/src DNODE_SRC
)
aux_source_directory
(
bnode/src DNODE_SRC
)
aux_source_directory
(
snode/src DNODE_SRC
)
aux_source_directory
(
vnode/src DNODE_SRC
)
aux_source_directory
(
mnode/src DNODE_SRC
)
aux_source_directory
(
container/src DNODE_SRC
)
aux_source_directory
(
dm/src DNODE_SRC
)
aux_source_directory
(
qm/src DNODE_SRC
)
aux_source_directory
(
bm/src DNODE_SRC
)
aux_source_directory
(
sm/src DNODE_SRC
)
aux_source_directory
(
vm/src DNODE_SRC
)
aux_source_directory
(
mm/src DNODE_SRC
)
aux_source_directory
(
main/src DNODE_SRC
)
add_library
(
dnode STATIC
${
DNODE_SRC
}
)
target_link_libraries
(
dnode cjson mnode vnode qnode snode bnode wal sync taos tfs monitor
...
...
@@ -14,16 +12,22 @@ target_link_libraries(
target_include_directories
(
dnode
PUBLIC
"
${
CMAKE_SOURCE_DIR
}
/include/dnode/mgmt"
PRIVATE
"
${
CMAKE_CURRENT_SOURCE_DIR
}
/d
node
/inc"
PRIVATE
"
${
CMAKE_CURRENT_SOURCE_DIR
}
/q
node
/inc"
PRIVATE
"
${
CMAKE_CURRENT_SOURCE_DIR
}
/b
node
/inc"
PRIVATE
"
${
CMAKE_CURRENT_SOURCE_DIR
}
/s
node
/inc"
PRIVATE
"
${
CMAKE_CURRENT_SOURCE_DIR
}
/v
node
/inc"
PRIVATE
"
${
CMAKE_CURRENT_SOURCE_DIR
}
/m
node
/inc"
PRIVATE
"
${
CMAKE_CURRENT_SOURCE_DIR
}
/
container
/inc"
PRIVATE
"
${
CMAKE_CURRENT_SOURCE_DIR
}
/d
m
/inc"
PRIVATE
"
${
CMAKE_CURRENT_SOURCE_DIR
}
/q
m
/inc"
PRIVATE
"
${
CMAKE_CURRENT_SOURCE_DIR
}
/b
m
/inc"
PRIVATE
"
${
CMAKE_CURRENT_SOURCE_DIR
}
/s
m
/inc"
PRIVATE
"
${
CMAKE_CURRENT_SOURCE_DIR
}
/v
m
/inc"
PRIVATE
"
${
CMAKE_CURRENT_SOURCE_DIR
}
/m
m
/inc"
PRIVATE
"
${
CMAKE_CURRENT_SOURCE_DIR
}
/
main
/inc"
)
add_subdirectory
(
main
)
aux_source_directory
(
main/exe EXEC_SRC
)
add_executable
(
taosd
${
EXEC_SRC
}
)
target_include_directories
(
taosd
PRIVATE
"
${
CMAKE_CURRENT_SOURCE_DIR
}
/main/inc"
)
target_link_libraries
(
taosd dnode
)
if
(
${
BUILD_TEST
}
)
add_subdirectory
(
test
)
...
...
source/dnode/mgmt/b
node
/inc/bm.h
→
source/dnode/mgmt/b
m
/inc/bm.h
浏览文件 @
5b2d664d
文件已移动
source/dnode/mgmt/b
node
/inc/bmInt.h
→
source/dnode/mgmt/b
m
/inc/bmInt.h
浏览文件 @
5b2d664d
文件已移动
source/dnode/mgmt/b
node
/src/bmInt.c
→
source/dnode/mgmt/b
m
/src/bmInt.c
浏览文件 @
5b2d664d
文件已移动
source/dnode/mgmt/b
node
/src/bmMsg.c
→
source/dnode/mgmt/b
m
/src/bmMsg.c
浏览文件 @
5b2d664d
文件已移动
source/dnode/mgmt/b
node
/src/bmWorker.c
→
source/dnode/mgmt/b
m
/src/bmWorker.c
浏览文件 @
5b2d664d
文件已移动
source/dnode/mgmt/d
node
/inc/dm.h
→
source/dnode/mgmt/d
m
/inc/dm.h
浏览文件 @
5b2d664d
文件已移动
source/dnode/mgmt/d
node
/inc/dmInt.h
→
source/dnode/mgmt/d
m
/inc/dmInt.h
浏览文件 @
5b2d664d
文件已移动
source/dnode/mgmt/d
node
/src/dmFile.c
→
source/dnode/mgmt/d
m
/src/dmFile.c
浏览文件 @
5b2d664d
文件已移动
source/dnode/mgmt/d
node
/src/dmInt.c
→
source/dnode/mgmt/d
m
/src/dmInt.c
浏览文件 @
5b2d664d
文件已移动
source/dnode/mgmt/d
node
/src/dmMsg.c
→
source/dnode/mgmt/d
m
/src/dmMsg.c
浏览文件 @
5b2d664d
文件已移动
source/dnode/mgmt/d
node
/src/dmWorker.c
→
source/dnode/mgmt/d
m
/src/dmWorker.c
浏览文件 @
5b2d664d
文件已移动
source/dnode/mgmt/main/CMakeLists.txt
已删除
100644 → 0
浏览文件 @
bceb5578
aux_source_directory
(
src EXEC_SRC
)
add_executable
(
taosd
${
EXEC_SRC
}
)
target_include_directories
(
taosd
PRIVATE
"
${
CMAKE_CURRENT_SOURCE_DIR
}
/inc"
)
target_link_libraries
(
taosd dnode
)
source/dnode/mgmt/main/
src
/dndMain.c
→
source/dnode/mgmt/main/
exe
/dndMain.c
浏览文件 @
5b2d664d
...
...
@@ -14,16 +14,19 @@
*/
#define _DEFAULT_SOURCE
#include "dndMain.h"
#include "dnd.h"
#include "tconfig.h"
static
struct
{
bool
dumpConfig
;
bool
generateGrant
;
bool
printAuth
;
bool
printVersion
;
char
envFile
[
PATH_MAX
];
char
apolloUrl
[
PATH_MAX
];
SDnode
*
pDnode
;
bool
dumpConfig
;
bool
generateGrant
;
bool
printAuth
;
bool
printVersion
;
char
envFile
[
PATH_MAX
];
char
apolloUrl
[
PATH_MAX
];
SArray
*
pArgs
;
// SConfigPair
SDnode
*
pDnode
;
ENodeType
ntype
;
}
global
=
{
0
};
static
void
dndSigintHandle
(
int
signum
,
void
*
info
,
void
*
ctx
)
{
...
...
@@ -42,7 +45,7 @@ static void dndSetSignalHandle() {
taosSetSignal
(
SIGBREAK
,
dndSigintHandle
);
}
static
int32_t
dndParse
Option
(
int32_t
argc
,
char
const
*
argv
[])
{
static
int32_t
dndParse
Args
(
int32_t
argc
,
char
const
*
argv
[])
{
for
(
int32_t
i
=
1
;
i
<
argc
;
++
i
)
{
if
(
strcmp
(
argv
[
i
],
"-c"
)
==
0
)
{
if
(
i
<
argc
-
1
)
{
...
...
@@ -55,10 +58,16 @@ static int32_t dndParseOption(int32_t argc, char const *argv[]) {
printf
(
"'-c' requires a parameter, default is %s
\n
"
,
configDir
);
return
-
1
;
}
}
else
if
(
strcmp
(
argv
[
i
],
"-C"
)
==
0
)
{
global
.
dumpConfig
=
true
;
}
else
if
(
strcmp
(
argv
[
i
],
"-a"
)
==
0
)
{
tstrncpy
(
global
.
apolloUrl
,
argv
[
++
i
],
PATH_MAX
);
}
else
if
(
strcmp
(
argv
[
i
],
"-e"
)
==
0
)
{
tstrncpy
(
global
.
envFile
,
argv
[
++
i
],
PATH_MAX
);
}
else
if
(
strcmp
(
argv
[
i
],
"-k"
)
==
0
)
{
global
.
generateGrant
=
true
;
}
else
if
(
strcmp
(
argv
[
i
],
"-n"
)
==
0
)
{
global
.
ntype
=
atoi
(
argv
[
++
i
]);
}
else
if
(
strcmp
(
argv
[
i
],
"-C"
)
==
0
)
{
global
.
dumpConfig
=
true
;
}
else
if
(
strcmp
(
argv
[
i
],
"-V"
)
==
0
)
{
global
.
printVersion
=
true
;
}
else
{
...
...
@@ -68,15 +77,65 @@ static int32_t dndParseOption(int32_t argc, char const *argv[]) {
return
0
;
}
static
void
dndGenerateGrant
()
{
// grantParseParameter();
printf
(
"this feature is not implemented yet
\n
"
);
}
static
void
dndPrintVersion
()
{
#ifdef TD_ENTERPRISE
char
*
releaseName
=
"enterprise"
;
#else
char
*
releaseName
=
"community"
;
#endif
printf
(
"%s version: %s compatible_version: %s
\n
"
,
releaseName
,
version
,
compatible_version
);
printf
(
"gitinfo: %s
\n
"
,
gitinfo
);
printf
(
"buildInfo: %s
\n
"
,
buildinfo
);
}
static
void
dndDumpCfg
()
{
SConfig
*
pCfg
=
taosGetCfg
();
cfgDumpCfg
(
pCfg
,
0
,
1
);
}
static
SDnodeOpt
dndGetOpt
()
{
SConfig
*
pCfg
=
taosGetCfg
();
SDnodeOpt
option
=
{
0
};
option
.
numOfSupportVnodes
=
cfgGetItem
(
pCfg
,
"supportVnodes"
)
->
i32
;
tstrncpy
(
option
.
dataDir
,
tsDataDir
,
sizeof
(
option
.
dataDir
));
tstrncpy
(
option
.
firstEp
,
tsFirst
,
sizeof
(
option
.
firstEp
));
tstrncpy
(
option
.
secondEp
,
tsSecond
,
sizeof
(
option
.
firstEp
));
option
.
serverPort
=
tsServerPort
;
tstrncpy
(
option
.
localFqdn
,
tsLocalFqdn
,
sizeof
(
option
.
localFqdn
));
snprintf
(
option
.
localEp
,
sizeof
(
option
.
localEp
),
"%s:%u"
,
option
.
localFqdn
,
option
.
serverPort
);
option
.
pDisks
=
tsDiskCfg
;
option
.
numOfDisks
=
tsDiskCfgNum
;
return
option
;
}
static
int32_t
dndInitLog
()
{
char
logName
[
12
]
=
{
0
};
snprintf
(
logName
,
sizeof
(
logName
),
"%slog"
,
dndNodeLogStr
(
global
.
ntype
));
return
taosCreateLog
(
logName
,
1
,
configDir
,
global
.
envFile
,
global
.
apolloUrl
,
global
.
pArgs
,
0
);
}
static
void
dndSetProcName
(
char
**
argv
)
{
if
(
global
.
ntype
!=
0
)
{
const
char
*
name
=
dndNodeProcStr
(
global
.
ntype
);
prctl
(
PR_SET_NAME
,
name
);
strcpy
(
argv
[
0
],
name
);
}
}
static
int32_t
dndRunDnode
()
{
if
(
dndInit
()
!=
0
)
{
d
Info
(
"failed to initialize dnod
e environment since %s"
,
terrstr
());
d
Error
(
"failed to initializ
e environment since %s"
,
terrstr
());
return
-
1
;
}
SDnodeOpt
option
=
dndGetOpt
();
SDnode
*
pDnode
=
dndCreate
(
&
option
);
SDnode
*
pDnode
=
dndCreate
(
&
option
);
if
(
pDnode
==
NULL
)
{
dError
(
"failed to to create dnode object since %s"
,
terrstr
());
return
-
1
;
...
...
@@ -85,9 +144,9 @@ static int32_t dndRunDnode() {
dndSetSignalHandle
();
}
dInfo
(
"start the
TDengine
service"
);
dInfo
(
"start the service"
);
int32_t
code
=
dndRun
(
pDnode
);
dInfo
(
"start shutting down the
TDengine
service"
);
dInfo
(
"start shutting down the service"
);
global
.
pDnode
=
NULL
;
dndClose
(
pDnode
);
...
...
@@ -99,11 +158,12 @@ static int32_t dndRunDnode() {
int
main
(
int
argc
,
char
const
*
argv
[])
{
if
(
!
taosCheckSystemIsSmallEnd
())
{
dError
(
"failed to start TDengine since on non-small-end machines
"
);
printf
(
"failed to start since on non-small-end machines
\n
"
);
return
-
1
;
}
if
(
dndParseOption
(
argc
,
argv
)
!=
0
)
{
if
(
dndParseArgs
(
argc
,
argv
)
!=
0
)
{
printf
(
"failed to start since parse args error
\n
"
);
return
-
1
;
}
...
...
@@ -117,13 +177,13 @@ int main(int argc, char const *argv[]) {
return
0
;
}
if
(
taosCreateLog
(
"taosdlog"
,
1
,
configDir
,
global
.
envFile
,
global
.
apolloUrl
,
NULL
,
0
)
!=
0
)
{
dError
(
"failed to start TDengine since read log config error
"
);
if
(
dndInitLog
(
)
!=
0
)
{
printf
(
"failed to start since init log error
\n
"
);
return
-
1
;
}
if
(
taosInitCfg
(
configDir
,
global
.
envFile
,
global
.
apolloUrl
,
NULL
,
0
)
!=
0
)
{
dError
(
"failed to start
TDengine
since read config error"
);
if
(
taosInitCfg
(
configDir
,
global
.
envFile
,
global
.
apolloUrl
,
global
.
pArgs
,
0
)
!=
0
)
{
dError
(
"failed to start since read config error"
);
return
-
1
;
}
...
...
@@ -134,5 +194,6 @@ int main(int argc, char const *argv[]) {
return
0
;
}
dndSetProcName
((
char
**
)
argv
);
return
dndRunDnode
();
}
source/dnode/mgmt/
container
/inc/dnd.h
→
source/dnode/mgmt/
main
/inc/dnd.h
浏览文件 @
5b2d664d
...
...
@@ -33,6 +33,7 @@
#include "tthread.h"
#include "ttime.h"
#include "tworker.h"
#include "tmsgcb.h"
#include "dnode.h"
#include "monitor.h"
...
...
@@ -130,16 +131,19 @@ typedef struct SDnode {
SMgmtWrapper
wrappers
[
NODE_MAX
];
}
SDnode
;
EDndStatus
dndGetStatus
(
SDnode
*
pDnode
);
void
dndSetStatus
(
SDnode
*
pDnode
,
EDndStatus
stat
);
void
dndSetMsgHandle
(
SMgmtWrapper
*
pWrapper
,
int32_t
msgType
,
NodeMsgFp
nodeMsgFp
,
int32_t
vgId
);
void
dndReportStartup
(
SDnode
*
pDnode
,
const
char
*
pName
,
const
char
*
pDesc
);
void
dndSendMonitorReport
(
SDnode
*
pDnode
);
const
char
*
dndNodeLogStr
(
ENodeType
ntype
);
const
char
*
dndNodeProcStr
(
ENodeType
ntype
);
EDndStatus
dndGetStatus
(
SDnode
*
pDnode
);
void
dndSetStatus
(
SDnode
*
pDnode
,
EDndStatus
stat
);
void
dndSetMsgHandle
(
SMgmtWrapper
*
pWrapper
,
int32_t
msgType
,
NodeMsgFp
nodeMsgFp
,
int32_t
vgId
);
void
dndReportStartup
(
SDnode
*
pDnode
,
const
char
*
pName
,
const
char
*
pDesc
);
void
dndSendMonitorReport
(
SDnode
*
pDnode
);
int32_t
dndSendReqToMnode
(
SMgmtWrapper
*
pWrapper
,
SRpcMsg
*
pMsg
);
int32_t
dndSendReqToDnode
(
SMgmtWrapper
*
pWrapper
,
const
SEpSet
*
pEpSet
,
SRpcMsg
*
pMsg
);
void
dndSendRsp
(
SMgmtWrapper
*
pWrapper
,
const
SRpcMsg
*
pRsp
);
void
dndRegisterBrokenLinkArg
(
SMgmtWrapper
*
pWrapper
,
SRpcMsg
*
pMsg
);
SMsgCb
dndCreateMsgcb
(
SMgmtWrapper
*
pWrapper
);
int32_t
dndProcessNodeMsg
(
SDnode
*
pDnode
,
SNodeMsg
*
pMsg
);
int32_t
dndReadFile
(
SMgmtWrapper
*
pWrapper
,
bool
*
pDeployed
);
...
...
source/dnode/mgmt/
container
/inc/dndInt.h
→
source/dnode/mgmt/
main
/inc/dndInt.h
浏览文件 @
5b2d664d
文件已移动
source/dnode/mgmt/main/inc/dndMain.h
已删除
100644 → 0
浏览文件 @
bceb5578
/*
* Copyright (c) 2019 TAOS Data, Inc. <jhtao@taosdata.com>
*
* This program is free software: you can use, redistribute, and/or modify
* it under the terms of the GNU Affero General Public License, version 3
* or later ("AGPL"), as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef _TD_DND_MAIN_H_
#define _TD_DND_MAIN_H_
#include "dnode.h"
#include "taoserror.h"
#include "tconfig.h"
#include "tglobal.h"
#include "tlog.h"
#include "version.h"
#ifdef __cplusplus
extern
"C"
{
#endif
#define dFatal(...) { if (dDebugFlag & DEBUG_FATAL) { taosPrintLog("DND FATAL ", DEBUG_FATAL, 255, __VA_ARGS__); }}
#define dError(...) { if (dDebugFlag & DEBUG_ERROR) { taosPrintLog("DND ERROR ", DEBUG_ERROR, 255, __VA_ARGS__); }}
#define dWarn(...) { if (dDebugFlag & DEBUG_WARN) { taosPrintLog("DND WARN ", DEBUG_WARN, 255, __VA_ARGS__); }}
#define dInfo(...) { if (dDebugFlag & DEBUG_INFO) { taosPrintLog("DND ", DEBUG_INFO, 255, __VA_ARGS__); }}
#define dDebug(...) { if (dDebugFlag & DEBUG_DEBUG) { taosPrintLog("DND ", DEBUG_DEBUG, dDebugFlag, __VA_ARGS__); }}
#define dTrace(...) { if (dDebugFlag & DEBUG_TRACE) { taosPrintLog("DND ", DEBUG_TRACE, dDebugFlag, __VA_ARGS__); }}
void
dndDumpCfg
();
void
dndPrintVersion
();
void
dndGenerateGrant
();
SDnodeOpt
dndGetOpt
();
#ifdef __cplusplus
}
#endif
#endif
/*_TD_DND_MAIN_H_*/
source/dnode/mgmt/
container
/src/dndExec.c
→
source/dnode/mgmt/
main
/src/dndExec.c
浏览文件 @
5b2d664d
...
...
@@ -77,6 +77,8 @@ static int32_t dndRunInSingleProcess(SDnode *pDnode) {
SMgmtWrapper
*
pWrapper
=
&
pDnode
->
wrappers
[
n
];
pWrapper
->
required
=
dndRequireNode
(
pWrapper
);
if
(
!
pWrapper
->
required
)
continue
;
SMsgCb
msgCb
=
dndCreateMsgcb
(
pWrapper
);
tmsgSetDefaultMsgCb
(
&
msgCb
);
if
(
taosMkDir
(
pWrapper
->
path
)
!=
0
)
{
terrno
=
TAOS_SYSTEM_ERROR
(
errno
);
...
...
@@ -120,8 +122,7 @@ static void dndConsumeChildQueue(SMgmtWrapper *pWrapper, SNodeMsg *pMsg, int16_t
ProcFuncType
ftype
)
{
SRpcMsg
*
pRpc
=
&
pMsg
->
rpcMsg
;
pRpc
->
pCont
=
pCont
;
dTrace
(
"msg:%p, get from child queue, type:%s handle:%p app:%p"
,
pMsg
,
TMSG_INFO
(
pRpc
->
msgType
),
pRpc
->
handle
,
pRpc
->
ahandle
);
dTrace
(
"msg:%p, get from child queue, handle:%p app:%p"
,
pMsg
,
pRpc
->
handle
,
pRpc
->
ahandle
);
NodeMsgFp
msgFp
=
pWrapper
->
msgFps
[
TMSG_INDEX
(
pRpc
->
msgType
)];
int32_t
code
=
(
*
msgFp
)(
pWrapper
,
pMsg
);
...
...
@@ -142,13 +143,19 @@ static void dndConsumeChildQueue(SMgmtWrapper *pWrapper, SNodeMsg *pMsg, int16_t
static
void
dndConsumeParentQueue
(
SMgmtWrapper
*
pWrapper
,
SRpcMsg
*
pMsg
,
int16_t
msgLen
,
void
*
pCont
,
int32_t
contLen
,
ProcFuncType
ftype
)
{
pMsg
->
pCont
=
pCont
;
dTrace
(
"msg:%p, get from parent queue, type:%s handle:%p app:%p"
,
pMsg
,
TMSG_INFO
(
pMsg
->
msgType
),
pMsg
->
handle
,
pMsg
->
ahandle
);
dTrace
(
"msg:%p, get from parent queue, handle:%p app:%p"
,
pMsg
,
pMsg
->
handle
,
pMsg
->
ahandle
);
switch
(
ftype
)
{
case
PROC_REG
ISTER
:
case
PROC_REG
:
rpcRegisterBrokenLinkArg
(
pMsg
);
break
;
case
PROC_RELEASE
:
rpcReleaseHandle
(
pMsg
->
handle
,
(
int8_t
)
pMsg
->
code
);
rpcFreeCont
(
pCont
);
break
;
case
PROC_REQ
:
// todo send to dnode
dndSendReqToMnode
(
pWrapper
,
pMsg
);
default:
dndSendRpcRsp
(
pWrapper
,
pMsg
);
break
;
...
...
@@ -164,6 +171,9 @@ static int32_t dndRunInMultiProcess(SDnode *pDnode) {
pWrapper
->
required
=
dndRequireNode
(
pWrapper
);
if
(
!
pWrapper
->
required
)
continue
;
SMsgCb
msgCb
=
dndCreateMsgcb
(
pWrapper
);
tmsgSetDefaultMsgCb
(
&
msgCb
);
if
(
taosMkDir
(
pWrapper
->
path
)
!=
0
)
{
terrno
=
TAOS_SYSTEM_ERROR
(
errno
);
dError
(
"failed to create dir:%s since %s"
,
pWrapper
->
path
,
terrstr
());
...
...
@@ -211,15 +221,23 @@ static int32_t dndRunInMultiProcess(SDnode *pDnode) {
dndClearNodesExecpt
(
pDnode
,
n
);
dInfo
(
"node:%s, will be initialized in child process"
,
pWrapper
->
name
);
dndOpenNode
(
pWrapper
);
if
(
dndOpenNode
(
pWrapper
)
!=
0
)
{
dInfo
(
"node:%s, failed to init in child process since %s"
,
pWrapper
->
name
,
terrstr
());
return
-
1
;
}
if
(
taosProcRun
(
pProc
)
!=
0
)
{
dError
(
"node:%s, failed to run proc since %s"
,
pWrapper
->
name
,
terrstr
());
return
-
1
;
}
break
;
}
else
{
dInfo
(
"node:%s, will not start in parent process, child pid:%d"
,
pWrapper
->
name
,
taosProcChildId
(
pProc
));
pWrapper
->
procType
=
PROC_PARENT
;
}
if
(
taosProcRun
(
pProc
)
!=
0
)
{
dError
(
"node:%s, failed to run proc since %s"
,
pWrapper
->
name
,
terrstr
());
return
-
1
;
if
(
taosProcRun
(
pProc
)
!=
0
)
{
dError
(
"node:%s, failed to run proc since %s"
,
pWrapper
->
name
,
terrstr
());
return
-
1
;
}
}
}
...
...
source/dnode/mgmt/
container
/src/dndFile.c
→
source/dnode/mgmt/
main
/src/dndFile.c
浏览文件 @
5b2d664d
文件已移动
source/dnode/mgmt/
container
/src/dndInt.c
→
source/dnode/mgmt/
main
/src/dndInt.c
浏览文件 @
5b2d664d
...
...
@@ -80,19 +80,6 @@ void dndSetStatus(SDnode *pDnode, EDndStatus status) {
}
}
const
char
*
dndStatStr
(
EDndStatus
status
)
{
switch
(
status
)
{
case
DND_STAT_INIT
:
return
"init"
;
case
DND_STAT_RUNNING
:
return
"running"
;
case
DND_STAT_STOPPED
:
return
"stopped"
;
default:
return
"unknown"
;
}
}
void
dndReportStartup
(
SDnode
*
pDnode
,
const
char
*
pName
,
const
char
*
pDesc
)
{
SStartupReq
*
pStartup
=
&
pDnode
->
startup
;
tstrncpy
(
pStartup
->
name
,
pName
,
TSDB_STEP_NAME_LEN
);
...
...
source/dnode/mgmt/
container
/src/dndMonitor.c
→
source/dnode/mgmt/
main
/src/dndMonitor.c
浏览文件 @
5b2d664d
文件已移动
source/dnode/mgmt/
container
/src/dndMsg.c
→
source/dnode/mgmt/
main
/src/dndMsg.c
浏览文件 @
5b2d664d
文件已移动
source/dnode/mgmt/
container
/src/dndObj.c
→
source/dnode/mgmt/
main
/src/dndObj.c
浏览文件 @
5b2d664d
文件已移动
source/dnode/mgmt/main/src/dndStr.c
0 → 100644
浏览文件 @
5b2d664d
/*
* Copyright (c) 2019 TAOS Data, Inc. <jhtao@taosdata.com>
*
* This program is free software: you can use, redistribute, and/or modify
* it under the terms of the GNU Affero General Public License, version 3
* or later ("AGPL"), as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define _DEFAULT_SOURCE
#include "dndInt.h"
const
char
*
dndStatStr
(
EDndStatus
status
)
{
switch
(
status
)
{
case
DND_STAT_INIT
:
return
"init"
;
case
DND_STAT_RUNNING
:
return
"running"
;
case
DND_STAT_STOPPED
:
return
"stopped"
;
default:
return
"unknown"
;
}
}
const
char
*
dndNodeLogStr
(
ENodeType
ntype
)
{
switch
(
ntype
)
{
case
VNODES
:
return
"vnode"
;
case
QNODE
:
return
"qnode"
;
case
SNODE
:
return
"snode"
;
case
MNODE
:
return
"mnode"
;
case
BNODE
:
return
"bnode"
;
default:
return
"taosd"
;
}
}
const
char
*
dndNodeProcStr
(
ENodeType
ntype
)
{
switch
(
ntype
)
{
case
VNODES
:
return
"taosv"
;
case
QNODE
:
return
"taosq"
;
case
SNODE
:
return
"taoss"
;
case
MNODE
:
return
"taosm"
;
case
BNODE
:
return
"taosb"
;
default:
return
"taosd"
;
}
}
source/dnode/mgmt/
container
/src/dndTransport.c
→
source/dnode/mgmt/
main
/src/dndTransport.c
浏览文件 @
5b2d664d
...
...
@@ -320,8 +320,7 @@ static int32_t dndSendRpcReq(STransMgmt *pMgmt, const SEpSet *pEpSet, SRpcMsg *p
}
int32_t
dndSendReqToDnode
(
SMgmtWrapper
*
pWrapper
,
const
SEpSet
*
pEpSet
,
SRpcMsg
*
pReq
)
{
if
(
pWrapper
->
procType
==
PROC_CHILD
)
{
}
else
{
if
(
pWrapper
->
procType
!=
PROC_CHILD
)
{
SDnode
*
pDnode
=
pWrapper
->
pDnode
;
if
(
dndGetStatus
(
pDnode
)
!=
DND_STAT_RUNNING
)
{
terrno
=
TSDB_CODE_DND_OFFLINE
;
...
...
@@ -329,23 +328,24 @@ int32_t dndSendReqToDnode(SMgmtWrapper *pWrapper, const SEpSet *pEpSet, SRpcMsg
return
-
1
;
}
return
dndSendRpcReq
(
&
pDnode
->
trans
,
pEpSet
,
pReq
);
}
else
{
while
(
taosProcPutToParentQ
(
pWrapper
->
pProc
,
pReq
,
sizeof
(
SRpcMsg
),
pReq
->
pCont
,
pReq
->
contLen
,
PROC_REQ
)
!=
0
)
{
taosMsleep
(
1
);
}
}
}
int32_t
dndSendReqToMnode
(
SMgmtWrapper
*
pWrapper
,
SRpcMsg
*
pReq
)
{
if
(
pWrapper
->
procType
==
PROC_CHILD
)
{
}
else
{
SDnode
*
pDnode
=
pWrapper
->
pDnode
;
STransMgmt
*
pTrans
=
&
pDnode
->
trans
;
SEpSet
epSet
=
{
0
};
SDnode
*
pDnode
=
pWrapper
->
pDnode
;
STransMgmt
*
pTrans
=
&
pDnode
->
trans
;
SEpSet
epSet
=
{
0
};
SMgmtWrapper
*
pWrapper
=
dndAcquireWrapper
(
pDnode
,
DNODE
);
if
(
pWrapper
!=
NULL
)
{
dmGetMnodeEpSet
(
pWrapper
->
pMgmt
,
&
epSet
);
dndReleaseWrapper
(
pWrapper
);
}
return
dndSendRpcReq
(
pTrans
,
&
epSet
,
pReq
);
SMgmtWrapper
*
pWrapper2
=
dndAcquireWrapper
(
pDnode
,
DNODE
);
if
(
pWrapper2
!=
NULL
)
{
dmGetMnodeEpSet
(
pWrapper2
->
pMgmt
,
&
epSet
);
dndReleaseWrapper
(
pWrapper2
);
}
return
dndSendRpcReq
(
pTrans
,
&
epSet
,
pReq
);
}
void
dndSendRpcRsp
(
SMgmtWrapper
*
pWrapper
,
const
SRpcMsg
*
pRsp
)
{
...
...
@@ -363,29 +363,44 @@ void dndSendRpcRsp(SMgmtWrapper *pWrapper, const SRpcMsg *pRsp) {
}
void
dndSendRsp
(
SMgmtWrapper
*
pWrapper
,
const
SRpcMsg
*
pRsp
)
{
if
(
pWrapper
->
procType
==
PROC_CHILD
)
{
int32_t
code
=
-
1
;
do
{
code
=
taosProcPutToParentQ
(
pWrapper
->
pProc
,
pRsp
,
sizeof
(
SRpcMsg
),
pRsp
->
pCont
,
pRsp
->
contLen
,
PROC_RSP
);
if
(
code
!=
0
)
{
taosMsleep
(
10
);
}
}
while
(
code
!=
0
);
}
else
{
if
(
pWrapper
->
procType
!=
PROC_CHILD
)
{
dndSendRpcRsp
(
pWrapper
,
pRsp
);
}
else
{
while
(
taosProcPutToParentQ
(
pWrapper
->
pProc
,
pRsp
,
sizeof
(
SRpcMsg
),
pRsp
->
pCont
,
pRsp
->
contLen
,
PROC_RSP
)
!=
0
)
{
taosMsleep
(
1
);
}
}
}
void
dndRegisterBrokenLinkArg
(
SMgmtWrapper
*
pWrapper
,
SRpcMsg
*
pMsg
)
{
if
(
pWrapper
->
procType
==
PROC_CHILD
)
{
int32_t
code
=
-
1
;
do
{
code
=
taosProcPutToParentQ
(
pWrapper
->
pProc
,
pMsg
,
sizeof
(
SRpcMsg
),
pMsg
->
pCont
,
pMsg
->
contLen
,
PROC_REGISTER
);
if
(
code
!=
0
)
{
taosMsleep
(
10
);
}
}
while
(
code
!=
0
);
}
else
{
if
(
pWrapper
->
procType
!=
PROC_CHILD
)
{
rpcRegisterBrokenLinkArg
(
pMsg
);
}
else
{
while
(
taosProcPutToParentQ
(
pWrapper
->
pProc
,
pMsg
,
sizeof
(
SRpcMsg
),
pMsg
->
pCont
,
pMsg
->
contLen
,
PROC_REG
)
!=
0
)
{
taosMsleep
(
1
);
}
}
}
static
void
dndReleaseHandle
(
SMgmtWrapper
*
pWrapper
,
void
*
handle
,
int8_t
type
)
{
if
(
pWrapper
->
procType
!=
PROC_CHILD
)
{
rpcReleaseHandle
(
handle
,
type
);
}
else
{
SRpcMsg
msg
=
{.
handle
=
handle
,
.
code
=
type
};
while
(
taosProcPutToParentQ
(
pWrapper
->
pProc
,
&
msg
,
sizeof
(
SRpcMsg
),
NULL
,
0
,
PROC_RELEASE
)
!=
0
)
{
taosMsleep
(
1
);
}
}
}
SMsgCb
dndCreateMsgcb
(
SMgmtWrapper
*
pWrapper
)
{
SMsgCb
msgCb
=
{
.
pWrapper
=
pWrapper
,
.
registerBrokenLinkArgFp
=
dndRegisterBrokenLinkArg
,
.
releaseHandleFp
=
dndReleaseHandle
,
.
sendMnodeReqFp
=
dndSendReqToMnode
,
.
sendReqFp
=
dndSendReqToDnode
,
.
sendRspFp
=
dndSendRsp
,
};
return
msgCb
;
}
\ No newline at end of file
source/dnode/mgmt/m
node
/inc/mm.h
→
source/dnode/mgmt/m
m
/inc/mm.h
浏览文件 @
5b2d664d
文件已移动
source/dnode/mgmt/m
node
/inc/mmInt.h
→
source/dnode/mgmt/m
m
/inc/mmInt.h
浏览文件 @
5b2d664d
文件已移动
source/dnode/mgmt/m
node
/src/mmFile.c
→
source/dnode/mgmt/m
m
/src/mmFile.c
浏览文件 @
5b2d664d
文件已移动
source/dnode/mgmt/m
node
/src/mmInt.c
→
source/dnode/mgmt/m
m
/src/mmInt.c
浏览文件 @
5b2d664d
文件已移动
source/dnode/mgmt/m
node
/src/mmMsg.c
→
source/dnode/mgmt/m
m
/src/mmMsg.c
浏览文件 @
5b2d664d
文件已移动
source/dnode/mgmt/m
node
/src/mmWorker.c
→
source/dnode/mgmt/m
m
/src/mmWorker.c
浏览文件 @
5b2d664d
文件已移动
source/dnode/mgmt/q
node
/inc/qm.h
→
source/dnode/mgmt/q
m
/inc/qm.h
浏览文件 @
5b2d664d
文件已移动
source/dnode/mgmt/q
node
/inc/qmInt.h
→
source/dnode/mgmt/q
m
/inc/qmInt.h
浏览文件 @
5b2d664d
文件已移动
source/dnode/mgmt/q
node
/src/qmInt.c
→
source/dnode/mgmt/q
m
/src/qmInt.c
浏览文件 @
5b2d664d
文件已移动
source/dnode/mgmt/q
node
/src/qmMsg.c
→
source/dnode/mgmt/q
m
/src/qmMsg.c
浏览文件 @
5b2d664d
文件已移动
source/dnode/mgmt/q
node
/src/qmWorker.c
→
source/dnode/mgmt/q
m
/src/qmWorker.c
浏览文件 @
5b2d664d
文件已移动
source/dnode/mgmt/s
node
/inc/sm.h
→
source/dnode/mgmt/s
m
/inc/sm.h
浏览文件 @
5b2d664d
文件已移动
source/dnode/mgmt/s
node
/inc/smInt.h
→
source/dnode/mgmt/s
m
/inc/smInt.h
浏览文件 @
5b2d664d
文件已移动
source/dnode/mgmt/s
node
/src/smInt.c
→
source/dnode/mgmt/s
m
/src/smInt.c
浏览文件 @
5b2d664d
文件已移动
source/dnode/mgmt/s
node
/src/smMsg.c
→
source/dnode/mgmt/s
m
/src/smMsg.c
浏览文件 @
5b2d664d
文件已移动
source/dnode/mgmt/s
node
/src/smWorker.c
→
source/dnode/mgmt/s
m
/src/smWorker.c
浏览文件 @
5b2d664d
文件已移动
source/dnode/mgmt/v
node
/inc/vm.h
→
source/dnode/mgmt/v
m
/inc/vm.h
浏览文件 @
5b2d664d
文件已移动
source/dnode/mgmt/v
node
/inc/vmInt.h
→
source/dnode/mgmt/v
m
/inc/vmInt.h
浏览文件 @
5b2d664d
文件已移动
source/dnode/mgmt/v
node
/src/vmFile.c
→
source/dnode/mgmt/v
m
/src/vmFile.c
浏览文件 @
5b2d664d
文件已移动
source/dnode/mgmt/v
node
/src/vmInt.c
→
source/dnode/mgmt/v
m
/src/vmInt.c
浏览文件 @
5b2d664d
文件已移动
source/dnode/mgmt/v
node
/src/vmMsg.c
→
source/dnode/mgmt/v
m
/src/vmMsg.c
浏览文件 @
5b2d664d
文件已移动
source/dnode/mgmt/v
node
/src/vmWorker.c
→
source/dnode/mgmt/v
m
/src/vmWorker.c
浏览文件 @
5b2d664d
文件已移动
source/dnode/mnode/impl/src/mndInfoSchema.c
浏览文件 @
5b2d664d
...
...
@@ -20,138 +20,178 @@
#define SYSTABLE_SCH_DB_NAME_LEN ((TSDB_DB_NAME_LEN - 1) + VARSTR_HEADER_SIZE)
//!!!! Note: only APPEND columns in below tables, NO insert !!!!
static
const
SInfosTableSchema
dnodesSchema
[]
=
{{.
name
=
"id"
,
.
bytes
=
2
,
.
type
=
TSDB_DATA_TYPE_SMALLINT
},
{.
name
=
"endpoint"
,
.
bytes
=
TSDB_EP_LEN
+
VARSTR_HEADER_SIZE
,
.
type
=
TSDB_DATA_TYPE_BINARY
},
{.
name
=
"vnodes"
,
.
bytes
=
2
,
.
type
=
TSDB_DATA_TYPE_SMALLINT
},
{.
name
=
"max_vnodes"
,
.
bytes
=
2
,
.
type
=
TSDB_DATA_TYPE_SMALLINT
},
{.
name
=
"status"
,
.
bytes
=
10
+
VARSTR_HEADER_SIZE
,
.
type
=
TSDB_DATA_TYPE_BINARY
},
{.
name
=
"create_time"
,
.
bytes
=
8
,
.
type
=
TSDB_DATA_TYPE_TIMESTAMP
},
{.
name
=
"note"
,
.
bytes
=
256
+
VARSTR_HEADER_SIZE
,
.
type
=
TSDB_DATA_TYPE_BINARY
},
};
static
const
SInfosTableSchema
mnodesSchema
[]
=
{{.
name
=
"id"
,
.
bytes
=
4
,
.
type
=
TSDB_DATA_TYPE_INT
},
{.
name
=
"endpoint"
,
.
bytes
=
TSDB_EP_LEN
+
VARSTR_HEADER_SIZE
,
.
type
=
TSDB_DATA_TYPE_BINARY
},
{.
name
=
"role"
,
.
bytes
=
12
+
VARSTR_HEADER_SIZE
,
.
type
=
TSDB_DATA_TYPE_BINARY
},
{.
name
=
"role_time"
,
.
bytes
=
8
,
.
type
=
TSDB_DATA_TYPE_TIMESTAMP
},
{.
name
=
"create_time"
,
.
bytes
=
8
,
.
type
=
TSDB_DATA_TYPE_TIMESTAMP
},
};
static
const
SInfosTableSchema
modulesSchema
[]
=
{{.
name
=
"id"
,
.
bytes
=
4
,
.
type
=
TSDB_DATA_TYPE_INT
},
{.
name
=
"endpoint"
,
.
bytes
=
134
,
.
type
=
TSDB_DATA_TYPE_BINARY
},
{.
name
=
"module"
,
.
bytes
=
10
,
.
type
=
TSDB_DATA_TYPE_BINARY
},
};
static
const
SInfosTableSchema
qnodesSchema
[]
=
{{.
name
=
"id"
,
.
bytes
=
4
,
.
type
=
TSDB_DATA_TYPE_INT
},
{.
name
=
"endpoint"
,
.
bytes
=
134
,
.
type
=
TSDB_DATA_TYPE_BINARY
},
{.
name
=
"create_time"
,
.
bytes
=
8
,
.
type
=
TSDB_DATA_TYPE_TIMESTAMP
},
};
static
const
SInfosTableSchema
userDBSchema
[]
=
{{.
name
=
"name"
,
.
bytes
=
SYSTABLE_SCH_DB_NAME_LEN
,
.
type
=
TSDB_DATA_TYPE_BINARY
},
{.
name
=
"create_time"
,
.
bytes
=
8
,
.
type
=
TSDB_DATA_TYPE_TIMESTAMP
},
{.
name
=
"vgroups"
,
.
bytes
=
2
,
.
type
=
TSDB_DATA_TYPE_SMALLINT
},
{.
name
=
"ntables"
,
.
bytes
=
8
,
.
type
=
TSDB_DATA_TYPE_BIGINT
},
{.
name
=
"replica"
,
.
bytes
=
2
,
.
type
=
TSDB_DATA_TYPE_SMALLINT
},
{.
name
=
"quorum"
,
.
bytes
=
2
,
.
type
=
TSDB_DATA_TYPE_SMALLINT
},
{.
name
=
"days"
,
.
bytes
=
2
,
.
type
=
TSDB_DATA_TYPE_SMALLINT
},
{.
name
=
"keep"
,
.
bytes
=
24
+
VARSTR_HEADER_SIZE
,
.
type
=
TSDB_DATA_TYPE_BINARY
},
{.
name
=
"cache"
,
.
bytes
=
4
,
.
type
=
TSDB_DATA_TYPE_INT
},
{.
name
=
"blocks"
,
.
bytes
=
4
,
.
type
=
TSDB_DATA_TYPE_INT
},
{.
name
=
"minrows"
,
.
bytes
=
4
,
.
type
=
TSDB_DATA_TYPE_INT
},
{.
name
=
"maxrows"
,
.
bytes
=
4
,
.
type
=
TSDB_DATA_TYPE_INT
},
{.
name
=
"wallevel"
,
.
bytes
=
1
,
.
type
=
TSDB_DATA_TYPE_TINYINT
},
{.
name
=
"fsync"
,
.
bytes
=
4
,
.
type
=
TSDB_DATA_TYPE_INT
},
{.
name
=
"comp"
,
.
bytes
=
1
,
.
type
=
TSDB_DATA_TYPE_TINYINT
},
{.
name
=
"cachelast"
,
.
bytes
=
1
,
.
type
=
TSDB_DATA_TYPE_TINYINT
},
{.
name
=
"precision"
,
.
bytes
=
3
+
VARSTR_HEADER_SIZE
,
.
type
=
TSDB_DATA_TYPE_BINARY
},
// {.name = "update", .bytes = 1, .type = TSDB_DATA_TYPE_TINYINT}, // disable update
};
static
const
SInfosTableSchema
userFuncSchema
[]
=
{{.
name
=
"name"
,
.
bytes
=
32
,
.
type
=
TSDB_DATA_TYPE_BINARY
},
{.
name
=
"create_time"
,
.
bytes
=
8
,
.
type
=
TSDB_DATA_TYPE_TIMESTAMP
},
{.
name
=
"ntables"
,
.
bytes
=
4
,
.
type
=
TSDB_DATA_TYPE_INT
},
{.
name
=
"precision"
,
.
bytes
=
2
,
.
type
=
TSDB_DATA_TYPE_BINARY
},
{.
name
=
"status"
,
.
bytes
=
10
,
.
type
=
TSDB_DATA_TYPE_BINARY
},
};
static
const
SInfosTableSchema
userIdxSchema
[]
=
{{.
name
=
"db_name"
,
.
bytes
=
32
,
.
type
=
TSDB_DATA_TYPE_BINARY
},
{.
name
=
"table_name"
,
.
bytes
=
SYSTABLE_SCH_DB_NAME_LEN
,
.
type
=
TSDB_DATA_TYPE_BINARY
},
{.
name
=
"index_database"
,
.
bytes
=
32
,
.
type
=
TSDB_DATA_TYPE_BINARY
},
{.
name
=
"index_name"
,
.
bytes
=
SYSTABLE_SCH_DB_NAME_LEN
,
.
type
=
TSDB_DATA_TYPE_BINARY
},
{.
name
=
"column_name"
,
.
bytes
=
64
,
.
type
=
TSDB_DATA_TYPE_BINARY
},
{.
name
=
"index_type"
,
.
bytes
=
10
,
.
type
=
TSDB_DATA_TYPE_BINARY
},
{.
name
=
"index_extensions"
,
.
bytes
=
256
,
.
type
=
TSDB_DATA_TYPE_BINARY
},
};
static
const
SInfosTableSchema
userStbsSchema
[]
=
{{.
name
=
"stable_name"
,
.
bytes
=
SYSTABLE_SCH_TABLE_NAME_LEN
,
.
type
=
TSDB_DATA_TYPE_BINARY
},
{.
name
=
"db_name"
,
.
bytes
=
SYSTABLE_SCH_DB_NAME_LEN
,
.
type
=
TSDB_DATA_TYPE_BINARY
},
{.
name
=
"create_time"
,
.
bytes
=
8
,
.
type
=
TSDB_DATA_TYPE_TIMESTAMP
},
{.
name
=
"columns"
,
.
bytes
=
4
,
.
type
=
TSDB_DATA_TYPE_INT
},
{.
name
=
"tags"
,
.
bytes
=
4
,
.
type
=
TSDB_DATA_TYPE_INT
},
{.
name
=
"tables"
,
.
bytes
=
4
,
.
type
=
TSDB_DATA_TYPE_INT
},
{.
name
=
"last_update"
,
.
bytes
=
8
,
.
type
=
TSDB_DATA_TYPE_TIMESTAMP
},
{.
name
=
"table_comment"
,
.
bytes
=
1024
+
VARSTR_HEADER_SIZE
,
.
type
=
TSDB_DATA_TYPE_INT
},
};
static
const
SInfosTableSchema
userStreamsSchema
[]
=
{{.
name
=
"stream_name"
,
.
bytes
=
SYSTABLE_SCH_DB_NAME_LEN
,
.
type
=
TSDB_DATA_TYPE_BINARY
},
{.
name
=
"user_name"
,
.
bytes
=
23
,
.
type
=
TSDB_DATA_TYPE_BINARY
},
{.
name
=
"dest_table"
,
.
bytes
=
SYSTABLE_SCH_DB_NAME_LEN
,
.
type
=
TSDB_DATA_TYPE_BINARY
},
{.
name
=
"create_time"
,
.
bytes
=
8
,
.
type
=
TSDB_DATA_TYPE_TIMESTAMP
},
{.
name
=
"sql"
,
.
bytes
=
1024
,
.
type
=
TSDB_DATA_TYPE_BINARY
},
};
static
const
SInfosTableSchema
dnodesSchema
[]
=
{
{.
name
=
"id"
,
.
bytes
=
2
,
.
type
=
TSDB_DATA_TYPE_SMALLINT
},
{.
name
=
"endpoint"
,
.
bytes
=
TSDB_EP_LEN
+
VARSTR_HEADER_SIZE
,
.
type
=
TSDB_DATA_TYPE_BINARY
},
{.
name
=
"vnodes"
,
.
bytes
=
2
,
.
type
=
TSDB_DATA_TYPE_SMALLINT
},
{.
name
=
"max_vnodes"
,
.
bytes
=
2
,
.
type
=
TSDB_DATA_TYPE_SMALLINT
},
{.
name
=
"status"
,
.
bytes
=
10
+
VARSTR_HEADER_SIZE
,
.
type
=
TSDB_DATA_TYPE_BINARY
},
{.
name
=
"create_time"
,
.
bytes
=
8
,
.
type
=
TSDB_DATA_TYPE_TIMESTAMP
},
{.
name
=
"note"
,
.
bytes
=
256
+
VARSTR_HEADER_SIZE
,
.
type
=
TSDB_DATA_TYPE_BINARY
},
};
static
const
SInfosTableSchema
mnodesSchema
[]
=
{
{.
name
=
"id"
,
.
bytes
=
4
,
.
type
=
TSDB_DATA_TYPE_INT
},
{.
name
=
"endpoint"
,
.
bytes
=
TSDB_EP_LEN
+
VARSTR_HEADER_SIZE
,
.
type
=
TSDB_DATA_TYPE_BINARY
},
{.
name
=
"role"
,
.
bytes
=
12
+
VARSTR_HEADER_SIZE
,
.
type
=
TSDB_DATA_TYPE_BINARY
},
{.
name
=
"role_time"
,
.
bytes
=
8
,
.
type
=
TSDB_DATA_TYPE_TIMESTAMP
},
{.
name
=
"create_time"
,
.
bytes
=
8
,
.
type
=
TSDB_DATA_TYPE_TIMESTAMP
},
};
static
const
SInfosTableSchema
modulesSchema
[]
=
{
{.
name
=
"id"
,
.
bytes
=
4
,
.
type
=
TSDB_DATA_TYPE_INT
},
{.
name
=
"endpoint"
,
.
bytes
=
134
,
.
type
=
TSDB_DATA_TYPE_BINARY
},
{.
name
=
"module"
,
.
bytes
=
10
,
.
type
=
TSDB_DATA_TYPE_BINARY
},
};
static
const
SInfosTableSchema
qnodesSchema
[]
=
{
{.
name
=
"id"
,
.
bytes
=
4
,
.
type
=
TSDB_DATA_TYPE_INT
},
{.
name
=
"endpoint"
,
.
bytes
=
134
,
.
type
=
TSDB_DATA_TYPE_BINARY
},
{.
name
=
"create_time"
,
.
bytes
=
8
,
.
type
=
TSDB_DATA_TYPE_TIMESTAMP
},
};
static
const
SInfosTableSchema
userDBSchema
[]
=
{
{.
name
=
"name"
,
.
bytes
=
SYSTABLE_SCH_DB_NAME_LEN
,
.
type
=
TSDB_DATA_TYPE_BINARY
},
{.
name
=
"create_time"
,
.
bytes
=
8
,
.
type
=
TSDB_DATA_TYPE_TIMESTAMP
},
{.
name
=
"vgroups"
,
.
bytes
=
2
,
.
type
=
TSDB_DATA_TYPE_SMALLINT
},
{.
name
=
"ntables"
,
.
bytes
=
8
,
.
type
=
TSDB_DATA_TYPE_BIGINT
},
{.
name
=
"replica"
,
.
bytes
=
2
,
.
type
=
TSDB_DATA_TYPE_SMALLINT
},
{.
name
=
"quorum"
,
.
bytes
=
2
,
.
type
=
TSDB_DATA_TYPE_SMALLINT
},
{.
name
=
"days"
,
.
bytes
=
2
,
.
type
=
TSDB_DATA_TYPE_SMALLINT
},
{.
name
=
"keep"
,
.
bytes
=
24
+
VARSTR_HEADER_SIZE
,
.
type
=
TSDB_DATA_TYPE_BINARY
},
{.
name
=
"cache"
,
.
bytes
=
4
,
.
type
=
TSDB_DATA_TYPE_INT
},
{.
name
=
"blocks"
,
.
bytes
=
4
,
.
type
=
TSDB_DATA_TYPE_INT
},
{.
name
=
"minrows"
,
.
bytes
=
4
,
.
type
=
TSDB_DATA_TYPE_INT
},
{.
name
=
"maxrows"
,
.
bytes
=
4
,
.
type
=
TSDB_DATA_TYPE_INT
},
{.
name
=
"wallevel"
,
.
bytes
=
1
,
.
type
=
TSDB_DATA_TYPE_TINYINT
},
{.
name
=
"fsync"
,
.
bytes
=
4
,
.
type
=
TSDB_DATA_TYPE_INT
},
{.
name
=
"comp"
,
.
bytes
=
1
,
.
type
=
TSDB_DATA_TYPE_TINYINT
},
{.
name
=
"cachelast"
,
.
bytes
=
1
,
.
type
=
TSDB_DATA_TYPE_TINYINT
},
{.
name
=
"precision"
,
.
bytes
=
3
+
VARSTR_HEADER_SIZE
,
.
type
=
TSDB_DATA_TYPE_BINARY
},
// {.name = "update", .bytes = 1, .type =
// TSDB_DATA_TYPE_TINYINT}, // disable update
};
static
const
SInfosTableSchema
userFuncSchema
[]
=
{
{.
name
=
"name"
,
.
bytes
=
32
,
.
type
=
TSDB_DATA_TYPE_BINARY
},
{.
name
=
"create_time"
,
.
bytes
=
8
,
.
type
=
TSDB_DATA_TYPE_TIMESTAMP
},
{.
name
=
"ntables"
,
.
bytes
=
4
,
.
type
=
TSDB_DATA_TYPE_INT
},
{.
name
=
"precision"
,
.
bytes
=
2
,
.
type
=
TSDB_DATA_TYPE_BINARY
},
{.
name
=
"status"
,
.
bytes
=
10
,
.
type
=
TSDB_DATA_TYPE_BINARY
},
};
static
const
SInfosTableSchema
userIdxSchema
[]
=
{
{.
name
=
"db_name"
,
.
bytes
=
32
,
.
type
=
TSDB_DATA_TYPE_BINARY
},
{.
name
=
"table_name"
,
.
bytes
=
SYSTABLE_SCH_DB_NAME_LEN
,
.
type
=
TSDB_DATA_TYPE_BINARY
},
{.
name
=
"index_database"
,
.
bytes
=
32
,
.
type
=
TSDB_DATA_TYPE_BINARY
},
{.
name
=
"index_name"
,
.
bytes
=
SYSTABLE_SCH_DB_NAME_LEN
,
.
type
=
TSDB_DATA_TYPE_BINARY
},
{.
name
=
"column_name"
,
.
bytes
=
64
,
.
type
=
TSDB_DATA_TYPE_BINARY
},
{.
name
=
"index_type"
,
.
bytes
=
10
,
.
type
=
TSDB_DATA_TYPE_BINARY
},
{.
name
=
"index_extensions"
,
.
bytes
=
256
,
.
type
=
TSDB_DATA_TYPE_BINARY
},
};
static
const
SInfosTableSchema
userStbsSchema
[]
=
{
{.
name
=
"stable_name"
,
.
bytes
=
SYSTABLE_SCH_TABLE_NAME_LEN
,
.
type
=
TSDB_DATA_TYPE_BINARY
},
{.
name
=
"db_name"
,
.
bytes
=
SYSTABLE_SCH_DB_NAME_LEN
,
.
type
=
TSDB_DATA_TYPE_BINARY
},
{.
name
=
"create_time"
,
.
bytes
=
8
,
.
type
=
TSDB_DATA_TYPE_TIMESTAMP
},
{.
name
=
"columns"
,
.
bytes
=
4
,
.
type
=
TSDB_DATA_TYPE_INT
},
{.
name
=
"tags"
,
.
bytes
=
4
,
.
type
=
TSDB_DATA_TYPE_INT
},
{.
name
=
"tables"
,
.
bytes
=
4
,
.
type
=
TSDB_DATA_TYPE_INT
},
{.
name
=
"last_update"
,
.
bytes
=
8
,
.
type
=
TSDB_DATA_TYPE_TIMESTAMP
},
{.
name
=
"table_comment"
,
.
bytes
=
1024
+
VARSTR_HEADER_SIZE
,
.
type
=
TSDB_DATA_TYPE_INT
},
};
static
const
SInfosTableSchema
userStreamsSchema
[]
=
{
{.
name
=
"stream_name"
,
.
bytes
=
SYSTABLE_SCH_DB_NAME_LEN
,
.
type
=
TSDB_DATA_TYPE_BINARY
},
{.
name
=
"user_name"
,
.
bytes
=
23
,
.
type
=
TSDB_DATA_TYPE_BINARY
},
{.
name
=
"dest_table"
,
.
bytes
=
SYSTABLE_SCH_DB_NAME_LEN
,
.
type
=
TSDB_DATA_TYPE_BINARY
},
{.
name
=
"create_time"
,
.
bytes
=
8
,
.
type
=
TSDB_DATA_TYPE_TIMESTAMP
},
{.
name
=
"sql"
,
.
bytes
=
1024
,
.
type
=
TSDB_DATA_TYPE_BINARY
},
};
static
const
SInfosTableSchema
userTblsSchema
[]
=
{
{.
name
=
"table_name"
,
.
bytes
=
SYSTABLE_SCH_TABLE_NAME_LEN
,
.
type
=
TSDB_DATA_TYPE_BINARY
},
{.
name
=
"db_name"
,
.
bytes
=
SYSTABLE_SCH_DB_NAME_LEN
,
.
type
=
TSDB_DATA_TYPE_BINARY
},
{.
name
=
"create_time"
,
.
bytes
=
8
,
.
type
=
TSDB_DATA_TYPE_TIMESTAMP
},
{.
name
=
"columns"
,
.
bytes
=
4
,
.
type
=
TSDB_DATA_TYPE_INT
},
{.
name
=
"stable_name"
,
.
bytes
=
SYSTABLE_SCH_TABLE_NAME_LEN
,
.
type
=
TSDB_DATA_TYPE_BINARY
},
{.
name
=
"uid"
,
.
bytes
=
8
,
.
type
=
TSDB_DATA_TYPE_BIGINT
},
{.
name
=
"vgroup_id"
,
.
bytes
=
4
,
.
type
=
TSDB_DATA_TYPE_INT
},
{.
name
=
"ttl"
,
.
bytes
=
4
,
.
type
=
TSDB_DATA_TYPE_INT
},
{.
name
=
"table_comment"
,
.
bytes
=
4
,
.
type
=
TSDB_DATA_TYPE_INT
},
};
static
const
SInfosTableSchema
userTblDistSchema
[]
=
{{.
name
=
"db_name"
,
.
bytes
=
32
,
.
type
=
TSDB_DATA_TYPE_BINARY
},
{.
name
=
"table_name"
,
.
bytes
=
SYSTABLE_SCH_DB_NAME_LEN
,
.
type
=
TSDB_DATA_TYPE_BINARY
},
{.
name
=
"distributed_histogram"
,
.
bytes
=
500
,
.
type
=
TSDB_DATA_TYPE_BINARY
},
{.
name
=
"min_of_rows"
,
.
bytes
=
4
,
.
type
=
TSDB_DATA_TYPE_INT
},
{.
name
=
"max_of_rows"
,
.
bytes
=
4
,
.
type
=
TSDB_DATA_TYPE_INT
},
{.
name
=
"avg_of_rows"
,
.
bytes
=
4
,
.
type
=
TSDB_DATA_TYPE_INT
},
{.
name
=
"stddev_of_rows"
,
.
bytes
=
4
,
.
type
=
TSDB_DATA_TYPE_INT
},
{.
name
=
"rows"
,
.
bytes
=
8
,
.
type
=
TSDB_DATA_TYPE_BIGINT
},
{.
name
=
"blocks"
,
.
bytes
=
4
,
.
type
=
TSDB_DATA_TYPE_INT
},
{.
name
=
"storage_size"
,
.
bytes
=
8
,
.
type
=
TSDB_DATA_TYPE_BIGINT
},
{.
name
=
"compression_ratio"
,
.
bytes
=
8
,
.
type
=
TSDB_DATA_TYPE_DOUBLE
},
{.
name
=
"rows_in_mem"
,
.
bytes
=
4
,
.
type
=
TSDB_DATA_TYPE_INT
},
{.
name
=
"seek_header_time"
,
.
bytes
=
4
,
.
type
=
TSDB_DATA_TYPE_INT
},
};
static
const
SInfosTableSchema
userUsersSchema
[]
=
{{.
name
=
"name"
,
.
bytes
=
TSDB_USER_LEN
+
VARSTR_HEADER_SIZE
,
.
type
=
TSDB_DATA_TYPE_BINARY
},
{.
name
=
"privilege"
,
.
bytes
=
10
+
VARSTR_HEADER_SIZE
,
.
type
=
TSDB_DATA_TYPE_BINARY
},
{.
name
=
"create_time"
,
.
bytes
=
8
,
.
type
=
TSDB_DATA_TYPE_TIMESTAMP
},
{.
name
=
"account"
,
.
bytes
=
TSDB_USER_LEN
+
VARSTR_HEADER_SIZE
,
.
type
=
TSDB_DATA_TYPE_BINARY
},
};
static
const
SInfosTableSchema
vgroupsSchema
[]
=
{{.
name
=
"vgroup_id"
,
.
bytes
=
4
,
.
type
=
TSDB_DATA_TYPE_INT
},
{.
name
=
"db_name"
,
.
bytes
=
SYSTABLE_SCH_DB_NAME_LEN
,
.
type
=
TSDB_DATA_TYPE_BINARY
},
{.
name
=
"tables"
,
.
bytes
=
4
,
.
type
=
TSDB_DATA_TYPE_INT
},
{.
name
=
"status"
,
.
bytes
=
12
+
VARSTR_HEADER_SIZE
,
.
type
=
TSDB_DATA_TYPE_BINARY
},
{.
name
=
"onlines"
,
.
bytes
=
4
,
.
type
=
TSDB_DATA_TYPE_INT
},
{.
name
=
"v1_dnode"
,
.
bytes
=
4
,
.
type
=
TSDB_DATA_TYPE_INT
},
{.
name
=
"v1_status"
,
.
bytes
=
10
,
.
type
=
TSDB_DATA_TYPE_BINARY
},
{.
name
=
"v2_dnode"
,
.
bytes
=
4
,
.
type
=
TSDB_DATA_TYPE_INT
},
{.
name
=
"v2_status"
,
.
bytes
=
10
,
.
type
=
TSDB_DATA_TYPE_BINARY
},
{.
name
=
"v3_dnode"
,
.
bytes
=
4
,
.
type
=
TSDB_DATA_TYPE_INT
},
{.
name
=
"v3_status"
,
.
bytes
=
10
,
.
type
=
TSDB_DATA_TYPE_BINARY
},
{.
name
=
"compacting"
,
.
bytes
=
4
,
.
type
=
TSDB_DATA_TYPE_INT
},
{.
name
=
"nfiles"
,
.
bytes
=
4
,
.
type
=
TSDB_DATA_TYPE_INT
},
{.
name
=
"file_size"
,
.
bytes
=
4
,
.
type
=
TSDB_DATA_TYPE_INT
},
};
static
const
SInfosTableMeta
infosMeta
[]
=
{{
TSDB_INS_TABLE_DNODES
,
dnodesSchema
,
tListLen
(
dnodesSchema
)},
{
TSDB_INS_TABLE_MNODES
,
mnodesSchema
,
tListLen
(
mnodesSchema
)},
{
TSDB_INS_TABLE_MODULES
,
modulesSchema
,
tListLen
(
modulesSchema
)},
{
TSDB_INS_TABLE_QNODES
,
qnodesSchema
,
tListLen
(
qnodesSchema
)},
{
TSDB_INS_TABLE_USER_DATABASES
,
userDBSchema
,
tListLen
(
userDBSchema
)},
{
TSDB_INS_TABLE_USER_FUNCTIONS
,
userFuncSchema
,
tListLen
(
userFuncSchema
)},
{
TSDB_INS_TABLE_USER_INDEXES
,
userIdxSchema
,
tListLen
(
userIdxSchema
)},
{
TSDB_INS_TABLE_USER_STABLES
,
userStbsSchema
,
tListLen
(
userStbsSchema
)},
{
TSDB_INS_TABLE_USER_STREAMS
,
userStreamsSchema
,
tListLen
(
userStreamsSchema
)},
{
TSDB_INS_TABLE_USER_TABLES
,
userTblsSchema
,
tListLen
(
userTblsSchema
)},
{
TSDB_INS_TABLE_USER_TABLE_DISTRIBUTED
,
userTblDistSchema
,
tListLen
(
userTblDistSchema
)},
{
TSDB_INS_TABLE_USER_USERS
,
userUsersSchema
,
tListLen
(
userUsersSchema
)},
{
TSDB_INS_TABLE_VGROUPS
,
vgroupsSchema
,
tListLen
(
vgroupsSchema
)},
};
//connection/application/
{.
name
=
"table_name"
,
.
bytes
=
SYSTABLE_SCH_TABLE_NAME_LEN
,
.
type
=
TSDB_DATA_TYPE_BINARY
},
{.
name
=
"db_name"
,
.
bytes
=
SYSTABLE_SCH_DB_NAME_LEN
,
.
type
=
TSDB_DATA_TYPE_BINARY
},
{.
name
=
"create_time"
,
.
bytes
=
8
,
.
type
=
TSDB_DATA_TYPE_TIMESTAMP
},
{.
name
=
"columns"
,
.
bytes
=
4
,
.
type
=
TSDB_DATA_TYPE_INT
},
{.
name
=
"stable_name"
,
.
bytes
=
SYSTABLE_SCH_TABLE_NAME_LEN
,
.
type
=
TSDB_DATA_TYPE_BINARY
},
{.
name
=
"uid"
,
.
bytes
=
8
,
.
type
=
TSDB_DATA_TYPE_BIGINT
},
{.
name
=
"vgroup_id"
,
.
bytes
=
4
,
.
type
=
TSDB_DATA_TYPE_INT
},
{.
name
=
"ttl"
,
.
bytes
=
4
,
.
type
=
TSDB_DATA_TYPE_INT
},
{.
name
=
"table_comment"
,
.
bytes
=
4
,
.
type
=
TSDB_DATA_TYPE_INT
},
};
static
const
SInfosTableSchema
userTblDistSchema
[]
=
{
{.
name
=
"db_name"
,
.
bytes
=
32
,
.
type
=
TSDB_DATA_TYPE_BINARY
},
{.
name
=
"table_name"
,
.
bytes
=
SYSTABLE_SCH_DB_NAME_LEN
,
.
type
=
TSDB_DATA_TYPE_BINARY
},
{.
name
=
"distributed_histogram"
,
.
bytes
=
500
,
.
type
=
TSDB_DATA_TYPE_BINARY
},
{.
name
=
"min_of_rows"
,
.
bytes
=
4
,
.
type
=
TSDB_DATA_TYPE_INT
},
{.
name
=
"max_of_rows"
,
.
bytes
=
4
,
.
type
=
TSDB_DATA_TYPE_INT
},
{.
name
=
"avg_of_rows"
,
.
bytes
=
4
,
.
type
=
TSDB_DATA_TYPE_INT
},
{.
name
=
"stddev_of_rows"
,
.
bytes
=
4
,
.
type
=
TSDB_DATA_TYPE_INT
},
{.
name
=
"rows"
,
.
bytes
=
8
,
.
type
=
TSDB_DATA_TYPE_BIGINT
},
{.
name
=
"blocks"
,
.
bytes
=
4
,
.
type
=
TSDB_DATA_TYPE_INT
},
{.
name
=
"storage_size"
,
.
bytes
=
8
,
.
type
=
TSDB_DATA_TYPE_BIGINT
},
{.
name
=
"compression_ratio"
,
.
bytes
=
8
,
.
type
=
TSDB_DATA_TYPE_DOUBLE
},
{.
name
=
"rows_in_mem"
,
.
bytes
=
4
,
.
type
=
TSDB_DATA_TYPE_INT
},
{.
name
=
"seek_header_time"
,
.
bytes
=
4
,
.
type
=
TSDB_DATA_TYPE_INT
},
};
static
const
SInfosTableSchema
userUsersSchema
[]
=
{
{.
name
=
"name"
,
.
bytes
=
TSDB_USER_LEN
+
VARSTR_HEADER_SIZE
,
.
type
=
TSDB_DATA_TYPE_BINARY
},
{.
name
=
"privilege"
,
.
bytes
=
10
+
VARSTR_HEADER_SIZE
,
.
type
=
TSDB_DATA_TYPE_BINARY
},
{.
name
=
"create_time"
,
.
bytes
=
8
,
.
type
=
TSDB_DATA_TYPE_TIMESTAMP
},
{.
name
=
"account"
,
.
bytes
=
TSDB_USER_LEN
+
VARSTR_HEADER_SIZE
,
.
type
=
TSDB_DATA_TYPE_BINARY
},
};
static
const
SInfosTableSchema
vgroupsSchema
[]
=
{
{.
name
=
"vgroup_id"
,
.
bytes
=
4
,
.
type
=
TSDB_DATA_TYPE_INT
},
{.
name
=
"db_name"
,
.
bytes
=
SYSTABLE_SCH_DB_NAME_LEN
,
.
type
=
TSDB_DATA_TYPE_BINARY
},
{.
name
=
"tables"
,
.
bytes
=
4
,
.
type
=
TSDB_DATA_TYPE_INT
},
{.
name
=
"status"
,
.
bytes
=
12
+
VARSTR_HEADER_SIZE
,
.
type
=
TSDB_DATA_TYPE_BINARY
},
{.
name
=
"onlines"
,
.
bytes
=
4
,
.
type
=
TSDB_DATA_TYPE_INT
},
{.
name
=
"v1_dnode"
,
.
bytes
=
4
,
.
type
=
TSDB_DATA_TYPE_INT
},
{.
name
=
"v1_status"
,
.
bytes
=
10
,
.
type
=
TSDB_DATA_TYPE_BINARY
},
{.
name
=
"v2_dnode"
,
.
bytes
=
4
,
.
type
=
TSDB_DATA_TYPE_INT
},
{.
name
=
"v2_status"
,
.
bytes
=
10
,
.
type
=
TSDB_DATA_TYPE_BINARY
},
{.
name
=
"v3_dnode"
,
.
bytes
=
4
,
.
type
=
TSDB_DATA_TYPE_INT
},
{.
name
=
"v3_status"
,
.
bytes
=
10
,
.
type
=
TSDB_DATA_TYPE_BINARY
},
{.
name
=
"compacting"
,
.
bytes
=
4
,
.
type
=
TSDB_DATA_TYPE_INT
},
{.
name
=
"nfiles"
,
.
bytes
=
4
,
.
type
=
TSDB_DATA_TYPE_INT
},
{.
name
=
"file_size"
,
.
bytes
=
4
,
.
type
=
TSDB_DATA_TYPE_INT
},
};
// TODO put into perf schema
static
const
SInfosTableSchema
topicSchema
[]
=
{
{.
name
=
"topic_name"
,
.
bytes
=
SYSTABLE_SCH_TABLE_NAME_LEN
,
.
type
=
TSDB_DATA_TYPE_BINARY
},
{.
name
=
"db_name"
,
.
bytes
=
SYSTABLE_SCH_DB_NAME_LEN
,
.
type
=
TSDB_DATA_TYPE_BINARY
},
{.
name
=
"create_time"
,
.
bytes
=
8
,
.
type
=
TSDB_DATA_TYPE_TIMESTAMP
},
{.
name
=
"sql"
,
.
bytes
=
1024
,
.
type
=
TSDB_DATA_TYPE_BINARY
},
{.
name
=
"row_len"
,
.
bytes
=
4
,
.
type
=
TSDB_DATA_TYPE_INT
},
};
static
const
SInfosTableSchema
consumerSchema
[]
=
{
{.
name
=
"client_id"
,
.
bytes
=
SYSTABLE_SCH_TABLE_NAME_LEN
,
.
type
=
TSDB_DATA_TYPE_BINARY
},
{.
name
=
"group_id"
,
.
bytes
=
SYSTABLE_SCH_TABLE_NAME_LEN
,
.
type
=
TSDB_DATA_TYPE_BINARY
},
{.
name
=
"pid"
,
.
bytes
=
4
,
.
type
=
TSDB_DATA_TYPE_INT
},
{.
name
=
"status"
,
.
bytes
=
4
,
.
type
=
TSDB_DATA_TYPE_INT
},
// ep
// up time
// topics
};
static
const
SInfosTableSchema
subscribeSchema
[]
=
{
{.
name
=
"topic_name"
,
.
bytes
=
SYSTABLE_SCH_TABLE_NAME_LEN
,
.
type
=
TSDB_DATA_TYPE_BINARY
},
{.
name
=
"group_id"
,
.
bytes
=
SYSTABLE_SCH_TABLE_NAME_LEN
,
.
type
=
TSDB_DATA_TYPE_BINARY
},
{.
name
=
"vgroup_id"
,
.
bytes
=
4
,
.
type
=
TSDB_DATA_TYPE_INT
},
{.
name
=
"client_id"
,
.
bytes
=
SYSTABLE_SCH_TABLE_NAME_LEN
,
.
type
=
TSDB_DATA_TYPE_BINARY
},
};
static
const
SInfosTableMeta
infosMeta
[]
=
{
{
TSDB_INS_TABLE_DNODES
,
dnodesSchema
,
tListLen
(
dnodesSchema
)},
{
TSDB_INS_TABLE_MNODES
,
mnodesSchema
,
tListLen
(
mnodesSchema
)},
{
TSDB_INS_TABLE_MODULES
,
modulesSchema
,
tListLen
(
modulesSchema
)},
{
TSDB_INS_TABLE_QNODES
,
qnodesSchema
,
tListLen
(
qnodesSchema
)},
{
TSDB_INS_TABLE_USER_DATABASES
,
userDBSchema
,
tListLen
(
userDBSchema
)},
{
TSDB_INS_TABLE_USER_FUNCTIONS
,
userFuncSchema
,
tListLen
(
userFuncSchema
)},
{
TSDB_INS_TABLE_USER_INDEXES
,
userIdxSchema
,
tListLen
(
userIdxSchema
)},
{
TSDB_INS_TABLE_USER_STABLES
,
userStbsSchema
,
tListLen
(
userStbsSchema
)},
{
TSDB_INS_TABLE_USER_STREAMS
,
userStreamsSchema
,
tListLen
(
userStreamsSchema
)},
{
TSDB_INS_TABLE_USER_TABLES
,
userTblsSchema
,
tListLen
(
userTblsSchema
)},
{
TSDB_INS_TABLE_USER_TABLE_DISTRIBUTED
,
userTblDistSchema
,
tListLen
(
userTblDistSchema
)},
{
TSDB_INS_TABLE_USER_USERS
,
userUsersSchema
,
tListLen
(
userUsersSchema
)},
{
TSDB_INS_TABLE_VGROUPS
,
vgroupsSchema
,
tListLen
(
vgroupsSchema
)},
};
// connection/application/
int32_t
mndInitInfosTableSchema
(
const
SInfosTableSchema
*
pSrc
,
int32_t
colNum
,
SSchema
**
pDst
)
{
SSchema
*
schema
=
taosMemoryCalloc
(
colNum
,
sizeof
(
SSchema
));
if
(
NULL
==
schema
)
{
...
...
@@ -161,7 +201,7 @@ int32_t mndInitInfosTableSchema(const SInfosTableSchema *pSrc, int32_t colNum, S
for
(
int32_t
i
=
0
;
i
<
colNum
;
++
i
)
{
strcpy
(
schema
[
i
].
name
,
pSrc
[
i
].
name
);
schema
[
i
].
type
=
pSrc
[
i
].
type
;
schema
[
i
].
colId
=
i
+
1
;
schema
[
i
].
bytes
=
pSrc
[
i
].
bytes
;
...
...
@@ -182,11 +222,11 @@ int32_t mndInsInitMeta(SHashObj *hash) {
for
(
int32_t
i
=
0
;
i
<
tListLen
(
infosMeta
);
++
i
)
{
strcpy
(
meta
.
tbName
,
infosMeta
[
i
].
name
);
meta
.
numOfColumns
=
infosMeta
[
i
].
colNum
;
if
(
mndInitInfosTableSchema
(
infosMeta
[
i
].
schema
,
infosMeta
[
i
].
colNum
,
&
meta
.
pSchemas
))
{
return
-
1
;
}
if
(
taosHashPut
(
hash
,
meta
.
tbName
,
strlen
(
meta
.
tbName
),
&
meta
,
sizeof
(
meta
)))
{
terrno
=
TSDB_CODE_OUT_OF_MEMORY
;
return
-
1
;
...
...
@@ -210,7 +250,7 @@ int32_t mndBuildInsTableSchema(SMnode *pMnode, const char *dbFName, const char *
}
*
pRsp
=
*
meta
;
pRsp
->
pSchemas
=
taosMemoryCalloc
(
meta
->
numOfColumns
,
sizeof
(
SSchema
));
if
(
pRsp
->
pSchemas
==
NULL
)
{
terrno
=
TSDB_CODE_OUT_OF_MEMORY
;
...
...
@@ -237,13 +277,13 @@ void mndCleanupInfos(SMnode *pMnode) {
if
(
NULL
==
pMnode
->
infosMeta
)
{
return
;
}
void
*
pIter
=
taosHashIterate
(
pMnode
->
infosMeta
,
NULL
);
while
(
pIter
)
{
STableMetaRsp
*
meta
=
(
STableMetaRsp
*
)
pIter
;
taosMemoryFreeClear
(
meta
->
pSchemas
);
pIter
=
taosHashIterate
(
pMnode
->
infosMeta
,
pIter
);
}
...
...
@@ -251,5 +291,3 @@ void mndCleanupInfos(SMnode *pMnode) {
pMnode
->
infosMeta
=
NULL
;
}
source/dnode/mnode/impl/src/mndSubscribe.c
浏览文件 @
5b2d664d
...
...
@@ -62,8 +62,6 @@ static int32_t mndPersistMqSetConnReq(SMnode *pMnode, STrans *pTrans, const SMqT
static
int32_t
mndPersistRebalanceMsg
(
SMnode
*
pMnode
,
STrans
*
pTrans
,
const
SMqConsumerEp
*
pConsumerEp
);
static
int32_t
mndInitUnassignedVg
(
SMnode
*
pMnode
,
const
SMqTopicObj
*
pTopic
,
SMqSubscribeObj
*
pSub
);
int32_t
mndInitSubscribe
(
SMnode
*
pMnode
)
{
SSdbTable
table
=
{.
sdbType
=
SDB_SUBSCRIBE
,
.
keyType
=
SDB_KEY_BINARY
,
...
...
@@ -98,14 +96,6 @@ static SMqSubscribeObj *mndCreateSubscription(SMnode *pMnode, const SMqTopicObj
return
NULL
;
}
#if 0
if (mndInitUnassignedVg(pMnode, pTopic, pSub) < 0) {
terrno = TSDB_CODE_OUT_OF_MEMORY;
tDeleteSMqSubscribeObj(pSub);
taosMemoryFree(pSub);
return NULL;
}
#endif
// TODO: disable alter subscribed table
return
pSub
;
}
...
...
@@ -210,45 +200,6 @@ static int32_t mndPersistCancelConnReq(SMnode *pMnode, STrans *pTrans, const SMq
return
0
;
}
#if 0
static int32_t mndProcessResetOffsetReq(SNodeMsg *pMsg) {
SMnode *pMnode = pMsg->pNode;
uint8_t *str = pMsg->rpcMsg.pCont;
SMqCMResetOffsetReq req;
SCoder decoder;
tCoderInit(&decoder, TD_LITTLE_ENDIAN, str, pMsg->rpcMsg.contLen, TD_DECODER);
tDecodeSMqCMResetOffsetReq(&decoder, &req);
SHashObj *pHash = taosHashInit(64, taosGetDefaultHashFunction(TSDB_DATA_TYPE_INT), false, HASH_NO_LOCK);
if (pHash == NULL) {
return -1;
}
for (int32_t i = 0; i < req.num; i++) {
SMqOffset *pOffset = &req.offsets[i];
SMqVgOffsets *pVgOffset = taosHashGet(pHash, &pOffset->vgId, sizeof(int32_t));
if (pVgOffset == NULL) {
pVgOffset = taosMemoryMalloc(sizeof(SMqVgOffsets));
if (pVgOffset == NULL) {
return -1;
}
pVgOffset->offsets = taosArrayInit(0, sizeof(void *));
taosArrayPush(pVgOffset->offsets, &pOffset);
}
taosHashPut(pHash, &pOffset->vgId, sizeof(int32_t), &pVgOffset, sizeof(void *));
}
STrans *pTrans = mndTransCreate(pMnode, TRN_POLICY_ROLLBACK, &pMsg->rpcMsg);
if (pTrans == NULL) {
mError("mq-reset-offset: failed since %s", terrstr());
return -1;
}
return 0;
}
#endif
static
int32_t
mndProcessGetSubEpReq
(
SNodeMsg
*
pMsg
)
{
SMnode
*
pMnode
=
pMsg
->
pNode
;
SMqCMGetSubEpReq
*
pReq
=
(
SMqCMGetSubEpReq
*
)
pMsg
->
rpcMsg
.
pCont
;
...
...
@@ -574,251 +525,6 @@ static int32_t mndProcessDoRebalanceMsg(SNodeMsg *pMsg) {
return
0
;
}
#if 0
for (int32_t j = 0; j < consumerNum; j++) {
bool changed = false;
bool unfished = false;
bool canUseLeft = imbalanceSolved < imbalanceVg;
bool mustUseLeft = canUseLeft && (imbalanceVg - imbalanceSolved >= consumerNum - j);
ASSERT(imbalanceVg - imbalanceSolved <= consumerNum - j);
int32_t maxVg = vgEachConsumer + canUseLeft;
int32_t minVg = vgEachConsumer + mustUseLeft;
SMqSubConsumer *pSubConsumer = taosArrayGet(pSub->consumers, j);
int32_t vgThisConsumerBeforeRb = taosArrayGetSize(pSubConsumer->vgInfo);
int32_t vgThisConsumerAfterRb;
if (vgThisConsumerBeforeRb > maxVg) {
vgThisConsumerAfterRb = maxVg;
imbalanceSolved++;
changed = true;
} else if (vgThisConsumerBeforeRb < minVg) {
vgThisConsumerAfterRb = minVg;
if (mustUseLeft) imbalanceSolved++;
changed = true;
} else {
vgThisConsumerAfterRb = vgThisConsumerBeforeRb;
}
if (vgThisConsumerBeforeRb > vgThisConsumerAfterRb) {
while (taosArrayGetSize(pSubConsumer->vgInfo) > vgThisConsumerAfterRb) {
// put into unassigned
SMqConsumerEp *pConsumerEp = taosArrayPop(pSubConsumer->vgInfo);
ASSERT(pConsumerEp != NULL);
ASSERT(pConsumerEp->consumerId == pSubConsumer->consumerId);
taosArrayPush(unassignedVgStash, pConsumerEp);
}
} else if (vgThisConsumerBeforeRb < vgThisConsumerAfterRb) {
// assign from unassigned
while (taosArrayGetSize(pSubConsumer->vgInfo) < vgThisConsumerAfterRb) {
// if no unassgined, save j
if (taosArrayGetSize(unassignedVgStash) == 0) {
taosArrayPush(unassignedConsumerIdx, &j);
unfished = true;
break;
}
// assign vg to consumer
SMqConsumerEp *pConsumerEp = taosArrayPop(unassignedVgStash);
ASSERT(pConsumerEp != NULL);
pConsumerEp->oldConsumerId = pConsumerEp->consumerId;
pConsumerEp->consumerId = pSubConsumer->consumerId;
taosArrayPush(pSubConsumer->vgInfo, pConsumerEp);
// build msg and persist into trans
}
}
if (changed && !unfished) {
SMqConsumerObj *pRebConsumer = mndAcquireConsumer(pMnode, pSubConsumer->consumerId);
pRebConsumer->epoch++;
if (vgThisConsumerAfterRb != 0) {
atomic_store_32(&pRebConsumer->status, MQ_CONSUMER_STATUS__ACTIVE);
} else {
atomic_store_32(&pRebConsumer->status, MQ_CONSUMER_STATUS__IDLE);
}
SSdbRaw *pConsumerRaw = mndConsumerActionEncode(pRebConsumer);
sdbSetRawStatus(pConsumerRaw, SDB_STATUS_READY);
mndTransAppendRedolog(pTrans, pConsumerRaw);
mndReleaseConsumer(pMnode, pRebConsumer);
// TODO: save history
}
}
for (int32_t j = 0; j < taosArrayGetSize(unassignedConsumerIdx); j++) {
bool canUseLeft = imbalanceSolved < imbalanceVg;
int32_t consumerIdx = *(int32_t *)taosArrayGet(unassignedConsumerIdx, j);
SMqSubConsumer *pSubConsumer = taosArrayGet(pSub->consumers, consumerIdx);
if (canUseLeft) imbalanceSolved++;
// must use
int32_t vgThisConsumerAfterRb = taosArrayGetSize(pSubConsumer->vgInfo) + canUseLeft;
while (taosArrayGetSize(pSubConsumer->vgInfo) < vgEachConsumer + canUseLeft) {
// assign vg to consumer
SMqConsumerEp *pConsumerEp = taosArrayPop(unassignedVgStash);
ASSERT(pConsumerEp != NULL);
pConsumerEp->oldConsumerId = pConsumerEp->consumerId;
pConsumerEp->consumerId = pSubConsumer->consumerId;
taosArrayPush(pSubConsumer->vgInfo, pConsumerEp);
// build msg and persist into trans
}
SMqConsumerObj *pRebConsumer = mndAcquireConsumer(pMnode, pSubConsumer->consumerId);
pRebConsumer->epoch++;
atomic_store_32(&pRebConsumer->status, MQ_CONSUMER_STATUS__ACTIVE);
SSdbRaw *pConsumerRaw = mndConsumerActionEncode(pRebConsumer);
sdbSetRawStatus(pConsumerRaw, SDB_STATUS_READY);
mndTransAppendRedolog(pTrans, pConsumerRaw);
mndReleaseConsumer(pMnode, pRebConsumer);
// TODO: save history
}
#endif
#if 0
//update consumer status for the subscribption
for (int32_t i = 0; i < taosArrayGetSize(pSub->assigned); i++) {
SMqConsumerEp *pCEp = taosArrayGet(pSub->assigned, i);
int64_t consumerId = pCEp->consumerId;
if (pCEp->status != -1) {
int32_t consumerHbStatus = atomic_fetch_add_32(&pCEp->consumerHbStatus, 1);
if (consumerHbStatus < MND_SUBSCRIBE_REBALANCE_CNT) {
continue;
}
// put consumer into lostConsumer
SMqConsumerEp* lostConsumer = taosArrayPush(pSub->lostConsumer, pCEp);
lostConsumer->qmsg = NULL;
// put vg into unassigned
taosArrayPush(pSub->unassignedVg, pCEp);
// remove from assigned
// TODO: swap with last one, reduce size and reset i
taosArrayRemove(pSub->assigned, i);
// remove from available consumer
for (int32_t j = 0; j < taosArrayGetSize(pSub->availConsumer); j++) {
if (*(int64_t *)taosArrayGet(pSub->availConsumer, i) == pCEp->consumerId) {
taosArrayRemove(pSub->availConsumer, j);
break;
}
// TODO: acquire consumer, set status to unavail
}
#if 0
SMqConsumerObj* pConsumer = mndAcquireConsumer(pMnode, consumerId);
pConsumer->epoch++;
printf("current epoch %ld size %ld", pConsumer->epoch, pConsumer->topics->size);
SSdbRaw* pRaw = mndConsumerActionEncode(pConsumer);
sdbSetRawStatus(pRaw, SDB_STATUS_READY);
sdbWriteNotFree(pMnode->pSdb, pRaw);
mndReleaseConsumer(pMnode, pConsumer);
#endif
}
}
// no available consumer, skip rebalance
if (taosArrayGetSize(pSub->availConsumer) == 0) {
continue;
}
taosArrayGet(pSub->availConsumer, 0);
// rebalance condition1 : have unassigned vg
// assign vg to a consumer, trying to find the least assigned one
if ((sz = taosArrayGetSize(pSub->unassignedVg)) > 0) {
char *topic = NULL;
char *cgroup = NULL;
mndSplitSubscribeKey(pSub->key, &topic, &cgroup);
SMqTopicObj *pTopic = mndAcquireTopic(pMnode, topic);
STrans *pTrans = mndTransCreate(pMnode, TRN_POLICY_RETRY, &pMsg->rpcMsg);
for (int32_t i = 0; i < sz; i++) {
int64_t consumerId = *(int64_t *)taosArrayGet(pSub->availConsumer, pSub->nextConsumerIdx);
pSub->nextConsumerIdx = (pSub->nextConsumerIdx + 1) % taosArrayGetSize(pSub->availConsumer);
SMqConsumerEp *pCEp = taosArrayPop(pSub->unassignedVg);
pCEp->oldConsumerId = pCEp->consumerId;
pCEp->consumerId = consumerId;
taosArrayPush(pSub->assigned, pCEp);
SMqConsumerObj *pConsumer = mndAcquireConsumer(pMnode, consumerId);
pConsumer->epoch++;
SSdbRaw* pConsumerRaw = mndConsumerActionEncode(pConsumer);
sdbSetRawStatus(pConsumerRaw, SDB_STATUS_READY);
sdbWrite(pMnode->pSdb, pConsumerRaw);
mndReleaseConsumer(pMnode, pConsumer);
void* msg;
int32_t msgLen;
mndBuildRebalanceMsg(&msg, &msgLen, pTopic, pCEp, cgroup, topic);
// persist msg
STransAction action = {0};
action.epSet = pCEp->epSet;
action.pCont = msg;
action.contLen = sizeof(SMsgHead) + msgLen;
action.msgType = TDMT_VND_MQ_SET_CONN;
mndTransAppendRedoAction(pTrans, &action);
// persist data
SSdbRaw *pRaw = mndSubActionEncode(pSub);
sdbSetRawStatus(pRaw, SDB_STATUS_READY);
mndTransAppendRedolog(pTrans, pRaw);
}
if (mndTransPrepare(pMnode, pTrans) != 0) {
mError("trans:%d, failed to prepare since %s", pTrans->id, terrstr());
}
mndReleaseTopic(pMnode, pTopic);
mndTransDrop(pTrans);
taosMemoryFreeClear(topic);
taosMemoryFreeClear(cgroup);
}
// rebalance condition2 : imbalance assignment
}
return 0;
}
#endif
#if 0
static int32_t mndInitUnassignedVg(SMnode *pMnode, const SMqTopicObj *pTopic, SMqSubscribeObj *pSub) {
SSdb *pSdb = pMnode->pSdb;
SVgObj *pVgroup = NULL;
SQueryPlan *pPlan = qStringToQueryPlan(pTopic->physicalPlan);
SArray *pArray = NULL;
SNodeListNode *inner = (SNodeListNode*)nodesListGetNode(pPlan->pSubplans, 0);
SSubplan *plan = (SSubplan*)nodesListGetNode(inner->pNodeList, 0);
SArray *unassignedVg = pSub->unassignedVg;
void *pIter = NULL;
while (1) {
pIter = sdbFetch(pSdb, SDB_VGROUP, pIter, (void **)&pVgroup);
if (pIter == NULL) break;
if (pVgroup->dbUid != pTopic->dbUid) {
sdbRelease(pSdb, pVgroup);
continue;
}
pSub->vgNum++;
plan->execNode.nodeId = pVgroup->vgId;
plan->execNode.epset = mndGetVgroupEpset(pMnode, pVgroup);
if (schedulerConvertDagToTaskList(pPlan, &pArray) < 0) {
terrno = TSDB_CODE_MND_UNSUPPORTED_TOPIC;
mError("unsupport topic: %s, sql: %s", pTopic->name, pTopic->sql);
return -1;
}
SMqConsumerEp consumerEp = {0};
consumerEp.status = 0;
consumerEp.consumerId = -1;
STaskInfo *pTaskInfo = taosArrayGet(pArray, 0);
consumerEp.epSet = pTaskInfo->addr.epset;
consumerEp.vgId = pTaskInfo->addr.nodeId;
ASSERT(consumerEp.vgId == pVgroup->vgId);
consumerEp.qmsg = strdup(pTaskInfo->msg->msg);
taosArrayPush(unassignedVg, &consumerEp);
// TODO: free taskInfo
taosArrayDestroy(pArray);
}
/*qDestroyQueryDag(pDag);*/
return 0;
}
#endif
static
int32_t
mndPersistMqSetConnReq
(
SMnode
*
pMnode
,
STrans
*
pTrans
,
const
SMqTopicObj
*
pTopic
,
const
char
*
cgroup
,
const
SMqConsumerEp
*
pConsumerEp
)
{
ASSERT
(
pConsumerEp
->
oldConsumerId
==
-
1
);
...
...
@@ -1140,7 +846,7 @@ static int32_t mndProcessSubscribeReq(SNodeMsg *pMsg) {
}
}
if
(
oldSub
)
taosArrayDestroyEx
(
oldSub
,
(
void
(
*
)(
void
*
))
taosMemoryFree
);
if
(
oldSub
)
taosArrayDestroyEx
(
oldSub
,
(
void
(
*
)(
void
*
))
taosMemoryFree
);
// persist consumerObj
SSdbRaw
*
pConsumerRaw
=
mndConsumerActionEncode
(
pConsumer
);
...
...
source/dnode/mnode/impl/src/mndTopic.c
浏览文件 @
5b2d664d
...
...
@@ -65,9 +65,11 @@ void mndCleanupTopic(SMnode *pMnode) {}
SSdbRaw
*
mndTopicActionEncode
(
SMqTopicObj
*
pTopic
)
{
terrno
=
TSDB_CODE_OUT_OF_MEMORY
;
int32_t
logicalPlanLen
=
strlen
(
pTopic
->
logicalPlan
)
+
1
;
int32_t
physicalPlanLen
=
strlen
(
pTopic
->
physicalPlan
)
+
1
;
int32_t
size
=
sizeof
(
SMqTopicObj
)
+
logicalPlanLen
+
physicalPlanLen
+
pTopic
->
sqlLen
+
MND_TOPIC_RESERVE_SIZE
;
int32_t
logicalPlanLen
=
strlen
(
pTopic
->
logicalPlan
)
+
1
;
int32_t
physicalPlanLen
=
strlen
(
pTopic
->
physicalPlan
)
+
1
;
int32_t
swLen
=
taosEncodeSSchemaWrapper
(
NULL
,
&
pTopic
->
schema
);
int32_t
size
=
sizeof
(
SMqTopicObj
)
+
logicalPlanLen
+
physicalPlanLen
+
pTopic
->
sqlLen
+
swLen
+
MND_TOPIC_RESERVE_SIZE
;
SSdbRaw
*
pRaw
=
sdbAllocRaw
(
SDB_TOPIC
,
MND_TOPIC_VER_NUMBER
,
size
);
if
(
pRaw
==
NULL
)
goto
TOPIC_ENCODE_OVER
;
...
...
@@ -86,8 +88,7 @@ SSdbRaw *mndTopicActionEncode(SMqTopicObj *pTopic) {
SDB_SET_INT32
(
pRaw
,
dataPos
,
physicalPlanLen
,
TOPIC_ENCODE_OVER
);
SDB_SET_BINARY
(
pRaw
,
dataPos
,
pTopic
->
physicalPlan
,
physicalPlanLen
,
TOPIC_ENCODE_OVER
);
int32_t
swLen
=
taosEncodeSSchemaWrapper
(
NULL
,
&
pTopic
->
schema
);
void
*
swBuf
=
taosMemoryMalloc
(
swLen
);
void
*
swBuf
=
taosMemoryMalloc
(
swLen
);
if
(
swBuf
==
NULL
)
{
goto
TOPIC_ENCODE_OVER
;
}
...
...
source/dnode/mnode/impl/src/mndTrans.c
浏览文件 @
5b2d664d
...
...
@@ -771,7 +771,7 @@ static void mndTransSendRpcRsp(SMnode *pMnode, STrans *pTrans) {
.
ahandle
=
pTrans
->
rpcAHandle
,
.
pCont
=
rpcCont
,
.
contLen
=
pTrans
->
rpcRspLen
};
tmsgSendRsp
(
&
pMnode
->
msgCb
,
&
rspMsg
);
tmsgSendRsp
(
&
rspMsg
);
pTrans
->
rpcHandle
=
NULL
;
pTrans
->
rpcRsp
=
NULL
;
pTrans
->
rpcRspLen
=
0
;
...
...
@@ -898,7 +898,7 @@ static int32_t mndTransSendActionMsg(SMnode *pMnode, STrans *pTrans, SArray *pAr
pAction
->
msgReceived
=
0
;
pAction
->
errCode
=
0
;
}
else
{
m
Debug
(
"trans:%d, action:%d not send since %s"
,
pTrans
->
id
,
action
,
terrstr
());
m
Error
(
"trans:%d, action:%d not send since %s"
,
pTrans
->
id
,
action
,
terrstr
());
return
-
1
;
}
}
...
...
@@ -938,7 +938,7 @@ static int32_t mndTransExecuteActions(SMnode *pMnode, STrans *pTrans, SArray *pA
return
errCode
;
}
}
else
{
mDebug
(
"trans:%d, %d of %d actions execut
ed, code:0x%04x"
,
pTrans
->
id
,
numOfReceived
,
numOfActions
,
errCode
&
0XFFFF
);
mDebug
(
"trans:%d, %d of %d actions execut
ing"
,
pTrans
->
id
,
numOfReceived
,
numOfActions
);
return
TSDB_CODE_MND_ACTION_IN_PROGRESS
;
}
}
...
...
source/dnode/vnode/src/tq/tq.c
浏览文件 @
5b2d664d
...
...
@@ -275,7 +275,7 @@ int32_t tqProcessPollReq(STQ* pTq, SRpcMsg* pMsg) {
pMsg
->
pCont
=
NULL
;
pMsg
->
contLen
=
0
;
pMsg
->
code
=
-
1
;
rpcSendResponse
(
pMsg
);
tmsgSendRsp
(
pMsg
);
return
0
;
}
...
...
@@ -340,7 +340,7 @@ int32_t tqProcessPollReq(STQ* pTq, SRpcMsg* pMsg) {
pMsg
->
pCont
=
buf
;
pMsg
->
contLen
=
tlen
;
pMsg
->
code
=
0
;
rpcSendResponse
(
pMsg
);
tmsgSendRsp
(
pMsg
);
return
0
;
}
}
else
{
...
...
@@ -356,6 +356,7 @@ int32_t tqProcessPollReq(STQ* pTq, SRpcMsg* pMsg) {
void
*
buf
=
rpcMallocCont
(
tlen
);
if
(
buf
==
NULL
)
{
pMsg
->
code
=
-
1
;
ASSERT
(
0
);
return
-
1
;
}
((
SMqRspHead
*
)
buf
)
->
mqMsgType
=
TMQ_MSG_TYPE__POLL_RSP
;
...
...
@@ -367,7 +368,7 @@ int32_t tqProcessPollReq(STQ* pTq, SRpcMsg* pMsg) {
pMsg
->
pCont
=
buf
;
pMsg
->
contLen
=
tlen
;
pMsg
->
code
=
0
;
rpcSendResponse
(
pMsg
);
tmsgSendRsp
(
pMsg
);
/*}*/
return
0
;
...
...
source/dnode/vnode/src/tq/tqRead.c
浏览文件 @
5b2d664d
...
...
@@ -114,10 +114,9 @@ SArray* tqRetrieveDataBlock(STqReadHandle* pHandle) {
SSchemaWrapper
*
pSchemaWrapper
=
pHandle
->
pSchemaWrapper
;
int32_t
numOfRows
=
pHandle
->
pBlock
->
numOfRows
;
int32_t
numOfCols
=
pHandle
->
pSchema
->
numOfCols
;
/*int32_t numOfCols = pHandle->pSchema->numOfCols;*/
int32_t
colNumNeed
=
taosArrayGetSize
(
pHandle
->
pColIdList
);
// TODO: stable case
if
(
colNumNeed
>
pSchemaWrapper
->
nCols
)
{
colNumNeed
=
pSchemaWrapper
->
nCols
;
}
...
...
@@ -138,58 +137,24 @@ SArray* tqRetrieveDataBlock(STqReadHandle* pHandle) {
colNeed
++
;
}
else
{
SColumnInfoData
colInfo
=
{
0
};
int
sz
=
numOfRows
*
pColSchema
->
bytes
;
/*int sz = numOfRows * pColSchema->bytes;*/
colInfo
.
info
.
bytes
=
pColSchema
->
bytes
;
colInfo
.
info
.
colId
=
pColSchema
->
colId
;
colInfo
.
info
.
type
=
pColSchema
->
type
;
colInfo
.
pData
=
taosMemoryCalloc
(
1
,
sz
);
if
(
colInfo
.
pData
==
NULL
)
{
// TODO free
taosArrayDestroy
(
pArray
);
if
(
blockDataEnsureColumnCapacity
(
&
colInfo
,
numOfRows
)
<
0
)
{
taosArrayDestroyEx
(
pArray
,
(
void
(
*
)(
void
*
))
tDeleteSSDataBlock
);
return
NULL
;
}
blockDataEnsureColumnCapacity
(
&
colInfo
,
numOfRows
);
taosArrayPush
(
pArray
,
&
colInfo
);
colMeta
++
;
colNeed
++
;
}
}
#if 0
int j = 0;
for (int32_t i = 0; i < colNumNeed; i++) {
col_id_t colId = *(col_id_t*)taosArrayGet(pHandle->pColIdList, i);
while (j < pSchemaWrapper->nCols && pSchemaWrapper->pSchema[j].colId < colId) {
j++;
}
if (j >= pSchemaWrapper->nCols) {
continue;
}
SSchema* pColSchema = &pSchemaWrapper->pSchema[j];
SColumnInfoData colInfo = {0};
int sz = numOfRows * pColSchema->bytes;
colInfo.info.bytes = pColSchema->bytes;
colInfo.info.colId = colId;
colInfo.info.type = pColSchema->type;
colInfo.pData = taosMemoryCalloc(1, sz);
if (colInfo.pData == NULL) {
// TODO free
taosArrayDestroy(pArray);
return NULL;
}
blockDataEnsureColumnCapacity(&colInfo, numOfRows);
taosArrayPush(pArray, &colInfo);
}
#endif
STSRowIter
iter
=
{
0
};
tdSTSRowIterInit
(
&
iter
,
pTschema
);
STSRow
*
row
;
// int32_t kvIdx = 0;
int32_t
curRow
=
0
;
tInitSubmitBlkIter
(
pHandle
->
pBlock
,
&
pHandle
->
blkIter
);
while
((
row
=
tGetSubmitBlkNext
(
&
pHandle
->
blkIter
))
!=
NULL
)
{
...
...
@@ -202,25 +167,9 @@ SArray* tqRetrieveDataBlock(STqReadHandle* pHandle) {
if
(
!
tdSTSRowIterNext
(
&
iter
,
pColData
->
info
.
colId
,
pColData
->
info
.
type
,
&
sVal
))
{
break
;
}
memcpy
(
POINTER_SHIFT
(
pColData
->
pData
,
curRow
*
pColData
->
info
.
bytes
),
sVal
.
val
,
pColData
->
info
.
bytes
);
}
#if 0
for (int32_t i = 0; i < colNumNeed; i++) {
SColumnInfoData* pColData = taosArrayGet(pArray, i);
STColumn* pCol = schemaColAt(pTschema, i);
// TODO
if(pCol->colId != pColData->info.colId) {
continue;
}
// void* val = tdGetMemRowDataOfColEx(row, pCol->colId, pCol->type, TD_DATA_ROW_HEAD_SIZE + pCol->offset, &kvIdx);
SCellVal sVal = {0};
if (!tdSTSRowIterNext(&iter, pCol->colId, pCol->type, &sVal)) {
// TODO: reach end
break;
}
memcpy(POINTER_SHIFT(pColData->pData, curRow * pCol->bytes), sVal.val, pCol->bytes);
// TODO handle null
colDataAppend
(
pColData
,
curRow
,
sVal
.
val
,
sVal
.
valType
==
TD_VTYPE_NULL
);
}
#endif
curRow
++
;
}
return
pArray
;
...
...
source/dnode/vnode/src/vnd/vnodeQuery.c
浏览文件 @
5b2d664d
...
...
@@ -205,8 +205,7 @@ _exit:
rpcMsg
.
contLen
=
rspLen
;
rpcMsg
.
code
=
code
;
rpcSendResponse
(
&
rpcMsg
);
tmsgSendRsp
(
&
rpcMsg
);
return
TSDB_CODE_SUCCESS
;
}
...
...
@@ -276,8 +275,7 @@ static int32_t vnodeGetTableList(SVnode *pVnode, SRpcMsg *pMsg) {
.
code
=
0
,
};
rpcSendResponse
(
&
rpcMsg
);
tmsgSendRsp
(
&
rpcMsg
);
taosArrayDestroyEx
(
pArray
,
freeItemHelper
);
return
0
;
}
source/libs/executor/src/executor.c
浏览文件 @
5b2d664d
...
...
@@ -14,12 +14,12 @@
*/
#include "executor.h"
#include "tdatablock.h"
#include "executorimpl.h"
#include "planner.h"
#include "tdatablock.h"
#include "vnode.h"
static
int32_t
doSetStreamBlock
(
SOperatorInfo
*
pOperator
,
void
*
*
input
,
size_t
numOfBlocks
,
int32_t
type
,
char
*
id
)
{
static
int32_t
doSetStreamBlock
(
SOperatorInfo
*
pOperator
,
void
*
input
,
size_t
numOfBlocks
,
int32_t
type
,
char
*
id
)
{
ASSERT
(
pOperator
!=
NULL
);
if
(
pOperator
->
operatorType
!=
QUERY_NODE_PHYSICAL_PLAN_STREAM_SCAN
)
{
if
(
pOperator
->
numOfDownstream
==
0
)
{
...
...
@@ -44,17 +44,18 @@ static int32_t doSetStreamBlock(SOperatorInfo* pOperator, void** input, size_t n
}
if
(
type
==
STREAM_DATA_TYPE_SUBMIT_BLOCK
)
{
if
(
tqReadHandleSetMsg
(
pInfo
->
readerHandle
,
input
[
0
]
,
0
)
<
0
)
{
if
(
tqReadHandleSetMsg
(
pInfo
->
readerHandle
,
input
,
0
)
<
0
)
{
qError
(
"submit msg messed up when initing stream block, %s"
PRIx64
,
id
);
return
TSDB_CODE_QRY_APP_ERROR
;
}
}
else
{
for
(
int32_t
i
=
0
;
i
<
numOfBlocks
;
++
i
)
{
SSDataBlock
*
pDataBlock
=
input
[
i
];
SSDataBlock
*
pDataBlock
=
&
((
SSDataBlock
*
)
input
)
[
i
];
SSDataBlock
*
p
=
createOneDataBlock
(
pDataBlock
);
p
->
info
=
pDataBlock
->
info
;
taosArrayClear
(
p
->
pDataBlock
);
taosArrayAddAll
(
p
->
pDataBlock
,
pDataBlock
->
pDataBlock
);
taosArrayPush
(
pInfo
->
pBlockLists
,
&
p
);
}
...
...
@@ -65,10 +66,10 @@ static int32_t doSetStreamBlock(SOperatorInfo* pOperator, void** input, size_t n
}
int32_t
qSetStreamInput
(
qTaskInfo_t
tinfo
,
const
void
*
input
,
int32_t
type
)
{
qSetMultiStreamInput
(
tinfo
,
(
void
**
)
&
input
,
1
,
type
);
return
qSetMultiStreamInput
(
tinfo
,
input
,
1
,
type
);
}
int32_t
qSetMultiStreamInput
(
qTaskInfo_t
tinfo
,
void
*
*
pBlocks
,
size_t
numOfBlocks
,
int32_t
type
)
{
int32_t
qSetMultiStreamInput
(
qTaskInfo_t
tinfo
,
const
void
*
pBlocks
,
size_t
numOfBlocks
,
int32_t
type
)
{
if
(
tinfo
==
NULL
)
{
return
TSDB_CODE_QRY_APP_ERROR
;
}
...
...
source/libs/executor/src/executorimpl.c
浏览文件 @
5b2d664d
因为 它太大了无法显示 source diff 。你可以改为
查看blob
。
source/libs/function/src/builtins.c
浏览文件 @
5b2d664d
...
...
@@ -173,7 +173,7 @@ const SBuiltinFuncDefinition funcMgtBuiltins[] = {
.
finalizeFunc
=
NULL
},
{
.
name
=
"pow
er
"
,
.
name
=
"pow"
,
.
type
=
FUNCTION_TYPE_POW
,
.
classification
=
FUNC_MGT_SCALAR_FUNC
,
.
checkFunc
=
stubCheckAndGetResultType
,
...
...
@@ -409,13 +409,29 @@ int32_t stubCheckAndGetResultType(SFunctionNode* pFunc) {
// todo
break
;
case
FUNCTION_TYPE_ABS
:
{
case
FUNCTION_TYPE_ABS
:
case
FUNCTION_TYPE_CEIL
:
case
FUNCTION_TYPE_FLOOR
:
case
FUNCTION_TYPE_ROUND
:
{
SColumnNode
*
pParam
=
nodesListGetNode
(
pFunc
->
pParameterList
,
0
);
int32_t
paraType
=
pParam
->
node
.
resType
.
type
;
pFunc
->
node
.
resType
=
(
SDataType
)
{
.
bytes
=
tDataTypes
[
paraType
].
bytes
,
.
type
=
paraType
};
break
;
}
case
FUNCTION_TYPE_SIN
:
case
FUNCTION_TYPE_COS
:
case
FUNCTION_TYPE_TAN
:
case
FUNCTION_TYPE_ASIN
:
case
FUNCTION_TYPE_ACOS
:
case
FUNCTION_TYPE_ATAN
:
case
FUNCTION_TYPE_SQRT
:
case
FUNCTION_TYPE_LOG
:
case
FUNCTION_TYPE_POW
:
{
pFunc
->
node
.
resType
=
(
SDataType
)
{
.
bytes
=
tDataTypes
[
TSDB_DATA_TYPE_DOUBLE
].
bytes
,
.
type
=
TSDB_DATA_TYPE_DOUBLE
};
break
;
}
default:
ASSERT
(
0
);
// to found the fault ASAP.
}
...
...
source/libs/index/inc/index
_c
ache.h
→
source/libs/index/inc/index
C
ache.h
浏览文件 @
5b2d664d
/*
* Copyright (c) 2019 TAOS Data, Inc. <jhtao@taosdata.com>
*
* Copyright (c) 2019 TAOS Data, Inc. <jhtao@taosdata.com> *
* This program is free software: you can use, redistribute, and/or modify
* it under the terms of the GNU Affero General Public License, version 3
* or later ("AGPL"), as published by the Free Software Foundation.
...
...
@@ -16,7 +15,7 @@
#define __INDEX_CACHE_H__
#include "indexInt.h"
#include "index
_u
til.h"
#include "index
U
til.h"
#include "tskiplist.h"
// ----------------- key structure in skiplist ---------------------
...
...
source/libs/index/inc/index
_c
omm.h
→
source/libs/index/inc/index
C
omm.h
浏览文件 @
5b2d664d
文件已移动
source/libs/index/inc/index
_f
st.h
→
source/libs/index/inc/index
F
st.h
浏览文件 @
5b2d664d
...
...
@@ -20,12 +20,12 @@
extern
"C"
{
#endif
#include "indexFstAutomation.h"
#include "indexFstCountingWriter.h"
#include "indexFstNode.h"
#include "indexFstRegistry.h"
#include "indexFstUtil.h"
#include "indexInt.h"
#include "index_fst_automation.h"
#include "index_fst_counting_writer.h"
#include "index_fst_node.h"
#include "index_fst_registry.h"
#include "index_fst_util.h"
#define OUTPUT_PREFIX(a, b) ((a) > (b) ? (b) : (a)
...
...
source/libs/index/inc/index
_fst_a
utomation.h
→
source/libs/index/inc/index
FstA
utomation.h
浏览文件 @
5b2d664d
...
...
@@ -19,8 +19,8 @@
extern
"C"
{
#endif
#include "indexFstUtil.h"
#include "indexInt.h"
#include "index_fst_util.h"
typedef
struct
AutomationCtx
AutomationCtx
;
...
...
source/libs/index/inc/index
_fst_c
ommon.h
→
source/libs/index/inc/index
FstC
ommon.h
浏览文件 @
5b2d664d
文件已移动
source/libs/index/inc/index
_fst_counting_w
riter.h
→
source/libs/index/inc/index
FstCountingW
riter.h
浏览文件 @
5b2d664d
文件已移动
source/libs/index/inc/index
_fst_n
ode.h
→
source/libs/index/inc/index
FstN
ode.h
浏览文件 @
5b2d664d
...
...
@@ -20,9 +20,9 @@
extern
"C"
{
#endif
#include "indexFstCountingWriter.h"
#include "indexFstUtil.h"
#include "indexInt.h"
#include "index_fst_counting_writer.h"
#include "index_fst_util.h"
#define FST_BUILDER_NODE_IS_FINAL(bn) (bn->isFinal)
#define FST_BUILDER_NODE_TRANS_ISEMPTY(bn) (taosArrayGetSize(bn->trans) == 0)
...
...
source/libs/index/inc/index
_fst_r
egistry.h
→
source/libs/index/inc/index
FstR
egistry.h
浏览文件 @
5b2d664d
...
...
@@ -19,9 +19,9 @@
extern
"C"
{
#endif
#include "indexFstNode.h"
#include "indexFstUtil.h"
#include "indexInt.h"
#include "index_fst_node.h"
#include "index_fst_util.h"
typedef
struct
FstRegistryCell
{
CompiledAddr
addr
;
...
...
source/libs/index/inc/index
_fst_u
til.h
→
source/libs/index/inc/index
FstU
til.h
浏览文件 @
5b2d664d
...
...
@@ -20,8 +20,8 @@
extern
"C"
{
#endif
#include "indexFstCommon.h"
#include "indexInt.h"
#include "index_fst_common.h"
typedef
uint64_t
FstType
;
typedef
uint64_t
CompiledAddr
;
...
...
source/libs/
scalar/inc/sclfunc
.h
→
source/libs/
index/inc/indexSparse
.h
浏览文件 @
5b2d664d
...
...
@@ -12,21 +12,32 @@
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef TDENGINE_TSCALARFUNCTION_H
#define TDENGINE_TSCALARFUNCTION_H
#ifndef _TD_INDEX_SPARSE_H_
#define _TD_INDEX_SPARSE_H_
#include "tarray.h"
#ifdef __cplusplus
extern
"C"
{
#endif
#include "function.h"
#include "scalar.h"
typedef
struct
FstSparseSet
{
SArray
*
dense
;
SArray
*
sparse
;
int32_t
size
;
}
FstSparseSet
;
FstSparseSet
*
sparSetCreate
(
int32_t
sz
);
void
sparSetDestroy
(
FstSparseSet
*
s
);
uint32_t
sparSetLen
(
FstSparseSet
*
ss
);
uint32_t
sparSetAdd
(
FstSparseSet
*
ss
,
uint32_t
ip
);
uint32_t
sparSetGet
(
FstSparseSet
*
ss
,
uint32_t
i
);
bool
sparSetContains
(
FstSparseSet
*
ss
,
uint32_t
ip
);
void
sparSetClear
(
FstSparseSet
*
ss
);
#ifdef __cplusplus
}
#endif
#endif
// TDENGINE_TSCALARFUNCTION_H
#endif
source/libs/index/inc/index
_t
file.h
→
source/libs/index/inc/index
T
file.h
浏览文件 @
5b2d664d
...
...
@@ -15,11 +15,11 @@
#ifndef __INDEX_TFILE_H__
#define __INDEX_TFILE_H__
#include "indexFst.h"
#include "indexFstCountingWriter.h"
#include "indexInt.h"
#include "index_fst.h"
#include "index_fst_counting_writer.h"
#include "index_tfile.h"
#include "index_util.h"
#include "indexTfile.h"
#include "indexUtil.h"
#include "tlockfree.h"
#ifdef __cplusplus
...
...
source/libs/index/inc/index
_u
til.h
→
source/libs/index/inc/index
U
til.h
浏览文件 @
5b2d664d
文件已移动
source/libs/index/src/index.c
浏览文件 @
5b2d664d
...
...
@@ -14,11 +14,11 @@
*/
#include "index.h"
#include "indexCache.h"
#include "indexComm.h"
#include "indexInt.h"
#include "index_cache.h"
#include "index_comm.h"
#include "index_tfile.h"
#include "index_util.h"
#include "indexTfile.h"
#include "indexUtil.h"
#include "tdef.h"
#include "tsched.h"
...
...
@@ -236,11 +236,11 @@ int indexDelete(SIndex* index, SIndexMultiTermQuery* query) {
return
1
;
}
int
indexRebuild
(
SIndex
*
index
,
SIndexOpts
*
opts
){
int
indexRebuild
(
SIndex
*
index
,
SIndexOpts
*
opts
)
{
#ifdef USE_INVERTED_INDEX
#endif
return
0
;
return
0
;
}
SIndexOpts
*
indexOptsCreate
()
{
...
...
source/libs/index/src/index
_c
ache.c
→
source/libs/index/src/index
C
ache.c
浏览文件 @
5b2d664d
...
...
@@ -13,9 +13,9 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "index
_c
ache.h"
#include "index
_c
omm.h"
#include "index
_u
til.h"
#include "index
C
ache.h"
#include "index
C
omm.h"
#include "index
U
til.h"
#include "tcompare.h"
#include "tsched.h"
...
...
source/libs/index/src/index
_c
omm.c
→
source/libs/index/src/index
C
omm.c
浏览文件 @
5b2d664d
文件已移动
source/libs/index/src/index
_f
st.c
→
source/libs/index/src/index
F
st.c
浏览文件 @
5b2d664d
...
...
@@ -13,9 +13,9 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "index_fst.h"
#include "indexFst.h"
#include "indexFstAutomation.h"
#include "indexInt.h"
#include "index_fst_automation.h"
#include "tchecksum.h"
#include "tcoding.h"
...
...
source/libs/index/src/index
_fst_a
utomation.c
→
source/libs/index/src/index
FstA
utomation.c
浏览文件 @
5b2d664d
...
...
@@ -13,7 +13,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "index
_fst_a
utomation.h"
#include "index
FstA
utomation.h"
StartWithStateValue
*
startWithStateValueCreate
(
StartWithStateKind
kind
,
ValueType
ty
,
void
*
val
)
{
StartWithStateValue
*
sv
=
taosMemoryCalloc
(
1
,
sizeof
(
StartWithStateValue
));
...
...
source/libs/index/src/index
_fst_c
ommon.c
→
source/libs/index/src/index
FstC
ommon.c
浏览文件 @
5b2d664d
...
...
@@ -12,7 +12,7 @@
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "index
_fst_c
ommon.h"
#include "index
FstC
ommon.h"
const
uint8_t
COMMON_INPUTS
[]
=
{
84
,
// '\x00'
...
...
@@ -274,20 +274,23 @@ const uint8_t COMMON_INPUTS[] = {
};
const
char
COMMON_INPUTS_INV
[]
=
{
't'
,
'e'
,
'/'
,
'o'
,
'a'
,
's'
,
'r'
,
'i'
,
'p'
,
'c'
,
'n'
,
'w'
,
'.'
,
'h'
,
'l'
,
'm'
,
'-'
,
'd'
,
'u'
,
'0'
,
'1'
,
'2'
,
'g'
,
'='
,
':'
,
'b'
,
'f'
,
'3'
,
'y'
,
'5'
,
'&'
,
'_'
,
'4'
,
'v'
,
'9'
,
'6'
,
'7'
,
'8'
,
'k'
,
'%'
,
'?'
,
'x'
,
'C'
,
'D'
,
'A'
,
'S'
,
'F'
,
'I'
,
'B'
,
'E'
,
'j'
,
'P'
,
'T'
,
'z'
,
'R'
,
'N'
,
'M'
,
'+'
,
'L'
,
'O'
,
'q'
,
'H'
,
'G'
,
'W'
,
'U'
,
'V'
,
','
,
'Y'
,
'K'
,
'J'
,
'Z'
,
'X'
,
'Q'
,
';'
,
')'
,
'('
,
'~'
,
'['
,
']'
,
'$'
,
'!'
,
'\''
,
'*'
,
'@'
,
'\x00'
,
'\x01'
,
'\x02'
,
'\x03'
,
'\x04'
,
'\x05'
,
'\x06'
,
'\x07'
,
'\x08'
,
'\t'
,
'\n'
,
'\x0b'
,
'\x0c'
,
'\r'
,
'\x0e'
,
'\x0f'
,
'\x10'
,
'\x11'
,
'\x12'
,
'\x13'
,
'\x14'
,
'\x15'
,
'\x16'
,
'\x17'
,
'\x18'
,
'\x19'
,
'\x1a'
,
'\x1b'
,
'\x1c'
,
'\x1d'
,
'\x1e'
,
'\x1f'
,
' '
,
'"'
,
'#'
,
'<'
,
'>'
,
'\\'
,
'^'
,
'`'
,
'{'
,
'|'
,
'}'
,
'\x7f'
,
'\x80'
,
'\x81'
,
'\x82'
,
'\x83'
,
'\x84'
,
'\x85'
,
'\x86'
,
'\x87'
,
'\x88'
,
'\x89'
,
'\x8a'
,
'\x8b'
,
'\x8c'
,
'\x8d'
,
'\x8e'
,
'\x8f'
,
'\x90'
,
'\x91'
,
'\x92'
,
'\x93'
,
'\x94'
,
'\x95'
,
'\x96'
,
'\x97'
,
'\x98'
,
'\x99'
,
'\x9a'
,
'\x9b'
,
'\x9c'
,
'\x9d'
,
'\x9e'
,
'\x9f'
,
'\xa0'
,
'\xa1'
,
'\xa2'
,
'\xa3'
,
'\xa4'
,
'\xa5'
,
'\xa6'
,
'\xa7'
,
'\xa8'
,
'\xa9'
,
'\xaa'
,
'\xab'
,
'\xac'
,
'\xad'
,
'\xae'
,
'\xaf'
,
'\xb0'
,
'\xb1'
,
'\xb2'
,
'\xb3'
,
'\xb4'
,
'\xb5'
,
'\xb6'
,
'\xb7'
,
'\xb8'
,
'\xb9'
,
'\xba'
,
'\xbb'
,
'\xbc'
,
'\xbd'
,
'\xbe'
,
'\xbf'
,
'\xc0'
,
'\xc1'
,
'\xc2'
,
'\xc3'
,
'\xc4'
,
'\xc5'
,
'\xc6'
,
'\xc7'
,
'\xc8'
,
'\xc9'
,
'\xca'
,
'\xcb'
,
'\xcc'
,
'\xcd'
,
'\xce'
,
'\xcf'
,
'\xd0'
,
'\xd1'
,
'\xd2'
,
'\xd3'
,
'\xd4'
,
'\xd5'
,
'\xd6'
,
'\xd7'
,
'\xd8'
,
'\xd9'
,
'\xda'
,
'\xdb'
,
'\xdc'
,
'\xdd'
,
'\xde'
,
'\xdf'
,
'\xe0'
,
'\xe1'
,
'\xe2'
,
'\xe3'
,
'\xe4'
,
'\xe5'
,
'\xe6'
,
'\xe7'
,
'\xe8'
,
'\xe9'
,
'\xea'
,
'\xeb'
,
'\xec'
,
'\xed'
,
'\xee'
,
'\xef'
,
'\xf0'
,
'\xf1'
,
'\xf2'
,
'\xf3'
,
'\xf4'
,
'\xf5'
,
'\xf6'
,
'\xf7'
,
'\xf8'
,
'\xf9'
,
'\xfa'
,
'\xfb'
,
'\xfc'
,
'\xfd'
,
'\xfe'
,
'\xff'
,
't'
,
'e'
,
'/'
,
'o'
,
'a'
,
's'
,
'r'
,
'i'
,
'p'
,
'c'
,
'n'
,
'w'
,
'.'
,
'h'
,
'l'
,
'm'
,
'-'
,
'd'
,
'u'
,
'0'
,
'1'
,
'2'
,
'g'
,
'='
,
':'
,
'b'
,
'f'
,
'3'
,
'y'
,
'5'
,
'&'
,
'_'
,
'4'
,
'v'
,
'9'
,
'6'
,
'7'
,
'8'
,
'k'
,
'%'
,
'?'
,
'x'
,
'C'
,
'D'
,
'A'
,
'S'
,
'F'
,
'I'
,
'B'
,
'E'
,
'j'
,
'P'
,
'T'
,
'z'
,
'R'
,
'N'
,
'M'
,
'+'
,
'L'
,
'O'
,
'q'
,
'H'
,
'G'
,
'W'
,
'U'
,
'V'
,
','
,
'Y'
,
'K'
,
'J'
,
'Z'
,
'X'
,
'Q'
,
';'
,
')'
,
'('
,
'~'
,
'['
,
']'
,
'$'
,
'!'
,
'\''
,
'*'
,
'@'
,
'\x00'
,
'\x01'
,
'\x02'
,
'\x03'
,
'\x04'
,
'\x05'
,
'\x06'
,
'\x07'
,
'\x08'
,
'\t'
,
'\n'
,
'\x0b'
,
'\x0c'
,
'\r'
,
'\x0e'
,
'\x0f'
,
'\x10'
,
'\x11'
,
'\x12'
,
'\x13'
,
'\x14'
,
'\x15'
,
'\x16'
,
'\x17'
,
'\x18'
,
'\x19'
,
'\x1a'
,
'\x1b'
,
'\x1c'
,
'\x1d'
,
'\x1e'
,
'\x1f'
,
' '
,
'"'
,
'#'
,
'<'
,
'>'
,
'\\'
,
'^'
,
'`'
,
'{'
,
'|'
,
'}'
,
'\x7f'
,
'\x80'
,
'\x81'
,
'\x82'
,
'\x83'
,
'\x84'
,
'\x85'
,
'\x86'
,
'\x87'
,
'\x88'
,
'\x89'
,
'\x8a'
,
'\x8b'
,
'\x8c'
,
'\x8d'
,
'\x8e'
,
'\x8f'
,
'\x90'
,
'\x91'
,
'\x92'
,
'\x93'
,
'\x94'
,
'\x95'
,
'\x96'
,
'\x97'
,
'\x98'
,
'\x99'
,
'\x9a'
,
'\x9b'
,
'\x9c'
,
'\x9d'
,
'\x9e'
,
'\x9f'
,
'\xa0'
,
'\xa1'
,
'\xa2'
,
'\xa3'
,
'\xa4'
,
'\xa5'
,
'\xa6'
,
'\xa7'
,
'\xa8'
,
'\xa9'
,
'\xaa'
,
'\xab'
,
'\xac'
,
'\xad'
,
'\xae'
,
'\xaf'
,
'\xb0'
,
'\xb1'
,
'\xb2'
,
'\xb3'
,
'\xb4'
,
'\xb5'
,
'\xb6'
,
'\xb7'
,
'\xb8'
,
'\xb9'
,
'\xba'
,
'\xbb'
,
'\xbc'
,
'\xbd'
,
'\xbe'
,
'\xbf'
,
'\xc0'
,
'\xc1'
,
'\xc2'
,
'\xc3'
,
'\xc4'
,
'\xc5'
,
'\xc6'
,
'\xc7'
,
'\xc8'
,
'\xc9'
,
'\xca'
,
'\xcb'
,
'\xcc'
,
'\xcd'
,
'\xce'
,
'\xcf'
,
'\xd0'
,
'\xd1'
,
'\xd2'
,
'\xd3'
,
'\xd4'
,
'\xd5'
,
'\xd6'
,
'\xd7'
,
'\xd8'
,
'\xd9'
,
'\xda'
,
'\xdb'
,
'\xdc'
,
'\xdd'
,
'\xde'
,
'\xdf'
,
'\xe0'
,
'\xe1'
,
'\xe2'
,
'\xe3'
,
'\xe4'
,
'\xe5'
,
'\xe6'
,
'\xe7'
,
'\xe8'
,
'\xe9'
,
'\xea'
,
'\xeb'
,
'\xec'
,
'\xed'
,
'\xee'
,
'\xef'
,
'\xf0'
,
'\xf1'
,
'\xf2'
,
'\xf3'
,
'\xf4'
,
'\xf5'
,
'\xf6'
,
'\xf7'
,
'\xf8'
,
'\xf9'
,
'\xfa'
,
'\xfb'
,
'\xfc'
,
'\xfd'
,
'\xfe'
,
'\xff'
,
};
source/libs/index/src/index
_fst_counting_w
riter.c
→
source/libs/index/src/index
FstCountingW
riter.c
浏览文件 @
5b2d664d
...
...
@@ -13,10 +13,10 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "
os
.h"
#include "index
_fst_counting_writer
.h"
#include "
indexFstCountingWriter
.h"
#include "index
FstUtil
.h"
#include "indexInt.h"
#include "
index_fst_util
.h"
#include "
os
.h"
#include "tutil.h"
static
int
writeCtxDoWrite
(
WriterCtx
*
ctx
,
uint8_t
*
buf
,
int
len
)
{
...
...
@@ -82,7 +82,9 @@ static int writeCtxDoFlush(WriterCtx* ctx) {
WriterCtx
*
writerCtxCreate
(
WriterType
type
,
const
char
*
path
,
bool
readOnly
,
int32_t
capacity
)
{
WriterCtx
*
ctx
=
taosMemoryCalloc
(
1
,
sizeof
(
WriterCtx
));
if
(
ctx
==
NULL
)
{
return
NULL
;
}
if
(
ctx
==
NULL
)
{
return
NULL
;
}
ctx
->
type
=
type
;
if
(
ctx
->
type
==
TFile
)
{
...
...
@@ -126,7 +128,9 @@ WriterCtx* writerCtxCreate(WriterType type, const char* path, bool readOnly, int
return
ctx
;
END:
if
(
ctx
->
type
==
TMemory
)
{
taosMemoryFree
(
ctx
->
mem
.
buf
);
}
if
(
ctx
->
type
==
TMemory
)
{
taosMemoryFree
(
ctx
->
mem
.
buf
);
}
taosMemoryFree
(
ctx
);
return
NULL
;
}
...
...
@@ -148,14 +152,18 @@ void writerCtxDestroy(WriterCtx* ctx, bool remove) {
// stat(ctx->file.buf, &fstat);
// indexError("write file size: %d", (int)(fstat.st_size));
}
if
(
remove
)
{
unlink
(
ctx
->
file
.
buf
);
}
if
(
remove
)
{
unlink
(
ctx
->
file
.
buf
);
}
}
taosMemoryFree
(
ctx
);
}
FstCountingWriter
*
fstCountingWriterCreate
(
void
*
wrt
)
{
FstCountingWriter
*
cw
=
taosMemoryCalloc
(
1
,
sizeof
(
FstCountingWriter
));
if
(
cw
==
NULL
)
{
return
NULL
;
}
if
(
cw
==
NULL
)
{
return
NULL
;
}
cw
->
wrt
=
wrt
;
//(void *)(writerCtxCreate(TFile, readOnly));
...
...
@@ -169,7 +177,9 @@ void fstCountingWriterDestroy(FstCountingWriter* cw) {
}
int
fstCountingWriterWrite
(
FstCountingWriter
*
write
,
uint8_t
*
buf
,
uint32_t
len
)
{
if
(
write
==
NULL
)
{
return
0
;
}
if
(
write
==
NULL
)
{
return
0
;
}
// update checksum
// write data to file/socket or mem
WriterCtx
*
ctx
=
write
->
wrt
;
...
...
@@ -182,7 +192,9 @@ int fstCountingWriterWrite(FstCountingWriter* write, uint8_t* buf, uint32_t len)
return
len
;
}
int
fstCountingWriterRead
(
FstCountingWriter
*
write
,
uint8_t
*
buf
,
uint32_t
len
)
{
if
(
write
==
NULL
)
{
return
0
;
}
if
(
write
==
NULL
)
{
return
0
;
}
WriterCtx
*
ctx
=
write
->
wrt
;
int
nRead
=
ctx
->
read
(
ctx
,
buf
,
len
);
// assert(nRead == len);
...
...
source/libs/index/src/index
_fst_n
ode.c
→
source/libs/index/src/index
FstN
ode.c
浏览文件 @
5b2d664d
...
...
@@ -12,7 +12,7 @@
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "index
_fst_n
ode.h"
#include "index
FstN
ode.h"
FstBuilderNode
*
fstBuilderNodeDefault
()
{
FstBuilderNode
*
bn
=
taosMemoryMalloc
(
sizeof
(
FstBuilderNode
));
...
...
@@ -22,31 +22,45 @@ FstBuilderNode* fstBuilderNodeDefault() {
return
bn
;
}
void
fstBuilderNodeDestroy
(
FstBuilderNode
*
node
)
{
if
(
node
==
NULL
)
{
return
;
}
if
(
node
==
NULL
)
{
return
;
}
taosArrayDestroy
(
node
->
trans
);
taosMemoryFree
(
node
);
}
bool
fstBuilderNodeEqual
(
FstBuilderNode
*
n1
,
FstBuilderNode
*
n2
)
{
if
(
n1
==
n2
)
{
return
true
;
}
if
(
n1
==
NULL
||
n2
==
NULL
)
{
return
false
;
}
if
(
n1
==
n2
)
{
return
true
;
}
if
(
n1
==
NULL
||
n2
==
NULL
)
{
return
false
;
}
if
(
n1
->
isFinal
!=
n2
->
isFinal
||
n1
->
finalOutput
!=
n2
->
finalOutput
)
{
return
false
;
}
if
(
n1
->
isFinal
!=
n2
->
isFinal
||
n1
->
finalOutput
!=
n2
->
finalOutput
)
{
return
false
;
}
size_t
s1
=
n1
->
trans
?
taosArrayGetSize
(
n1
->
trans
)
:
0
;
size_t
s2
=
n2
->
trans
?
taosArrayGetSize
(
n2
->
trans
)
:
0
;
if
(
s1
!=
s2
)
{
return
false
;
}
if
(
s1
!=
s2
)
{
return
false
;
}
for
(
size_t
i
=
0
;
i
<
s1
;
i
++
)
{
FstTransition
*
t1
=
taosArrayGet
(
n1
->
trans
,
i
);
FstTransition
*
t2
=
taosArrayGet
(
n2
->
trans
,
i
);
if
(
t1
->
inp
!=
t2
->
inp
||
t1
->
out
!=
t2
->
out
||
t1
->
addr
!=
t2
->
addr
)
{
return
false
;
}
if
(
t1
->
inp
!=
t2
->
inp
||
t1
->
out
!=
t2
->
out
||
t1
->
addr
!=
t2
->
addr
)
{
return
false
;
}
}
return
true
;
}
FstBuilderNode
*
fstBuilderNodeClone
(
FstBuilderNode
*
src
)
{
FstBuilderNode
*
node
=
taosMemoryMalloc
(
sizeof
(
FstBuilderNode
));
if
(
node
==
NULL
)
{
return
NULL
;
}
if
(
node
==
NULL
)
{
return
NULL
;
}
//
size_t
sz
=
taosArrayGetSize
(
src
->
trans
);
...
...
@@ -64,7 +78,9 @@ FstBuilderNode* fstBuilderNodeClone(FstBuilderNode* src) {
}
// not destroy src, User's bussiness
void
fstBuilderNodeCloneFrom
(
FstBuilderNode
*
dst
,
FstBuilderNode
*
src
)
{
if
(
dst
==
NULL
||
src
==
NULL
)
{
return
;
}
if
(
dst
==
NULL
||
src
==
NULL
)
{
return
;
}
dst
->
isFinal
=
src
->
isFinal
;
dst
->
finalOutput
=
src
->
finalOutput
;
...
...
source/libs/index/src/index
_fst_registry
.c
→
source/libs/index/src/index
FstRegister
.c
浏览文件 @
5b2d664d
...
...
@@ -13,8 +13,8 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "indexFstRegistry.h"
#include "os.h"
#include "index_fst_registry.h"
uint64_t
fstRegistryHash
(
FstRegistry
*
registry
,
FstBuilderNode
*
bNode
)
{
// TODO(yihaoDeng): refactor later
...
...
@@ -35,7 +35,9 @@ uint64_t fstRegistryHash(FstRegistry* registry, FstBuilderNode* bNode) {
}
static
void
fstRegistryCellSwap
(
SArray
*
arr
,
uint32_t
a
,
uint32_t
b
)
{
size_t
sz
=
taosArrayGetSize
(
arr
);
if
(
a
>=
sz
||
b
>=
sz
)
{
return
;
}
if
(
a
>=
sz
||
b
>=
sz
)
{
return
;
}
FstRegistryCell
*
cell1
=
(
FstRegistryCell
*
)
taosArrayGet
(
arr
,
a
);
FstRegistryCell
*
cell2
=
(
FstRegistryCell
*
)
taosArrayGet
(
arr
,
b
);
...
...
@@ -52,7 +54,9 @@ static void fstRegistryCellSwap(SArray* arr, uint32_t a, uint32_t b) {
static
void
fstRegistryCellPromote
(
SArray
*
arr
,
uint32_t
start
,
uint32_t
end
)
{
size_t
sz
=
taosArrayGetSize
(
arr
);
if
(
start
>=
sz
&&
end
>=
sz
)
{
return
;
}
if
(
start
>=
sz
&&
end
>=
sz
)
{
return
;
}
assert
(
start
>=
end
);
...
...
@@ -66,7 +70,9 @@ static void fstRegistryCellPromote(SArray* arr, uint32_t start, uint32_t end) {
FstRegistry
*
fstRegistryCreate
(
uint64_t
tableSize
,
uint64_t
mruSize
)
{
FstRegistry
*
registry
=
taosMemoryMalloc
(
sizeof
(
FstRegistry
));
if
(
registry
==
NULL
)
{
return
NULL
;
}
if
(
registry
==
NULL
)
{
return
NULL
;
}
uint64_t
nCells
=
tableSize
*
mruSize
;
SArray
*
tb
=
(
SArray
*
)
taosArrayInit
(
nCells
,
sizeof
(
FstRegistryCell
));
...
...
@@ -87,7 +93,9 @@ FstRegistry* fstRegistryCreate(uint64_t tableSize, uint64_t mruSize) {
}
void
fstRegistryDestroy
(
FstRegistry
*
registry
)
{
if
(
registry
==
NULL
)
{
return
;
}
if
(
registry
==
NULL
)
{
return
;
}
SArray
*
tb
=
registry
->
table
;
size_t
sz
=
taosArrayGetSize
(
tb
);
...
...
@@ -100,7 +108,9 @@ void fstRegistryDestroy(FstRegistry* registry) {
}
FstRegistryEntry
*
fstRegistryGetEntry
(
FstRegistry
*
registry
,
FstBuilderNode
*
bNode
)
{
if
(
taosArrayGetSize
(
registry
->
table
)
<=
0
)
{
return
NULL
;
}
if
(
taosArrayGetSize
(
registry
->
table
)
<=
0
)
{
return
NULL
;
}
uint64_t
bucket
=
fstRegistryHash
(
registry
,
bNode
);
uint64_t
start
=
registry
->
mruSize
*
bucket
;
uint64_t
end
=
start
+
registry
->
mruSize
;
...
...
@@ -165,6 +175,4 @@ FstRegistryEntry* fstRegistryGetEntry(FstRegistry* registry, FstBuilderNode* bNo
}
return
entry
;
}
void
fstRegistryEntryDestroy
(
FstRegistryEntry
*
entry
)
{
taosMemoryFree
(
entry
);
}
void
fstRegistryEntryDestroy
(
FstRegistryEntry
*
entry
)
{
taosMemoryFree
(
entry
);
}
source/libs/index/src/index
_fst_u
til.c
→
source/libs/index/src/index
FstU
til.c
浏览文件 @
5b2d664d
...
...
@@ -12,8 +12,8 @@
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "index
_fst_u
til.h"
#include "index
_fst_c
ommon.h"
#include "index
FstU
til.h"
#include "index
FstC
ommon.h"
// A sentinel value used to indicate an empty final state
const
CompiledAddr
EMPTY_ADDRESS
=
0
;
...
...
source/libs/index/src/index
_j
son.c
→
source/libs/index/src/index
J
son.c
浏览文件 @
5b2d664d
文件已移动
source/
dnode/mgmt/main/src/dndUtil
.c
→
source/
libs/index/src/indexSparse
.c
浏览文件 @
5b2d664d
...
...
@@ -13,43 +13,59 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define _DEFAULT_SOURCE
#include "dndMain.h"
#include "indexSparse.h"
void
dndGenerateGrant
(
)
{
#if 0
grantParseParameter();
#endif
}
FstSparseSet
*
sparSetCreate
(
int32_t
sz
)
{
FstSparseSet
*
ss
=
taosMemoryCalloc
(
1
,
sizeof
(
FstSparseSet
));
if
(
ss
=
NULL
)
{
return
NULL
;
}
void
dndPrintVersion
()
{
#ifdef TD_ENTERPRISE
char
*
releaseName
=
"enterprise"
;
#else
char
*
releaseName
=
"community"
;
#endif
printf
(
"%s version: %s compatible_version: %s
\n
"
,
releaseName
,
version
,
compatible_version
);
printf
(
"gitinfo: %s
\n
"
,
gitinfo
);
printf
(
"builuInfo: %s
\n
"
,
buildinfo
);
ss
->
dense
=
taosArrayInit
(
sz
,
sizeof
(
uint32_t
));
ss
->
sparse
=
taosArrayInit
(
sz
,
sizeof
(
uint32_t
));
ss
->
size
=
sz
;
return
ss
;
}
void
dndDumpCfg
()
{
SConfig
*
pCfg
=
taosGetCfg
();
cfgDumpCfg
(
pCfg
,
0
,
1
);
void
sparSetDestroy
(
FstSparseSet
*
ss
)
{
if
(
ss
==
NULL
)
{
return
;
}
taosArrayDestroy
(
ss
->
dense
);
taosArrayDestroy
(
ss
->
sparse
);
taosMemoryFree
(
ss
);
}
SDnodeOpt
dndGetOpt
()
{
SConfig
*
pCfg
=
taosGetCfg
();
SDnodeOpt
option
=
{
0
};
option
.
numOfSupportVnodes
=
cfgGetItem
(
pCfg
,
"supportVnodes"
)
->
i32
;
tstrncpy
(
option
.
dataDir
,
tsDataDir
,
sizeof
(
option
.
dataDir
));
tstrncpy
(
option
.
firstEp
,
tsFirst
,
sizeof
(
option
.
firstEp
));
tstrncpy
(
option
.
secondEp
,
tsSecond
,
sizeof
(
option
.
firstEp
));
option
.
serverPort
=
tsServerPort
;
tstrncpy
(
option
.
localFqdn
,
tsLocalFqdn
,
sizeof
(
option
.
localFqdn
));
snprintf
(
option
.
localEp
,
sizeof
(
option
.
localEp
),
"%s:%u"
,
option
.
localFqdn
,
option
.
serverPort
);
option
.
pDisks
=
tsDiskCfg
;
option
.
numOfDisks
=
tsDiskCfgNum
;
return
option
;
uint32_t
sparSetLen
(
FstSparseSet
*
ss
)
{
return
ss
==
NULL
?
0
:
ss
->
size
;
}
uint32_t
sparSetAdd
(
FstSparseSet
*
ss
,
uint32_t
ip
)
{
if
(
ss
==
NULL
)
{
return
0
;
}
uint32_t
i
=
ss
->
size
;
taosArraySet
(
ss
->
dense
,
i
,
&
ip
);
taosArraySet
(
ss
->
sparse
,
ip
,
&
i
);
ss
->
size
+=
1
;
return
i
;
}
uint32_t
sparSetGet
(
FstSparseSet
*
ss
,
uint32_t
i
)
{
if
(
i
>=
taosArrayGetSize
(
ss
->
dense
))
{
return
0
;
}
uint32_t
*
v
=
taosArrayGet
(
ss
->
dense
,
i
);
return
*
v
;
}
bool
sparSetContains
(
FstSparseSet
*
ss
,
uint32_t
ip
)
{
if
(
ip
>=
taosArrayGetSize
(
ss
->
sparse
))
{
return
false
;
}
uint32_t
i
=
*
(
uint32_t
*
)
taosArrayGet
(
ss
->
sparse
,
ip
);
if
(
i
>=
taosArrayGetSize
(
ss
->
dense
))
{
return
false
;
}
uint32_t
v
=
*
(
uint32_t
*
)
taosArrayGet
(
ss
->
dense
,
i
);
return
v
==
ip
;
}
void
sparSetClear
(
FstSparseSet
*
ss
)
{
if
(
ss
==
NULL
)
{
return
;
}
ss
->
size
=
0
;
}
source/libs/index/src/index
_t
file.c
→
source/libs/index/src/index
T
file.c
浏览文件 @
5b2d664d
...
...
@@ -13,12 +13,12 @@ p *
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "index
_t
file.h"
#include "index
T
file.h"
#include "index.h"
#include "index
_c
omm.h"
#include "index
_f
st.h"
#include "index
_fst_counting_w
riter.h"
#include "index
_u
til.h"
#include "index
C
omm.h"
#include "index
F
st.h"
#include "index
FstCountingW
riter.h"
#include "index
U
til.h"
#include "taosdef.h"
#include "tcoding.h"
#include "tcompare.h"
...
...
source/libs/index/src/index
_u
til.c
→
source/libs/index/src/index
U
til.c
浏览文件 @
5b2d664d
...
...
@@ -12,7 +12,7 @@
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "index
_u
til.h"
#include "index
U
til.h"
#include "index.h"
#include "tcompare.h"
...
...
source/libs/index/test/fstTest.cc
浏览文件 @
5b2d664d
...
...
@@ -5,12 +5,12 @@
#include <thread>
#include <vector>
#include "index.h"
#include "indexCache.h"
#include "indexFst.h"
#include "indexFstCountingWriter.h"
#include "indexFstUtil.h"
#include "indexInt.h"
#include "index_cache.h"
#include "index_fst.h"
#include "index_fst_counting_writer.h"
#include "index_fst_util.h"
#include "index_tfile.h"
#include "indexTfile.h"
#include "tskiplist.h"
#include "tutil.h"
void
*
callback
(
void
*
s
)
{
return
s
;
}
...
...
source/libs/index/test/fstUT.cc
浏览文件 @
5b2d664d
...
...
@@ -6,12 +6,12 @@
#include <thread>
#include <vector>
#include "index.h"
#include "indexCache.h"
#include "indexFst.h"
#include "indexFstCountingWriter.h"
#include "indexFstUtil.h"
#include "indexInt.h"
#include "index_cache.h"
#include "index_fst.h"
#include "index_fst_counting_writer.h"
#include "index_fst_util.h"
#include "index_tfile.h"
#include "indexTfile.h"
#include "tglobal.h"
#include "tlog.h"
#include "tskiplist.h"
...
...
source/libs/index/test/indexTests.cc
浏览文件 @
5b2d664d
...
...
@@ -18,13 +18,13 @@
#include <string>
#include <thread>
#include "index.h"
#include "indexCache.h"
#include "indexFst.h"
#include "indexFstCountingWriter.h"
#include "indexFstUtil.h"
#include "indexInt.h"
#include "index_cache.h"
#include "index_fst.h"
#include "index_fst_counting_writer.h"
#include "index_fst_util.h"
#include "index_tfile.h"
#include "index_util.h"
#include "indexTfile.h"
#include "indexUtil.h"
#include "tskiplist.h"
#include "tutil.h"
using
namespace
std
;
...
...
source/libs/index/test/jsonUT.cc
浏览文件 @
5b2d664d
...
...
@@ -5,13 +5,13 @@
#include <thread>
#include <vector>
#include "index.h"
#include "indexCache.h"
#include "indexFst.h"
#include "indexFstCountingWriter.h"
#include "indexFstUtil.h"
#include "indexInt.h"
#include "index_cache.h"
#include "index_fst.h"
#include "index_fst_counting_writer.h"
#include "index_fst_util.h"
#include "index_tfile.h"
#include "index_util.h"
#include "indexTfile.h"
#include "indexUtil.h"
#include "tglobal.h"
#include "tskiplist.h"
#include "tutil.h"
...
...
source/libs/index/test/utilUT.cc
浏览文件 @
5b2d664d
...
...
@@ -5,13 +5,13 @@
#include <thread>
#include <vector>
#include "index.h"
#include "indexCache.h"
#include "indexFst.h"
#include "indexFstCountingWriter.h"
#include "indexFstUtil.h"
#include "indexInt.h"
#include "index_cache.h"
#include "index_fst.h"
#include "index_fst_counting_writer.h"
#include "index_fst_util.h"
#include "index_tfile.h"
#include "index_util.h"
#include "indexTfile.h"
#include "indexUtil.h"
#include "tglobal.h"
#include "tskiplist.h"
#include "tutil.h"
...
...
source/libs/parser/inc/sql.y
浏览文件 @
5b2d664d
...
...
@@ -349,6 +349,7 @@ literal(A) ::= NK_STRING(B).
literal(A) ::= NK_BOOL(B). { A = createRawExprNode(pCxt, &B, createValueNode(pCxt, TSDB_DATA_TYPE_BOOL, &B)); }
literal(A) ::= TIMESTAMP(B) NK_STRING(C). { A = createRawExprNodeExt(pCxt, &B, &C, createValueNode(pCxt, TSDB_DATA_TYPE_TIMESTAMP, &C)); }
literal(A) ::= duration_literal(B). { A = B; }
literal(A) ::= NULL(B). { A = createRawExprNode(pCxt, &B, createValueNode(pCxt, TSDB_DATA_TYPE_NULL, NULL)); }
duration_literal(A) ::= NK_VARIABLE(B). { A = createRawExprNode(pCxt, &B, createDurationValueNode(pCxt, &B)); }
...
...
@@ -372,6 +373,7 @@ signed_literal(A) ::= NK_STRING(B).
signed_literal(A) ::= NK_BOOL(B). { A = createValueNode(pCxt, TSDB_DATA_TYPE_BOOL, &B); }
signed_literal(A) ::= TIMESTAMP NK_STRING(B). { A = createValueNode(pCxt, TSDB_DATA_TYPE_TIMESTAMP, &B); }
signed_literal(A) ::= duration_literal(B). { A = releaseRawExprNode(pCxt, B); }
signed_literal(A) ::= NULL. { A = createValueNode(pCxt, TSDB_DATA_TYPE_NULL, NULL); }
%type literal_list { SNodeList* }
%destructor literal_list { nodesDestroyList($$); }
...
...
source/libs/parser/src/parAstCreater.c
浏览文件 @
5b2d664d
...
...
@@ -577,11 +577,13 @@ SNode* createColumnNode(SAstCreateContext* pCxt, SToken* pTableAlias, SToken* pC
SNode
*
createValueNode
(
SAstCreateContext
*
pCxt
,
int32_t
dataType
,
const
SToken
*
pLiteral
)
{
SValueNode
*
val
=
(
SValueNode
*
)
nodesMakeNode
(
QUERY_NODE_VALUE
);
CHECK_OUT_OF_MEM
(
val
);
val
->
literal
=
strndup
(
pLiteral
->
z
,
pLiteral
->
n
);
if
(
TK_NK_ID
!=
pLiteral
->
type
&&
(
IS_VAR_DATA_TYPE
(
dataType
)
||
TSDB_DATA_TYPE_TIMESTAMP
==
dataType
))
{
trimString
(
pLiteral
->
z
,
pLiteral
->
n
,
val
->
literal
,
pLiteral
->
n
);
if
(
NULL
!=
pLiteral
)
{
val
->
literal
=
strndup
(
pLiteral
->
z
,
pLiteral
->
n
);
if
(
TK_NK_ID
!=
pLiteral
->
type
&&
(
IS_VAR_DATA_TYPE
(
dataType
)
||
TSDB_DATA_TYPE_TIMESTAMP
==
dataType
))
{
trimString
(
pLiteral
->
z
,
pLiteral
->
n
,
val
->
literal
,
pLiteral
->
n
);
}
CHECK_OUT_OF_MEM
(
val
->
literal
);
}
CHECK_OUT_OF_MEM
(
val
->
literal
);
val
->
node
.
resType
.
type
=
dataType
;
val
->
node
.
resType
.
bytes
=
IS_VAR_DATA_TYPE
(
dataType
)
?
strlen
(
val
->
literal
)
:
tDataTypes
[
dataType
].
bytes
;
if
(
TSDB_DATA_TYPE_TIMESTAMP
==
dataType
)
{
...
...
source/libs/parser/src/sql.c
浏览文件 @
5b2d664d
...
...
@@ -133,16 +133,16 @@ typedef union {
#define ParseCTX_FETCH
#define ParseCTX_STORE
#define YYNSTATE 432
#define YYNRULE 34
6
#define YYNRULE 34
8
#define YYNTOKEN 172
#define YY_MAX_SHIFT 431
#define YY_MIN_SHIFTREDUCE 67
3
#define YY_MAX_SHIFTREDUCE 10
18
#define YY_ERROR_ACTION 10
19
#define YY_ACCEPT_ACTION 102
0
#define YY_NO_ACTION 102
1
#define YY_MIN_REDUCE 102
2
#define YY_MAX_REDUCE 13
67
#define YY_MIN_SHIFTREDUCE 67
5
#define YY_MAX_SHIFTREDUCE 10
22
#define YY_ERROR_ACTION 10
23
#define YY_ACCEPT_ACTION 102
4
#define YY_NO_ACTION 102
5
#define YY_MIN_REDUCE 102
6
#define YY_MAX_REDUCE 13
73
/************* End control #defines *******************************************/
#define YY_NLOOKAHEAD ((int)(sizeof(yy_lookahead)/sizeof(yy_lookahead[0])))
...
...
@@ -209,270 +209,269 @@ typedef union {
** yy_default[] Default action for each state.
**
*********** Begin parsing tables **********************************************/
#define YY_ACTTAB_COUNT (12
91
)
#define YY_ACTTAB_COUNT (12
82
)
static
const
YYACTIONTYPE
yy_action
[]
=
{
/* 0 */
12
25
,
43
,
306
,
1237
,
1114
,
350
,
1221
,
1227
,
238
,
1110
,
/* 10 */
89
,
120
1
,
31
,
29
,
27
,
26
,
25
,
1253
,
1120
,
24
,
/* 20 */
170
,
13
46
,
226
,
1253
,
347
,
31
,
29
,
27
,
26
,
25
,
/* 30 */
347
,
363
,
363
,
1103
,
1345
,
362
,
66
,
270
,
1344
,
1225
,
/* 40 */
349
,
12
37
,
307
,
280
,
1213
,
1221
,
1226
,
212
,
1065
,
335
,
/* 50 */
321
,
362
,
112
5
,
1125
,
61
,
1238
,
1239
,
1242
,
1285
,
879
,
/* 60 */
212
,
125
3
,
211
,
1281
,
246
,
363
,
271
,
1346
,
347
,
894
,
/* 70 */
112
2
,
1192
,
1194
,
239
,
1346
,
106
,
1092
,
924
,
349
,
271
,
/* 80 */
117
,
104
,
121
3
,
12
,
1344
,
189
,
1125
,
117
,
1155
,
1127
,
/* 90 */
92
4
,
1344
,
107
,
1238
,
1239
,
1242
,
1023
,
416
,
415
,
414
,
/* 0 */
12
30
,
43
,
306
,
1243
,
1118
,
350
,
1226
,
1233
,
238
,
1114
,
/* 10 */
89
,
120
5
,
31
,
29
,
27
,
26
,
25
,
1259
,
1124
,
24
,
/* 20 */
170
,
13
52
,
226
,
1259
,
347
,
31
,
29
,
27
,
26
,
25
,
/* 30 */
347
,
363
,
363
,
251
,
1351
,
362
,
66
,
270
,
1350
,
1230
,
/* 40 */
349
,
12
43
,
307
,
280
,
1217
,
1226
,
1232
,
212
,
1069
,
335
,
/* 50 */
321
,
362
,
112
9
,
1129
,
61
,
1244
,
1245
,
1248
,
1291
,
210
,
/* 60 */
212
,
125
9
,
211
,
1287
,
246
,
363
,
1065
,
1352
,
347
,
898
,
/* 70 */
112
6
,
1196
,
1198
,
239
,
1352
,
106
,
1096
,
928
,
349
,
350
,
/* 80 */
117
,
104
,
121
7
,
12
,
1350
,
1206
,
1129
,
117
,
293
,
1131
,
/* 90 */
92
8
,
1350
,
107
,
1244
,
1245
,
1248
,
1027
,
416
,
415
,
414
,
/* 100 */
413
,
412
,
411
,
410
,
409
,
408
,
407
,
406
,
405
,
404
,
/* 110 */
403
,
402
,
401
,
400
,
399
,
43
,
925
,
78
,
926
,
346
,
/* 120 */
77
,
76
,
75
,
74
,
73
,
72
,
71
,
70
,
69
,
925
,
/* 130 */
336
,
1359
,
1121
,
23
,
233
,
21
,
919
,
920
,
921
,
922
,
/* 140 */
923
,
927
,
928
,
929
,
883
,
930
,
23
,
233
,
1102
,
919
,
/* 150 */
920
,
921
,
922
,
923
,
927
,
928
,
929
,
9
,
8
,
1237
,
/* 160 */
362
,
782
,
386
,
385
,
384
,
786
,
383
,
788
,
789
,
382
,
/* 170 */
791
,
379
,
309
,
797
,
376
,
799
,
800
,
373
,
370
,
1253
,
/* 180 */
30
,
28
,
363
,
1172
,
98
,
118
,
334
,
360
,
235
,
225
,
/* 190 */
861
,
30
,
28
,
961
,
1170
,
105
,
349
,
1034
,
284
,
235
,
/* 200 */
1213
,
861
,
283
,
1125
,
1237
,
395
,
859
,
916
,
12
,
394
,
/* 210 */
62
,
1238
,
1239
,
1242
,
1285
,
11
,
251
,
859
,
228
,
1281
,
/* 220 */
112
,
1253
,
363
,
285
,
1253
,
937
,
11
,
66
,
347
,
1116
,
/* 230 */
396
,
334
,
166
,
881
,
286
,
52
,
1
,
109
,
313
,
1312
,
/* 240 */
219
,
349
,
210
,
1125
,
243
,
1213
,
165
,
1
,
1165
,
393
,
/* 250 */
392
,
391
,
1118
,
390
,
324
,
62
,
1238
,
1239
,
1242
,
1285
,
/* 260 */
428
,
1225
,
284
,
228
,
1281
,
112
,
283
,
1221
,
1226
,
1172
,
/* 270 */
1213
,
428
,
860
,
325
,
1237
,
240
,
220
,
104
,
218
,
217
,
/* 280 */
1170
,
282
,
118
,
860
,
1313
,
1128
,
118
,
285
,
710
,
1299
,
/* 290 */
709
,
862
,
865
,
201
,
1253
,
907
,
31
,
29
,
27
,
26
,
/* 300 */
25
,
347
,
862
,
865
,
201
,
882
,
907
,
1296
,
711
,
1101
,
/* 310 */
1237
,
349
,
1045
,
78
,
118
,
1213
,
77
,
76
,
75
,
74
,
/* 320 */
73
,
72
,
71
,
70
,
69
,
62
,
1238
,
1239
,
1242
,
1285
,
/* 330 */
1253
,
424
,
423
,
228
,
1281
,
1358
,
363
,
347
,
245
,
350
,
/* 340 */
1237
,
361
,
30
,
28
,
1319
,
1202
,
104
,
349
,
30
,
28
,
/* 350 */
235
,
1213
,
861
,
1213
,
1127
,
398
,
235
,
1125
,
861
,
709
,
/* 360 */
1253
,
62
,
1238
,
1239
,
1242
,
1285
,
985
,
347
,
859
,
228
,
/* 370 */
1281
,
1358
,
968
,
1172
,
859
,
278
,
338
,
349
,
881
,
247
,
/* 380 */
1342
,
1213
,
320
,
11
,
1170
,
1044
,
317
,
983
,
984
,
986
,
/* 390 */
987
,
62
,
1238
,
1239
,
1242
,
1285
,
1237
,
398
,
7
,
228
,
/* 400 */
1281
,
1358
,
339
,
906
,
1
,
908
,
909
,
910
,
911
,
912
,
/* 410 */
1303
,
880
,
1299
,
326
,
322
,
342
,
1253
,
30
,
28
,
348
,
/* 420 */
1068
,
59
,
428
,
347
,
1172
,
235
,
1213
,
861
,
428
,
1043
,
/* 430 */
1295
,
93
,
1189
,
349
,
860
,
1193
,
960
,
1213
,
1117
,
120
,
/* 440 */
860
,
363
,
335
,
859
,
1304
,
956
,
184
,
202
,
1238
,
1239
,
/* 450 */
1242
,
1014
,
1015
,
862
,
865
,
201
,
248
,
907
,
389
,
862
,
/* 460 */
865
,
201
,
1125
,
907
,
104
,
259
,
1112
,
1346
,
879
,
292
,
/* 470 */
1213
,
287
,
1127
,
7
,
291
,
252
,
118
,
290
,
264
,
288
,
/* 480 */
117
,
1035
,
289
,
982
,
1344
,
340
,
1237
,
265
,
31
,
29
,
/* 490 */
27
,
26
,
25
,
30
,
28
,
41
,
1299
,
428
,
6
,
363
,
/* 500 */
343
,
235
,
137
,
861
,
249
,
135
,
1253
,
30
,
28
,
860
,
/* 510 */
122
,
121
,
1061
,
347
,
1294
,
235
,
1237
,
861
,
139
,
859
,
/* 520 */
1125
,
138
,
884
,
349
,
27
,
26
,
25
,
1213
,
862
,
865
,
/* 530 */
201
,
1108
,
907
,
859
,
293
,
337
,
1253
,
63
,
1238
,
1239
,
/* 540 */
1242
,
1285
,
1056
,
347
,
388
,
1284
,
1281
,
1042
,
1093
,
7
,
/* 550 */
1054
,
318
,
167
,
349
,
1172
,
263
,
1041
,
1213
,
258
,
257
,
/* 560 */
256
,
255
,
254
,
1
,
295
,
1171
,
431
,
63
,
1238
,
1239
,
/* 570 */
1242
,
1285
,
298
,
428
,
1237
,
345
,
1281
,
868
,
141
,
959
,
/* 580 */
187
,
140
,
1040
,
88
,
160
,
860
,
277
,
428
,
1213
,
420
,
/* 590 */
1039
,
186
,
331
,
1166
,
1253
,
156
,
1038
,
1213
,
1037
,
860
,
/* 600 */
956
,
347
,
1100
,
304
,
862
,
865
,
201
,
154
,
907
,
9
,
/* 610 */
8
,
349
,
1315
,
92
,
60
,
1213
,
302
,
182
,
862
,
865
,
/* 620 */
201
,
332
,
907
,
1213
,
151
,
63
,
1238
,
1239
,
1242
,
1285
,
/* 630 */
143
,
1213
,
335
,
142
,
1282
,
1237
,
1036
,
1213
,
1254
,
1213
,
/* 640 */
90
,
1017
,
1018
,
871
,
1237
,
169
,
58
,
867
,
359
,
1033
,
/* 650 */
163
,
1292
,
330
,
1032
,
329
,
1253
,
54
,
1346
,
1031
,
395
,
/* 660 */
1030
,
879
,
347
,
394
,
1253
,
312
,
931
,
1029
,
147
,
2
,
/* 670 */
117
,
347
,
349
,
1237
,
1344
,
1028
,
1213
,
1213
,
32
,
234
,
/* 680 */
1020
,
349
,
1237
,
119
,
396
,
1213
,
206
,
1238
,
1239
,
1242
,
/* 690 */
1213
,
1237
,
1191
,
1253
,
1213
,
204
,
1238
,
1239
,
1242
,
1213
,
/* 700 */
347
,
1213
,
1253
,
393
,
392
,
391
,
253
,
390
,
1213
,
347
,
/* 710 */
349
,
1253
,
1027
,
870
,
1213
,
261
,
1213
,
314
,
347
,
349
,
/* 720 */
887
,
1237
,
260
,
1213
,
206
,
1238
,
1239
,
1242
,
349
,
250
,
/* 730 */
262
,
124
,
1213
,
205
,
1238
,
1239
,
1242
,
242
,
241
,
1237
,
/* 740 */
266
,
1253
,
107
,
1238
,
1239
,
1242
,
1026
,
873
,
347
,
267
,
/* 750 */
886
,
268
,
194
,
1213
,
1346
,
127
,
331
,
196
,
349
,
1253
,
/* 760 */
42
,
1025
,
1213
,
866
,
269
,
327
,
347
,
117
,
1237
,
195
,
/* 770 */
891
,
1344
,
207
,
1238
,
1239
,
1242
,
349
,
92
,
130
,
123
,
/* 780 */
1213
,
1360
,
32
,
232
,
272
,
885
,
20
,
1213
,
1253
,
854
,
/* 790 */
206
,
1238
,
1239
,
1242
,
279
,
347
,
31
,
29
,
27
,
26
,
/* 800 */
25
,
32
,
1213
,
68
,
90
,
349
,
1022
,
281
,
1115
,
1213
,
/* 810 */
134
,
1231
,
236
,
333
,
113
,
1292
,
1293
,
364
,
1297
,
206
,
/* 820 */
1238
,
1239
,
1242
,
1229
,
1237
,
1111
,
136
,
100
,
101
,
869
,
/* 830 */
87
,
86
,
85
,
84
,
83
,
82
,
81
,
80
,
79
,
861
,
/* 840 */
64
,
175
,
355
,
1113
,
1253
,
181
,
1237
,
132
,
874
,
865
,
/* 850 */
111
,
347
,
1237
,
173
,
95
,
859
,
276
,
96
,
131
,
775
,
/* 860 */
1109
,
349
,
102
,
103
,
224
,
1213
,
1253
,
308
,
146
,
311
,
/* 870 */
770
,
98
,
1253
,
347
,
1237
,
199
,
1238
,
1239
,
1242
,
347
,
/* 880 */
118
,
44
,
41
,
349
,
129
,
310
,
331
,
1213
,
149
,
349
,
/* 890 */
884
,
1316
,
319
,
1213
,
1253
,
1326
,
152
,
208
,
1238
,
1239
,
/* 900 */
1242
,
347
,
1237
,
200
,
1238
,
1239
,
1242
,
92
,
803
,
428
,
/* 910 */
1237
,
349
,
807
,
353
,
316
,
1213
,
865
,
1325
,
5
,
155
,
/* 920 */
368
,
860
,
1253
,
227
,
96
,
209
,
1238
,
1239
,
1242
,
347
,
/* 930 */
1253
,
128
,
323
,
1306
,
90
,
125
,
159
,
347
,
1237
,
349
,
/* 940 */
862
,
865
,
315
,
1213
,
114
,
1292
,
1293
,
349
,
1297
,
328
,
/* 950 */
4
,
1213
,
161
,
1250
,
1238
,
1239
,
1242
,
1237
,
1253
,
22
,
/* 960 */
110
,
1249
,
1238
,
1239
,
1242
,
347
,
1237
,
956
,
813
,
31
,
/* 970 */
29
,
27
,
26
,
25
,
883
,
349
,
812
,
1253
,
1300
,
1213
,
/* 980 */
97
,
91
,
33
,
162
,
347
,
1237
,
1253
,
229
,
98
,
1248
,
/* 990 */
1238
,
1239
,
1242
,
347
,
349
,
1361
,
344
,
341
,
1213
,
1343
,
/* 1000 */
168
,
17
,
1267
,
349
,
99
,
1253
,
356
,
1213
,
215
,
1238
,
/* 1010 */
1239
,
1242
,
347
,
1237
,
1200
,
351
,
96
,
214
,
1238
,
1239
,
/* 1020 */
1242
,
352
,
349
,
177
,
1199
,
237
,
1213
,
357
,
331
,
358
,
/* 1030 */
179
,
188
,
51
,
1253
,
1126
,
53
,
216
,
1238
,
1239
,
1242
,
/* 1040 */
347
,
1237
,
366
,
297
,
190
,
185
,
427
,
197
,
198
,
92
,
/* 1050 */
349
,
193
,
1207
,
192
,
1213
,
837
,
1184
,
1183
,
305
,
94
,
/* 1060 */
1182
,
1253
,
1181
,
1180
,
213
,
1238
,
1239
,
1242
,
347
,
1179
,
/* 1070 */
1178
,
1177
,
145
,
1176
,
1175
,
300
,
90
,
839
,
349
,
1174
,
/* 1080 */
294
,
1173
,
1213
,
144
,
1067
,
1206
,
115
,
1292
,
1293
,
1197
,
/* 1090 */
1297
,
126
,
203
,
1238
,
1239
,
1242
,
1104
,
722
,
1066
,
1064
,
/* 1100 */
292
,
275
,
287
,
273
,
274
,
291
,
40
,
1053
,
290
,
39
,
/* 1110 */
288
,
1052
,
1049
,
289
,
1106
,
31
,
29
,
27
,
26
,
25
,
/* 1120 */
67
,
133
,
818
,
1105
,
820
,
819
,
750
,
1062
,
749
,
748
,
/* 1130 */
747
,
746
,
745
,
1057
,
296
,
221
,
1055
,
222
,
223
,
299
,
/* 1140 */
1048
,
301
,
1047
,
303
,
65
,
1205
,
1204
,
36
,
1196
,
148
,
/* 1150 */
45
,
150
,
14
,
3
,
15
,
34
,
32
,
37
,
158
,
19
,
/* 1160 */
1229
,
48
,
10
,
164
,
8
,
917
,
153
,
1003
,
1002
,
230
,
/* 1170 */
1007
,
981
,
894
,
108
,
354
,
1006
,
157
,
231
,
975
,
974
,
/* 1180 */
1195
,
180
,
875
,
1021
,
116
,
46
,
47
,
1021
,
1021
,
953
,
/* 1190 */
1021
,
952
,
1021
,
1021
,
178
,
1008
,
1063
,
1051
,
1050
,
367
,
/* 1200 */
1021
,
244
,
1021
,
371
,
892
,
781
,
35
,
172
,
1021
,
16
,
/* 1210 */
979
,
13
,
18
,
374
,
171
,
174
,
377
,
176
,
49
,
380
,
/* 1220 */
50
,
425
,
1021
,
1021
,
38
,
815
,
809
,
426
,
804
,
742
,
/* 1230 */
811
,
54
,
369
,
810
,
1228
,
183
,
801
,
365
,
372
,
1021
,
/* 1240 */
798
,
375
,
734
,
792
,
378
,
422
,
790
,
381
,
741
,
740
,
/* 1250 */
720
,
739
,
397
,
55
,
738
,
737
,
736
,
735
,
56
,
733
,
/* 1260 */
796
,
418
,
795
,
794
,
387
,
732
,
793
,
731
,
57
,
730
,
/* 1270 */
729
,
728
,
727
,
726
,
725
,
417
,
1046
,
421
,
863
,
191
,
/* 1280 */
429
,
419
,
430
,
1021
,
1021
,
1021
,
1021
,
1021
,
1021
,
1021
,
/* 1290 */
814
,
/* 110 */
403
,
402
,
401
,
400
,
399
,
189
,
929
,
77
,
1159
,
1120
,
/* 120 */
76
,
75
,
74
,
73
,
72
,
71
,
70
,
69
,
68
,
929
,
/* 130 */
336
,
1365
,
424
,
423
,
23
,
233
,
923
,
924
,
925
,
926
,
/* 140 */
927
,
931
,
932
,
933
,
27
,
26
,
25
,
23
,
233
,
923
,
/* 150 */
924
,
925
,
926
,
927
,
931
,
932
,
933
,
9
,
8
,
1243
,
/* 160 */
1217
,
784
,
386
,
385
,
384
,
788
,
383
,
790
,
791
,
382
,
/* 170 */
793
,
379
,
883
,
799
,
376
,
801
,
802
,
373
,
370
,
1259
,
/* 180 */
30
,
28
,
105
,
1176
,
1038
,
243
,
334
,
1049
,
235
,
225
,
/* 190 */
863
,
30
,
28
,
965
,
1174
,
271
,
349
,
362
,
1259
,
235
,
/* 200 */
1217
,
863
,
1230
,
1243
,
885
,
347
,
861
,
1107
,
1226
,
1232
,
/* 210 */
62
,
1244
,
1245
,
1248
,
1291
,
11
,
363
,
861
,
228
,
1287
,
/* 220 */
112
,
360
,
712
,
1259
,
711
,
941
,
11
,
339
,
1217
,
1105
,
/* 230 */
347
,
324
,
166
,
30
,
28
,
1024
,
1
,
1129
,
313
,
1318
,
/* 240 */
349
,
235
,
713
,
863
,
1217
,
12
,
320
,
1
,
31
,
29
,
/* 250 */
27
,
26
,
25
,
271
,
62
,
1244
,
1245
,
1248
,
1291
,
861
,
/* 260 */
428
,
338
,
228
,
1287
,
1364
,
1310
,
960
,
1048
,
11
,
363
,
/* 270 */
930
,
428
,
862
,
1325
,
66
,
398
,
1176
,
326
,
322
,
1243
,
/* 280 */
1047
,
286
,
240
,
862
,
250
,
242
,
241
,
1174
,
21
,
1
,
/* 290 */
1129
,
864
,
867
,
868
,
201
,
876
,
911
,
934
,
118
,
1259
,
/* 300 */
325
,
109
,
864
,
867
,
868
,
201
,
334
,
911
,
1217
,
1352
,
/* 310 */
340
,
869
,
1169
,
428
,
118
,
1243
,
349
,
1046
,
1176
,
1045
,
/* 320 */
1217
,
1217
,
117
,
118
,
247
,
862
,
1350
,
259
,
1060
,
1174
,
/* 330 */
62
,
1244
,
1245
,
1248
,
1291
,
1259
,
363
,
1305
,
228
,
1287
,
/* 340 */
112
,
361
,
347
,
363
,
864
,
867
,
868
,
201
,
184
,
911
,
/* 350 */
295
,
1243
,
349
,
30
,
28
,
1302
,
1217
,
1129
,
1217
,
1319
,
/* 360 */
1217
,
235
,
1305
,
863
,
1129
,
364
,
62
,
1244
,
1245
,
1248
,
/* 370 */
1291
,
1259
,
122
,
121
,
228
,
1287
,
1364
,
872
,
347
,
861
,
/* 380 */
1301
,
30
,
28
,
348
,
972
,
1348
,
1044
,
389
,
349
,
235
,
/* 390 */
885
,
863
,
1217
,
118
,
363
,
331
,
877
,
880
,
868
,
249
,
/* 400 */
1043
,
1042
,
62
,
1244
,
1245
,
1248
,
1291
,
861
,
1041
,
7
,
/* 410 */
228
,
1287
,
1364
,
964
,
245
,
1129
,
92
,
886
,
30
,
28
,
/* 420 */
337
,
1309
,
104
,
398
,
30
,
28
,
235
,
1217
,
863
,
59
,
/* 430 */
1131
,
1243
,
235
,
428
,
863
,
1040
,
1176
,
7
,
1037
,
93
,
/* 440 */
248
,
1217
,
1217
,
90
,
861
,
862
,
1121
,
1197
,
104
,
1217
,
/* 450 */
861
,
1259
,
333
,
113
,
1298
,
1299
,
1131
,
1303
,
347
,
1036
,
/* 460 */
1035
,
428
,
884
,
1193
,
864
,
867
,
868
,
201
,
349
,
911
,
/* 470 */
120
,
1034
,
1217
,
862
,
7
,
887
,
1217
,
335
,
1176
,
1217
,
/* 480 */
1
,
1033
,
202
,
1244
,
1245
,
1248
,
284
,
118
,
297
,
1175
,
/* 490 */
283
,
1116
,
864
,
867
,
868
,
201
,
43
,
911
,
428
,
1112
,
/* 500 */
1217
,
1217
,
1352
,
305
,
428
,
1032
,
1243
,
1106
,
1031
,
1030
,
/* 510 */
862
,
285
,
1217
,
1125
,
1029
,
117
,
862
,
145
,
888
,
1350
,
/* 520 */
300
,
1305
,
1217
,
9
,
8
,
294
,
1259
,
52
,
144
,
864
,
/* 530 */
867
,
868
,
201
,
347
,
911
,
864
,
867
,
868
,
201
,
1300
,
/* 540 */
911
,
989
,
1243
,
349
,
1122
,
104
,
1217
,
1217
,
6
,
1217
,
/* 550 */
1217
,
40
,
342
,
1132
,
39
,
1217
,
963
,
63
,
1244
,
1245
,
/* 560 */
1248
,
1291
,
1259
,
331
,
395
,
1290
,
1287
,
304
,
394
,
347
,
/* 570 */
863
,
388
,
317
,
987
,
988
,
990
,
991
,
165
,
1243
,
349
,
/* 580 */
302
,
871
,
137
,
1217
,
92
,
135
,
861
,
194
,
139
,
396
,
/* 590 */
1039
,
138
,
196
,
63
,
1244
,
1245
,
1248
,
1291
,
1259
,
318
,
/* 600 */
711
,
345
,
1287
,
335
,
195
,
347
,
309
,
1243
,
393
,
392
,
/* 610 */
391
,
90
,
390
,
1058
,
123
,
349
,
278
,
346
,
98
,
1217
,
/* 620 */
151
,
163
,
1298
,
330
,
1104
,
329
,
1243
,
1259
,
1352
,
63
,
/* 630 */
1244
,
1245
,
1248
,
1291
,
347
,
298
,
141
,
343
,
1288
,
140
,
/* 640 */
428
,
117
,
986
,
156
,
349
,
1350
,
1259
,
874
,
1217
,
1243
,
/* 650 */
960
,
234
,
862
,
347
,
41
,
154
,
1021
,
1022
,
206
,
1244
,
/* 660 */
1245
,
1248
,
143
,
349
,
58
,
142
,
1097
,
1217
,
1243
,
1259
,
/* 670 */
314
,
864
,
867
,
868
,
54
,
64
,
347
,
206
,
1244
,
1245
,
/* 680 */
1248
,
395
,
870
,
1170
,
935
,
394
,
349
,
895
,
1259
,
167
,
/* 690 */
1217
,
160
,
277
,
1321
,
920
,
347
,
32
,
883
,
1237
,
32
,
/* 700 */
205
,
1244
,
1245
,
1248
,
252
,
349
,
396
,
264
,
1243
,
1217
,
/* 710 */
1235
,
856
,
175
,
1243
,
332
,
118
,
265
,
169
,
355
,
107
,
/* 720 */
1244
,
1245
,
1248
,
32
,
173
,
393
,
392
,
391
,
1259
,
390
,
/* 730 */
95
,
1260
,
327
,
1259
,
2
,
347
,
883
,
1195
,
119
,
253
,
/* 740 */
347
,
181
,
261
,
260
,
266
,
349
,
891
,
262
,
873
,
1217
,
/* 750 */
349
,
777
,
232
,
96
,
1217
,
1072
,
268
,
236
,
1366
,
206
,
/* 760 */
1244
,
1245
,
1248
,
98
,
206
,
1244
,
1245
,
1248
,
1026
,
267
,
/* 770 */
124
,
77
,
890
,
772
,
76
,
75
,
74
,
73
,
72
,
71
,
/* 780 */
70
,
69
,
68
,
127
,
263
,
41
,
42
,
258
,
257
,
256
,
/* 790 */
255
,
254
,
86
,
85
,
84
,
83
,
82
,
81
,
80
,
79
,
/* 800 */
78
,
431
,
1243
,
272
,
292
,
269
,
287
,
1243
,
130
,
291
,
/* 810 */
889
,
805
,
290
,
279
,
288
,
187
,
281
,
289
,
88
,
87
,
/* 820 */
809
,
308
,
1259
,
368
,
420
,
224
,
186
,
1259
,
292
,
347
,
/* 830 */
287
,
310
,
96
,
291
,
347
,
815
,
290
,
1243
,
288
,
349
,
/* 840 */
1119
,
289
,
134
,
1217
,
349
,
1243
,
1115
,
97
,
1217
,
60
,
/* 850 */
814
,
136
,
182
,
204
,
1244
,
1245
,
1248
,
1259
,
207
,
1244
,
/* 860 */
1245
,
1248
,
98
,
99
,
347
,
1259
,
31
,
29
,
27
,
26
,
/* 870 */
25
,
100
,
347
,
101
,
349
,
96
,
1117
,
146
,
1217
,
1113
,
/* 880 */
102
,
1243
,
349
,
359
,
103
,
149
,
1217
,
311
,
199
,
1244
,
/* 890 */
1245
,
1248
,
888
,
1322
,
319
,
1332
,
208
,
1244
,
1245
,
1248
,
/* 900 */
312
,
1259
,
353
,
147
,
1243
,
152
,
316
,
227
,
347
,
1243
,
/* 910 */
31
,
29
,
27
,
26
,
25
,
1331
,
868
,
155
,
349
,
323
,
/* 920 */
5
,
328
,
1217
,
898
,
1259
,
315
,
1312
,
159
,
4
,
1259
,
/* 930 */
110
,
347
,
200
,
1244
,
1245
,
1248
,
347
,
960
,
91
,
887
,
/* 940 */
33
,
349
,
161
,
1306
,
1243
,
1217
,
349
,
162
,
344
,
341
,
/* 950 */
1217
,
17
,
1243
,
229
,
1367
,
209
,
1244
,
1245
,
1248
,
331
,
/* 960 */
1256
,
1244
,
1245
,
1248
,
1259
,
1273
,
356
,
357
,
179
,
1349
,
/* 970 */
168
,
347
,
1259
,
1204
,
1243
,
1203
,
351
,
177
,
352
,
347
,
/* 980 */
92
,
349
,
51
,
237
,
358
,
1217
,
188
,
1130
,
53
,
349
,
/* 990 */
190
,
366
,
185
,
1217
,
1259
,
1255
,
1244
,
1245
,
1248
,
427
,
/* 1000 */
197
,
347
,
1243
,
1254
,
1244
,
1245
,
1248
,
90
,
198
,
193
,
/* 1010 */
1243
,
349
,
192
,
1211
,
839
,
1217
,
1188
,
114
,
1298
,
1299
,
/* 1020 */
94
,
1303
,
1259
,
1187
,
1186
,
215
,
1244
,
1245
,
1248
,
347
,
/* 1030 */
1259
,
1185
,
1243
,
1184
,
1183
,
1182
,
1181
,
347
,
126
,
349
,
/* 1040 */
1243
,
841
,
1180
,
1217
,
1179
,
1178
,
1177
,
349
,
1071
,
1210
,
/* 1050 */
1201
,
1217
,
1259
,
214
,
1244
,
1245
,
1248
,
1108
,
724
,
347
,
/* 1060 */
1259
,
216
,
1244
,
1245
,
1248
,
1018
,
1019
,
347
,
1070
,
349
,
/* 1070 */
1068
,
132
,
275
,
1217
,
111
,
219
,
1057
,
349
,
331
,
273
,
/* 1080 */
276
,
1217
,
131
,
213
,
1244
,
1245
,
1248
,
274
,
1056
,
1053
,
/* 1090 */
1110
,
203
,
1244
,
1245
,
1248
,
67
,
133
,
284
,
822
,
92
,
/* 1100 */
821
,
283
,
820
,
1109
,
752
,
44
,
1066
,
751
,
129
,
750
,
/* 1110 */
749
,
220
,
748
,
218
,
217
,
747
,
282
,
20
,
221
,
1061
,
/* 1120 */
222
,
296
,
285
,
1059
,
223
,
299
,
90
,
31
,
29
,
27
,
/* 1130 */
26
,
25
,
22
,
1052
,
301
,
1051
,
115
,
1298
,
1299
,
303
,
/* 1140 */
1303
,
65
,
31
,
29
,
27
,
26
,
25
,
910
,
1209
,
912
,
/* 1150 */
913
,
914
,
915
,
916
,
1208
,
128
,
1200
,
148
,
14
,
125
,
/* 1160 */
45
,
36
,
3
,
153
,
150
,
32
,
37
,
158
,
985
,
108
,
/* 1170 */
34
,
1235
,
157
,
164
,
979
,
46
,
19
,
978
,
47
,
48
,
/* 1180 */
15
,
35
,
957
,
1007
,
1006
,
956
,
8
,
1012
,
230
,
116
,
/* 1190 */
1011
,
1010
,
16
,
10
,
896
,
231
,
13
,
921
,
172
,
18
,
/* 1200 */
171
,
983
,
174
,
354
,
176
,
49
,
1199
,
178
,
50
,
878
,
/* 1210 */
38
,
367
,
244
,
806
,
180
,
369
,
54
,
371
,
803
,
1234
,
/* 1220 */
800
,
183
,
365
,
372
,
374
,
783
,
375
,
377
,
794
,
378
,
/* 1230 */
380
,
792
,
817
,
381
,
813
,
812
,
811
,
55
,
722
,
56
,
/* 1240 */
57
,
744
,
397
,
743
,
736
,
742
,
741
,
740
,
739
,
738
,
/* 1250 */
387
,
737
,
1067
,
735
,
798
,
734
,
733
,
797
,
732
,
731
,
/* 1260 */
796
,
795
,
730
,
729
,
728
,
727
,
417
,
418
,
1055
,
1054
,
/* 1270 */
421
,
422
,
419
,
1050
,
816
,
425
,
426
,
1025
,
865
,
191
,
/* 1280 */
429
,
430
,
};
static
const
YYCODETYPE
yy_lookahead
[]
=
{
/* 0 */
216
,
183
,
181
,
175
,
196
,
212
,
222
,
223
,
215
,
196
,
/* 10 */
192
,
218
,
12
,
13
,
14
,
15
,
16
,
195
,
200
,
231
,
/* 20 */
232
,
246
,
199
,
195
,
202
,
12
,
13
,
14
,
15
,
16
,
/* 30 */
202
,
181
,
181
,
0
,
259
,
20
,
186
,
186
,
263
,
216
,
/* 30 */
202
,
181
,
181
,
181
,
259
,
20
,
186
,
186
,
263
,
216
,
/* 40 */
212
,
175
,
221
,
193
,
216
,
222
,
223
,
47
,
0
,
221
,
/* 50 */
228
,
20
,
202
,
202
,
226
,
227
,
228
,
229
,
230
,
20
,
/* 60 */
47
,
195
,
234
,
235
,
204
,
181
,
46
,
246
,
202
,
69
,
/* 70 */
186
,
211
,
212
,
187
,
246
,
184
,
185
,
77
,
212
,
46
,
/* 80 */
259
,
195
,
216
,
68
,
263
,
188
,
202
,
259
,
191
,
203
,
/* 50 */
228
,
20
,
202
,
202
,
226
,
227
,
228
,
229
,
230
,
207
,
/* 60 */
47
,
195
,
234
,
235
,
204
,
181
,
0
,
246
,
202
,
69
,
/* 70 */
186
,
211
,
212
,
187
,
246
,
184
,
185
,
77
,
212
,
212
,
/* 80 */
259
,
195
,
216
,
68
,
263
,
218
,
202
,
259
,
22
,
203
,
/* 90 */
77
,
263
,
226
,
227
,
228
,
229
,
0
,
49
,
50
,
51
,
/* 100 */
52
,
53
,
54
,
55
,
56
,
57
,
58
,
59
,
60
,
61
,
/* 110 */
62
,
63
,
64
,
65
,
66
,
18
3
,
116
,
21
,
116
,
47
,
/* 110 */
62
,
63
,
64
,
65
,
66
,
18
8
,
116
,
21
,
191
,
175
,
/* 120 */
24
,
25
,
26
,
27
,
28
,
29
,
30
,
31
,
32
,
116
,
/* 130 */
264
,
265
,
200
,
133
,
134
,
133
,
136
,
137
,
138
,
139
,
/* 140 */
140
,
141
,
142
,
143
,
20
,
143
,
133
,
134
,
0
,
136
,
/* 130 */
264
,
265
,
178
,
179
,
134
,
135
,
136
,
137
,
138
,
139
,
/* 140 */
140
,
141
,
142
,
143
,
14
,
15
,
16
,
134
,
135
,
136
,
/* 150 */
137
,
138
,
139
,
140
,
141
,
142
,
143
,
1
,
2
,
175
,
/* 160 */
20
,
83
,
84
,
85
,
86
,
87
,
88
,
89
,
90
,
91
,
/* 170 */
92
,
93
,
69
,
95
,
96
,
97
,
98
,
99
,
100
,
195
,
/* 180 */
12
,
13
,
1
81
,
195
,
81
,
146
,
202
,
186
,
20
,
201
,
/* 190 */
22
,
12
,
13
,
14
,
206
,
174
,
212
,
176
,
57
,
20
,
/* 200 */
216
,
22
,
61
,
202
,
175
,
57
,
38
,
135
,
68
,
61
,
/* 160 */
216
,
83
,
84
,
85
,
86
,
87
,
88
,
89
,
90
,
91
,
/* 170 */
92
,
93
,
20
,
95
,
96
,
97
,
98
,
99
,
100
,
195
,
/* 180 */
12
,
13
,
1
74
,
195
,
176
,
199
,
202
,
175
,
20
,
201
,
/* 190 */
22
,
12
,
13
,
14
,
206
,
46
,
212
,
20
,
195
,
20
,
/* 200 */
216
,
22
,
216
,
175
,
20
,
202
,
38
,
0
,
222
,
223
,
/* 210 */
226
,
227
,
228
,
229
,
230
,
47
,
181
,
38
,
234
,
235
,
/* 220 */
236
,
1
95
,
181
,
82
,
195
,
69
,
47
,
186
,
202
,
175
,
/* 230 */
82
,
202
,
248
,
20
,
193
,
180
,
68
,
194
,
254
,
255
,
/* 240 */
35
,
212
,
207
,
202
,
199
,
216
,
122
,
68
,
205
,
101
,
/* 250 */
102
,
103
,
197
,
105
,
228
,
226
,
227
,
228
,
229
,
230
,
/* 260 */
92
,
216
,
57
,
234
,
235
,
236
,
61
,
222
,
223
,
195
,
/* 270 */
216
,
92
,
104
,
20
,
175
,
201
,
71
,
195
,
73
,
74
,
/* 280 */
206
,
76
,
146
,
104
,
255
,
203
,
146
,
82
,
20
,
224
,
/* 290 */
22
,
123
,
124
,
125
,
195
,
127
,
12
,
13
,
14
,
1
5
,
/* 300 */
16
,
202
,
123
,
124
,
125
,
20
,
127
,
242
,
40
,
0
,
/* 310 */
1
75
,
212
,
175
,
21
,
146
,
216
,
24
,
25
,
26
,
27
,
/* 320 */
28
,
29
,
30
,
31
,
32
,
226
,
227
,
228
,
229
,
230
,
/* 330 */
195
,
178
,
179
,
234
,
235
,
236
,
181
,
202
,
187
,
212
,
/* 340 */
175
,
186
,
12
,
13
,
245
,
218
,
195
,
212
,
12
,
13
,
/* 350 */
2
0
,
216
,
22
,
216
,
203
,
46
,
20
,
202
,
22
,
22
,
/* 360 */
195
,
226
,
227
,
228
,
229
,
230
,
135
,
202
,
38
,
234
,
/* 370 */
23
5
,
236
,
14
,
195
,
38
,
38
,
3
,
212
,
20
,
201
,
/* 380 */
24
5
,
216
,
120
,
47
,
206
,
175
,
155
,
156
,
157
,
158
,
/* 390 */
159
,
226
,
227
,
228
,
229
,
230
,
175
,
46
,
68
,
234
,
/* 400 */
235
,
236
,
81
,
126
,
68
,
128
,
129
,
130
,
131
,
132
,
/* 410 */
2
45
,
20
,
224
,
151
,
152
,
81
,
195
,
12
,
13
,
14
,
/* 420 */
0
,
180
,
92
,
202
,
195
,
20
,
216
,
22
,
92
,
175
,
/* 430 */
2
42
,
190
,
202
,
212
,
104
,
206
,
4
,
216
,
197
,
209
,
/* 440 */
1
04
,
181
,
221
,
38
,
144
,
145
,
186
,
226
,
227
,
228
,
/* 450 */
229
,
167
,
168
,
123
,
124
,
125
,
187
,
127
,
79
,
123
,
/* 460 */
1
24
,
125
,
202
,
127
,
195
,
63
,
196
,
246
,
20
,
49
,
/* 470 */
2
16
,
51
,
203
,
68
,
54
,
27
,
146
,
57
,
30
,
59
,
/* 480 */
259
,
176
,
62
,
69
,
263
,
164
,
175
,
39
,
12
,
13
,
/* 490 */
14
,
15
,
16
,
12
,
13
,
81
,
224
,
92
,
43
,
181
,
/* 500 */
166
,
20
,
72
,
22
,
186
,
75
,
195
,
12
,
13
,
104
,
/* 510 */
10
8
,
109
,
0
,
202
,
242
,
20
,
175
,
22
,
72
,
38
,
/* 520 */
202
,
75
,
20
,
212
,
14
,
15
,
16
,
216
,
123
,
124
,
/* 530 */
12
5
,
196
,
127
,
38
,
22
,
162
,
195
,
226
,
227
,
228
,
/* 540 */
229
,
230
,
0
,
202
,
196
,
234
,
235
,
175
,
185
,
68
,
/* 550 */
0
,
257
,
266
,
212
,
195
,
107
,
175
,
216
,
110
,
111
,
/* 560 */
112
,
113
,
114
,
68
,
22
,
206
,
19
,
226
,
227
,
228
,
/* 570 */
229
,
230
,
22
,
92
,
175
,
234
,
235
,
38
,
72
,
147
,
/* 580 */
3
3
,
75
,
175
,
36
,
251
,
104
,
178
,
92
,
216
,
4
2
,
/* 590 */
17
5
,
44
,
181
,
205
,
195
,
69
,
175
,
216
,
175
,
104
,
/* 600 */
145
,
202
,
0
,
21
,
123
,
124
,
125
,
81
,
127
,
1
,
/* 610 */
2
,
212
,
225
,
202
,
67
,
216
,
34
,
70
,
123
,
124
,
/* 620 */
12
5
,
244
,
127
,
216
,
122
,
226
,
227
,
228
,
229
,
230
,
/* 630 */
72
,
216
,
221
,
75
,
235
,
175
,
175
,
216
,
195
,
216
,
/* 640 */
229
,
170
,
171
,
104
,
175
,
260
,
68
,
38
,
101
,
175
,
/* 650 */
239
,
240
,
241
,
175
,
243
,
195
,
78
,
246
,
175
,
5
7
,
/* 660 */
175
,
20
,
202
,
61
,
195
,
118
,
69
,
175
,
121
,
247
,
/* 670 */
2
59
,
202
,
212
,
175
,
263
,
175
,
216
,
216
,
81
,
219
,
/* 680 */
172
,
212
,
175
,
115
,
82
,
216
,
226
,
227
,
228
,
229
,
/* 690 */
216
,
175
,
181
,
195
,
216
,
226
,
227
,
228
,
229
,
216
,
/* 700 */
2
02
,
216
,
195
,
101
,
102
,
103
,
210
,
105
,
216
,
202
,
/* 710 */
212
,
195
,
175
,
104
,
216
,
116
,
216
,
219
,
202
,
212
,
/* 720 */
20
,
175
,
208
,
216
,
226
,
227
,
228
,
229
,
212
,
221
,
/* 730 */
208
,
183
,
216
,
226
,
227
,
228
,
229
,
12
,
13
,
175
,
/* 740 */
181
,
195
,
226
,
227
,
228
,
229
,
175
,
22
,
202
,
220
,
/* 750 */
20
,
202
,
18
,
216
,
246
,
183
,
181
,
23
,
212
,
195
,
/* 760 */
183
,
175
,
216
,
38
,
213
,
258
,
202
,
259
,
175
,
35
,
/* 770 */
69
,
263
,
226
,
227
,
228
,
229
,
212
,
202
,
183
,
45
,
/* 780 */
216
,
265
,
81
,
219
,
181
,
20
,
2
,
216
,
195
,
69
,
/* 790 */
226
,
227
,
228
,
229
,
177
,
202
,
12
,
13
,
14
,
15
,
/* 800 */
16
,
81
,
216
,
181
,
229
,
212
,
0
,
195
,
195
,
216
,
/* 810 */
195
,
68
,
219
,
238
,
239
,
240
,
241
,
92
,
243
,
226
,
/* 820 */
227
,
228
,
229
,
80
,
175
,
195
,
195
,
195
,
195
,
104
,
/* 830 */
24
,
25
,
26
,
27
,
28
,
29
,
30
,
31
,
32
,
2
2
,
/* 840 */
1
06
,
69
,
69
,
195
,
195
,
69
,
175
,
33
,
123
,
124
,
/* 850 */
36
,
202
,
175
,
81
,
81
,
38
,
42
,
81
,
44
,
69
,
/* 860 */
195
,
212
,
195
,
195
,
177
,
216
,
195
,
220
,
180
,
213
,
/* 870 */
69
,
81
,
195
,
202
,
175
,
226
,
227
,
228
,
229
,
202
,
/* 880 */
1
46
,
67
,
81
,
212
,
70
,
202
,
181
,
216
,
180
,
212
,
/* 890 */
20
,
225
,
154
,
216
,
195
,
256
,
217
,
226
,
227
,
228
,
/* 900 */
229
,
202
,
175
,
226
,
227
,
228
,
229
,
202
,
69
,
92
,
/* 910 */
175
,
212
,
69
,
153
,
216
,
216
,
124
,
256
,
161
,
217
,
/* 920 */
81
,
104
,
195
,
216
,
81
,
226
,
227
,
228
,
229
,
202
,
/* 930 */
195
,
117
,
216
,
253
,
229
,
121
,
252
,
202
,
175
,
212
,
/* 940 */
1
23
,
124
,
149
,
216
,
239
,
240
,
241
,
212
,
243
,
160
,
/* 950 */
148
,
216
,
249
,
226
,
227
,
228
,
229
,
175
,
195
,
2
,
/* 960 */
2
50
,
226
,
227
,
228
,
229
,
202
,
175
,
145
,
69
,
1
2
,
/* 970 */
13
,
14
,
15
,
16
,
20
,
212
,
69
,
195
,
224
,
216
,
/* 980 */
81
,
202
,
115
,
237
,
202
,
175
,
195
,
169
,
81
,
226
,
/* 990 */
227
,
228
,
229
,
202
,
212
,
267
,
165
,
163
,
216
,
262
,
/* 1000 */
261
,
68
,
233
,
212
,
69
,
195
,
119
,
216
,
226
,
227
,
/* 1010 */
228
,
229
,
202
,
175
,
217
,
216
,
81
,
226
,
227
,
228
,
/* 1020 */
229
,
216
,
212
,
202
,
217
,
216
,
216
,
214
,
181
,
213
,
/* 1030 */
1
80
,
191
,
180
,
195
,
202
,
68
,
226
,
227
,
228
,
229
,
/* 1040 */
202
,
175
,
198
,
4
,
181
,
180
,
177
,
189
,
189
,
202
,
/* 1050 */
212
,
173
,
0
,
182
,
216
,
80
,
0
,
0
,
19
,
115
,
/* 1060 */
0
,
195
,
0
,
0
,
226
,
227
,
228
,
229
,
202
,
0
,
/* 1070 */
0
,
0
,
33
,
0
,
0
,
36
,
229
,
22
,
212
,
0
,
/* 1080 */
4
1
,
0
,
216
,
44
,
0
,
0
,
239
,
240
,
241
,
0
,
/* 1090 */
243
,
43
,
226
,
227
,
228
,
229
,
0
,
48
,
0
,
0
,
/* 1100 */
49
,
43
,
51
,
38
,
36
,
54
,
67
,
0
,
57
,
70
,
/* 1110 */
59
,
0
,
0
,
62
,
0
,
12
,
13
,
14
,
15
,
16
,
/* 1120 */
77
,
75
,
22
,
0
,
38
,
38
,
38
,
0
,
38
,
38
,
/* 1130 */
38
,
38
,
38
,
0
,
39
,
22
,
0
,
22
,
22
,
38
,
/* 1140 */
0
,
22
,
0
,
22
,
20
,
0
,
0
,
122
,
0
,
43
,
/* 1150 */
68
,
117
,
150
,
81
,
150
,
144
,
81
,
81
,
81
,
8
1
,
/* 1160 */
80
,
4
,
150
,
80
,
2
,
135
,
69
,
38
,
38
,
3
8
,
/* 1170 */
38
,
69
,
69
,
68
,
120
,
38
,
68
,
38
,
69
,
69
,
/* 1180 */
0
,
117
,
22
,
268
,
80
,
68
,
68
,
268
,
268
,
69
,
/* 1190 */
268
,
69
,
268
,
268
,
43
,
69
,
0
,
0
,
0
,
3
8
,
/* 1200 */
268
,
38
,
268
,
38
,
69
,
22
,
81
,
69
,
268
,
81
,
/* 1210 */
6
9
,
68
,
68
,
38
,
80
,
68
,
38
,
68
,
68
,
38
,
/* 1220 */
6
8
,
22
,
268
,
268
,
68
,
38
,
22
,
21
,
69
,
22
,
/* 1230 */
38
,
78
,
68
,
38
,
80
,
80
,
69
,
79
,
68
,
2
68
,
/* 1240 */
6
9
,
68
,
22
,
69
,
68
,
37
,
69
,
6
8
,
38
,
38
,
/* 1250 */
48
,
38
,
47
,
68
,
38
,
38
,
38
,
38
,
6
8
,
38
,
/* 1260 */
94
,
36
,
94
,
94
,
82
,
38
,
94
,
38
,
68
,
38
,
/* 1270 */
38
,
3
8
,
38
,
38
,
38
,
38
,
0
,
3
8
,
22
,
22
,
/* 1280 */
21
,
43
,
20
,
268
,
268
,
268
,
268
,
268
,
268
,
268
,
/* 1290 */
104
,
268
,
268
,
268
,
268
,
268
,
268
,
268
,
268
,
268
,
/* 220 */
236
,
1
86
,
20
,
195
,
22
,
69
,
47
,
81
,
216
,
0
,
/* 230 */
202
,
228
,
248
,
12
,
13
,
172
,
68
,
202
,
254
,
255
,
/* 240 */
212
,
20
,
40
,
22
,
216
,
68
,
120
,
68
,
12
,
13
,
/* 250 */
14
,
15
,
16
,
46
,
226
,
227
,
228
,
229
,
230
,
38
,
/* 260 */
92
,
3
,
234
,
235
,
236
,
144
,
145
,
175
,
47
,
181
,
/* 270 */
116
,
92
,
104
,
245
,
186
,
46
,
195
,
151
,
152
,
175
,
/* 280 */
175
,
193
,
201
,
104
,
221
,
12
,
13
,
206
,
134
,
68
,
/* 290 */
202
,
123
,
124
,
125
,
126
,
22
,
128
,
143
,
146
,
19
5
,
/* 300 */
20
,
194
,
123
,
124
,
125
,
126
,
202
,
128
,
216
,
246
,
/* 310 */
1
64
,
38
,
205
,
92
,
146
,
175
,
212
,
175
,
195
,
175
,
/* 320 */
216
,
216
,
259
,
146
,
201
,
104
,
263
,
63
,
0
,
206
,
/* 330 */
226
,
227
,
228
,
229
,
230
,
195
,
181
,
224
,
234
,
235
,
/* 340 */
236
,
186
,
202
,
181
,
123
,
124
,
125
,
126
,
186
,
128
,
/* 350 */
2
2
,
175
,
212
,
12
,
13
,
242
,
216
,
202
,
216
,
255
,
/* 360 */
216
,
20
,
224
,
22
,
202
,
92
,
226
,
227
,
228
,
229
,
/* 370 */
23
0
,
195
,
108
,
109
,
234
,
235
,
236
,
104
,
202
,
38
,
/* 380 */
24
2
,
12
,
13
,
14
,
14
,
245
,
175
,
79
,
212
,
20
,
/* 390 */
20
,
22
,
216
,
146
,
181
,
181
,
123
,
124
,
125
,
186
,
/* 400 */
175
,
175
,
226
,
227
,
228
,
229
,
230
,
38
,
175
,
68
,
/* 410 */
2
34
,
235
,
236
,
4
,
187
,
202
,
202
,
20
,
12
,
13
,
/* 420 */
162
,
245
,
195
,
46
,
12
,
13
,
20
,
216
,
22
,
180
,
/* 430 */
2
03
,
175
,
20
,
92
,
22
,
175
,
195
,
68
,
175
,
190
,
/* 440 */
1
87
,
216
,
216
,
229
,
38
,
104
,
197
,
206
,
195
,
216
,
/* 450 */
38
,
195
,
238
,
239
,
240
,
241
,
203
,
243
,
202
,
175
,
/* 460 */
1
75
,
92
,
20
,
202
,
123
,
124
,
125
,
126
,
212
,
128
,
/* 470 */
2
09
,
175
,
216
,
104
,
68
,
20
,
216
,
221
,
195
,
216
,
/* 480 */
68
,
175
,
226
,
227
,
228
,
229
,
57
,
146
,
4
,
206
,
/* 490 */
61
,
196
,
123
,
124
,
125
,
126
,
183
,
128
,
92
,
196
,
/* 500 */
216
,
216
,
246
,
19
,
92
,
175
,
175
,
0
,
175
,
175
,
/* 510 */
10
4
,
82
,
216
,
200
,
175
,
259
,
104
,
33
,
20
,
263
,
/* 520 */
36
,
224
,
216
,
1
,
2
,
41
,
195
,
180
,
44
,
123
,
/* 530 */
12
4
,
125
,
126
,
202
,
128
,
123
,
124
,
125
,
126
,
242
,
/* 540 */
128
,
124
,
175
,
212
,
197
,
195
,
216
,
216
,
43
,
216
,
/* 550 */
216
,
67
,
81
,
203
,
70
,
216
,
147
,
226
,
227
,
228
,
/* 560 */
229
,
230
,
195
,
181
,
57
,
234
,
235
,
21
,
61
,
202
,
/* 570 */
22
,
196
,
155
,
156
,
157
,
158
,
159
,
122
,
175
,
212
,
/* 580 */
3
4
,
38
,
72
,
216
,
202
,
75
,
38
,
18
,
72
,
8
2
,
/* 590 */
17
6
,
75
,
23
,
226
,
227
,
228
,
229
,
230
,
195
,
257
,
/* 600 */
22
,
234
,
235
,
221
,
35
,
202
,
69
,
175
,
101
,
102
,
/* 610 */
103
,
229
,
105
,
0
,
45
,
212
,
38
,
47
,
81
,
216
,
/* 620 */
12
2
,
239
,
240
,
241
,
0
,
243
,
175
,
195
,
246
,
226
,
/* 630 */
227
,
228
,
229
,
230
,
202
,
22
,
72
,
166
,
235
,
75
,
/* 640 */
92
,
259
,
69
,
69
,
212
,
263
,
195
,
104
,
216
,
175
,
/* 650 */
145
,
219
,
104
,
202
,
81
,
81
,
170
,
171
,
226
,
22
7
,
/* 660 */
228
,
229
,
72
,
212
,
68
,
75
,
185
,
216
,
175
,
195
,
/* 670 */
2
19
,
123
,
124
,
125
,
78
,
106
,
202
,
226
,
227
,
228
,
/* 680 */
229
,
57
,
38
,
205
,
69
,
61
,
212
,
69
,
195
,
266
,
/* 690 */
216
,
251
,
178
,
225
,
124
,
202
,
81
,
20
,
68
,
81
,
/* 700 */
2
26
,
227
,
228
,
229
,
27
,
212
,
82
,
30
,
175
,
216
,
/* 710 */
80
,
69
,
69
,
175
,
244
,
146
,
39
,
260
,
69
,
226
,
/* 720 */
227
,
228
,
229
,
81
,
81
,
101
,
102
,
103
,
195
,
105
,
/* 730 */
81
,
195
,
258
,
195
,
247
,
202
,
20
,
181
,
115
,
210
,
/* 740 */
202
,
69
,
116
,
208
,
181
,
212
,
20
,
208
,
104
,
216
,
/* 750 */
212
,
69
,
219
,
81
,
216
,
0
,
202
,
219
,
265
,
226
,
/* 760 */
227
,
228
,
229
,
81
,
226
,
227
,
228
,
229
,
0
,
220
,
/* 770 */
183
,
21
,
20
,
69
,
24
,
25
,
26
,
27
,
28
,
29
,
/* 780 */
30
,
31
,
32
,
183
,
107
,
81
,
183
,
110
,
111
,
112
,
/* 790 */
113
,
114
,
24
,
25
,
26
,
27
,
28
,
29
,
30
,
31
,
/* 800 */
32
,
19
,
175
,
181
,
49
,
213
,
51
,
175
,
183
,
54
,
/* 810 */
20
,
69
,
57
,
177
,
59
,
33
,
195
,
62
,
36
,
181
,
/* 820 */
69
,
220
,
195
,
81
,
42
,
177
,
44
,
195
,
49
,
202
,
/* 830 */
51
,
202
,
81
,
54
,
202
,
69
,
57
,
175
,
59
,
21
2
,
/* 840 */
1
95
,
62
,
195
,
216
,
212
,
175
,
195
,
81
,
216
,
67
,
/* 850 */
69
,
195
,
70
,
226
,
227
,
228
,
229
,
195
,
226
,
227
,
/* 860 */
228
,
229
,
81
,
69
,
202
,
195
,
12
,
13
,
14
,
15
,
/* 870 */
16
,
195
,
202
,
195
,
212
,
81
,
195
,
180
,
216
,
195
,
/* 880 */
1
95
,
175
,
212
,
101
,
195
,
180
,
216
,
213
,
226
,
227
,
/* 890 */
228
,
229
,
20
,
225
,
154
,
256
,
226
,
227
,
228
,
229
,
/* 900 */
118
,
195
,
153
,
121
,
175
,
217
,
216
,
216
,
202
,
175
,
/* 910 */
12
,
13
,
14
,
15
,
16
,
256
,
125
,
217
,
212
,
216
,
/* 920 */
161
,
160
,
216
,
69
,
195
,
149
,
253
,
252
,
148
,
195
,
/* 930 */
250
,
202
,
226
,
227
,
228
,
229
,
202
,
145
,
202
,
20
,
/* 940 */
1
15
,
212
,
249
,
224
,
175
,
216
,
212
,
237
,
165
,
163
,
/* 950 */
216
,
68
,
175
,
169
,
267
,
226
,
227
,
228
,
229
,
181
,
/* 960 */
2
26
,
227
,
228
,
229
,
195
,
233
,
119
,
214
,
180
,
26
2
,
/* 970 */
261
,
202
,
195
,
217
,
175
,
217
,
216
,
202
,
216
,
202
,
/* 980 */
202
,
212
,
180
,
216
,
213
,
216
,
191
,
202
,
68
,
212
,
/* 990 */
181
,
198
,
180
,
216
,
195
,
226
,
227
,
228
,
229
,
177
,
/* 1000 */
189
,
202
,
175
,
226
,
227
,
228
,
229
,
229
,
189
,
173
,
/* 1010 */
175
,
212
,
182
,
0
,
80
,
216
,
0
,
239
,
240
,
241
,
/* 1020 */
115
,
243
,
195
,
0
,
0
,
226
,
227
,
228
,
229
,
202
,
/* 1030 */
1
95
,
0
,
175
,
0
,
0
,
0
,
0
,
202
,
43
,
212
,
/* 1040 */
175
,
22
,
0
,
216
,
0
,
0
,
0
,
212
,
0
,
0
,
/* 1050 */
0
,
216
,
195
,
226
,
227
,
228
,
229
,
0
,
48
,
202
,
/* 1060 */
195
,
226
,
227
,
228
,
229
,
167
,
168
,
202
,
0
,
212
,
/* 1070 */
0
,
33
,
43
,
216
,
36
,
35
,
0
,
212
,
181
,
38
,
/* 1080 */
4
2
,
216
,
44
,
226
,
227
,
228
,
229
,
36
,
0
,
0
,
/* 1090 */
0
,
226
,
227
,
228
,
229
,
77
,
75
,
57
,
38
,
202
,
/* 1100 */
38
,
61
,
22
,
0
,
38
,
67
,
0
,
38
,
70
,
38
,
/* 1110 */
38
,
71
,
38
,
73
,
74
,
38
,
76
,
2
,
22
,
0
,
/* 1120 */
22
,
39
,
82
,
0
,
22
,
38
,
229
,
12
,
13
,
14
,
/* 1130 */
15
,
16
,
2
,
0
,
22
,
0
,
239
,
240
,
241
,
22
,
/* 1140 */
243
,
20
,
12
,
13
,
14
,
15
,
16
,
127
,
0
,
129
,
/* 1150 */
130
,
131
,
132
,
133
,
0
,
117
,
0
,
43
,
150
,
12
1
,
/* 1160 */
68
,
122
,
81
,
69
,
117
,
81
,
81
,
81
,
69
,
6
8
,
/* 1170 */
144
,
80
,
68
,
80
,
69
,
68
,
81
,
69
,
68
,
4
,
/* 1180 */
150
,
81
,
69
,
38
,
38
,
69
,
2
,
69
,
38
,
80
,
/* 1190 */
38
,
38
,
81
,
150
,
69
,
38
,
68
,
124
,
69
,
6
8
,
/* 1200 */
80
,
69
,
68
,
120
,
68
,
68
,
0
,
43
,
68
,
22
,
/* 1210 */
6
8
,
38
,
38
,
69
,
117
,
68
,
78
,
38
,
69
,
80
,
/* 1220 */
6
9
,
80
,
79
,
68
,
38
,
22
,
68
,
38
,
69
,
68
,
/* 1230 */
38
,
69
,
38
,
68
,
38
,
38
,
22
,
68
,
48
,
68
,
/* 1240 */
6
8
,
22
,
47
,
38
,
22
,
38
,
38
,
3
8
,
38
,
38
,
/* 1250 */
82
,
38
,
0
,
38
,
94
,
38
,
38
,
94
,
3
8
,
38
,
/* 1260 */
94
,
94
,
38
,
38
,
38
,
38
,
38
,
36
,
0
,
0
,
/* 1270 */
38
,
3
7
,
43
,
0
,
104
,
22
,
21
,
26
8
,
22
,
22
,
/* 1280 */
21
,
20
,
268
,
268
,
268
,
268
,
268
,
268
,
268
,
268
,
/* 1290 */
268
,
268
,
268
,
268
,
268
,
268
,
268
,
268
,
268
,
268
,
/* 1300 */
268
,
268
,
268
,
268
,
268
,
268
,
268
,
268
,
268
,
268
,
/* 1310 */
268
,
268
,
268
,
268
,
268
,
268
,
268
,
268
,
268
,
268
,
/* 1320 */
268
,
268
,
268
,
268
,
268
,
268
,
268
,
268
,
268
,
268
,
...
...
@@ -488,128 +487,127 @@ static const YYCODETYPE yy_lookahead[] = {
/* 1420 */
268
,
268
,
268
,
268
,
268
,
268
,
268
,
268
,
268
,
268
,
/* 1430 */
268
,
268
,
268
,
268
,
268
,
268
,
268
,
268
,
268
,
268
,
/* 1440 */
268
,
268
,
268
,
268
,
268
,
268
,
268
,
268
,
268
,
268
,
/* 1450 */
268
,
268
,
268
,
268
,
268
,
268
,
268
,
268
,
268
,
268
,
/* 1460 */
268
,
268
,
268
,
/* 1450 */
268
,
268
,
268
,
268
,
};
#define YY_SHIFT_COUNT (431)
#define YY_SHIFT_MIN (0)
#define YY_SHIFT_MAX (127
6
)
#define YY_SHIFT_MAX (127
3
)
static
const
unsigned
short
int
yy_shift_ofst
[]
=
{
/* 0 */
734
,
168
,
179
,
336
,
336
,
336
,
336
,
330
,
336
,
336
,
/* 10 */
4
81
,
495
,
140
,
405
,
481
,
481
,
481
,
481
,
481
,
481
,
/* 20 */
4
81
,
481
,
481
,
481
,
481
,
481
,
481
,
481
,
481
,
481
,
/* 30 */
4
81
,
481
,
481
,
15
,
15
,
15
,
39
,
725
,
725
,
31
,
/* 40 */
31
,
725
,
31
,
31
,
20
,
213
,
253
,
253
,
136
,
285
,
/* 50 */
213
,
31
,
31
,
213
,
31
,
213
,
285
,
213
,
213
,
31
,
/* 60 */
3
51
,
0
,
13
,
13
,
448
,
292
,
205
,
817
,
1051
,
817
,
/* 70 */
817
,
817
,
817
,
817
,
817
,
817
,
817
,
817
,
817
,
817
,
/* 80 */
817
,
817
,
817
,
817
,
817
,
817
,
817
,
817
,
268
,
33
,
/* 90 */
124
,
124
,
124
,
309
,
391
,
285
,
213
,
213
,
213
,
379
,
/* 100 */
78
,
78
,
78
,
78
,
78
,
96
,
420
,
284
,
231
,
141
,
/* 110 */
262
,
337
,
502
,
300
,
455
,
300
,
358
,
373
,
432
,
641
,
/* 120 */
568
,
599
,
599
,
641
,
700
,
20
,
391
,
730
,
20
,
20
,
/* 130 */
641
,
20
,
765
,
213
,
213
,
213
,
213
,
213
,
213
,
213
,
/* 140 */
213
,
213
,
213
,
213
,
641
,
765
,
700
,
351
,
391
,
730
,
/* 150 */
3
51
,
870
,
738
,
760
,
792
,
738
,
760
,
792
,
792
,
757
,
/* 160 */
7
89
,
793
,
802
,
822
,
391
,
954
,
867
,
818
,
831
,
834
,
/* 170 */
933
,
213
,
760
,
792
,
792
,
760
,
792
,
887
,
391
,
730
,
/* 180 */
3
51
,
379
,
351
,
391
,
967
,
641
,
351
,
765
,
1291
,
1291
,
/* 190 */
12
91
,
1291
,
48
,
806
,
547
,
814
,
1039
,
148
,
602
,
784
,
/* 200 */
957
,
277
,
1103
,
476
,
476
,
476
,
476
,
476
,
476
,
47
6
,
/* 210 */
402
,
156
,
2
,
510
,
510
,
510
,
510
,
430
,
446
,
506
,
/* 220 */
5
58
,
512
,
542
,
550
,
582
,
103
,
414
,
526
,
608
,
471
,
/* 230 */
321
,
334
,
597
,
72
,
701
,
743
,
720
,
772
,
773
,
776
,
/* 240 */
790
,
539
,
609
,
801
,
839
,
843
,
899
,
907
,
935
,
578
,
/* 250 */
10
52
,
975
,
1056
,
1057
,
944
,
1060
,
1062
,
1063
,
1069
,
1070
,
/* 260 */
10
71
,
1055
,
1073
,
1074
,
1079
,
1081
,
1084
,
1085
,
1089
,
1048
,
/* 270 */
10
96
,
1049
,
1098
,
1099
,
1065
,
1068
,
1058
,
1107
,
1111
,
1112
,
/* 280 */
1
114
,
1043
,
1046
,
1086
,
1087
,
1100
,
1123
,
1088
,
1090
,
109
1
,
/* 290 */
10
92
,
1093
,
1094
,
1127
,
1113
,
1133
,
1115
,
1095
,
1136
,
1116
,
/* 300 */
1
101
,
1140
,
1119
,
1142
,
1121
,
1124
,
1145
,
1146
,
1025
,
1148
,
/* 310 */
10
82
,
1106
,
1034
,
1072
,
1075
,
1002
,
1097
,
1076
,
1102
,
1105
,
/* 320 */
110
8
,
1109
,
1117
,
1110
,
1077
,
1080
,
1118
,
1078
,
1004
,
1120
,
/* 330 */
11
22
,
1083
,
1011
,
1125
,
1104
,
1126
,
1128
,
1012
,
1157
,
1129
,
/* 340 */
11
30
,
1131
,
1132
,
1137
,
1139
,
1162
,
1030
,
1134
,
1135
,
1143
,
/* 350 */
11
44
,
1138
,
1141
,
1147
,
1149
,
1054
,
1150
,
1180
,
1151
,
1064
,
/* 360 */
11
52
,
1153
,
1154
,
1155
,
1160
,
1156
,
1158
,
1159
,
1161
,
1163
,
/* 370 */
11
64
,
1167
,
1165
,
1170
,
1171
,
1175
,
1173
,
1174
,
1178
,
1176
,
/* 380 */
11
77
,
1181
,
1179
,
1166
,
1168
,
1169
,
1172
,
1183
,
1182
,
1185
,
/* 390 */
11
87
,
1186
,
1190
,
1200
,
1192
,
1195
,
1204
,
1202
,
1205
,
1207
,
/* 400 */
12
10
,
1211
,
1213
,
1216
,
1217
,
1218
,
1219
,
1220
,
1221
,
122
7
,
/* 410 */
12
29
,
1231
,
1232
,
1233
,
1234
,
1235
,
1236
,
1196
,
1237
,
1225
,
/* 420 */
12
38
,
1197
,
1239
,
1208
,
1198
,
1276
,
1199
,
1206
,
1256
,
1257
,
/* 430 */
1259
,
126
2
,
/* 0 */
569
,
168
,
179
,
221
,
221
,
221
,
221
,
341
,
221
,
221
,
/* 10 */
4
06
,
412
,
177
,
369
,
406
,
406
,
406
,
406
,
406
,
406
,
/* 20 */
4
06
,
406
,
406
,
406
,
406
,
406
,
406
,
406
,
406
,
406
,
/* 30 */
4
06
,
406
,
406
,
15
,
15
,
15
,
152
,
273
,
273
,
31
,
/* 40 */
31
,
273
,
31
,
31
,
149
,
184
,
280
,
280
,
247
,
397
,
/* 50 */
184
,
31
,
31
,
184
,
31
,
184
,
397
,
184
,
184
,
31
,
/* 60 */
3
77
,
0
,
13
,
13
,
677
,
750
,
1040
,
548
,
548
,
548
,
/* 70 */
548
,
548
,
548
,
548
,
548
,
548
,
548
,
548
,
548
,
548
,
/* 80 */
548
,
548
,
548
,
548
,
548
,
548
,
548
,
779
,
202
,
207
,
/* 90 */
455
,
455
,
455
,
229
,
442
,
397
,
184
,
184
,
184
,
308
,
/* 100 */
78
,
78
,
78
,
78
,
78
,
96
,
755
,
898
,
417
,
429
,
/* 110 */
126
,
578
,
498
,
121
,
505
,
121
,
370
,
258
,
409
,
716
,
/* 120 */
623
,
626
,
626
,
716
,
726
,
149
,
442
,
752
,
149
,
149
,
/* 130 */
716
,
149
,
790
,
184
,
184
,
184
,
184
,
184
,
184
,
184
,
/* 140 */
184
,
184
,
184
,
184
,
716
,
790
,
726
,
377
,
442
,
752
,
/* 150 */
3
77
,
872
,
740
,
749
,
791
,
740
,
749
,
791
,
791
,
759
,
/* 160 */
7
61
,
776
,
780
,
792
,
442
,
919
,
825
,
784
,
783
,
786
,
/* 170 */
883
,
184
,
749
,
791
,
791
,
749
,
791
,
847
,
442
,
752
,
/* 180 */
3
77
,
308
,
377
,
442
,
920
,
716
,
377
,
790
,
1282
,
1282
,
/* 190 */
12
82
,
1282
,
48
,
768
,
782
,
1038
,
484
,
507
,
624
,
1115
,
/* 200 */
1130
,
1020
,
854
,
236
,
236
,
236
,
236
,
236
,
236
,
23
6
,
/* 210 */
264
,
156
,
154
,
130
,
130
,
130
,
130
,
510
,
516
,
564
,
/* 220 */
5
90
,
66
,
328
,
613
,
546
,
537
,
573
,
574
,
522
,
486
,
/* 230 */
146
,
471
,
615
,
570
,
618
,
630
,
642
,
643
,
649
,
672
,
/* 240 */
682
,
543
,
644
,
704
,
742
,
751
,
766
,
781
,
794
,
596
,
/* 250 */
10
13
,
934
,
1016
,
1023
,
905
,
1024
,
1031
,
1033
,
1034
,
1035
,
/* 260 */
10
36
,
1019
,
1042
,
1044
,
1045
,
1046
,
1048
,
1049
,
1050
,
995
,
/* 270 */
10
57
,
1010
,
1068
,
1070
,
1041
,
1051
,
1029
,
1076
,
1088
,
1089
,
/* 280 */
1
090
,
1018
,
1021
,
1060
,
1062
,
1080
,
1103
,
1066
,
1069
,
107
1
,
/* 290 */
10
72
,
1074
,
1077
,
1106
,
1096
,
1119
,
1098
,
1082
,
1123
,
1102
,
/* 300 */
1
087
,
1133
,
1112
,
1135
,
1117
,
1121
,
1148
,
1154
,
1039
,
1156
,
/* 310 */
10
92
,
1114
,
1047
,
1081
,
1084
,
1008
,
1094
,
1085
,
1099
,
1101
,
/* 320 */
110
4
,
1105
,
1107
,
1108
,
1086
,
1091
,
1110
,
1095
,
1030
,
1113
,
/* 330 */
11
16
,
1093
,
1026
,
1100
,
1109
,
1118
,
1111
,
1043
,
1175
,
1145
,
/* 340 */
11
46
,
1150
,
1152
,
1153
,
1157
,
1184
,
1073
,
1120
,
1125
,
1128
,
/* 350 */
11
31
,
1129
,
1132
,
1134
,
1136
,
1083
,
1137
,
1206
,
1164
,
1097
,
/* 360 */
11
40
,
1138
,
1139
,
1141
,
1187
,
1142
,
1143
,
1144
,
1173
,
1174
,
/* 370 */
11
47
,
1149
,
1179
,
1155
,
1151
,
1186
,
1158
,
1159
,
1189
,
1161
,
/* 380 */
11
62
,
1192
,
1165
,
1160
,
1163
,
1166
,
1167
,
1203
,
1168
,
1169
,
/* 390 */
11
94
,
1170
,
1171
,
1172
,
1196
,
1197
,
1214
,
1190
,
1195
,
1219
,
/* 400 */
12
05
,
1207
,
1208
,
1209
,
1210
,
1211
,
1213
,
1222
,
1215
,
121
7
,
/* 410 */
12
18
,
1220
,
1221
,
1224
,
1225
,
1226
,
1227
,
1252
,
1228
,
1231
,
/* 420 */
12
29
,
1268
,
1232
,
1234
,
1269
,
1273
,
1253
,
1255
,
1256
,
1257
,
/* 430 */
1259
,
126
1
,
};
#define YY_REDUCE_COUNT (191)
#define YY_REDUCE_MIN (-225)
#define YY_REDUCE_MAX (8
78
)
#define YY_REDUCE_MAX (8
97
)
static
const
short
yy_reduce_ofst
[]
=
{
/* 0 */
508
,
-
172
,
-
16
,
29
,
99
,
135
,
165
,
221
,
311
,
341
,
/* 10 */
-
134
,
399
,
411
,
460
,
498
,
507
,
516
,
564
,
593
,
469
,
/* 20 */
546
,
649
,
671
,
677
,
699
,
727
,
735
,
763
,
782
,
791
,
/* 30 */
8
10
,
838
,
866
,
575
,
705
,
847
,
-
179
,
-
177
,
45
,
-
150
,
/* 40 */
41
,
-
216
,
-
149
,
-
116
,
-
182
,
-
12
,
-
178
,
26
,
-
225
,
-
207
,
/* 50 */
-
114
,
1
,
155
,
74
,
260
,
151
,
-
140
,
178
,
269
,
318
,
/* 60 */
24
1
,
-
212
,
-
212
,
-
212
,
35
,
21
,
43
,
54
,
-
109
,
137
,
/* 70 */
210
,
254
,
372
,
381
,
407
,
415
,
421
,
423
,
461
,
47
4
,
/* 80 */
478
,
483
,
485
,
492
,
500
,
537
,
571
,
586
,
153
,
-
68
,
/* 90 */
65
,
188
,
272
,
55
,
230
,
127
,
82
,
229
,
359
,
-
10
3
,
/* 100 */
-
192
,
-
187
,
2
70
,
335
,
348
,
305
,
363
,
286
,
294
,
38
8
,
/* 110 */
333
,
408
,
387
,
377
,
377
,
377
,
443
,
385
,
422
,
511
,
/* 120 */
496
,
514
,
522
,
559
,
529
,
548
,
549
,
551
,
572
,
577
,
/* 130 */
6
03
,
595
,
617
,
612
,
613
,
615
,
630
,
631
,
632
,
633
,
/* 140 */
6
48
,
665
,
667
,
668
,
622
,
687
,
647
,
688
,
683
,
656
,
/* 150 */
70
8
,
666
,
639
,
679
,
698
,
661
,
702
,
707
,
716
,
680
,
/* 160 */
6
84
,
710
,
703
,
377
,
779
,
754
,
746
,
728
,
737
,
73
9
,
/* 170 */
7
69
,
443
,
797
,
799
,
805
,
807
,
809
,
813
,
821
,
816
,
/* 180 */
850
,
840
,
852
,
832
,
844
,
863
,
865
,
869
,
858
,
85
9
,
/* 190 */
8
71
,
878
,
/* 0 */
63
,
-
172
,
-
16
,
104
,
28
,
140
,
176
,
256
,
331
,
367
,
/* 10 */
-
134
,
403
,
382
,
432
,
451
,
474
,
493
,
533
,
538
,
627
,
/* 20 */
632
,
662
,
670
,
706
,
729
,
734
,
769
,
777
,
799
,
827
,
/* 30 */
8
35
,
857
,
865
,
214
,
778
,
897
,
-
179
,
-
177
,
-
14
,
-
150
,
/* 40 */
88
,
-
216
,
-
149
,
-
116
,
-
182
,
-
12
,
-
178
,
3
,
-
225
,
-
207
,
/* 50 */
-
114
,
35
,
155
,
81
,
162
,
227
,
-
140
,
123
,
253
,
213
,
/* 60 */
24
9
,
-
212
,
-
212
,
-
212
,
-
148
,
8
,
107
,
-
56
,
12
,
92
,
/* 70 */
105
,
142
,
144
,
211
,
225
,
226
,
233
,
260
,
263
,
28
4
,
/* 80 */
285
,
296
,
306
,
330
,
333
,
334
,
339
,
-
109
,
-
46
,
313
,
/* 90 */
113
,
138
,
297
,
347
,
261
,
-
133
,
350
,
241
,
283
,
-
7
3
,
/* 100 */
-
192
,
-
187
,
2
95
,
303
,
375
,
414
,
481
,
423
,
342
,
47
8
,
/* 110 */
440
,
514
,
468
,
470
,
470
,
470
,
536
,
457
,
487
,
556
,
/* 120 */
529
,
535
,
539
,
563
,
549
,
587
,
554
,
592
,
600
,
603
,
/* 130 */
6
22
,
625
,
636
,
621
,
645
,
647
,
651
,
656
,
676
,
678
,
/* 140 */
6
81
,
684
,
685
,
689
,
638
,
648
,
601
,
697
,
629
,
674
,
/* 150 */
70
5
,
668
,
639
,
688
,
690
,
659
,
700
,
691
,
703
,
673
,
/* 160 */
6
75
,
680
,
693
,
470
,
736
,
719
,
710
,
687
,
707
,
70
9
,
/* 170 */
7
32
,
536
,
756
,
760
,
762
,
758
,
767
,
753
,
775
,
771
,
/* 180 */
788
,
795
,
802
,
785
,
793
,
809
,
812
,
822
,
811
,
81
9
,
/* 190 */
8
30
,
836
,
};
static
const
YYACTIONTYPE
yy_default
[]
=
{
/* 0 */
10
19
,
1019
,
1019
,
1019
,
1019
,
1019
,
1019
,
1019
,
1019
,
1019
,
/* 10 */
10
19
,
1019
,
1019
,
1019
,
1019
,
1019
,
1019
,
1019
,
1019
,
1019
,
/* 20 */
10
19
,
1019
,
1019
,
1019
,
1019
,
1019
,
1019
,
1019
,
1019
,
1019
,
/* 30 */
10
19
,
1019
,
1019
,
1019
,
1019
,
1019
,
1019
,
1019
,
1019
,
1019
,
/* 40 */
10
19
,
1019
,
1019
,
1019
,
1072
,
1019
,
1019
,
1019
,
1019
,
1019
,
/* 50 */
10
19
,
1019
,
1019
,
1019
,
1019
,
1019
,
1019
,
1019
,
1019
,
1019
,
/* 60 */
107
0
,
1019
,
1287
,
1019
,
1185
,
1019
,
1019
,
1019
,
1019
,
1019
,
/* 70 */
10
19
,
1019
,
1019
,
1019
,
1019
,
1019
,
1019
,
1019
,
1019
,
1019
,
/* 80 */
10
19
,
1019
,
1019
,
1019
,
1019
,
1019
,
1019
,
1019
,
1019
,
1072
,
/* 90 */
1
298
,
1298
,
1298
,
1070
,
1019
,
1019
,
1019
,
1019
,
1019
,
1154
,
/* 100 */
10
19
,
1019
,
1019
,
1019
,
1019
,
1019
,
1019
,
1362
,
1019
,
1107
,
/* 110 */
132
2
,
1019
,
1314
,
1290
,
1304
,
1291
,
1019
,
1347
,
1307
,
1019
,
/* 120 */
119
0
,
1187
,
1187
,
1019
,
1019
,
1072
,
1019
,
1019
,
1072
,
1072
,
/* 130 */
10
19
,
1072
,
1019
,
1019
,
1019
,
1019
,
1019
,
1019
,
1019
,
1019
,
/* 140 */
10
19
,
1019
,
1019
,
1019
,
1019
,
1019
,
1019
,
1070
,
1019
,
1019
,
/* 150 */
107
0
,
1019
,
1329
,
1327
,
1019
,
1329
,
1327
,
1019
,
1019
,
1341
,
/* 160 */
13
37
,
1320
,
1318
,
1304
,
1019
,
1019
,
1019
,
1365
,
1353
,
1349
,
/* 170 */
10
19
,
1019
,
1327
,
1019
,
1019
,
1327
,
1019
,
1198
,
1019
,
1019
,
/* 180 */
107
0
,
1019
,
1070
,
1019
,
1123
,
1019
,
1070
,
1019
,
1157
,
1157
,
/* 190 */
107
3
,
1024
,
1019
,
1019
,
1019
,
1019
,
1019
,
1019
,
1019
,
1019
,
/* 200 */
10
19
,
1019
,
1019
,
1252
,
1340
,
1339
,
1251
,
1264
,
1263
,
1262
,
/* 210 */
10
19
,
1019
,
1019
,
1246
,
1247
,
1245
,
1244
,
1019
,
1019
,
1019
,
/* 220 */
10
19
,
1019
,
1019
,
1019
,
1019
,
1019
,
1019
,
1019
,
1288
,
1019
,
/* 230 */
135
0
,
1354
,
1019
,
1019
,
1019
,
1230
,
1019
,
1019
,
1019
,
1019
,
/* 240 */
10
19
,
1019
,
1019
,
1019
,
1019
,
1019
,
1019
,
1019
,
1019
,
1019
,
/* 250 */
10
19
,
1019
,
1019
,
1019
,
1019
,
1019
,
1019
,
1019
,
1019
,
1019
,
/* 260 */
10
19
,
1019
,
1019
,
1019
,
1019
,
1019
,
1019
,
1019
,
1019
,
1019
,
/* 270 */
10
19
,
1019
,
1019
,
1019
,
1019
,
1019
,
1019
,
1019
,
1019
,
1019
,
/* 280 */
10
19
,
1019
,
1019
,
1019
,
1019
,
1019
,
1019
,
1019
,
1019
,
1019
,
/* 290 */
10
19
,
1019
,
1019
,
1019
,
1019
,
1019
,
1019
,
1019
,
1019
,
1019
,
/* 300 */
10
19
,
1019
,
1019
,
1019
,
1019
,
1019
,
1019
,
1019
,
1019
,
1019
,
/* 310 */
10
19
,
1019
,
1019
,
1311
,
1321
,
1019
,
1019
,
1019
,
1019
,
1019
,
/* 320 */
10
19
,
1019
,
1019
,
1019
,
1019
,
1230
,
1019
,
1338
,
1019
,
1297
,
/* 330 */
129
3
,
1019
,
1019
,
1289
,
1019
,
1019
,
1348
,
1019
,
1019
,
1019
,
/* 340 */
10
19
,
1019
,
1019
,
1019
,
1019
,
1283
,
1019
,
1019
,
1019
,
1019
,
/* 350 */
10
19
,
1019
,
1019
,
1019
,
1019
,
1019
,
1019
,
1019
,
1019
,
1019
,
/* 360 */
10
19
,
1019
,
1229
,
1019
,
1019
,
1019
,
1019
,
1019
,
1019
,
1019
,
/* 370 */
115
1
,
1019
,
1019
,
1019
,
1019
,
1019
,
1019
,
1019
,
1019
,
1019
,
/* 380 */
10
19
,
1019
,
1019
,
1136
,
1134
,
1133
,
1132
,
1019
,
1129
,
1019
,
/* 390 */
10
19
,
1019
,
1019
,
1019
,
1019
,
1019
,
1019
,
1019
,
1019
,
1019
,
/* 400 */
10
19
,
1019
,
1019
,
1019
,
1019
,
1019
,
1019
,
1019
,
1019
,
1019
,
/* 410 */
10
19
,
1019
,
1019
,
1019
,
1019
,
1019
,
1019
,
1019
,
1019
,
1019
,
/* 420 */
10
19
,
1019
,
1019
,
1019
,
1019
,
1019
,
1019
,
1019
,
1019
,
1019
,
/* 430 */
10
19
,
1019
,
/* 0 */
10
23
,
1023
,
1023
,
1023
,
1023
,
1023
,
1023
,
1023
,
1023
,
1023
,
/* 10 */
10
23
,
1023
,
1023
,
1023
,
1023
,
1023
,
1023
,
1023
,
1023
,
1023
,
/* 20 */
10
23
,
1023
,
1023
,
1023
,
1023
,
1023
,
1023
,
1023
,
1023
,
1023
,
/* 30 */
10
23
,
1023
,
1023
,
1023
,
1023
,
1023
,
1023
,
1023
,
1023
,
1023
,
/* 40 */
10
23
,
1023
,
1023
,
1023
,
1076
,
1023
,
1023
,
1023
,
1023
,
1023
,
/* 50 */
10
23
,
1023
,
1023
,
1023
,
1023
,
1023
,
1023
,
1023
,
1023
,
1023
,
/* 60 */
107
4
,
1023
,
1293
,
1023
,
1189
,
1023
,
1023
,
1023
,
1023
,
1023
,
/* 70 */
10
23
,
1023
,
1023
,
1023
,
1023
,
1023
,
1023
,
1023
,
1023
,
1023
,
/* 80 */
10
23
,
1023
,
1023
,
1023
,
1023
,
1023
,
1023
,
1023
,
1023
,
1076
,
/* 90 */
1
304
,
1304
,
1304
,
1074
,
1023
,
1023
,
1023
,
1023
,
1023
,
1158
,
/* 100 */
10
23
,
1023
,
1023
,
1023
,
1023
,
1023
,
1023
,
1368
,
1023
,
1111
,
/* 110 */
132
8
,
1023
,
1320
,
1296
,
1310
,
1297
,
1023
,
1353
,
1313
,
1023
,
/* 120 */
119
4
,
1191
,
1191
,
1023
,
1023
,
1076
,
1023
,
1023
,
1076
,
1076
,
/* 130 */
10
23
,
1076
,
1023
,
1023
,
1023
,
1023
,
1023
,
1023
,
1023
,
1023
,
/* 140 */
10
23
,
1023
,
1023
,
1023
,
1023
,
1023
,
1023
,
1074
,
1023
,
1023
,
/* 150 */
107
4
,
1023
,
1335
,
1333
,
1023
,
1335
,
1333
,
1023
,
1023
,
1347
,
/* 160 */
13
43
,
1326
,
1324
,
1310
,
1023
,
1023
,
1023
,
1371
,
1359
,
1355
,
/* 170 */
10
23
,
1023
,
1333
,
1023
,
1023
,
1333
,
1023
,
1202
,
1023
,
1023
,
/* 180 */
107
4
,
1023
,
1074
,
1023
,
1127
,
1023
,
1074
,
1023
,
1161
,
1161
,
/* 190 */
107
7
,
1028
,
1023
,
1023
,
1023
,
1023
,
1023
,
1023
,
1023
,
1023
,
/* 200 */
10
23
,
1023
,
1023
,
1258
,
1346
,
1345
,
1257
,
1270
,
1269
,
1268
,
/* 210 */
10
23
,
1023
,
1023
,
1252
,
1253
,
1251
,
1250
,
1023
,
1023
,
1023
,
/* 220 */
10
23
,
1023
,
1023
,
1023
,
1023
,
1023
,
1023
,
1023
,
1294
,
1023
,
/* 230 */
135
6
,
1360
,
1023
,
1023
,
1023
,
1236
,
1023
,
1023
,
1023
,
1023
,
/* 240 */
10
23
,
1023
,
1023
,
1023
,
1023
,
1023
,
1023
,
1023
,
1023
,
1023
,
/* 250 */
10
23
,
1023
,
1023
,
1023
,
1023
,
1023
,
1023
,
1023
,
1023
,
1023
,
/* 260 */
10
23
,
1023
,
1023
,
1023
,
1023
,
1023
,
1023
,
1023
,
1023
,
1023
,
/* 270 */
10
23
,
1023
,
1023
,
1023
,
1023
,
1023
,
1023
,
1023
,
1023
,
1023
,
/* 280 */
10
23
,
1023
,
1023
,
1023
,
1023
,
1023
,
1023
,
1023
,
1023
,
1023
,
/* 290 */
10
23
,
1023
,
1023
,
1023
,
1023
,
1023
,
1023
,
1023
,
1023
,
1023
,
/* 300 */
10
23
,
1023
,
1023
,
1023
,
1023
,
1023
,
1023
,
1023
,
1023
,
1023
,
/* 310 */
10
23
,
1023
,
1023
,
1317
,
1327
,
1023
,
1023
,
1023
,
1023
,
1023
,
/* 320 */
10
23
,
1023
,
1023
,
1023
,
1023
,
1236
,
1023
,
1344
,
1023
,
1303
,
/* 330 */
129
9
,
1023
,
1023
,
1295
,
1023
,
1023
,
1354
,
1023
,
1023
,
1023
,
/* 340 */
10
23
,
1023
,
1023
,
1023
,
1023
,
1289
,
1023
,
1023
,
1023
,
1023
,
/* 350 */
10
23
,
1023
,
1023
,
1023
,
1023
,
1023
,
1023
,
1023
,
1023
,
1023
,
/* 360 */
10
23
,
1023
,
1235
,
1023
,
1023
,
1023
,
1023
,
1023
,
1023
,
1023
,
/* 370 */
115
5
,
1023
,
1023
,
1023
,
1023
,
1023
,
1023
,
1023
,
1023
,
1023
,
/* 380 */
10
23
,
1023
,
1023
,
1140
,
1138
,
1137
,
1136
,
1023
,
1133
,
1023
,
/* 390 */
10
23
,
1023
,
1023
,
1023
,
1023
,
1023
,
1023
,
1023
,
1023
,
1023
,
/* 400 */
10
23
,
1023
,
1023
,
1023
,
1023
,
1023
,
1023
,
1023
,
1023
,
1023
,
/* 410 */
10
23
,
1023
,
1023
,
1023
,
1023
,
1023
,
1023
,
1023
,
1023
,
1023
,
/* 420 */
10
23
,
1023
,
1023
,
1023
,
1023
,
1023
,
1023
,
1023
,
1023
,
1023
,
/* 430 */
10
23
,
1023
,
};
/********** End of lemon-generated parsing tables *****************************/
...
...
@@ -840,18 +838,18 @@ static const char *const yyTokenName[] = {
/* 121 */
"TOPIC"
,
/* 122 */
"AS"
,
/* 123 */
"NK_BOOL"
,
/* 124 */
"N
K_VARIABLE
"
,
/* 125 */
"NK_
UNDERLIN
E"
,
/* 126 */
"
ROWTS
"
,
/* 127 */
"
TBNAME
"
,
/* 128 */
"
QSTARTTS
"
,
/* 129 */
"Q
END
TS"
,
/* 130 */
"
WSTART
TS"
,
/* 131 */
"W
END
TS"
,
/* 132 */
"W
DURATION
"
,
/* 133 */
"
BETWEE
N"
,
/* 134 */
"
IS
"
,
/* 135 */
"
NULL
"
,
/* 124 */
"N
ULL
"
,
/* 125 */
"NK_
VARIABL
E"
,
/* 126 */
"
NK_UNDERLINE
"
,
/* 127 */
"
ROWTS
"
,
/* 128 */
"
TBNAME
"
,
/* 129 */
"Q
START
TS"
,
/* 130 */
"
QEND
TS"
,
/* 131 */
"W
START
TS"
,
/* 132 */
"W
ENDTS
"
,
/* 133 */
"
WDURATIO
N"
,
/* 134 */
"
BETWEEN
"
,
/* 135 */
"
IS
"
,
/* 136 */
"NK_LT"
,
/* 137 */
"NK_GT"
,
/* 138 */
"NK_LE"
,
...
...
@@ -1183,160 +1181,162 @@ static const char *const yyRuleName[] = {
/* 189 */
"literal ::= NK_BOOL"
,
/* 190 */
"literal ::= TIMESTAMP NK_STRING"
,
/* 191 */
"literal ::= duration_literal"
,
/* 192 */
"duration_literal ::= NK_VARIABLE"
,
/* 193 */
"signed ::= NK_INTEGER"
,
/* 194 */
"signed ::= NK_PLUS NK_INTEGER"
,
/* 195 */
"signed ::= NK_MINUS NK_INTEGER"
,
/* 196 */
"signed ::= NK_FLOAT"
,
/* 197 */
"signed ::= NK_PLUS NK_FLOAT"
,
/* 198 */
"signed ::= NK_MINUS NK_FLOAT"
,
/* 199 */
"signed_literal ::= signed"
,
/* 200 */
"signed_literal ::= NK_STRING"
,
/* 201 */
"signed_literal ::= NK_BOOL"
,
/* 202 */
"signed_literal ::= TIMESTAMP NK_STRING"
,
/* 203 */
"signed_literal ::= duration_literal"
,
/* 204 */
"literal_list ::= signed_literal"
,
/* 205 */
"literal_list ::= literal_list NK_COMMA signed_literal"
,
/* 206 */
"db_name ::= NK_ID"
,
/* 207 */
"table_name ::= NK_ID"
,
/* 208 */
"column_name ::= NK_ID"
,
/* 209 */
"function_name ::= NK_ID"
,
/* 210 */
"table_alias ::= NK_ID"
,
/* 211 */
"column_alias ::= NK_ID"
,
/* 212 */
"user_name ::= NK_ID"
,
/* 213 */
"index_name ::= NK_ID"
,
/* 214 */
"topic_name ::= NK_ID"
,
/* 215 */
"expression ::= literal"
,
/* 216 */
"expression ::= pseudo_column"
,
/* 217 */
"expression ::= column_reference"
,
/* 218 */
"expression ::= function_name NK_LP expression_list NK_RP"
,
/* 219 */
"expression ::= function_name NK_LP NK_STAR NK_RP"
,
/* 220 */
"expression ::= subquery"
,
/* 221 */
"expression ::= NK_LP expression NK_RP"
,
/* 222 */
"expression ::= NK_PLUS expression"
,
/* 223 */
"expression ::= NK_MINUS expression"
,
/* 224 */
"expression ::= expression NK_PLUS expression"
,
/* 225 */
"expression ::= expression NK_MINUS expression"
,
/* 226 */
"expression ::= expression NK_STAR expression"
,
/* 227 */
"expression ::= expression NK_SLASH expression"
,
/* 228 */
"expression ::= expression NK_REM expression"
,
/* 229 */
"expression_list ::= expression"
,
/* 230 */
"expression_list ::= expression_list NK_COMMA expression"
,
/* 231 */
"column_reference ::= column_name"
,
/* 232 */
"column_reference ::= table_name NK_DOT column_name"
,
/* 233 */
"pseudo_column ::= NK_UNDERLINE ROWTS"
,
/* 234 */
"pseudo_column ::= TBNAME"
,
/* 235 */
"pseudo_column ::= NK_UNDERLINE QSTARTTS"
,
/* 236 */
"pseudo_column ::= NK_UNDERLINE QENDTS"
,
/* 237 */
"pseudo_column ::= NK_UNDERLINE WSTARTTS"
,
/* 238 */
"pseudo_column ::= NK_UNDERLINE WENDTS"
,
/* 239 */
"pseudo_column ::= NK_UNDERLINE WDURATION"
,
/* 240 */
"predicate ::= expression compare_op expression"
,
/* 241 */
"predicate ::= expression BETWEEN expression AND expression"
,
/* 242 */
"predicate ::= expression NOT BETWEEN expression AND expression"
,
/* 243 */
"predicate ::= expression IS NULL"
,
/* 244 */
"predicate ::= expression IS NOT NULL"
,
/* 245 */
"predicate ::= expression in_op in_predicate_value"
,
/* 246 */
"compare_op ::= NK_LT"
,
/* 247 */
"compare_op ::= NK_GT"
,
/* 248 */
"compare_op ::= NK_LE"
,
/* 249 */
"compare_op ::= NK_GE"
,
/* 250 */
"compare_op ::= NK_NE"
,
/* 251 */
"compare_op ::= NK_EQ"
,
/* 252 */
"compare_op ::= LIKE"
,
/* 253 */
"compare_op ::= NOT LIKE"
,
/* 254 */
"compare_op ::= MATCH"
,
/* 255 */
"compare_op ::= NMATCH"
,
/* 256 */
"in_op ::= IN"
,
/* 257 */
"in_op ::= NOT IN"
,
/* 258 */
"in_predicate_value ::= NK_LP expression_list NK_RP"
,
/* 259 */
"boolean_value_expression ::= boolean_primary"
,
/* 260 */
"boolean_value_expression ::= NOT boolean_primary"
,
/* 261 */
"boolean_value_expression ::= boolean_value_expression OR boolean_value_expression"
,
/* 262 */
"boolean_value_expression ::= boolean_value_expression AND boolean_value_expression"
,
/* 263 */
"boolean_primary ::= predicate"
,
/* 264 */
"boolean_primary ::= NK_LP boolean_value_expression NK_RP"
,
/* 265 */
"common_expression ::= expression"
,
/* 266 */
"common_expression ::= boolean_value_expression"
,
/* 267 */
"from_clause ::= FROM table_reference_list"
,
/* 268 */
"table_reference_list ::= table_reference"
,
/* 269 */
"table_reference_list ::= table_reference_list NK_COMMA table_reference"
,
/* 270 */
"table_reference ::= table_primary"
,
/* 271 */
"table_reference ::= joined_table"
,
/* 272 */
"table_primary ::= table_name alias_opt"
,
/* 273 */
"table_primary ::= db_name NK_DOT table_name alias_opt"
,
/* 274 */
"table_primary ::= subquery alias_opt"
,
/* 275 */
"table_primary ::= parenthesized_joined_table"
,
/* 276 */
"alias_opt ::="
,
/* 277 */
"alias_opt ::= table_alias"
,
/* 278 */
"alias_opt ::= AS table_alias"
,
/* 279 */
"parenthesized_joined_table ::= NK_LP joined_table NK_RP"
,
/* 280 */
"parenthesized_joined_table ::= NK_LP parenthesized_joined_table NK_RP"
,
/* 281 */
"joined_table ::= table_reference join_type JOIN table_reference ON search_condition"
,
/* 282 */
"join_type ::="
,
/* 283 */
"join_type ::= INNER"
,
/* 284 */
"query_specification ::= SELECT set_quantifier_opt select_list from_clause where_clause_opt partition_by_clause_opt twindow_clause_opt group_by_clause_opt having_clause_opt"
,
/* 285 */
"set_quantifier_opt ::="
,
/* 286 */
"set_quantifier_opt ::= DISTINCT"
,
/* 287 */
"set_quantifier_opt ::= ALL"
,
/* 288 */
"select_list ::= NK_STAR"
,
/* 289 */
"select_list ::= select_sublist"
,
/* 290 */
"select_sublist ::= select_item"
,
/* 291 */
"select_sublist ::= select_sublist NK_COMMA select_item"
,
/* 292 */
"select_item ::= common_expression"
,
/* 293 */
"select_item ::= common_expression column_alias"
,
/* 294 */
"select_item ::= common_expression AS column_alias"
,
/* 295 */
"select_item ::= table_name NK_DOT NK_STAR"
,
/* 296 */
"where_clause_opt ::="
,
/* 297 */
"where_clause_opt ::= WHERE search_condition"
,
/* 298 */
"partition_by_clause_opt ::="
,
/* 299 */
"partition_by_clause_opt ::= PARTITION BY expression_list"
,
/* 300 */
"twindow_clause_opt ::="
,
/* 301 */
"twindow_clause_opt ::= SESSION NK_LP column_reference NK_COMMA duration_literal NK_RP"
,
/* 302 */
"twindow_clause_opt ::= STATE_WINDOW NK_LP column_reference NK_RP"
,
/* 303 */
"twindow_clause_opt ::= INTERVAL NK_LP duration_literal NK_RP sliding_opt fill_opt"
,
/* 304 */
"twindow_clause_opt ::= INTERVAL NK_LP duration_literal NK_COMMA duration_literal NK_RP sliding_opt fill_opt"
,
/* 305 */
"sliding_opt ::="
,
/* 306 */
"sliding_opt ::= SLIDING NK_LP duration_literal NK_RP"
,
/* 307 */
"fill_opt ::="
,
/* 308 */
"fill_opt ::= FILL NK_LP fill_mode NK_RP"
,
/* 309 */
"fill_opt ::= FILL NK_LP VALUE NK_COMMA literal_list NK_RP"
,
/* 310 */
"fill_mode ::= NONE"
,
/* 311 */
"fill_mode ::= PREV"
,
/* 312 */
"fill_mode ::= NULL"
,
/* 313 */
"fill_mode ::= LINEAR"
,
/* 314 */
"fill_mode ::= NEXT"
,
/* 315 */
"group_by_clause_opt ::="
,
/* 316 */
"group_by_clause_opt ::= GROUP BY group_by_list"
,
/* 317 */
"group_by_list ::= expression"
,
/* 318 */
"group_by_list ::= group_by_list NK_COMMA expression"
,
/* 319 */
"having_clause_opt ::="
,
/* 320 */
"having_clause_opt ::= HAVING search_condition"
,
/* 321 */
"query_expression ::= query_expression_body order_by_clause_opt slimit_clause_opt limit_clause_opt"
,
/* 322 */
"query_expression_body ::= query_primary"
,
/* 323 */
"query_expression_body ::= query_expression_body UNION ALL query_expression_body"
,
/* 324 */
"query_primary ::= query_specification"
,
/* 325 */
"order_by_clause_opt ::="
,
/* 326 */
"order_by_clause_opt ::= ORDER BY sort_specification_list"
,
/* 327 */
"slimit_clause_opt ::="
,
/* 328 */
"slimit_clause_opt ::= SLIMIT NK_INTEGER"
,
/* 329 */
"slimit_clause_opt ::= SLIMIT NK_INTEGER SOFFSET NK_INTEGER"
,
/* 330 */
"slimit_clause_opt ::= SLIMIT NK_INTEGER NK_COMMA NK_INTEGER"
,
/* 331 */
"limit_clause_opt ::="
,
/* 332 */
"limit_clause_opt ::= LIMIT NK_INTEGER"
,
/* 333 */
"limit_clause_opt ::= LIMIT NK_INTEGER OFFSET NK_INTEGER"
,
/* 334 */
"limit_clause_opt ::= LIMIT NK_INTEGER NK_COMMA NK_INTEGER"
,
/* 335 */
"subquery ::= NK_LP query_expression NK_RP"
,
/* 336 */
"search_condition ::= common_expression"
,
/* 337 */
"sort_specification_list ::= sort_specification"
,
/* 338 */
"sort_specification_list ::= sort_specification_list NK_COMMA sort_specification"
,
/* 339 */
"sort_specification ::= expression ordering_specification_opt null_ordering_opt"
,
/* 340 */
"ordering_specification_opt ::="
,
/* 341 */
"ordering_specification_opt ::= ASC"
,
/* 342 */
"ordering_specification_opt ::= DESC"
,
/* 343 */
"null_ordering_opt ::="
,
/* 344 */
"null_ordering_opt ::= NULLS FIRST"
,
/* 345 */
"null_ordering_opt ::= NULLS LAST"
,
/* 192 */
"literal ::= NULL"
,
/* 193 */
"duration_literal ::= NK_VARIABLE"
,
/* 194 */
"signed ::= NK_INTEGER"
,
/* 195 */
"signed ::= NK_PLUS NK_INTEGER"
,
/* 196 */
"signed ::= NK_MINUS NK_INTEGER"
,
/* 197 */
"signed ::= NK_FLOAT"
,
/* 198 */
"signed ::= NK_PLUS NK_FLOAT"
,
/* 199 */
"signed ::= NK_MINUS NK_FLOAT"
,
/* 200 */
"signed_literal ::= signed"
,
/* 201 */
"signed_literal ::= NK_STRING"
,
/* 202 */
"signed_literal ::= NK_BOOL"
,
/* 203 */
"signed_literal ::= TIMESTAMP NK_STRING"
,
/* 204 */
"signed_literal ::= duration_literal"
,
/* 205 */
"signed_literal ::= NULL"
,
/* 206 */
"literal_list ::= signed_literal"
,
/* 207 */
"literal_list ::= literal_list NK_COMMA signed_literal"
,
/* 208 */
"db_name ::= NK_ID"
,
/* 209 */
"table_name ::= NK_ID"
,
/* 210 */
"column_name ::= NK_ID"
,
/* 211 */
"function_name ::= NK_ID"
,
/* 212 */
"table_alias ::= NK_ID"
,
/* 213 */
"column_alias ::= NK_ID"
,
/* 214 */
"user_name ::= NK_ID"
,
/* 215 */
"index_name ::= NK_ID"
,
/* 216 */
"topic_name ::= NK_ID"
,
/* 217 */
"expression ::= literal"
,
/* 218 */
"expression ::= pseudo_column"
,
/* 219 */
"expression ::= column_reference"
,
/* 220 */
"expression ::= function_name NK_LP expression_list NK_RP"
,
/* 221 */
"expression ::= function_name NK_LP NK_STAR NK_RP"
,
/* 222 */
"expression ::= subquery"
,
/* 223 */
"expression ::= NK_LP expression NK_RP"
,
/* 224 */
"expression ::= NK_PLUS expression"
,
/* 225 */
"expression ::= NK_MINUS expression"
,
/* 226 */
"expression ::= expression NK_PLUS expression"
,
/* 227 */
"expression ::= expression NK_MINUS expression"
,
/* 228 */
"expression ::= expression NK_STAR expression"
,
/* 229 */
"expression ::= expression NK_SLASH expression"
,
/* 230 */
"expression ::= expression NK_REM expression"
,
/* 231 */
"expression_list ::= expression"
,
/* 232 */
"expression_list ::= expression_list NK_COMMA expression"
,
/* 233 */
"column_reference ::= column_name"
,
/* 234 */
"column_reference ::= table_name NK_DOT column_name"
,
/* 235 */
"pseudo_column ::= NK_UNDERLINE ROWTS"
,
/* 236 */
"pseudo_column ::= TBNAME"
,
/* 237 */
"pseudo_column ::= NK_UNDERLINE QSTARTTS"
,
/* 238 */
"pseudo_column ::= NK_UNDERLINE QENDTS"
,
/* 239 */
"pseudo_column ::= NK_UNDERLINE WSTARTTS"
,
/* 240 */
"pseudo_column ::= NK_UNDERLINE WENDTS"
,
/* 241 */
"pseudo_column ::= NK_UNDERLINE WDURATION"
,
/* 242 */
"predicate ::= expression compare_op expression"
,
/* 243 */
"predicate ::= expression BETWEEN expression AND expression"
,
/* 244 */
"predicate ::= expression NOT BETWEEN expression AND expression"
,
/* 245 */
"predicate ::= expression IS NULL"
,
/* 246 */
"predicate ::= expression IS NOT NULL"
,
/* 247 */
"predicate ::= expression in_op in_predicate_value"
,
/* 248 */
"compare_op ::= NK_LT"
,
/* 249 */
"compare_op ::= NK_GT"
,
/* 250 */
"compare_op ::= NK_LE"
,
/* 251 */
"compare_op ::= NK_GE"
,
/* 252 */
"compare_op ::= NK_NE"
,
/* 253 */
"compare_op ::= NK_EQ"
,
/* 254 */
"compare_op ::= LIKE"
,
/* 255 */
"compare_op ::= NOT LIKE"
,
/* 256 */
"compare_op ::= MATCH"
,
/* 257 */
"compare_op ::= NMATCH"
,
/* 258 */
"in_op ::= IN"
,
/* 259 */
"in_op ::= NOT IN"
,
/* 260 */
"in_predicate_value ::= NK_LP expression_list NK_RP"
,
/* 261 */
"boolean_value_expression ::= boolean_primary"
,
/* 262 */
"boolean_value_expression ::= NOT boolean_primary"
,
/* 263 */
"boolean_value_expression ::= boolean_value_expression OR boolean_value_expression"
,
/* 264 */
"boolean_value_expression ::= boolean_value_expression AND boolean_value_expression"
,
/* 265 */
"boolean_primary ::= predicate"
,
/* 266 */
"boolean_primary ::= NK_LP boolean_value_expression NK_RP"
,
/* 267 */
"common_expression ::= expression"
,
/* 268 */
"common_expression ::= boolean_value_expression"
,
/* 269 */
"from_clause ::= FROM table_reference_list"
,
/* 270 */
"table_reference_list ::= table_reference"
,
/* 271 */
"table_reference_list ::= table_reference_list NK_COMMA table_reference"
,
/* 272 */
"table_reference ::= table_primary"
,
/* 273 */
"table_reference ::= joined_table"
,
/* 274 */
"table_primary ::= table_name alias_opt"
,
/* 275 */
"table_primary ::= db_name NK_DOT table_name alias_opt"
,
/* 276 */
"table_primary ::= subquery alias_opt"
,
/* 277 */
"table_primary ::= parenthesized_joined_table"
,
/* 278 */
"alias_opt ::="
,
/* 279 */
"alias_opt ::= table_alias"
,
/* 280 */
"alias_opt ::= AS table_alias"
,
/* 281 */
"parenthesized_joined_table ::= NK_LP joined_table NK_RP"
,
/* 282 */
"parenthesized_joined_table ::= NK_LP parenthesized_joined_table NK_RP"
,
/* 283 */
"joined_table ::= table_reference join_type JOIN table_reference ON search_condition"
,
/* 284 */
"join_type ::="
,
/* 285 */
"join_type ::= INNER"
,
/* 286 */
"query_specification ::= SELECT set_quantifier_opt select_list from_clause where_clause_opt partition_by_clause_opt twindow_clause_opt group_by_clause_opt having_clause_opt"
,
/* 287 */
"set_quantifier_opt ::="
,
/* 288 */
"set_quantifier_opt ::= DISTINCT"
,
/* 289 */
"set_quantifier_opt ::= ALL"
,
/* 290 */
"select_list ::= NK_STAR"
,
/* 291 */
"select_list ::= select_sublist"
,
/* 292 */
"select_sublist ::= select_item"
,
/* 293 */
"select_sublist ::= select_sublist NK_COMMA select_item"
,
/* 294 */
"select_item ::= common_expression"
,
/* 295 */
"select_item ::= common_expression column_alias"
,
/* 296 */
"select_item ::= common_expression AS column_alias"
,
/* 297 */
"select_item ::= table_name NK_DOT NK_STAR"
,
/* 298 */
"where_clause_opt ::="
,
/* 299 */
"where_clause_opt ::= WHERE search_condition"
,
/* 300 */
"partition_by_clause_opt ::="
,
/* 301 */
"partition_by_clause_opt ::= PARTITION BY expression_list"
,
/* 302 */
"twindow_clause_opt ::="
,
/* 303 */
"twindow_clause_opt ::= SESSION NK_LP column_reference NK_COMMA duration_literal NK_RP"
,
/* 304 */
"twindow_clause_opt ::= STATE_WINDOW NK_LP column_reference NK_RP"
,
/* 305 */
"twindow_clause_opt ::= INTERVAL NK_LP duration_literal NK_RP sliding_opt fill_opt"
,
/* 306 */
"twindow_clause_opt ::= INTERVAL NK_LP duration_literal NK_COMMA duration_literal NK_RP sliding_opt fill_opt"
,
/* 307 */
"sliding_opt ::="
,
/* 308 */
"sliding_opt ::= SLIDING NK_LP duration_literal NK_RP"
,
/* 309 */
"fill_opt ::="
,
/* 310 */
"fill_opt ::= FILL NK_LP fill_mode NK_RP"
,
/* 311 */
"fill_opt ::= FILL NK_LP VALUE NK_COMMA literal_list NK_RP"
,
/* 312 */
"fill_mode ::= NONE"
,
/* 313 */
"fill_mode ::= PREV"
,
/* 314 */
"fill_mode ::= NULL"
,
/* 315 */
"fill_mode ::= LINEAR"
,
/* 316 */
"fill_mode ::= NEXT"
,
/* 317 */
"group_by_clause_opt ::="
,
/* 318 */
"group_by_clause_opt ::= GROUP BY group_by_list"
,
/* 319 */
"group_by_list ::= expression"
,
/* 320 */
"group_by_list ::= group_by_list NK_COMMA expression"
,
/* 321 */
"having_clause_opt ::="
,
/* 322 */
"having_clause_opt ::= HAVING search_condition"
,
/* 323 */
"query_expression ::= query_expression_body order_by_clause_opt slimit_clause_opt limit_clause_opt"
,
/* 324 */
"query_expression_body ::= query_primary"
,
/* 325 */
"query_expression_body ::= query_expression_body UNION ALL query_expression_body"
,
/* 326 */
"query_primary ::= query_specification"
,
/* 327 */
"order_by_clause_opt ::="
,
/* 328 */
"order_by_clause_opt ::= ORDER BY sort_specification_list"
,
/* 329 */
"slimit_clause_opt ::="
,
/* 330 */
"slimit_clause_opt ::= SLIMIT NK_INTEGER"
,
/* 331 */
"slimit_clause_opt ::= SLIMIT NK_INTEGER SOFFSET NK_INTEGER"
,
/* 332 */
"slimit_clause_opt ::= SLIMIT NK_INTEGER NK_COMMA NK_INTEGER"
,
/* 333 */
"limit_clause_opt ::="
,
/* 334 */
"limit_clause_opt ::= LIMIT NK_INTEGER"
,
/* 335 */
"limit_clause_opt ::= LIMIT NK_INTEGER OFFSET NK_INTEGER"
,
/* 336 */
"limit_clause_opt ::= LIMIT NK_INTEGER NK_COMMA NK_INTEGER"
,
/* 337 */
"subquery ::= NK_LP query_expression NK_RP"
,
/* 338 */
"search_condition ::= common_expression"
,
/* 339 */
"sort_specification_list ::= sort_specification"
,
/* 340 */
"sort_specification_list ::= sort_specification_list NK_COMMA sort_specification"
,
/* 341 */
"sort_specification ::= expression ordering_specification_opt null_ordering_opt"
,
/* 342 */
"ordering_specification_opt ::="
,
/* 343 */
"ordering_specification_opt ::= ASC"
,
/* 344 */
"ordering_specification_opt ::= DESC"
,
/* 345 */
"null_ordering_opt ::="
,
/* 346 */
"null_ordering_opt ::= NULLS FIRST"
,
/* 347 */
"null_ordering_opt ::= NULLS LAST"
,
};
#endif
/* NDEBUG */
...
...
@@ -2093,160 +2093,162 @@ static const struct {
{
175
,
-
1
},
/* (189) literal ::= NK_BOOL */
{
175
,
-
2
},
/* (190) literal ::= TIMESTAMP NK_STRING */
{
175
,
-
1
},
/* (191) literal ::= duration_literal */
{
216
,
-
1
},
/* (192) duration_literal ::= NK_VARIABLE */
{
222
,
-
1
},
/* (193) signed ::= NK_INTEGER */
{
222
,
-
2
},
/* (194) signed ::= NK_PLUS NK_INTEGER */
{
222
,
-
2
},
/* (195) signed ::= NK_MINUS NK_INTEGER */
{
222
,
-
1
},
/* (196) signed ::= NK_FLOAT */
{
222
,
-
2
},
/* (197) signed ::= NK_PLUS NK_FLOAT */
{
222
,
-
2
},
/* (198) signed ::= NK_MINUS NK_FLOAT */
{
223
,
-
1
},
/* (199) signed_literal ::= signed */
{
223
,
-
1
},
/* (200) signed_literal ::= NK_STRING */
{
223
,
-
1
},
/* (201) signed_literal ::= NK_BOOL */
{
223
,
-
2
},
/* (202) signed_literal ::= TIMESTAMP NK_STRING */
{
223
,
-
1
},
/* (203) signed_literal ::= duration_literal */
{
199
,
-
1
},
/* (204) literal_list ::= signed_literal */
{
199
,
-
3
},
/* (205) literal_list ::= literal_list NK_COMMA signed_literal */
{
181
,
-
1
},
/* (206) db_name ::= NK_ID */
{
202
,
-
1
},
/* (207) table_name ::= NK_ID */
{
195
,
-
1
},
/* (208) column_name ::= NK_ID */
{
212
,
-
1
},
/* (209) function_name ::= NK_ID */
{
224
,
-
1
},
/* (210) table_alias ::= NK_ID */
{
225
,
-
1
},
/* (211) column_alias ::= NK_ID */
{
177
,
-
1
},
/* (212) user_name ::= NK_ID */
{
213
,
-
1
},
/* (213) index_name ::= NK_ID */
{
220
,
-
1
},
/* (214) topic_name ::= NK_ID */
{
226
,
-
1
},
/* (215) expression ::= literal */
{
226
,
-
1
},
/* (216) expression ::= pseudo_column */
{
226
,
-
1
},
/* (217) expression ::= column_reference */
{
226
,
-
4
},
/* (218) expression ::= function_name NK_LP expression_list NK_RP */
{
226
,
-
4
},
/* (219) expression ::= function_name NK_LP NK_STAR NK_RP */
{
226
,
-
1
},
/* (220) expression ::= subquery */
{
226
,
-
3
},
/* (221) expression ::= NK_LP expression NK_RP */
{
226
,
-
2
},
/* (222) expression ::= NK_PLUS expression */
{
226
,
-
2
},
/* (223) expression ::= NK_MINUS expression */
{
226
,
-
3
},
/* (224) expression ::= expression NK_PLUS expression */
{
226
,
-
3
},
/* (225) expression ::= expression NK_MINUS expression */
{
226
,
-
3
},
/* (226) expression ::= expression NK_STAR expression */
{
226
,
-
3
},
/* (227) expression ::= expression NK_SLASH expression */
{
226
,
-
3
},
/* (228) expression ::= expression NK_REM expression */
{
219
,
-
1
},
/* (229) expression_list ::= expression */
{
219
,
-
3
},
/* (230) expression_list ::= expression_list NK_COMMA expression */
{
228
,
-
1
},
/* (231) column_reference ::= column_name */
{
228
,
-
3
},
/* (232) column_reference ::= table_name NK_DOT column_name */
{
227
,
-
2
},
/* (233) pseudo_column ::= NK_UNDERLINE ROWTS */
{
227
,
-
1
},
/* (234) pseudo_column ::= TBNAME */
{
227
,
-
2
},
/* (235) pseudo_column ::= NK_UNDERLINE QSTARTTS */
{
227
,
-
2
},
/* (236) pseudo_column ::= NK_UNDERLINE QENDTS */
{
227
,
-
2
},
/* (237) pseudo_column ::= NK_UNDERLINE WSTARTTS */
{
227
,
-
2
},
/* (238) pseudo_column ::= NK_UNDERLINE WENDTS */
{
227
,
-
2
},
/* (239) pseudo_column ::= NK_UNDERLINE WDURATION */
{
230
,
-
3
},
/* (240) predicate ::= expression compare_op expression */
{
230
,
-
5
},
/* (241) predicate ::= expression BETWEEN expression AND expression */
{
230
,
-
6
},
/* (242) predicate ::= expression NOT BETWEEN expression AND expression */
{
230
,
-
3
},
/* (243) predicate ::= expression IS NULL */
{
230
,
-
4
},
/* (244) predicate ::= expression IS NOT NULL */
{
230
,
-
3
},
/* (245) predicate ::= expression in_op in_predicate_value */
{
231
,
-
1
},
/* (246) compare_op ::= NK_LT */
{
231
,
-
1
},
/* (247) compare_op ::= NK_GT */
{
231
,
-
1
},
/* (248) compare_op ::= NK_LE */
{
231
,
-
1
},
/* (249) compare_op ::= NK_GE */
{
231
,
-
1
},
/* (250) compare_op ::= NK_NE */
{
231
,
-
1
},
/* (251) compare_op ::= NK_EQ */
{
231
,
-
1
},
/* (252) compare_op ::= LIKE */
{
231
,
-
2
},
/* (253) compare_op ::= NOT LIKE */
{
231
,
-
1
},
/* (254) compare_op ::= MATCH */
{
231
,
-
1
},
/* (255) compare_op ::= NMATCH */
{
232
,
-
1
},
/* (256) in_op ::= IN */
{
232
,
-
2
},
/* (257) in_op ::= NOT IN */
{
233
,
-
3
},
/* (258) in_predicate_value ::= NK_LP expression_list NK_RP */
{
234
,
-
1
},
/* (259) boolean_value_expression ::= boolean_primary */
{
234
,
-
2
},
/* (260) boolean_value_expression ::= NOT boolean_primary */
{
234
,
-
3
},
/* (261) boolean_value_expression ::= boolean_value_expression OR boolean_value_expression */
{
234
,
-
3
},
/* (262) boolean_value_expression ::= boolean_value_expression AND boolean_value_expression */
{
235
,
-
1
},
/* (263) boolean_primary ::= predicate */
{
235
,
-
3
},
/* (264) boolean_primary ::= NK_LP boolean_value_expression NK_RP */
{
236
,
-
1
},
/* (265) common_expression ::= expression */
{
236
,
-
1
},
/* (266) common_expression ::= boolean_value_expression */
{
237
,
-
2
},
/* (267) from_clause ::= FROM table_reference_list */
{
238
,
-
1
},
/* (268) table_reference_list ::= table_reference */
{
238
,
-
3
},
/* (269) table_reference_list ::= table_reference_list NK_COMMA table_reference */
{
239
,
-
1
},
/* (270) table_reference ::= table_primary */
{
239
,
-
1
},
/* (271) table_reference ::= joined_table */
{
240
,
-
2
},
/* (272) table_primary ::= table_name alias_opt */
{
240
,
-
4
},
/* (273) table_primary ::= db_name NK_DOT table_name alias_opt */
{
240
,
-
2
},
/* (274) table_primary ::= subquery alias_opt */
{
240
,
-
1
},
/* (275) table_primary ::= parenthesized_joined_table */
{
242
,
0
},
/* (276) alias_opt ::= */
{
242
,
-
1
},
/* (277) alias_opt ::= table_alias */
{
242
,
-
2
},
/* (278) alias_opt ::= AS table_alias */
{
243
,
-
3
},
/* (279) parenthesized_joined_table ::= NK_LP joined_table NK_RP */
{
243
,
-
3
},
/* (280) parenthesized_joined_table ::= NK_LP parenthesized_joined_table NK_RP */
{
241
,
-
6
},
/* (281) joined_table ::= table_reference join_type JOIN table_reference ON search_condition */
{
244
,
0
},
/* (282) join_type ::= */
{
244
,
-
1
},
/* (283) join_type ::= INNER */
{
246
,
-
9
},
/* (284) query_specification ::= SELECT set_quantifier_opt select_list from_clause where_clause_opt partition_by_clause_opt twindow_clause_opt group_by_clause_opt having_clause_opt */
{
247
,
0
},
/* (285) set_quantifier_opt ::= */
{
247
,
-
1
},
/* (286) set_quantifier_opt ::= DISTINCT */
{
247
,
-
1
},
/* (287) set_quantifier_opt ::= ALL */
{
248
,
-
1
},
/* (288) select_list ::= NK_STAR */
{
248
,
-
1
},
/* (289) select_list ::= select_sublist */
{
254
,
-
1
},
/* (290) select_sublist ::= select_item */
{
254
,
-
3
},
/* (291) select_sublist ::= select_sublist NK_COMMA select_item */
{
255
,
-
1
},
/* (292) select_item ::= common_expression */
{
255
,
-
2
},
/* (293) select_item ::= common_expression column_alias */
{
255
,
-
3
},
/* (294) select_item ::= common_expression AS column_alias */
{
255
,
-
3
},
/* (295) select_item ::= table_name NK_DOT NK_STAR */
{
249
,
0
},
/* (296) where_clause_opt ::= */
{
249
,
-
2
},
/* (297) where_clause_opt ::= WHERE search_condition */
{
250
,
0
},
/* (298) partition_by_clause_opt ::= */
{
250
,
-
3
},
/* (299) partition_by_clause_opt ::= PARTITION BY expression_list */
{
251
,
0
},
/* (300) twindow_clause_opt ::= */
{
251
,
-
6
},
/* (301) twindow_clause_opt ::= SESSION NK_LP column_reference NK_COMMA duration_literal NK_RP */
{
251
,
-
4
},
/* (302) twindow_clause_opt ::= STATE_WINDOW NK_LP column_reference NK_RP */
{
251
,
-
6
},
/* (303) twindow_clause_opt ::= INTERVAL NK_LP duration_literal NK_RP sliding_opt fill_opt */
{
251
,
-
8
},
/* (304) twindow_clause_opt ::= INTERVAL NK_LP duration_literal NK_COMMA duration_literal NK_RP sliding_opt fill_opt */
{
217
,
0
},
/* (305) sliding_opt ::= */
{
217
,
-
4
},
/* (306) sliding_opt ::= SLIDING NK_LP duration_literal NK_RP */
{
256
,
0
},
/* (307) fill_opt ::= */
{
256
,
-
4
},
/* (308) fill_opt ::= FILL NK_LP fill_mode NK_RP */
{
256
,
-
6
},
/* (309) fill_opt ::= FILL NK_LP VALUE NK_COMMA literal_list NK_RP */
{
257
,
-
1
},
/* (310) fill_mode ::= NONE */
{
257
,
-
1
},
/* (311) fill_mode ::= PREV */
{
257
,
-
1
},
/* (312) fill_mode ::= NULL */
{
257
,
-
1
},
/* (313) fill_mode ::= LINEAR */
{
257
,
-
1
},
/* (314) fill_mode ::= NEXT */
{
252
,
0
},
/* (315) group_by_clause_opt ::= */
{
252
,
-
3
},
/* (316) group_by_clause_opt ::= GROUP BY group_by_list */
{
258
,
-
1
},
/* (317) group_by_list ::= expression */
{
258
,
-
3
},
/* (318) group_by_list ::= group_by_list NK_COMMA expression */
{
253
,
0
},
/* (319) having_clause_opt ::= */
{
253
,
-
2
},
/* (320) having_clause_opt ::= HAVING search_condition */
{
221
,
-
4
},
/* (321) query_expression ::= query_expression_body order_by_clause_opt slimit_clause_opt limit_clause_opt */
{
259
,
-
1
},
/* (322) query_expression_body ::= query_primary */
{
259
,
-
4
},
/* (323) query_expression_body ::= query_expression_body UNION ALL query_expression_body */
{
263
,
-
1
},
/* (324) query_primary ::= query_specification */
{
260
,
0
},
/* (325) order_by_clause_opt ::= */
{
260
,
-
3
},
/* (326) order_by_clause_opt ::= ORDER BY sort_specification_list */
{
261
,
0
},
/* (327) slimit_clause_opt ::= */
{
261
,
-
2
},
/* (328) slimit_clause_opt ::= SLIMIT NK_INTEGER */
{
261
,
-
4
},
/* (329) slimit_clause_opt ::= SLIMIT NK_INTEGER SOFFSET NK_INTEGER */
{
261
,
-
4
},
/* (330) slimit_clause_opt ::= SLIMIT NK_INTEGER NK_COMMA NK_INTEGER */
{
262
,
0
},
/* (331) limit_clause_opt ::= */
{
262
,
-
2
},
/* (332) limit_clause_opt ::= LIMIT NK_INTEGER */
{
262
,
-
4
},
/* (333) limit_clause_opt ::= LIMIT NK_INTEGER OFFSET NK_INTEGER */
{
262
,
-
4
},
/* (334) limit_clause_opt ::= LIMIT NK_INTEGER NK_COMMA NK_INTEGER */
{
229
,
-
3
},
/* (335) subquery ::= NK_LP query_expression NK_RP */
{
245
,
-
1
},
/* (336) search_condition ::= common_expression */
{
264
,
-
1
},
/* (337) sort_specification_list ::= sort_specification */
{
264
,
-
3
},
/* (338) sort_specification_list ::= sort_specification_list NK_COMMA sort_specification */
{
265
,
-
3
},
/* (339) sort_specification ::= expression ordering_specification_opt null_ordering_opt */
{
266
,
0
},
/* (340) ordering_specification_opt ::= */
{
266
,
-
1
},
/* (341) ordering_specification_opt ::= ASC */
{
266
,
-
1
},
/* (342) ordering_specification_opt ::= DESC */
{
267
,
0
},
/* (343) null_ordering_opt ::= */
{
267
,
-
2
},
/* (344) null_ordering_opt ::= NULLS FIRST */
{
267
,
-
2
},
/* (345) null_ordering_opt ::= NULLS LAST */
{
175
,
-
1
},
/* (192) literal ::= NULL */
{
216
,
-
1
},
/* (193) duration_literal ::= NK_VARIABLE */
{
222
,
-
1
},
/* (194) signed ::= NK_INTEGER */
{
222
,
-
2
},
/* (195) signed ::= NK_PLUS NK_INTEGER */
{
222
,
-
2
},
/* (196) signed ::= NK_MINUS NK_INTEGER */
{
222
,
-
1
},
/* (197) signed ::= NK_FLOAT */
{
222
,
-
2
},
/* (198) signed ::= NK_PLUS NK_FLOAT */
{
222
,
-
2
},
/* (199) signed ::= NK_MINUS NK_FLOAT */
{
223
,
-
1
},
/* (200) signed_literal ::= signed */
{
223
,
-
1
},
/* (201) signed_literal ::= NK_STRING */
{
223
,
-
1
},
/* (202) signed_literal ::= NK_BOOL */
{
223
,
-
2
},
/* (203) signed_literal ::= TIMESTAMP NK_STRING */
{
223
,
-
1
},
/* (204) signed_literal ::= duration_literal */
{
223
,
-
1
},
/* (205) signed_literal ::= NULL */
{
199
,
-
1
},
/* (206) literal_list ::= signed_literal */
{
199
,
-
3
},
/* (207) literal_list ::= literal_list NK_COMMA signed_literal */
{
181
,
-
1
},
/* (208) db_name ::= NK_ID */
{
202
,
-
1
},
/* (209) table_name ::= NK_ID */
{
195
,
-
1
},
/* (210) column_name ::= NK_ID */
{
212
,
-
1
},
/* (211) function_name ::= NK_ID */
{
224
,
-
1
},
/* (212) table_alias ::= NK_ID */
{
225
,
-
1
},
/* (213) column_alias ::= NK_ID */
{
177
,
-
1
},
/* (214) user_name ::= NK_ID */
{
213
,
-
1
},
/* (215) index_name ::= NK_ID */
{
220
,
-
1
},
/* (216) topic_name ::= NK_ID */
{
226
,
-
1
},
/* (217) expression ::= literal */
{
226
,
-
1
},
/* (218) expression ::= pseudo_column */
{
226
,
-
1
},
/* (219) expression ::= column_reference */
{
226
,
-
4
},
/* (220) expression ::= function_name NK_LP expression_list NK_RP */
{
226
,
-
4
},
/* (221) expression ::= function_name NK_LP NK_STAR NK_RP */
{
226
,
-
1
},
/* (222) expression ::= subquery */
{
226
,
-
3
},
/* (223) expression ::= NK_LP expression NK_RP */
{
226
,
-
2
},
/* (224) expression ::= NK_PLUS expression */
{
226
,
-
2
},
/* (225) expression ::= NK_MINUS expression */
{
226
,
-
3
},
/* (226) expression ::= expression NK_PLUS expression */
{
226
,
-
3
},
/* (227) expression ::= expression NK_MINUS expression */
{
226
,
-
3
},
/* (228) expression ::= expression NK_STAR expression */
{
226
,
-
3
},
/* (229) expression ::= expression NK_SLASH expression */
{
226
,
-
3
},
/* (230) expression ::= expression NK_REM expression */
{
219
,
-
1
},
/* (231) expression_list ::= expression */
{
219
,
-
3
},
/* (232) expression_list ::= expression_list NK_COMMA expression */
{
228
,
-
1
},
/* (233) column_reference ::= column_name */
{
228
,
-
3
},
/* (234) column_reference ::= table_name NK_DOT column_name */
{
227
,
-
2
},
/* (235) pseudo_column ::= NK_UNDERLINE ROWTS */
{
227
,
-
1
},
/* (236) pseudo_column ::= TBNAME */
{
227
,
-
2
},
/* (237) pseudo_column ::= NK_UNDERLINE QSTARTTS */
{
227
,
-
2
},
/* (238) pseudo_column ::= NK_UNDERLINE QENDTS */
{
227
,
-
2
},
/* (239) pseudo_column ::= NK_UNDERLINE WSTARTTS */
{
227
,
-
2
},
/* (240) pseudo_column ::= NK_UNDERLINE WENDTS */
{
227
,
-
2
},
/* (241) pseudo_column ::= NK_UNDERLINE WDURATION */
{
230
,
-
3
},
/* (242) predicate ::= expression compare_op expression */
{
230
,
-
5
},
/* (243) predicate ::= expression BETWEEN expression AND expression */
{
230
,
-
6
},
/* (244) predicate ::= expression NOT BETWEEN expression AND expression */
{
230
,
-
3
},
/* (245) predicate ::= expression IS NULL */
{
230
,
-
4
},
/* (246) predicate ::= expression IS NOT NULL */
{
230
,
-
3
},
/* (247) predicate ::= expression in_op in_predicate_value */
{
231
,
-
1
},
/* (248) compare_op ::= NK_LT */
{
231
,
-
1
},
/* (249) compare_op ::= NK_GT */
{
231
,
-
1
},
/* (250) compare_op ::= NK_LE */
{
231
,
-
1
},
/* (251) compare_op ::= NK_GE */
{
231
,
-
1
},
/* (252) compare_op ::= NK_NE */
{
231
,
-
1
},
/* (253) compare_op ::= NK_EQ */
{
231
,
-
1
},
/* (254) compare_op ::= LIKE */
{
231
,
-
2
},
/* (255) compare_op ::= NOT LIKE */
{
231
,
-
1
},
/* (256) compare_op ::= MATCH */
{
231
,
-
1
},
/* (257) compare_op ::= NMATCH */
{
232
,
-
1
},
/* (258) in_op ::= IN */
{
232
,
-
2
},
/* (259) in_op ::= NOT IN */
{
233
,
-
3
},
/* (260) in_predicate_value ::= NK_LP expression_list NK_RP */
{
234
,
-
1
},
/* (261) boolean_value_expression ::= boolean_primary */
{
234
,
-
2
},
/* (262) boolean_value_expression ::= NOT boolean_primary */
{
234
,
-
3
},
/* (263) boolean_value_expression ::= boolean_value_expression OR boolean_value_expression */
{
234
,
-
3
},
/* (264) boolean_value_expression ::= boolean_value_expression AND boolean_value_expression */
{
235
,
-
1
},
/* (265) boolean_primary ::= predicate */
{
235
,
-
3
},
/* (266) boolean_primary ::= NK_LP boolean_value_expression NK_RP */
{
236
,
-
1
},
/* (267) common_expression ::= expression */
{
236
,
-
1
},
/* (268) common_expression ::= boolean_value_expression */
{
237
,
-
2
},
/* (269) from_clause ::= FROM table_reference_list */
{
238
,
-
1
},
/* (270) table_reference_list ::= table_reference */
{
238
,
-
3
},
/* (271) table_reference_list ::= table_reference_list NK_COMMA table_reference */
{
239
,
-
1
},
/* (272) table_reference ::= table_primary */
{
239
,
-
1
},
/* (273) table_reference ::= joined_table */
{
240
,
-
2
},
/* (274) table_primary ::= table_name alias_opt */
{
240
,
-
4
},
/* (275) table_primary ::= db_name NK_DOT table_name alias_opt */
{
240
,
-
2
},
/* (276) table_primary ::= subquery alias_opt */
{
240
,
-
1
},
/* (277) table_primary ::= parenthesized_joined_table */
{
242
,
0
},
/* (278) alias_opt ::= */
{
242
,
-
1
},
/* (279) alias_opt ::= table_alias */
{
242
,
-
2
},
/* (280) alias_opt ::= AS table_alias */
{
243
,
-
3
},
/* (281) parenthesized_joined_table ::= NK_LP joined_table NK_RP */
{
243
,
-
3
},
/* (282) parenthesized_joined_table ::= NK_LP parenthesized_joined_table NK_RP */
{
241
,
-
6
},
/* (283) joined_table ::= table_reference join_type JOIN table_reference ON search_condition */
{
244
,
0
},
/* (284) join_type ::= */
{
244
,
-
1
},
/* (285) join_type ::= INNER */
{
246
,
-
9
},
/* (286) query_specification ::= SELECT set_quantifier_opt select_list from_clause where_clause_opt partition_by_clause_opt twindow_clause_opt group_by_clause_opt having_clause_opt */
{
247
,
0
},
/* (287) set_quantifier_opt ::= */
{
247
,
-
1
},
/* (288) set_quantifier_opt ::= DISTINCT */
{
247
,
-
1
},
/* (289) set_quantifier_opt ::= ALL */
{
248
,
-
1
},
/* (290) select_list ::= NK_STAR */
{
248
,
-
1
},
/* (291) select_list ::= select_sublist */
{
254
,
-
1
},
/* (292) select_sublist ::= select_item */
{
254
,
-
3
},
/* (293) select_sublist ::= select_sublist NK_COMMA select_item */
{
255
,
-
1
},
/* (294) select_item ::= common_expression */
{
255
,
-
2
},
/* (295) select_item ::= common_expression column_alias */
{
255
,
-
3
},
/* (296) select_item ::= common_expression AS column_alias */
{
255
,
-
3
},
/* (297) select_item ::= table_name NK_DOT NK_STAR */
{
249
,
0
},
/* (298) where_clause_opt ::= */
{
249
,
-
2
},
/* (299) where_clause_opt ::= WHERE search_condition */
{
250
,
0
},
/* (300) partition_by_clause_opt ::= */
{
250
,
-
3
},
/* (301) partition_by_clause_opt ::= PARTITION BY expression_list */
{
251
,
0
},
/* (302) twindow_clause_opt ::= */
{
251
,
-
6
},
/* (303) twindow_clause_opt ::= SESSION NK_LP column_reference NK_COMMA duration_literal NK_RP */
{
251
,
-
4
},
/* (304) twindow_clause_opt ::= STATE_WINDOW NK_LP column_reference NK_RP */
{
251
,
-
6
},
/* (305) twindow_clause_opt ::= INTERVAL NK_LP duration_literal NK_RP sliding_opt fill_opt */
{
251
,
-
8
},
/* (306) twindow_clause_opt ::= INTERVAL NK_LP duration_literal NK_COMMA duration_literal NK_RP sliding_opt fill_opt */
{
217
,
0
},
/* (307) sliding_opt ::= */
{
217
,
-
4
},
/* (308) sliding_opt ::= SLIDING NK_LP duration_literal NK_RP */
{
256
,
0
},
/* (309) fill_opt ::= */
{
256
,
-
4
},
/* (310) fill_opt ::= FILL NK_LP fill_mode NK_RP */
{
256
,
-
6
},
/* (311) fill_opt ::= FILL NK_LP VALUE NK_COMMA literal_list NK_RP */
{
257
,
-
1
},
/* (312) fill_mode ::= NONE */
{
257
,
-
1
},
/* (313) fill_mode ::= PREV */
{
257
,
-
1
},
/* (314) fill_mode ::= NULL */
{
257
,
-
1
},
/* (315) fill_mode ::= LINEAR */
{
257
,
-
1
},
/* (316) fill_mode ::= NEXT */
{
252
,
0
},
/* (317) group_by_clause_opt ::= */
{
252
,
-
3
},
/* (318) group_by_clause_opt ::= GROUP BY group_by_list */
{
258
,
-
1
},
/* (319) group_by_list ::= expression */
{
258
,
-
3
},
/* (320) group_by_list ::= group_by_list NK_COMMA expression */
{
253
,
0
},
/* (321) having_clause_opt ::= */
{
253
,
-
2
},
/* (322) having_clause_opt ::= HAVING search_condition */
{
221
,
-
4
},
/* (323) query_expression ::= query_expression_body order_by_clause_opt slimit_clause_opt limit_clause_opt */
{
259
,
-
1
},
/* (324) query_expression_body ::= query_primary */
{
259
,
-
4
},
/* (325) query_expression_body ::= query_expression_body UNION ALL query_expression_body */
{
263
,
-
1
},
/* (326) query_primary ::= query_specification */
{
260
,
0
},
/* (327) order_by_clause_opt ::= */
{
260
,
-
3
},
/* (328) order_by_clause_opt ::= ORDER BY sort_specification_list */
{
261
,
0
},
/* (329) slimit_clause_opt ::= */
{
261
,
-
2
},
/* (330) slimit_clause_opt ::= SLIMIT NK_INTEGER */
{
261
,
-
4
},
/* (331) slimit_clause_opt ::= SLIMIT NK_INTEGER SOFFSET NK_INTEGER */
{
261
,
-
4
},
/* (332) slimit_clause_opt ::= SLIMIT NK_INTEGER NK_COMMA NK_INTEGER */
{
262
,
0
},
/* (333) limit_clause_opt ::= */
{
262
,
-
2
},
/* (334) limit_clause_opt ::= LIMIT NK_INTEGER */
{
262
,
-
4
},
/* (335) limit_clause_opt ::= LIMIT NK_INTEGER OFFSET NK_INTEGER */
{
262
,
-
4
},
/* (336) limit_clause_opt ::= LIMIT NK_INTEGER NK_COMMA NK_INTEGER */
{
229
,
-
3
},
/* (337) subquery ::= NK_LP query_expression NK_RP */
{
245
,
-
1
},
/* (338) search_condition ::= common_expression */
{
264
,
-
1
},
/* (339) sort_specification_list ::= sort_specification */
{
264
,
-
3
},
/* (340) sort_specification_list ::= sort_specification_list NK_COMMA sort_specification */
{
265
,
-
3
},
/* (341) sort_specification ::= expression ordering_specification_opt null_ordering_opt */
{
266
,
0
},
/* (342) ordering_specification_opt ::= */
{
266
,
-
1
},
/* (343) ordering_specification_opt ::= ASC */
{
266
,
-
1
},
/* (344) ordering_specification_opt ::= DESC */
{
267
,
0
},
/* (345) null_ordering_opt ::= */
{
267
,
-
2
},
/* (346) null_ordering_opt ::= NULLS FIRST */
{
267
,
-
2
},
/* (347) null_ordering_opt ::= NULLS LAST */
};
static
void
yy_accept
(
yyParser
*
);
/* Forward Declaration */
...
...
@@ -2421,15 +2423,15 @@ static YYACTIONTYPE yy_reduce(
case
36
:
/* dnode_endpoint ::= NK_STRING */
case
37
:
/* dnode_host_name ::= NK_ID */
yytestcase
(
yyruleno
==
37
);
case
38
:
/* dnode_host_name ::= NK_IPTOKEN */
yytestcase
(
yyruleno
==
38
);
case
20
6
:
/* db_name ::= NK_ID */
yytestcase
(
yyruleno
==
206
);
case
20
7
:
/* table_name ::= NK_ID */
yytestcase
(
yyruleno
==
207
);
case
2
08
:
/* column_name ::= NK_ID */
yytestcase
(
yyruleno
==
208
);
case
2
09
:
/* function_name ::= NK_ID */
yytestcase
(
yyruleno
==
209
);
case
21
0
:
/* table_alias ::= NK_ID */
yytestcase
(
yyruleno
==
210
);
case
21
1
:
/* column_alias ::= NK_ID */
yytestcase
(
yyruleno
==
211
);
case
21
2
:
/* user_name ::= NK_ID */
yytestcase
(
yyruleno
==
212
);
case
21
3
:
/* index_name ::= NK_ID */
yytestcase
(
yyruleno
==
213
);
case
21
4
:
/* topic_name ::= NK_ID */
yytestcase
(
yyruleno
==
214
);
case
20
8
:
/* db_name ::= NK_ID */
yytestcase
(
yyruleno
==
208
);
case
20
9
:
/* table_name ::= NK_ID */
yytestcase
(
yyruleno
==
209
);
case
2
10
:
/* column_name ::= NK_ID */
yytestcase
(
yyruleno
==
210
);
case
2
11
:
/* function_name ::= NK_ID */
yytestcase
(
yyruleno
==
211
);
case
21
2
:
/* table_alias ::= NK_ID */
yytestcase
(
yyruleno
==
212
);
case
21
3
:
/* column_alias ::= NK_ID */
yytestcase
(
yyruleno
==
213
);
case
21
4
:
/* user_name ::= NK_ID */
yytestcase
(
yyruleno
==
214
);
case
21
5
:
/* index_name ::= NK_ID */
yytestcase
(
yyruleno
==
215
);
case
21
6
:
/* topic_name ::= NK_ID */
yytestcase
(
yyruleno
==
216
);
{
yylhsminor
.
yy225
=
yymsp
[
0
].
minor
.
yy0
;
}
yymsp
[
0
].
minor
.
yy225
=
yylhsminor
.
yy225
;
break
;
...
...
@@ -2462,7 +2464,7 @@ static YYACTIONTYPE yy_reduce(
break
;
case
48
:
/* not_exists_opt ::= */
case
50
:
/* exists_opt ::= */
yytestcase
(
yyruleno
==
50
);
case
28
5
:
/* set_quantifier_opt ::= */
yytestcase
(
yyruleno
==
285
);
case
28
7
:
/* set_quantifier_opt ::= */
yytestcase
(
yyruleno
==
287
);
{
yymsp
[
1
].
minor
.
yy505
=
false
;
}
break
;
case
49
:
/* exists_opt ::= IF EXISTS */
...
...
@@ -2633,9 +2635,9 @@ static YYACTIONTYPE yy_reduce(
case
148
:
/* col_name_list ::= col_name */
yytestcase
(
yyruleno
==
148
);
case
170
:
/* func_name_list ::= func_name */
yytestcase
(
yyruleno
==
170
);
case
179
:
/* func_list ::= func */
yytestcase
(
yyruleno
==
179
);
case
20
4
:
/* literal_list ::= signed_literal */
yytestcase
(
yyruleno
==
204
);
case
29
0
:
/* select_sublist ::= select_item */
yytestcase
(
yyruleno
==
290
);
case
33
7
:
/* sort_specification_list ::= sort_specification */
yytestcase
(
yyruleno
==
337
);
case
20
6
:
/* literal_list ::= signed_literal */
yytestcase
(
yyruleno
==
206
);
case
29
2
:
/* select_sublist ::= select_item */
yytestcase
(
yyruleno
==
292
);
case
33
9
:
/* sort_specification_list ::= sort_specification */
yytestcase
(
yyruleno
==
339
);
{
yylhsminor
.
yy512
=
createNodeList
(
pCxt
,
yymsp
[
0
].
minor
.
yy176
);
}
yymsp
[
0
].
minor
.
yy512
=
yylhsminor
.
yy512
;
break
;
...
...
@@ -2654,9 +2656,9 @@ static YYACTIONTYPE yy_reduce(
break
;
case
101
:
/* specific_tags_opt ::= */
case
132
:
/* tags_def_opt ::= */
yytestcase
(
yyruleno
==
132
);
case
298
:
/* partition_by_clause_opt ::= */
yytestcase
(
yyruleno
==
298
);
case
31
5
:
/* group_by_clause_opt ::= */
yytestcase
(
yyruleno
==
315
);
case
32
5
:
/* order_by_clause_opt ::= */
yytestcase
(
yyruleno
==
325
);
case
300
:
/* partition_by_clause_opt ::= */
yytestcase
(
yyruleno
==
300
);
case
31
7
:
/* group_by_clause_opt ::= */
yytestcase
(
yyruleno
==
317
);
case
32
7
:
/* order_by_clause_opt ::= */
yytestcase
(
yyruleno
==
327
);
{
yymsp
[
1
].
minor
.
yy512
=
NULL
;
}
break
;
case
102
:
/* specific_tags_opt ::= NK_LP col_name_list NK_RP */
...
...
@@ -2674,9 +2676,9 @@ static YYACTIONTYPE yy_reduce(
case
149
:
/* col_name_list ::= col_name_list NK_COMMA col_name */
yytestcase
(
yyruleno
==
149
);
case
171
:
/* func_name_list ::= func_name_list NK_COMMA col_name */
yytestcase
(
yyruleno
==
171
);
case
180
:
/* func_list ::= func_list NK_COMMA func */
yytestcase
(
yyruleno
==
180
);
case
20
5
:
/* literal_list ::= literal_list NK_COMMA signed_literal */
yytestcase
(
yyruleno
==
205
);
case
29
1
:
/* select_sublist ::= select_sublist NK_COMMA select_item */
yytestcase
(
yyruleno
==
291
);
case
3
38
:
/* sort_specification_list ::= sort_specification_list NK_COMMA sort_specification */
yytestcase
(
yyruleno
==
338
);
case
20
7
:
/* literal_list ::= literal_list NK_COMMA signed_literal */
yytestcase
(
yyruleno
==
207
);
case
29
3
:
/* select_sublist ::= select_sublist NK_COMMA select_item */
yytestcase
(
yyruleno
==
293
);
case
3
40
:
/* sort_specification_list ::= sort_specification_list NK_COMMA sort_specification */
yytestcase
(
yyruleno
==
340
);
{
yylhsminor
.
yy512
=
addNodeToList
(
pCxt
,
yymsp
[
-
2
].
minor
.
yy512
,
yymsp
[
0
].
minor
.
yy176
);
}
yymsp
[
-
2
].
minor
.
yy512
=
yylhsminor
.
yy512
;
break
;
...
...
@@ -2756,7 +2758,7 @@ static YYACTIONTYPE yy_reduce(
{
yymsp
[
-
5
].
minor
.
yy448
=
createDataType
(
TSDB_DATA_TYPE_DECIMAL
);
}
break
;
case
133
:
/* tags_def_opt ::= tags_def */
case
2
89
:
/* select_list ::= select_sublist */
yytestcase
(
yyruleno
==
289
);
case
2
91
:
/* select_list ::= select_sublist */
yytestcase
(
yyruleno
==
291
);
{
yylhsminor
.
yy512
=
yymsp
[
0
].
minor
.
yy512
;
}
yymsp
[
0
].
minor
.
yy512
=
yylhsminor
.
yy512
;
break
;
...
...
@@ -2861,13 +2863,13 @@ static YYACTIONTYPE yy_reduce(
break
;
case
165
:
/* like_pattern_opt ::= */
case
176
:
/* index_options ::= */
yytestcase
(
yyruleno
==
176
);
case
29
6
:
/* where_clause_opt ::= */
yytestcase
(
yyruleno
==
296
);
case
30
0
:
/* twindow_clause_opt ::= */
yytestcase
(
yyruleno
==
300
);
case
30
5
:
/* sliding_opt ::= */
yytestcase
(
yyruleno
==
305
);
case
30
7
:
/* fill_opt ::= */
yytestcase
(
yyruleno
==
307
);
case
3
19
:
/* having_clause_opt ::= */
yytestcase
(
yyruleno
==
319
);
case
32
7
:
/* slimit_clause_opt ::= */
yytestcase
(
yyruleno
==
327
);
case
33
1
:
/* limit_clause_opt ::= */
yytestcase
(
yyruleno
==
331
);
case
29
8
:
/* where_clause_opt ::= */
yytestcase
(
yyruleno
==
298
);
case
30
2
:
/* twindow_clause_opt ::= */
yytestcase
(
yyruleno
==
302
);
case
30
7
:
/* sliding_opt ::= */
yytestcase
(
yyruleno
==
307
);
case
30
9
:
/* fill_opt ::= */
yytestcase
(
yyruleno
==
309
);
case
3
21
:
/* having_clause_opt ::= */
yytestcase
(
yyruleno
==
321
);
case
32
9
:
/* slimit_clause_opt ::= */
yytestcase
(
yyruleno
==
329
);
case
33
3
:
/* limit_clause_opt ::= */
yytestcase
(
yyruleno
==
333
);
{
yymsp
[
1
].
minor
.
yy176
=
NULL
;
}
break
;
case
166
:
/* like_pattern_opt ::= LIKE NK_STRING */
...
...
@@ -2933,36 +2935,40 @@ static YYACTIONTYPE yy_reduce(
yymsp
[
-
1
].
minor
.
yy176
=
yylhsminor
.
yy176
;
break
;
case
191
:
/* literal ::= duration_literal */
case
199
:
/* signed_literal ::= signed */
yytestcase
(
yyruleno
==
199
);
case
21
5
:
/* expression ::= literal */
yytestcase
(
yyruleno
==
215
);
case
21
6
:
/* expression ::= pseudo_column */
yytestcase
(
yyruleno
==
216
);
case
21
7
:
/* expression ::= column_reference */
yytestcase
(
yyruleno
==
217
);
case
22
0
:
/* expression ::= subquery */
yytestcase
(
yyruleno
==
220
);
case
2
59
:
/* boolean_value_expression ::= boolean_primary */
yytestcase
(
yyruleno
==
259
);
case
26
3
:
/* boolean_primary ::= predicate */
yytestcase
(
yyruleno
==
263
);
case
26
5
:
/* common_expression ::= expression */
yytestcase
(
yyruleno
==
265
);
case
26
6
:
/* common_expression ::= boolean_value_expression */
yytestcase
(
yyruleno
==
266
);
case
2
68
:
/* table_reference_list ::= table_reference */
yytestcase
(
yyruleno
==
268
);
case
27
0
:
/* table_reference ::= table_primary */
yytestcase
(
yyruleno
==
270
);
case
27
1
:
/* table_reference ::= joined_table */
yytestcase
(
yyruleno
==
271
);
case
27
5
:
/* table_primary ::= parenthesized_joined_table */
yytestcase
(
yyruleno
==
275
);
case
32
2
:
/* query_expression_body ::= query_primary */
yytestcase
(
yyruleno
==
322
);
case
32
4
:
/* query_primary ::= query_specification */
yytestcase
(
yyruleno
==
324
);
case
200
:
/* signed_literal ::= signed */
yytestcase
(
yyruleno
==
200
);
case
21
7
:
/* expression ::= literal */
yytestcase
(
yyruleno
==
217
);
case
21
8
:
/* expression ::= pseudo_column */
yytestcase
(
yyruleno
==
218
);
case
21
9
:
/* expression ::= column_reference */
yytestcase
(
yyruleno
==
219
);
case
22
2
:
/* expression ::= subquery */
yytestcase
(
yyruleno
==
222
);
case
2
61
:
/* boolean_value_expression ::= boolean_primary */
yytestcase
(
yyruleno
==
261
);
case
26
5
:
/* boolean_primary ::= predicate */
yytestcase
(
yyruleno
==
265
);
case
26
7
:
/* common_expression ::= expression */
yytestcase
(
yyruleno
==
267
);
case
26
8
:
/* common_expression ::= boolean_value_expression */
yytestcase
(
yyruleno
==
268
);
case
2
70
:
/* table_reference_list ::= table_reference */
yytestcase
(
yyruleno
==
270
);
case
27
2
:
/* table_reference ::= table_primary */
yytestcase
(
yyruleno
==
272
);
case
27
3
:
/* table_reference ::= joined_table */
yytestcase
(
yyruleno
==
273
);
case
27
7
:
/* table_primary ::= parenthesized_joined_table */
yytestcase
(
yyruleno
==
277
);
case
32
4
:
/* query_expression_body ::= query_primary */
yytestcase
(
yyruleno
==
324
);
case
32
6
:
/* query_primary ::= query_specification */
yytestcase
(
yyruleno
==
326
);
{
yylhsminor
.
yy176
=
yymsp
[
0
].
minor
.
yy176
;
}
yymsp
[
0
].
minor
.
yy176
=
yylhsminor
.
yy176
;
break
;
case
192
:
/* duration_literal ::= NK_VARIABLE */
case
192
:
/* literal ::= NULL */
{
yylhsminor
.
yy176
=
createRawExprNode
(
pCxt
,
&
yymsp
[
0
].
minor
.
yy0
,
createValueNode
(
pCxt
,
TSDB_DATA_TYPE_NULL
,
NULL
));
}
yymsp
[
0
].
minor
.
yy176
=
yylhsminor
.
yy176
;
break
;
case
193
:
/* duration_literal ::= NK_VARIABLE */
{
yylhsminor
.
yy176
=
createRawExprNode
(
pCxt
,
&
yymsp
[
0
].
minor
.
yy0
,
createDurationValueNode
(
pCxt
,
&
yymsp
[
0
].
minor
.
yy0
));
}
yymsp
[
0
].
minor
.
yy176
=
yylhsminor
.
yy176
;
break
;
case
19
3
:
/* signed ::= NK_INTEGER */
case
19
4
:
/* signed ::= NK_INTEGER */
{
yylhsminor
.
yy176
=
createValueNode
(
pCxt
,
TSDB_DATA_TYPE_BIGINT
,
&
yymsp
[
0
].
minor
.
yy0
);
}
yymsp
[
0
].
minor
.
yy176
=
yylhsminor
.
yy176
;
break
;
case
19
4
:
/* signed ::= NK_PLUS NK_INTEGER */
case
19
5
:
/* signed ::= NK_PLUS NK_INTEGER */
{
yymsp
[
-
1
].
minor
.
yy176
=
createValueNode
(
pCxt
,
TSDB_DATA_TYPE_BIGINT
,
&
yymsp
[
0
].
minor
.
yy0
);
}
break
;
case
19
5
:
/* signed ::= NK_MINUS NK_INTEGER */
case
19
6
:
/* signed ::= NK_MINUS NK_INTEGER */
{
SToken
t
=
yymsp
[
-
1
].
minor
.
yy0
;
t
.
n
=
(
yymsp
[
0
].
minor
.
yy0
.
z
+
yymsp
[
0
].
minor
.
yy0
.
n
)
-
yymsp
[
-
1
].
minor
.
yy0
.
z
;
...
...
@@ -2970,14 +2976,14 @@ static YYACTIONTYPE yy_reduce(
}
yymsp
[
-
1
].
minor
.
yy176
=
yylhsminor
.
yy176
;
break
;
case
19
6
:
/* signed ::= NK_FLOAT */
case
19
7
:
/* signed ::= NK_FLOAT */
{
yylhsminor
.
yy176
=
createValueNode
(
pCxt
,
TSDB_DATA_TYPE_DOUBLE
,
&
yymsp
[
0
].
minor
.
yy0
);
}
yymsp
[
0
].
minor
.
yy176
=
yylhsminor
.
yy176
;
break
;
case
19
7
:
/* signed ::= NK_PLUS NK_FLOAT */
case
19
8
:
/* signed ::= NK_PLUS NK_FLOAT */
{
yymsp
[
-
1
].
minor
.
yy176
=
createValueNode
(
pCxt
,
TSDB_DATA_TYPE_DOUBLE
,
&
yymsp
[
0
].
minor
.
yy0
);
}
break
;
case
19
8
:
/* signed ::= NK_MINUS NK_FLOAT */
case
19
9
:
/* signed ::= NK_MINUS NK_FLOAT */
{
SToken
t
=
yymsp
[
-
1
].
minor
.
yy0
;
t
.
n
=
(
yymsp
[
0
].
minor
.
yy0
.
z
+
yymsp
[
0
].
minor
.
yy0
.
n
)
-
yymsp
[
-
1
].
minor
.
yy0
.
z
;
...
...
@@ -2985,50 +2991,53 @@ static YYACTIONTYPE yy_reduce(
}
yymsp
[
-
1
].
minor
.
yy176
=
yylhsminor
.
yy176
;
break
;
case
20
0
:
/* signed_literal ::= NK_STRING */
case
20
1
:
/* signed_literal ::= NK_STRING */
{
yylhsminor
.
yy176
=
createValueNode
(
pCxt
,
TSDB_DATA_TYPE_BINARY
,
&
yymsp
[
0
].
minor
.
yy0
);
}
yymsp
[
0
].
minor
.
yy176
=
yylhsminor
.
yy176
;
break
;
case
20
1
:
/* signed_literal ::= NK_BOOL */
case
20
2
:
/* signed_literal ::= NK_BOOL */
{
yylhsminor
.
yy176
=
createValueNode
(
pCxt
,
TSDB_DATA_TYPE_BOOL
,
&
yymsp
[
0
].
minor
.
yy0
);
}
yymsp
[
0
].
minor
.
yy176
=
yylhsminor
.
yy176
;
break
;
case
20
2
:
/* signed_literal ::= TIMESTAMP NK_STRING */
case
20
3
:
/* signed_literal ::= TIMESTAMP NK_STRING */
{
yymsp
[
-
1
].
minor
.
yy176
=
createValueNode
(
pCxt
,
TSDB_DATA_TYPE_TIMESTAMP
,
&
yymsp
[
0
].
minor
.
yy0
);
}
break
;
case
20
3
:
/* signed_literal ::= duration_literal */
case
33
6
:
/* search_condition ::= common_expression */
yytestcase
(
yyruleno
==
336
);
case
20
4
:
/* signed_literal ::= duration_literal */
case
33
8
:
/* search_condition ::= common_expression */
yytestcase
(
yyruleno
==
338
);
{
yylhsminor
.
yy176
=
releaseRawExprNode
(
pCxt
,
yymsp
[
0
].
minor
.
yy176
);
}
yymsp
[
0
].
minor
.
yy176
=
yylhsminor
.
yy176
;
break
;
case
218
:
/* expression ::= function_name NK_LP expression_list NK_RP */
case
205
:
/* signed_literal ::= NULL */
{
yymsp
[
0
].
minor
.
yy176
=
createValueNode
(
pCxt
,
TSDB_DATA_TYPE_NULL
,
NULL
);
}
break
;
case
220
:
/* expression ::= function_name NK_LP expression_list NK_RP */
{
yylhsminor
.
yy176
=
createRawExprNodeExt
(
pCxt
,
&
yymsp
[
-
3
].
minor
.
yy225
,
&
yymsp
[
0
].
minor
.
yy0
,
createFunctionNode
(
pCxt
,
&
yymsp
[
-
3
].
minor
.
yy225
,
yymsp
[
-
1
].
minor
.
yy512
));
}
yymsp
[
-
3
].
minor
.
yy176
=
yylhsminor
.
yy176
;
break
;
case
2
19
:
/* expression ::= function_name NK_LP NK_STAR NK_RP */
case
2
21
:
/* expression ::= function_name NK_LP NK_STAR NK_RP */
{
yylhsminor
.
yy176
=
createRawExprNodeExt
(
pCxt
,
&
yymsp
[
-
3
].
minor
.
yy225
,
&
yymsp
[
0
].
minor
.
yy0
,
createFunctionNode
(
pCxt
,
&
yymsp
[
-
3
].
minor
.
yy225
,
createNodeList
(
pCxt
,
createColumnNode
(
pCxt
,
NULL
,
&
yymsp
[
-
1
].
minor
.
yy0
))));
}
yymsp
[
-
3
].
minor
.
yy176
=
yylhsminor
.
yy176
;
break
;
case
22
1
:
/* expression ::= NK_LP expression NK_RP */
case
26
4
:
/* boolean_primary ::= NK_LP boolean_value_expression NK_RP */
yytestcase
(
yyruleno
==
264
);
case
22
3
:
/* expression ::= NK_LP expression NK_RP */
case
26
6
:
/* boolean_primary ::= NK_LP boolean_value_expression NK_RP */
yytestcase
(
yyruleno
==
266
);
{
yylhsminor
.
yy176
=
createRawExprNodeExt
(
pCxt
,
&
yymsp
[
-
2
].
minor
.
yy0
,
&
yymsp
[
0
].
minor
.
yy0
,
releaseRawExprNode
(
pCxt
,
yymsp
[
-
1
].
minor
.
yy176
));
}
yymsp
[
-
2
].
minor
.
yy176
=
yylhsminor
.
yy176
;
break
;
case
22
2
:
/* expression ::= NK_PLUS expression */
case
22
4
:
/* expression ::= NK_PLUS expression */
{
SToken
t
=
getTokenFromRawExprNode
(
pCxt
,
yymsp
[
0
].
minor
.
yy176
);
yylhsminor
.
yy176
=
createRawExprNodeExt
(
pCxt
,
&
yymsp
[
-
1
].
minor
.
yy0
,
&
t
,
releaseRawExprNode
(
pCxt
,
yymsp
[
0
].
minor
.
yy176
));
}
yymsp
[
-
1
].
minor
.
yy176
=
yylhsminor
.
yy176
;
break
;
case
22
3
:
/* expression ::= NK_MINUS expression */
case
22
5
:
/* expression ::= NK_MINUS expression */
{
SToken
t
=
getTokenFromRawExprNode
(
pCxt
,
yymsp
[
0
].
minor
.
yy176
);
yylhsminor
.
yy176
=
createRawExprNodeExt
(
pCxt
,
&
yymsp
[
-
1
].
minor
.
yy0
,
&
t
,
createOperatorNode
(
pCxt
,
OP_TYPE_SUB
,
releaseRawExprNode
(
pCxt
,
yymsp
[
0
].
minor
.
yy176
),
NULL
));
}
yymsp
[
-
1
].
minor
.
yy176
=
yylhsminor
.
yy176
;
break
;
case
22
4
:
/* expression ::= expression NK_PLUS expression */
case
22
6
:
/* expression ::= expression NK_PLUS expression */
{
SToken
s
=
getTokenFromRawExprNode
(
pCxt
,
yymsp
[
-
2
].
minor
.
yy176
);
SToken
e
=
getTokenFromRawExprNode
(
pCxt
,
yymsp
[
0
].
minor
.
yy176
);
...
...
@@ -3036,7 +3045,7 @@ static YYACTIONTYPE yy_reduce(
}
yymsp
[
-
2
].
minor
.
yy176
=
yylhsminor
.
yy176
;
break
;
case
22
5
:
/* expression ::= expression NK_MINUS expression */
case
22
7
:
/* expression ::= expression NK_MINUS expression */
{
SToken
s
=
getTokenFromRawExprNode
(
pCxt
,
yymsp
[
-
2
].
minor
.
yy176
);
SToken
e
=
getTokenFromRawExprNode
(
pCxt
,
yymsp
[
0
].
minor
.
yy176
);
...
...
@@ -3044,7 +3053,7 @@ static YYACTIONTYPE yy_reduce(
}
yymsp
[
-
2
].
minor
.
yy176
=
yylhsminor
.
yy176
;
break
;
case
22
6
:
/* expression ::= expression NK_STAR expression */
case
22
8
:
/* expression ::= expression NK_STAR expression */
{
SToken
s
=
getTokenFromRawExprNode
(
pCxt
,
yymsp
[
-
2
].
minor
.
yy176
);
SToken
e
=
getTokenFromRawExprNode
(
pCxt
,
yymsp
[
0
].
minor
.
yy176
);
...
...
@@ -3052,7 +3061,7 @@ static YYACTIONTYPE yy_reduce(
}
yymsp
[
-
2
].
minor
.
yy176
=
yylhsminor
.
yy176
;
break
;
case
22
7
:
/* expression ::= expression NK_SLASH expression */
case
22
9
:
/* expression ::= expression NK_SLASH expression */
{
SToken
s
=
getTokenFromRawExprNode
(
pCxt
,
yymsp
[
-
2
].
minor
.
yy176
);
SToken
e
=
getTokenFromRawExprNode
(
pCxt
,
yymsp
[
0
].
minor
.
yy176
);
...
...
@@ -3060,7 +3069,7 @@ static YYACTIONTYPE yy_reduce(
}
yymsp
[
-
2
].
minor
.
yy176
=
yylhsminor
.
yy176
;
break
;
case
2
28
:
/* expression ::= expression NK_REM expression */
case
2
30
:
/* expression ::= expression NK_REM expression */
{
SToken
s
=
getTokenFromRawExprNode
(
pCxt
,
yymsp
[
-
2
].
minor
.
yy176
);
SToken
e
=
getTokenFromRawExprNode
(
pCxt
,
yymsp
[
0
].
minor
.
yy176
);
...
...
@@ -3068,28 +3077,28 @@ static YYACTIONTYPE yy_reduce(
}
yymsp
[
-
2
].
minor
.
yy176
=
yylhsminor
.
yy176
;
break
;
case
2
29
:
/* expression_list ::= expression */
case
2
31
:
/* expression_list ::= expression */
{
yylhsminor
.
yy512
=
createNodeList
(
pCxt
,
releaseRawExprNode
(
pCxt
,
yymsp
[
0
].
minor
.
yy176
));
}
yymsp
[
0
].
minor
.
yy512
=
yylhsminor
.
yy512
;
break
;
case
23
0
:
/* expression_list ::= expression_list NK_COMMA expression */
case
23
2
:
/* expression_list ::= expression_list NK_COMMA expression */
{
yylhsminor
.
yy512
=
addNodeToList
(
pCxt
,
yymsp
[
-
2
].
minor
.
yy512
,
releaseRawExprNode
(
pCxt
,
yymsp
[
0
].
minor
.
yy176
));
}
yymsp
[
-
2
].
minor
.
yy512
=
yylhsminor
.
yy512
;
break
;
case
23
1
:
/* column_reference ::= column_name */
case
23
3
:
/* column_reference ::= column_name */
{
yylhsminor
.
yy176
=
createRawExprNode
(
pCxt
,
&
yymsp
[
0
].
minor
.
yy225
,
createColumnNode
(
pCxt
,
NULL
,
&
yymsp
[
0
].
minor
.
yy225
));
}
yymsp
[
0
].
minor
.
yy176
=
yylhsminor
.
yy176
;
break
;
case
23
2
:
/* column_reference ::= table_name NK_DOT column_name */
case
23
4
:
/* column_reference ::= table_name NK_DOT column_name */
{
yylhsminor
.
yy176
=
createRawExprNodeExt
(
pCxt
,
&
yymsp
[
-
2
].
minor
.
yy225
,
&
yymsp
[
0
].
minor
.
yy225
,
createColumnNode
(
pCxt
,
&
yymsp
[
-
2
].
minor
.
yy225
,
&
yymsp
[
0
].
minor
.
yy225
));
}
yymsp
[
-
2
].
minor
.
yy176
=
yylhsminor
.
yy176
;
break
;
case
23
3
:
/* pseudo_column ::= NK_UNDERLINE ROWTS */
case
23
5
:
/* pseudo_column ::= NK_UNDERLINE QSTARTTS */
yytestcase
(
yyruleno
==
235
);
case
23
6
:
/* pseudo_column ::= NK_UNDERLINE QENDTS */
yytestcase
(
yyruleno
==
236
);
case
23
7
:
/* pseudo_column ::= NK_UNDERLINE WSTARTTS */
yytestcase
(
yyruleno
==
237
);
case
2
38
:
/* pseudo_column ::= NK_UNDERLINE WENDTS */
yytestcase
(
yyruleno
==
238
);
case
2
39
:
/* pseudo_column ::= NK_UNDERLINE WDURATION */
yytestcase
(
yyruleno
==
239
);
case
23
5
:
/* pseudo_column ::= NK_UNDERLINE ROWTS */
case
23
7
:
/* pseudo_column ::= NK_UNDERLINE QSTARTTS */
yytestcase
(
yyruleno
==
237
);
case
23
8
:
/* pseudo_column ::= NK_UNDERLINE QENDTS */
yytestcase
(
yyruleno
==
238
);
case
23
9
:
/* pseudo_column ::= NK_UNDERLINE WSTARTTS */
yytestcase
(
yyruleno
==
239
);
case
2
40
:
/* pseudo_column ::= NK_UNDERLINE WENDTS */
yytestcase
(
yyruleno
==
240
);
case
2
41
:
/* pseudo_column ::= NK_UNDERLINE WDURATION */
yytestcase
(
yyruleno
==
241
);
{
SToken
t
=
yymsp
[
-
1
].
minor
.
yy0
;
t
.
n
=
(
yymsp
[
0
].
minor
.
yy0
.
z
+
yymsp
[
0
].
minor
.
yy0
.
n
)
-
yymsp
[
-
1
].
minor
.
yy0
.
z
;
...
...
@@ -3097,12 +3106,12 @@ static YYACTIONTYPE yy_reduce(
}
yymsp
[
-
1
].
minor
.
yy176
=
yylhsminor
.
yy176
;
break
;
case
23
4
:
/* pseudo_column ::= TBNAME */
case
23
6
:
/* pseudo_column ::= TBNAME */
{
yylhsminor
.
yy176
=
createRawExprNode
(
pCxt
,
&
yymsp
[
0
].
minor
.
yy0
,
createFunctionNode
(
pCxt
,
&
yymsp
[
0
].
minor
.
yy0
,
NULL
));
}
yymsp
[
0
].
minor
.
yy176
=
yylhsminor
.
yy176
;
break
;
case
24
0
:
/* predicate ::= expression compare_op expression */
case
24
5
:
/* predicate ::= expression in_op in_predicate_value */
yytestcase
(
yyruleno
==
245
);
case
24
2
:
/* predicate ::= expression compare_op expression */
case
24
7
:
/* predicate ::= expression in_op in_predicate_value */
yytestcase
(
yyruleno
==
247
);
{
SToken
s
=
getTokenFromRawExprNode
(
pCxt
,
yymsp
[
-
2
].
minor
.
yy176
);
SToken
e
=
getTokenFromRawExprNode
(
pCxt
,
yymsp
[
0
].
minor
.
yy176
);
...
...
@@ -3110,7 +3119,7 @@ static YYACTIONTYPE yy_reduce(
}
yymsp
[
-
2
].
minor
.
yy176
=
yylhsminor
.
yy176
;
break
;
case
24
1
:
/* predicate ::= expression BETWEEN expression AND expression */
case
24
3
:
/* predicate ::= expression BETWEEN expression AND expression */
{
SToken
s
=
getTokenFromRawExprNode
(
pCxt
,
yymsp
[
-
4
].
minor
.
yy176
);
SToken
e
=
getTokenFromRawExprNode
(
pCxt
,
yymsp
[
0
].
minor
.
yy176
);
...
...
@@ -3118,7 +3127,7 @@ static YYACTIONTYPE yy_reduce(
}
yymsp
[
-
4
].
minor
.
yy176
=
yylhsminor
.
yy176
;
break
;
case
24
2
:
/* predicate ::= expression NOT BETWEEN expression AND expression */
case
24
4
:
/* predicate ::= expression NOT BETWEEN expression AND expression */
{
SToken
s
=
getTokenFromRawExprNode
(
pCxt
,
yymsp
[
-
5
].
minor
.
yy176
);
SToken
e
=
getTokenFromRawExprNode
(
pCxt
,
yymsp
[
0
].
minor
.
yy176
);
...
...
@@ -3126,68 +3135,68 @@ static YYACTIONTYPE yy_reduce(
}
yymsp
[
-
5
].
minor
.
yy176
=
yylhsminor
.
yy176
;
break
;
case
24
3
:
/* predicate ::= expression IS NULL */
case
24
5
:
/* predicate ::= expression IS NULL */
{
SToken
s
=
getTokenFromRawExprNode
(
pCxt
,
yymsp
[
-
2
].
minor
.
yy176
);
yylhsminor
.
yy176
=
createRawExprNodeExt
(
pCxt
,
&
s
,
&
yymsp
[
0
].
minor
.
yy0
,
createOperatorNode
(
pCxt
,
OP_TYPE_IS_NULL
,
releaseRawExprNode
(
pCxt
,
yymsp
[
-
2
].
minor
.
yy176
),
NULL
));
}
yymsp
[
-
2
].
minor
.
yy176
=
yylhsminor
.
yy176
;
break
;
case
24
4
:
/* predicate ::= expression IS NOT NULL */
case
24
6
:
/* predicate ::= expression IS NOT NULL */
{
SToken
s
=
getTokenFromRawExprNode
(
pCxt
,
yymsp
[
-
3
].
minor
.
yy176
);
yylhsminor
.
yy176
=
createRawExprNodeExt
(
pCxt
,
&
s
,
&
yymsp
[
0
].
minor
.
yy0
,
createOperatorNode
(
pCxt
,
OP_TYPE_IS_NOT_NULL
,
releaseRawExprNode
(
pCxt
,
yymsp
[
-
3
].
minor
.
yy176
),
NULL
));
}
yymsp
[
-
3
].
minor
.
yy176
=
yylhsminor
.
yy176
;
break
;
case
24
6
:
/* compare_op ::= NK_LT */
case
24
8
:
/* compare_op ::= NK_LT */
{
yymsp
[
0
].
minor
.
yy404
=
OP_TYPE_LOWER_THAN
;
}
break
;
case
24
7
:
/* compare_op ::= NK_GT */
case
24
9
:
/* compare_op ::= NK_GT */
{
yymsp
[
0
].
minor
.
yy404
=
OP_TYPE_GREATER_THAN
;
}
break
;
case
2
48
:
/* compare_op ::= NK_LE */
case
2
50
:
/* compare_op ::= NK_LE */
{
yymsp
[
0
].
minor
.
yy404
=
OP_TYPE_LOWER_EQUAL
;
}
break
;
case
2
49
:
/* compare_op ::= NK_GE */
case
2
51
:
/* compare_op ::= NK_GE */
{
yymsp
[
0
].
minor
.
yy404
=
OP_TYPE_GREATER_EQUAL
;
}
break
;
case
25
0
:
/* compare_op ::= NK_NE */
case
25
2
:
/* compare_op ::= NK_NE */
{
yymsp
[
0
].
minor
.
yy404
=
OP_TYPE_NOT_EQUAL
;
}
break
;
case
25
1
:
/* compare_op ::= NK_EQ */
case
25
3
:
/* compare_op ::= NK_EQ */
{
yymsp
[
0
].
minor
.
yy404
=
OP_TYPE_EQUAL
;
}
break
;
case
25
2
:
/* compare_op ::= LIKE */
case
25
4
:
/* compare_op ::= LIKE */
{
yymsp
[
0
].
minor
.
yy404
=
OP_TYPE_LIKE
;
}
break
;
case
25
3
:
/* compare_op ::= NOT LIKE */
case
25
5
:
/* compare_op ::= NOT LIKE */
{
yymsp
[
-
1
].
minor
.
yy404
=
OP_TYPE_NOT_LIKE
;
}
break
;
case
25
4
:
/* compare_op ::= MATCH */
case
25
6
:
/* compare_op ::= MATCH */
{
yymsp
[
0
].
minor
.
yy404
=
OP_TYPE_MATCH
;
}
break
;
case
25
5
:
/* compare_op ::= NMATCH */
case
25
7
:
/* compare_op ::= NMATCH */
{
yymsp
[
0
].
minor
.
yy404
=
OP_TYPE_NMATCH
;
}
break
;
case
25
6
:
/* in_op ::= IN */
case
25
8
:
/* in_op ::= IN */
{
yymsp
[
0
].
minor
.
yy404
=
OP_TYPE_IN
;
}
break
;
case
25
7
:
/* in_op ::= NOT IN */
case
25
9
:
/* in_op ::= NOT IN */
{
yymsp
[
-
1
].
minor
.
yy404
=
OP_TYPE_NOT_IN
;
}
break
;
case
2
58
:
/* in_predicate_value ::= NK_LP expression_list NK_RP */
case
2
60
:
/* in_predicate_value ::= NK_LP expression_list NK_RP */
{
yylhsminor
.
yy176
=
createRawExprNodeExt
(
pCxt
,
&
yymsp
[
-
2
].
minor
.
yy0
,
&
yymsp
[
0
].
minor
.
yy0
,
createNodeListNode
(
pCxt
,
yymsp
[
-
1
].
minor
.
yy512
));
}
yymsp
[
-
2
].
minor
.
yy176
=
yylhsminor
.
yy176
;
break
;
case
26
0
:
/* boolean_value_expression ::= NOT boolean_primary */
case
26
2
:
/* boolean_value_expression ::= NOT boolean_primary */
{
SToken
e
=
getTokenFromRawExprNode
(
pCxt
,
yymsp
[
0
].
minor
.
yy176
);
yylhsminor
.
yy176
=
createRawExprNodeExt
(
pCxt
,
&
yymsp
[
-
1
].
minor
.
yy0
,
&
e
,
createLogicConditionNode
(
pCxt
,
LOGIC_COND_TYPE_NOT
,
releaseRawExprNode
(
pCxt
,
yymsp
[
0
].
minor
.
yy176
),
NULL
));
}
yymsp
[
-
1
].
minor
.
yy176
=
yylhsminor
.
yy176
;
break
;
case
26
1
:
/* boolean_value_expression ::= boolean_value_expression OR boolean_value_expression */
case
26
3
:
/* boolean_value_expression ::= boolean_value_expression OR boolean_value_expression */
{
SToken
s
=
getTokenFromRawExprNode
(
pCxt
,
yymsp
[
-
2
].
minor
.
yy176
);
SToken
e
=
getTokenFromRawExprNode
(
pCxt
,
yymsp
[
0
].
minor
.
yy176
);
...
...
@@ -3195,7 +3204,7 @@ static YYACTIONTYPE yy_reduce(
}
yymsp
[
-
2
].
minor
.
yy176
=
yylhsminor
.
yy176
;
break
;
case
26
2
:
/* boolean_value_expression ::= boolean_value_expression AND boolean_value_expression */
case
26
4
:
/* boolean_value_expression ::= boolean_value_expression AND boolean_value_expression */
{
SToken
s
=
getTokenFromRawExprNode
(
pCxt
,
yymsp
[
-
2
].
minor
.
yy176
);
SToken
e
=
getTokenFromRawExprNode
(
pCxt
,
yymsp
[
0
].
minor
.
yy176
);
...
...
@@ -3203,52 +3212,52 @@ static YYACTIONTYPE yy_reduce(
}
yymsp
[
-
2
].
minor
.
yy176
=
yylhsminor
.
yy176
;
break
;
case
26
7
:
/* from_clause ::= FROM table_reference_list */
case
29
7
:
/* where_clause_opt ::= WHERE search_condition */
yytestcase
(
yyruleno
==
297
);
case
32
0
:
/* having_clause_opt ::= HAVING search_condition */
yytestcase
(
yyruleno
==
320
);
case
26
9
:
/* from_clause ::= FROM table_reference_list */
case
29
9
:
/* where_clause_opt ::= WHERE search_condition */
yytestcase
(
yyruleno
==
299
);
case
32
2
:
/* having_clause_opt ::= HAVING search_condition */
yytestcase
(
yyruleno
==
322
);
{
yymsp
[
-
1
].
minor
.
yy176
=
yymsp
[
0
].
minor
.
yy176
;
}
break
;
case
2
69
:
/* table_reference_list ::= table_reference_list NK_COMMA table_reference */
case
2
71
:
/* table_reference_list ::= table_reference_list NK_COMMA table_reference */
{
yylhsminor
.
yy176
=
createJoinTableNode
(
pCxt
,
JOIN_TYPE_INNER
,
yymsp
[
-
2
].
minor
.
yy176
,
yymsp
[
0
].
minor
.
yy176
,
NULL
);
}
yymsp
[
-
2
].
minor
.
yy176
=
yylhsminor
.
yy176
;
break
;
case
27
2
:
/* table_primary ::= table_name alias_opt */
case
27
4
:
/* table_primary ::= table_name alias_opt */
{
yylhsminor
.
yy176
=
createRealTableNode
(
pCxt
,
NULL
,
&
yymsp
[
-
1
].
minor
.
yy225
,
&
yymsp
[
0
].
minor
.
yy225
);
}
yymsp
[
-
1
].
minor
.
yy176
=
yylhsminor
.
yy176
;
break
;
case
27
3
:
/* table_primary ::= db_name NK_DOT table_name alias_opt */
case
27
5
:
/* table_primary ::= db_name NK_DOT table_name alias_opt */
{
yylhsminor
.
yy176
=
createRealTableNode
(
pCxt
,
&
yymsp
[
-
3
].
minor
.
yy225
,
&
yymsp
[
-
1
].
minor
.
yy225
,
&
yymsp
[
0
].
minor
.
yy225
);
}
yymsp
[
-
3
].
minor
.
yy176
=
yylhsminor
.
yy176
;
break
;
case
27
4
:
/* table_primary ::= subquery alias_opt */
case
27
6
:
/* table_primary ::= subquery alias_opt */
{
yylhsminor
.
yy176
=
createTempTableNode
(
pCxt
,
releaseRawExprNode
(
pCxt
,
yymsp
[
-
1
].
minor
.
yy176
),
&
yymsp
[
0
].
minor
.
yy225
);
}
yymsp
[
-
1
].
minor
.
yy176
=
yylhsminor
.
yy176
;
break
;
case
27
6
:
/* alias_opt ::= */
case
27
8
:
/* alias_opt ::= */
{
yymsp
[
1
].
minor
.
yy225
=
nil_token
;
}
break
;
case
27
7
:
/* alias_opt ::= table_alias */
case
27
9
:
/* alias_opt ::= table_alias */
{
yylhsminor
.
yy225
=
yymsp
[
0
].
minor
.
yy225
;
}
yymsp
[
0
].
minor
.
yy225
=
yylhsminor
.
yy225
;
break
;
case
2
78
:
/* alias_opt ::= AS table_alias */
case
2
80
:
/* alias_opt ::= AS table_alias */
{
yymsp
[
-
1
].
minor
.
yy225
=
yymsp
[
0
].
minor
.
yy225
;
}
break
;
case
2
79
:
/* parenthesized_joined_table ::= NK_LP joined_table NK_RP */
case
28
0
:
/* parenthesized_joined_table ::= NK_LP parenthesized_joined_table NK_RP */
yytestcase
(
yyruleno
==
280
);
case
2
81
:
/* parenthesized_joined_table ::= NK_LP joined_table NK_RP */
case
28
2
:
/* parenthesized_joined_table ::= NK_LP parenthesized_joined_table NK_RP */
yytestcase
(
yyruleno
==
282
);
{
yymsp
[
-
2
].
minor
.
yy176
=
yymsp
[
-
1
].
minor
.
yy176
;
}
break
;
case
28
1
:
/* joined_table ::= table_reference join_type JOIN table_reference ON search_condition */
case
28
3
:
/* joined_table ::= table_reference join_type JOIN table_reference ON search_condition */
{
yylhsminor
.
yy176
=
createJoinTableNode
(
pCxt
,
yymsp
[
-
4
].
minor
.
yy236
,
yymsp
[
-
5
].
minor
.
yy176
,
yymsp
[
-
2
].
minor
.
yy176
,
yymsp
[
0
].
minor
.
yy176
);
}
yymsp
[
-
5
].
minor
.
yy176
=
yylhsminor
.
yy176
;
break
;
case
28
2
:
/* join_type ::= */
case
28
4
:
/* join_type ::= */
{
yymsp
[
1
].
minor
.
yy236
=
JOIN_TYPE_INNER
;
}
break
;
case
28
3
:
/* join_type ::= INNER */
case
28
5
:
/* join_type ::= INNER */
{
yymsp
[
0
].
minor
.
yy236
=
JOIN_TYPE_INNER
;
}
break
;
case
28
4
:
/* query_specification ::= SELECT set_quantifier_opt select_list from_clause where_clause_opt partition_by_clause_opt twindow_clause_opt group_by_clause_opt having_clause_opt */
case
28
6
:
/* query_specification ::= SELECT set_quantifier_opt select_list from_clause where_clause_opt partition_by_clause_opt twindow_clause_opt group_by_clause_opt having_clause_opt */
{
yymsp
[
-
8
].
minor
.
yy176
=
createSelectStmt
(
pCxt
,
yymsp
[
-
7
].
minor
.
yy505
,
yymsp
[
-
6
].
minor
.
yy512
,
yymsp
[
-
5
].
minor
.
yy176
);
yymsp
[
-
8
].
minor
.
yy176
=
addWhereClause
(
pCxt
,
yymsp
[
-
8
].
minor
.
yy176
,
yymsp
[
-
4
].
minor
.
yy176
);
...
...
@@ -3258,84 +3267,84 @@ static YYACTIONTYPE yy_reduce(
yymsp
[
-
8
].
minor
.
yy176
=
addHavingClause
(
pCxt
,
yymsp
[
-
8
].
minor
.
yy176
,
yymsp
[
0
].
minor
.
yy176
);
}
break
;
case
28
6
:
/* set_quantifier_opt ::= DISTINCT */
case
28
8
:
/* set_quantifier_opt ::= DISTINCT */
{
yymsp
[
0
].
minor
.
yy505
=
true
;
}
break
;
case
28
7
:
/* set_quantifier_opt ::= ALL */
case
28
9
:
/* set_quantifier_opt ::= ALL */
{
yymsp
[
0
].
minor
.
yy505
=
false
;
}
break
;
case
2
88
:
/* select_list ::= NK_STAR */
case
2
90
:
/* select_list ::= NK_STAR */
{
yymsp
[
0
].
minor
.
yy512
=
NULL
;
}
break
;
case
29
2
:
/* select_item ::= common_expression */
case
29
4
:
/* select_item ::= common_expression */
{
SToken
t
=
getTokenFromRawExprNode
(
pCxt
,
yymsp
[
0
].
minor
.
yy176
);
yylhsminor
.
yy176
=
setProjectionAlias
(
pCxt
,
releaseRawExprNode
(
pCxt
,
yymsp
[
0
].
minor
.
yy176
),
&
t
);
}
yymsp
[
0
].
minor
.
yy176
=
yylhsminor
.
yy176
;
break
;
case
29
3
:
/* select_item ::= common_expression column_alias */
case
29
5
:
/* select_item ::= common_expression column_alias */
{
yylhsminor
.
yy176
=
setProjectionAlias
(
pCxt
,
releaseRawExprNode
(
pCxt
,
yymsp
[
-
1
].
minor
.
yy176
),
&
yymsp
[
0
].
minor
.
yy225
);
}
yymsp
[
-
1
].
minor
.
yy176
=
yylhsminor
.
yy176
;
break
;
case
29
4
:
/* select_item ::= common_expression AS column_alias */
case
29
6
:
/* select_item ::= common_expression AS column_alias */
{
yylhsminor
.
yy176
=
setProjectionAlias
(
pCxt
,
releaseRawExprNode
(
pCxt
,
yymsp
[
-
2
].
minor
.
yy176
),
&
yymsp
[
0
].
minor
.
yy225
);
}
yymsp
[
-
2
].
minor
.
yy176
=
yylhsminor
.
yy176
;
break
;
case
29
5
:
/* select_item ::= table_name NK_DOT NK_STAR */
case
29
7
:
/* select_item ::= table_name NK_DOT NK_STAR */
{
yylhsminor
.
yy176
=
createColumnNode
(
pCxt
,
&
yymsp
[
-
2
].
minor
.
yy225
,
&
yymsp
[
0
].
minor
.
yy0
);
}
yymsp
[
-
2
].
minor
.
yy176
=
yylhsminor
.
yy176
;
break
;
case
299
:
/* partition_by_clause_opt ::= PARTITION BY expression_list */
case
31
6
:
/* group_by_clause_opt ::= GROUP BY group_by_list */
yytestcase
(
yyruleno
==
316
);
case
32
6
:
/* order_by_clause_opt ::= ORDER BY sort_specification_list */
yytestcase
(
yyruleno
==
326
);
case
301
:
/* partition_by_clause_opt ::= PARTITION BY expression_list */
case
31
8
:
/* group_by_clause_opt ::= GROUP BY group_by_list */
yytestcase
(
yyruleno
==
318
);
case
32
8
:
/* order_by_clause_opt ::= ORDER BY sort_specification_list */
yytestcase
(
yyruleno
==
328
);
{
yymsp
[
-
2
].
minor
.
yy512
=
yymsp
[
0
].
minor
.
yy512
;
}
break
;
case
30
1
:
/* twindow_clause_opt ::= SESSION NK_LP column_reference NK_COMMA duration_literal NK_RP */
case
30
3
:
/* twindow_clause_opt ::= SESSION NK_LP column_reference NK_COMMA duration_literal NK_RP */
{
yymsp
[
-
5
].
minor
.
yy176
=
createSessionWindowNode
(
pCxt
,
releaseRawExprNode
(
pCxt
,
yymsp
[
-
3
].
minor
.
yy176
),
releaseRawExprNode
(
pCxt
,
yymsp
[
-
1
].
minor
.
yy176
));
}
break
;
case
30
2
:
/* twindow_clause_opt ::= STATE_WINDOW NK_LP column_reference NK_RP */
case
30
4
:
/* twindow_clause_opt ::= STATE_WINDOW NK_LP column_reference NK_RP */
{
yymsp
[
-
3
].
minor
.
yy176
=
createStateWindowNode
(
pCxt
,
releaseRawExprNode
(
pCxt
,
yymsp
[
-
1
].
minor
.
yy176
));
}
break
;
case
30
3
:
/* twindow_clause_opt ::= INTERVAL NK_LP duration_literal NK_RP sliding_opt fill_opt */
case
30
5
:
/* twindow_clause_opt ::= INTERVAL NK_LP duration_literal NK_RP sliding_opt fill_opt */
{
yymsp
[
-
5
].
minor
.
yy176
=
createIntervalWindowNode
(
pCxt
,
releaseRawExprNode
(
pCxt
,
yymsp
[
-
3
].
minor
.
yy176
),
NULL
,
yymsp
[
-
1
].
minor
.
yy176
,
yymsp
[
0
].
minor
.
yy176
);
}
break
;
case
30
4
:
/* twindow_clause_opt ::= INTERVAL NK_LP duration_literal NK_COMMA duration_literal NK_RP sliding_opt fill_opt */
case
30
6
:
/* twindow_clause_opt ::= INTERVAL NK_LP duration_literal NK_COMMA duration_literal NK_RP sliding_opt fill_opt */
{
yymsp
[
-
7
].
minor
.
yy176
=
createIntervalWindowNode
(
pCxt
,
releaseRawExprNode
(
pCxt
,
yymsp
[
-
5
].
minor
.
yy176
),
releaseRawExprNode
(
pCxt
,
yymsp
[
-
3
].
minor
.
yy176
),
yymsp
[
-
1
].
minor
.
yy176
,
yymsp
[
0
].
minor
.
yy176
);
}
break
;
case
30
6
:
/* sliding_opt ::= SLIDING NK_LP duration_literal NK_RP */
case
30
8
:
/* sliding_opt ::= SLIDING NK_LP duration_literal NK_RP */
{
yymsp
[
-
3
].
minor
.
yy176
=
releaseRawExprNode
(
pCxt
,
yymsp
[
-
1
].
minor
.
yy176
);
}
break
;
case
3
08
:
/* fill_opt ::= FILL NK_LP fill_mode NK_RP */
case
3
10
:
/* fill_opt ::= FILL NK_LP fill_mode NK_RP */
{
yymsp
[
-
3
].
minor
.
yy176
=
createFillNode
(
pCxt
,
yymsp
[
-
1
].
minor
.
yy142
,
NULL
);
}
break
;
case
3
09
:
/* fill_opt ::= FILL NK_LP VALUE NK_COMMA literal_list NK_RP */
case
3
11
:
/* fill_opt ::= FILL NK_LP VALUE NK_COMMA literal_list NK_RP */
{
yymsp
[
-
5
].
minor
.
yy176
=
createFillNode
(
pCxt
,
FILL_MODE_VALUE
,
createNodeListNode
(
pCxt
,
yymsp
[
-
1
].
minor
.
yy512
));
}
break
;
case
31
0
:
/* fill_mode ::= NONE */
case
31
2
:
/* fill_mode ::= NONE */
{
yymsp
[
0
].
minor
.
yy142
=
FILL_MODE_NONE
;
}
break
;
case
31
1
:
/* fill_mode ::= PREV */
case
31
3
:
/* fill_mode ::= PREV */
{
yymsp
[
0
].
minor
.
yy142
=
FILL_MODE_PREV
;
}
break
;
case
31
2
:
/* fill_mode ::= NULL */
case
31
4
:
/* fill_mode ::= NULL */
{
yymsp
[
0
].
minor
.
yy142
=
FILL_MODE_NULL
;
}
break
;
case
31
3
:
/* fill_mode ::= LINEAR */
case
31
5
:
/* fill_mode ::= LINEAR */
{
yymsp
[
0
].
minor
.
yy142
=
FILL_MODE_LINEAR
;
}
break
;
case
31
4
:
/* fill_mode ::= NEXT */
case
31
6
:
/* fill_mode ::= NEXT */
{
yymsp
[
0
].
minor
.
yy142
=
FILL_MODE_NEXT
;
}
break
;
case
31
7
:
/* group_by_list ::= expression */
case
31
9
:
/* group_by_list ::= expression */
{
yylhsminor
.
yy512
=
createNodeList
(
pCxt
,
createGroupingSetNode
(
pCxt
,
releaseRawExprNode
(
pCxt
,
yymsp
[
0
].
minor
.
yy176
)));
}
yymsp
[
0
].
minor
.
yy512
=
yylhsminor
.
yy512
;
break
;
case
3
18
:
/* group_by_list ::= group_by_list NK_COMMA expression */
case
3
20
:
/* group_by_list ::= group_by_list NK_COMMA expression */
{
yylhsminor
.
yy512
=
addNodeToList
(
pCxt
,
yymsp
[
-
2
].
minor
.
yy512
,
createGroupingSetNode
(
pCxt
,
releaseRawExprNode
(
pCxt
,
yymsp
[
0
].
minor
.
yy176
)));
}
yymsp
[
-
2
].
minor
.
yy512
=
yylhsminor
.
yy512
;
break
;
case
32
1
:
/* query_expression ::= query_expression_body order_by_clause_opt slimit_clause_opt limit_clause_opt */
case
32
3
:
/* query_expression ::= query_expression_body order_by_clause_opt slimit_clause_opt limit_clause_opt */
{
yylhsminor
.
yy176
=
addOrderByClause
(
pCxt
,
yymsp
[
-
3
].
minor
.
yy176
,
yymsp
[
-
2
].
minor
.
yy512
);
yylhsminor
.
yy176
=
addSlimitClause
(
pCxt
,
yylhsminor
.
yy176
,
yymsp
[
-
1
].
minor
.
yy176
);
...
...
@@ -3343,46 +3352,46 @@ static YYACTIONTYPE yy_reduce(
}
yymsp
[
-
3
].
minor
.
yy176
=
yylhsminor
.
yy176
;
break
;
case
32
3
:
/* query_expression_body ::= query_expression_body UNION ALL query_expression_body */
case
32
5
:
/* query_expression_body ::= query_expression_body UNION ALL query_expression_body */
{
yylhsminor
.
yy176
=
createSetOperator
(
pCxt
,
SET_OP_TYPE_UNION_ALL
,
yymsp
[
-
3
].
minor
.
yy176
,
yymsp
[
0
].
minor
.
yy176
);
}
yymsp
[
-
3
].
minor
.
yy176
=
yylhsminor
.
yy176
;
break
;
case
3
28
:
/* slimit_clause_opt ::= SLIMIT NK_INTEGER */
case
33
2
:
/* limit_clause_opt ::= LIMIT NK_INTEGER */
yytestcase
(
yyruleno
==
332
);
case
3
30
:
/* slimit_clause_opt ::= SLIMIT NK_INTEGER */
case
33
4
:
/* limit_clause_opt ::= LIMIT NK_INTEGER */
yytestcase
(
yyruleno
==
334
);
{
yymsp
[
-
1
].
minor
.
yy176
=
createLimitNode
(
pCxt
,
&
yymsp
[
0
].
minor
.
yy0
,
NULL
);
}
break
;
case
3
29
:
/* slimit_clause_opt ::= SLIMIT NK_INTEGER SOFFSET NK_INTEGER */
case
33
3
:
/* limit_clause_opt ::= LIMIT NK_INTEGER OFFSET NK_INTEGER */
yytestcase
(
yyruleno
==
333
);
case
3
31
:
/* slimit_clause_opt ::= SLIMIT NK_INTEGER SOFFSET NK_INTEGER */
case
33
5
:
/* limit_clause_opt ::= LIMIT NK_INTEGER OFFSET NK_INTEGER */
yytestcase
(
yyruleno
==
335
);
{
yymsp
[
-
3
].
minor
.
yy176
=
createLimitNode
(
pCxt
,
&
yymsp
[
-
2
].
minor
.
yy0
,
&
yymsp
[
0
].
minor
.
yy0
);
}
break
;
case
33
0
:
/* slimit_clause_opt ::= SLIMIT NK_INTEGER NK_COMMA NK_INTEGER */
case
33
4
:
/* limit_clause_opt ::= LIMIT NK_INTEGER NK_COMMA NK_INTEGER */
yytestcase
(
yyruleno
==
334
);
case
33
2
:
/* slimit_clause_opt ::= SLIMIT NK_INTEGER NK_COMMA NK_INTEGER */
case
33
6
:
/* limit_clause_opt ::= LIMIT NK_INTEGER NK_COMMA NK_INTEGER */
yytestcase
(
yyruleno
==
336
);
{
yymsp
[
-
3
].
minor
.
yy176
=
createLimitNode
(
pCxt
,
&
yymsp
[
0
].
minor
.
yy0
,
&
yymsp
[
-
2
].
minor
.
yy0
);
}
break
;
case
33
5
:
/* subquery ::= NK_LP query_expression NK_RP */
case
33
7
:
/* subquery ::= NK_LP query_expression NK_RP */
{
yylhsminor
.
yy176
=
createRawExprNodeExt
(
pCxt
,
&
yymsp
[
-
2
].
minor
.
yy0
,
&
yymsp
[
0
].
minor
.
yy0
,
yymsp
[
-
1
].
minor
.
yy176
);
}
yymsp
[
-
2
].
minor
.
yy176
=
yylhsminor
.
yy176
;
break
;
case
3
39
:
/* sort_specification ::= expression ordering_specification_opt null_ordering_opt */
case
3
41
:
/* sort_specification ::= expression ordering_specification_opt null_ordering_opt */
{
yylhsminor
.
yy176
=
createOrderByExprNode
(
pCxt
,
releaseRawExprNode
(
pCxt
,
yymsp
[
-
2
].
minor
.
yy176
),
yymsp
[
-
1
].
minor
.
yy106
,
yymsp
[
0
].
minor
.
yy465
);
}
yymsp
[
-
2
].
minor
.
yy176
=
yylhsminor
.
yy176
;
break
;
case
34
0
:
/* ordering_specification_opt ::= */
case
34
2
:
/* ordering_specification_opt ::= */
{
yymsp
[
1
].
minor
.
yy106
=
ORDER_ASC
;
}
break
;
case
34
1
:
/* ordering_specification_opt ::= ASC */
case
34
3
:
/* ordering_specification_opt ::= ASC */
{
yymsp
[
0
].
minor
.
yy106
=
ORDER_ASC
;
}
break
;
case
34
2
:
/* ordering_specification_opt ::= DESC */
case
34
4
:
/* ordering_specification_opt ::= DESC */
{
yymsp
[
0
].
minor
.
yy106
=
ORDER_DESC
;
}
break
;
case
34
3
:
/* null_ordering_opt ::= */
case
34
5
:
/* null_ordering_opt ::= */
{
yymsp
[
1
].
minor
.
yy465
=
NULL_ORDER_DEFAULT
;
}
break
;
case
34
4
:
/* null_ordering_opt ::= NULLS FIRST */
case
34
6
:
/* null_ordering_opt ::= NULLS FIRST */
{
yymsp
[
-
1
].
minor
.
yy465
=
NULL_ORDER_FIRST
;
}
break
;
case
34
5
:
/* null_ordering_opt ::= NULLS LAST */
case
34
7
:
/* null_ordering_opt ::= NULLS LAST */
{
yymsp
[
-
1
].
minor
.
yy465
=
NULL_ORDER_LAST
;
}
break
;
default:
...
...
source/libs/parser/test/parserAstTest.cpp
浏览文件 @
5b2d664d
...
...
@@ -487,7 +487,10 @@ TEST_F(ParserTest, createTable) {
bind
(
"create table "
"if not exists test.t1 using test.st1 (tag1, tag2) tags(1, 'abc') "
"if not exists test.t2 using test.st1 (tag1, tag2) tags(2, 'abc') "
"if not exists test.t3 using test.st1 (tag1, tag2) tags(3, 'abc')"
"if not exists test.t3 using test.st1 (tag1, tag2) tags(3, 'abc') "
"if not exists test.t4 using test.st1 (tag1, tag2) tags(3, null) "
"if not exists test.t5 using test.st1 (tag1, tag2) tags(null, 'abc') "
"if not exists test.t6 using test.st1 (tag1, tag2) tags(null, null)"
);
ASSERT_TRUE
(
run
());
...
...
source/libs/qworker/inc/qworkerMsg.h
浏览文件 @
5b2d664d
...
...
@@ -30,18 +30,18 @@ int32_t qwProcessFetch(QW_FPARAMS_DEF, SQWMsg *qwMsg);
int32_t
qwProcessDrop
(
QW_FPARAMS_DEF
,
SQWMsg
*
qwMsg
);
int32_t
qwProcessHb
(
SQWorkerMgmt
*
mgmt
,
SQWMsg
*
qwMsg
,
SSchedulerHbReq
*
req
);
int32_t
qwBuildAndSendDropRsp
(
const
SMsgCb
*
pMsgCb
,
SQWConnInfo
*
pConn
,
int32_t
code
);
int32_t
qwBuildAndSendCancelRsp
(
const
SMsgCb
*
pMsgCb
,
SQWConnInfo
*
pConn
,
int32_t
code
);
int32_t
qwBuildAndSendFetchRsp
(
const
SMsgCb
*
pMsgCb
,
SQWConnInfo
*
pConn
,
SRetrieveTableRsp
*
pRsp
,
int32_t
dataLength
,
int32_t
qwBuildAndSendDropRsp
(
SQWConnInfo
*
pConn
,
int32_t
code
);
int32_t
qwBuildAndSendCancelRsp
(
SQWConnInfo
*
pConn
,
int32_t
code
);
int32_t
qwBuildAndSendFetchRsp
(
SQWConnInfo
*
pConn
,
SRetrieveTableRsp
*
pRsp
,
int32_t
dataLength
,
int32_t
code
);
void
qwBuildFetchRsp
(
void
*
msg
,
SOutputData
*
input
,
int32_t
len
,
bool
qComplete
);
int32_t
qwBuildAndSendCQueryMsg
(
QW_FPARAMS_DEF
,
SQWConnInfo
*
pConn
);
int32_t
qwBuildAndSendReadyRsp
(
const
SMsgCb
*
pMsgCb
,
SQWConnInfo
*
pConn
,
int32_t
code
);
int32_t
qwBuildAndSendQueryRsp
(
const
SMsgCb
*
pMsgCb
,
SQWConnInfo
*
pConn
,
int32_t
code
);
int32_t
qwBuildAndSendReadyRsp
(
SQWConnInfo
*
pConn
,
int32_t
code
);
int32_t
qwBuildAndSendQueryRsp
(
SQWConnInfo
*
pConn
,
int32_t
code
);
void
qwFreeFetchRsp
(
void
*
msg
);
int32_t
qwMallocFetchRsp
(
int32_t
length
,
SRetrieveTableRsp
**
rsp
);
int32_t
qwGetSchTasksStatus
(
SQWorkerMgmt
*
mgmt
,
uint64_t
sId
,
SSchedulerStatusRsp
**
rsp
);
int32_t
qwBuildAndSendHbRsp
(
const
SMsgCb
*
pMsgCb
,
SQWConnInfo
*
pConn
,
SSchedulerHbRsp
*
rsp
,
int32_t
code
);
int32_t
qwBuildAndSendHbRsp
(
SQWConnInfo
*
pConn
,
SSchedulerHbRsp
*
rsp
,
int32_t
code
);
int32_t
qwRegisterBrokenLinkArg
(
QW_FPARAMS_DEF
,
SQWConnInfo
*
pConn
);
#ifdef __cplusplus
...
...
source/libs/qworker/src/qworker.c
浏览文件 @
5b2d664d
...
...
@@ -432,7 +432,7 @@ int32_t qwKillTaskHandle(QW_FPARAMS_DEF, SQWTaskCtx *ctx) {
void
qwFreeTask
(
QW_FPARAMS_DEF
,
SQWTaskCtx
*
ctx
)
{
rpc
ReleaseHandle
(
ctx
->
connInfo
.
handle
,
TAOS_CONN_SERVER
);
tmsg
ReleaseHandle
(
ctx
->
connInfo
.
handle
,
TAOS_CONN_SERVER
);
ctx
->
connInfo
.
handle
=
NULL
;
qwFreeTaskHandle
(
QW_FPARAMS
(),
&
ctx
->
taskHandle
);
...
...
@@ -764,7 +764,7 @@ int32_t qwHandlePrePhaseEvents(QW_FPARAMS_DEF, int8_t phase, SQWPhaseInput *inpu
QW_ERR_JRET
(
qwDropTask
(
QW_FPARAMS
()));
dropConnection
=
NULL
;
qwBuildAndSendDropRsp
(
&
mgmt
->
msgCb
,
&
ctx
->
connInfo
,
code
);
qwBuildAndSendDropRsp
(
&
ctx
->
connInfo
,
code
);
QW_TASK_DLOG
(
"drop rsp send, handle:%p, code:%x - %s"
,
ctx
->
connInfo
.
handle
,
code
,
tstrerror
(
code
));
QW_ERR_JRET
(
TSDB_CODE_QRY_TASK_DROPPED
);
...
...
@@ -802,7 +802,7 @@ int32_t qwHandlePrePhaseEvents(QW_FPARAMS_DEF, int8_t phase, SQWPhaseInput *inpu
QW_ERR_JRET
(
qwDropTask
(
QW_FPARAMS
()));
dropConnection
=
NULL
;
qwBuildAndSendDropRsp
(
&
mgmt
->
msgCb
,
&
ctx
->
connInfo
,
code
);
qwBuildAndSendDropRsp
(
&
ctx
->
connInfo
,
code
);
QW_TASK_DLOG
(
"drop rsp send, handle:%p, code:%x - %s"
,
ctx
->
connInfo
.
handle
,
code
,
tstrerror
(
code
));
QW_ERR_JRET
(
TSDB_CODE_QRY_TASK_DROPPED
);
...
...
@@ -830,12 +830,12 @@ _return:
}
if
(
dropConnection
)
{
qwBuildAndSendDropRsp
(
&
mgmt
->
msgCb
,
dropConnection
,
code
);
qwBuildAndSendDropRsp
(
dropConnection
,
code
);
QW_TASK_DLOG
(
"drop rsp send, handle:%p, code:%x - %s"
,
dropConnection
->
handle
,
code
,
tstrerror
(
code
));
}
if
(
cancelConnection
)
{
qwBuildAndSendCancelRsp
(
&
mgmt
->
msgCb
,
cancelConnection
,
code
);
qwBuildAndSendCancelRsp
(
cancelConnection
,
code
);
QW_TASK_DLOG
(
"cancel rsp send, handle:%p, code:%x - %s"
,
cancelConnection
->
handle
,
code
,
tstrerror
(
code
));
}
...
...
@@ -886,7 +886,7 @@ int32_t qwHandlePostPhaseEvents(QW_FPARAMS_DEF, int8_t phase, SQWPhaseInput *inp
QW_ERR_JRET
(
TSDB_CODE_QRY_APP_ERROR
);
}
qwBuildAndSendDropRsp
(
&
mgmt
->
msgCb
,
&
ctx
->
connInfo
,
code
);
qwBuildAndSendDropRsp
(
&
ctx
->
connInfo
,
code
);
QW_TASK_DLOG
(
"drop rsp send, handle:%p, code:%x - %s"
,
ctx
->
connInfo
.
handle
,
code
,
tstrerror
(
code
));
QW_ERR_JRET
(
qwDropTask
(
QW_FPARAMS
()));
...
...
@@ -918,7 +918,7 @@ _return:
}
if
(
readyConnection
)
{
qwBuildAndSendReadyRsp
(
&
mgmt
->
msgCb
,
readyConnection
,
code
);
qwBuildAndSendReadyRsp
(
readyConnection
,
code
);
QW_TASK_DLOG
(
"ready msg rsped, handle:%p, code:%x - %s"
,
readyConnection
->
handle
,
code
,
tstrerror
(
code
));
}
...
...
@@ -970,7 +970,7 @@ int32_t qwProcessQuery(QW_FPARAMS_DEF, SQWMsg *qwMsg, int8_t taskType) {
QW_ERR_JRET
(
TSDB_CODE_QRY_APP_ERROR
);
}
QW_ERR_JRET
(
qwBuildAndSendQueryRsp
(
&
mgmt
->
msgCb
,
&
qwMsg
->
connInfo
,
code
));
QW_ERR_JRET
(
qwBuildAndSendQueryRsp
(
&
qwMsg
->
connInfo
,
code
));
QW_TASK_DLOG
(
"query msg rsped, handle:%p, code:%x - %s"
,
qwMsg
->
connInfo
.
handle
,
code
,
tstrerror
(
code
));
queryRsped
=
true
;
...
...
@@ -988,7 +988,7 @@ _return:
code
=
qwHandlePostPhaseEvents
(
QW_FPARAMS
(),
QW_PHASE_POST_QUERY
,
&
input
,
NULL
);
if
(
!
queryRsped
)
{
qwBuildAndSendQueryRsp
(
&
mgmt
->
msgCb
,
&
qwMsg
->
connInfo
,
code
);
qwBuildAndSendQueryRsp
(
&
qwMsg
->
connInfo
,
code
);
QW_TASK_DLOG
(
"query msg rsped, handle:%p, code:%x - %s"
,
qwMsg
->
connInfo
.
handle
,
code
,
tstrerror
(
code
));
}
...
...
@@ -1051,7 +1051,7 @@ _return:
}
if
(
needRsp
)
{
qwBuildAndSendReadyRsp
(
&
mgmt
->
msgCb
,
&
qwMsg
->
connInfo
,
code
);
qwBuildAndSendReadyRsp
(
&
qwMsg
->
connInfo
,
code
);
QW_TASK_DLOG
(
"ready msg rsped, handle:%p, code:%x - %s"
,
qwMsg
->
connInfo
.
handle
,
code
,
tstrerror
(
code
));
}
...
...
@@ -1095,7 +1095,7 @@ int32_t qwProcessCQuery(QW_FPARAMS_DEF, SQWMsg *qwMsg) {
qwMsg
->
connInfo
=
ctx
->
connInfo
;
QW_SET_EVENT_PROCESSED
(
ctx
,
QW_EVENT_FETCH
);
qwBuildAndSendFetchRsp
(
&
mgmt
->
msgCb
,
&
qwMsg
->
connInfo
,
rsp
,
dataLen
,
code
);
qwBuildAndSendFetchRsp
(
&
qwMsg
->
connInfo
,
rsp
,
dataLen
,
code
);
QW_TASK_DLOG
(
"fetch rsp send, handle:%p, code:%x - %s, dataLen:%d"
,
qwMsg
->
connInfo
.
handle
,
code
,
tstrerror
(
code
),
dataLen
);
}
else
{
atomic_store_8
((
int8_t
*
)
&
ctx
->
queryContinue
,
1
);
...
...
@@ -1114,7 +1114,7 @@ _return:
rsp
=
NULL
;
qwMsg
->
connInfo
=
ctx
->
connInfo
;
qwBuildAndSendFetchRsp
(
&
mgmt
->
msgCb
,
&
qwMsg
->
connInfo
,
rsp
,
0
,
code
);
qwBuildAndSendFetchRsp
(
&
qwMsg
->
connInfo
,
rsp
,
0
,
code
);
QW_TASK_DLOG
(
"fetch rsp send, handle:%p, code:%x - %s, dataLen:%d"
,
qwMsg
->
connInfo
.
handle
,
code
,
tstrerror
(
code
),
0
);
}
...
...
@@ -1195,7 +1195,7 @@ _return:
}
if
(
code
||
rsp
)
{
qwBuildAndSendFetchRsp
(
&
mgmt
->
msgCb
,
&
qwMsg
->
connInfo
,
rsp
,
dataLen
,
code
);
qwBuildAndSendFetchRsp
(
&
qwMsg
->
connInfo
,
rsp
,
dataLen
,
code
);
QW_TASK_DLOG
(
"fetch rsp send, handle:%p, code:%x - %s, dataLen:%d"
,
qwMsg
->
connInfo
.
handle
,
code
,
tstrerror
(
code
),
dataLen
);
}
...
...
@@ -1226,7 +1226,7 @@ int32_t qwProcessDrop(QW_FPARAMS_DEF, SQWMsg *qwMsg) {
QW_ERR_JRET
(
qwKillTaskHandle
(
QW_FPARAMS
(),
ctx
));
qwUpdateTaskStatus
(
QW_FPARAMS
(),
JOB_TASK_STATUS_DROPPING
);
}
else
if
(
ctx
->
phase
>
0
)
{
qwBuildAndSendDropRsp
(
&
mgmt
->
msgCb
,
&
qwMsg
->
connInfo
,
code
);
qwBuildAndSendDropRsp
(
&
qwMsg
->
connInfo
,
code
);
QW_TASK_DLOG
(
"drop rsp send, handle:%p, code:%x - %s"
,
qwMsg
->
connInfo
.
handle
,
code
,
tstrerror
(
code
));
QW_ERR_JRET
(
qwDropTask
(
QW_FPARAMS
()));
...
...
@@ -1261,7 +1261,7 @@ _return:
}
if
(
TSDB_CODE_SUCCESS
!=
code
)
{
qwBuildAndSendDropRsp
(
&
mgmt
->
msgCb
,
&
qwMsg
->
connInfo
,
code
);
qwBuildAndSendDropRsp
(
&
qwMsg
->
connInfo
,
code
);
QW_TASK_DLOG
(
"drop rsp send, handle:%p, code:%x - %s"
,
qwMsg
->
connInfo
.
handle
,
code
,
tstrerror
(
code
));
}
...
...
@@ -1282,7 +1282,7 @@ int32_t qwProcessHb(SQWorkerMgmt *mgmt, SQWMsg *qwMsg, SSchedulerHbReq *req) {
QW_LOCK
(
QW_WRITE
,
&
sch
->
hbConnLock
);
if
(
sch
->
hbConnInfo
.
handle
)
{
rpc
ReleaseHandle
(
sch
->
hbConnInfo
.
handle
,
TAOS_CONN_SERVER
);
tmsg
ReleaseHandle
(
sch
->
hbConnInfo
.
handle
,
TAOS_CONN_SERVER
);
}
memcpy
(
&
sch
->
hbConnInfo
,
&
qwMsg
->
connInfo
,
sizeof
(
qwMsg
->
connInfo
));
...
...
@@ -1297,7 +1297,7 @@ int32_t qwProcessHb(SQWorkerMgmt *mgmt, SQWMsg *qwMsg, SSchedulerHbReq *req) {
_return:
qwBuildAndSendHbRsp
(
&
mgmt
->
msgCb
,
&
qwMsg
->
connInfo
,
&
rsp
,
code
);
qwBuildAndSendHbRsp
(
&
qwMsg
->
connInfo
,
&
rsp
,
code
);
QW_DLOG
(
"hb rsp send, handle:%p, code:%x - %s"
,
qwMsg
->
connInfo
.
handle
,
code
,
tstrerror
(
code
));
QW_RET
(
TSDB_CODE_SUCCESS
);
...
...
@@ -1351,7 +1351,7 @@ _return:
QW_UNLOCK
(
QW_READ
,
&
mgmt
->
schLock
);
for
(
int32_t
j
=
0
;
j
<
i
;
++
j
)
{
qwBuildAndSendHbRsp
(
&
mgmt
->
msgCb
,
&
rspList
[
j
].
connInfo
,
&
rspList
[
j
].
rsp
,
code
);
qwBuildAndSendHbRsp
(
&
rspList
[
j
].
connInfo
,
&
rspList
[
j
].
rsp
,
code
);
QW_DLOG
(
"hb rsp send, handle:%p, code:%x - %s, taskNum:%d"
,
rspList
[
j
].
connInfo
.
handle
,
code
,
tstrerror
(
code
),
(
rspList
[
j
].
rsp
.
taskStatus
?
(
int32_t
)
taosArrayGetSize
(
rspList
[
j
].
rsp
.
taskStatus
)
:
0
));
tFreeSSchedulerHbRsp
(
&
rspList
[
j
].
rsp
);
...
...
source/libs/qworker/src/qworkerMsg.c
浏览文件 @
5b2d664d
...
...
@@ -46,7 +46,7 @@ void qwFreeFetchRsp(void *msg) {
}
}
int32_t
qwBuildAndSendQueryRsp
(
const
SMsgCb
*
pMsgCb
,
SQWConnInfo
*
pConn
,
int32_t
code
)
{
int32_t
qwBuildAndSendQueryRsp
(
SQWConnInfo
*
pConn
,
int32_t
code
)
{
SQueryTableRsp
rsp
=
{.
code
=
code
};
int32_t
contLen
=
tSerializeSQueryTableRsp
(
NULL
,
0
,
&
rsp
);
...
...
@@ -62,12 +62,12 @@ int32_t qwBuildAndSendQueryRsp(const SMsgCb *pMsgCb, SQWConnInfo *pConn, int32_t
.
code
=
code
,
};
tmsgSendRsp
(
pMsgCb
,
&
rpcRsp
);
tmsgSendRsp
(
&
rpcRsp
);
return
TSDB_CODE_SUCCESS
;
}
int32_t
qwBuildAndSendReadyRsp
(
const
SMsgCb
*
pMsgCb
,
SQWConnInfo
*
pConn
,
int32_t
code
)
{
int32_t
qwBuildAndSendReadyRsp
(
SQWConnInfo
*
pConn
,
int32_t
code
)
{
SResReadyRsp
*
pRsp
=
(
SResReadyRsp
*
)
rpcMallocCont
(
sizeof
(
SResReadyRsp
));
pRsp
->
code
=
code
;
...
...
@@ -80,12 +80,12 @@ int32_t qwBuildAndSendReadyRsp(const SMsgCb *pMsgCb, SQWConnInfo *pConn, int32_t
.
code
=
code
,
};
tmsgSendRsp
(
pMsgCb
,
&
rpcRsp
);
tmsgSendRsp
(
&
rpcRsp
);
return
TSDB_CODE_SUCCESS
;
}
int32_t
qwBuildAndSendHbRsp
(
const
SMsgCb
*
pMsgCb
,
SQWConnInfo
*
pConn
,
SSchedulerHbRsp
*
pStatus
,
int32_t
code
)
{
int32_t
qwBuildAndSendHbRsp
(
SQWConnInfo
*
pConn
,
SSchedulerHbRsp
*
pStatus
,
int32_t
code
)
{
int32_t
contLen
=
tSerializeSSchedulerHbRsp
(
NULL
,
0
,
pStatus
);
void
*
pRsp
=
rpcMallocCont
(
contLen
);
tSerializeSSchedulerHbRsp
(
pRsp
,
contLen
,
pStatus
);
...
...
@@ -99,12 +99,12 @@ int32_t qwBuildAndSendHbRsp(const SMsgCb *pMsgCb, SQWConnInfo *pConn, SScheduler
.
code
=
code
,
};
tmsgSendRsp
(
pMsgCb
,
&
rpcRsp
);
tmsgSendRsp
(
&
rpcRsp
);
return
TSDB_CODE_SUCCESS
;
}
int32_t
qwBuildAndSendFetchRsp
(
const
SMsgCb
*
pMsgCb
,
SQWConnInfo
*
pConn
,
SRetrieveTableRsp
*
pRsp
,
int32_t
dataLength
,
int32_t
code
)
{
int32_t
qwBuildAndSendFetchRsp
(
SQWConnInfo
*
pConn
,
SRetrieveTableRsp
*
pRsp
,
int32_t
dataLength
,
int32_t
code
)
{
if
(
NULL
==
pRsp
)
{
pRsp
=
(
SRetrieveTableRsp
*
)
rpcMallocCont
(
sizeof
(
SRetrieveTableRsp
));
memset
(
pRsp
,
0
,
sizeof
(
SRetrieveTableRsp
));
...
...
@@ -120,12 +120,12 @@ int32_t qwBuildAndSendFetchRsp(const SMsgCb *pMsgCb, SQWConnInfo *pConn, SRetrie
.
code
=
code
,
};
tmsgSendRsp
(
pMsgCb
,
&
rpcRsp
);
tmsgSendRsp
(
&
rpcRsp
);
return
TSDB_CODE_SUCCESS
;
}
int32_t
qwBuildAndSendCancelRsp
(
const
SMsgCb
*
pMsgCb
,
SQWConnInfo
*
pConn
,
int32_t
code
)
{
int32_t
qwBuildAndSendCancelRsp
(
SQWConnInfo
*
pConn
,
int32_t
code
)
{
STaskCancelRsp
*
pRsp
=
(
STaskCancelRsp
*
)
rpcMallocCont
(
sizeof
(
STaskCancelRsp
));
pRsp
->
code
=
code
;
...
...
@@ -138,11 +138,11 @@ int32_t qwBuildAndSendCancelRsp(const SMsgCb *pMsgCb, SQWConnInfo *pConn, int32_
.
code
=
code
,
};
tmsgSendRsp
(
pMsgCb
,
&
rpcRsp
);
tmsgSendRsp
(
&
rpcRsp
);
return
TSDB_CODE_SUCCESS
;
}
int32_t
qwBuildAndSendDropRsp
(
const
SMsgCb
*
pMsgCb
,
SQWConnInfo
*
pConn
,
int32_t
code
)
{
int32_t
qwBuildAndSendDropRsp
(
SQWConnInfo
*
pConn
,
int32_t
code
)
{
STaskDropRsp
*
pRsp
=
(
STaskDropRsp
*
)
rpcMallocCont
(
sizeof
(
STaskDropRsp
));
pRsp
->
code
=
code
;
...
...
@@ -155,11 +155,11 @@ int32_t qwBuildAndSendDropRsp(const SMsgCb *pMsgCb, SQWConnInfo *pConn, int32_t
.
code
=
code
,
};
tmsgSendRsp
(
pMsgCb
,
&
rpcRsp
);
tmsgSendRsp
(
&
rpcRsp
);
return
TSDB_CODE_SUCCESS
;
}
int32_t
qwBuildAndSendShowRsp
(
const
SMsgCb
*
pMsgCb
,
SRpcMsg
*
pMsg
,
int32_t
code
)
{
int32_t
qwBuildAndSendShowRsp
(
SRpcMsg
*
pMsg
,
int32_t
code
)
{
int32_t
numOfCols
=
6
;
SVShowTablesRsp
showRsp
=
{
0
};
...
...
@@ -210,11 +210,11 @@ int32_t qwBuildAndSendShowRsp(const SMsgCb *pMsgCb, SRpcMsg *pMsg, int32_t code)
.
code
=
code
,
};
tmsgSendRsp
(
pMsgCb
,
&
rpcMsg
);
tmsgSendRsp
(
&
rpcMsg
);
return
TSDB_CODE_SUCCESS
;
}
int32_t
qwBuildAndSendShowFetchRsp
(
const
SMsgCb
*
pMsgCb
,
SRpcMsg
*
pMsg
,
SVShowTablesFetchReq
*
pFetchReq
)
{
int32_t
qwBuildAndSendShowFetchRsp
(
SRpcMsg
*
pMsg
,
SVShowTablesFetchReq
*
pFetchReq
)
{
SVShowTablesFetchRsp
*
pRsp
=
(
SVShowTablesFetchRsp
*
)
rpcMallocCont
(
sizeof
(
SVShowTablesFetchRsp
));
int32_t
handle
=
htonl
(
pFetchReq
->
id
);
...
...
@@ -227,7 +227,7 @@ int32_t qwBuildAndSendShowFetchRsp(const SMsgCb *pMsgCb, SRpcMsg *pMsg, SVShowTa
.
code
=
0
,
};
tmsgSendRsp
(
pMsgCb
,
&
rpcMsg
);
tmsgSendRsp
(
&
rpcMsg
);
return
TSDB_CODE_SUCCESS
;
}
...
...
@@ -498,7 +498,7 @@ int32_t qWorkerProcessCancelMsg(void *node, void *qWorkerMgmt, SRpcMsg *pMsg) {
_return:
QW_ERR_RET
(
qwBuildAndSendCancelRsp
(
&
mgmt
->
msgCb
,
&
qwMsg
.
connInfo
,
code
));
QW_ERR_RET
(
qwBuildAndSendCancelRsp
(
&
qwMsg
.
connInfo
,
code
));
QW_SCH_TASK_DLOG
(
"cancel rsp send, handle:%p, code:%x - %s"
,
qwMsg
.
connInfo
.
handle
,
code
,
tstrerror
(
code
));
return
TSDB_CODE_SUCCESS
;
...
...
@@ -584,11 +584,9 @@ int32_t qWorkerProcessShowMsg(void *node, void *qWorkerMgmt, SRpcMsg *pMsg) {
return
TSDB_CODE_QRY_INVALID_INPUT
;
}
SQWorkerMgmt
*
pMgmt
=
qWorkerMgmt
;
int32_t
code
=
0
;
SVShowTablesReq
*
pReq
=
pMsg
->
pCont
;
QW_RET
(
qwBuildAndSendShowRsp
(
&
pMgmt
->
msgCb
,
pMsg
,
code
));
QW_RET
(
qwBuildAndSendShowRsp
(
pMsg
,
code
));
}
int32_t
qWorkerProcessShowFetchMsg
(
void
*
node
,
void
*
qWorkerMgmt
,
SRpcMsg
*
pMsg
)
{
...
...
@@ -596,8 +594,6 @@ int32_t qWorkerProcessShowFetchMsg(void *node, void *qWorkerMgmt, SRpcMsg *pMsg)
return
TSDB_CODE_QRY_INVALID_INPUT
;
}
SQWorkerMgmt
*
pMgmt
=
qWorkerMgmt
;
SVShowTablesFetchReq
*
pFetchReq
=
pMsg
->
pCont
;
QW_RET
(
qwBuildAndSendShowFetchRsp
(
&
pMgmt
->
msgCb
,
pMsg
,
pFetchReq
));
QW_RET
(
qwBuildAndSendShowFetchRsp
(
pMsg
,
pFetchReq
));
}
source/libs/scalar/src/sclfunc.c
浏览文件 @
5b2d664d
#include "sclfunc.h"
#include <common/tdatablock.h>
#include "function.h"
#include "scalar.h"
#include "tdatablock.h"
#include "sclInt.h"
#include "sclvector.h"
static
void
assignBasicParaInfo
(
struct
SScalarParam
*
dst
,
const
struct
SScalarParam
*
src
)
{
// dst->type = src->type;
// dst->bytes = src->bytes;
// dst->num = src->num;
}
/** Math functions **/
int32_t
absFunction
(
SScalarParam
*
pInput
,
int32_t
inputNum
,
SScalarParam
*
pOutput
)
{
SColumnInfoData
*
pInputData
=
pInput
->
columnData
;
...
...
@@ -107,114 +102,62 @@ int32_t absFunction(SScalarParam *pInput, int32_t inputNum, SScalarParam *pOutpu
return
TSDB_CODE_SUCCESS
;
}
int32_t
logFunction
(
SScalarParam
*
pInput
,
int32_t
inputNum
,
SScalarParam
*
pOutput
)
{
#if 0
if (inputNum != 2 || !IS_NUMERIC_TYPE(pInput[0].type) || !IS_NUMERIC_TYPE(pInput[1].type)) {
return TSDB_CODE_FAILED;
}
char **input = NULL, *output = NULL;
bool hasNullInput = false;
input = taosMemoryCalloc(inputNum, sizeof(char *));
for (int32_t i = 0; i < pOutput->num; ++i) {
for (int32_t j = 0; j < inputNum; ++j) {
if (pInput[j].num == 1) {
input[j] = pInput[j].data;
} else {
input[j] = pInput[j].data + i * pInput[j].bytes;
}
if (isNull(input[j], pInput[j].type)) {
hasNullInput = true;
break;
}
}
output = pOutput->data + i * pOutput->bytes;
if (hasNullInput) {
setNull(output, pOutput->type, pOutput->bytes);
continue;
}
double base;
GET_TYPED_DATA(base, double, pInput[1].type, input[1]);
double v;
GET_TYPED_DATA(v, double, pInput[0].type, input[0]);
double result = log(v) / log(base);
SET_TYPED_DATA(output, pOutput->type, result);
}
taosMemoryFree(input);
#endif
typedef
float
(
*
_float_fn
)(
float
);
typedef
double
(
*
_double_fn
)(
double
);
typedef
double
(
*
_double_fn_2
)(
double
,
double
);
return
TSDB_CODE_SUCCESS
;
double
tlog
(
double
v
,
double
base
)
{
return
log
(
v
)
/
log
(
base
);
}
int32_t
powFunction
(
SScalarParam
*
pInput
,
int32_t
inputNum
,
SScalarParam
*
pOutput
)
{
#if 0
if (inputNum !=
2 || !IS_NUMERIC_TYPE(pInput[0].type) || !IS_NUMERIC_TYPE(pInput[1].
type)) {
int32_t
doScalarFunctionUnique
(
SScalarParam
*
pInput
,
int32_t
inputNum
,
SScalarParam
*
pOutput
,
_double_fn
valFn
)
{
int32_t
type
=
GET_PARAM_TYPE
(
pInput
);
if
(
inputNum
!=
1
||
!
IS_NUMERIC_TYPE
(
type
))
{
return
TSDB_CODE_FAILED
;
}
pOutput->type = TSDB_DATA_TYPE_DOUBLE;
pOutput->bytes = tDataTypes[TSDB_DATA_TYPE_DOUBLE].bytes;
char **input = NULL, *output = NULL;
bool hasNullInput = false;
input = taosMemoryCalloc(inputNum, sizeof(char *));
for (int32_t i = 0; i < pOutput->num; ++i) {
for (int32_t j = 0; j < inputNum; ++j) {
if (pInput[j].num == 1) {
input[j] = pInput[j].data;
} else {
input[j] = pInput[j].data + i * pInput[j].bytes;
}
if (isNull(input[j], pInput[j].type)) {
hasNullInput = true;
break;
}
}
output = pOutput->data + i * pOutput->bytes;
SColumnInfoData
*
pInputData
=
pInput
->
columnData
;
SColumnInfoData
*
pOutputData
=
pOutput
->
columnData
;
_getDoubleValue_fn_t
getValueFn
=
getVectorDoubleValueFn
(
type
);
double
*
out
=
(
double
*
)
pOutputData
->
pData
;
if (hasNullInput) {
setNull(output, pOutput->type, pOutput->bytes);
for
(
int32_t
i
=
0
;
i
<
pInput
->
numOfRows
;
++
i
)
{
if
(
colDataIsNull_f
(
pInputData
->
nullbitmap
,
i
))
{
colDataSetNull_f
(
pOutputData
->
nullbitmap
,
i
);
continue
;
}
double base;
GET_TYPED_DATA(base, double, pInput[1].type, input[1]);
double v;
GET_TYPED_DATA(v, double, pInput[0].type, input[0]);
double result = pow(v, base);
SET_TYPED_DATA(output, pOutput->type, result);
out
[
i
]
=
valFn
(
getValueFn
(
pInputData
->
pData
,
i
));
}
taosMemoryFree(input);
#endif
pOutput
->
numOfRows
=
pInput
->
numOfRows
;
return
TSDB_CODE_SUCCESS
;
}
typedef
float
(
*
_float_fn
)(
float
);
typedef
double
(
*
_double_fn
)(
double
);
int32_t
doScalarFunctionUnique
(
SScalarParam
*
pInput
,
int32_t
inputNum
,
SScalarParam
*
pOutput
,
_double_fn
valFn
)
{
int32_t
type
=
GET_PARAM_TYPE
(
pInput
);
if
(
inputNum
!=
1
||
!
IS_NUMERIC_TYPE
(
type
))
{
int32_t
doScalarFunctionUnique2
(
SScalarParam
*
pInput
,
int32_t
inputNum
,
SScalarParam
*
pOutput
,
_double_fn_2
valFn
)
{
if
(
inputNum
!=
2
||
!
IS_NUMERIC_TYPE
(
GET_PARAM_TYPE
(
&
pInput
[
0
]))
||
!
IS_NUMERIC_TYPE
(
GET_PARAM_TYPE
(
&
pInput
[
1
])))
{
return
TSDB_CODE_FAILED
;
}
SColumnInfoData
*
pInputData
=
pInput
->
columnData
;
SColumnInfoData
*
pInputData
[
2
]
;
SColumnInfoData
*
pOutputData
=
pOutput
->
columnData
;
_getDoubleValue_fn_t
getValueFn
[
2
];
_getDoubleValue_fn_t
getValueFn
=
getVectorDoubleValueFn
(
type
);
for
(
int32_t
i
=
0
;
i
<
inputNum
;
++
i
)
{
pInputData
[
i
]
=
pInput
[
i
].
columnData
;
getValueFn
[
i
]
=
getVectorDoubleValueFn
(
GET_PARAM_TYPE
(
&
pInput
[
i
]));
}
double
*
out
=
(
double
*
)
pOutputData
->
pData
;
for
(
int32_t
i
=
0
;
i
<
pInput
->
numOfRows
;
++
i
)
{
if
(
colDataIsNull_f
(
pInputData
->
nullbitmap
,
i
))
{
if
(
colDataIsNull_f
(
pInputData
[
0
]
->
nullbitmap
,
i
)
||
colDataIsNull_f
(
pInputData
[
1
]
->
nullbitmap
,
0
))
{
colDataSetNull_f
(
pOutputData
->
nullbitmap
,
i
);
continue
;
}
out
[
i
]
=
valFn
(
getValueFn
(
pInputData
->
pData
,
i
));
out
[
i
]
=
valFn
(
getValueFn
[
0
](
pInputData
[
0
]
->
pData
,
i
),
getValueFn
[
1
](
pInputData
[
1
]
->
pData
,
0
));
}
pOutput
->
numOfRows
=
pInput
->
numOfRows
;
...
...
@@ -292,6 +235,14 @@ int32_t acosFunction(SScalarParam *pInput, int32_t inputNum, SScalarParam *pOutp
return
doScalarFunctionUnique
(
pInput
,
inputNum
,
pOutput
,
acos
);
}
int32_t
powFunction
(
SScalarParam
*
pInput
,
int32_t
inputNum
,
SScalarParam
*
pOutput
)
{
return
doScalarFunctionUnique2
(
pInput
,
inputNum
,
pOutput
,
pow
);
}
int32_t
logFunction
(
SScalarParam
*
pInput
,
int32_t
inputNum
,
SScalarParam
*
pOutput
)
{
return
doScalarFunctionUnique2
(
pInput
,
inputNum
,
pOutput
,
tlog
);
}
int32_t
sqrtFunction
(
SScalarParam
*
pInput
,
int32_t
inputNum
,
SScalarParam
*
pOutput
)
{
return
doScalarFunctionUnique
(
pInput
,
inputNum
,
pOutput
,
sqrt
);
}
...
...
source/libs/scalar/test/scalar/scalarTests.cpp
浏览文件 @
5b2d664d
...
...
@@ -2833,11 +2833,11 @@ TEST(ScalarFunctionTest, logFunction_column) {
int32_t
rowNum
=
3
;
int32_t
type
;
int32_t
otype
=
TSDB_DATA_TYPE_DOUBLE
;
double
result
[]
=
{
2.0
,
4.0
,
3
.0
};
double
result
[]
=
{
2.0
,
3.0
,
4
.0
};
pInput
=
(
SScalarParam
*
)
taosMemoryCalloc
(
2
,
sizeof
(
SScalarParam
));
//TINYINT
int8_t
val_tinyint
[
2
][
3
]
=
{{
25
,
81
,
64
},
{
5
,
3
,
4
}};
int8_t
val_tinyint
[
2
][
3
]
=
{{
9
,
27
,
81
},
{
3
,
3
,
3
}};
type
=
TSDB_DATA_TYPE_TINYINT
;
for
(
int32_t
i
=
0
;
i
<
2
;
++
i
)
{
scltMakeDataBlock
(
&
input
[
i
],
type
,
0
,
rowNum
,
false
);
...
...
@@ -2863,7 +2863,7 @@ TEST(ScalarFunctionTest, logFunction_column) {
scltDestroyDataBlock
(
pOutput
);
//FLOAT
float
val_float
[
2
][
3
]
=
{{
25.0
,
81.0
,
64.0
},
{
5.0
,
3.0
,
4
.0
}};
float
val_float
[
2
][
3
]
=
{{
9.0
,
27.0
,
81.0
},
{
3.0
,
3.0
,
3
.0
}};
type
=
TSDB_DATA_TYPE_FLOAT
;
for
(
int32_t
i
=
0
;
i
<
2
;
++
i
)
{
scltMakeDataBlock
(
&
input
[
i
],
type
,
0
,
rowNum
,
false
);
...
...
@@ -2888,8 +2888,8 @@ TEST(ScalarFunctionTest, logFunction_column) {
scltDestroyDataBlock
(
pOutput
);
//TINYINT AND FLOAT
int8_t
param0
[]
=
{
25
,
81
,
64
};
float
param1
[]
=
{
5.0
,
3.0
,
4
.0
};
int8_t
param0
[]
=
{
9
,
27
,
81
};
float
param1
[]
=
{
3.0
,
3.0
,
3
.0
};
scltMakeDataBlock
(
&
input
[
0
],
TSDB_DATA_TYPE_TINYINT
,
0
,
rowNum
,
false
);
pInput
[
0
]
=
*
input
[
0
];
for
(
int32_t
i
=
0
;
i
<
rowNum
;
++
i
)
{
...
...
@@ -3003,17 +3003,17 @@ TEST(ScalarFunctionTest, powFunction_column) {
int32_t
rowNum
=
3
;
int32_t
type
;
int32_t
otype
=
TSDB_DATA_TYPE_DOUBLE
;
double
result
[]
=
{
32.0
,
27.0
,
16
.0
};
double
result
[]
=
{
8.0
,
27.0
,
64
.0
};
pInput
=
(
SScalarParam
*
)
taosMemoryCalloc
(
2
,
sizeof
(
SScalarParam
));
//TINYINT
int8_t
val_tinyint
[
2
][
3
]
=
{{
2
,
3
,
4
},
{
5
,
3
,
2
}};
int8_t
val_tinyint
[
2
][
3
]
=
{{
2
,
3
,
4
},
{
3
,
3
,
3
}};
type
=
TSDB_DATA_TYPE_TINYINT
;
for
(
int32_t
i
=
0
;
i
<
2
;
++
i
)
{
scltMakeDataBlock
(
&
input
[
i
],
type
,
0
,
rowNum
,
false
);
pInput
[
i
]
=
*
input
[
i
];
for
(
int32_t
j
=
0
;
j
<
rowNum
;
++
j
)
{
colDataAppend
(
pInput
[
i
].
columnData
,
i
,
(
const
char
*
)
&
val_tinyint
[
i
][
j
],
false
);
colDataAppend
(
pInput
[
i
].
columnData
,
j
,
(
const
char
*
)
&
val_tinyint
[
i
][
j
],
false
);
}
PRINTF
(
"tiny_int before POW:%d,%d,%d
\n
"
,
*
((
int8_t
*
)
pInput
[
i
].
data
+
0
),
...
...
@@ -3034,7 +3034,7 @@ TEST(ScalarFunctionTest, powFunction_column) {
scltDestroyDataBlock
(
pOutput
);
//FLOAT
float
val_float
[
2
][
3
]
=
{{
2.0
,
3.0
,
4.0
},
{
5.0
,
3.0
,
2
.0
}};
float
val_float
[
2
][
3
]
=
{{
2.0
,
3.0
,
4.0
},
{
3.0
,
3.0
,
3
.0
}};
type
=
TSDB_DATA_TYPE_FLOAT
;
for
(
int32_t
i
=
0
;
i
<
2
;
++
i
)
{
scltMakeDataBlock
(
&
input
[
i
],
type
,
0
,
rowNum
,
false
);
...
...
@@ -3060,7 +3060,7 @@ TEST(ScalarFunctionTest, powFunction_column) {
//TINYINT AND FLOAT
int8_t
param0
[]
=
{
2
,
3
,
4
};
float
param1
[]
=
{
5
.0
,
3.0
,
2.0
};
float
param1
[]
=
{
3
.0
,
3.0
,
2.0
};
scltMakeDataBlock
(
&
input
[
0
],
TSDB_DATA_TYPE_TINYINT
,
0
,
rowNum
,
false
);
pInput
[
0
]
=
*
input
[
0
];
for
(
int32_t
i
=
0
;
i
<
rowNum
;
++
i
)
{
...
...
source/libs/stream/src/tstream.c
浏览文件 @
5b2d664d
...
...
@@ -124,22 +124,23 @@ int32_t streamExecTask(SStreamTask* pTask, SMsgCb* pMsgCb, const void* input, in
}
}
else
if
(
inputType
==
STREAM_DATA_TYPE_SSDATA_BLOCK
)
{
const
SArray
*
blocks
=
(
const
SArray
*
)
input
;
int32_t
sz
=
taosArrayGetSize
(
blocks
);
for
(
int32_t
i
=
0
;
i
<
sz
;
i
++
)
{
SSDataBlock
*
pBlock
=
taosArrayGet
(
blocks
,
i
);
qSetStreamInput
(
exec
,
pBlock
,
inputType
);
while
(
1
)
{
SSDataBlock
*
output
;
uint64_t
ts
;
if
(
qExecTask
(
exec
,
&
output
,
&
ts
)
<
0
)
{
ASSERT
(
false
);
}
if
(
output
==
NULL
)
{
break
;
}
taosArrayPush
(
pRes
,
output
);
/*int32_t sz = taosArrayGetSize(blocks);*/
/*for (int32_t i = 0; i < sz; i++) {*/
/*SSDataBlock* pBlock = taosArrayGet(blocks, i);*/
/*qSetStreamInput(exec, pBlock, inputType);*/
qSetMultiStreamInput
(
exec
,
blocks
->
pData
,
blocks
->
size
,
STREAM_DATA_TYPE_SSDATA_BLOCK
);
while
(
1
)
{
SSDataBlock
*
output
;
uint64_t
ts
;
if
(
qExecTask
(
exec
,
&
output
,
&
ts
)
<
0
)
{
ASSERT
(
false
);
}
if
(
output
==
NULL
)
{
break
;
}
taosArrayPush
(
pRes
,
output
);
}
/*}*/
}
else
{
ASSERT
(
0
);
}
...
...
source/util/src/tprocess.c
浏览文件 @
5b2d664d
...
...
@@ -19,10 +19,6 @@
#include "tlog.h"
#include "tqueue.h"
// todo
#include <sys/shm.h>
#include <sys/wait.h>
#define SHM_DEFAULT_SIZE (20 * 1024 * 1024)
typedef
void
*
(
*
ProcThreadFp
)(
void
*
param
);
...
...
@@ -208,16 +204,11 @@ static void taosProcCleanupQueue(SProcQueue *pQueue) {
}
static
int32_t
taosProcQueuePush
(
SProcQueue
*
pQueue
,
const
char
*
pHead
,
int16_t
rawHeadLen
,
const
char
*
pBody
,
int32_t
rawBodyLen
,
ProcFuncType
f
uncT
ype
)
{
int32_t
rawBodyLen
,
ProcFuncType
f
t
ype
)
{
const
int32_t
headLen
=
CEIL8
(
rawHeadLen
);
const
int32_t
bodyLen
=
CEIL8
(
rawBodyLen
);
const
int32_t
fullLen
=
headLen
+
bodyLen
+
8
;
if
(
headLen
<=
0
||
bodyLen
<=
0
)
{
terrno
=
TSDB_CODE_INVALID_PARA
;
return
-
1
;
}
taosThreadMutexLock
(
pQueue
->
mutex
);
if
(
fullLen
>
pQueue
->
avail
)
{
taosThreadMutexUnlock
(
pQueue
->
mutex
);
...
...
@@ -225,13 +216,14 @@ static int32_t taosProcQueuePush(SProcQueue *pQueue, const char *pHead, int16_t
return
-
1
;
}
const
int32_t
pos
=
pQueue
->
tail
;
if
(
pQueue
->
tail
<
pQueue
->
total
)
{
*
(
int16_t
*
)(
pQueue
->
pBuffer
+
pQueue
->
head
)
=
headLen
;
*
(
int8_t
*
)(
pQueue
->
pBuffer
+
pQueue
->
head
+
2
)
=
(
int8_t
)
funcT
ype
;
*
(
int32_t
*
)(
pQueue
->
pBuffer
+
pQueue
->
head
+
4
)
=
bodyLen
;
*
(
int16_t
*
)(
pQueue
->
pBuffer
+
pQueue
->
tail
)
=
headLen
;
*
(
int8_t
*
)(
pQueue
->
pBuffer
+
pQueue
->
tail
+
2
)
=
(
int8_t
)
ft
ype
;
*
(
int32_t
*
)(
pQueue
->
pBuffer
+
pQueue
->
tail
+
4
)
=
bodyLen
;
}
else
{
*
(
int16_t
*
)(
pQueue
->
pBuffer
)
=
headLen
;
*
(
int8_t
*
)(
pQueue
->
pBuffer
+
pQueue
->
head
+
2
)
=
(
int8_t
)
funcT
ype
;
*
(
int8_t
*
)(
pQueue
->
pBuffer
+
2
)
=
(
int8_t
)
ft
ype
;
*
(
int32_t
*
)(
pQueue
->
pBuffer
+
4
)
=
bodyLen
;
}
...
...
@@ -250,19 +242,19 @@ static int32_t taosProcQueuePush(SProcQueue *pQueue, const char *pHead, int16_t
memcpy
(
pQueue
->
pBuffer
+
headLen
,
pBody
,
rawBodyLen
);
pQueue
->
tail
=
headLen
+
bodyLen
;
}
else
if
(
remain
<
8
+
headLen
)
{
memcpy
(
pQueue
->
pBuffer
+
pQueue
->
head
+
8
,
pHead
,
remain
-
8
);
memcpy
(
pQueue
->
pBuffer
+
pQueue
->
tail
+
8
,
pHead
,
remain
-
8
);
memcpy
(
pQueue
->
pBuffer
,
pHead
+
remain
-
8
,
rawHeadLen
-
(
remain
-
8
));
memcpy
(
pQueue
->
pBuffer
+
headLen
-
(
remain
-
8
),
pBody
,
rawBodyLen
);
pQueue
->
tail
=
headLen
-
(
remain
-
8
)
+
bodyLen
;
}
else
if
(
remain
<
8
+
bodyLen
)
{
memcpy
(
pQueue
->
pBuffer
+
pQueue
->
head
+
8
,
pHead
,
rawHeadLen
);
memcpy
(
pQueue
->
pBuffer
+
pQueue
->
head
+
8
+
headLen
,
pBody
,
remain
-
8
-
headLen
);
}
else
if
(
remain
<
8
+
headLen
+
bodyLen
)
{
memcpy
(
pQueue
->
pBuffer
+
pQueue
->
tail
+
8
,
pHead
,
rawHeadLen
);
memcpy
(
pQueue
->
pBuffer
+
pQueue
->
tail
+
8
+
headLen
,
pBody
,
remain
-
8
-
headLen
);
memcpy
(
pQueue
->
pBuffer
,
pBody
+
remain
-
8
-
headLen
,
rawBodyLen
-
(
remain
-
8
-
headLen
));
pQueue
->
tail
=
bodyLen
-
(
remain
-
8
-
headLen
);
}
else
{
memcpy
(
pQueue
->
pBuffer
+
pQueue
->
head
+
8
,
pHead
,
rawHeadLen
);
memcpy
(
pQueue
->
pBuffer
+
pQueue
->
head
+
headLen
+
8
,
pBody
,
rawBodyLen
);
pQueue
->
tail
=
pQueue
->
head
+
headLen
+
bodyLen
+
8
;
memcpy
(
pQueue
->
pBuffer
+
pQueue
->
tail
+
8
,
pHead
,
rawHeadLen
);
memcpy
(
pQueue
->
pBuffer
+
pQueue
->
tail
+
headLen
+
8
,
pBody
,
rawBodyLen
);
pQueue
->
tail
=
pQueue
->
tail
+
headLen
+
bodyLen
+
8
;
}
}
...
...
@@ -271,8 +263,8 @@ static int32_t taosProcQueuePush(SProcQueue *pQueue, const char *pHead, int16_t
taosThreadMutexUnlock
(
pQueue
->
mutex
);
tsem_post
(
&
pQueue
->
sem
);
uTrace
(
"proc:%s, push msg
to queue:%p remains:%d, head:%d:%p body:%d:%p ftype:%d"
,
pQueue
->
name
,
pQueue
,
pQueue
->
items
,
headLen
,
pHead
,
bodyLen
,
pBody
,
funcType
);
uTrace
(
"proc:%s, push msg
at pos:%d ftype:%d remain:%d, head:%d %p body:%d %p"
,
pQueue
->
name
,
pos
,
ftype
,
pQueue
->
items
,
headLen
,
pHead
,
bodyLen
,
pBody
);
return
0
;
}
...
...
@@ -312,6 +304,7 @@ static int32_t taosProcQueuePop(SProcQueue *pQueue, void **ppHead, int16_t *pHea
return
-
1
;
}
const
int32_t
pos
=
pQueue
->
head
;
if
(
pQueue
->
head
<
pQueue
->
tail
)
{
memcpy
(
pHead
,
pQueue
->
pBuffer
+
pQueue
->
head
+
8
,
headLen
);
memcpy
(
pBody
,
pQueue
->
pBuffer
+
pQueue
->
head
+
8
+
headLen
,
bodyLen
);
...
...
@@ -331,7 +324,7 @@ static int32_t taosProcQueuePop(SProcQueue *pQueue, void **ppHead, int16_t *pHea
memcpy
(
pHead
+
remain
-
8
,
pQueue
->
pBuffer
,
headLen
-
(
remain
-
8
));
memcpy
(
pBody
,
pQueue
->
pBuffer
+
headLen
-
(
remain
-
8
),
bodyLen
);
pQueue
->
head
=
headLen
-
(
remain
-
8
)
+
bodyLen
;
}
else
if
(
remain
<
8
+
bodyLen
)
{
}
else
if
(
remain
<
8
+
headLen
+
bodyLen
)
{
memcpy
(
pHead
,
pQueue
->
pBuffer
+
pQueue
->
head
+
8
,
headLen
);
memcpy
(
pBody
,
pQueue
->
pBuffer
+
pQueue
->
head
+
8
+
headLen
,
remain
-
8
-
headLen
);
memcpy
(
pBody
+
remain
-
8
-
headLen
,
pQueue
->
pBuffer
,
bodyLen
-
(
remain
-
8
-
headLen
));
...
...
@@ -353,8 +346,8 @@ static int32_t taosProcQueuePop(SProcQueue *pQueue, void **ppHead, int16_t *pHea
*
pBodyLen
=
bodyLen
;
*
pFuncType
=
(
ProcFuncType
)
ftype
;
uTrace
(
"proc:%s, pop msg
from queue:%p remains:%d, head:%d:%p body:%d:%p ftype:%d"
,
pQueue
->
name
,
pQueue
,
pQueue
->
items
,
headLen
,
pHead
,
bodyLen
,
pBody
,
ftype
);
uTrace
(
"proc:%s, pop msg
at pos:%d ftype:%d remain:%d, head:%d %p body:%d %p"
,
pQueue
->
name
,
pos
,
ftype
,
pQueue
->
items
,
headLen
,
pHead
,
bodyLen
,
pBody
);
return
1
;
}
...
...
@@ -472,11 +465,11 @@ void taosProcCleanup(SProcObj *pProc) {
}
int32_t
taosProcPutToChildQ
(
SProcObj
*
pProc
,
const
void
*
pHead
,
int16_t
headLen
,
const
void
*
pBody
,
int32_t
bodyLen
,
ProcFuncType
f
uncT
ype
)
{
return
taosProcQueuePush
(
pProc
->
pChildQueue
,
pHead
,
headLen
,
pBody
,
bodyLen
,
f
uncT
ype
);
ProcFuncType
f
t
ype
)
{
return
taosProcQueuePush
(
pProc
->
pChildQueue
,
pHead
,
headLen
,
pBody
,
bodyLen
,
f
t
ype
);
}
int32_t
taosProcPutToParentQ
(
SProcObj
*
pProc
,
const
void
*
pHead
,
int16_t
headLen
,
const
void
*
pBody
,
int32_t
bodyLen
,
ProcFuncType
f
uncT
ype
)
{
return
taosProcQueuePush
(
pProc
->
pParentQueue
,
pHead
,
headLen
,
pBody
,
bodyLen
,
f
uncT
ype
);
ProcFuncType
f
t
ype
)
{
return
taosProcQueuePush
(
pProc
->
pParentQueue
,
pHead
,
headLen
,
pBody
,
bodyLen
,
f
t
ype
);
}
tests/script/jenkins/basic.txt
浏览文件 @
5b2d664d
...
...
@@ -37,6 +37,6 @@
# ---- tmq
./test.sh -f tsim/tmq/basic.sim
#
./test.sh -f tsim/tmq/basic1.sim
./test.sh -f tsim/tmq/basic1.sim
#======================b1-end===============
tests/script/sh/deploy.sh
浏览文件 @
5b2d664d
...
...
@@ -124,7 +124,7 @@ echo "firstEp ${HOSTNAME}:7100" >> $TAOS_CFG
echo
"secondEp
${
HOSTNAME
}
:7200"
>>
$TAOS_CFG
echo
"fqdn
${
HOSTNAME
}
"
>>
$TAOS_CFG
echo
"serverPort
${
NODE
}
"
>>
$TAOS_CFG
echo
"supportVnodes 128"
>>
$TAOS_CFG
echo
"supportVnodes 128"
>>
$TAOS_CFG
echo
"dataDir
$DATA_DIR
"
>>
$TAOS_CFG
echo
"logDir
$LOG_DIR
"
>>
$TAOS_CFG
echo
"debugFlag 0"
>>
$TAOS_CFG
...
...
@@ -133,20 +133,17 @@ echo "dDebugFlag 143" >> $TAOS_CFG
echo
"vDebugFlag 143"
>>
$TAOS_CFG
echo
"tsdbDebugFlag 143"
>>
$TAOS_CFG
echo
"cDebugFlag 143"
>>
$TAOS_CFG
echo
"jni
d
ebugFlag 143"
>>
$TAOS_CFG
echo
"q
d
ebugFlag 143"
>>
$TAOS_CFG
echo
"jni
D
ebugFlag 143"
>>
$TAOS_CFG
echo
"q
D
ebugFlag 143"
>>
$TAOS_CFG
echo
"rpcDebugFlag 143"
>>
$TAOS_CFG
echo
"tmrDebugFlag 131"
>>
$TAOS_CFG
echo
"udebugFlag 143"
>>
$TAOS_CFG
echo
"sdebugFlag 143"
>>
$TAOS_CFG
echo
"wdebugFlag 143"
>>
$TAOS_CFG
echo
"slaveQuery 0"
>>
$TAOS_CFG
echo
"numOfThreadsPerCore 2.0"
>>
$TAOS_CFG
echo
"defaultPass taosdata"
>>
$TAOS_CFG
echo
"uDebugFlag 143"
>>
$TAOS_CFG
echo
"sDebugFlag 143"
>>
$TAOS_CFG
echo
"wDebugFlag 143"
>>
$TAOS_CFG
echo
"numOfLogLines 20000000"
>>
$TAOS_CFG
echo
"statusInterval 1"
>>
$TAOS_CFG
echo
"asyncLog 0"
>>
$TAOS_CFG
echo
"locale en_US.UTF-8"
>>
$TAOS_CFG
echo
"fsync 0"
>>
$TAOS_CFG
echo
"telemetryReporting 0"
>>
$TAOS_CFG
echo
"multiProcess 0"
>>
$TAOS_CFG
echo
" "
>>
$TAOS_CFG
tests/script/sh/exec.sh
浏览文件 @
5b2d664d
...
...
@@ -74,7 +74,7 @@ BUILD_DIR=$TAOS_DIR/$BIN_DIR
SIM_DIR
=
$TAOS_DIR
/sim
NODE_DIR
=
$SIM_DIR
/
$NODE_NAME
EXE_DIR
=
$BUILD_DIR
/source/dnode/mgmt
/main
EXE_DIR
=
$BUILD_DIR
/source/dnode/mgmt
CFG_DIR
=
$NODE_DIR
/cfg
LOG_DIR
=
$NODE_DIR
/log
DATA_DIR
=
$NODE_DIR
/data
...
...
tests/script/tsim/parser/groupby-basic.sim
浏览文件 @
5b2d664d
...
...
@@ -107,80 +107,54 @@ print rows: $rows
print $data00 $data01 $data02 $data03
print $data10 $data11 $data12 $data13
print $data20 $data21 $data22 $data23
if $row != 20 then
return -1
endi
if $data00 != 100 then
return -1
print $data80 $data81 $data82 $data83
print $data90 $data91 $data92 $data93
if $rows != 10 then
return -1
endi
#if $data00 != 10 then
# return -1
#endi
if $data01 != 0 then
return -1
endi
if $data10 != 100 then
#if $data10 != 10 then
# return -1
#endi
if $data11 != 1 then
return -1
endi
if $data11 != 1 then
#if $data90 != 10 then
# return -1
#endi
if $data91 != 9 then
return -1
endi
sql select first(ts),c1 from group_tb0 where c1<20 group by c1;
if $row != 20 then
sql select first(ts),c1 from group_tb0 group by c1;
print rows: $rows
print $data00 $data01 $data02 $data03
print $data10 $data11 $data12 $data13
print $data20 $data21 $data22 $data23
print $data80 $data81 $data82 $data83
print $data90 $data91 $data92 $data93
if $row != 10 then
return -1
endi
if $data00 != @
70-01-01 08:01:4
0.000@ then
if $data00 != @
2022-01-01 00:00:0
0.000@ then
return -1
endi
if $data01 != 0 then
return -1
endi
if $data90 != @70-01-01 08:01:40.009@ then
if $data90 != @2022-01-01 00:00:00.009@ then
return -1
endi
if $data91 != 9 then
return -1
endi
sql select first(ts), ts, c1 from group_tb0 where c1 < 20 group by c1;
print $row
if $row != 20 then
return -1
endi
if $data00 != $data01 then
return -1
endi
if $data10 != $data11 then
return -1
endi
if $data20 != $data21 then
return -1
endi
if $data90 != $data91 then
return -1
endi
if $data02 != 0 then
return -1
endi
if $data12 != 1 then
return -1
endi
if $data92 != 9 then
return -1
endi
sql select sum(c1), c1, avg(c1), min(c1), max(c2) from group_tb0 where c1 < 20 group by c1;
if $row != 20 then
...
...
tests/script/tsim/testCaseSuite.sim
浏览文件 @
5b2d664d
...
...
@@ -26,4 +26,4 @@ run tsim/show/basic.sim
run tsim/table/basic1.sim
run tsim/tmq/basic.sim
#
run tsim/tmq/basic1.sim
run tsim/tmq/basic1.sim
tests/script/tsim/tmq/basic1.sim
浏览文件 @
5b2d664d
...
...
@@ -3,9 +3,10 @@
# vgroups=1, multi topics for one consumer, include: columns from stb/ctb/ntb, * from stb/ctb/ntb, Scalar function from stb/ctb/ntb
# vgroups=4, one topic for one consumer, include: columns from stb/ctb/ntb, * from stb/ctb/ntb, Scalar function from stb/ctb/ntb
# vgroups=4, multi topics for one consumer, include: columns from stb/ctb/ntb, * from stb/ctb/ntb, Scalar function from stb/ctb/ntb
# notes1: Scalar function: ABS/ACOS/ASIN/ATAN/CEIL/COS/FLOOR/LOG/POW/ROUND/SIN/SQRT/TAN
# The above use cases are combined with where filter conditions, such as: where ts > "2017-08-12 18:25:58.128Z" and sin(a) > 0.5;
#
# notes: not support aggregate functions(such as sum/count/min/max) and time-windows(interval).
# notes
2
: not support aggregate functions(such as sum/count/min/max) and time-windows(interval).
#
system sh/stop_dnodes.sh
...
...
@@ -135,42 +136,42 @@ print inserted totalMsgCnt: $totalMsgCnt
print cmd===> system_content ../../debug/tests/test/c/tmq_sim -c ../../sim/tsim/cfg -d $dbNamme -t "topic_stb_column" -k "group.id:tg2"
system_content ../../debug/tests/test/c/tmq_sim -c ../../sim/tsim/cfg -d $dbNamme -t "topic_stb_column" -k "group.id:tg2"
print cmd result----> $system_content
if $system_content != @{consume success: 20}@ then
if $system_content != @{consume success: 20
, 0
}@ then
return -1
endi
#print cmd===> system_content ../../debug/tests/test/c/tmq_sim -c ../../sim/tsim/cfg -d $dbNamme -t "topic_stb_all" -k "group.id:tg2"
#system_content ../../debug/tests/test/c/tmq_sim -c ../../sim/tsim/cfg -d $dbNamme -t "topic_stb_all" -k "group.id:tg2"
#print cmd result----> $system_content
#if $system_content != @{consume success: 20}@ then
#if $system_content != @{consume success: 20
, 0
}@ then
# return -1
#endi
print cmd===> system_content ../../debug/tests/test/c/tmq_sim -c ../../sim/tsim/cfg -d $dbNamme -t "topic_ctb_column" -k "group.id:tg2"
system_content ../../debug/tests/test/c/tmq_sim -c ../../sim/tsim/cfg -d $dbNamme -t "topic_ctb_column" -k "group.id:tg2"
print cmd result----> $system_content
if $system_content != @{consume success:
2
0}@ then
if $system_content != @{consume success:
10,
0}@ then
return -1
endi
print cmd===> system_content ../../debug/tests/test/c/tmq_sim -c ../../sim/tsim/cfg -d $dbNamme -t "topic_ctb_all" -k "group.id:tg2"
system_content ../../debug/tests/test/c/tmq_sim -c ../../sim/tsim/cfg -d $dbNamme -t "topic_ctb_all" -k "group.id:tg2"
print cmd result----> $system_content
if $system_content != @{consume success:
2
0}@ then
if $system_content != @{consume success:
10,
0}@ then
return -1
endi
print cmd===> system_content ../../debug/tests/test/c/tmq_sim -c ../../sim/tsim/cfg -d $dbNamme -t "topic_ntb_column" -k "group.id:tg2"
system_content ../../debug/tests/test/c/tmq_sim -c ../../sim/tsim/cfg -d $dbNamme -t "topic_ntb_column" -k "group.id:tg2"
print cmd result----> $system_content
if $system_content != @{consume success: 20}@ then
if $system_content != @{consume success: 20
, 0
}@ then
return -1
endi
print cmd===> system_content ../../debug/tests/test/c/tmq_sim -c ../../sim/tsim/cfg -d $dbNamme -t "topic_ntb_all" -k "group.id:tg2"
system_content ../../debug/tests/test/c/tmq_sim -c ../../sim/tsim/cfg -d $dbNamme -t "topic_ntb_all" -k "group.id:tg2"
print cmd result----> $system_content
if $system_content != @{consume success: 20}@ then
if $system_content != @{consume success: 20
, 0
}@ then
return -1
endi
...
...
tests/test/c/tmqSim.c
浏览文件 @
5b2d664d
...
...
@@ -219,33 +219,33 @@ tmq_list_t* build_topic_list() {
return
topic_list
;
}
void
perf_loop
(
tmq_t
*
tmq
,
tmq_list_t
*
topics
)
{
void
loop_consume
(
tmq_t
*
tmq
)
{
tmq_resp_err_t
err
;
if
((
err
=
tmq_subscribe
(
tmq
,
topics
)))
{
printf
(
"tmq_subscribe() fail, reason: %s
\n
"
,
tmq_err2str
(
err
));
exit
(
-
1
);
}
int32_t
totalMsgs
=
0
;
int32_t
totalRows
=
0
;
int32_t
skipLogNum
=
0
;
//int64_t startTime = taosGetTimestampUs();
while
(
running
)
{
tmq_message_t
*
tmqmessage
=
tmq_consumer_poll
(
tmq
,
1
);
if
(
tmqmessage
)
{
totalMsgs
++
;
skipLogNum
+=
tmqGetSkipLogNum
(
tmqmessage
);
tmq_message_t
*
tmqMsg
=
tmq_consumer_poll
(
tmq
,
1
);
if
(
tmqMsg
)
{
totalMsgs
++
;
#if 0
TAOS_ROW row;
while (NULL != (row = tmq_get_row(tmqMsg))) {
totalRows++;
}
#endif
skipLogNum
+=
tmqGetSkipLogNum
(
tmqMsg
);
if
(
0
!=
g_stConfInfo
.
showMsgFlag
)
{
msg_process
(
tmq
message
);
msg_process
(
tmq
Msg
);
}
tmq_message_destroy
(
tmq
message
);
tmq_message_destroy
(
tmq
Msg
);
}
else
{
break
;
}
}
//int64_t endTime = taosGetTimestampUs();
//double consumeTime = (double)(endTime - startTime) / 1000000;
err
=
tmq_consumer_close
(
tmq
);
if
(
err
)
{
...
...
@@ -253,7 +253,7 @@ void perf_loop(tmq_t* tmq, tmq_list_t* topics) {
exit
(
-
1
);
}
printf
(
"{consume success: %d
}"
,
totalMsg
s
);
printf
(
"{consume success: %d
, %d}"
,
totalMsgs
,
totalRow
s
);
}
int
main
(
int32_t
argc
,
char
*
argv
[])
{
...
...
@@ -266,7 +266,21 @@ int main(int32_t argc, char *argv[]) {
return
-
1
;
}
perf_loop
(
tmq
,
topic_list
);
tmq_resp_err_t
err
=
tmq_subscribe
(
tmq
,
topic_list
);
if
(
err
)
{
printf
(
"tmq_subscribe() fail, reason: %s
\n
"
,
tmq_err2str
(
err
));
exit
(
-
1
);
}
loop_consume
(
tmq
);
#if 0
err = tmq_unsubscribe(tmq);
if (err) {
printf("tmq_unsubscribe() fail, reason: %s\n", tmq_err2str(err));
exit(-1);
}
#endif
return
0
;
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录