Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
fd9e5208
T
TDengine
项目概览
taosdata
/
TDengine
大约 2 年 前同步成功
通知
1192
Star
22018
Fork
4786
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
TDengine
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
fd9e5208
编写于
4月 16, 2022
作者:
H
Haojun Liao
浏览文件
操作
浏览文件
下载
差异文件
other: merge 3.0 branch to resolve conflict.
上级
53ff8c11
a264bfc6
变更
80
显示空白变更内容
内联
并排
Showing
80 changed file
with
4433 addition
and
3981 deletion
+4433
-3981
cmake/cmake.define
cmake/cmake.define
+0
-6
include/common/ttokendef.h
include/common/ttokendef.h
+63
-55
include/libs/function/functionMgt.h
include/libs/function/functionMgt.h
+1
-0
include/libs/nodes/cmdnodes.h
include/libs/nodes/cmdnodes.h
+27
-0
include/libs/nodes/nodes.h
include/libs/nodes/nodes.h
+7
-0
source/client/test/clientTests.cpp
source/client/test/clientTests.cpp
+1
-4
source/common/src/ttypes.c
source/common/src/ttypes.c
+2
-2
source/dnode/mgmt/implement/CMakeLists.txt
source/dnode/mgmt/implement/CMakeLists.txt
+1
-9
source/dnode/mgmt/mgmt_vnode/src/vmHandle.c
source/dnode/mgmt/mgmt_vnode/src/vmHandle.c
+12
-2
source/dnode/mnode/impl/CMakeLists.txt
source/dnode/mnode/impl/CMakeLists.txt
+2
-2
source/dnode/mnode/impl/inc/mndDb.h
source/dnode/mnode/impl/inc/mndDb.h
+1
-1
source/dnode/mnode/impl/src/mndDb.c
source/dnode/mnode/impl/src/mndDb.c
+2
-2
source/dnode/mnode/impl/src/mndInfoSchema.c
source/dnode/mnode/impl/src/mndInfoSchema.c
+7
-5
source/dnode/mnode/impl/src/mndShow.c
source/dnode/mnode/impl/src/mndShow.c
+8
-1
source/dnode/mnode/impl/src/mndTrans.c
source/dnode/mnode/impl/src/mndTrans.c
+25
-25
source/dnode/mnode/impl/test/CMakeLists.txt
source/dnode/mnode/impl/test/CMakeLists.txt
+13
-13
source/dnode/mnode/impl/test/db/CMakeLists.txt
source/dnode/mnode/impl/test/db/CMakeLists.txt
+4
-4
source/dnode/mnode/impl/test/db/db.cpp
source/dnode/mnode/impl/test/db/db.cpp
+24
-121
source/dnode/mnode/impl/test/dnode/CMakeLists.txt
source/dnode/mnode/impl/test/dnode/CMakeLists.txt
+4
-4
source/dnode/mnode/impl/test/dnode/mdnode.cpp
source/dnode/mnode/impl/test/dnode/mdnode.cpp
+5
-113
source/dnode/mnode/impl/test/func/CMakeLists.txt
source/dnode/mnode/impl/test/func/CMakeLists.txt
+5
-5
source/dnode/mnode/impl/test/func/func.cpp
source/dnode/mnode/impl/test/func/func.cpp
+5
-38
source/dnode/mnode/impl/test/mnode/CMakeLists.txt
source/dnode/mnode/impl/test/mnode/CMakeLists.txt
+5
-5
source/dnode/mnode/impl/test/mnode/mnode.cpp
source/dnode/mnode/impl/test/mnode/mnode.cpp
+4
-39
source/dnode/mnode/impl/test/profile/CMakeLists.txt
source/dnode/mnode/impl/test/profile/CMakeLists.txt
+5
-5
source/dnode/mnode/impl/test/profile/profile.cpp
source/dnode/mnode/impl/test/profile/profile.cpp
+6
-40
source/dnode/mnode/impl/test/qnode/CMakeLists.txt
source/dnode/mnode/impl/test/qnode/CMakeLists.txt
+5
-5
source/dnode/mnode/impl/test/qnode/qnode.cpp
source/dnode/mnode/impl/test/qnode/qnode.cpp
+5
-32
source/dnode/mnode/impl/test/show/CMakeLists.txt
source/dnode/mnode/impl/test/show/CMakeLists.txt
+5
-5
source/dnode/mnode/impl/test/show/show.cpp
source/dnode/mnode/impl/test/show/show.cpp
+7
-38
source/dnode/mnode/impl/test/sma/CMakeLists.txt
source/dnode/mnode/impl/test/sma/CMakeLists.txt
+5
-5
source/dnode/mnode/impl/test/sma/sma.cpp
source/dnode/mnode/impl/test/sma/sma.cpp
+6
-9
source/dnode/mnode/impl/test/snode/CMakeLists.txt
source/dnode/mnode/impl/test/snode/CMakeLists.txt
+5
-5
source/dnode/mnode/impl/test/snode/snode.cpp
source/dnode/mnode/impl/test/snode/snode.cpp
+5
-32
source/dnode/mnode/impl/test/stb/CMakeLists.txt
source/dnode/mnode/impl/test/stb/CMakeLists.txt
+4
-4
source/dnode/mnode/impl/test/stb/stb.cpp
source/dnode/mnode/impl/test/stb/stb.cpp
+11
-67
source/dnode/mnode/impl/test/topic/CMakeLists.txt
source/dnode/mnode/impl/test/topic/CMakeLists.txt
+5
-5
source/dnode/mnode/impl/test/topic/topic.cpp
source/dnode/mnode/impl/test/topic/topic.cpp
+4
-4
source/dnode/mnode/impl/test/trans/CMakeLists.txt
source/dnode/mnode/impl/test/trans/CMakeLists.txt
+5
-5
source/dnode/mnode/impl/test/trans/trans.cpp
source/dnode/mnode/impl/test/trans/trans.cpp
+15
-60
source/dnode/mnode/impl/test/user/CMakeLists.txt
source/dnode/mnode/impl/test/user/CMakeLists.txt
+5
-5
source/dnode/mnode/impl/test/user/user.cpp
source/dnode/mnode/impl/test/user/user.cpp
+12
-109
source/dnode/vnode/CMakeLists.txt
source/dnode/vnode/CMakeLists.txt
+1
-1
source/dnode/vnode/inc/vnode.h
source/dnode/vnode/inc/vnode.h
+8
-7
source/dnode/vnode/src/inc/vnd.h
source/dnode/vnode/src/inc/vnd.h
+9
-2
source/dnode/vnode/src/inc/vnodeInt.h
source/dnode/vnode/src/inc/vnodeInt.h
+7
-0
source/dnode/vnode/src/tsdb/tsdbCommit.c
source/dnode/vnode/src/tsdb/tsdbCommit.c
+19
-18
source/dnode/vnode/src/tsdb/tsdbFS.c
source/dnode/vnode/src/tsdb/tsdbFS.c
+2
-2
source/dnode/vnode/src/tsdb/tsdbMemTable.c
source/dnode/vnode/src/tsdb/tsdbMemTable.c
+13
-13
source/dnode/vnode/src/tsdb/tsdbOptions.c
source/dnode/vnode/src/tsdb/tsdbOptions.c
+5
-5
source/dnode/vnode/src/tsdb/tsdbRead.c
source/dnode/vnode/src/tsdb/tsdbRead.c
+6
-6
source/dnode/vnode/src/tsdb/tsdbReadImpl.c
source/dnode/vnode/src/tsdb/tsdbReadImpl.c
+12
-10
source/dnode/vnode/src/tsdb/tsdbSma.c
source/dnode/vnode/src/tsdb/tsdbSma.c
+6
-4
source/dnode/vnode/src/vnd/vnodeCfg.c
source/dnode/vnode/src/vnd/vnodeCfg.c
+6
-3
source/dnode/vnode/src/vnd/vnodeCommit.c
source/dnode/vnode/src/vnd/vnodeCommit.c
+247
-1
source/dnode/vnode/src/vnd/vnodeOpen.c
source/dnode/vnode/src/vnd/vnodeOpen.c
+33
-2
source/libs/executor/inc/executorimpl.h
source/libs/executor/inc/executorimpl.h
+250
-220
source/libs/executor/inc/indexoperator.h
source/libs/executor/inc/indexoperator.h
+23
-0
source/libs/executor/src/indexoperator.c
source/libs/executor/src/indexoperator.c
+198
-0
source/libs/function/inc/builtins.h
source/libs/function/inc/builtins.h
+1
-0
source/libs/function/src/builtins.c
source/libs/function/src/builtins.c
+29
-5
source/libs/function/src/functionMgt.c
source/libs/function/src/functionMgt.c
+4
-0
source/libs/nodes/src/nodesUtilFuncs.c
source/libs/nodes/src/nodesUtilFuncs.c
+25
-0
source/libs/parser/inc/parAst.h
source/libs/parser/inc/parAst.h
+4
-2
source/libs/parser/inc/sql.y
source/libs/parser/inc/sql.y
+57
-20
source/libs/parser/src/parAstCreater.c
source/libs/parser/src/parAstCreater.c
+43
-6
source/libs/parser/src/parTokenizer.c
source/libs/parser/src/parTokenizer.c
+14
-5
source/libs/parser/src/parTranslater.c
source/libs/parser/src/parTranslater.c
+173
-49
source/libs/parser/src/sql.c
source/libs/parser/src/sql.c
+2328
-2575
source/libs/parser/test/mockCatalogService.cpp
source/libs/parser/test/mockCatalogService.cpp
+1
-1
source/libs/parser/test/parserAstTest.cpp
source/libs/parser/test/parserAstTest.cpp
+33
-3
source/libs/parser/test/parserTestMain.cpp
source/libs/parser/test/parserTestMain.cpp
+23
-0
source/libs/parser/test/parserTestUtil.h
source/libs/parser/test/parserTestUtil.h
+16
-0
source/libs/planner/test/plannerTest.cpp
source/libs/planner/test/plannerTest.cpp
+6
-6
source/libs/scheduler/src/scheduler.c
source/libs/scheduler/src/scheduler.c
+41
-39
tests/script/runAllSimCases.sh
tests/script/runAllSimCases.sh
+63
-3
tests/script/sh/exec.sh
tests/script/sh/exec.sh
+5
-4
tests/script/test.sh
tests/script/test.sh
+1
-1
tests/script/tsim/insert/basic0.sim
tests/script/tsim/insert/basic0.sim
+1
-1
tests/script/tsim/query/stddev.sim
tests/script/tsim/query/stddev.sim
+377
-76
未找到文件。
cmake/cmake.define
浏览文件 @
fd9e5208
...
@@ -3,12 +3,6 @@ cmake_minimum_required(VERSION 3.16)
...
@@ -3,12 +3,6 @@ cmake_minimum_required(VERSION 3.16)
if (NOT DEFINED TD_GRANT)
if (NOT DEFINED TD_GRANT)
SET(TD_GRANT FALSE)
SET(TD_GRANT FALSE)
endif()
endif()
if (NOT DEFINED TD_USB_DONGLE)
SET(TD_USB_DONGLE FALSE)
endif()
IF (TD_GRANT)
ADD_DEFINITIONS(-D_GRANT)
ENDIF ()
IF ("${BUILD_TOOLS}" STREQUAL "")
IF ("${BUILD_TOOLS}" STREQUAL "")
IF (TD_LINUX)
IF (TD_LINUX)
...
...
include/common/ttokendef.h
浏览文件 @
fd9e5208
...
@@ -171,60 +171,69 @@
...
@@ -171,60 +171,69 @@
#define TK_BUFSIZE 153
#define TK_BUFSIZE 153
#define TK_STREAM 154
#define TK_STREAM 154
#define TK_INTO 155
#define TK_INTO 155
#define TK_KILL 156
#define TK_TRIGGER 156
#define TK_CONNECTION 157
#define TK_AT_ONCE 157
#define TK_MERGE 158
#define TK_WINDOW_CLOSE 158
#define TK_VGROUP 159
#define TK_WATERMARK 159
#define TK_REDISTRIBUTE 160
#define TK_KILL 160
#define TK_SPLIT 161
#define TK_CONNECTION 161
#define TK_SYNCDB 162
#define TK_MERGE 162
#define TK_NULL 163
#define TK_VGROUP 163
#define TK_FIRST 164
#define TK_REDISTRIBUTE 164
#define TK_LAST 165
#define TK_SPLIT 165
#define TK_NOW 166
#define TK_SYNCDB 166
#define TK_TODAY 167
#define TK_NULL 167
#define TK_CAST 168
#define TK_NK_QUESTION 168
#define TK_ROWTS 169
#define TK_NK_ARROW 169
#define TK_TBNAME 170
#define TK_ROWTS 170
#define TK_QSTARTTS 171
#define TK_TBNAME 171
#define TK_QENDTS 172
#define TK_QSTARTTS 172
#define TK_WSTARTTS 173
#define TK_QENDTS 173
#define TK_WENDTS 174
#define TK_WSTARTTS 174
#define TK_WDURATION 175
#define TK_WENDTS 175
#define TK_BETWEEN 176
#define TK_WDURATION 176
#define TK_IS 177
#define TK_CAST 177
#define TK_NK_LT 178
#define TK_NOW 178
#define TK_NK_GT 179
#define TK_TODAY 179
#define TK_NK_LE 180
#define TK_COUNT 180
#define TK_NK_GE 181
#define TK_FIRST 181
#define TK_NK_NE 182
#define TK_LAST 182
#define TK_MATCH 183
#define TK_LAST_ROW 183
#define TK_NMATCH 184
#define TK_BETWEEN 184
#define TK_JOIN 185
#define TK_IS 185
#define TK_INNER 186
#define TK_NK_LT 186
#define TK_SELECT 187
#define TK_NK_GT 187
#define TK_DISTINCT 188
#define TK_NK_LE 188
#define TK_WHERE 189
#define TK_NK_GE 189
#define TK_PARTITION 190
#define TK_NK_NE 190
#define TK_BY 191
#define TK_MATCH 191
#define TK_SESSION 192
#define TK_NMATCH 192
#define TK_STATE_WINDOW 193
#define TK_CONTAINS 193
#define TK_SLIDING 194
#define TK_JOIN 194
#define TK_FILL 195
#define TK_INNER 195
#define TK_VALUE 196
#define TK_SELECT 196
#define TK_NONE 197
#define TK_DISTINCT 197
#define TK_PREV 198
#define TK_WHERE 198
#define TK_LINEAR 199
#define TK_PARTITION 199
#define TK_NEXT 200
#define TK_BY 200
#define TK_GROUP 201
#define TK_SESSION 201
#define TK_HAVING 202
#define TK_STATE_WINDOW 202
#define TK_ORDER 203
#define TK_SLIDING 203
#define TK_SLIMIT 204
#define TK_FILL 204
#define TK_SOFFSET 205
#define TK_VALUE 205
#define TK_LIMIT 206
#define TK_NONE 206
#define TK_OFFSET 207
#define TK_PREV 207
#define TK_ASC 208
#define TK_LINEAR 208
#define TK_NULLS 209
#define TK_NEXT 209
#define TK_GROUP 210
#define TK_HAVING 211
#define TK_ORDER 212
#define TK_SLIMIT 213
#define TK_SOFFSET 214
#define TK_LIMIT 215
#define TK_OFFSET 216
#define TK_ASC 217
#define TK_NULLS 218
#define TK_NK_SPACE 300
#define TK_NK_SPACE 300
#define TK_NK_COMMENT 301
#define TK_NK_COMMENT 301
...
@@ -233,7 +242,6 @@
...
@@ -233,7 +242,6 @@
#define TK_NK_OCT 304 // oct number
#define TK_NK_OCT 304 // oct number
#define TK_NK_BIN 305 // bin format data 0b111
#define TK_NK_BIN 305 // bin format data 0b111
#define TK_NK_FILE 306
#define TK_NK_FILE 306
#define TK_NK_QUESTION 307 // denoting the placeholder of "?",when invoking statement bind query
#define TK_NK_BITNOT 501
#define TK_NK_BITNOT 501
#define TK_INSERT 502
#define TK_INSERT 502
...
...
include/libs/function/functionMgt.h
浏览文件 @
fd9e5208
...
@@ -137,6 +137,7 @@ bool fmIsWindowPseudoColumnFunc(int32_t funcId);
...
@@ -137,6 +137,7 @@ bool fmIsWindowPseudoColumnFunc(int32_t funcId);
bool
fmIsWindowClauseFunc
(
int32_t
funcId
);
bool
fmIsWindowClauseFunc
(
int32_t
funcId
);
bool
fmIsSpecialDataRequiredFunc
(
int32_t
funcId
);
bool
fmIsSpecialDataRequiredFunc
(
int32_t
funcId
);
bool
fmIsDynamicScanOptimizedFunc
(
int32_t
funcId
);
bool
fmIsDynamicScanOptimizedFunc
(
int32_t
funcId
);
bool
fmIsMultiResFunc
(
int32_t
funcId
);
typedef
enum
EFuncDataRequired
{
typedef
enum
EFuncDataRequired
{
FUNC_DATA_REQUIRED_DATA_LOAD
=
1
,
FUNC_DATA_REQUIRED_DATA_LOAD
=
1
,
...
...
include/libs/nodes/cmdnodes.h
浏览文件 @
fd9e5208
...
@@ -272,6 +272,33 @@ typedef struct SKillStmt {
...
@@ -272,6 +272,33 @@ typedef struct SKillStmt {
int32_t
targetId
;
int32_t
targetId
;
}
SKillStmt
;
}
SKillStmt
;
typedef
enum
EStreamTriggerType
{
STREAM_TRIGGER_AT_ONCE
=
1
,
STREAM_TRIGGER_WINDOW_CLOSE
}
EStreamTriggerType
;
typedef
struct
SStreamOptions
{
ENodeType
type
;
EStreamTriggerType
triggerType
;
SNode
*
pWatermark
;
}
SStreamOptions
;
typedef
struct
SCreateStreamStmt
{
ENodeType
type
;
char
streamName
[
TSDB_TABLE_NAME_LEN
];
char
targetDbName
[
TSDB_DB_NAME_LEN
];
char
targetTabName
[
TSDB_TABLE_NAME_LEN
];
bool
ignoreExists
;
SStreamOptions
*
pOptions
;
SNode
*
pQuery
;
}
SCreateStreamStmt
;
typedef
struct
SDropStreamStmt
{
ENodeType
type
;
char
streamName
[
TSDB_TABLE_NAME_LEN
];
bool
ignoreNotExists
;
}
SDropStreamStmt
;
#ifdef __cplusplus
#ifdef __cplusplus
}
}
#endif
#endif
...
...
include/libs/nodes/nodes.h
浏览文件 @
fd9e5208
...
@@ -80,6 +80,7 @@ typedef enum ENodeType {
...
@@ -80,6 +80,7 @@ typedef enum ENodeType {
QUERY_NODE_TABLE_OPTIONS
,
QUERY_NODE_TABLE_OPTIONS
,
QUERY_NODE_INDEX_OPTIONS
,
QUERY_NODE_INDEX_OPTIONS
,
QUERY_NODE_EXPLAIN_OPTIONS
,
QUERY_NODE_EXPLAIN_OPTIONS
,
QUERY_NODE_STREAM_OPTIONS
,
// Statement nodes are used in parser and planner module.
// Statement nodes are used in parser and planner module.
QUERY_NODE_SET_OPERATOR
,
QUERY_NODE_SET_OPERATOR
,
...
@@ -151,6 +152,12 @@ typedef enum ENodeType {
...
@@ -151,6 +152,12 @@ typedef enum ENodeType {
QUERY_NODE_SHOW_CONNECTIONS_STMT
,
QUERY_NODE_SHOW_CONNECTIONS_STMT
,
QUERY_NODE_SHOW_QUERIES_STMT
,
QUERY_NODE_SHOW_QUERIES_STMT
,
QUERY_NODE_SHOW_VNODES_STMT
,
QUERY_NODE_SHOW_VNODES_STMT
,
QUERY_NODE_SHOW_APPS_STMT
,
QUERY_NODE_SHOW_SCORES_STMT
,
QUERY_NODE_SHOW_VARIABLE_STMT
,
QUERY_NODE_SHOW_CREATE_DATABASE_STMT
,
QUERY_NODE_SHOW_CREATE_TABLE_STMT
,
QUERY_NODE_SHOW_CREATE_STABLE_STMT
,
QUERY_NODE_KILL_CONNECTION_STMT
,
QUERY_NODE_KILL_CONNECTION_STMT
,
QUERY_NODE_KILL_QUERY_STMT
,
QUERY_NODE_KILL_QUERY_STMT
,
...
...
source/client/test/clientTests.cpp
浏览文件 @
fd9e5208
...
@@ -662,7 +662,7 @@ TEST(testCase, agg_query_tables) {
...
@@ -662,7 +662,7 @@ TEST(testCase, agg_query_tables) {
TAOS_RES
*
pRes
=
taos_query
(
pConn
,
"use abc1"
);
TAOS_RES
*
pRes
=
taos_query
(
pConn
,
"use abc1"
);
taos_free_result
(
pRes
);
taos_free_result
(
pRes
);
pRes
=
taos_query
(
pConn
,
"select
* from test_block_raw.all_type
"
);
pRes
=
taos_query
(
pConn
,
"select
count(*) from tu
"
);
if
(
taos_errno
(
pRes
)
!=
0
)
{
if
(
taos_errno
(
pRes
)
!=
0
)
{
printf
(
"failed to select from table, reason:%s
\n
"
,
taos_errstr
(
pRes
));
printf
(
"failed to select from table, reason:%s
\n
"
,
taos_errstr
(
pRes
));
taos_free_result
(
pRes
);
taos_free_result
(
pRes
);
...
@@ -674,9 +674,6 @@ TEST(testCase, agg_query_tables) {
...
@@ -674,9 +674,6 @@ TEST(testCase, agg_query_tables) {
int32_t
numOfFields
=
taos_num_fields
(
pRes
);
int32_t
numOfFields
=
taos_num_fields
(
pRes
);
int32_t
n
=
0
;
int32_t
n
=
0
;
void
*
data
=
NULL
;
int32_t
code
=
taos_fetch_raw_block
(
pRes
,
&
n
,
&
data
);
char
str
[
512
]
=
{
0
};
char
str
[
512
]
=
{
0
};
while
((
pRow
=
taos_fetch_row
(
pRes
))
!=
NULL
)
{
while
((
pRow
=
taos_fetch_row
(
pRes
))
!=
NULL
)
{
int32_t
*
length
=
taos_fetch_lengths
(
pRes
);
int32_t
*
length
=
taos_fetch_lengths
(
pRes
);
...
...
source/common/src/ttypes.c
浏览文件 @
fd9e5208
...
@@ -377,7 +377,7 @@ tDataTypeDescriptor tDataTypes[15] = {
...
@@ -377,7 +377,7 @@ tDataTypeDescriptor tDataTypes[15] = {
getStatics_i64
},
getStatics_i64
},
{
TSDB_DATA_TYPE_FLOAT
,
5
,
FLOAT_BYTES
,
"FLOAT"
,
0
,
0
,
tsCompressFloat
,
tsDecompressFloat
,
getStatics_f
},
{
TSDB_DATA_TYPE_FLOAT
,
5
,
FLOAT_BYTES
,
"FLOAT"
,
0
,
0
,
tsCompressFloat
,
tsDecompressFloat
,
getStatics_f
},
{
TSDB_DATA_TYPE_DOUBLE
,
6
,
DOUBLE_BYTES
,
"DOUBLE"
,
0
,
0
,
tsCompressDouble
,
tsDecompressDouble
,
getStatics_d
},
{
TSDB_DATA_TYPE_DOUBLE
,
6
,
DOUBLE_BYTES
,
"DOUBLE"
,
0
,
0
,
tsCompressDouble
,
tsDecompressDouble
,
getStatics_d
},
{
TSDB_DATA_TYPE_
BINARY
,
6
,
0
,
"BINARY
"
,
0
,
0
,
tsCompressString
,
tsDecompressString
,
getStatics_bin
},
{
TSDB_DATA_TYPE_
VARCHAR
,
6
,
0
,
"VARCHAR
"
,
0
,
0
,
tsCompressString
,
tsDecompressString
,
getStatics_bin
},
{
TSDB_DATA_TYPE_TIMESTAMP
,
9
,
LONG_BYTES
,
"TIMESTAMP"
,
INT64_MIN
,
INT64_MAX
,
tsCompressTimestamp
,
{
TSDB_DATA_TYPE_TIMESTAMP
,
9
,
LONG_BYTES
,
"TIMESTAMP"
,
INT64_MIN
,
INT64_MAX
,
tsCompressTimestamp
,
tsDecompressTimestamp
,
getStatics_i64
},
tsDecompressTimestamp
,
getStatics_i64
},
{
TSDB_DATA_TYPE_NCHAR
,
5
,
8
,
"NCHAR"
,
0
,
0
,
tsCompressString
,
tsDecompressString
,
getStatics_nchr
},
{
TSDB_DATA_TYPE_NCHAR
,
5
,
8
,
"NCHAR"
,
0
,
0
,
tsCompressString
,
tsDecompressString
,
getStatics_nchr
},
...
@@ -402,7 +402,7 @@ char tTokenTypeSwitcher[13] = {
...
@@ -402,7 +402,7 @@ char tTokenTypeSwitcher[13] = {
TSDB_DATA_TYPE_DOUBLE
,
// TK_DOUBLE
TSDB_DATA_TYPE_DOUBLE
,
// TK_DOUBLE
TSDB_DATA_TYPE_BINARY
,
// TK_STRING
TSDB_DATA_TYPE_BINARY
,
// TK_STRING
TSDB_DATA_TYPE_BIGINT
,
// TK_TIMESTAMP
TSDB_DATA_TYPE_BIGINT
,
// TK_TIMESTAMP
TSDB_DATA_TYPE_
BINARY
,
// TK_BINARY
TSDB_DATA_TYPE_
VARCHAR
,
// TK_BINARY
TSDB_DATA_TYPE_NCHAR
,
// TK_NCHAR
TSDB_DATA_TYPE_NCHAR
,
// TK_NCHAR
};
};
...
...
source/dnode/mgmt/implement/CMakeLists.txt
浏览文件 @
fd9e5208
...
@@ -7,11 +7,3 @@ target_include_directories(
...
@@ -7,11 +7,3 @@ target_include_directories(
dnode
dnode
PRIVATE
"
${
CMAKE_CURRENT_SOURCE_DIR
}
/inc"
PRIVATE
"
${
CMAKE_CURRENT_SOURCE_DIR
}
/inc"
)
)
IF
(
TD_GRANT
)
TARGET_LINK_LIBRARIES
(
dnode grant
)
ENDIF
()
IF
(
TD_USB_DONGLE
)
TARGET_LINK_LIBRARIES
(
dnode usb_dongle
)
else
()
ENDIF
()
\ No newline at end of file
source/dnode/mgmt/mgmt_vnode/src/vmHandle.c
浏览文件 @
fd9e5208
...
@@ -91,9 +91,9 @@ static void vmGenerateVnodeCfg(SCreateVnodeReq *pCreate, SVnodeCfg *pCfg) {
...
@@ -91,9 +91,9 @@ static void vmGenerateVnodeCfg(SCreateVnodeReq *pCreate, SVnodeCfg *pCfg) {
pCfg
->
keep
=
pCreate
->
daysToKeep0
;
pCfg
->
keep
=
pCreate
->
daysToKeep0
;
pCfg
->
streamMode
=
pCreate
->
streamMode
;
pCfg
->
streamMode
=
pCreate
->
streamMode
;
pCfg
->
isWeak
=
true
;
pCfg
->
isWeak
=
true
;
pCfg
->
tsdbCfg
.
keep
=
pCreate
->
daysToKeep0
;
pCfg
->
tsdbCfg
.
keep1
=
pCreate
->
daysToKeep2
;
pCfg
->
tsdbCfg
.
keep2
=
pCreate
->
daysToKeep0
;
pCfg
->
tsdbCfg
.
keep2
=
pCreate
->
daysToKeep0
;
pCfg
->
tsdbCfg
.
keep0
=
pCreate
->
daysToKeep2
;
pCfg
->
tsdbCfg
.
keep1
=
pCreate
->
daysToKeep0
;
pCfg
->
tsdbCfg
.
lruCacheSize
=
pCreate
->
cacheBlockSize
;
pCfg
->
tsdbCfg
.
lruCacheSize
=
pCreate
->
cacheBlockSize
;
pCfg
->
tsdbCfg
.
retentions
=
pCreate
->
pRetensions
;
pCfg
->
tsdbCfg
.
retentions
=
pCreate
->
pRetensions
;
pCfg
->
metaCfg
.
lruSize
=
pCreate
->
cacheBlockSize
;
pCfg
->
metaCfg
.
lruSize
=
pCreate
->
cacheBlockSize
;
...
@@ -121,6 +121,8 @@ static void vmGenerateWrapperCfg(SVnodesMgmt *pMgmt, SCreateVnodeReq *pCreate, S
...
@@ -121,6 +121,8 @@ static void vmGenerateWrapperCfg(SVnodesMgmt *pMgmt, SCreateVnodeReq *pCreate, S
int32_t
vmProcessCreateVnodeReq
(
SVnodesMgmt
*
pMgmt
,
SNodeMsg
*
pMsg
)
{
int32_t
vmProcessCreateVnodeReq
(
SVnodesMgmt
*
pMgmt
,
SNodeMsg
*
pMsg
)
{
SRpcMsg
*
pReq
=
&
pMsg
->
rpcMsg
;
SRpcMsg
*
pReq
=
&
pMsg
->
rpcMsg
;
SCreateVnodeReq
createReq
=
{
0
};
SCreateVnodeReq
createReq
=
{
0
};
char
path
[
TSDB_FILENAME_LEN
];
if
(
tDeserializeSCreateVnodeReq
(
pReq
->
pCont
,
pReq
->
contLen
,
&
createReq
)
!=
0
)
{
if
(
tDeserializeSCreateVnodeReq
(
pReq
->
pCont
,
pReq
->
contLen
,
&
createReq
)
!=
0
)
{
terrno
=
TSDB_CODE_INVALID_MSG
;
terrno
=
TSDB_CODE_INVALID_MSG
;
return
-
1
;
return
-
1
;
...
@@ -143,6 +145,14 @@ int32_t vmProcessCreateVnodeReq(SVnodesMgmt *pMgmt, SNodeMsg *pMsg) {
...
@@ -143,6 +145,14 @@ int32_t vmProcessCreateVnodeReq(SVnodesMgmt *pMgmt, SNodeMsg *pMsg) {
return
-
1
;
return
-
1
;
}
}
// create vnode
snprintf
(
path
,
TSDB_FILENAME_LEN
,
"vnode%svnode%d"
,
TD_DIRSEP
,
vnodeCfg
.
vgId
);
if
(
vnodeCreate
(
path
,
&
vnodeCfg
,
pMgmt
->
pTfs
)
<
0
)
{
tFreeSCreateVnodeReq
(
&
createReq
);
dError
(
"vgId:%d, failed to create vnode since %s"
,
createReq
.
vgId
,
terrstr
());
return
-
1
;
}
SMsgCb
msgCb
=
pMgmt
->
pDnode
->
data
.
msgCb
;
SMsgCb
msgCb
=
pMgmt
->
pDnode
->
data
.
msgCb
;
msgCb
.
pWrapper
=
pMgmt
->
pWrapper
;
msgCb
.
pWrapper
=
pMgmt
->
pWrapper
;
msgCb
.
queueFps
[
QUERY_QUEUE
]
=
vmPutMsgToQueryQueue
;
msgCb
.
queueFps
[
QUERY_QUEUE
]
=
vmPutMsgToQueryQueue
;
...
...
source/dnode/mnode/impl/CMakeLists.txt
浏览文件 @
fd9e5208
...
@@ -12,8 +12,8 @@ target_link_libraries(
...
@@ -12,8 +12,8 @@ target_link_libraries(
IF
(
TD_GRANT
)
IF
(
TD_GRANT
)
TARGET_LINK_LIBRARIES
(
mnode grant
)
TARGET_LINK_LIBRARIES
(
mnode grant
)
ENDIF
()
ENDIF
()
IF
(
TD_
USB_DONGLE
)
IF
(
TD_
GRANT
)
TARGET_LINK_LIBRARIES
(
mnode usb_dongle
)
ADD_DEFINITIONS
(
-D_GRANT
)
ENDIF
()
ENDIF
()
if
(
${
BUILD_TEST
}
)
if
(
${
BUILD_TEST
}
)
...
...
source/dnode/mnode/impl/inc/mndDb.h
浏览文件 @
fd9e5208
...
@@ -27,7 +27,7 @@ void mndCleanupDb(SMnode *pMnode);
...
@@ -27,7 +27,7 @@ void mndCleanupDb(SMnode *pMnode);
SDbObj
*
mndAcquireDb
(
SMnode
*
pMnode
,
const
char
*
db
);
SDbObj
*
mndAcquireDb
(
SMnode
*
pMnode
,
const
char
*
db
);
void
mndReleaseDb
(
SMnode
*
pMnode
,
SDbObj
*
pDb
);
void
mndReleaseDb
(
SMnode
*
pMnode
,
SDbObj
*
pDb
);
int32_t
mndValidateDbInfo
(
SMnode
*
pMnode
,
SDbVgVersion
*
pDbs
,
int32_t
numOfDbs
,
void
**
ppRsp
,
int32_t
*
pRspLen
);
int32_t
mndValidateDbInfo
(
SMnode
*
pMnode
,
SDbVgVersion
*
pDbs
,
int32_t
numOfDbs
,
void
**
ppRsp
,
int32_t
*
pRspLen
);
char
*
mnGetDbStr
(
char
*
src
);
char
*
mn
d
GetDbStr
(
char
*
src
);
int32_t
mndExtractDbInfo
(
SMnode
*
pMnode
,
SDbObj
*
pDb
,
SUseDbRsp
*
pRsp
,
const
SUseDbReq
*
pReq
);
int32_t
mndExtractDbInfo
(
SMnode
*
pMnode
,
SDbObj
*
pDb
,
SUseDbRsp
*
pRsp
,
const
SUseDbReq
*
pReq
);
#ifdef __cplusplus
#ifdef __cplusplus
...
...
source/dnode/mnode/impl/src/mndDb.c
浏览文件 @
fd9e5208
...
@@ -1342,7 +1342,7 @@ SYNC_DB_OVER:
...
@@ -1342,7 +1342,7 @@ SYNC_DB_OVER:
return
code
;
return
code
;
}
}
char
*
mnGetDbStr
(
char
*
src
)
{
char
*
mn
d
GetDbStr
(
char
*
src
)
{
char
*
pos
=
strstr
(
src
,
TS_PATH_DELIMITER
);
char
*
pos
=
strstr
(
src
,
TS_PATH_DELIMITER
);
if
(
pos
!=
NULL
)
++
pos
;
if
(
pos
!=
NULL
)
++
pos
;
...
@@ -1357,7 +1357,7 @@ static void dumpDbInfoData(SSDataBlock* pBlock, SDbObj *pDb, SShowObj *pShow, in
...
@@ -1357,7 +1357,7 @@ static void dumpDbInfoData(SSDataBlock* pBlock, SDbObj *pDb, SShowObj *pShow, in
int32_t
cols
=
0
;
int32_t
cols
=
0
;
char
*
buf
=
taosMemoryMalloc
(
pShow
->
bytes
[
cols
]);
char
*
buf
=
taosMemoryMalloc
(
pShow
->
bytes
[
cols
]);
char
*
name
=
mnGetDbStr
(
pDb
->
name
);
char
*
name
=
mn
d
GetDbStr
(
pDb
->
name
);
if
(
name
!=
NULL
)
{
if
(
name
!=
NULL
)
{
STR_WITH_MAXSIZE_TO_VARSTR
(
buf
,
name
,
pShow
->
bytes
[
cols
]);
STR_WITH_MAXSIZE_TO_VARSTR
(
buf
,
name
,
pShow
->
bytes
[
cols
]);
}
else
{
}
else
{
...
...
source/dnode/mnode/impl/src/mndInfoSchema.c
浏览文件 @
fd9e5208
...
@@ -82,7 +82,7 @@ static const SInfosTableSchema userDBSchema[] = {
...
@@ -82,7 +82,7 @@ static const SInfosTableSchema userDBSchema[] = {
{.
name
=
"blocks"
,
.
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
=
"minrows"
,
.
bytes
=
4
,
.
type
=
TSDB_DATA_TYPE_INT
},
{.
name
=
"maxrows"
,
.
bytes
=
4
,
.
type
=
TSDB_DATA_TYPE_INT
},
{.
name
=
"maxrows"
,
.
bytes
=
4
,
.
type
=
TSDB_DATA_TYPE_INT
},
{.
name
=
"wal
level
"
,
.
bytes
=
1
,
.
type
=
TSDB_DATA_TYPE_TINYINT
},
{.
name
=
"wal"
,
.
bytes
=
1
,
.
type
=
TSDB_DATA_TYPE_TINYINT
},
{.
name
=
"fsync"
,
.
bytes
=
4
,
.
type
=
TSDB_DATA_TYPE_INT
},
{.
name
=
"fsync"
,
.
bytes
=
4
,
.
type
=
TSDB_DATA_TYPE_INT
},
{.
name
=
"comp"
,
.
bytes
=
1
,
.
type
=
TSDB_DATA_TYPE_TINYINT
},
{.
name
=
"comp"
,
.
bytes
=
1
,
.
type
=
TSDB_DATA_TYPE_TINYINT
},
{.
name
=
"cachelast"
,
.
bytes
=
1
,
.
type
=
TSDB_DATA_TYPE_TINYINT
},
{.
name
=
"cachelast"
,
.
bytes
=
1
,
.
type
=
TSDB_DATA_TYPE_TINYINT
},
...
@@ -95,11 +95,13 @@ static const SInfosTableSchema userDBSchema[] = {
...
@@ -95,11 +95,13 @@ static const SInfosTableSchema userDBSchema[] = {
};
};
static
const
SInfosTableSchema
userFuncSchema
[]
=
{
static
const
SInfosTableSchema
userFuncSchema
[]
=
{
{.
name
=
"name"
,
.
bytes
=
32
,
.
type
=
TSDB_DATA_TYPE_VARCHAR
},
{.
name
=
"name"
,
.
bytes
=
TSDB_FUNC_NAME_LEN
-
1
+
VARSTR_HEADER_SIZE
,
.
type
=
TSDB_DATA_TYPE_VARCHAR
},
{.
name
=
"comment"
,
.
bytes
=
PATH_MAX
-
1
+
VARSTR_HEADER_SIZE
,
.
type
=
TSDB_DATA_TYPE_VARCHAR
},
{.
name
=
"aggregate"
,
.
bytes
=
4
,
.
type
=
TSDB_DATA_TYPE_INT
},
{.
name
=
"comment"
,
.
bytes
=
TSDB_TYPE_STR_MAX_LEN
-
1
+
VARSTR_HEADER_SIZE
,
.
type
=
TSDB_DATA_TYPE_VARCHAR
},
{.
name
=
"create_time"
,
.
bytes
=
8
,
.
type
=
TSDB_DATA_TYPE_TIMESTAMP
},
{.
name
=
"create_time"
,
.
bytes
=
8
,
.
type
=
TSDB_DATA_TYPE_TIMESTAMP
},
{.
name
=
"ntables"
,
.
bytes
=
4
,
.
type
=
TSDB_DATA_TYPE_INT
},
{.
name
=
"code_len"
,
.
bytes
=
4
,
.
type
=
TSDB_DATA_TYPE_INT
},
{.
name
=
"precision"
,
.
bytes
=
2
,
.
type
=
TSDB_DATA_TYPE_VARCHAR
},
{.
name
=
"bufsize"
,
.
bytes
=
4
,
.
type
=
TSDB_DATA_TYPE_INT
},
{.
name
=
"status"
,
.
bytes
=
10
,
.
type
=
TSDB_DATA_TYPE_VARCHAR
},
};
};
static
const
SInfosTableSchema
userIdxSchema
[]
=
{
static
const
SInfosTableSchema
userIdxSchema
[]
=
{
...
...
source/dnode/mnode/impl/src/mndShow.c
浏览文件 @
fd9e5208
...
@@ -131,6 +131,13 @@ static int32_t mndProcessRetrieveSysTableReq(SNodeMsg *pReq) {
...
@@ -131,6 +131,13 @@ static int32_t mndProcessRetrieveSysTableReq(SNodeMsg *pReq) {
req
.
type
=
retrieveReq
.
type
;
req
.
type
=
retrieveReq
.
type
;
strncpy
(
req
.
db
,
retrieveReq
.
db
,
tListLen
(
req
.
db
));
strncpy
(
req
.
db
,
retrieveReq
.
db
,
tListLen
(
req
.
db
));
STableMetaRsp
*
pMeta
=
(
STableMetaRsp
*
)
taosHashGet
(
pMnode
->
infosMeta
,
retrieveReq
.
tb
,
strlen
(
retrieveReq
.
tb
)
+
1
);
if
(
pMeta
==
NULL
)
{
terrno
=
TSDB_CODE_MND_INVALID_INFOS_TBL
;
mError
(
"failed to process show-retrieve req:%p since %s"
,
pShow
,
terrstr
());
return
-
1
;
}
pShow
=
mndCreateShowObj
(
pMnode
,
&
req
);
pShow
=
mndCreateShowObj
(
pMnode
,
&
req
);
if
(
pShow
==
NULL
)
{
if
(
pShow
==
NULL
)
{
terrno
=
TSDB_CODE_OUT_OF_MEMORY
;
terrno
=
TSDB_CODE_OUT_OF_MEMORY
;
...
@@ -138,7 +145,7 @@ static int32_t mndProcessRetrieveSysTableReq(SNodeMsg *pReq) {
...
@@ -138,7 +145,7 @@ static int32_t mndProcessRetrieveSysTableReq(SNodeMsg *pReq) {
return
-
1
;
return
-
1
;
}
}
pShow
->
pMeta
=
(
STableMetaRsp
*
)
taosHashGet
(
pMnode
->
infosMeta
,
retrieveReq
.
tb
,
strlen
(
retrieveReq
.
tb
)
+
1
)
;
pShow
->
pMeta
=
pMeta
;
pShow
->
numOfColumns
=
pShow
->
pMeta
->
numOfColumns
;
pShow
->
numOfColumns
=
pShow
->
pMeta
->
numOfColumns
;
int32_t
offset
=
0
;
int32_t
offset
=
0
;
...
...
source/dnode/mnode/impl/src/mndTrans.c
浏览文件 @
fd9e5208
...
@@ -58,7 +58,7 @@ static void mndTransSendRpcRsp(SMnode *pMnode, STrans *pTrans);
...
@@ -58,7 +58,7 @@ static void mndTransSendRpcRsp(SMnode *pMnode, STrans *pTrans);
static
int32_t
mndProcessTransReq
(
SNodeMsg
*
pReq
);
static
int32_t
mndProcessTransReq
(
SNodeMsg
*
pReq
);
static
int32_t
mndProcessKillTransReq
(
SNodeMsg
*
pReq
);
static
int32_t
mndProcessKillTransReq
(
SNodeMsg
*
pReq
);
static
int32_t
mndRetrieveTrans
(
SNodeMsg
*
pReq
,
SShowObj
*
pShow
,
char
*
data
,
int32_t
rows
);
static
int32_t
mndRetrieveTrans
(
SNodeMsg
*
pReq
,
SShowObj
*
pShow
,
SSDataBlock
*
pBlock
,
int32_t
rows
);
static
void
mndCancelGetNextTrans
(
SMnode
*
pMnode
,
void
*
pIter
);
static
void
mndCancelGetNextTrans
(
SMnode
*
pMnode
,
void
*
pIter
);
int32_t
mndInitTrans
(
SMnode
*
pMnode
)
{
int32_t
mndInitTrans
(
SMnode
*
pMnode
)
{
...
@@ -73,7 +73,7 @@ int32_t mndInitTrans(SMnode *pMnode) {
...
@@ -73,7 +73,7 @@ int32_t mndInitTrans(SMnode *pMnode) {
mndSetMsgHandle
(
pMnode
,
TDMT_MND_TRANS_TIMER
,
mndProcessTransReq
);
mndSetMsgHandle
(
pMnode
,
TDMT_MND_TRANS_TIMER
,
mndProcessTransReq
);
mndSetMsgHandle
(
pMnode
,
TDMT_MND_KILL_TRANS
,
mndProcessKillTransReq
);
mndSetMsgHandle
(
pMnode
,
TDMT_MND_KILL_TRANS
,
mndProcessKillTransReq
);
//
mndAddShowRetrieveHandle(pMnode, TSDB_MGMT_TABLE_TRANS, mndRetrieveTrans);
mndAddShowRetrieveHandle
(
pMnode
,
TSDB_MGMT_TABLE_TRANS
,
mndRetrieveTrans
);
mndAddShowFreeIterHandle
(
pMnode
,
TSDB_MGMT_TABLE_TRANS
,
mndCancelGetNextTrans
);
mndAddShowFreeIterHandle
(
pMnode
,
TSDB_MGMT_TABLE_TRANS
,
mndCancelGetNextTrans
);
return
sdbSetTable
(
pMnode
->
pSdb
,
table
);
return
sdbSetTable
(
pMnode
->
pSdb
,
table
);
}
}
...
@@ -1259,7 +1259,7 @@ void mndTransPullup(SMnode *pMnode) {
...
@@ -1259,7 +1259,7 @@ void mndTransPullup(SMnode *pMnode) {
sdbWriteFile
(
pMnode
->
pSdb
);
sdbWriteFile
(
pMnode
->
pSdb
);
}
}
static
int32_t
mndRetrieveTrans
(
SNodeMsg
*
pReq
,
SShowObj
*
pShow
,
char
*
data
,
int32_t
rows
)
{
static
int32_t
mndRetrieveTrans
(
SNodeMsg
*
pReq
,
SShowObj
*
pShow
,
SSDataBlock
*
pBlock
,
int32_t
rows
)
{
SMnode
*
pMnode
=
pReq
->
pNode
;
SMnode
*
pMnode
=
pReq
->
pNode
;
SSdb
*
pSdb
=
pMnode
->
pSdb
;
SSdb
*
pSdb
=
pMnode
->
pSdb
;
int32_t
numOfRows
=
0
;
int32_t
numOfRows
=
0
;
...
@@ -1273,34 +1273,34 @@ static int32_t mndRetrieveTrans(SNodeMsg *pReq, SShowObj *pShow, char *data, int
...
@@ -1273,34 +1273,34 @@ static int32_t mndRetrieveTrans(SNodeMsg *pReq, SShowObj *pShow, char *data, int
cols
=
0
;
cols
=
0
;
pWrite
=
data
+
pShow
->
offset
[
cols
]
*
rows
+
pShow
->
bytes
[
cols
]
*
numOfRows
;
SColumnInfoData
*
pColInfo
=
taosArrayGet
(
pBlock
->
pDataBlock
,
cols
++
);
*
(
int32_t
*
)
pWrite
=
pTrans
->
id
;
colDataAppend
(
pColInfo
,
numOfRows
,
(
const
char
*
)
&
pTrans
->
id
,
false
);
cols
++
;
pWrite
=
data
+
pShow
->
offset
[
cols
]
*
rows
+
pShow
->
bytes
[
cols
]
*
numOfRows
;
pColInfo
=
taosArrayGet
(
pBlock
->
pDataBlock
,
cols
++
);
*
(
int64_t
*
)
pWrite
=
pTrans
->
createdTime
;
colDataAppend
(
pColInfo
,
numOfRows
,
(
const
char
*
)
&
pTrans
->
createdTime
,
false
);
cols
++
;
pWrite
=
data
+
pShow
->
offset
[
cols
]
*
rows
+
pShow
->
bytes
[
cols
]
*
numOfRows
;
char
stage
[
TSDB_TRANS_STAGE_LEN
+
VARSTR_HEADER_SIZE
]
=
{
0
};
STR_TO_VARSTR
(
pWrite
,
mndTransStr
(
pTrans
->
stage
));
STR_WITH_MAXSIZE_TO_VARSTR
(
stage
,
mndTransStr
(
pTrans
->
stage
),
pShow
->
bytes
[
cols
]);
cols
++
;
pColInfo
=
taosArrayGet
(
pBlock
->
pDataBlock
,
cols
++
);
colDataAppend
(
pColInfo
,
numOfRows
,
(
const
char
*
)
stage
,
false
);
pWrite
=
data
+
pShow
->
offset
[
cols
]
*
rows
+
pShow
->
bytes
[
cols
]
*
numOfRows
;
char
dbname
[
TSDB_DB_NAME_LEN
+
VARSTR_HEADER_SIZE
]
=
{
0
}
;
char
*
name
=
mnGetDbStr
(
pTrans
->
dbname
);
STR_WITH_MAXSIZE_TO_VARSTR
(
dbname
,
mndGetDbStr
(
pTrans
->
dbname
),
pShow
->
bytes
[
cols
]
);
STR_WITH_MAXSIZE_TO_VARSTR
(
pWrite
,
name
,
pShow
->
bytes
[
cols
]
);
pColInfo
=
taosArrayGet
(
pBlock
->
pDataBlock
,
cols
++
);
col
s
++
;
col
DataAppend
(
pColInfo
,
numOfRows
,
(
const
char
*
)
dbname
,
false
)
;
pWrite
=
data
+
pShow
->
offset
[
cols
]
*
rows
+
pShow
->
bytes
[
cols
]
*
numOfRows
;
char
transType
[
TSDB_TRANS_TYPE_LEN
+
VARSTR_HEADER_SIZE
]
=
{
0
};
STR_TO_VARSTR
(
pWrite
,
mndTransType
(
pTrans
->
transType
));
STR_WITH_MAXSIZE_TO_VARSTR
(
dbname
,
mndTransType
(
pTrans
->
transType
),
pShow
->
bytes
[
cols
]);
cols
++
;
pColInfo
=
taosArrayGet
(
pBlock
->
pDataBlock
,
cols
++
);
colDataAppend
(
pColInfo
,
numOfRows
,
(
const
char
*
)
transType
,
false
);
pWrite
=
data
+
pShow
->
offset
[
cols
]
*
rows
+
pShow
->
bytes
[
cols
]
*
numOfRows
;
pColInfo
=
taosArrayGet
(
pBlock
->
pDataBlock
,
cols
++
);
*
(
int64_t
*
)
pWrite
=
pTrans
->
lastExecTime
;
colDataAppend
(
pColInfo
,
numOfRows
,
(
const
char
*
)
&
pTrans
->
lastExecTime
,
false
);
cols
++
;
pWrite
=
data
+
pShow
->
offset
[
cols
]
*
rows
+
pShow
->
bytes
[
cols
]
*
numOfRows
;
char
lastError
[
TSDB_TRANS_ERROR_LEN
+
VARSTR_HEADER_SIZE
]
=
{
0
};
STR_TO_VARSTR
(
pWrite
,
pTrans
->
lastError
);
STR_WITH_MAXSIZE_TO_VARSTR
(
dbname
,
pTrans
->
lastError
,
pShow
->
bytes
[
cols
]);
cols
++
;
pColInfo
=
taosArrayGet
(
pBlock
->
pDataBlock
,
cols
++
);
colDataAppend
(
pColInfo
,
numOfRows
,
(
const
char
*
)
lastError
,
false
);
numOfRows
++
;
numOfRows
++
;
sdbRelease
(
pSdb
,
pTrans
);
sdbRelease
(
pSdb
,
pTrans
);
...
...
source/dnode/mnode/impl/test/CMakeLists.txt
浏览文件 @
fd9e5208
enable_testing
()
enable_testing
()
#add_subdirectory(user)
add_subdirectory
(
acct
)
add_subdirectory
(
acct
)
#add_subdirectory(trans)
#add_subdirectory(qnode)
#add_subdirectory(snode)
add_subdirectory
(
bnode
)
add_subdirectory
(
bnode
)
#add_subdirectory(show)
add_subdirectory
(
db
)
#add_subdirectory(profile)
add_subdirectory
(
dnode
)
#add_subdirectory(dnode)
add_subdirectory
(
func
)
#add_subdirectory(mnode)
add_subdirectory
(
mnode
)
#add_subdirectory(db)
add_subdirectory
(
profile
)
#add_subdirectory(stb)
add_subdirectory
(
qnode
)
#add_subdirectory(sma)
add_subdirectory
(
show
)
#add_subdirectory(func)
add_subdirectory
(
sma
)
#add_subdirectory(topic)
add_subdirectory
(
snode
)
add_subdirectory
(
stb
)
add_subdirectory
(
topic
)
add_subdirectory
(
trans
)
add_subdirectory
(
user
)
source/dnode/mnode/impl/test/db/CMakeLists.txt
浏览文件 @
fd9e5208
...
@@ -5,7 +5,7 @@ target_link_libraries(
...
@@ -5,7 +5,7 @@ target_link_libraries(
PUBLIC sut
PUBLIC sut
)
)
#
add_test(
add_test
(
# NAME mnode_test_db
NAME dbTest
# COMMAND mnode_test_db
COMMAND dbTest
#
)
)
source/dnode/mnode/impl/test/db/db.cpp
浏览文件 @
fd9e5208
...
@@ -26,29 +26,8 @@ class MndTestDb : public ::testing::Test {
...
@@ -26,29 +26,8 @@ class MndTestDb : public ::testing::Test {
Testbase
MndTestDb
::
test
;
Testbase
MndTestDb
::
test
;
TEST_F
(
MndTestDb
,
01
_ShowDb
)
{
TEST_F
(
MndTestDb
,
01
_ShowDb
)
{
test
.
SendShowMetaReq
(
TSDB_MGMT_TABLE_DB
,
""
);
test
.
SendShowReq
(
TSDB_MGMT_TABLE_DB
,
"user_databases"
,
""
);
CHECK_META
(
"show databases"
,
17
);
EXPECT_EQ
(
test
.
GetShowRows
(),
2
);
CHECK_SCHEMA
(
0
,
TSDB_DATA_TYPE_BINARY
,
TSDB_DB_NAME_LEN
-
1
+
VARSTR_HEADER_SIZE
,
"name"
);
CHECK_SCHEMA
(
1
,
TSDB_DATA_TYPE_TIMESTAMP
,
8
,
"create_time"
);
CHECK_SCHEMA
(
2
,
TSDB_DATA_TYPE_SMALLINT
,
2
,
"vgroups"
);
CHECK_SCHEMA
(
3
,
TSDB_DATA_TYPE_INT
,
4
,
"ntables"
);
CHECK_SCHEMA
(
4
,
TSDB_DATA_TYPE_SMALLINT
,
2
,
"replica"
);
CHECK_SCHEMA
(
5
,
TSDB_DATA_TYPE_SMALLINT
,
2
,
"quorum"
);
CHECK_SCHEMA
(
6
,
TSDB_DATA_TYPE_SMALLINT
,
2
,
"days"
);
CHECK_SCHEMA
(
7
,
TSDB_DATA_TYPE_BINARY
,
24
+
VARSTR_HEADER_SIZE
,
"keep0,keep1,keep2"
);
CHECK_SCHEMA
(
8
,
TSDB_DATA_TYPE_INT
,
4
,
"cache"
);
CHECK_SCHEMA
(
9
,
TSDB_DATA_TYPE_INT
,
4
,
"blocks"
);
CHECK_SCHEMA
(
10
,
TSDB_DATA_TYPE_INT
,
4
,
"minrows"
);
CHECK_SCHEMA
(
11
,
TSDB_DATA_TYPE_INT
,
4
,
"maxrows"
);
CHECK_SCHEMA
(
12
,
TSDB_DATA_TYPE_TINYINT
,
1
,
"wallevel"
);
CHECK_SCHEMA
(
13
,
TSDB_DATA_TYPE_INT
,
4
,
"fsync"
);
CHECK_SCHEMA
(
14
,
TSDB_DATA_TYPE_TINYINT
,
1
,
"comp"
);
CHECK_SCHEMA
(
15
,
TSDB_DATA_TYPE_TINYINT
,
1
,
"cachelast"
);
CHECK_SCHEMA
(
16
,
TSDB_DATA_TYPE_BINARY
,
3
+
VARSTR_HEADER_SIZE
,
"precision"
);
// CHECK_SCHEMA(17, TSDB_DATA_TYPE_TINYINT, 1, "update");
test
.
SendShowRetrieveReq
();
EXPECT_EQ
(
test
.
GetShowRows
(),
0
);
}
}
TEST_F
(
MndTestDb
,
02
_Create_Alter_Drop_Db
)
{
TEST_F
(
MndTestDb
,
02
_Create_Alter_Drop_Db
)
{
...
@@ -58,7 +37,7 @@ TEST_F(MndTestDb, 02_Create_Alter_Drop_Db) {
...
@@ -58,7 +37,7 @@ TEST_F(MndTestDb, 02_Create_Alter_Drop_Db) {
createReq
.
numOfVgroups
=
2
;
createReq
.
numOfVgroups
=
2
;
createReq
.
cacheBlockSize
=
16
;
createReq
.
cacheBlockSize
=
16
;
createReq
.
totalBlocks
=
10
;
createReq
.
totalBlocks
=
10
;
createReq
.
daysPerFile
=
10
;
createReq
.
daysPerFile
=
10
00
;
createReq
.
daysToKeep0
=
3650
;
createReq
.
daysToKeep0
=
3650
;
createReq
.
daysToKeep1
=
3650
;
createReq
.
daysToKeep1
=
3650
;
createReq
.
daysToKeep2
=
3650
;
createReq
.
daysToKeep2
=
3650
;
...
@@ -66,6 +45,7 @@ TEST_F(MndTestDb, 02_Create_Alter_Drop_Db) {
...
@@ -66,6 +45,7 @@ TEST_F(MndTestDb, 02_Create_Alter_Drop_Db) {
createReq
.
maxRows
=
4096
;
createReq
.
maxRows
=
4096
;
createReq
.
commitTime
=
3600
;
createReq
.
commitTime
=
3600
;
createReq
.
fsyncPeriod
=
3000
;
createReq
.
fsyncPeriod
=
3000
;
createReq
.
ttl
=
0
;
createReq
.
walLevel
=
1
;
createReq
.
walLevel
=
1
;
createReq
.
precision
=
0
;
createReq
.
precision
=
0
;
createReq
.
compression
=
2
;
createReq
.
compression
=
2
;
...
@@ -74,6 +54,9 @@ TEST_F(MndTestDb, 02_Create_Alter_Drop_Db) {
...
@@ -74,6 +54,9 @@ TEST_F(MndTestDb, 02_Create_Alter_Drop_Db) {
createReq
.
update
=
0
;
createReq
.
update
=
0
;
createReq
.
cacheLastRow
=
0
;
createReq
.
cacheLastRow
=
0
;
createReq
.
ignoreExist
=
1
;
createReq
.
ignoreExist
=
1
;
createReq
.
streamMode
=
0
;
createReq
.
singleSTable
=
0
;
createReq
.
numOfRetensions
=
0
;
int32_t
contLen
=
tSerializeSCreateDbReq
(
NULL
,
0
,
&
createReq
);
int32_t
contLen
=
tSerializeSCreateDbReq
(
NULL
,
0
,
&
createReq
);
void
*
pReq
=
rpcMallocCont
(
contLen
);
void
*
pReq
=
rpcMallocCont
(
contLen
);
...
@@ -84,47 +67,11 @@ TEST_F(MndTestDb, 02_Create_Alter_Drop_Db) {
...
@@ -84,47 +67,11 @@ TEST_F(MndTestDb, 02_Create_Alter_Drop_Db) {
ASSERT_EQ
(
pRsp
->
code
,
0
);
ASSERT_EQ
(
pRsp
->
code
,
0
);
}
}
test
.
SendShowMetaReq
(
TSDB_MGMT_TABLE_DB
,
""
);
test
.
SendShowReq
(
TSDB_MGMT_TABLE_DB
,
"user_databases"
,
""
);
CHECK_META
(
"show databases"
,
17
);
EXPECT_EQ
(
test
.
GetShowRows
(),
3
);
test
.
SendShowRetrieveReq
();
test
.
SendShowReq
(
TSDB_MGMT_TABLE_VGROUP
,
"vgroups"
,
"1.d1"
);
EXPECT_EQ
(
test
.
GetShowRows
(),
1
);
CheckBinary
(
"d1"
,
TSDB_DB_NAME_LEN
-
1
);
CheckTimestamp
();
CheckInt16
(
2
);
// vgroups
CheckInt32
(
0
);
// ntables
CheckInt16
(
1
);
// replica
CheckInt16
(
1
);
// quorum
CheckInt16
(
10
);
// days
CheckBinary
(
"3650,3650,3650"
,
24
);
// days
CheckInt32
(
16
);
// cache
CheckInt32
(
10
);
// blocks
CheckInt32
(
100
);
// minrows
CheckInt32
(
4096
);
// maxrows
CheckInt8
(
1
);
// wallevel
CheckInt32
(
3000
);
// fsync
CheckInt8
(
2
);
// comp
CheckInt8
(
0
);
// cachelast
CheckBinary
(
"ms"
,
3
);
// precision
CheckInt8
(
0
);
// update
test
.
SendShowMetaReq
(
TSDB_MGMT_TABLE_VGROUP
,
"1.d1"
);
CHECK_META
(
"show vgroups"
,
4
);
CHECK_SCHEMA
(
0
,
TSDB_DATA_TYPE_INT
,
4
,
"vgId"
);
CHECK_SCHEMA
(
1
,
TSDB_DATA_TYPE_INT
,
4
,
"tables"
);
CHECK_SCHEMA
(
2
,
TSDB_DATA_TYPE_SMALLINT
,
2
,
"v1_dnode"
);
CHECK_SCHEMA
(
3
,
TSDB_DATA_TYPE_BINARY
,
9
+
VARSTR_HEADER_SIZE
,
"v1_status"
);
test
.
SendShowRetrieveReq
();
EXPECT_EQ
(
test
.
GetShowRows
(),
2
);
EXPECT_EQ
(
test
.
GetShowRows
(),
2
);
CheckInt32
(
2
);
CheckInt32
(
3
);
IgnoreInt32
();
IgnoreInt32
();
CheckInt16
(
1
);
CheckInt16
(
1
);
CheckBinary
(
"master"
,
9
);
CheckBinary
(
"master"
,
9
);
{
{
SAlterDbReq
alterdbReq
=
{
0
};
SAlterDbReq
alterdbReq
=
{
0
};
...
@@ -147,55 +94,14 @@ TEST_F(MndTestDb, 02_Create_Alter_Drop_Db) {
...
@@ -147,55 +94,14 @@ TEST_F(MndTestDb, 02_Create_Alter_Drop_Db) {
ASSERT_EQ
(
pRsp
->
code
,
0
);
ASSERT_EQ
(
pRsp
->
code
,
0
);
}
}
test
.
SendShowMetaReq
(
TSDB_MGMT_TABLE_DB
,
""
);
test
.
SendShowReq
(
TSDB_MGMT_TABLE_DB
,
"user_databases"
,
""
);
test
.
SendShowRetrieveReq
();
EXPECT_EQ
(
test
.
GetShowRows
(),
3
);
EXPECT_EQ
(
test
.
GetShowRows
(),
1
);
CheckBinary
(
"d1"
,
TSDB_DB_NAME_LEN
-
1
);
CheckTimestamp
();
CheckInt16
(
2
);
// vgroups
CheckInt32
(
0
);
// tables
CheckInt16
(
1
);
// replica
CheckInt16
(
2
);
// quorum
CheckInt16
(
10
);
// days
CheckBinary
(
"300,400,500"
,
24
);
// days
CheckInt32
(
16
);
// cache
CheckInt32
(
12
);
// blocks
CheckInt32
(
100
);
// minrows
CheckInt32
(
4096
);
// maxrows
CheckInt8
(
2
);
// wallevel
CheckInt32
(
4000
);
// fsync
CheckInt8
(
2
);
// comp
CheckInt8
(
1
);
// cachelast
CheckBinary
(
"ms"
,
3
);
// precision
CheckInt8
(
0
);
// update
// restart
// restart
test
.
Restart
();
test
.
Restart
();
test
.
SendShowMetaReq
(
TSDB_MGMT_TABLE_DB
,
""
);
test
.
SendShowReq
(
TSDB_MGMT_TABLE_DB
,
"user_databases"
,
""
);
CHECK_META
(
"show databases"
,
17
);
EXPECT_EQ
(
test
.
GetShowRows
(),
3
);
test
.
SendShowRetrieveReq
();
EXPECT_EQ
(
test
.
GetShowRows
(),
1
);
CheckBinary
(
"d1"
,
TSDB_DB_NAME_LEN
-
1
);
CheckTimestamp
();
CheckInt16
(
2
);
// vgroups
CheckInt32
(
0
);
// tables
CheckInt16
(
1
);
// replica
CheckInt16
(
2
);
// quorum
CheckInt16
(
10
);
// days
CheckBinary
(
"300,400,500"
,
24
);
// days
CheckInt32
(
16
);
// cache
CheckInt32
(
12
);
// blocks
CheckInt32
(
100
);
// minrows
CheckInt32
(
4096
);
// maxrows
CheckInt8
(
2
);
// wallevel
CheckInt32
(
4000
);
// fsync
CheckInt8
(
2
);
// comp
CheckInt8
(
1
);
// cachelast
CheckBinary
(
"ms"
,
3
);
// precision
CheckInt8
(
0
);
// update
{
{
SDropDbReq
dropdbReq
=
{
0
};
SDropDbReq
dropdbReq
=
{
0
};
...
@@ -214,11 +120,8 @@ TEST_F(MndTestDb, 02_Create_Alter_Drop_Db) {
...
@@ -214,11 +120,8 @@ TEST_F(MndTestDb, 02_Create_Alter_Drop_Db) {
EXPECT_STREQ
(
dropdbRsp
.
db
,
"1.d1"
);
EXPECT_STREQ
(
dropdbRsp
.
db
,
"1.d1"
);
}
}
test
.
SendShowMetaReq
(
TSDB_MGMT_TABLE_DB
,
""
);
test
.
SendShowReq
(
TSDB_MGMT_TABLE_DB
,
"user_databases"
,
""
);
CHECK_META
(
"show databases"
,
17
);
EXPECT_EQ
(
test
.
GetShowRows
(),
2
);
test
.
SendShowRetrieveReq
();
EXPECT_EQ
(
test
.
GetShowRows
(),
0
);
}
}
TEST_F
(
MndTestDb
,
03
_Create_Use_Restart_Use_Db
)
{
TEST_F
(
MndTestDb
,
03
_Create_Use_Restart_Use_Db
)
{
...
@@ -228,7 +131,7 @@ TEST_F(MndTestDb, 03_Create_Use_Restart_Use_Db) {
...
@@ -228,7 +131,7 @@ TEST_F(MndTestDb, 03_Create_Use_Restart_Use_Db) {
createReq
.
numOfVgroups
=
2
;
createReq
.
numOfVgroups
=
2
;
createReq
.
cacheBlockSize
=
16
;
createReq
.
cacheBlockSize
=
16
;
createReq
.
totalBlocks
=
10
;
createReq
.
totalBlocks
=
10
;
createReq
.
daysPerFile
=
10
;
createReq
.
daysPerFile
=
10
00
;
createReq
.
daysToKeep0
=
3650
;
createReq
.
daysToKeep0
=
3650
;
createReq
.
daysToKeep1
=
3650
;
createReq
.
daysToKeep1
=
3650
;
createReq
.
daysToKeep2
=
3650
;
createReq
.
daysToKeep2
=
3650
;
...
@@ -236,6 +139,7 @@ TEST_F(MndTestDb, 03_Create_Use_Restart_Use_Db) {
...
@@ -236,6 +139,7 @@ TEST_F(MndTestDb, 03_Create_Use_Restart_Use_Db) {
createReq
.
maxRows
=
4096
;
createReq
.
maxRows
=
4096
;
createReq
.
commitTime
=
3600
;
createReq
.
commitTime
=
3600
;
createReq
.
fsyncPeriod
=
3000
;
createReq
.
fsyncPeriod
=
3000
;
createReq
.
ttl
=
0
;
createReq
.
walLevel
=
1
;
createReq
.
walLevel
=
1
;
createReq
.
precision
=
0
;
createReq
.
precision
=
0
;
createReq
.
compression
=
2
;
createReq
.
compression
=
2
;
...
@@ -244,6 +148,9 @@ TEST_F(MndTestDb, 03_Create_Use_Restart_Use_Db) {
...
@@ -244,6 +148,9 @@ TEST_F(MndTestDb, 03_Create_Use_Restart_Use_Db) {
createReq
.
update
=
0
;
createReq
.
update
=
0
;
createReq
.
cacheLastRow
=
0
;
createReq
.
cacheLastRow
=
0
;
createReq
.
ignoreExist
=
1
;
createReq
.
ignoreExist
=
1
;
createReq
.
streamMode
=
0
;
createReq
.
singleSTable
=
0
;
createReq
.
numOfRetensions
=
0
;
int32_t
contLen
=
tSerializeSCreateDbReq
(
NULL
,
0
,
&
createReq
);
int32_t
contLen
=
tSerializeSCreateDbReq
(
NULL
,
0
,
&
createReq
);
void
*
pReq
=
rpcMallocCont
(
contLen
);
void
*
pReq
=
rpcMallocCont
(
contLen
);
...
@@ -254,12 +161,8 @@ TEST_F(MndTestDb, 03_Create_Use_Restart_Use_Db) {
...
@@ -254,12 +161,8 @@ TEST_F(MndTestDb, 03_Create_Use_Restart_Use_Db) {
ASSERT_EQ
(
pRsp
->
code
,
0
);
ASSERT_EQ
(
pRsp
->
code
,
0
);
}
}
test
.
SendShowMetaReq
(
TSDB_MGMT_TABLE_DB
,
""
);
test
.
SendShowReq
(
TSDB_MGMT_TABLE_DB
,
"user_databases"
,
""
);
CHECK_META
(
"show databases"
,
17
);
EXPECT_EQ
(
test
.
GetShowRows
(),
3
);
test
.
SendShowRetrieveReq
();
EXPECT_EQ
(
test
.
GetShowRows
(),
1
);
CheckBinary
(
"d2"
,
TSDB_DB_NAME_LEN
-
1
);
uint64_t
d2_uid
=
0
;
uint64_t
d2_uid
=
0
;
...
...
source/dnode/mnode/impl/test/dnode/CMakeLists.txt
浏览文件 @
fd9e5208
...
@@ -5,7 +5,7 @@ target_link_libraries(
...
@@ -5,7 +5,7 @@ target_link_libraries(
PUBLIC sut
PUBLIC sut
)
)
#
add_test(
add_test
(
# NAME mnode_test_dnode
NAME mdnodeTest
# COMMAND mnode_test_dnode
COMMAND mdnodeTest
#
)
)
source/dnode/mnode/impl/test/dnode/mdnode.cpp
浏览文件 @
fd9e5208
...
@@ -51,27 +51,8 @@ TestServer MndTestDnode::server4;
...
@@ -51,27 +51,8 @@ TestServer MndTestDnode::server4;
TestServer
MndTestDnode
::
server5
;
TestServer
MndTestDnode
::
server5
;
TEST_F
(
MndTestDnode
,
01
_ShowDnode
)
{
TEST_F
(
MndTestDnode
,
01
_ShowDnode
)
{
test
.
SendShowMetaReq
(
TSDB_MGMT_TABLE_DNODE
,
""
);
test
.
SendShowReq
(
TSDB_MGMT_TABLE_DNODE
,
"dnodes"
,
""
);
CHECK_META
(
"show dnodes"
,
7
);
CHECK_SCHEMA
(
0
,
TSDB_DATA_TYPE_SMALLINT
,
2
,
"id"
);
CHECK_SCHEMA
(
1
,
TSDB_DATA_TYPE_BINARY
,
TSDB_EP_LEN
+
VARSTR_HEADER_SIZE
,
"endpoint"
);
CHECK_SCHEMA
(
2
,
TSDB_DATA_TYPE_SMALLINT
,
2
,
"vnodes"
);
CHECK_SCHEMA
(
3
,
TSDB_DATA_TYPE_SMALLINT
,
2
,
"support_vnodes"
);
CHECK_SCHEMA
(
4
,
TSDB_DATA_TYPE_BINARY
,
10
+
VARSTR_HEADER_SIZE
,
"status"
);
CHECK_SCHEMA
(
5
,
TSDB_DATA_TYPE_TIMESTAMP
,
8
,
"create_time"
);
CHECK_SCHEMA
(
6
,
TSDB_DATA_TYPE_BINARY
,
24
+
VARSTR_HEADER_SIZE
,
"offline_reason"
);
test
.
SendShowRetrieveReq
();
EXPECT_EQ
(
test
.
GetShowRows
(),
1
);
EXPECT_EQ
(
test
.
GetShowRows
(),
1
);
CheckInt16
(
1
);
CheckBinary
(
"localhost:9023"
,
TSDB_EP_LEN
);
CheckInt16
(
0
);
CheckInt16
(
16
);
CheckBinary
(
"ready"
,
10
);
CheckTimestamp
();
CheckBinary
(
""
,
24
);
}
}
TEST_F
(
MndTestDnode
,
02
_ConfigDnode
)
{
TEST_F
(
MndTestDnode
,
02
_ConfigDnode
)
{
...
@@ -162,25 +143,8 @@ TEST_F(MndTestDnode, 03_Create_Dnode) {
...
@@ -162,25 +143,8 @@ TEST_F(MndTestDnode, 03_Create_Dnode) {
taosMsleep
(
1300
);
taosMsleep
(
1300
);
test
.
SendShowMetaReq
(
TSDB_MGMT_TABLE_DNODE
,
""
);
test
.
SendShowReq
(
TSDB_MGMT_TABLE_DNODE
,
"dnodes"
,
""
);
CHECK_META
(
"show dnodes"
,
7
);
test
.
SendShowRetrieveReq
();
EXPECT_EQ
(
test
.
GetShowRows
(),
2
);
EXPECT_EQ
(
test
.
GetShowRows
(),
2
);
CheckInt16
(
1
);
CheckInt16
(
2
);
CheckBinary
(
"localhost:9023"
,
TSDB_EP_LEN
);
CheckBinary
(
"localhost:9024"
,
TSDB_EP_LEN
);
CheckInt16
(
0
);
CheckInt16
(
0
);
CheckInt16
(
16
);
CheckInt16
(
16
);
CheckBinary
(
"ready"
,
10
);
CheckBinary
(
"ready"
,
10
);
CheckTimestamp
();
CheckTimestamp
();
CheckBinary
(
""
,
24
);
CheckBinary
(
""
,
24
);
}
}
TEST_F
(
MndTestDnode
,
04
_Drop_Dnode
)
{
TEST_F
(
MndTestDnode
,
04
_Drop_Dnode
)
{
...
@@ -236,19 +200,9 @@ TEST_F(MndTestDnode, 04_Drop_Dnode) {
...
@@ -236,19 +200,9 @@ TEST_F(MndTestDnode, 04_Drop_Dnode) {
ASSERT_EQ
(
pRsp
->
code
,
TSDB_CODE_MND_DNODE_NOT_EXIST
);
ASSERT_EQ
(
pRsp
->
code
,
TSDB_CODE_MND_DNODE_NOT_EXIST
);
}
}
test
.
SendShowMetaReq
(
TSDB_MGMT_TABLE_DNODE
,
""
);
test
.
SendShowReq
(
TSDB_MGMT_TABLE_DNODE
,
"dnodes"
,
""
);
CHECK_META
(
"show dnodes"
,
7
);
test
.
SendShowRetrieveReq
();
EXPECT_EQ
(
test
.
GetShowRows
(),
1
);
EXPECT_EQ
(
test
.
GetShowRows
(),
1
);
CheckInt16
(
1
);
CheckBinary
(
"localhost:9023"
,
TSDB_EP_LEN
);
CheckInt16
(
0
);
CheckInt16
(
16
);
CheckBinary
(
"ready"
,
10
);
CheckTimestamp
();
CheckBinary
(
""
,
24
);
taosMsleep
(
2000
);
taosMsleep
(
2000
);
server2
.
Stop
();
server2
.
Stop
();
server2
.
DoStart
();
server2
.
DoStart
();
...
@@ -298,40 +252,9 @@ TEST_F(MndTestDnode, 05_Create_Drop_Restart_Dnode) {
...
@@ -298,40 +252,9 @@ TEST_F(MndTestDnode, 05_Create_Drop_Restart_Dnode) {
}
}
taosMsleep
(
1300
);
taosMsleep
(
1300
);
test
.
SendShowMetaReq
(
TSDB_MGMT_TABLE_DNODE
,
""
);
test
.
SendShowReq
(
TSDB_MGMT_TABLE_DNODE
,
"dnodes"
,
""
);
CHECK_META
(
"show dnodes"
,
7
);
test
.
SendShowRetrieveReq
();
EXPECT_EQ
(
test
.
GetShowRows
(),
4
);
EXPECT_EQ
(
test
.
GetShowRows
(),
4
);
CheckInt16
(
1
);
CheckInt16
(
3
);
CheckInt16
(
4
);
CheckInt16
(
5
);
CheckBinary
(
"localhost:9023"
,
TSDB_EP_LEN
);
CheckBinary
(
"localhost:9025"
,
TSDB_EP_LEN
);
CheckBinary
(
"localhost:9026"
,
TSDB_EP_LEN
);
CheckBinary
(
"localhost:9027"
,
TSDB_EP_LEN
);
CheckInt16
(
0
);
CheckInt16
(
0
);
CheckInt16
(
0
);
CheckInt16
(
0
);
CheckInt16
(
16
);
CheckInt16
(
16
);
CheckInt16
(
16
);
CheckInt16
(
16
);
CheckBinary
(
"ready"
,
10
);
CheckBinary
(
"ready"
,
10
);
CheckBinary
(
"ready"
,
10
);
CheckBinary
(
"ready"
,
10
);
CheckTimestamp
();
CheckTimestamp
();
CheckTimestamp
();
CheckTimestamp
();
CheckBinary
(
""
,
24
);
CheckBinary
(
""
,
24
);
CheckBinary
(
""
,
24
);
CheckBinary
(
""
,
24
);
// restart
// restart
uInfo
(
"stop all server"
);
uInfo
(
"stop all server"
);
test
.
Restart
();
test
.
Restart
();
...
@@ -341,37 +264,6 @@ TEST_F(MndTestDnode, 05_Create_Drop_Restart_Dnode) {
...
@@ -341,37 +264,6 @@ TEST_F(MndTestDnode, 05_Create_Drop_Restart_Dnode) {
server5
.
Restart
();
server5
.
Restart
();
taosMsleep
(
1300
);
taosMsleep
(
1300
);
test
.
SendShowMetaReq
(
TSDB_MGMT_TABLE_DNODE
,
""
);
test
.
SendShowReq
(
TSDB_MGMT_TABLE_DNODE
,
"dnodes"
,
""
);
CHECK_META
(
"show dnodes"
,
7
);
test
.
SendShowRetrieveReq
();
EXPECT_EQ
(
test
.
GetShowRows
(),
4
);
EXPECT_EQ
(
test
.
GetShowRows
(),
4
);
CheckInt16
(
1
);
CheckInt16
(
3
);
CheckInt16
(
4
);
CheckInt16
(
5
);
CheckBinary
(
"localhost:9023"
,
TSDB_EP_LEN
);
CheckBinary
(
"localhost:9025"
,
TSDB_EP_LEN
);
CheckBinary
(
"localhost:9026"
,
TSDB_EP_LEN
);
CheckBinary
(
"localhost:9027"
,
TSDB_EP_LEN
);
CheckInt16
(
0
);
CheckInt16
(
0
);
CheckInt16
(
0
);
CheckInt16
(
0
);
CheckInt16
(
16
);
CheckInt16
(
16
);
CheckInt16
(
16
);
CheckInt16
(
16
);
CheckBinary
(
"ready"
,
10
);
CheckBinary
(
"ready"
,
10
);
CheckBinary
(
"ready"
,
10
);
CheckBinary
(
"ready"
,
10
);
CheckTimestamp
();
CheckTimestamp
();
CheckTimestamp
();
CheckTimestamp
();
CheckBinary
(
""
,
24
);
CheckBinary
(
""
,
24
);
CheckBinary
(
""
,
24
);
CheckBinary
(
""
,
24
);
}
}
source/dnode/mnode/impl/test/func/CMakeLists.txt
浏览文件 @
fd9e5208
aux_source_directory
(
.
FUNC
_SRC
)
aux_source_directory
(
.
MNODE_FUNC_TEST
_SRC
)
add_executable
(
mnode_test_func
${
FUNC
_SRC
}
)
add_executable
(
funcTest
${
MNODE_FUNC_TEST
_SRC
}
)
target_link_libraries
(
target_link_libraries
(
mnode_test_func
funcTest
PUBLIC sut
PUBLIC sut
)
)
add_test
(
add_test
(
NAME
mnode_test_func
NAME
funcTest
COMMAND
mnode_test_func
COMMAND
funcTest
)
)
source/dnode/mnode/impl/test/func/func.cpp
浏览文件 @
fd9e5208
...
@@ -26,18 +26,7 @@ class MndTestFunc : public ::testing::Test {
...
@@ -26,18 +26,7 @@ class MndTestFunc : public ::testing::Test {
Testbase
MndTestFunc
::
test
;
Testbase
MndTestFunc
::
test
;
TEST_F
(
MndTestFunc
,
01
_Show_Func
)
{
TEST_F
(
MndTestFunc
,
01
_Show_Func
)
{
test
.
SendShowMetaReq
(
TSDB_MGMT_TABLE_FUNC
,
""
);
test
.
SendShowReq
(
TSDB_MGMT_TABLE_FUNC
,
"user_functions"
,
""
);
CHECK_META
(
"show functions"
,
7
);
CHECK_SCHEMA
(
0
,
TSDB_DATA_TYPE_BINARY
,
TSDB_FUNC_NAME_LEN
+
VARSTR_HEADER_SIZE
,
"name"
);
CHECK_SCHEMA
(
1
,
TSDB_DATA_TYPE_BINARY
,
PATH_MAX
+
VARSTR_HEADER_SIZE
,
"comment"
);
CHECK_SCHEMA
(
2
,
TSDB_DATA_TYPE_INT
,
4
,
"aggregate"
);
CHECK_SCHEMA
(
3
,
TSDB_DATA_TYPE_BINARY
,
TSDB_TYPE_STR_MAX_LEN
+
VARSTR_HEADER_SIZE
,
"outputtype"
);
CHECK_SCHEMA
(
4
,
TSDB_DATA_TYPE_TIMESTAMP
,
8
,
"create_time"
);
CHECK_SCHEMA
(
5
,
TSDB_DATA_TYPE_INT
,
4
,
"code_len"
);
CHECK_SCHEMA
(
6
,
TSDB_DATA_TYPE_INT
,
4
,
"bufsize"
);
test
.
SendShowRetrieveReq
();
EXPECT_EQ
(
test
.
GetShowRows
(),
0
);
EXPECT_EQ
(
test
.
GetShowRows
(),
0
);
}
}
...
@@ -194,19 +183,8 @@ TEST_F(MndTestFunc, 02_Create_Func) {
...
@@ -194,19 +183,8 @@ TEST_F(MndTestFunc, 02_Create_Func) {
}
}
}
}
test
.
SendShowMetaReq
(
TSDB_MGMT_TABLE_FUNC
,
""
);
test
.
SendShowReq
(
TSDB_MGMT_TABLE_FUNC
,
"user_functions"
,
""
);
CHECK_META
(
"show functions"
,
7
);
test
.
SendShowRetrieveReq
();
EXPECT_EQ
(
test
.
GetShowRows
(),
1
);
EXPECT_EQ
(
test
.
GetShowRows
(),
1
);
CheckBinary
(
"f1"
,
TSDB_FUNC_NAME_LEN
);
CheckBinaryByte
(
'm'
,
TSDB_FUNC_COMMENT_LEN
);
CheckInt32
(
0
);
CheckBinary
(
"SMALLINT"
,
TSDB_TYPE_STR_MAX_LEN
);
CheckTimestamp
();
CheckInt32
(
TSDB_FUNC_CODE_LEN
);
CheckInt32
(
4
);
}
}
TEST_F
(
MndTestFunc
,
03
_Retrieve_Func
)
{
TEST_F
(
MndTestFunc
,
03
_Retrieve_Func
)
{
...
@@ -331,10 +309,7 @@ TEST_F(MndTestFunc, 03_Retrieve_Func) {
...
@@ -331,10 +309,7 @@ TEST_F(MndTestFunc, 03_Retrieve_Func) {
ASSERT_NE
(
pRsp
,
nullptr
);
ASSERT_NE
(
pRsp
,
nullptr
);
ASSERT_EQ
(
pRsp
->
code
,
0
);
ASSERT_EQ
(
pRsp
->
code
,
0
);
test
.
SendShowMetaReq
(
TSDB_MGMT_TABLE_FUNC
,
""
);
test
.
SendShowReq
(
TSDB_MGMT_TABLE_FUNC
,
"user_functions"
,
""
);
CHECK_META
(
"show functions"
,
7
);
test
.
SendShowRetrieveReq
();
EXPECT_EQ
(
test
.
GetShowRows
(),
2
);
EXPECT_EQ
(
test
.
GetShowRows
(),
2
);
}
}
...
@@ -529,20 +504,12 @@ TEST_F(MndTestFunc, 04_Drop_Func) {
...
@@ -529,20 +504,12 @@ TEST_F(MndTestFunc, 04_Drop_Func) {
ASSERT_EQ
(
pRsp
->
code
,
0
);
ASSERT_EQ
(
pRsp
->
code
,
0
);
}
}
test
.
SendShowMetaReq
(
TSDB_MGMT_TABLE_FUNC
,
""
);
test
.
SendShowReq
(
TSDB_MGMT_TABLE_FUNC
,
"user_functions"
,
""
);
CHECK_META
(
"show functions"
,
7
);
test
.
SendShowRetrieveReq
();
EXPECT_EQ
(
test
.
GetShowRows
(),
1
);
EXPECT_EQ
(
test
.
GetShowRows
(),
1
);
// restart
// restart
test
.
Restart
();
test
.
Restart
();
test
.
SendShowMetaReq
(
TSDB_MGMT_TABLE_FUNC
,
""
);
test
.
SendShowReq
(
TSDB_MGMT_TABLE_FUNC
,
"user_functions"
,
""
);
CHECK_META
(
"show functions"
,
7
);
test
.
SendShowRetrieveReq
();
EXPECT_EQ
(
test
.
GetShowRows
(),
1
);
EXPECT_EQ
(
test
.
GetShowRows
(),
1
);
CheckBinary
(
"f2"
,
TSDB_FUNC_NAME_LEN
);
}
}
source/dnode/mnode/impl/test/mnode/CMakeLists.txt
浏览文件 @
fd9e5208
aux_source_directory
(
. MTEST_SRC
)
aux_source_directory
(
. M
NODE_MNODE_
TEST_SRC
)
add_executable
(
m
node_test_mnode
${
M
TEST_SRC
}
)
add_executable
(
m
mnodeTest
${
MNODE_MNODE_
TEST_SRC
}
)
target_link_libraries
(
target_link_libraries
(
m
node_test_mnode
m
mnodeTest
PUBLIC sut
PUBLIC sut
)
)
add_test
(
add_test
(
NAME m
node_test_mnode
NAME m
mnodeTest
COMMAND m
node_test_mnode
COMMAND m
mnodeTest
)
)
source/dnode/mnode/impl/test/mnode/mnode.cpp
浏览文件 @
fd9e5208
...
@@ -39,23 +39,8 @@ Testbase MndTestMnode::test;
...
@@ -39,23 +39,8 @@ Testbase MndTestMnode::test;
TestServer
MndTestMnode
::
server2
;
TestServer
MndTestMnode
::
server2
;
TEST_F
(
MndTestMnode
,
01
_ShowDnode
)
{
TEST_F
(
MndTestMnode
,
01
_ShowDnode
)
{
test
.
SendShowMetaReq
(
TSDB_MGMT_TABLE_MNODE
,
""
);
test
.
SendShowReq
(
TSDB_MGMT_TABLE_MNODE
,
"mnodes"
,
""
);
CHECK_META
(
"show mnodes"
,
5
);
CHECK_SCHEMA
(
0
,
TSDB_DATA_TYPE_SMALLINT
,
2
,
"id"
);
CHECK_SCHEMA
(
1
,
TSDB_DATA_TYPE_BINARY
,
TSDB_EP_LEN
+
VARSTR_HEADER_SIZE
,
"endpoint"
);
CHECK_SCHEMA
(
2
,
TSDB_DATA_TYPE_BINARY
,
12
+
VARSTR_HEADER_SIZE
,
"role"
);
CHECK_SCHEMA
(
3
,
TSDB_DATA_TYPE_TIMESTAMP
,
8
,
"create_time"
);
CHECK_SCHEMA
(
4
,
TSDB_DATA_TYPE_TIMESTAMP
,
8
,
"role_time"
);
test
.
SendShowRetrieveReq
();
EXPECT_EQ
(
test
.
GetShowRows
(),
1
);
EXPECT_EQ
(
test
.
GetShowRows
(),
1
);
CheckInt16
(
1
);
CheckBinary
(
"localhost:9028"
,
TSDB_EP_LEN
);
CheckBinary
(
"master"
,
12
);
CheckTimestamp
();
IgnoreTimestamp
();
}
}
TEST_F
(
MndTestMnode
,
02
_Create_Mnode_Invalid_Id
)
{
TEST_F
(
MndTestMnode
,
02
_Create_Mnode_Invalid_Id
)
{
...
@@ -104,8 +89,7 @@ TEST_F(MndTestMnode, 04_Create_Mnode) {
...
@@ -104,8 +89,7 @@ TEST_F(MndTestMnode, 04_Create_Mnode) {
ASSERT_EQ
(
pRsp
->
code
,
0
);
ASSERT_EQ
(
pRsp
->
code
,
0
);
taosMsleep
(
1300
);
taosMsleep
(
1300
);
test
.
SendShowMetaReq
(
TSDB_MGMT_TABLE_DNODE
,
""
);
test
.
SendShowReq
(
TSDB_MGMT_TABLE_DNODE
,
"dnodes"
,
""
);
test
.
SendShowRetrieveReq
();
EXPECT_EQ
(
test
.
GetShowRows
(),
2
);
EXPECT_EQ
(
test
.
GetShowRows
(),
2
);
}
}
...
@@ -122,20 +106,8 @@ TEST_F(MndTestMnode, 04_Create_Mnode) {
...
@@ -122,20 +106,8 @@ TEST_F(MndTestMnode, 04_Create_Mnode) {
ASSERT_NE
(
pRsp
,
nullptr
);
ASSERT_NE
(
pRsp
,
nullptr
);
ASSERT_EQ
(
pRsp
->
code
,
0
);
ASSERT_EQ
(
pRsp
->
code
,
0
);
test
.
SendShowMetaReq
(
TSDB_MGMT_TABLE_MNODE
,
""
);
test
.
SendShowReq
(
TSDB_MGMT_TABLE_MNODE
,
"mnodes"
,
""
);
test
.
SendShowRetrieveReq
();
EXPECT_EQ
(
test
.
GetShowRows
(),
2
);
EXPECT_EQ
(
test
.
GetShowRows
(),
2
);
CheckInt16
(
1
);
CheckInt16
(
2
);
CheckBinary
(
"localhost:9028"
,
TSDB_EP_LEN
);
CheckBinary
(
"localhost:9029"
,
TSDB_EP_LEN
);
CheckBinary
(
"master"
,
12
);
CheckBinary
(
"slave"
,
12
);
CheckTimestamp
();
CheckTimestamp
();
IgnoreTimestamp
();
IgnoreTimestamp
();
}
}
{
{
...
@@ -151,15 +123,8 @@ TEST_F(MndTestMnode, 04_Create_Mnode) {
...
@@ -151,15 +123,8 @@ TEST_F(MndTestMnode, 04_Create_Mnode) {
ASSERT_NE
(
pRsp
,
nullptr
);
ASSERT_NE
(
pRsp
,
nullptr
);
ASSERT_EQ
(
pRsp
->
code
,
0
);
ASSERT_EQ
(
pRsp
->
code
,
0
);
test
.
SendShowMetaReq
(
TSDB_MGMT_TABLE_MNODE
,
""
);
test
.
SendShowReq
(
TSDB_MGMT_TABLE_MNODE
,
"mnodes"
,
""
);
test
.
SendShowRetrieveReq
();
EXPECT_EQ
(
test
.
GetShowRows
(),
1
);
EXPECT_EQ
(
test
.
GetShowRows
(),
1
);
CheckInt16
(
1
);
CheckBinary
(
"localhost:9028"
,
TSDB_EP_LEN
);
CheckBinary
(
"master"
,
12
);
CheckTimestamp
();
IgnoreTimestamp
();
}
}
{
{
...
...
source/dnode/mnode/impl/test/profile/CMakeLists.txt
浏览文件 @
fd9e5208
aux_source_directory
(
.
PROFILE
_SRC
)
aux_source_directory
(
.
MNODE_PROFILE_TEST
_SRC
)
add_executable
(
mnode_test_profile
${
PROFILE
_SRC
}
)
add_executable
(
profileTest
${
MNODE_PROFILE_TEST
_SRC
}
)
target_link_libraries
(
target_link_libraries
(
mnode_test_profile
profileTest
PUBLIC sut
PUBLIC sut
)
)
add_test
(
add_test
(
NAME
mnode_test_profile
NAME
profileTest
COMMAND
mnode_test_profile
COMMAND
profileTest
)
)
source/dnode/mnode/impl/test/profile/profile.cpp
浏览文件 @
fd9e5208
...
@@ -46,7 +46,7 @@ TEST_F(MndTestProfile, 01_ConnectMsg) {
...
@@ -46,7 +46,7 @@ TEST_F(MndTestProfile, 01_ConnectMsg) {
EXPECT_EQ
(
connectRsp
.
acctId
,
1
);
EXPECT_EQ
(
connectRsp
.
acctId
,
1
);
EXPECT_GT
(
connectRsp
.
clusterId
,
0
);
EXPECT_GT
(
connectRsp
.
clusterId
,
0
);
EXPECT_
EQ
(
connectRsp
.
connId
,
1
);
EXPECT_
NE
(
connectRsp
.
connId
,
0
);
EXPECT_EQ
(
connectRsp
.
superUser
,
1
);
EXPECT_EQ
(
connectRsp
.
superUser
,
1
);
EXPECT_EQ
(
connectRsp
.
epSet
.
inUse
,
0
);
EXPECT_EQ
(
connectRsp
.
epSet
.
inUse
,
0
);
...
@@ -74,32 +74,16 @@ TEST_F(MndTestProfile, 02_ConnectMsg_InvalidDB) {
...
@@ -74,32 +74,16 @@ TEST_F(MndTestProfile, 02_ConnectMsg_InvalidDB) {
}
}
TEST_F
(
MndTestProfile
,
03
_ConnectMsg_Show
)
{
TEST_F
(
MndTestProfile
,
03
_ConnectMsg_Show
)
{
test
.
SendShowMetaReq
(
TSDB_MGMT_TABLE_CONNS
,
""
);
test
.
SendShowReq
(
TSDB_MGMT_TABLE_CONNS
,
"connections"
,
""
);
CHECK_META
(
"show connections"
,
7
);
EXPECT_EQ
(
test
.
GetShowRows
(),
0
);
CHECK_SCHEMA
(
0
,
TSDB_DATA_TYPE_INT
,
4
,
"connId"
);
CHECK_SCHEMA
(
1
,
TSDB_DATA_TYPE_BINARY
,
TSDB_USER_LEN
+
VARSTR_HEADER_SIZE
,
"user"
);
CHECK_SCHEMA
(
2
,
TSDB_DATA_TYPE_BINARY
,
TSDB_APP_NAME_LEN
+
VARSTR_HEADER_SIZE
,
"program"
);
CHECK_SCHEMA
(
3
,
TSDB_DATA_TYPE_INT
,
4
,
"pid"
);
CHECK_SCHEMA
(
4
,
TSDB_DATA_TYPE_BINARY
,
TSDB_IPv4ADDR_LEN
+
6
+
VARSTR_HEADER_SIZE
,
"ip:port"
);
CHECK_SCHEMA
(
5
,
TSDB_DATA_TYPE_TIMESTAMP
,
8
,
"login_time"
);
CHECK_SCHEMA
(
6
,
TSDB_DATA_TYPE_TIMESTAMP
,
8
,
"last_access"
);
test
.
SendShowRetrieveReq
();
EXPECT_EQ
(
test
.
GetShowRows
(),
1
);
CheckInt32
(
1
);
CheckBinary
(
"root"
,
TSDB_USER_LEN
);
CheckBinary
(
"mnode_test_profile"
,
TSDB_APP_NAME_LEN
);
CheckInt32
(
1234
);
IgnoreBinary
(
TSDB_IPv4ADDR_LEN
+
6
);
CheckTimestamp
();
CheckTimestamp
();
}
}
TEST_F
(
MndTestProfile
,
04
_HeartBeatMsg
)
{
TEST_F
(
MndTestProfile
,
04
_HeartBeatMsg
)
{
SClientHbBatchReq
batchReq
=
{
0
};
SClientHbBatchReq
batchReq
=
{
0
};
batchReq
.
reqs
=
taosArrayInit
(
0
,
sizeof
(
SClientHbReq
));
batchReq
.
reqs
=
taosArrayInit
(
0
,
sizeof
(
SClientHbReq
));
SClientHbReq
req
=
{
0
};
SClientHbReq
req
=
{
0
};
req
.
connKey
=
{.
connId
=
123
,
.
hbType
=
CONN_TYPE__TMQ
};
req
.
connKey
.
tscRid
=
123
;
req
.
connKey
.
connType
=
CONN_TYPE__TMQ
;
req
.
info
=
taosHashInit
(
64
,
hbKeyHashFunc
,
1
,
HASH_ENTRY_LOCK
);
req
.
info
=
taosHashInit
(
64
,
hbKeyHashFunc
,
1
,
HASH_ENTRY_LOCK
);
SKv
kv
=
{
0
};
SKv
kv
=
{
0
};
kv
.
key
=
123
;
kv
.
key
=
123
;
...
@@ -311,24 +295,6 @@ TEST_F(MndTestProfile, 08_KillQueryMsg_InvalidConn) {
...
@@ -311,24 +295,6 @@ TEST_F(MndTestProfile, 08_KillQueryMsg_InvalidConn) {
}
}
TEST_F
(
MndTestProfile
,
09
_KillQueryMsg
)
{
TEST_F
(
MndTestProfile
,
09
_KillQueryMsg
)
{
test
.
SendShowMetaReq
(
TSDB_MGMT_TABLE_QUERIES
,
""
);
test
.
SendShowReq
(
TSDB_MGMT_TABLE_QUERIES
,
"queries"
,
""
);
CHECK_META
(
"show queries"
,
14
);
CHECK_SCHEMA
(
0
,
TSDB_DATA_TYPE_INT
,
4
,
"queryId"
);
CHECK_SCHEMA
(
1
,
TSDB_DATA_TYPE_INT
,
4
,
"connId"
);
CHECK_SCHEMA
(
2
,
TSDB_DATA_TYPE_BINARY
,
TSDB_USER_LEN
+
VARSTR_HEADER_SIZE
,
"user"
);
CHECK_SCHEMA
(
3
,
TSDB_DATA_TYPE_BINARY
,
TSDB_IPv4ADDR_LEN
+
6
+
VARSTR_HEADER_SIZE
,
"ip:port"
);
CHECK_SCHEMA
(
4
,
TSDB_DATA_TYPE_BINARY
,
22
+
VARSTR_HEADER_SIZE
,
"qid"
);
CHECK_SCHEMA
(
5
,
TSDB_DATA_TYPE_TIMESTAMP
,
8
,
"created_time"
);
CHECK_SCHEMA
(
6
,
TSDB_DATA_TYPE_BIGINT
,
8
,
"time"
);
CHECK_SCHEMA
(
7
,
TSDB_DATA_TYPE_BINARY
,
18
+
VARSTR_HEADER_SIZE
,
"sql_obj_id"
);
CHECK_SCHEMA
(
8
,
TSDB_DATA_TYPE_INT
,
4
,
"pid"
);
CHECK_SCHEMA
(
9
,
TSDB_DATA_TYPE_BINARY
,
TSDB_EP_LEN
+
VARSTR_HEADER_SIZE
,
"ep"
);
CHECK_SCHEMA
(
10
,
TSDB_DATA_TYPE_BOOL
,
1
,
"stable_query"
);
CHECK_SCHEMA
(
11
,
TSDB_DATA_TYPE_INT
,
4
,
"sub_queries"
);
CHECK_SCHEMA
(
12
,
TSDB_DATA_TYPE_BINARY
,
TSDB_SHOW_SUBQUERY_LEN
+
VARSTR_HEADER_SIZE
,
"sub_query_info"
);
CHECK_SCHEMA
(
13
,
TSDB_DATA_TYPE_BINARY
,
TSDB_SHOW_SQL_LEN
+
VARSTR_HEADER_SIZE
,
"sql"
);
test
.
SendShowRetrieveReq
();
EXPECT_EQ
(
test
.
GetShowRows
(),
0
);
EXPECT_EQ
(
test
.
GetShowRows
(),
0
);
}
}
source/dnode/mnode/impl/test/qnode/CMakeLists.txt
浏览文件 @
fd9e5208
aux_source_directory
(
.
Q
TEST_SRC
)
aux_source_directory
(
.
MNODE_QNODE_
TEST_SRC
)
add_executable
(
m
node_test_qnode
${
Q
TEST_SRC
}
)
add_executable
(
m
qnodeTest
${
MNODE_QNODE_
TEST_SRC
}
)
target_link_libraries
(
target_link_libraries
(
m
node_test_qnode
m
qnodeTest
PUBLIC sut
PUBLIC sut
)
)
add_test
(
add_test
(
NAME m
node_test_qnode
NAME m
qnodeTest
COMMAND m
node_test_qnode
COMMAND m
qnodeTest
)
)
source/dnode/mnode/impl/test/qnode/qnode.cpp
浏览文件 @
fd9e5208
...
@@ -39,14 +39,7 @@ Testbase MndTestQnode::test;
...
@@ -39,14 +39,7 @@ Testbase MndTestQnode::test;
TestServer
MndTestQnode
::
server2
;
TestServer
MndTestQnode
::
server2
;
TEST_F
(
MndTestQnode
,
01
_Show_Qnode
)
{
TEST_F
(
MndTestQnode
,
01
_Show_Qnode
)
{
test
.
SendShowMetaReq
(
TSDB_MGMT_TABLE_QNODE
,
""
);
test
.
SendShowReq
(
TSDB_MGMT_TABLE_QNODE
,
"qnodes"
,
""
);
CHECK_META
(
"show qnodes"
,
3
);
CHECK_SCHEMA
(
0
,
TSDB_DATA_TYPE_SMALLINT
,
2
,
"id"
);
CHECK_SCHEMA
(
1
,
TSDB_DATA_TYPE_BINARY
,
TSDB_EP_LEN
+
VARSTR_HEADER_SIZE
,
"endpoint"
);
CHECK_SCHEMA
(
2
,
TSDB_DATA_TYPE_TIMESTAMP
,
8
,
"create_time"
);
test
.
SendShowRetrieveReq
();
EXPECT_EQ
(
test
.
GetShowRows
(),
0
);
EXPECT_EQ
(
test
.
GetShowRows
(),
0
);
}
}
...
@@ -76,14 +69,8 @@ TEST_F(MndTestQnode, 02_Create_Qnode) {
...
@@ -76,14 +69,8 @@ TEST_F(MndTestQnode, 02_Create_Qnode) {
ASSERT_NE
(
pRsp
,
nullptr
);
ASSERT_NE
(
pRsp
,
nullptr
);
ASSERT_EQ
(
pRsp
->
code
,
0
);
ASSERT_EQ
(
pRsp
->
code
,
0
);
test
.
SendShowMetaReq
(
TSDB_MGMT_TABLE_QNODE
,
""
);
test
.
SendShowReq
(
TSDB_MGMT_TABLE_QNODE
,
"qnodes"
,
""
);
CHECK_META
(
"show qnodes"
,
3
);
test
.
SendShowRetrieveReq
();
EXPECT_EQ
(
test
.
GetShowRows
(),
1
);
EXPECT_EQ
(
test
.
GetShowRows
(),
1
);
CheckInt16
(
1
);
CheckBinary
(
"localhost:9014"
,
TSDB_EP_LEN
);
CheckTimestamp
();
}
}
{
{
...
@@ -115,8 +102,7 @@ TEST_F(MndTestQnode, 03_Drop_Qnode) {
...
@@ -115,8 +102,7 @@ TEST_F(MndTestQnode, 03_Drop_Qnode) {
ASSERT_EQ
(
pRsp
->
code
,
0
);
ASSERT_EQ
(
pRsp
->
code
,
0
);
taosMsleep
(
1300
);
taosMsleep
(
1300
);
test
.
SendShowMetaReq
(
TSDB_MGMT_TABLE_DNODE
,
""
);
test
.
SendShowReq
(
TSDB_MGMT_TABLE_DNODE
,
"dnodes"
,
""
);
test
.
SendShowRetrieveReq
();
EXPECT_EQ
(
test
.
GetShowRows
(),
2
);
EXPECT_EQ
(
test
.
GetShowRows
(),
2
);
}
}
...
@@ -132,16 +118,8 @@ TEST_F(MndTestQnode, 03_Drop_Qnode) {
...
@@ -132,16 +118,8 @@ TEST_F(MndTestQnode, 03_Drop_Qnode) {
ASSERT_NE
(
pRsp
,
nullptr
);
ASSERT_NE
(
pRsp
,
nullptr
);
ASSERT_EQ
(
pRsp
->
code
,
0
);
ASSERT_EQ
(
pRsp
->
code
,
0
);
test
.
SendShowMetaReq
(
TSDB_MGMT_TABLE_QNODE
,
""
);
test
.
SendShowReq
(
TSDB_MGMT_TABLE_QNODE
,
"qnodes"
,
""
);
test
.
SendShowRetrieveReq
();
EXPECT_EQ
(
test
.
GetShowRows
(),
2
);
EXPECT_EQ
(
test
.
GetShowRows
(),
2
);
CheckInt16
(
1
);
CheckInt16
(
2
);
CheckBinary
(
"localhost:9014"
,
TSDB_EP_LEN
);
CheckBinary
(
"localhost:9015"
,
TSDB_EP_LEN
);
CheckTimestamp
();
CheckTimestamp
();
}
}
{
{
...
@@ -156,13 +134,8 @@ TEST_F(MndTestQnode, 03_Drop_Qnode) {
...
@@ -156,13 +134,8 @@ TEST_F(MndTestQnode, 03_Drop_Qnode) {
ASSERT_NE
(
pRsp
,
nullptr
);
ASSERT_NE
(
pRsp
,
nullptr
);
ASSERT_EQ
(
pRsp
->
code
,
0
);
ASSERT_EQ
(
pRsp
->
code
,
0
);
test
.
SendShowMetaReq
(
TSDB_MGMT_TABLE_QNODE
,
""
);
test
.
SendShowReq
(
TSDB_MGMT_TABLE_QNODE
,
"qnodes"
,
""
);
test
.
SendShowRetrieveReq
();
EXPECT_EQ
(
test
.
GetShowRows
(),
1
);
EXPECT_EQ
(
test
.
GetShowRows
(),
1
);
CheckInt16
(
1
);
CheckBinary
(
"localhost:9014"
,
TSDB_EP_LEN
);
CheckTimestamp
();
}
}
{
{
...
...
source/dnode/mnode/impl/test/show/CMakeLists.txt
浏览文件 @
fd9e5208
aux_source_directory
(
.
SHOW
_SRC
)
aux_source_directory
(
.
MNODE_SHOW_TEST
_SRC
)
add_executable
(
mnode_test_show
${
SHOW
_SRC
}
)
add_executable
(
showTest
${
MNODE_SHOW_TEST
_SRC
}
)
target_link_libraries
(
target_link_libraries
(
mnode_test_show
showTest
PUBLIC sut
PUBLIC sut
)
)
add_test
(
add_test
(
NAME
mnode_test_show
NAME
showTest
COMMAND
mnode_test_show
COMMAND
showTest
)
)
source/dnode/mnode/impl/test/show/show.cpp
浏览文件 @
fd9e5208
...
@@ -34,9 +34,9 @@ TEST_F(MndTestShow, 01_ShowMsg_InvalidMsgMax) {
...
@@ -34,9 +34,9 @@ TEST_F(MndTestShow, 01_ShowMsg_InvalidMsgMax) {
tSerializeSShowReq
(
pReq
,
contLen
,
&
showReq
);
tSerializeSShowReq
(
pReq
,
contLen
,
&
showReq
);
tFreeSShowReq
(
&
showReq
);
tFreeSShowReq
(
&
showReq
);
SRpcMsg
*
pRsp
=
test
.
SendReq
(
TDMT_MND_S
HOW
,
pReq
,
contLen
);
SRpcMsg
*
pRsp
=
test
.
SendReq
(
TDMT_MND_S
YSTABLE_RETRIEVE
,
pReq
,
contLen
);
ASSERT_NE
(
pRsp
,
nullptr
);
ASSERT_NE
(
pRsp
,
nullptr
);
ASSERT_EQ
(
pRsp
->
code
,
TSDB_CODE_
MND_INVALID_MSG_TYPE
);
ASSERT_EQ
(
pRsp
->
code
,
TSDB_CODE_
INVALID_MSG
);
}
}
TEST_F
(
MndTestShow
,
02
_ShowMsg_InvalidMsgStart
)
{
TEST_F
(
MndTestShow
,
02
_ShowMsg_InvalidMsgStart
)
{
...
@@ -48,9 +48,9 @@ TEST_F(MndTestShow, 02_ShowMsg_InvalidMsgStart) {
...
@@ -48,9 +48,9 @@ TEST_F(MndTestShow, 02_ShowMsg_InvalidMsgStart) {
tSerializeSShowReq
(
pReq
,
contLen
,
&
showReq
);
tSerializeSShowReq
(
pReq
,
contLen
,
&
showReq
);
tFreeSShowReq
(
&
showReq
);
tFreeSShowReq
(
&
showReq
);
SRpcMsg
*
pRsp
=
test
.
SendReq
(
TDMT_MND_S
HOW
,
pReq
,
contLen
);
SRpcMsg
*
pRsp
=
test
.
SendReq
(
TDMT_MND_S
YSTABLE_RETRIEVE
,
pReq
,
contLen
);
ASSERT_NE
(
pRsp
,
nullptr
);
ASSERT_NE
(
pRsp
,
nullptr
);
ASSERT_EQ
(
pRsp
->
code
,
TSDB_CODE_
MND_INVALID_MSG_TYPE
);
ASSERT_EQ
(
pRsp
->
code
,
TSDB_CODE_
INVALID_MSG
);
}
}
TEST_F
(
MndTestShow
,
03
_ShowMsg_Conn
)
{
TEST_F
(
MndTestShow
,
03
_ShowMsg_Conn
)
{
...
@@ -67,42 +67,11 @@ TEST_F(MndTestShow, 03_ShowMsg_Conn) {
...
@@ -67,42 +67,11 @@ TEST_F(MndTestShow, 03_ShowMsg_Conn) {
ASSERT_NE
(
pRsp
,
nullptr
);
ASSERT_NE
(
pRsp
,
nullptr
);
ASSERT_EQ
(
pRsp
->
code
,
0
);
ASSERT_EQ
(
pRsp
->
code
,
0
);
test
.
SendShowMetaReq
(
TSDB_MGMT_TABLE_CONNS
,
""
);
test
.
SendShowReq
(
TSDB_MGMT_TABLE_CONNS
,
"connections"
,
""
);
// EXPECT_EQ(test.GetShowRows(), 1);
STableMetaRsp
*
pMeta
=
test
.
GetShowMeta
();
EXPECT_STREQ
(
pMeta
->
tbName
,
"show connections"
);
EXPECT_EQ
(
pMeta
->
numOfTags
,
0
);
EXPECT_EQ
(
pMeta
->
numOfColumns
,
7
);
EXPECT_EQ
(
pMeta
->
precision
,
0
);
EXPECT_EQ
(
pMeta
->
tableType
,
0
);
EXPECT_EQ
(
pMeta
->
update
,
0
);
EXPECT_EQ
(
pMeta
->
sversion
,
0
);
EXPECT_EQ
(
pMeta
->
tversion
,
0
);
EXPECT_EQ
(
pMeta
->
tuid
,
0
);
EXPECT_EQ
(
pMeta
->
suid
,
0
);
test
.
SendShowRetrieveReq
();
SRetrieveTableRsp
*
pRetrieveRsp
=
test
.
GetRetrieveRsp
();
EXPECT_EQ
(
pRetrieveRsp
->
numOfRows
,
1
);
EXPECT_EQ
(
pRetrieveRsp
->
useconds
,
0
);
EXPECT_EQ
(
pRetrieveRsp
->
completed
,
1
);
EXPECT_EQ
(
pRetrieveRsp
->
precision
,
TSDB_TIME_PRECISION_MILLI
);
EXPECT_EQ
(
pRetrieveRsp
->
compressed
,
0
);
EXPECT_EQ
(
pRetrieveRsp
->
compLen
,
0
);
}
}
TEST_F
(
MndTestShow
,
04
_ShowMsg_Cluster
)
{
TEST_F
(
MndTestShow
,
04
_ShowMsg_Cluster
)
{
test
.
SendShowMetaReq
(
TSDB_MGMT_TABLE_CLUSTER
,
""
);
test
.
SendShowReq
(
TSDB_MGMT_TABLE_CLUSTER
,
"cluster"
,
""
);
CHECK_META
(
"show cluster"
,
3
);
CHECK_SCHEMA
(
0
,
TSDB_DATA_TYPE_BIGINT
,
8
,
"id"
);
CHECK_SCHEMA
(
1
,
TSDB_DATA_TYPE_BINARY
,
TSDB_CLUSTER_ID_LEN
+
VARSTR_HEADER_SIZE
,
"name"
);
CHECK_SCHEMA
(
2
,
TSDB_DATA_TYPE_TIMESTAMP
,
8
,
"create_time"
);
test
.
SendShowRetrieveReq
();
EXPECT_EQ
(
test
.
GetShowRows
(),
1
);
EXPECT_EQ
(
test
.
GetShowRows
(),
1
);
IgnoreInt64
();
IgnoreBinary
(
TSDB_CLUSTER_ID_LEN
);
CheckTimestamp
();
}
}
\ No newline at end of file
source/dnode/mnode/impl/test/sma/CMakeLists.txt
浏览文件 @
fd9e5208
aux_source_directory
(
.
SMA
_SRC
)
aux_source_directory
(
.
MNODE_SMA_TEST
_SRC
)
add_executable
(
mnode_test_sma
${
SMA
_SRC
}
)
add_executable
(
smaTest
${
MNODE_SMA_TEST
_SRC
}
)
target_link_libraries
(
target_link_libraries
(
mnode_test_sma
smaTest
PUBLIC sut
PUBLIC sut
)
)
add_test
(
add_test
(
NAME
mnode_test_sma
NAME
smaTest
COMMAND
mnode_test_sma
COMMAND
smaTest
)
)
source/dnode/mnode/impl/test/sma/sma.cpp
浏览文件 @
fd9e5208
...
@@ -207,7 +207,7 @@ TEST_F(MndTestSma, 01_Create_Show_Meta_Drop_Restart_Stb) {
...
@@ -207,7 +207,7 @@ TEST_F(MndTestSma, 01_Create_Show_Meta_Drop_Restart_Stb) {
pReq = BuildCreateStbReq(stbname, &contLen);
pReq = BuildCreateStbReq(stbname, &contLen);
pRsp = test.SendReq(TDMT_MND_CREATE_STB, pReq, contLen);
pRsp = test.SendReq(TDMT_MND_CREATE_STB, pReq, contLen);
ASSERT_EQ(pRsp->code, 0);
ASSERT_EQ(pRsp->code, 0);
test.SendShow
MetaReq(TSDB_MGMT_TABLE_STB,
dbname);
test.SendShow
Req(TSDB_MGMT_TABLE_STB, "user_stables",
dbname);
test.SendShowRetrieveReq();
test.SendShowRetrieveReq();
EXPECT_EQ(test.GetShowRows(), 1);
EXPECT_EQ(test.GetShowRows(), 1);
}
}
...
@@ -216,7 +216,7 @@ TEST_F(MndTestSma, 01_Create_Show_Meta_Drop_Restart_Stb) {
...
@@ -216,7 +216,7 @@ TEST_F(MndTestSma, 01_Create_Show_Meta_Drop_Restart_Stb) {
pReq = BuildCreateTSmaReq(smaname, stbname, 0, "expr", "tagsFilter", "sql", "ast", &contLen);
pReq = BuildCreateTSmaReq(smaname, stbname, 0, "expr", "tagsFilter", "sql", "ast", &contLen);
pRsp = test.SendReq(TDMT_MND_CREATE_SMA, pReq, contLen);
pRsp = test.SendReq(TDMT_MND_CREATE_SMA, pReq, contLen);
ASSERT_EQ(pRsp->code, 0);
ASSERT_EQ(pRsp->code, 0);
test.SendShow
Meta
Req(TSDB_MGMT_TABLE_INDEX, dbname);
test.SendShowReq(TSDB_MGMT_TABLE_INDEX, dbname);
test.SendShowRetrieveReq();
test.SendShowRetrieveReq();
EXPECT_EQ(test.GetShowRows(), 1);
EXPECT_EQ(test.GetShowRows(), 1);
}
}
...
@@ -225,7 +225,7 @@ TEST_F(MndTestSma, 01_Create_Show_Meta_Drop_Restart_Stb) {
...
@@ -225,7 +225,7 @@ TEST_F(MndTestSma, 01_Create_Show_Meta_Drop_Restart_Stb) {
test.Restart();
test.Restart();
{
{
test.SendShow
Meta
Req(TSDB_MGMT_TABLE_INDEX, dbname);
test.SendShowReq(TSDB_MGMT_TABLE_INDEX, dbname);
CHECK_META("show indexes", 3);
CHECK_META("show indexes", 3);
test.SendShowRetrieveReq();
test.SendShowRetrieveReq();
EXPECT_EQ(test.GetShowRows(), 1);
EXPECT_EQ(test.GetShowRows(), 1);
...
@@ -239,7 +239,7 @@ TEST_F(MndTestSma, 01_Create_Show_Meta_Drop_Restart_Stb) {
...
@@ -239,7 +239,7 @@ TEST_F(MndTestSma, 01_Create_Show_Meta_Drop_Restart_Stb) {
pReq = BuildDropTSmaReq(smaname, 0, &contLen);
pReq = BuildDropTSmaReq(smaname, 0, &contLen);
pRsp = test.SendReq(TDMT_MND_DROP_SMA, pReq, contLen);
pRsp = test.SendReq(TDMT_MND_DROP_SMA, pReq, contLen);
ASSERT_EQ(pRsp->code, 0);
ASSERT_EQ(pRsp->code, 0);
test.SendShow
Meta
Req(TSDB_MGMT_TABLE_INDEX, dbname);
test.SendShowReq(TSDB_MGMT_TABLE_INDEX, dbname);
test.SendShowRetrieveReq();
test.SendShowRetrieveReq();
EXPECT_EQ(test.GetShowRows(), 0);
EXPECT_EQ(test.GetShowRows(), 0);
}
}
...
@@ -263,10 +263,8 @@ TEST_F(MndTestSma, 02_Create_Show_Meta_Drop_Restart_BSma) {
...
@@ -263,10 +263,8 @@ TEST_F(MndTestSma, 02_Create_Show_Meta_Drop_Restart_BSma) {
pReq
=
BuildCreateBSmaStbReq
(
stbname
,
&
contLen
);
pReq
=
BuildCreateBSmaStbReq
(
stbname
,
&
contLen
);
pRsp
=
test
.
SendReq
(
TDMT_MND_CREATE_STB
,
pReq
,
contLen
);
pRsp
=
test
.
SendReq
(
TDMT_MND_CREATE_STB
,
pReq
,
contLen
);
ASSERT_EQ
(
pRsp
->
code
,
0
);
ASSERT_EQ
(
pRsp
->
code
,
0
);
test
.
SendShowMetaReq
(
TSDB_MGMT_TABLE_STB
,
dbname
);
test
.
SendShowReq
(
TSDB_MGMT_TABLE_STB
,
"user_stables"
,
dbname
);
test
.
SendShowRetrieveReq
();
EXPECT_EQ
(
test
.
GetShowRows
(),
1
);
EXPECT_EQ
(
test
.
GetShowRows
(),
1
);
// CheckBinary("bsmastb", TSDB_TABLE_NAME_LEN);
}
}
test
.
Restart
();
test
.
Restart
();
...
@@ -281,8 +279,7 @@ TEST_F(MndTestSma, 02_Create_Show_Meta_Drop_Restart_BSma) {
...
@@ -281,8 +279,7 @@ TEST_F(MndTestSma, 02_Create_Show_Meta_Drop_Restart_BSma) {
pReq
=
BuildDropStbReq
(
stbname
,
&
contLen
);
pReq
=
BuildDropStbReq
(
stbname
,
&
contLen
);
pRsp
=
test
.
SendReq
(
TDMT_MND_DROP_STB
,
pReq
,
contLen
);
pRsp
=
test
.
SendReq
(
TDMT_MND_DROP_STB
,
pReq
,
contLen
);
ASSERT_EQ
(
pRsp
->
code
,
0
);
ASSERT_EQ
(
pRsp
->
code
,
0
);
test
.
SendShowMetaReq
(
TSDB_MGMT_TABLE_STB
,
dbname
);
test
.
SendShowReq
(
TSDB_MGMT_TABLE_STB
,
"user_stables"
,
dbname
);
test
.
SendShowRetrieveReq
();
EXPECT_EQ
(
test
.
GetShowRows
(),
0
);
EXPECT_EQ
(
test
.
GetShowRows
(),
0
);
}
}
...
...
source/dnode/mnode/impl/test/snode/CMakeLists.txt
浏览文件 @
fd9e5208
aux_source_directory
(
.
S
TEST_SRC
)
aux_source_directory
(
.
MNODE_SNODE_
TEST_SRC
)
add_executable
(
m
node_test_snode
${
S
TEST_SRC
}
)
add_executable
(
m
snodeTest
${
MNODE_SNODE_
TEST_SRC
}
)
target_link_libraries
(
target_link_libraries
(
m
node_test_snode
m
snodeTest
PUBLIC sut
PUBLIC sut
)
)
add_test
(
add_test
(
NAME m
node_test_snode
NAME m
snodeTest
COMMAND m
node_test_snode
COMMAND m
snodeTest
)
)
source/dnode/mnode/impl/test/snode/snode.cpp
浏览文件 @
fd9e5208
...
@@ -39,14 +39,7 @@ Testbase MndTestSnode::test;
...
@@ -39,14 +39,7 @@ Testbase MndTestSnode::test;
TestServer
MndTestSnode
::
server2
;
TestServer
MndTestSnode
::
server2
;
TEST_F
(
MndTestSnode
,
01
_Show_Snode
)
{
TEST_F
(
MndTestSnode
,
01
_Show_Snode
)
{
test
.
SendShowMetaReq
(
TSDB_MGMT_TABLE_SNODE
,
""
);
test
.
SendShowReq
(
TSDB_MGMT_TABLE_SNODE
,
"snodes"
,
""
);
CHECK_META
(
"show snodes"
,
3
);
CHECK_SCHEMA
(
0
,
TSDB_DATA_TYPE_SMALLINT
,
2
,
"id"
);
CHECK_SCHEMA
(
1
,
TSDB_DATA_TYPE_BINARY
,
TSDB_EP_LEN
+
VARSTR_HEADER_SIZE
,
"endpoint"
);
CHECK_SCHEMA
(
2
,
TSDB_DATA_TYPE_TIMESTAMP
,
8
,
"create_time"
);
test
.
SendShowRetrieveReq
();
EXPECT_EQ
(
test
.
GetShowRows
(),
0
);
EXPECT_EQ
(
test
.
GetShowRows
(),
0
);
}
}
...
@@ -76,14 +69,8 @@ TEST_F(MndTestSnode, 02_Create_Snode) {
...
@@ -76,14 +69,8 @@ TEST_F(MndTestSnode, 02_Create_Snode) {
ASSERT_NE
(
pRsp
,
nullptr
);
ASSERT_NE
(
pRsp
,
nullptr
);
ASSERT_EQ
(
pRsp
->
code
,
0
);
ASSERT_EQ
(
pRsp
->
code
,
0
);
test
.
SendShowMetaReq
(
TSDB_MGMT_TABLE_SNODE
,
""
);
test
.
SendShowReq
(
TSDB_MGMT_TABLE_SNODE
,
"snodes"
,
""
);
CHECK_META
(
"show snodes"
,
3
);
test
.
SendShowRetrieveReq
();
EXPECT_EQ
(
test
.
GetShowRows
(),
1
);
EXPECT_EQ
(
test
.
GetShowRows
(),
1
);
CheckInt16
(
1
);
CheckBinary
(
"localhost:9016"
,
TSDB_EP_LEN
);
CheckTimestamp
();
}
}
{
{
...
@@ -115,8 +102,7 @@ TEST_F(MndTestSnode, 03_Drop_Snode) {
...
@@ -115,8 +102,7 @@ TEST_F(MndTestSnode, 03_Drop_Snode) {
ASSERT_EQ
(
pRsp
->
code
,
0
);
ASSERT_EQ
(
pRsp
->
code
,
0
);
taosMsleep
(
1300
);
taosMsleep
(
1300
);
test
.
SendShowMetaReq
(
TSDB_MGMT_TABLE_DNODE
,
""
);
test
.
SendShowReq
(
TSDB_MGMT_TABLE_DNODE
,
"dnodes"
,
""
);
test
.
SendShowRetrieveReq
();
EXPECT_EQ
(
test
.
GetShowRows
(),
2
);
EXPECT_EQ
(
test
.
GetShowRows
(),
2
);
}
}
...
@@ -132,16 +118,8 @@ TEST_F(MndTestSnode, 03_Drop_Snode) {
...
@@ -132,16 +118,8 @@ TEST_F(MndTestSnode, 03_Drop_Snode) {
ASSERT_NE
(
pRsp
,
nullptr
);
ASSERT_NE
(
pRsp
,
nullptr
);
ASSERT_EQ
(
pRsp
->
code
,
0
);
ASSERT_EQ
(
pRsp
->
code
,
0
);
test
.
SendShowMetaReq
(
TSDB_MGMT_TABLE_SNODE
,
""
);
test
.
SendShowReq
(
TSDB_MGMT_TABLE_SNODE
,
"snodes"
,
""
);
test
.
SendShowRetrieveReq
();
EXPECT_EQ
(
test
.
GetShowRows
(),
2
);
EXPECT_EQ
(
test
.
GetShowRows
(),
2
);
CheckInt16
(
1
);
CheckInt16
(
2
);
CheckBinary
(
"localhost:9016"
,
TSDB_EP_LEN
);
CheckBinary
(
"localhost:9017"
,
TSDB_EP_LEN
);
CheckTimestamp
();
CheckTimestamp
();
}
}
{
{
...
@@ -156,13 +134,8 @@ TEST_F(MndTestSnode, 03_Drop_Snode) {
...
@@ -156,13 +134,8 @@ TEST_F(MndTestSnode, 03_Drop_Snode) {
ASSERT_NE
(
pRsp
,
nullptr
);
ASSERT_NE
(
pRsp
,
nullptr
);
ASSERT_EQ
(
pRsp
->
code
,
0
);
ASSERT_EQ
(
pRsp
->
code
,
0
);
test
.
SendShowMetaReq
(
TSDB_MGMT_TABLE_SNODE
,
""
);
test
.
SendShowReq
(
TSDB_MGMT_TABLE_SNODE
,
"snodes"
,
""
);
test
.
SendShowRetrieveReq
();
EXPECT_EQ
(
test
.
GetShowRows
(),
1
);
EXPECT_EQ
(
test
.
GetShowRows
(),
1
);
CheckInt16
(
1
);
CheckBinary
(
"localhost:9016"
,
TSDB_EP_LEN
);
CheckTimestamp
();
}
}
{
{
...
...
source/dnode/mnode/impl/test/stb/CMakeLists.txt
浏览文件 @
fd9e5208
...
@@ -5,7 +5,7 @@ target_link_libraries(
...
@@ -5,7 +5,7 @@ target_link_libraries(
PUBLIC sut
PUBLIC sut
)
)
#
add_test(
add_test
(
# NAME mnode_test_stb
NAME stbTest
# COMMAND mnode_test_stb
COMMAND stbTest
#
)
)
source/dnode/mnode/impl/test/stb/stb.cpp
浏览文件 @
fd9e5208
...
@@ -43,7 +43,7 @@ void* MndTestStb::BuildCreateDbReq(const char* dbname, int32_t* pContLen) {
...
@@ -43,7 +43,7 @@ void* MndTestStb::BuildCreateDbReq(const char* dbname, int32_t* pContLen) {
createReq
.
numOfVgroups
=
2
;
createReq
.
numOfVgroups
=
2
;
createReq
.
cacheBlockSize
=
16
;
createReq
.
cacheBlockSize
=
16
;
createReq
.
totalBlocks
=
10
;
createReq
.
totalBlocks
=
10
;
createReq
.
daysPerFile
=
10
;
createReq
.
daysPerFile
=
10
00
;
createReq
.
daysToKeep0
=
3650
;
createReq
.
daysToKeep0
=
3650
;
createReq
.
daysToKeep1
=
3650
;
createReq
.
daysToKeep1
=
3650
;
createReq
.
daysToKeep2
=
3650
;
createReq
.
daysToKeep2
=
3650
;
...
@@ -314,19 +314,8 @@ TEST_F(MndTestStb, 01_Create_Show_Meta_Drop_Restart_Stb) {
...
@@ -314,19 +314,8 @@ TEST_F(MndTestStb, 01_Create_Show_Meta_Drop_Restart_Stb) {
}
}
{
{
test
.
SendShowMetaReq
(
TSDB_MGMT_TABLE_STB
,
dbname
);
test
.
SendShowReq
(
TSDB_MGMT_TABLE_STB
,
"user_stables"
,
dbname
);
CHECK_META
(
"show stables"
,
4
);
CHECK_SCHEMA
(
0
,
TSDB_DATA_TYPE_BINARY
,
TSDB_TABLE_NAME_LEN
+
VARSTR_HEADER_SIZE
,
"name"
);
CHECK_SCHEMA
(
1
,
TSDB_DATA_TYPE_TIMESTAMP
,
8
,
"create_time"
);
CHECK_SCHEMA
(
2
,
TSDB_DATA_TYPE_INT
,
4
,
"columns"
);
CHECK_SCHEMA
(
3
,
TSDB_DATA_TYPE_INT
,
4
,
"tags"
);
test
.
SendShowRetrieveReq
();
EXPECT_EQ
(
test
.
GetShowRows
(),
1
);
EXPECT_EQ
(
test
.
GetShowRows
(),
1
);
CheckBinary
(
"stb"
,
TSDB_TABLE_NAME_LEN
);
CheckTimestamp
();
CheckInt32
(
2
);
CheckInt32
(
3
);
}
}
// ----- meta ------
// ----- meta ------
...
@@ -407,15 +396,8 @@ TEST_F(MndTestStb, 01_Create_Show_Meta_Drop_Restart_Stb) {
...
@@ -407,15 +396,8 @@ TEST_F(MndTestStb, 01_Create_Show_Meta_Drop_Restart_Stb) {
test
.
Restart
();
test
.
Restart
();
{
{
test
.
SendShowMetaReq
(
TSDB_MGMT_TABLE_STB
,
dbname
);
test
.
SendShowReq
(
TSDB_MGMT_TABLE_STB
,
"user_stables"
,
dbname
);
CHECK_META
(
"show stables"
,
4
);
test
.
SendShowRetrieveReq
();
EXPECT_EQ
(
test
.
GetShowRows
(),
1
);
EXPECT_EQ
(
test
.
GetShowRows
(),
1
);
CheckBinary
(
"stb"
,
TSDB_TABLE_NAME_LEN
);
CheckTimestamp
();
CheckInt32
(
2
);
CheckInt32
(
3
);
}
}
{
{
...
@@ -432,9 +414,7 @@ TEST_F(MndTestStb, 01_Create_Show_Meta_Drop_Restart_Stb) {
...
@@ -432,9 +414,7 @@ TEST_F(MndTestStb, 01_Create_Show_Meta_Drop_Restart_Stb) {
}
}
{
{
test
.
SendShowMetaReq
(
TSDB_MGMT_TABLE_STB
,
dbname
);
test
.
SendShowReq
(
TSDB_MGMT_TABLE_STB
,
"user_stables"
,
dbname
);
CHECK_META
(
"show stables"
,
4
);
test
.
SendShowRetrieveReq
();
EXPECT_EQ
(
test
.
GetShowRows
(),
0
);
EXPECT_EQ
(
test
.
GetShowRows
(),
0
);
}
}
...
@@ -496,13 +476,7 @@ TEST_F(MndTestStb, 02_Alter_Stb_AddTag) {
...
@@ -496,13 +476,7 @@ TEST_F(MndTestStb, 02_Alter_Stb_AddTag) {
ASSERT_NE
(
pRsp
,
nullptr
);
ASSERT_NE
(
pRsp
,
nullptr
);
ASSERT_EQ
(
pRsp
->
code
,
0
);
ASSERT_EQ
(
pRsp
->
code
,
0
);
test
.
SendShowMetaReq
(
TSDB_MGMT_TABLE_STB
,
dbname
);
test
.
SendShowReq
(
TSDB_MGMT_TABLE_STB
,
"user_stables"
,
dbname
);
test
.
SendShowRetrieveReq
();
EXPECT_EQ
(
test
.
GetShowRows
(),
1
);
CheckBinary
(
"stb"
,
TSDB_TABLE_NAME_LEN
);
CheckTimestamp
();
CheckInt32
(
2
);
CheckInt32
(
4
);
}
}
{
{
...
@@ -542,13 +516,8 @@ TEST_F(MndTestStb, 03_Alter_Stb_DropTag) {
...
@@ -542,13 +516,8 @@ TEST_F(MndTestStb, 03_Alter_Stb_DropTag) {
ASSERT_NE
(
pRsp
,
nullptr
);
ASSERT_NE
(
pRsp
,
nullptr
);
ASSERT_EQ
(
pRsp
->
code
,
0
);
ASSERT_EQ
(
pRsp
->
code
,
0
);
test
.
SendShowMetaReq
(
TSDB_MGMT_TABLE_STB
,
dbname
);
test
.
SendShowReq
(
TSDB_MGMT_TABLE_STB
,
"user_stables"
,
dbname
);
test
.
SendShowRetrieveReq
();
EXPECT_EQ
(
test
.
GetShowRows
(),
1
);
EXPECT_EQ
(
test
.
GetShowRows
(),
1
);
CheckBinary
(
"stb"
,
TSDB_TABLE_NAME_LEN
);
CheckTimestamp
();
CheckInt32
(
2
);
CheckInt32
(
2
);
}
}
{
{
...
@@ -611,13 +580,8 @@ TEST_F(MndTestStb, 04_Alter_Stb_AlterTagName) {
...
@@ -611,13 +580,8 @@ TEST_F(MndTestStb, 04_Alter_Stb_AlterTagName) {
ASSERT_NE
(
pRsp
,
nullptr
);
ASSERT_NE
(
pRsp
,
nullptr
);
ASSERT_EQ
(
pRsp
->
code
,
0
);
ASSERT_EQ
(
pRsp
->
code
,
0
);
test
.
SendShowMetaReq
(
TSDB_MGMT_TABLE_STB
,
dbname
);
test
.
SendShowReq
(
TSDB_MGMT_TABLE_STB
,
"user_stables"
,
dbname
);
test
.
SendShowRetrieveReq
();
EXPECT_EQ
(
test
.
GetShowRows
(),
1
);
EXPECT_EQ
(
test
.
GetShowRows
(),
1
);
CheckBinary
(
"stb"
,
TSDB_TABLE_NAME_LEN
);
CheckTimestamp
();
CheckInt32
(
2
);
CheckInt32
(
3
);
}
}
{
{
...
@@ -668,13 +632,8 @@ TEST_F(MndTestStb, 05_Alter_Stb_AlterTagBytes) {
...
@@ -668,13 +632,8 @@ TEST_F(MndTestStb, 05_Alter_Stb_AlterTagBytes) {
SRpcMsg
*
pRsp
=
test
.
SendReq
(
TDMT_MND_ALTER_STB
,
pReq
,
contLen
);
SRpcMsg
*
pRsp
=
test
.
SendReq
(
TDMT_MND_ALTER_STB
,
pReq
,
contLen
);
ASSERT_EQ
(
pRsp
->
code
,
0
);
ASSERT_EQ
(
pRsp
->
code
,
0
);
test
.
SendShowMetaReq
(
TSDB_MGMT_TABLE_STB
,
dbname
);
test
.
SendShowReq
(
TSDB_MGMT_TABLE_STB
,
"user_stables"
,
dbname
);
test
.
SendShowRetrieveReq
();
EXPECT_EQ
(
test
.
GetShowRows
(),
1
);
EXPECT_EQ
(
test
.
GetShowRows
(),
1
);
CheckBinary
(
"stb"
,
TSDB_TABLE_NAME_LEN
);
CheckTimestamp
();
CheckInt32
(
2
);
CheckInt32
(
3
);
}
}
{
{
...
@@ -734,13 +693,8 @@ TEST_F(MndTestStb, 06_Alter_Stb_AddColumn) {
...
@@ -734,13 +693,8 @@ TEST_F(MndTestStb, 06_Alter_Stb_AddColumn) {
ASSERT_NE
(
pRsp
,
nullptr
);
ASSERT_NE
(
pRsp
,
nullptr
);
ASSERT_EQ
(
pRsp
->
code
,
0
);
ASSERT_EQ
(
pRsp
->
code
,
0
);
test
.
SendShowMetaReq
(
TSDB_MGMT_TABLE_STB
,
dbname
);
test
.
SendShowReq
(
TSDB_MGMT_TABLE_STB
,
"user_stables"
,
dbname
);
test
.
SendShowRetrieveReq
();
EXPECT_EQ
(
test
.
GetShowRows
(),
1
);
EXPECT_EQ
(
test
.
GetShowRows
(),
1
);
CheckBinary
(
"stb"
,
TSDB_TABLE_NAME_LEN
);
CheckTimestamp
();
CheckInt32
(
3
);
CheckInt32
(
3
);
}
}
{
{
...
@@ -799,13 +753,8 @@ TEST_F(MndTestStb, 07_Alter_Stb_DropColumn) {
...
@@ -799,13 +753,8 @@ TEST_F(MndTestStb, 07_Alter_Stb_DropColumn) {
ASSERT_NE
(
pRsp
,
nullptr
);
ASSERT_NE
(
pRsp
,
nullptr
);
ASSERT_EQ
(
pRsp
->
code
,
0
);
ASSERT_EQ
(
pRsp
->
code
,
0
);
test
.
SendShowMetaReq
(
TSDB_MGMT_TABLE_STB
,
dbname
);
test
.
SendShowReq
(
TSDB_MGMT_TABLE_STB
,
"user_stables"
,
dbname
);
test
.
SendShowRetrieveReq
();
EXPECT_EQ
(
test
.
GetShowRows
(),
1
);
EXPECT_EQ
(
test
.
GetShowRows
(),
1
);
CheckBinary
(
"stb"
,
TSDB_TABLE_NAME_LEN
);
CheckTimestamp
();
CheckInt32
(
2
);
CheckInt32
(
3
);
}
}
{
{
...
@@ -862,13 +811,8 @@ TEST_F(MndTestStb, 08_Alter_Stb_AlterTagBytes) {
...
@@ -862,13 +811,8 @@ TEST_F(MndTestStb, 08_Alter_Stb_AlterTagBytes) {
SRpcMsg
*
pRsp
=
test
.
SendReq
(
TDMT_MND_ALTER_STB
,
pReq
,
contLen
);
SRpcMsg
*
pRsp
=
test
.
SendReq
(
TDMT_MND_ALTER_STB
,
pReq
,
contLen
);
ASSERT_EQ
(
pRsp
->
code
,
0
);
ASSERT_EQ
(
pRsp
->
code
,
0
);
test
.
SendShowMetaReq
(
TSDB_MGMT_TABLE_STB
,
dbname
);
test
.
SendShowReq
(
TSDB_MGMT_TABLE_STB
,
"user_stables"
,
dbname
);
test
.
SendShowRetrieveReq
();
EXPECT_EQ
(
test
.
GetShowRows
(),
1
);
EXPECT_EQ
(
test
.
GetShowRows
(),
1
);
CheckBinary
(
"stb"
,
TSDB_TABLE_NAME_LEN
);
CheckTimestamp
();
CheckInt32
(
2
);
CheckInt32
(
3
);
}
}
{
{
...
...
source/dnode/mnode/impl/test/topic/CMakeLists.txt
浏览文件 @
fd9e5208
aux_source_directory
(
.
TOPIC
_SRC
)
aux_source_directory
(
.
MNODE_TOPIC_TEST
_SRC
)
add_executable
(
mnode_test_topic
${
TOPIC
_SRC
}
)
add_executable
(
topicTest
${
MNODE_TOPIC_TEST
_SRC
}
)
target_link_libraries
(
target_link_libraries
(
mnode_test_topic
topicTest
PUBLIC sut
PUBLIC sut
)
)
add_test
(
add_test
(
NAME
mnode_test_topic
NAME
topicTest
COMMAND
mnode_test_topic
COMMAND
topicTest
)
)
source/dnode/mnode/impl/test/topic/topic.cpp
浏览文件 @
fd9e5208
...
@@ -101,7 +101,7 @@ TEST_F(MndTestTopic, 01_Create_Topic) {
...
@@ -101,7 +101,7 @@ TEST_F(MndTestTopic, 01_Create_Topic) {
ASSERT_EQ(pRsp->code, 0);
ASSERT_EQ(pRsp->code, 0);
}
}
{ test.SendShow
Meta
Req(TSDB_MGMT_TABLE_TOPICS, ""); }
{ test.SendShowReq(TSDB_MGMT_TABLE_TOPICS, ""); }
{
{
int32_t contLen = 0;
int32_t contLen = 0;
...
@@ -128,7 +128,7 @@ TEST_F(MndTestTopic, 01_Create_Topic) {
...
@@ -128,7 +128,7 @@ TEST_F(MndTestTopic, 01_Create_Topic) {
}
}
{
{
test.SendShow
Meta
Req(TSDB_MGMT_TABLE_TOPICS, dbname);
test.SendShowReq(TSDB_MGMT_TABLE_TOPICS, dbname);
CHECK_META("show topics", 3);
CHECK_META("show topics", 3);
CHECK_SCHEMA(0, TSDB_DATA_TYPE_BINARY, TSDB_TABLE_NAME_LEN + VARSTR_HEADER_SIZE, "name");
CHECK_SCHEMA(0, TSDB_DATA_TYPE_BINARY, TSDB_TABLE_NAME_LEN + VARSTR_HEADER_SIZE, "name");
...
@@ -145,7 +145,7 @@ TEST_F(MndTestTopic, 01_Create_Topic) {
...
@@ -145,7 +145,7 @@ TEST_F(MndTestTopic, 01_Create_Topic) {
// restart
// restart
test.Restart();
test.Restart();
test.SendShow
Meta
Req(TSDB_MGMT_TABLE_TOPICS, dbname);
test.SendShowReq(TSDB_MGMT_TABLE_TOPICS, dbname);
test.SendShowRetrieveReq();
test.SendShowRetrieveReq();
EXPECT_EQ(test.GetShowRows(), 1);
EXPECT_EQ(test.GetShowRows(), 1);
...
@@ -169,7 +169,7 @@ TEST_F(MndTestTopic, 01_Create_Topic) {
...
@@ -169,7 +169,7 @@ TEST_F(MndTestTopic, 01_Create_Topic) {
ASSERT_NE(pRsp, nullptr);
ASSERT_NE(pRsp, nullptr);
ASSERT_EQ(pRsp->code, TSDB_CODE_MND_TOPIC_NOT_EXIST);
ASSERT_EQ(pRsp->code, TSDB_CODE_MND_TOPIC_NOT_EXIST);
test.SendShow
Meta
Req(TSDB_MGMT_TABLE_TOPICS, dbname);
test.SendShowReq(TSDB_MGMT_TABLE_TOPICS, dbname);
test.SendShowRetrieveReq();
test.SendShowRetrieveReq();
EXPECT_EQ(test.GetShowRows(), 0);
EXPECT_EQ(test.GetShowRows(), 0);
}
}
...
...
source/dnode/mnode/impl/test/trans/CMakeLists.txt
浏览文件 @
fd9e5208
aux_source_directory
(
.
TRANS
_SRC
)
aux_source_directory
(
.
MNODE_TRANS_TEST
_SRC
)
add_executable
(
mnode_test_trans
${
TRANS
_SRC
}
)
add_executable
(
transTest
${
MNODE_TRANS_TEST
_SRC
}
)
target_link_libraries
(
target_link_libraries
(
mnode_test_trans
transTest
PUBLIC sut
PUBLIC sut
)
)
add_test
(
add_test
(
NAME
mnode_test_trans
NAME
transTest
COMMAND
mnode_test_trans
COMMAND
transTest
)
)
source/dnode/mnode/impl/test/trans/trans.cpp
浏览文件 @
fd9e5208
...
@@ -65,18 +65,7 @@ TestServer MndTestTrans::server2;
...
@@ -65,18 +65,7 @@ TestServer MndTestTrans::server2;
TEST_F
(
MndTestTrans
,
00
_Create_User_Crash
)
{
TEST_F
(
MndTestTrans
,
00
_Create_User_Crash
)
{
{
{
test
.
SendShowMetaReq
(
TSDB_MGMT_TABLE_TRANS
,
""
);
test
.
SendShowReq
(
TSDB_MGMT_TABLE_TRANS
,
"trans"
,
""
);
CHECK_META
(
"show trans"
,
7
);
CHECK_SCHEMA
(
0
,
TSDB_DATA_TYPE_INT
,
4
,
"id"
);
CHECK_SCHEMA
(
1
,
TSDB_DATA_TYPE_TIMESTAMP
,
8
,
"create_time"
);
CHECK_SCHEMA
(
2
,
TSDB_DATA_TYPE_BINARY
,
TSDB_TRANS_STAGE_LEN
+
VARSTR_HEADER_SIZE
,
"stage"
);
CHECK_SCHEMA
(
3
,
TSDB_DATA_TYPE_BINARY
,
TSDB_DB_NAME_LEN
-
1
+
VARSTR_HEADER_SIZE
,
"db"
);
CHECK_SCHEMA
(
4
,
TSDB_DATA_TYPE_BINARY
,
TSDB_TRANS_TYPE_LEN
+
VARSTR_HEADER_SIZE
,
"type"
);
CHECK_SCHEMA
(
5
,
TSDB_DATA_TYPE_TIMESTAMP
,
8
,
"last_exec_time"
);
CHECK_SCHEMA
(
6
,
TSDB_DATA_TYPE_BINARY
,
TSDB_TRANS_ERROR_LEN
-
1
+
VARSTR_HEADER_SIZE
,
"last_error"
);
test
.
SendShowRetrieveReq
();
EXPECT_EQ
(
test
.
GetShowRows
(),
0
);
EXPECT_EQ
(
test
.
GetShowRows
(),
0
);
}
}
...
@@ -109,26 +98,13 @@ TEST_F(MndTestTrans, 01_Create_User_Crash) {
...
@@ -109,26 +98,13 @@ TEST_F(MndTestTrans, 01_Create_User_Crash) {
ASSERT_EQ
(
pRsp
->
code
,
0
);
ASSERT_EQ
(
pRsp
->
code
,
0
);
}
}
test
.
SendShowMetaReq
(
TSDB_MGMT_TABLE_USER
,
""
);
test
.
SendShowReq
(
TSDB_MGMT_TABLE_USER
,
"user_users"
,
""
);
CHECK_META
(
"show users"
,
4
);
test
.
SendShowRetrieveReq
();
EXPECT_EQ
(
test
.
GetShowRows
(),
2
);
EXPECT_EQ
(
test
.
GetShowRows
(),
2
);
KillThenRestartServer
();
KillThenRestartServer
();
test
.
SendShowMetaReq
(
TSDB_MGMT_TABLE_USER
,
""
);
test
.
SendShowReq
(
TSDB_MGMT_TABLE_USER
,
"user_users"
,
""
);
CHECK_META
(
"show users"
,
4
);
test
.
SendShowRetrieveReq
();
EXPECT_EQ
(
test
.
GetShowRows
(),
2
);
EXPECT_EQ
(
test
.
GetShowRows
(),
2
);
CheckBinary
(
"u1"
,
TSDB_USER_LEN
);
CheckBinary
(
"root"
,
TSDB_USER_LEN
);
CheckBinary
(
"normal"
,
10
);
CheckBinary
(
"super"
,
10
);
CheckTimestamp
();
CheckTimestamp
();
CheckBinary
(
"root"
,
TSDB_USER_LEN
);
CheckBinary
(
"root"
,
TSDB_USER_LEN
);
}
}
TEST_F
(
MndTestTrans
,
02
_Create_Qnode1_Crash
)
{
TEST_F
(
MndTestTrans
,
02
_Create_Qnode1_Crash
)
{
...
@@ -144,9 +120,7 @@ TEST_F(MndTestTrans, 02_Create_Qnode1_Crash) {
...
@@ -144,9 +120,7 @@ TEST_F(MndTestTrans, 02_Create_Qnode1_Crash) {
ASSERT_NE
(
pRsp
,
nullptr
);
ASSERT_NE
(
pRsp
,
nullptr
);
ASSERT_EQ
(
pRsp
->
code
,
0
);
ASSERT_EQ
(
pRsp
->
code
,
0
);
test
.
SendShowMetaReq
(
TSDB_MGMT_TABLE_QNODE
,
""
);
test
.
SendShowReq
(
TSDB_MGMT_TABLE_QNODE
,
"qnodes"
,
""
);
CHECK_META
(
"show qnodes"
,
3
);
test
.
SendShowRetrieveReq
();
EXPECT_EQ
(
test
.
GetShowRows
(),
1
);
EXPECT_EQ
(
test
.
GetShowRows
(),
1
);
}
}
...
@@ -163,9 +137,7 @@ TEST_F(MndTestTrans, 02_Create_Qnode1_Crash) {
...
@@ -163,9 +137,7 @@ TEST_F(MndTestTrans, 02_Create_Qnode1_Crash) {
ASSERT_NE
(
pRsp
,
nullptr
);
ASSERT_NE
(
pRsp
,
nullptr
);
ASSERT_EQ
(
pRsp
->
code
,
TSDB_CODE_MND_QNODE_ALREADY_EXIST
);
ASSERT_EQ
(
pRsp
->
code
,
TSDB_CODE_MND_QNODE_ALREADY_EXIST
);
test
.
SendShowMetaReq
(
TSDB_MGMT_TABLE_QNODE
,
""
);
test
.
SendShowReq
(
TSDB_MGMT_TABLE_QNODE
,
"qnodes"
,
""
);
CHECK_META
(
"show qnodes"
,
3
);
test
.
SendShowRetrieveReq
();
EXPECT_EQ
(
test
.
GetShowRows
(),
1
);
EXPECT_EQ
(
test
.
GetShowRows
(),
1
);
}
}
}
}
...
@@ -185,8 +157,7 @@ TEST_F(MndTestTrans, 03_Create_Qnode2_Crash) {
...
@@ -185,8 +157,7 @@ TEST_F(MndTestTrans, 03_Create_Qnode2_Crash) {
ASSERT_EQ
(
pRsp
->
code
,
0
);
ASSERT_EQ
(
pRsp
->
code
,
0
);
taosMsleep
(
1300
);
taosMsleep
(
1300
);
test
.
SendShowMetaReq
(
TSDB_MGMT_TABLE_DNODE
,
""
);
test
.
SendShowReq
(
TSDB_MGMT_TABLE_DNODE
,
"dnodes"
,
""
);
test
.
SendShowRetrieveReq
();
EXPECT_EQ
(
test
.
GetShowRows
(),
2
);
EXPECT_EQ
(
test
.
GetShowRows
(),
2
);
}
}
...
@@ -208,18 +179,8 @@ TEST_F(MndTestTrans, 03_Create_Qnode2_Crash) {
...
@@ -208,18 +179,8 @@ TEST_F(MndTestTrans, 03_Create_Qnode2_Crash) {
{
{
// show trans
// show trans
test
.
SendShowMetaReq
(
TSDB_MGMT_TABLE_TRANS
,
""
);
test
.
SendShowReq
(
TSDB_MGMT_TABLE_TRANS
,
"trans"
,
""
);
CHECK_META
(
"show trans"
,
7
);
test
.
SendShowRetrieveReq
();
EXPECT_EQ
(
test
.
GetShowRows
(),
1
);
EXPECT_EQ
(
test
.
GetShowRows
(),
1
);
CheckInt32
(
4
);
CheckTimestamp
();
CheckBinary
(
"undoAction"
,
TSDB_TRANS_STAGE_LEN
);
CheckBinary
(
""
,
TSDB_DB_NAME_LEN
-
1
);
CheckBinary
(
"create-qnode"
,
TSDB_TRANS_TYPE_LEN
);
CheckTimestamp
();
CheckBinary
(
"Unable to establish connection"
,
TSDB_TRANS_ERROR_LEN
-
1
);
}
}
// kill trans
// kill trans
...
@@ -238,8 +199,7 @@ TEST_F(MndTestTrans, 03_Create_Qnode2_Crash) {
...
@@ -238,8 +199,7 @@ TEST_F(MndTestTrans, 03_Create_Qnode2_Crash) {
// show trans
// show trans
{
{
test
.
SendShowMetaReq
(
TSDB_MGMT_TABLE_TRANS
,
""
);
test
.
SendShowReq
(
TSDB_MGMT_TABLE_TRANS
,
"trans"
,
""
);
test
.
SendShowRetrieveReq
();
EXPECT_EQ
(
test
.
GetShowRows
(),
0
);
EXPECT_EQ
(
test
.
GetShowRows
(),
0
);
}
}
...
@@ -258,11 +218,9 @@ TEST_F(MndTestTrans, 03_Create_Qnode2_Crash) {
...
@@ -258,11 +218,9 @@ TEST_F(MndTestTrans, 03_Create_Qnode2_Crash) {
ASSERT_EQ
(
pRsp
->
code
,
TSDB_CODE_RPC_NETWORK_UNAVAIL
);
ASSERT_EQ
(
pRsp
->
code
,
TSDB_CODE_RPC_NETWORK_UNAVAIL
);
}
}
uInfo
(
"======== kill and restart server"
)
uInfo
(
"======== kill and restart server"
)
KillThenRestartServer
();
KillThenRestartServer
();
uInfo
(
"======== server2 start"
)
uInfo
(
"======== server2 start"
)
server2
.
DoStart
();
server2
.
DoStart
();
uInfo
(
"======== server2 started"
)
uInfo
(
"======== server2 started"
)
...
@@ -286,14 +244,11 @@ TEST_F(MndTestTrans, 03_Create_Qnode2_Crash) {
...
@@ -286,14 +244,11 @@ TEST_F(MndTestTrans, 03_Create_Qnode2_Crash) {
ASSERT_NE
(
retry
,
retryMax
);
ASSERT_NE
(
retry
,
retryMax
);
test
.
SendShowMetaReq
(
TSDB_MGMT_TABLE_QNODE
,
""
);
test
.
SendShowReq
(
TSDB_MGMT_TABLE_QNODE
,
"qnodes"
,
""
);
CHECK_META
(
"show qnodes"
,
3
);
test
.
SendShowRetrieveReq
();
EXPECT_EQ
(
test
.
GetShowRows
(),
2
);
EXPECT_EQ
(
test
.
GetShowRows
(),
2
);
}
}
}
}
// create db
// create db
// partial create stb
// partial create stb
// drop db failed
// drop db failed
...
...
source/dnode/mnode/impl/test/user/CMakeLists.txt
浏览文件 @
fd9e5208
aux_source_directory
(
.
USER
_SRC
)
aux_source_directory
(
.
MNODE_USER_TEST
_SRC
)
add_executable
(
mnode_test_user
${
USER
_SRC
}
)
add_executable
(
userTest
${
MNODE_USER_TEST
_SRC
}
)
target_link_libraries
(
target_link_libraries
(
mnode_test_user
userTest
PUBLIC sut
PUBLIC sut
)
)
add_test
(
add_test
(
NAME
mnode_test_user
NAME
userTest
COMMAND
mnode_test_user
COMMAND
userTest
)
)
source/dnode/mnode/impl/test/user/user.cpp
浏览文件 @
fd9e5208
...
@@ -26,21 +26,8 @@ class MndTestUser : public ::testing::Test {
...
@@ -26,21 +26,8 @@ class MndTestUser : public ::testing::Test {
Testbase
MndTestUser
::
test
;
Testbase
MndTestUser
::
test
;
TEST_F
(
MndTestUser
,
01
_Show_User
)
{
TEST_F
(
MndTestUser
,
01
_Show_User
)
{
test
.
SendShowMetaReq
(
TSDB_MGMT_TABLE_USER
,
""
);
test
.
SendShowReq
(
TSDB_MGMT_TABLE_USER
,
"user_users"
,
""
);
CHECK_META
(
"show users"
,
4
);
CHECK_SCHEMA
(
0
,
TSDB_DATA_TYPE_BINARY
,
TSDB_USER_LEN
+
VARSTR_HEADER_SIZE
,
"name"
);
CHECK_SCHEMA
(
1
,
TSDB_DATA_TYPE_BINARY
,
10
+
VARSTR_HEADER_SIZE
,
"privilege"
);
CHECK_SCHEMA
(
2
,
TSDB_DATA_TYPE_TIMESTAMP
,
8
,
"create_time"
);
CHECK_SCHEMA
(
3
,
TSDB_DATA_TYPE_BINARY
,
TSDB_USER_LEN
+
VARSTR_HEADER_SIZE
,
"account"
);
test
.
SendShowRetrieveReq
();
EXPECT_EQ
(
test
.
GetShowRows
(),
1
);
EXPECT_EQ
(
test
.
GetShowRows
(),
1
);
CheckBinary
(
"root"
,
TSDB_USER_LEN
);
CheckBinary
(
"super"
,
10
);
CheckTimestamp
();
CheckBinary
(
"root"
,
TSDB_USER_LEN
);
}
}
TEST_F
(
MndTestUser
,
02
_Create_User
)
{
TEST_F
(
MndTestUser
,
02
_Create_User
)
{
...
@@ -99,18 +86,8 @@ TEST_F(MndTestUser, 02_Create_User) {
...
@@ -99,18 +86,8 @@ TEST_F(MndTestUser, 02_Create_User) {
ASSERT_NE
(
pRsp
,
nullptr
);
ASSERT_NE
(
pRsp
,
nullptr
);
ASSERT_EQ
(
pRsp
->
code
,
0
);
ASSERT_EQ
(
pRsp
->
code
,
0
);
test
.
SendShowMetaReq
(
TSDB_MGMT_TABLE_USER
,
""
);
test
.
SendShowReq
(
TSDB_MGMT_TABLE_USER
,
"user_users"
,
""
);
test
.
SendShowRetrieveReq
();
EXPECT_EQ
(
test
.
GetShowRows
(),
2
);
EXPECT_EQ
(
test
.
GetShowRows
(),
2
);
CheckBinary
(
"u1"
,
TSDB_USER_LEN
);
CheckBinary
(
"root"
,
TSDB_USER_LEN
);
CheckBinary
(
"normal"
,
10
);
CheckBinary
(
"super"
,
10
);
CheckTimestamp
();
CheckTimestamp
();
CheckBinary
(
"root"
,
TSDB_USER_LEN
);
CheckBinary
(
"root"
,
TSDB_USER_LEN
);
}
}
{
{
...
@@ -125,8 +102,7 @@ TEST_F(MndTestUser, 02_Create_User) {
...
@@ -125,8 +102,7 @@ TEST_F(MndTestUser, 02_Create_User) {
ASSERT_NE
(
pRsp
,
nullptr
);
ASSERT_NE
(
pRsp
,
nullptr
);
ASSERT_EQ
(
pRsp
->
code
,
0
);
ASSERT_EQ
(
pRsp
->
code
,
0
);
test
.
SendShowMetaReq
(
TSDB_MGMT_TABLE_USER
,
""
);
test
.
SendShowReq
(
TSDB_MGMT_TABLE_USER
,
"user_users"
,
""
);
test
.
SendShowRetrieveReq
();
EXPECT_EQ
(
test
.
GetShowRows
(),
1
);
EXPECT_EQ
(
test
.
GetShowRows
(),
1
);
}
}
...
@@ -144,18 +120,8 @@ TEST_F(MndTestUser, 02_Create_User) {
...
@@ -144,18 +120,8 @@ TEST_F(MndTestUser, 02_Create_User) {
ASSERT_NE
(
pRsp
,
nullptr
);
ASSERT_NE
(
pRsp
,
nullptr
);
ASSERT_EQ
(
pRsp
->
code
,
0
);
ASSERT_EQ
(
pRsp
->
code
,
0
);
test
.
SendShowMetaReq
(
TSDB_MGMT_TABLE_USER
,
""
);
test
.
SendShowReq
(
TSDB_MGMT_TABLE_USER
,
"user_users"
,
""
);
test
.
SendShowRetrieveReq
();
EXPECT_EQ
(
test
.
GetShowRows
(),
2
);
EXPECT_EQ
(
test
.
GetShowRows
(),
2
);
CheckBinary
(
"root"
,
TSDB_USER_LEN
);
CheckBinary
(
"u2"
,
TSDB_USER_LEN
);
CheckBinary
(
"super"
,
10
);
CheckBinary
(
"super"
,
10
);
CheckTimestamp
();
CheckTimestamp
();
CheckBinary
(
"root"
,
TSDB_USER_LEN
);
CheckBinary
(
"root"
,
TSDB_USER_LEN
);
}
}
{
{
...
@@ -170,8 +136,7 @@ TEST_F(MndTestUser, 02_Create_User) {
...
@@ -170,8 +136,7 @@ TEST_F(MndTestUser, 02_Create_User) {
ASSERT_NE
(
pRsp
,
nullptr
);
ASSERT_NE
(
pRsp
,
nullptr
);
ASSERT_EQ
(
pRsp
->
code
,
0
);
ASSERT_EQ
(
pRsp
->
code
,
0
);
test
.
SendShowMetaReq
(
TSDB_MGMT_TABLE_USER
,
""
);
test
.
SendShowReq
(
TSDB_MGMT_TABLE_USER
,
"user_users"
,
""
);
test
.
SendShowRetrieveReq
();
EXPECT_EQ
(
test
.
GetShowRows
(),
1
);
EXPECT_EQ
(
test
.
GetShowRows
(),
1
);
}
}
}
}
...
@@ -191,8 +156,7 @@ TEST_F(MndTestUser, 03_Alter_User) {
...
@@ -191,8 +156,7 @@ TEST_F(MndTestUser, 03_Alter_User) {
ASSERT_NE
(
pRsp
,
nullptr
);
ASSERT_NE
(
pRsp
,
nullptr
);
ASSERT_EQ
(
pRsp
->
code
,
0
);
ASSERT_EQ
(
pRsp
->
code
,
0
);
test
.
SendShowMetaReq
(
TSDB_MGMT_TABLE_USER
,
""
);
test
.
SendShowReq
(
TSDB_MGMT_TABLE_USER
,
"user_users"
,
""
);
test
.
SendShowRetrieveReq
();
EXPECT_EQ
(
test
.
GetShowRows
(),
2
);
EXPECT_EQ
(
test
.
GetShowRows
(),
2
);
}
}
...
@@ -437,8 +401,7 @@ TEST_F(MndTestUser, 03_Alter_User) {
...
@@ -437,8 +401,7 @@ TEST_F(MndTestUser, 03_Alter_User) {
ASSERT_NE
(
pRsp
,
nullptr
);
ASSERT_NE
(
pRsp
,
nullptr
);
ASSERT_EQ
(
pRsp
->
code
,
0
);
ASSERT_EQ
(
pRsp
->
code
,
0
);
test
.
SendShowMetaReq
(
TSDB_MGMT_TABLE_USER
,
""
);
test
.
SendShowReq
(
TSDB_MGMT_TABLE_USER
,
"user_users"
,
""
);
test
.
SendShowRetrieveReq
();
EXPECT_EQ
(
test
.
GetShowRows
(),
1
);
EXPECT_EQ
(
test
.
GetShowRows
(),
1
);
}
}
}
}
...
@@ -497,10 +460,7 @@ TEST_F(MndTestUser, 05_Drop_User) {
...
@@ -497,10 +460,7 @@ TEST_F(MndTestUser, 05_Drop_User) {
ASSERT_EQ
(
pRsp
->
code
,
0
);
ASSERT_EQ
(
pRsp
->
code
,
0
);
}
}
test
.
SendShowMetaReq
(
TSDB_MGMT_TABLE_USER
,
""
);
test
.
SendShowReq
(
TSDB_MGMT_TABLE_USER
,
"user_users"
,
""
);
CHECK_META
(
"show users"
,
4
);
test
.
SendShowRetrieveReq
();
EXPECT_EQ
(
test
.
GetShowRows
(),
1
);
EXPECT_EQ
(
test
.
GetShowRows
(),
1
);
}
}
...
@@ -533,25 +493,9 @@ TEST_F(MndTestUser, 06_Create_Drop_Alter_User) {
...
@@ -533,25 +493,9 @@ TEST_F(MndTestUser, 06_Create_Drop_Alter_User) {
ASSERT_EQ
(
pRsp
->
code
,
0
);
ASSERT_EQ
(
pRsp
->
code
,
0
);
}
}
test
.
SendShowMetaReq
(
TSDB_MGMT_TABLE_USER
,
""
);
test
.
SendShowReq
(
TSDB_MGMT_TABLE_USER
,
"user_users"
,
""
);
CHECK_META
(
"show users"
,
4
);
test
.
SendShowRetrieveReq
();
EXPECT_EQ
(
test
.
GetShowRows
(),
3
);
EXPECT_EQ
(
test
.
GetShowRows
(),
3
);
CheckBinary
(
"u1"
,
TSDB_USER_LEN
);
CheckBinary
(
"root"
,
TSDB_USER_LEN
);
CheckBinary
(
"u2"
,
TSDB_USER_LEN
);
CheckBinary
(
"normal"
,
10
);
CheckBinary
(
"super"
,
10
);
CheckBinary
(
"normal"
,
10
);
CheckTimestamp
();
CheckTimestamp
();
CheckTimestamp
();
CheckBinary
(
"root"
,
TSDB_USER_LEN
);
CheckBinary
(
"root"
,
TSDB_USER_LEN
);
CheckBinary
(
"root"
,
TSDB_USER_LEN
);
{
{
SAlterUserReq
alterReq
=
{
0
};
SAlterUserReq
alterReq
=
{
0
};
alterReq
.
alterType
=
TSDB_ALTER_USER_PASSWD
;
alterReq
.
alterType
=
TSDB_ALTER_USER_PASSWD
;
...
@@ -567,25 +511,8 @@ TEST_F(MndTestUser, 06_Create_Drop_Alter_User) {
...
@@ -567,25 +511,8 @@ TEST_F(MndTestUser, 06_Create_Drop_Alter_User) {
ASSERT_EQ
(
pRsp
->
code
,
0
);
ASSERT_EQ
(
pRsp
->
code
,
0
);
}
}
test
.
SendShowMetaReq
(
TSDB_MGMT_TABLE_USER
,
""
);
test
.
SendShowReq
(
TSDB_MGMT_TABLE_USER
,
"user_users"
,
""
);
CHECK_META
(
"show users"
,
4
);
test
.
SendShowRetrieveReq
();
EXPECT_EQ
(
test
.
GetShowRows
(),
3
);
EXPECT_EQ
(
test
.
GetShowRows
(),
3
);
CheckBinary
(
"u1"
,
TSDB_USER_LEN
);
CheckBinary
(
"root"
,
TSDB_USER_LEN
);
CheckBinary
(
"u2"
,
TSDB_USER_LEN
);
CheckBinary
(
"normal"
,
10
);
CheckBinary
(
"super"
,
10
);
CheckBinary
(
"normal"
,
10
);
CheckTimestamp
();
CheckTimestamp
();
CheckTimestamp
();
CheckBinary
(
"root"
,
TSDB_USER_LEN
);
CheckBinary
(
"root"
,
TSDB_USER_LEN
);
CheckBinary
(
"root"
,
TSDB_USER_LEN
);
{
{
SDropUserReq
dropReq
=
{
0
};
SDropUserReq
dropReq
=
{
0
};
strcpy
(
dropReq
.
user
,
"u1"
);
strcpy
(
dropReq
.
user
,
"u1"
);
...
@@ -599,37 +526,13 @@ TEST_F(MndTestUser, 06_Create_Drop_Alter_User) {
...
@@ -599,37 +526,13 @@ TEST_F(MndTestUser, 06_Create_Drop_Alter_User) {
ASSERT_EQ
(
pRsp
->
code
,
0
);
ASSERT_EQ
(
pRsp
->
code
,
0
);
}
}
test
.
SendShowMetaReq
(
TSDB_MGMT_TABLE_USER
,
""
);
test
.
SendShowReq
(
TSDB_MGMT_TABLE_USER
,
"user_users"
,
""
);
CHECK_META
(
"show users"
,
4
);
test
.
SendShowRetrieveReq
();
EXPECT_EQ
(
test
.
GetShowRows
(),
2
);
EXPECT_EQ
(
test
.
GetShowRows
(),
2
);
CheckBinary
(
"root"
,
TSDB_USER_LEN
);
CheckBinary
(
"u2"
,
TSDB_USER_LEN
);
CheckBinary
(
"super"
,
10
);
CheckBinary
(
"normal"
,
10
);
CheckTimestamp
();
CheckTimestamp
();
CheckBinary
(
"root"
,
TSDB_USER_LEN
);
CheckBinary
(
"root"
,
TSDB_USER_LEN
);
// restart
// restart
test
.
Restart
();
test
.
Restart
();
taosMsleep
(
1000
);
taosMsleep
(
1000
);
test
.
SendShowMetaReq
(
TSDB_MGMT_TABLE_USER
,
""
);
test
.
SendShowReq
(
TSDB_MGMT_TABLE_USER
,
"user_users"
,
""
);
CHECK_META
(
"show users"
,
4
);
test
.
SendShowRetrieveReq
();
EXPECT_EQ
(
test
.
GetShowRows
(),
2
);
EXPECT_EQ
(
test
.
GetShowRows
(),
2
);
CheckBinary
(
"root"
,
TSDB_USER_LEN
);
CheckBinary
(
"u2"
,
TSDB_USER_LEN
);
CheckBinary
(
"super"
,
10
);
CheckBinary
(
"normal"
,
10
);
CheckTimestamp
();
CheckTimestamp
();
CheckBinary
(
"root"
,
TSDB_USER_LEN
);
CheckBinary
(
"root"
,
TSDB_USER_LEN
);
}
}
source/dnode/vnode/CMakeLists.txt
浏览文件 @
fd9e5208
...
@@ -4,13 +4,13 @@ target_sources(
...
@@ -4,13 +4,13 @@ target_sources(
vnode
vnode
PRIVATE
PRIVATE
# vnode
# vnode
"src/vnd/vnodeOpen.c"
"src/vnd/vnodeArenaMAImpl.c"
"src/vnd/vnodeArenaMAImpl.c"
"src/vnd/vnodeBufferPool.c"
"src/vnd/vnodeBufferPool.c"
# "src/vnd/vnodeBufferPool2.c"
# "src/vnd/vnodeBufferPool2.c"
"src/vnd/vnodeCfg.c"
"src/vnd/vnodeCfg.c"
"src/vnd/vnodeCommit.c"
"src/vnd/vnodeCommit.c"
"src/vnd/vnodeInt.c"
"src/vnd/vnodeInt.c"
"src/vnd/vnodeMain.c"
"src/vnd/vnodeQuery.c"
"src/vnd/vnodeQuery.c"
"src/vnd/vnodeStateMgr.c"
"src/vnd/vnodeStateMgr.c"
"src/vnd/vnodeWrite.c"
"src/vnd/vnodeWrite.c"
...
...
source/dnode/vnode/inc/vnode.h
浏览文件 @
fd9e5208
...
@@ -42,11 +42,12 @@ typedef struct STsdbCfg STsdbCfg; // todo: remove
...
@@ -42,11 +42,12 @@ typedef struct STsdbCfg STsdbCfg; // todo: remove
typedef
struct
STqCfg
STqCfg
;
// todo: remove
typedef
struct
STqCfg
STqCfg
;
// todo: remove
typedef
struct
SVnodeCfg
SVnodeCfg
;
typedef
struct
SVnodeCfg
SVnodeCfg
;
int
vnodeInit
();
int
vnodeInit
(
int
nthreads
);
void
vnodeCleanup
();
void
vnodeCleanup
();
int
vnodeCreate
(
const
char
*
path
,
SVnodeCfg
*
pCfg
,
STfs
*
pTfs
);
void
vnodeDestroy
(
const
char
*
path
);
SVnode
*
vnodeOpen
(
const
char
*
path
,
const
SVnodeCfg
*
pVnodeCfg
);
SVnode
*
vnodeOpen
(
const
char
*
path
,
const
SVnodeCfg
*
pVnodeCfg
);
void
vnodeClose
(
SVnode
*
pVnode
);
void
vnodeClose
(
SVnode
*
pVnode
);
void
vnodeDestroy
(
const
char
*
path
);
void
vnodePreprocessWriteReqs
(
SVnode
*
pVnode
,
SArray
*
pMsgs
);
void
vnodePreprocessWriteReqs
(
SVnode
*
pVnode
,
SArray
*
pMsgs
);
int
vnodeProcessWriteReq
(
SVnode
*
pVnode
,
SRpcMsg
*
pMsg
,
SRpcMsg
**
pRsp
);
int
vnodeProcessWriteReq
(
SVnode
*
pVnode
,
SRpcMsg
*
pMsg
,
SRpcMsg
**
pRsp
);
int
vnodeProcessCMsg
(
SVnode
*
pVnode
,
SRpcMsg
*
pMsg
,
SRpcMsg
**
pRsp
);
int
vnodeProcessCMsg
(
SVnode
*
pVnode
,
SRpcMsg
*
pMsg
,
SRpcMsg
**
pRsp
);
...
@@ -122,12 +123,12 @@ struct STsdbCfg {
...
@@ -122,12 +123,12 @@ struct STsdbCfg {
int8_t
precision
;
int8_t
precision
;
int8_t
update
;
int8_t
update
;
int8_t
compression
;
int8_t
compression
;
int32_t
daysPerFile
;
int32_t
days
;
int32_t
minRowsPerFileBlock
;
int32_t
minRows
;
int32_t
maxRowsPerFileBlock
;
int32_t
maxRows
;
int32_t
keep
;
int32_t
keep1
;
int32_t
keep2
;
int32_t
keep2
;
int32_t
keep0
;
int32_t
keep1
;
uint64_t
lruCacheSize
;
uint64_t
lruCacheSize
;
SArray
*
retentions
;
SArray
*
retentions
;
};
};
...
...
source/dnode/vnode/src/inc/vnd.h
浏览文件 @
fd9e5208
...
@@ -30,6 +30,8 @@ extern "C" {
...
@@ -30,6 +30,8 @@ extern "C" {
#define vTrace(...) do { if (vDebugFlag & DEBUG_TRACE) { taosPrintLog("VND ", DEBUG_TRACE, vDebugFlag, __VA_ARGS__); }} while(0)
#define vTrace(...) do { if (vDebugFlag & DEBUG_TRACE) { taosPrintLog("VND ", DEBUG_TRACE, vDebugFlag, __VA_ARGS__); }} while(0)
// clang-format on
// clang-format on
// vnodeCfg ====================
// vnodeModule ====================
// vnodeModule ====================
int
vnodeScheduleTask
(
int
(
*
execute
)(
void
*
),
void
*
arg
);
int
vnodeScheduleTask
(
int
(
*
execute
)(
void
*
),
void
*
arg
);
...
@@ -38,6 +40,11 @@ int vnodeQueryOpen(SVnode* pVnode);
...
@@ -38,6 +40,11 @@ int vnodeQueryOpen(SVnode* pVnode);
void
vnodeQueryClose
(
SVnode
*
pVnode
);
void
vnodeQueryClose
(
SVnode
*
pVnode
);
int
vnodeGetTableMeta
(
SVnode
*
pVnode
,
SRpcMsg
*
pMsg
);
int
vnodeGetTableMeta
(
SVnode
*
pVnode
,
SRpcMsg
*
pMsg
);
// vnodeCommit ====================
int
vnodeSaveInfo
(
const
char
*
dir
,
const
SVnodeInfo
*
pCfg
);
int
vnodeCommitInfo
(
const
char
*
dir
,
const
SVnodeInfo
*
pInfo
);
int
vnodeLoadInfo
(
const
char
*
dir
,
SVnodeInfo
*
pInfo
);
#if 1
#if 1
// SVBufPool
// SVBufPool
int
vnodeOpenBufPool
(
SVnode
*
pVnode
);
int
vnodeOpenBufPool
(
SVnode
*
pVnode
);
...
@@ -75,9 +82,9 @@ void vmaFree(SVMemAllocator* pVMA, void* ptr);
...
@@ -75,9 +82,9 @@ void vmaFree(SVMemAllocator* pVMA, void* ptr);
bool
vmaIsFull
(
SVMemAllocator
*
pVMA
);
bool
vmaIsFull
(
SVMemAllocator
*
pVMA
);
// vnodeCfg.h
// vnodeCfg.h
extern
const
SVnodeCfg
defaultVnodeOptions
;
extern
const
SVnodeCfg
vnodeCfgDefault
;
int
vnode
ValidateOptions
(
const
SVnodeCfg
*
);
int
vnode
CheckCfg
(
const
SVnodeCfg
*
);
void
vnodeOptionsCopy
(
SVnodeCfg
*
pDest
,
const
SVnodeCfg
*
pSrc
);
void
vnodeOptionsCopy
(
SVnodeCfg
*
pDest
,
const
SVnodeCfg
*
pSrc
);
// For commit
// For commit
...
...
source/dnode/vnode/src/inc/vnodeInt.h
浏览文件 @
fd9e5208
...
@@ -27,6 +27,7 @@
...
@@ -27,6 +27,7 @@
#include "tdbInt.h"
#include "tdbInt.h"
#include "tfs.h"
#include "tfs.h"
#include "tglobal.h"
#include "tglobal.h"
#include "tjson.h"
#include "tlist.h"
#include "tlist.h"
#include "tlockfree.h"
#include "tlockfree.h"
#include "tlosertree.h"
#include "tlosertree.h"
...
@@ -43,6 +44,7 @@
...
@@ -43,6 +44,7 @@
extern
"C"
{
extern
"C"
{
#endif
#endif
typedef
struct
SVnodeInfo
SVnodeInfo
;
typedef
struct
SMeta
SMeta
;
typedef
struct
SMeta
SMeta
;
typedef
struct
STsdb
STsdb
;
typedef
struct
STsdb
STsdb
;
typedef
struct
STQ
STQ
;
typedef
struct
STQ
STQ
;
...
@@ -72,6 +74,11 @@ struct SVState {
...
@@ -72,6 +74,11 @@ struct SVState {
int64_t
applied
;
int64_t
applied
;
};
};
struct
SVnodeInfo
{
SVnodeCfg
config
;
SVState
state
;
};
struct
SVnode
{
struct
SVnode
{
int32_t
vgId
;
int32_t
vgId
;
char
*
path
;
char
*
path
;
...
...
source/dnode/vnode/src/tsdb/tsdbCommit.c
浏览文件 @
fd9e5208
...
@@ -55,7 +55,7 @@ typedef struct {
...
@@ -55,7 +55,7 @@ typedef struct {
#define TSDB_COMMIT_BUF(ch) TSDB_READ_BUF(&((ch)->readh))
#define TSDB_COMMIT_BUF(ch) TSDB_READ_BUF(&((ch)->readh))
#define TSDB_COMMIT_COMP_BUF(ch) TSDB_READ_COMP_BUF(&((ch)->readh))
#define TSDB_COMMIT_COMP_BUF(ch) TSDB_READ_COMP_BUF(&((ch)->readh))
#define TSDB_COMMIT_EXBUF(ch) TSDB_READ_EXBUF(&((ch)->readh))
#define TSDB_COMMIT_EXBUF(ch) TSDB_READ_EXBUF(&((ch)->readh))
#define TSDB_COMMIT_DEFAULT_ROWS(ch) TSDB_DEFAULT_BLOCK_ROWS(TSDB_COMMIT_REPO(ch)->config.maxRows
PerFileBlock
)
#define TSDB_COMMIT_DEFAULT_ROWS(ch) TSDB_DEFAULT_BLOCK_ROWS(TSDB_COMMIT_REPO(ch)->config.maxRows)
#define TSDB_COMMIT_TXN_VERSION(ch) FS_TXN_VERSION(REPO_FS(TSDB_COMMIT_REPO(ch)))
#define TSDB_COMMIT_TXN_VERSION(ch) FS_TXN_VERSION(REPO_FS(TSDB_COMMIT_REPO(ch)))
static
void
tsdbStartCommit
(
STsdb
*
pRepo
);
static
void
tsdbStartCommit
(
STsdb
*
pRepo
);
...
@@ -217,14 +217,14 @@ void tsdbGetRtnSnap(STsdb *pRepo, SRtn *pRtn) {
...
@@ -217,14 +217,14 @@ void tsdbGetRtnSnap(STsdb *pRepo, SRtn *pRtn) {
TSKEY
minKey
,
midKey
,
maxKey
,
now
;
TSKEY
minKey
,
midKey
,
maxKey
,
now
;
now
=
taosGetTimestamp
(
pCfg
->
precision
);
now
=
taosGetTimestamp
(
pCfg
->
precision
);
minKey
=
now
-
pCfg
->
keep
*
tsTickPerDay
[
pCfg
->
precision
];
minKey
=
now
-
pCfg
->
keep
2
*
tsTickPerDay
[
pCfg
->
precision
];
midKey
=
now
-
pCfg
->
keep
2
*
tsTickPerDay
[
pCfg
->
precision
];
midKey
=
now
-
pCfg
->
keep
1
*
tsTickPerDay
[
pCfg
->
precision
];
maxKey
=
now
-
pCfg
->
keep
1
*
tsTickPerDay
[
pCfg
->
precision
];
maxKey
=
now
-
pCfg
->
keep
0
*
tsTickPerDay
[
pCfg
->
precision
];
pRtn
->
minKey
=
minKey
;
pRtn
->
minKey
=
minKey
;
pRtn
->
minFid
=
(
int
)(
TSDB_KEY_FID
(
minKey
,
pCfg
->
days
PerFile
,
pCfg
->
precision
));
pRtn
->
minFid
=
(
int
)(
TSDB_KEY_FID
(
minKey
,
pCfg
->
days
,
pCfg
->
precision
));
pRtn
->
midFid
=
(
int
)(
TSDB_KEY_FID
(
midKey
,
pCfg
->
days
PerFile
,
pCfg
->
precision
));
pRtn
->
midFid
=
(
int
)(
TSDB_KEY_FID
(
midKey
,
pCfg
->
days
,
pCfg
->
precision
));
pRtn
->
maxFid
=
(
int
)(
TSDB_KEY_FID
(
maxKey
,
pCfg
->
days
PerFile
,
pCfg
->
precision
));
pRtn
->
maxFid
=
(
int
)(
TSDB_KEY_FID
(
maxKey
,
pCfg
->
days
,
pCfg
->
precision
));
tsdbDebug
(
"vgId:%d now:%"
PRId64
" minKey:%"
PRId64
" minFid:%d, midFid:%d, maxFid:%d"
,
REPO_ID
(
pRepo
),
now
,
minKey
,
tsdbDebug
(
"vgId:%d now:%"
PRId64
" minKey:%"
PRId64
" minFid:%d, midFid:%d, maxFid:%d"
,
REPO_ID
(
pRepo
),
now
,
minKey
,
pRtn
->
minFid
,
pRtn
->
midFid
,
pRtn
->
maxFid
);
pRtn
->
minFid
,
pRtn
->
midFid
,
pRtn
->
maxFid
);
}
}
...
@@ -286,7 +286,7 @@ static int tsdbInitCommitH(SCommitH *pCommith, STsdb *pRepo) {
...
@@ -286,7 +286,7 @@ static int tsdbInitCommitH(SCommitH *pCommith, STsdb *pRepo) {
return
-
1
;
return
-
1
;
}
}
pCommith
->
pDataCols
=
tdNewDataCols
(
0
,
pCfg
->
maxRows
PerFileBlock
);
pCommith
->
pDataCols
=
tdNewDataCols
(
0
,
pCfg
->
maxRows
);
if
(
pCommith
->
pDataCols
==
NULL
)
{
if
(
pCommith
->
pDataCols
==
NULL
)
{
terrno
=
TSDB_CODE_TDB_OUT_OF_MEMORY
;
terrno
=
TSDB_CODE_TDB_OUT_OF_MEMORY
;
tsdbDestroyCommitH
(
pCommith
);
tsdbDestroyCommitH
(
pCommith
);
...
@@ -319,7 +319,7 @@ static int tsdbNextCommitFid(SCommitH *pCommith) {
...
@@ -319,7 +319,7 @@ static int tsdbNextCommitFid(SCommitH *pCommith) {
if
(
nextKey
==
TSDB_DATA_TIMESTAMP_NULL
)
{
if
(
nextKey
==
TSDB_DATA_TIMESTAMP_NULL
)
{
continue
;
continue
;
}
else
{
}
else
{
int
tfid
=
(
int
)(
TSDB_KEY_FID
(
nextKey
,
pCfg
->
days
PerFile
,
pCfg
->
precision
));
int
tfid
=
(
int
)(
TSDB_KEY_FID
(
nextKey
,
pCfg
->
days
,
pCfg
->
precision
));
if
(
fid
==
TSDB_IVLD_FID
||
fid
>
tfid
)
{
if
(
fid
==
TSDB_IVLD_FID
||
fid
>
tfid
)
{
fid
=
tfid
;
fid
=
tfid
;
}
}
...
@@ -346,7 +346,7 @@ static int tsdbCommitToFile(SCommitH *pCommith, SDFileSet *pSet, int fid) {
...
@@ -346,7 +346,7 @@ static int tsdbCommitToFile(SCommitH *pCommith, SDFileSet *pSet, int fid) {
ASSERT
(
pSet
==
NULL
||
pSet
->
fid
==
fid
);
ASSERT
(
pSet
==
NULL
||
pSet
->
fid
==
fid
);
tsdbResetCommitFile
(
pCommith
);
tsdbResetCommitFile
(
pCommith
);
tsdbGetFidKeyRange
(
pCfg
->
days
PerFile
,
pCfg
->
precision
,
fid
,
&
(
pCommith
->
minKey
),
&
(
pCommith
->
maxKey
));
tsdbGetFidKeyRange
(
pCfg
->
days
,
pCfg
->
precision
,
fid
,
&
(
pCommith
->
minKey
),
&
(
pCommith
->
maxKey
));
// Set and open files
// Set and open files
if
(
tsdbSetAndOpenCommitFile
(
pCommith
,
pSet
,
fid
)
<
0
)
{
if
(
tsdbSetAndOpenCommitFile
(
pCommith
,
pSet
,
fid
)
<
0
)
{
...
@@ -1210,8 +1210,8 @@ int tsdbWriteBlockImpl(STsdb *pRepo, STable *pTable, SDFile *pDFile, SDFile *pDF
...
@@ -1210,8 +1210,8 @@ int tsdbWriteBlockImpl(STsdb *pRepo, STable *pTable, SDFile *pDFile, SDFile *pDF
int64_t
offset
=
0
,
offsetAggr
=
0
;
int64_t
offset
=
0
,
offsetAggr
=
0
;
int
rowsToWrite
=
pDataCols
->
numOfRows
;
int
rowsToWrite
=
pDataCols
->
numOfRows
;
ASSERT
(
rowsToWrite
>
0
&&
rowsToWrite
<=
pCfg
->
maxRows
PerFileBlock
);
ASSERT
(
rowsToWrite
>
0
&&
rowsToWrite
<=
pCfg
->
maxRows
);
ASSERT
((
!
isLast
)
||
rowsToWrite
<
pCfg
->
minRows
PerFileBlock
);
ASSERT
((
!
isLast
)
||
rowsToWrite
<
pCfg
->
minRows
);
// Make buffer space
// Make buffer space
if
(
tsdbMakeRoom
(
ppBuf
,
tsdbBlockStatisSize
(
pDataCols
->
numOfCols
,
SBlockVerLatest
))
<
0
)
{
if
(
tsdbMakeRoom
(
ppBuf
,
tsdbBlockStatisSize
(
pDataCols
->
numOfCols
,
SBlockVerLatest
))
<
0
)
{
...
@@ -1460,7 +1460,7 @@ static int tsdbCommitMemData(SCommitH *pCommith, SCommitIter *pIter, TSKEY keyLi
...
@@ -1460,7 +1460,7 @@ static int tsdbCommitMemData(SCommitH *pCommith, SCommitIter *pIter, TSKEY keyLi
if
(
pCommith
->
pDataCols
->
numOfRows
<=
0
)
break
;
if
(
pCommith
->
pDataCols
->
numOfRows
<=
0
)
break
;
if
(
toData
||
pCommith
->
pDataCols
->
numOfRows
>=
pCfg
->
minRows
PerFileBlock
)
{
if
(
toData
||
pCommith
->
pDataCols
->
numOfRows
>=
pCfg
->
minRows
)
{
pDFile
=
TSDB_COMMIT_DATA_FILE
(
pCommith
);
pDFile
=
TSDB_COMMIT_DATA_FILE
(
pCommith
);
isLast
=
false
;
isLast
=
false
;
}
else
{
}
else
{
...
@@ -1619,7 +1619,7 @@ static int tsdbMergeBlockData(SCommitH *pCommith, SCommitIter *pIter, SDataCols
...
@@ -1619,7 +1619,7 @@ static int tsdbMergeBlockData(SCommitH *pCommith, SCommitIter *pIter, SDataCols
if
(
pCommith
->
pDataCols
->
numOfRows
==
0
)
break
;
if
(
pCommith
->
pDataCols
->
numOfRows
==
0
)
break
;
if
(
isLastOneBlock
)
{
if
(
isLastOneBlock
)
{
if
(
pCommith
->
pDataCols
->
numOfRows
<
pCfg
->
minRows
PerFileBlock
)
{
if
(
pCommith
->
pDataCols
->
numOfRows
<
pCfg
->
minRows
)
{
pDFile
=
TSDB_COMMIT_LAST_FILE
(
pCommith
);
pDFile
=
TSDB_COMMIT_LAST_FILE
(
pCommith
);
isLast
=
true
;
isLast
=
true
;
}
else
{
}
else
{
...
@@ -1667,7 +1667,8 @@ static void tsdbLoadAndMergeFromCache(SDataCols *pDataCols, int *iter, SCommitIt
...
@@ -1667,7 +1667,8 @@ static void tsdbLoadAndMergeFromCache(SDataCols *pDataCols, int *iter, SCommitIt
if
(
tdGetColDataOfRow
(
&
sVal
,
pDataCols
->
cols
+
i
,
*
iter
,
pDataCols
->
bitmapMode
)
<
0
)
{
if
(
tdGetColDataOfRow
(
&
sVal
,
pDataCols
->
cols
+
i
,
*
iter
,
pDataCols
->
bitmapMode
)
<
0
)
{
TASSERT
(
0
);
TASSERT
(
0
);
}
}
tdAppendValToDataCol
(
pTarget
->
cols
+
i
,
sVal
.
valType
,
sVal
.
val
,
pTarget
->
numOfRows
,
pTarget
->
maxPoints
,
pTarget
->
bitmapMode
);
tdAppendValToDataCol
(
pTarget
->
cols
+
i
,
sVal
.
valType
,
sVal
.
val
,
pTarget
->
numOfRows
,
pTarget
->
maxPoints
,
pTarget
->
bitmapMode
);
}
}
++
pTarget
->
numOfRows
;
++
pTarget
->
numOfRows
;
...
@@ -1774,11 +1775,11 @@ static bool tsdbCanAddSubBlock(SCommitH *pCommith, SBlock *pBlock, SMergeInfo *p
...
@@ -1774,11 +1775,11 @@ static bool tsdbCanAddSubBlock(SCommitH *pCommith, SBlock *pBlock, SMergeInfo *p
ASSERT
(
mergeRows
>
0
);
ASSERT
(
mergeRows
>
0
);
if
(
pBlock
->
numOfSubBlocks
<
TSDB_MAX_SUBBLOCKS
&&
pInfo
->
nOperations
<=
pCfg
->
maxRows
PerFileBlock
)
{
if
(
pBlock
->
numOfSubBlocks
<
TSDB_MAX_SUBBLOCKS
&&
pInfo
->
nOperations
<=
pCfg
->
maxRows
)
{
if
(
pBlock
->
last
)
{
if
(
pBlock
->
last
)
{
if
(
pCommith
->
isLFileSame
&&
mergeRows
<
pCfg
->
minRows
PerFileBlock
)
return
true
;
if
(
pCommith
->
isLFileSame
&&
mergeRows
<
pCfg
->
minRows
)
return
true
;
}
else
{
}
else
{
if
(
pCommith
->
isDFileSame
&&
mergeRows
<=
pCfg
->
maxRows
PerFileBlock
)
return
true
;
if
(
pCommith
->
isDFileSame
&&
mergeRows
<=
pCfg
->
maxRows
)
return
true
;
}
}
}
}
...
...
source/dnode/vnode/src/tsdb/tsdbFS.c
浏览文件 @
fd9e5208
...
@@ -190,8 +190,8 @@ static int tsdbAddDFileSetToStatus(SFSStatus *pStatus, const SDFileSet *pSet) {
...
@@ -190,8 +190,8 @@ static int tsdbAddDFileSetToStatus(SFSStatus *pStatus, const SDFileSet *pSet) {
// ================== STsdbFS
// ================== STsdbFS
STsdbFS
*
tsdbNewFS
(
const
STsdbCfg
*
pCfg
)
{
STsdbFS
*
tsdbNewFS
(
const
STsdbCfg
*
pCfg
)
{
int
keep
=
pCfg
->
keep
;
int
keep
=
pCfg
->
keep
2
;
int
days
=
pCfg
->
days
PerFile
;
int
days
=
pCfg
->
days
;
int
maxFSet
=
TSDB_MAX_FSETS
(
keep
,
days
);
int
maxFSet
=
TSDB_MAX_FSETS
(
keep
,
days
);
STsdbFS
*
pfs
;
STsdbFS
*
pfs
;
...
...
source/dnode/vnode/src/tsdb/tsdbMemTable.c
浏览文件 @
fd9e5208
...
@@ -19,9 +19,9 @@ static int tsdbScanAndConvertSubmitMsg(STsdb *pTsdb, SSubmitReq *pMsg);
...
@@ -19,9 +19,9 @@ static int tsdbScanAndConvertSubmitMsg(STsdb *pTsdb, SSubmitReq *pMsg);
static
int
tsdbMemTableInsertTbData
(
STsdb
*
pRepo
,
SSubmitBlk
*
pBlock
,
int32_t
*
pAffectedRows
);
static
int
tsdbMemTableInsertTbData
(
STsdb
*
pRepo
,
SSubmitBlk
*
pBlock
,
int32_t
*
pAffectedRows
);
static
STbData
*
tsdbNewTbData
(
tb_uid_t
uid
);
static
STbData
*
tsdbNewTbData
(
tb_uid_t
uid
);
static
void
tsdbFreeTbData
(
STbData
*
pTbData
);
static
void
tsdbFreeTbData
(
STbData
*
pTbData
);
static
char
*
tsdbGetTsTupleKey
(
const
void
*
data
);
static
char
*
tsdbGetTsTupleKey
(
const
void
*
data
);
static
int
tsdbTbDataComp
(
const
void
*
arg1
,
const
void
*
arg2
);
static
int
tsdbTbDataComp
(
const
void
*
arg1
,
const
void
*
arg2
);
static
char
*
tsdbTbDataGetUid
(
const
void
*
arg
);
static
char
*
tsdbTbDataGetUid
(
const
void
*
arg
);
static
int
tsdbAppendTableRowToCols
(
STable
*
pTable
,
SDataCols
*
pCols
,
STSchema
**
ppSchema
,
STSRow
*
row
);
static
int
tsdbAppendTableRowToCols
(
STable
*
pTable
,
SDataCols
*
pCols
,
STSchema
**
ppSchema
,
STSRow
*
row
);
STsdbMemTable
*
tsdbNewMemTable
(
STsdb
*
pTsdb
)
{
STsdbMemTable
*
tsdbNewMemTable
(
STsdb
*
pTsdb
)
{
...
@@ -74,7 +74,7 @@ void tsdbFreeMemTable(STsdb *pTsdb, STsdbMemTable *pMemTable) {
...
@@ -74,7 +74,7 @@ void tsdbFreeMemTable(STsdb *pTsdb, STsdbMemTable *pMemTable) {
}
}
int
tsdbMemTableInsert
(
STsdb
*
pTsdb
,
STsdbMemTable
*
pMemTable
,
SSubmitReq
*
pMsg
,
SSubmitRsp
*
pRsp
)
{
int
tsdbMemTableInsert
(
STsdb
*
pTsdb
,
STsdbMemTable
*
pMemTable
,
SSubmitReq
*
pMsg
,
SSubmitRsp
*
pRsp
)
{
SSubmitBlk
*
pBlock
=
NULL
;
SSubmitBlk
*
pBlock
=
NULL
;
SSubmitMsgIter
msgIter
=
{
0
};
SSubmitMsgIter
msgIter
=
{
0
};
int32_t
affectedrows
=
0
,
numOfRows
=
0
;
int32_t
affectedrows
=
0
,
numOfRows
=
0
;
...
@@ -119,12 +119,12 @@ int tsdbLoadDataFromCache(STable *pTable, SSkipListIterator *pIter, TSKEY maxKey
...
@@ -119,12 +119,12 @@ int tsdbLoadDataFromCache(STable *pTable, SSkipListIterator *pIter, TSKEY maxKey
TKEY
*
filterKeys
,
int
nFilterKeys
,
bool
keepDup
,
SMergeInfo
*
pMergeInfo
)
{
TKEY
*
filterKeys
,
int
nFilterKeys
,
bool
keepDup
,
SMergeInfo
*
pMergeInfo
)
{
ASSERT
(
maxRowsToRead
>
0
&&
nFilterKeys
>=
0
);
ASSERT
(
maxRowsToRead
>
0
&&
nFilterKeys
>=
0
);
if
(
pIter
==
NULL
)
return
0
;
if
(
pIter
==
NULL
)
return
0
;
STSchema
*
pSchema
=
NULL
;
STSchema
*
pSchema
=
NULL
;
TSKEY
rowKey
=
0
;
TSKEY
rowKey
=
0
;
TSKEY
fKey
=
0
;
TSKEY
fKey
=
0
;
bool
isRowDel
=
false
;
bool
isRowDel
=
false
;
int
filterIter
=
0
;
int
filterIter
=
0
;
STSRow
*
row
=
NULL
;
STSRow
*
row
=
NULL
;
SMergeInfo
mInfo
;
SMergeInfo
mInfo
;
if
(
pMergeInfo
==
NULL
)
pMergeInfo
=
&
mInfo
;
if
(
pMergeInfo
==
NULL
)
pMergeInfo
=
&
mInfo
;
...
@@ -259,12 +259,12 @@ static int tsdbScanAndConvertSubmitMsg(STsdb *pTsdb, SSubmitReq *pMsg) {
...
@@ -259,12 +259,12 @@ static int tsdbScanAndConvertSubmitMsg(STsdb *pTsdb, SSubmitReq *pMsg) {
ASSERT
(
pMsg
!=
NULL
);
ASSERT
(
pMsg
!=
NULL
);
// STsdbMeta * pMeta = pTsdb->tsdbMeta;
// STsdbMeta * pMeta = pTsdb->tsdbMeta;
SSubmitMsgIter
msgIter
=
{
0
};
SSubmitMsgIter
msgIter
=
{
0
};
SSubmitBlk
*
pBlock
=
NULL
;
SSubmitBlk
*
pBlock
=
NULL
;
SSubmitBlkIter
blkIter
=
{
0
};
SSubmitBlkIter
blkIter
=
{
0
};
STSRow
*
row
=
NULL
;
STSRow
*
row
=
NULL
;
TSKEY
now
=
taosGetTimestamp
(
pTsdb
->
config
.
precision
);
TSKEY
now
=
taosGetTimestamp
(
pTsdb
->
config
.
precision
);
TSKEY
minKey
=
now
-
tsTickPerDay
[
pTsdb
->
config
.
precision
]
*
pTsdb
->
config
.
keep
;
TSKEY
minKey
=
now
-
tsTickPerDay
[
pTsdb
->
config
.
precision
]
*
pTsdb
->
config
.
keep
2
;
TSKEY
maxKey
=
now
+
tsTickPerDay
[
pTsdb
->
config
.
precision
]
*
pTsdb
->
config
.
days
PerFile
;
TSKEY
maxKey
=
now
+
tsTickPerDay
[
pTsdb
->
config
.
precision
]
*
pTsdb
->
config
.
days
;
terrno
=
TSDB_CODE_SUCCESS
;
terrno
=
TSDB_CODE_SUCCESS
;
pMsg
->
length
=
htonl
(
pMsg
->
length
);
pMsg
->
length
=
htonl
(
pMsg
->
length
);
...
@@ -332,9 +332,9 @@ static int tsdbMemTableInsertTbData(STsdb *pTsdb, SSubmitBlk *pBlock, int32_t *p
...
@@ -332,9 +332,9 @@ static int tsdbMemTableInsertTbData(STsdb *pTsdb, SSubmitBlk *pBlock, int32_t *p
// STable *pTable = NULL;
// STable *pTable = NULL;
SSubmitBlkIter
blkIter
=
{
0
};
SSubmitBlkIter
blkIter
=
{
0
};
STsdbMemTable
*
pMemTable
=
pTsdb
->
mem
;
STsdbMemTable
*
pMemTable
=
pTsdb
->
mem
;
void
*
tptr
;
void
*
tptr
;
STbData
*
pTbData
;
STbData
*
pTbData
;
STSRow
*
row
;
STSRow
*
row
;
TSKEY
keyMin
;
TSKEY
keyMin
;
TSKEY
keyMax
;
TSKEY
keyMax
;
...
...
source/dnode/vnode/src/tsdb/tsdbOptions.c
浏览文件 @
fd9e5208
...
@@ -17,12 +17,12 @@
...
@@ -17,12 +17,12 @@
const
STsdbCfg
defautlTsdbOptions
=
{.
precision
=
0
,
const
STsdbCfg
defautlTsdbOptions
=
{.
precision
=
0
,
.
lruCacheSize
=
0
,
.
lruCacheSize
=
0
,
.
daysPerFile
=
10
,
.
days
=
10
,
.
minRowsPerFileBlock
=
100
,
.
minRows
=
100
,
.
maxRowsPerFileBlock
=
4096
,
.
maxRows
=
4096
,
.
keep
=
3650
,
.
keep1
=
3650
,
.
keep2
=
3650
,
.
keep2
=
3650
,
.
keep0
=
3650
,
.
keep1
=
3650
,
.
update
=
0
,
.
update
=
0
,
.
compression
=
TWO_STAGE_COMP
};
.
compression
=
TWO_STAGE_COMP
};
...
...
source/dnode/vnode/src/tsdb/tsdbRead.c
浏览文件 @
fd9e5208
...
@@ -314,7 +314,7 @@ static int64_t getEarliestValidTimestamp(STsdb* pTsdb) {
...
@@ -314,7 +314,7 @@ static int64_t getEarliestValidTimestamp(STsdb* pTsdb) {
STsdbCfg
*
pCfg
=
&
pTsdb
->
config
;
STsdbCfg
*
pCfg
=
&
pTsdb
->
config
;
int64_t
now
=
taosGetTimestamp
(
pCfg
->
precision
);
int64_t
now
=
taosGetTimestamp
(
pCfg
->
precision
);
return
now
-
(
tsTickPerDay
[
pCfg
->
precision
]
*
pCfg
->
keep
)
+
1
;
// needs to add one tick
return
now
-
(
tsTickPerDay
[
pCfg
->
precision
]
*
pCfg
->
keep
2
)
+
1
;
// needs to add one tick
}
}
static
void
setQueryTimewindow
(
STsdbReadHandle
*
pTsdbReadHandle
,
STsdbQueryCond
*
pCond
)
{
static
void
setQueryTimewindow
(
STsdbReadHandle
*
pTsdbReadHandle
,
STsdbQueryCond
*
pCond
)
{
...
@@ -404,7 +404,7 @@ static STsdbReadHandle* tsdbQueryTablesImpl(STsdb* tsdb, STsdbQueryCond* pCond,
...
@@ -404,7 +404,7 @@ static STsdbReadHandle* tsdbQueryTablesImpl(STsdb* tsdb, STsdbQueryCond* pCond,
pReadHandle
->
defaultLoadColumn
=
getDefaultLoadColumns
(
pReadHandle
,
true
);
pReadHandle
->
defaultLoadColumn
=
getDefaultLoadColumns
(
pReadHandle
,
true
);
}
}
pReadHandle
->
pDataCols
=
tdNewDataCols
(
1000
,
pReadHandle
->
pTsdb
->
config
.
maxRows
PerFileBlock
);
pReadHandle
->
pDataCols
=
tdNewDataCols
(
1000
,
pReadHandle
->
pTsdb
->
config
.
maxRows
);
if
(
pReadHandle
->
pDataCols
==
NULL
)
{
if
(
pReadHandle
->
pDataCols
==
NULL
)
{
tsdbError
(
"%p failed to malloc buf for pDataCols, %s"
,
pReadHandle
,
pReadHandle
->
idStr
);
tsdbError
(
"%p failed to malloc buf for pDataCols, %s"
,
pReadHandle
,
pReadHandle
->
idStr
);
terrno
=
TSDB_CODE_TDB_OUT_OF_MEMORY
;
terrno
=
TSDB_CODE_TDB_OUT_OF_MEMORY
;
...
@@ -2199,7 +2199,7 @@ static int32_t getFirstFileDataBlock(STsdbReadHandle* pTsdbReadHandle, bool* exi
...
@@ -2199,7 +2199,7 @@ static int32_t getFirstFileDataBlock(STsdbReadHandle* pTsdbReadHandle, bool* exi
break
;
break
;
}
}
tsdbGetFidKeyRange
(
pCfg
->
days
PerFile
,
pCfg
->
precision
,
pTsdbReadHandle
->
pFileGroup
->
fid
,
&
win
.
skey
,
&
win
.
ekey
);
tsdbGetFidKeyRange
(
pCfg
->
days
,
pCfg
->
precision
,
pTsdbReadHandle
->
pFileGroup
->
fid
,
&
win
.
skey
,
&
win
.
ekey
);
// current file are not overlapped with query time window, ignore remain files
// current file are not overlapped with query time window, ignore remain files
if
((
ASCENDING_TRAVERSE
(
pTsdbReadHandle
->
order
)
&&
win
.
skey
>
pTsdbReadHandle
->
window
.
ekey
)
||
if
((
ASCENDING_TRAVERSE
(
pTsdbReadHandle
->
order
)
&&
win
.
skey
>
pTsdbReadHandle
->
window
.
ekey
)
||
...
@@ -2295,7 +2295,7 @@ int32_t tsdbGetFileBlocksDistInfo(tsdbReaderT* queryHandle, STableBlockDistInfo*
...
@@ -2295,7 +2295,7 @@ int32_t tsdbGetFileBlocksDistInfo(tsdbReaderT* queryHandle, STableBlockDistInfo*
// find the start data block in file
// find the start data block in file
pTsdbReadHandle
->
locateStart
=
true
;
pTsdbReadHandle
->
locateStart
=
true
;
STsdbCfg
*
pCfg
=
&
pTsdbReadHandle
->
pTsdb
->
config
;
STsdbCfg
*
pCfg
=
&
pTsdbReadHandle
->
pTsdb
->
config
;
int32_t
fid
=
getFileIdFromKey
(
pTsdbReadHandle
->
window
.
skey
,
pCfg
->
days
PerFile
,
pCfg
->
precision
);
int32_t
fid
=
getFileIdFromKey
(
pTsdbReadHandle
->
window
.
skey
,
pCfg
->
days
,
pCfg
->
precision
);
tsdbRLockFS
(
pFileHandle
);
tsdbRLockFS
(
pFileHandle
);
tsdbFSIterInit
(
&
pTsdbReadHandle
->
fileIter
,
pFileHandle
,
pTsdbReadHandle
->
order
);
tsdbFSIterInit
(
&
pTsdbReadHandle
->
fileIter
,
pFileHandle
,
pTsdbReadHandle
->
order
);
...
@@ -2321,7 +2321,7 @@ int32_t tsdbGetFileBlocksDistInfo(tsdbReaderT* queryHandle, STableBlockDistInfo*
...
@@ -2321,7 +2321,7 @@ int32_t tsdbGetFileBlocksDistInfo(tsdbReaderT* queryHandle, STableBlockDistInfo*
break
;
break
;
}
}
tsdbGetFidKeyRange
(
pCfg
->
days
PerFile
,
pCfg
->
precision
,
pTsdbReadHandle
->
pFileGroup
->
fid
,
&
win
.
skey
,
&
win
.
ekey
);
tsdbGetFidKeyRange
(
pCfg
->
days
,
pCfg
->
precision
,
pTsdbReadHandle
->
pFileGroup
->
fid
,
&
win
.
skey
,
&
win
.
ekey
);
// current file are not overlapped with query time window, ignore remain files
// current file are not overlapped with query time window, ignore remain files
if
((
ascTraverse
&&
win
.
skey
>
pTsdbReadHandle
->
window
.
ekey
)
||
if
((
ascTraverse
&&
win
.
skey
>
pTsdbReadHandle
->
window
.
ekey
)
||
...
@@ -2396,7 +2396,7 @@ static int32_t getDataBlocksInFiles(STsdbReadHandle* pTsdbReadHandle, bool* exis
...
@@ -2396,7 +2396,7 @@ static int32_t getDataBlocksInFiles(STsdbReadHandle* pTsdbReadHandle, bool* exis
if
(
!
pTsdbReadHandle
->
locateStart
)
{
if
(
!
pTsdbReadHandle
->
locateStart
)
{
pTsdbReadHandle
->
locateStart
=
true
;
pTsdbReadHandle
->
locateStart
=
true
;
STsdbCfg
*
pCfg
=
&
pTsdbReadHandle
->
pTsdb
->
config
;
STsdbCfg
*
pCfg
=
&
pTsdbReadHandle
->
pTsdb
->
config
;
int32_t
fid
=
getFileIdFromKey
(
pTsdbReadHandle
->
window
.
skey
,
pCfg
->
days
PerFile
,
pCfg
->
precision
);
int32_t
fid
=
getFileIdFromKey
(
pTsdbReadHandle
->
window
.
skey
,
pCfg
->
days
,
pCfg
->
precision
);
tsdbRLockFS
(
pFileHandle
);
tsdbRLockFS
(
pFileHandle
);
tsdbFSIterInit
(
&
pTsdbReadHandle
->
fileIter
,
pFileHandle
,
pTsdbReadHandle
->
order
);
tsdbFSIterInit
(
&
pTsdbReadHandle
->
fileIter
,
pFileHandle
,
pTsdbReadHandle
->
order
);
...
...
source/dnode/vnode/src/tsdb/tsdbReadImpl.c
浏览文件 @
fd9e5208
...
@@ -43,14 +43,14 @@ int tsdbInitReadH(SReadH *pReadh, STsdb *pRepo) {
...
@@ -43,14 +43,14 @@ int tsdbInitReadH(SReadH *pReadh, STsdb *pRepo) {
return
-
1
;
return
-
1
;
}
}
pReadh
->
pDCols
[
0
]
=
tdNewDataCols
(
0
,
pCfg
->
maxRows
PerFileBlock
);
pReadh
->
pDCols
[
0
]
=
tdNewDataCols
(
0
,
pCfg
->
maxRows
);
if
(
pReadh
->
pDCols
[
0
]
==
NULL
)
{
if
(
pReadh
->
pDCols
[
0
]
==
NULL
)
{
terrno
=
TSDB_CODE_TDB_OUT_OF_MEMORY
;
terrno
=
TSDB_CODE_TDB_OUT_OF_MEMORY
;
tsdbDestroyReadH
(
pReadh
);
tsdbDestroyReadH
(
pReadh
);
return
-
1
;
return
-
1
;
}
}
pReadh
->
pDCols
[
1
]
=
tdNewDataCols
(
0
,
pCfg
->
maxRows
PerFileBlock
);
pReadh
->
pDCols
[
1
]
=
tdNewDataCols
(
0
,
pCfg
->
maxRows
);
if
(
pReadh
->
pDCols
[
1
]
==
NULL
)
{
if
(
pReadh
->
pDCols
[
1
]
==
NULL
)
{
terrno
=
TSDB_CODE_TDB_OUT_OF_MEMORY
;
terrno
=
TSDB_CODE_TDB_OUT_OF_MEMORY
;
tsdbDestroyReadH
(
pReadh
);
tsdbDestroyReadH
(
pReadh
);
...
@@ -276,8 +276,8 @@ int tsdbLoadBlockData(SReadH *pReadh, SBlock *pBlock, SBlockInfo *pBlkInfo) {
...
@@ -276,8 +276,8 @@ int tsdbLoadBlockData(SReadH *pReadh, SBlock *pBlock, SBlockInfo *pBlkInfo) {
return
0
;
return
0
;
}
}
int
tsdbLoadBlockDataCols
(
SReadH
*
pReadh
,
SBlock
*
pBlock
,
SBlockInfo
*
pBlkInfo
,
const
int16_t
*
colIds
,
int
tsdbLoadBlockDataCols
(
SReadH
*
pReadh
,
SBlock
*
pBlock
,
SBlockInfo
*
pBlkInfo
,
const
int16_t
*
colIds
,
int
numOfColsIds
,
int
numOfColsIds
,
bool
mergeBitmap
)
{
bool
mergeBitmap
)
{
ASSERT
(
pBlock
->
numOfSubBlocks
>
0
);
ASSERT
(
pBlock
->
numOfSubBlocks
>
0
);
int8_t
update
=
pReadh
->
pRepo
->
config
.
update
;
int8_t
update
=
pReadh
->
pRepo
->
config
.
update
;
...
@@ -513,7 +513,7 @@ static int tsdbLoadBlockDataImpl(SReadH *pReadh, SBlock *pBlock, SDataCols *pDat
...
@@ -513,7 +513,7 @@ static int tsdbLoadBlockDataImpl(SReadH *pReadh, SBlock *pBlock, SDataCols *pDat
tdResetDataCols
(
pDataCols
);
tdResetDataCols
(
pDataCols
);
if
(
tsdbIsSupBlock
(
pBlock
))
{
if
(
tsdbIsSupBlock
(
pBlock
))
{
tdDataColsSetBitmapI
(
pDataCols
);
tdDataColsSetBitmapI
(
pDataCols
);
}
}
...
@@ -606,9 +606,10 @@ static int tsdbLoadBlockDataImpl(SReadH *pReadh, SBlock *pBlock, SDataCols *pDat
...
@@ -606,9 +606,10 @@ static int tsdbLoadBlockDataImpl(SReadH *pReadh, SBlock *pBlock, SDataCols *pDat
if
(
tsdbMakeRoom
((
void
**
)(
&
TSDB_READ_COMP_BUF
(
pReadh
)),
zsize
)
<
0
)
return
-
1
;
if
(
tsdbMakeRoom
((
void
**
)(
&
TSDB_READ_COMP_BUF
(
pReadh
)),
zsize
)
<
0
)
return
-
1
;
}
}
if
(
tsdbCheckAndDecodeColumnData
(
pDataCol
,
POINTER_SHIFT
(
pBlockData
,
tsize
+
toffset
),
tlen
,
pBlockCol
->
blen
,
if
(
tsdbCheckAndDecodeColumnData
(
pDataCol
,
POINTER_SHIFT
(
pBlockData
,
tsize
+
toffset
),
tlen
,
pBlock
->
algorithm
,
pBlock
->
numOfRows
,
tLenBitmap
,
pDataCols
->
maxPoints
,
pBlockCol
?
pBlockCol
->
blen
:
0
,
pBlock
->
algorithm
,
pBlock
->
numOfRows
,
TSDB_READ_COMP_BUF
(
pReadh
),
(
int
)
taosTSizeof
(
TSDB_READ_COMP_BUF
(
pReadh
)))
<
0
)
{
tLenBitmap
,
pDataCols
->
maxPoints
,
TSDB_READ_COMP_BUF
(
pReadh
),
(
int
)
taosTSizeof
(
TSDB_READ_COMP_BUF
(
pReadh
)))
<
0
)
{
tsdbError
(
"vgId:%d file %s is broken at column %d block offset %"
PRId64
" column offset %u"
,
tsdbError
(
"vgId:%d file %s is broken at column %d block offset %"
PRId64
" column offset %u"
,
TSDB_READ_REPO_ID
(
pReadh
),
TSDB_FILE_FULL_NAME
(
pDFile
),
tcolId
,
(
int64_t
)
pBlock
->
offset
,
toffset
);
TSDB_READ_REPO_ID
(
pReadh
),
TSDB_FILE_FULL_NAME
(
pDFile
),
tcolId
,
(
int64_t
)
pBlock
->
offset
,
toffset
);
return
-
1
;
return
-
1
;
...
@@ -710,7 +711,7 @@ static int tsdbLoadBlockDataColsImpl(SReadH *pReadh, SBlock *pBlock, SDataCols *
...
@@ -710,7 +711,7 @@ static int tsdbLoadBlockDataColsImpl(SReadH *pReadh, SBlock *pBlock, SDataCols *
tdResetDataCols
(
pDataCols
);
tdResetDataCols
(
pDataCols
);
if
(
tsdbIsSupBlock
(
pBlock
))
{
if
(
tsdbIsSupBlock
(
pBlock
))
{
tdDataColsSetBitmapI
(
pDataCols
);
tdDataColsSetBitmapI
(
pDataCols
);
}
}
...
@@ -747,6 +748,7 @@ static int tsdbLoadBlockDataColsImpl(SReadH *pReadh, SBlock *pBlock, SDataCols *
...
@@ -747,6 +748,7 @@ static int tsdbLoadBlockDataColsImpl(SReadH *pReadh, SBlock *pBlock, SDataCols *
if
(
colId
==
PRIMARYKEY_TIMESTAMP_COL_ID
)
{
// load the key row
if
(
colId
==
PRIMARYKEY_TIMESTAMP_COL_ID
)
{
// load the key row
blockCol
.
colId
=
colId
;
blockCol
.
colId
=
colId
;
TD_SET_COL_ROWS_NORM
(
&
blockCol
);
// default is NORM for the primary key column
TD_SET_COL_ROWS_NORM
(
&
blockCol
);
// default is NORM for the primary key column
blockCol
.
blen
=
0
;
blockCol
.
len
=
pBlock
->
keyLen
;
blockCol
.
len
=
pBlock
->
keyLen
;
blockCol
.
type
=
pDataCol
->
type
;
blockCol
.
type
=
pDataCol
->
type
;
blockCol
.
offset
=
TSDB_KEY_COL_OFFSET
;
blockCol
.
offset
=
TSDB_KEY_COL_OFFSET
;
...
@@ -836,7 +838,7 @@ static int tsdbLoadColData(SReadH *pReadh, SDFile *pDFile, SBlock *pBlock, SBloc
...
@@ -836,7 +838,7 @@ static int tsdbLoadColData(SReadH *pReadh, SDFile *pDFile, SBlock *pBlock, SBloc
}
}
if
(
tsdbCheckAndDecodeColumnData
(
pDataCol
,
pReadh
->
pBuf
,
pBlockCol
->
len
,
pBlockCol
->
blen
,
pBlock
->
algorithm
,
if
(
tsdbCheckAndDecodeColumnData
(
pDataCol
,
pReadh
->
pBuf
,
pBlockCol
->
len
,
pBlockCol
->
blen
,
pBlock
->
algorithm
,
pBlock
->
numOfRows
,
tLenBitmap
,
pCfg
->
maxRows
PerFileBlock
,
pReadh
->
pCBuf
,
pBlock
->
numOfRows
,
tLenBitmap
,
pCfg
->
maxRows
,
pReadh
->
pCBuf
,
(
int32_t
)
taosTSizeof
(
pReadh
->
pCBuf
))
<
0
)
{
(
int32_t
)
taosTSizeof
(
pReadh
->
pCBuf
))
<
0
)
{
tsdbError
(
"vgId:%d file %s is broken at column %d offset %"
PRId64
,
REPO_ID
(
pRepo
),
TSDB_FILE_FULL_NAME
(
pDFile
),
tsdbError
(
"vgId:%d file %s is broken at column %d offset %"
PRId64
,
REPO_ID
(
pRepo
),
TSDB_FILE_FULL_NAME
(
pDFile
),
pBlockCol
->
colId
,
offset
);
pBlockCol
->
colId
,
offset
);
...
...
source/dnode/vnode/src/tsdb/tsdbSma.c
浏览文件 @
fd9e5208
...
@@ -106,7 +106,8 @@ struct SSmaStat {
...
@@ -106,7 +106,8 @@ struct SSmaStat {
// expired window
// expired window
static
int32_t
tsdbUpdateExpiredWindowImpl
(
STsdb
*
pTsdb
,
SSubmitReq
*
pMsg
,
int64_t
version
);
static
int32_t
tsdbUpdateExpiredWindowImpl
(
STsdb
*
pTsdb
,
SSubmitReq
*
pMsg
,
int64_t
version
);
static
int32_t
tsdbSetExpiredWindow
(
STsdb
*
pTsdb
,
SHashObj
*
pItemsHash
,
int64_t
indexUid
,
int64_t
winSKey
,
int64_t
version
);
static
int32_t
tsdbSetExpiredWindow
(
STsdb
*
pTsdb
,
SHashObj
*
pItemsHash
,
int64_t
indexUid
,
int64_t
winSKey
,
int64_t
version
);
static
int32_t
tsdbInitSmaStat
(
SSmaStat
**
pSmaStat
);
static
int32_t
tsdbInitSmaStat
(
SSmaStat
**
pSmaStat
);
static
void
*
tsdbFreeSmaStatItem
(
SSmaStatItem
*
pSmaStatItem
);
static
void
*
tsdbFreeSmaStatItem
(
SSmaStatItem
*
pSmaStatItem
);
static
int32_t
tsdbDestroySmaState
(
SSmaStat
*
pSmaStat
);
static
int32_t
tsdbDestroySmaState
(
SSmaStat
*
pSmaStat
);
...
@@ -544,7 +545,8 @@ static int32_t tsdbCheckAndInitSmaEnv(STsdb *pTsdb, int8_t smaType) {
...
@@ -544,7 +545,8 @@ static int32_t tsdbCheckAndInitSmaEnv(STsdb *pTsdb, int8_t smaType) {
return
TSDB_CODE_SUCCESS
;
return
TSDB_CODE_SUCCESS
;
};
};
static
int32_t
tsdbSetExpiredWindow
(
STsdb
*
pTsdb
,
SHashObj
*
pItemsHash
,
int64_t
indexUid
,
int64_t
winSKey
,
int64_t
version
)
{
static
int32_t
tsdbSetExpiredWindow
(
STsdb
*
pTsdb
,
SHashObj
*
pItemsHash
,
int64_t
indexUid
,
int64_t
winSKey
,
int64_t
version
)
{
SSmaStatItem
*
pItem
=
taosHashGet
(
pItemsHash
,
&
indexUid
,
sizeof
(
indexUid
));
SSmaStatItem
*
pItem
=
taosHashGet
(
pItemsHash
,
&
indexUid
,
sizeof
(
indexUid
));
if
(
pItem
==
NULL
)
{
if
(
pItem
==
NULL
)
{
// TODO: use TSDB_SMA_STAT_EXPIRED and update by stream computing later
// TODO: use TSDB_SMA_STAT_EXPIRED and update by stream computing later
...
@@ -946,7 +948,7 @@ static int32_t tsdbSetTSmaDataFile(STSmaWriteH *pSmaH, int64_t indexUid, int32_t
...
@@ -946,7 +948,7 @@ static int32_t tsdbSetTSmaDataFile(STSmaWriteH *pSmaH, int64_t indexUid, int32_t
*/
*/
static
int32_t
tsdbGetTSmaDays
(
STsdb
*
pTsdb
,
int64_t
interval
,
int32_t
storageLevel
)
{
static
int32_t
tsdbGetTSmaDays
(
STsdb
*
pTsdb
,
int64_t
interval
,
int32_t
storageLevel
)
{
STsdbCfg
*
pCfg
=
REPO_CFG
(
pTsdb
);
STsdbCfg
*
pCfg
=
REPO_CFG
(
pTsdb
);
int32_t
daysPerFile
=
pCfg
->
days
PerFile
;
int32_t
daysPerFile
=
pCfg
->
days
;
if
(
storageLevel
==
SMA_STORAGE_LEVEL_TSDB
)
{
if
(
storageLevel
==
SMA_STORAGE_LEVEL_TSDB
)
{
int32_t
days
=
SMA_STORAGE_TSDB_TIMES
*
(
interval
/
tsTickPerDay
[
pCfg
->
precision
]);
int32_t
days
=
SMA_STORAGE_TSDB_TIMES
*
(
interval
/
tsTickPerDay
[
pCfg
->
precision
]);
...
...
source/dnode/vnode/src/vnd/vnodeCfg.c
浏览文件 @
fd9e5208
...
@@ -15,14 +15,15 @@
...
@@ -15,14 +15,15 @@
#include "vnodeInt.h"
#include "vnodeInt.h"
const
SVnodeCfg
defaultVnodeOptions
=
{
const
SVnodeCfg
vnodeCfgDefault
=
{
.
wsize
=
96
*
1024
*
1024
,
.
ssize
=
1
*
1024
*
1024
,
.
lsize
=
1024
,
.
walCfg
=
{.
level
=
TAOS_WAL_WRITE
}};
/* TODO */
.
wsize
=
96
*
1024
*
1024
,
.
ssize
=
1
*
1024
*
1024
,
.
lsize
=
1024
,
.
walCfg
=
{.
level
=
TAOS_WAL_WRITE
}};
int
vnode
ValidateOptions
(
const
SVnodeCfg
*
pVnodeOptions
)
{
int
vnode
CheckCfg
(
const
SVnodeCfg
*
pCfg
)
{
// TODO
// TODO
return
0
;
return
0
;
}
}
#if 1 //======================================================================
void
vnodeOptionsCopy
(
SVnodeCfg
*
pDest
,
const
SVnodeCfg
*
pSrc
)
{
void
vnodeOptionsCopy
(
SVnodeCfg
*
pDest
,
const
SVnodeCfg
*
pSrc
)
{
memcpy
((
void
*
)
pDest
,
(
void
*
)
pSrc
,
sizeof
(
SVnodeCfg
));
memcpy
((
void
*
)
pDest
,
(
void
*
)
pSrc
,
sizeof
(
SVnodeCfg
));
}
}
...
@@ -46,3 +47,5 @@ int vnodeValidateTableHash(SVnodeCfg *pVnodeOptions, char *tableFName) {
...
@@ -46,3 +47,5 @@ int vnodeValidateTableHash(SVnodeCfg *pVnodeOptions, char *tableFName) {
return
TSDB_CODE_SUCCESS
;
return
TSDB_CODE_SUCCESS
;
}
}
#endif
\ No newline at end of file
source/dnode/vnode/src/vnd/vnodeCommit.c
浏览文件 @
fd9e5208
...
@@ -15,11 +15,128 @@
...
@@ -15,11 +15,128 @@
#include "vnodeInt.h"
#include "vnodeInt.h"
#define VND_INFO_FNAME "vnode.json"
#define VND_INFO_FNAME_TMP "vnode_tmp.json"
static
int
vnodeEncodeInfo
(
const
SVnodeInfo
*
pInfo
,
char
**
ppData
);
static
int
vnodeDecodeInfo
(
uint8_t
*
pData
,
SVnodeInfo
*
pInfo
);
static
int
vnodeStartCommit
(
SVnode
*
pVnode
);
static
int
vnodeStartCommit
(
SVnode
*
pVnode
);
static
int
vnodeEndCommit
(
SVnode
*
pVnode
);
static
int
vnodeEndCommit
(
SVnode
*
pVnode
);
static
int
vnodeCommit
(
void
*
arg
);
static
int
vnodeCommit
(
void
*
arg
);
static
void
vnodeWaitCommit
(
SVnode
*
pVnode
);
static
void
vnodeWaitCommit
(
SVnode
*
pVnode
);
int
vnodeSaveInfo
(
const
char
*
dir
,
const
SVnodeInfo
*
pInfo
)
{
char
fname
[
TSDB_FILENAME_LEN
];
TdFilePtr
pFile
;
char
*
data
;
snprintf
(
fname
,
TSDB_FILENAME_LEN
,
"%s%s%s"
,
dir
,
TD_DIRSEP
,
VND_INFO_FNAME_TMP
);
// encode info
data
=
NULL
;
if
(
vnodeEncodeInfo
(
pInfo
,
&
data
)
<
0
)
{
return
-
1
;
}
// save info to a vnode_tmp.json
pFile
=
taosOpenFile
(
fname
,
TD_FILE_CREATE
|
TD_FILE_WRITE
|
TD_FILE_TRUNC
);
if
(
pFile
==
NULL
)
{
terrno
=
TAOS_SYSTEM_ERROR
(
errno
);
return
-
1
;
}
if
(
taosWriteFile
(
pFile
,
data
,
strlen
(
data
))
<
0
)
{
terrno
=
TAOS_SYSTEM_ERROR
(
errno
);
goto
_err
;
}
if
(
taosFsyncFile
(
pFile
)
<
0
)
{
terrno
=
TAOS_SYSTEM_ERROR
(
errno
);
goto
_err
;
}
taosCloseFile
(
&
pFile
);
// free info binary
taosMemoryFree
(
data
);
vInfo
(
"vgId: %d vnode info is saved, fname: %s"
,
pInfo
->
config
.
vgId
,
fname
);
return
0
;
_err:
taosCloseFile
(
&
pFile
);
taosMemoryFree
(
data
);
return
-
1
;
}
int
vnodeCommitInfo
(
const
char
*
dir
,
const
SVnodeInfo
*
pInfo
)
{
char
fname
[
TSDB_FILENAME_LEN
];
char
tfname
[
TSDB_FILENAME_LEN
];
snprintf
(
fname
,
TSDB_FILENAME_LEN
,
"%s%s%s"
,
dir
,
TD_DIRSEP
,
VND_INFO_FNAME
);
snprintf
(
tfname
,
TSDB_FILENAME_LEN
,
"%s%s%s"
,
dir
,
TD_DIRSEP
,
VND_INFO_FNAME_TMP
);
if
(
taosRenameFile
(
tfname
,
fname
)
<
0
)
{
terrno
=
TAOS_SYSTEM_ERROR
(
errno
);
return
-
1
;
}
vInfo
(
"vgId: %d vnode info is committed"
,
pInfo
->
config
.
vgId
);
return
0
;
}
int
vnodeLoadInfo
(
const
char
*
dir
,
SVnodeInfo
*
pInfo
)
{
char
fname
[
TSDB_FILENAME_LEN
];
TdFilePtr
pFile
=
NULL
;
char
*
pData
=
NULL
;
int64_t
size
;
snprintf
(
fname
,
TSDB_FILENAME_LEN
,
"%s%s%s"
,
dir
,
TD_DIRSEP
,
VND_INFO_FNAME
);
// read info
pFile
=
taosOpenFile
(
fname
,
TD_FILE_READ
);
if
(
pFile
==
NULL
)
{
terrno
=
TAOS_SYSTEM_ERROR
(
errno
);
return
-
1
;
}
if
(
taosFStatFile
(
pFile
,
&
size
,
NULL
)
<
0
)
{
terrno
=
TAOS_SYSTEM_ERROR
(
errno
);
goto
_err
;
}
pData
=
taosMemoryMalloc
(
size
);
if
(
pData
==
NULL
)
{
terrno
=
TSDB_CODE_OUT_OF_MEMORY
;
goto
_err
;
}
if
(
taosReadFile
(
pFile
,
pData
,
size
)
<
0
)
{
terrno
=
TAOS_SYSTEM_ERROR
(
errno
);
goto
_err
;
}
taosCloseFile
(
&
pFile
);
// decode info
if
(
vnodeDecodeInfo
(
pData
,
pInfo
)
<
0
)
{
taosMemoryFree
(
pData
);
return
-
1
;
}
taosMemoryFree
(
pData
);
return
0
;
_err:
taosCloseFile
(
&
pFile
);
taosMemoryFree
(
pData
);
return
-
1
;
}
int
vnodeAsyncCommit
(
SVnode
*
pVnode
)
{
int
vnodeAsyncCommit
(
SVnode
*
pVnode
)
{
vnodeWaitCommit
(
pVnode
);
vnodeWaitCommit
(
pVnode
);
...
@@ -61,3 +178,132 @@ static int vnodeEndCommit(SVnode *pVnode) {
...
@@ -61,3 +178,132 @@ static int vnodeEndCommit(SVnode *pVnode) {
}
}
static
FORCE_INLINE
void
vnodeWaitCommit
(
SVnode
*
pVnode
)
{
tsem_wait
(
&
pVnode
->
canCommit
);
}
static
FORCE_INLINE
void
vnodeWaitCommit
(
SVnode
*
pVnode
)
{
tsem_wait
(
&
pVnode
->
canCommit
);
}
static
int
vnodeEncodeConfig
(
const
void
*
pObj
,
SJson
*
pJson
)
{
const
SVnodeCfg
*
pCfg
=
(
SVnodeCfg
*
)
pObj
;
if
(
tjsonAddIntegerToObject
(
pJson
,
"vgId"
,
pCfg
->
vgId
)
<
0
)
return
-
1
;
if
(
tjsonAddIntegerToObject
(
pJson
,
"dbId"
,
pCfg
->
dbId
)
<
0
)
return
-
1
;
if
(
tjsonAddIntegerToObject
(
pJson
,
"wsize"
,
pCfg
->
wsize
)
<
0
)
return
-
1
;
if
(
tjsonAddIntegerToObject
(
pJson
,
"ssize"
,
pCfg
->
ssize
)
<
0
)
return
-
1
;
if
(
tjsonAddIntegerToObject
(
pJson
,
"lsize"
,
pCfg
->
lsize
)
<
0
)
return
-
1
;
if
(
tjsonAddIntegerToObject
(
pJson
,
"isHeap"
,
pCfg
->
isHeapAllocator
)
<
0
)
return
-
1
;
if
(
tjsonAddIntegerToObject
(
pJson
,
"ttl"
,
pCfg
->
ttl
)
<
0
)
return
-
1
;
if
(
tjsonAddIntegerToObject
(
pJson
,
"keep"
,
pCfg
->
keep
)
<
0
)
return
-
1
;
if
(
tjsonAddIntegerToObject
(
pJson
,
"streamMode"
,
pCfg
->
streamMode
)
<
0
)
return
-
1
;
if
(
tjsonAddIntegerToObject
(
pJson
,
"isWeak"
,
pCfg
->
isWeak
)
<
0
)
return
-
1
;
if
(
tjsonAddIntegerToObject
(
pJson
,
"precision"
,
pCfg
->
tsdbCfg
.
precision
)
<
0
)
return
-
1
;
if
(
tjsonAddIntegerToObject
(
pJson
,
"update"
,
pCfg
->
tsdbCfg
.
update
)
<
0
)
return
-
1
;
if
(
tjsonAddIntegerToObject
(
pJson
,
"compression"
,
pCfg
->
tsdbCfg
.
compression
)
<
0
)
return
-
1
;
if
(
tjsonAddIntegerToObject
(
pJson
,
"daysPerFile"
,
pCfg
->
tsdbCfg
.
days
)
<
0
)
return
-
1
;
if
(
tjsonAddIntegerToObject
(
pJson
,
"minRows"
,
pCfg
->
tsdbCfg
.
minRows
)
<
0
)
return
-
1
;
if
(
tjsonAddIntegerToObject
(
pJson
,
"maxRows"
,
pCfg
->
tsdbCfg
.
maxRows
)
<
0
)
return
-
1
;
if
(
tjsonAddIntegerToObject
(
pJson
,
"keep0"
,
pCfg
->
tsdbCfg
.
keep0
)
<
0
)
return
-
1
;
if
(
tjsonAddIntegerToObject
(
pJson
,
"keep1"
,
pCfg
->
tsdbCfg
.
keep1
)
<
0
)
return
-
1
;
if
(
tjsonAddIntegerToObject
(
pJson
,
"keep2"
,
pCfg
->
tsdbCfg
.
keep2
)
<
0
)
return
-
1
;
if
(
tjsonAddIntegerToObject
(
pJson
,
"lruCacheSize"
,
pCfg
->
tsdbCfg
.
lruCacheSize
)
<
0
)
return
-
1
;
return
0
;
}
static
int
vnodeDecodeConfig
(
const
SJson
*
pJson
,
void
*
pObj
)
{
SVnodeCfg
*
pCfg
=
(
SVnodeCfg
*
)
pObj
;
if
(
tjsonGetNumberValue
(
pJson
,
"vgId"
,
pCfg
->
vgId
)
<
0
)
return
-
1
;
if
(
tjsonGetNumberValue
(
pJson
,
"dbId"
,
pCfg
->
dbId
)
<
0
)
return
-
1
;
if
(
tjsonGetNumberValue
(
pJson
,
"wsize"
,
pCfg
->
wsize
)
<
0
)
return
-
1
;
if
(
tjsonGetNumberValue
(
pJson
,
"ssize"
,
pCfg
->
ssize
)
<
0
)
return
-
1
;
if
(
tjsonGetNumberValue
(
pJson
,
"lsize"
,
pCfg
->
lsize
)
<
0
)
return
-
1
;
if
(
tjsonGetNumberValue
(
pJson
,
"isHeap"
,
pCfg
->
isHeapAllocator
)
<
0
)
return
-
1
;
if
(
tjsonGetNumberValue
(
pJson
,
"ttl"
,
pCfg
->
ttl
)
<
0
)
return
-
1
;
if
(
tjsonGetNumberValue
(
pJson
,
"keep"
,
pCfg
->
keep
)
<
0
)
return
-
1
;
if
(
tjsonGetNumberValue
(
pJson
,
"streamMode"
,
pCfg
->
streamMode
)
<
0
)
return
-
1
;
if
(
tjsonGetNumberValue
(
pJson
,
"isWeak"
,
pCfg
->
isWeak
)
<
0
)
return
-
1
;
if
(
tjsonGetNumberValue
(
pJson
,
"precision"
,
pCfg
->
tsdbCfg
.
precision
)
<
0
)
return
-
1
;
if
(
tjsonGetNumberValue
(
pJson
,
"update"
,
pCfg
->
tsdbCfg
.
update
)
<
0
)
return
-
1
;
if
(
tjsonGetNumberValue
(
pJson
,
"compression"
,
pCfg
->
tsdbCfg
.
compression
)
<
0
)
return
-
1
;
if
(
tjsonGetNumberValue
(
pJson
,
"daysPerFile"
,
pCfg
->
tsdbCfg
.
days
)
<
0
)
return
-
1
;
if
(
tjsonGetNumberValue
(
pJson
,
"minRows"
,
pCfg
->
tsdbCfg
.
minRows
)
<
0
)
return
-
1
;
if
(
tjsonGetNumberValue
(
pJson
,
"maxRows"
,
pCfg
->
tsdbCfg
.
maxRows
)
<
0
)
return
-
1
;
if
(
tjsonGetNumberValue
(
pJson
,
"keep0"
,
pCfg
->
tsdbCfg
.
keep0
)
<
0
)
return
-
1
;
if
(
tjsonGetNumberValue
(
pJson
,
"keep1"
,
pCfg
->
tsdbCfg
.
keep1
)
<
0
)
return
-
1
;
if
(
tjsonGetNumberValue
(
pJson
,
"keep2"
,
pCfg
->
tsdbCfg
.
keep2
)
<
0
)
return
-
1
;
if
(
tjsonGetNumberValue
(
pJson
,
"lruCacheSize"
,
pCfg
->
tsdbCfg
.
lruCacheSize
)
<
0
)
return
-
1
;
return
0
;
}
static
int
vnodeEncodeState
(
const
void
*
pObj
,
SJson
*
pJson
)
{
const
SVState
*
pState
=
(
SVState
*
)
pObj
;
if
(
tjsonAddIntegerToObject
(
pJson
,
"commit version"
,
pState
->
committed
)
<
0
)
return
-
1
;
return
0
;
}
static
int
vnodeDecodeState
(
const
SJson
*
pJson
,
void
*
pObj
)
{
SVState
*
pState
=
(
SVState
*
)
pObj
;
if
(
tjsonGetNumberValue
(
pJson
,
"commit version"
,
pState
->
committed
)
<
0
)
return
-
1
;
return
0
;
}
static
int
vnodeEncodeInfo
(
const
SVnodeInfo
*
pInfo
,
char
**
ppData
)
{
SJson
*
pJson
;
char
*
pData
;
*
ppData
=
NULL
;
pJson
=
tjsonCreateObject
();
if
(
pJson
==
NULL
)
{
return
-
1
;
}
if
(
tjsonAddObject
(
pJson
,
"config"
,
vnodeEncodeConfig
,
(
void
*
)
&
pInfo
->
config
)
<
0
)
{
goto
_err
;
}
if
(
tjsonAddObject
(
pJson
,
"state"
,
vnodeEncodeState
,
(
void
*
)
&
pInfo
->
state
)
<
0
)
{
goto
_err
;
}
pData
=
tjsonToString
(
pJson
);
if
(
pData
==
NULL
)
{
goto
_err
;
}
tjsonDelete
(
pJson
);
*
ppData
=
pData
;
return
0
;
_err:
tjsonDelete
(
pJson
);
return
-
1
;
}
static
int
vnodeDecodeInfo
(
uint8_t
*
pData
,
SVnodeInfo
*
pInfo
)
{
SJson
*
pJson
=
NULL
;
pJson
=
tjsonCreateObject
();
if
(
pJson
==
NULL
)
{
return
-
1
;
}
if
(
tjsonToObject
(
pJson
,
"config"
,
vnodeDecodeConfig
,
(
void
*
)
&
pInfo
->
config
)
<
0
)
{
goto
_err
;
}
if
(
tjsonToObject
(
pJson
,
"state"
,
vnodeDecodeState
,
(
void
*
)
&
pInfo
->
state
)
<
0
)
{
goto
_err
;
}
tjsonDelete
(
pJson
);
return
0
;
_err:
tjsonDelete
(
pJson
);
return
-
1
;
}
source/dnode/vnode/src/vnd/vnode
Mai
n.c
→
source/dnode/vnode/src/vnd/vnode
Ope
n.c
浏览文件 @
fd9e5208
...
@@ -20,11 +20,42 @@ static void vnodeFree(SVnode *pVnode);
...
@@ -20,11 +20,42 @@ static void vnodeFree(SVnode *pVnode);
static
int
vnodeOpenImpl
(
SVnode
*
pVnode
);
static
int
vnodeOpenImpl
(
SVnode
*
pVnode
);
static
void
vnodeCloseImpl
(
SVnode
*
pVnode
);
static
void
vnodeCloseImpl
(
SVnode
*
pVnode
);
int
vnodeCreate
(
const
char
*
path
,
SVnodeCfg
*
pCfg
,
STfs
*
pTfs
)
{
SVnodeInfo
info
=
{
0
};
char
dir
[
TSDB_FILENAME_LEN
];
// TODO: check if directory exists
// check config
if
(
vnodeCheckCfg
(
pCfg
)
<
0
)
{
vError
(
"vgId: %d failed to create vnode since: %s"
,
pCfg
->
vgId
,
tstrerror
(
terrno
));
return
-
1
;
}
// create vnode env
if
(
tfsMkdir
(
pTfs
,
path
)
<
0
)
{
vError
(
"vgId: %d failed to create vnode since: %s"
,
pCfg
->
vgId
,
tstrerror
(
terrno
));
return
-
1
;
}
snprintf
(
dir
,
TSDB_FILENAME_LEN
,
"%s%s%s"
,
tfsGetPrimaryPath
(
pTfs
),
TD_DIRSEP
,
path
);
info
.
config
=
*
pCfg
;
if
(
vnodeSaveInfo
(
dir
,
&
info
)
<
0
||
vnodeCommitInfo
(
dir
,
&
info
)
<
0
)
{
vError
(
"vgId: %d failed to save vnode config since %s"
,
pCfg
->
vgId
,
tstrerror
(
terrno
));
return
-
1
;
}
vInfo
(
"vgId: %d vnode is created"
,
pCfg
->
vgId
);
return
0
;
}
SVnode
*
vnodeOpen
(
const
char
*
path
,
const
SVnodeCfg
*
pVnodeCfg
)
{
SVnode
*
vnodeOpen
(
const
char
*
path
,
const
SVnodeCfg
*
pVnodeCfg
)
{
SVnode
*
pVnode
=
NULL
;
SVnode
*
pVnode
=
NULL
;
// Set default options
// Set default options
SVnodeCfg
cfg
=
defaultVnodeOptions
;
SVnodeCfg
cfg
=
vnodeCfgDefault
;
if
(
pVnodeCfg
!=
NULL
)
{
if
(
pVnodeCfg
!=
NULL
)
{
cfg
.
vgId
=
pVnodeCfg
->
vgId
;
cfg
.
vgId
=
pVnodeCfg
->
vgId
;
cfg
.
msgCb
=
pVnodeCfg
->
msgCb
;
cfg
.
msgCb
=
pVnodeCfg
->
msgCb
;
...
@@ -36,7 +67,7 @@ SVnode *vnodeOpen(const char *path, const SVnodeCfg *pVnodeCfg) {
...
@@ -36,7 +67,7 @@ SVnode *vnodeOpen(const char *path, const SVnodeCfg *pVnodeCfg) {
}
}
// Validate options
// Validate options
if
(
vnode
ValidateOptions
(
&
cfg
)
<
0
)
{
if
(
vnode
CheckCfg
(
&
cfg
)
<
0
)
{
// TODO
// TODO
return
NULL
;
return
NULL
;
}
}
...
...
source/libs/executor/inc/executorimpl.h
浏览文件 @
fd9e5208
...
@@ -20,9 +20,9 @@ extern "C" {
...
@@ -20,9 +20,9 @@ extern "C" {
#endif
#endif
#include "os.h"
#include "os.h"
#include "tsort.h"
#include "tcommon.h"
#include "tcommon.h"
#include "tlosertree.h"
#include "tlosertree.h"
#include "tsort.h"
#include "ttszip.h"
#include "ttszip.h"
#include "tvariant.h"
#include "tvariant.h"
...
@@ -35,8 +35,8 @@ extern "C" {
...
@@ -35,8 +35,8 @@ extern "C" {
#include "tarray.h"
#include "tarray.h"
#include "thash.h"
#include "thash.h"
#include "tlockfree.h"
#include "tlockfree.h"
#include "tpagedbuf.h"
#include "tmsg.h"
#include "tmsg.h"
#include "tpagedbuf.h"
typedef
int32_t
(
*
__block_search_fn_t
)(
char
*
data
,
int32_t
num
,
int64_t
key
,
int32_t
order
);
typedef
int32_t
(
*
__block_search_fn_t
)(
char
*
data
,
int32_t
num
,
int64_t
key
,
int32_t
order
);
...
@@ -174,7 +174,7 @@ typedef struct STaskAttr {
...
@@ -174,7 +174,7 @@ typedef struct STaskAttr {
int32_t
resultRowSize
;
int32_t
resultRowSize
;
int32_t
tagLen
;
// tag value length of current query
int32_t
tagLen
;
// tag value length of current query
SExprInfo
*
pExpr1
;
SExprInfo
*
pExpr1
;
SColumnInfo
*
tagColList
;
SColumnInfo
*
tagColList
;
int32_t
numOfFilterCols
;
int32_t
numOfFilterCols
;
int64_t
*
fillVal
;
int64_t
*
fillVal
;
...
@@ -187,13 +187,15 @@ struct SOperatorInfo;
...
@@ -187,13 +187,15 @@ struct SOperatorInfo;
struct
SAggSupporter
;
struct
SAggSupporter
;
struct
SOptrBasicInfo
;
struct
SOptrBasicInfo
;
typedef
void
(
*
__optr_encode_fn_t
)(
struct
SOperatorInfo
*
pOperator
,
struct
SAggSupporter
*
pSup
,
struct
SOptrBasicInfo
*
pInfo
,
char
**
result
,
int32_t
*
length
);
typedef
void
(
*
__optr_encode_fn_t
)(
struct
SOperatorInfo
*
pOperator
,
struct
SAggSupporter
*
pSup
,
typedef
bool
(
*
__optr_decode_fn_t
)(
struct
SOperatorInfo
*
pOperator
,
struct
SAggSupporter
*
pSup
,
struct
SOptrBasicInfo
*
pInfo
,
char
*
result
,
int32_t
length
);
struct
SOptrBasicInfo
*
pInfo
,
char
**
result
,
int32_t
*
length
);
typedef
bool
(
*
__optr_decode_fn_t
)(
struct
SOperatorInfo
*
pOperator
,
struct
SAggSupporter
*
pSup
,
struct
SOptrBasicInfo
*
pInfo
,
char
*
result
,
int32_t
length
);
typedef
int32_t
(
*
__optr_open_fn_t
)(
struct
SOperatorInfo
*
pOptr
);
typedef
int32_t
(
*
__optr_open_fn_t
)(
struct
SOperatorInfo
*
pOptr
);
typedef
SSDataBlock
*
(
*
__optr_fn_t
)(
struct
SOperatorInfo
*
pOptr
,
bool
*
newgroup
);
typedef
SSDataBlock
*
(
*
__optr_fn_t
)(
struct
SOperatorInfo
*
pOptr
,
bool
*
newgroup
);
typedef
void
(
*
__optr_close_fn_t
)(
void
*
param
,
int32_t
num
);
typedef
void
(
*
__optr_close_fn_t
)(
void
*
param
,
int32_t
num
);
typedef
int32_t
(
*
__optr_get_explain_fn_t
)(
struct
SOperatorInfo
*
pOptr
,
void
**
pOptrExplain
);
typedef
int32_t
(
*
__optr_get_explain_fn_t
)(
struct
SOperatorInfo
*
pOptr
,
void
**
pOptrExplain
);
typedef
struct
STaskIdInfo
{
typedef
struct
STaskIdInfo
{
uint64_t
queryId
;
// this is also a request id
uint64_t
queryId
;
// this is also a request id
...
@@ -218,6 +220,7 @@ typedef struct SExecTaskInfo {
...
@@ -218,6 +220,7 @@ typedef struct SExecTaskInfo {
}
SExecTaskInfo
;
}
SExecTaskInfo
;
typedef
struct
STaskRuntimeEnv
{
typedef
struct
STaskRuntimeEnv
{
jmp_buf
env
;
jmp_buf
env
;
STaskAttr
*
pQueryAttr
;
STaskAttr
*
pQueryAttr
;
uint32_t
status
;
// query status
uint32_t
status
;
// query status
...
@@ -293,9 +296,9 @@ typedef enum {
...
@@ -293,9 +296,9 @@ typedef enum {
}
EX_SOURCE_STATUS
;
}
EX_SOURCE_STATUS
;
typedef
struct
SSourceDataInfo
{
typedef
struct
SSourceDataInfo
{
struct
SExchangeInfo
*
pEx
;
struct
SExchangeInfo
*
pEx
;
int32_t
index
;
int32_t
index
;
SRetrieveTableRsp
*
pRsp
;
SRetrieveTableRsp
*
pRsp
;
uint64_t
totalRows
;
uint64_t
totalRows
;
int32_t
code
;
int32_t
code
;
EX_SOURCE_STATUS
status
;
EX_SOURCE_STATUS
status
;
...
@@ -344,6 +347,7 @@ typedef struct STableScanInfo {
...
@@ -344,6 +347,7 @@ typedef struct STableScanInfo {
int32_t
numOfOutput
;
int32_t
numOfOutput
;
int64_t
elapsedTime
;
int64_t
elapsedTime
;
int32_t
prevGroupId
;
// previous table group id
int32_t
prevGroupId
;
// previous table group id
int32_t
scanFlag
;
// table scan flag to denote if it is a repeat/reverse/main scan
int32_t
scanFlag
;
// table scan flag to denote if it is a repeat/reverse/main scan
int32_t
dataBlockLoadFlag
;
int32_t
dataBlockLoadFlag
;
}
STableScanInfo
;
}
STableScanInfo
;
...
@@ -373,20 +377,20 @@ typedef struct SSysTableScanInfo {
...
@@ -373,20 +377,20 @@ typedef struct SSysTableScanInfo {
void
*
readHandle
;
void
*
readHandle
;
};
};
SRetrieveMetaTableRsp
*
pRsp
;
SRetrieveMetaTableRsp
*
pRsp
;
SRetrieveTableReq
req
;
SRetrieveTableReq
req
;
SEpSet
epSet
;
SEpSet
epSet
;
tsem_t
ready
;
tsem_t
ready
;
int32_t
accountId
;
int32_t
accountId
;
bool
showRewrite
;
bool
showRewrite
;
SNode
*
pCondition
;
// db_name filter condition, to discard data that are not in current database
SNode
*
pCondition
;
// db_name filter condition, to discard data that are not in current database
void
*
pCur
;
// cursor for iterate the local table meta store.
void
*
pCur
;
// cursor for iterate the local table meta store.
SArray
*
scanCols
;
// SArray<int16_t> scan column id list
SArray
*
scanCols
;
// SArray<int16_t> scan column id list
int32_t
type
;
// show type, TODO remove it
int32_t
type
;
// show type, TODO remove it
SName
name
;
SName
name
;
SSDataBlock
*
pRes
;
SSDataBlock
*
pRes
;
int32_t
capacity
;
int32_t
capacity
;
int64_t
numOfBlocks
;
// extract basic running information.
int64_t
numOfBlocks
;
// extract basic running information.
SLoadRemoteDataInfo
loadInfo
;
SLoadRemoteDataInfo
loadInfo
;
...
@@ -400,13 +404,13 @@ typedef struct SOptrBasicInfo {
...
@@ -400,13 +404,13 @@ typedef struct SOptrBasicInfo {
int32_t
capacity
;
// TODO remove it
int32_t
capacity
;
// TODO remove it
}
SOptrBasicInfo
;
}
SOptrBasicInfo
;
//TODO move the resultrowsiz together with SOptrBasicInfo:rowCellInfoOffset
//
TODO move the resultrowsiz together with SOptrBasicInfo:rowCellInfoOffset
typedef
struct
SAggSupporter
{
typedef
struct
SAggSupporter
{
SHashObj
*
pResultRowHashTable
;
// quick locate the window object for each result
SHashObj
*
pResultRowHashTable
;
// quick locate the window object for each result
SHashObj
*
pResultRowListSet
;
// used to check if current ResultRowInfo has ResultRow object or not
SHashObj
*
pResultRowListSet
;
// used to check if current ResultRowInfo has ResultRow object or not
SArray
*
pResultRowArrayList
;
// The array list that contains the Result rows
SArray
*
pResultRowArrayList
;
// The array list that contains the Result rows
char
*
keyBuf
;
// window key buffer
char
*
keyBuf
;
// window key buffer
SDiskbasedBuf
*
pResultBuf
;
// query result buffer based on blocked-wised disk file
SDiskbasedBuf
*
pResultBuf
;
// query result buffer based on blocked-wised disk file
int32_t
resultRowSize
;
// the result buffer size for each result row, with the meta data size for each row
int32_t
resultRowSize
;
// the result buffer size for each result row, with the meta data size for each row
}
SAggSupporter
;
}
SAggSupporter
;
...
@@ -417,12 +421,12 @@ typedef struct STableIntervalOperatorInfo {
...
@@ -417,12 +421,12 @@ typedef struct STableIntervalOperatorInfo {
int32_t
primaryTsIndex
;
// primary time stamp slot id from result of downstream operator.
int32_t
primaryTsIndex
;
// primary time stamp slot id from result of downstream operator.
STimeWindow
win
;
// query time range
STimeWindow
win
;
// query time range
bool
timeWindowInterpo
;
// interpolation needed or not
bool
timeWindowInterpo
;
// interpolation needed or not
char
**
pRow
;
// previous row/tuple of already processed datablock
char
**
pRow
;
// previous row/tuple of already processed datablock
SAggSupporter
aggSup
;
// aggregate supporter
SAggSupporter
aggSup
;
// aggregate supporter
STableQueryInfo
*
pCurrent
;
// current tableQueryInfo struct
STableQueryInfo
*
pCurrent
;
// current tableQueryInfo struct
int32_t
order
;
// current SSDataBlock scan order
int32_t
order
;
// current SSDataBlock scan order
EOPTR_EXEC_MODEL
execModel
;
// operator execution model [batch model|stream model]
EOPTR_EXEC_MODEL
execModel
;
// operator execution model [batch model|stream model]
SArray
*
pUpdatedWindow
;
// updated time window due to the input data block from the downstream operator.
SArray
*
pUpdatedWindow
;
// updated time window due to the input data block from the downstream operator.
SColumnInfoData
timeWindowData
;
// query time window info for scalar function execution.
SColumnInfoData
timeWindowData
;
// query time window info for scalar function execution.
}
STableIntervalOperatorInfo
;
}
STableIntervalOperatorInfo
;
...
@@ -444,8 +448,8 @@ typedef struct SAggOperatorInfo {
...
@@ -444,8 +448,8 @@ typedef struct SAggOperatorInfo {
typedef
struct
SProjectOperatorInfo
{
typedef
struct
SProjectOperatorInfo
{
SOptrBasicInfo
binfo
;
SOptrBasicInfo
binfo
;
SAggSupporter
aggSup
;
SAggSupporter
aggSup
;
SSDataBlock
*
existDataBlock
;
SSDataBlock
*
existDataBlock
;
SArray
*
pPseudoColInfo
;
SArray
*
pPseudoColInfo
;
SLimit
limit
;
SLimit
limit
;
SLimit
slimit
;
SLimit
slimit
;
...
@@ -469,7 +473,7 @@ typedef struct SFillOperatorInfo {
...
@@ -469,7 +473,7 @@ typedef struct SFillOperatorInfo {
}
SFillOperatorInfo
;
}
SFillOperatorInfo
;
typedef
struct
{
typedef
struct
{
char
*
pData
;
char
*
pData
;
bool
isNull
;
bool
isNull
;
int16_t
type
;
int16_t
type
;
int32_t
bytes
;
int32_t
bytes
;
...
@@ -486,14 +490,14 @@ typedef struct SGroupbyOperatorInfo {
...
@@ -486,14 +490,14 @@ typedef struct SGroupbyOperatorInfo {
SGroupResInfo
groupResInfo
;
SGroupResInfo
groupResInfo
;
SAggSupporter
aggSup
;
SAggSupporter
aggSup
;
SExprInfo
*
pScalarExprInfo
;
SExprInfo
*
pScalarExprInfo
;
int32_t
numOfScalarExpr
;
// the number of scalar expression in group operator
int32_t
numOfScalarExpr
;
// the number of scalar expression in group operator
SqlFunctionCtx
*
pScalarFuncCtx
;
SqlFunctionCtx
*
pScalarFuncCtx
;
}
SGroupbyOperatorInfo
;
}
SGroupbyOperatorInfo
;
typedef
struct
SDataGroupInfo
{
typedef
struct
SDataGroupInfo
{
uint64_t
groupId
;
uint64_t
groupId
;
int64_t
numOfRows
;
int64_t
numOfRows
;
SArray
*
pPageList
;
SArray
*
pPageList
;
}
SDataGroupInfo
;
}
SDataGroupInfo
;
// The sort in partition may be needed later.
// The sort in partition may be needed later.
...
@@ -545,10 +549,11 @@ typedef struct SStateWindowOperatorInfo {
...
@@ -545,10 +549,11 @@ typedef struct SStateWindowOperatorInfo {
bool
hasKey
;
bool
hasKey
;
SStateKeys
stateKey
;
SStateKeys
stateKey
;
SColumnInfoData
timeWindowData
;
// query time window info for scalar function execution.
SColumnInfoData
timeWindowData
;
// query time window info for scalar function execution.
// bool reptScan;
// bool reptScan;
}
SStateWindowOperatorInfo
;
}
SStateWindowOperatorInfo
;
typedef
struct
SSortedMergeOperatorInfo
{
typedef
struct
SSortedMergeOperatorInfo
{
SOptrBasicInfo
binfo
;
SOptrBasicInfo
binfo
;
SArray
*
pSortInfo
;
SArray
*
pSortInfo
;
int32_t
numOfSources
;
int32_t
numOfSources
;
...
@@ -566,9 +571,9 @@ typedef struct SSortedMergeOperatorInfo {
...
@@ -566,9 +571,9 @@ typedef struct SSortedMergeOperatorInfo {
typedef
struct
SSortOperatorInfo
{
typedef
struct
SSortOperatorInfo
{
uint32_t
sortBufSize
;
// max buffer size for in-memory sort
uint32_t
sortBufSize
;
// max buffer size for in-memory sort
SSDataBlock
*
pDataBlock
;
SSDataBlock
*
pDataBlock
;
SArray
*
pSortInfo
;
SArray
*
pSortInfo
;
SSortHandle
*
pSortHandle
;
SSortHandle
*
pSortHandle
;
SArray
*
inputSlotMap
;
// for index map from table scan output
SArray
*
inputSlotMap
;
// for index map from table scan output
int32_t
bufPageSize
;
int32_t
bufPageSize
;
int32_t
numOfRowsInRes
;
int32_t
numOfRowsInRes
;
...
@@ -581,6 +586,10 @@ typedef struct SSortOperatorInfo {
...
@@ -581,6 +586,10 @@ typedef struct SSortOperatorInfo {
uint64_t
totalElapsed
;
// total elapsed time
uint64_t
totalElapsed
;
// total elapsed time
}
SSortOperatorInfo
;
}
SSortOperatorInfo
;
typedef
struct
STagFilterOperatorInfo
{
SOptrBasicInfo
binfo
;
}
STagFilterOperatorInfo
;
typedef
struct
SJoinOperatorInfo
{
typedef
struct
SJoinOperatorInfo
{
SSDataBlock
*
pRes
;
SSDataBlock
*
pRes
;
int32_t
joinType
;
int32_t
joinType
;
...
@@ -601,19 +610,24 @@ void operatorDummyCloseFn(void* param, int32_t numOfCols);
...
@@ -601,19 +610,24 @@ void operatorDummyCloseFn(void* param, int32_t numOfCols);
int32_t
appendDownstream
(
SOperatorInfo
*
p
,
SOperatorInfo
**
pDownstream
,
int32_t
num
);
int32_t
appendDownstream
(
SOperatorInfo
*
p
,
SOperatorInfo
**
pDownstream
,
int32_t
num
);
int32_t
initAggInfo
(
SOptrBasicInfo
*
pBasicInfo
,
SAggSupporter
*
pAggSup
,
SExprInfo
*
pExprInfo
,
int32_t
numOfCols
,
int32_t
initAggInfo
(
SOptrBasicInfo
*
pBasicInfo
,
SAggSupporter
*
pAggSup
,
SExprInfo
*
pExprInfo
,
int32_t
numOfCols
,
int32_t
numOfRows
,
SSDataBlock
*
pResultBlock
,
size_t
keyBufSize
,
const
char
*
pkey
);
int32_t
numOfRows
,
SSDataBlock
*
pResultBlock
,
size_t
keyBufSize
,
const
char
*
pkey
);
void
toSDatablock
(
SSDataBlock
*
pBlock
,
int32_t
rowCapacity
,
SGroupResInfo
*
pGroupResInfo
,
SExprInfo
*
pExprInfo
,
SDiskbasedBuf
*
pBuf
,
int32_t
*
rowCellOffset
);
void
toSDatablock
(
SSDataBlock
*
pBlock
,
int32_t
rowCapacity
,
SGroupResInfo
*
pGroupResInfo
,
SExprInfo
*
pExprInfo
,
void
finalizeMultiTupleQueryResult
(
SqlFunctionCtx
*
pCtx
,
int32_t
numOfOutput
,
SDiskbasedBuf
*
pBuf
,
SResultRowInfo
*
pResultRowInfo
,
int32_t
*
rowCellInfoOffset
);
SDiskbasedBuf
*
pBuf
,
int32_t
*
rowCellOffset
);
void
doApplyFunctions
(
SqlFunctionCtx
*
pCtx
,
STimeWindow
*
pWin
,
SColumnInfoData
*
pTimeWindowData
,
int32_t
offset
,
int32_t
forwardStep
,
TSKEY
*
tsCol
,
int32_t
numOfTotal
,
int32_t
numOfOutput
,
int32_t
order
);
void
finalizeMultiTupleQueryResult
(
SqlFunctionCtx
*
pCtx
,
int32_t
numOfOutput
,
SDiskbasedBuf
*
pBuf
,
int32_t
setGroupResultOutputBuf
(
SOptrBasicInfo
*
binfo
,
int32_t
numOfCols
,
char
*
pData
,
int16_t
type
,
int16_t
bytes
,
int32_t
groupId
,
SDiskbasedBuf
*
pBuf
,
SExecTaskInfo
*
pTaskInfo
,
SAggSupporter
*
pAggSup
);
SResultRowInfo
*
pResultRowInfo
,
int32_t
*
rowCellInfoOffset
);
void
doApplyFunctions
(
SqlFunctionCtx
*
pCtx
,
STimeWindow
*
pWin
,
SColumnInfoData
*
pTimeWindowData
,
int32_t
offset
,
int32_t
forwardStep
,
TSKEY
*
tsCol
,
int32_t
numOfTotal
,
int32_t
numOfOutput
,
int32_t
order
);
int32_t
setGroupResultOutputBuf
(
SOptrBasicInfo
*
binfo
,
int32_t
numOfCols
,
char
*
pData
,
int16_t
type
,
int16_t
bytes
,
int32_t
groupId
,
SDiskbasedBuf
*
pBuf
,
SExecTaskInfo
*
pTaskInfo
,
SAggSupporter
*
pAggSup
);
void
doDestroyBasicInfo
(
SOptrBasicInfo
*
pInfo
,
int32_t
numOfOutput
);
void
doDestroyBasicInfo
(
SOptrBasicInfo
*
pInfo
,
int32_t
numOfOutput
);
int32_t
setSDataBlockFromFetchRsp
(
SSDataBlock
*
pRes
,
SLoadRemoteDataInfo
*
pLoadInfo
,
int32_t
numOfRows
,
int32_t
setSDataBlockFromFetchRsp
(
SSDataBlock
*
pRes
,
SLoadRemoteDataInfo
*
pLoadInfo
,
int32_t
numOfRows
,
char
*
pData
,
char
*
pData
,
int32_t
compLen
,
int32_t
numOfOutput
,
int64_t
startTs
,
int32_t
compLen
,
int32_t
numOfOutput
,
int64_t
startTs
,
uint64_t
*
total
,
uint64_t
*
total
,
SArray
*
pColList
);
SArray
*
pColList
);
void
doSetOperatorCompleted
(
SOperatorInfo
*
pOperator
);
void
doSetOperatorCompleted
(
SOperatorInfo
*
pOperator
);
void
doFilter
(
const
SNode
*
pFilterNode
,
SSDataBlock
*
pBlock
);
void
doFilter
(
const
SNode
*
pFilterNode
,
SSDataBlock
*
pBlock
);
SqlFunctionCtx
*
createSqlFunctionCtx
(
SExprInfo
*
pExprInfo
,
int32_t
numOfOutput
,
int32_t
**
rowCellInfoOffset
);
SqlFunctionCtx
*
createSqlFunctionCtx
(
SExprInfo
*
pExprInfo
,
int32_t
numOfOutput
,
int32_t
**
rowCellInfoOffset
);
SOperatorInfo
*
createExchangeOperatorInfo
(
const
SNodeList
*
pSources
,
SSDataBlock
*
pBlock
,
SExecTaskInfo
*
pTaskInfo
);
SOperatorInfo
*
createExchangeOperatorInfo
(
const
SNodeList
*
pSources
,
SSDataBlock
*
pBlock
,
SExecTaskInfo
*
pTaskInfo
);
SOperatorInfo
*
createTableScanOperatorInfo
(
void
*
pTsdbReadHandle
,
int32_t
order
,
int32_t
numOfCols
,
int32_t
dataLoadFlag
,
int32_t
repeatTime
,
SOperatorInfo
*
createTableScanOperatorInfo
(
void
*
pTsdbReadHandle
,
int32_t
order
,
int32_t
numOfCols
,
int32_t
dataLoadFlag
,
int32_t
repeatTime
,
int32_t
reverseTime
,
SArray
*
pColMatchInfo
,
SSDataBlock
*
pResBlock
,
SNode
*
pCondition
,
SExecTaskInfo
*
pTaskInfo
);
int32_t
reverseTime
,
SArray
*
pColMatchInfo
,
SSDataBlock
*
pResBlock
,
SNode
*
pCondition
,
SExecTaskInfo
*
pTaskInfo
);
SOperatorInfo
*
createAggregateOperatorInfo
(
SOperatorInfo
*
downstream
,
SExprInfo
*
pExprInfo
,
int32_t
numOfCols
,
SSDataBlock
*
pResultBlock
,
SExprInfo
*
pScalarExprInfo
,
SOperatorInfo
*
createAggregateOperatorInfo
(
SOperatorInfo
*
downstream
,
SExprInfo
*
pExprInfo
,
int32_t
numOfCols
,
SSDataBlock
*
pResultBlock
,
SExprInfo
*
pScalarExprInfo
,
...
@@ -624,23 +638,34 @@ SOperatorInfo* createProjectOperatorInfo(SOperatorInfo* downstream, SExprInfo* p
...
@@ -624,23 +638,34 @@ SOperatorInfo* createProjectOperatorInfo(SOperatorInfo* downstream, SExprInfo* p
SOperatorInfo
*
createSortOperatorInfo
(
SOperatorInfo
*
downstream
,
SSDataBlock
*
pResBlock
,
SArray
*
pSortInfo
,
SArray
*
pIndexMap
,
SExecTaskInfo
*
pTaskInfo
);
SOperatorInfo
*
createSortOperatorInfo
(
SOperatorInfo
*
downstream
,
SSDataBlock
*
pResBlock
,
SArray
*
pSortInfo
,
SArray
*
pIndexMap
,
SExecTaskInfo
*
pTaskInfo
);
SOperatorInfo
*
createSortedMergeOperatorInfo
(
SOperatorInfo
**
downstream
,
int32_t
numOfDownstream
,
SExprInfo
*
pExprInfo
,
int32_t
num
,
SArray
*
pSortInfo
,
SArray
*
pGroupInfo
,
SExecTaskInfo
*
pTaskInfo
);
SOperatorInfo
*
createSortedMergeOperatorInfo
(
SOperatorInfo
**
downstream
,
int32_t
numOfDownstream
,
SExprInfo
*
pExprInfo
,
int32_t
num
,
SArray
*
pSortInfo
,
SArray
*
pGroupInfo
,
SExecTaskInfo
*
pTaskInfo
);
SOperatorInfo
*
createSysTableScanOperatorInfo
(
void
*
pSysTableReadHandle
,
SSDataBlock
*
pResBlock
,
const
SName
*
pName
,
SOperatorInfo
*
createSysTableScanOperatorInfo
(
void
*
pSysTableReadHandle
,
SSDataBlock
*
pResBlock
,
const
SName
*
pName
,
SNode
*
pCondition
,
SEpSet
epset
,
SArray
*
colList
,
SExecTaskInfo
*
pTaskInfo
,
bool
showRewrite
,
int32_t
accountId
);
SNode
*
pCondition
,
SEpSet
epset
,
SArray
*
colList
,
SOperatorInfo
*
createIntervalOperatorInfo
(
SOperatorInfo
*
downstream
,
SExprInfo
*
pExprInfo
,
int32_t
numOfCols
,
SSDataBlock
*
pResBlock
,
SInterval
*
pInterval
,
int32_t
primaryTsSlot
,
SExecTaskInfo
*
pTaskInfo
,
bool
showRewrite
,
int32_t
accountId
);
SOperatorInfo
*
createIntervalOperatorInfo
(
SOperatorInfo
*
downstream
,
SExprInfo
*
pExprInfo
,
int32_t
numOfCols
,
SSDataBlock
*
pResBlock
,
SInterval
*
pInterval
,
int32_t
primaryTsSlot
,
const
STableGroupInfo
*
pTableGroupInfo
,
SExecTaskInfo
*
pTaskInfo
);
const
STableGroupInfo
*
pTableGroupInfo
,
SExecTaskInfo
*
pTaskInfo
);
SOperatorInfo
*
createSessionAggOperatorInfo
(
SOperatorInfo
*
downstream
,
SExprInfo
*
pExprInfo
,
int32_t
numOfCols
,
SSDataBlock
*
pResBlock
,
int64_t
gap
,
SExecTaskInfo
*
pTaskInfo
);
SOperatorInfo
*
createSessionAggOperatorInfo
(
SOperatorInfo
*
downstream
,
SExprInfo
*
pExprInfo
,
int32_t
numOfCols
,
SOperatorInfo
*
createGroupOperatorInfo
(
SOperatorInfo
*
downstream
,
SExprInfo
*
pExprInfo
,
int32_t
numOfCols
,
SSDataBlock
*
pResultBlock
,
SArray
*
pGroupColList
,
SSDataBlock
*
pResBlock
,
int64_t
gap
,
SExecTaskInfo
*
pTaskInfo
);
SNode
*
pCondition
,
SExprInfo
*
pScalarExprInfo
,
int32_t
numOfScalarExpr
,
SExecTaskInfo
*
pTaskInfo
,
const
STableGroupInfo
*
pTableGroupInfo
);
SOperatorInfo
*
createGroupOperatorInfo
(
SOperatorInfo
*
downstream
,
SExprInfo
*
pExprInfo
,
int32_t
numOfCols
,
SSDataBlock
*
pResultBlock
,
SArray
*
pGroupColList
,
SNode
*
pCondition
,
SExprInfo
*
pScalarExprInfo
,
int32_t
numOfScalarExpr
,
SExecTaskInfo
*
pTaskInfo
,
const
STableGroupInfo
*
pTableGroupInfo
);
SOperatorInfo
*
createDataBlockInfoScanOperator
(
void
*
dataReader
,
SExecTaskInfo
*
pTaskInfo
);
SOperatorInfo
*
createDataBlockInfoScanOperator
(
void
*
dataReader
,
SExecTaskInfo
*
pTaskInfo
);
SOperatorInfo
*
createStreamScanOperatorInfo
(
void
*
streamReadHandle
,
SSDataBlock
*
pResBlock
,
SArray
*
pColList
,
SArray
*
pTableIdList
,
SExecTaskInfo
*
pTaskInfo
);
SOperatorInfo
*
createStreamScanOperatorInfo
(
void
*
streamReadHandle
,
SSDataBlock
*
pResBlock
,
SArray
*
pColList
,
SArray
*
pTableIdList
,
SExecTaskInfo
*
pTaskInfo
);
SOperatorInfo
*
createFillOperatorInfo
(
SOperatorInfo
*
downstream
,
SExprInfo
*
pExpr
,
int32_t
numOfCols
,
SInterval
*
pInterval
,
SSDataBlock
*
pResBlock
,
SOperatorInfo
*
createFillOperatorInfo
(
SOperatorInfo
*
downstream
,
SExprInfo
*
pExpr
,
int32_t
numOfCols
,
int32_t
fillType
,
char
*
fillVal
,
bool
multigroupResult
,
SExecTaskInfo
*
pTaskInfo
);
SInterval
*
pInterval
,
SSDataBlock
*
pResBlock
,
int32_t
fillType
,
char
*
fillVal
,
SOperatorInfo
*
createStatewindowOperatorInfo
(
SOperatorInfo
*
downstream
,
SExprInfo
*
pExpr
,
int32_t
numOfCols
,
SSDataBlock
*
pResBlock
,
SExecTaskInfo
*
pTaskInfo
);
bool
multigroupResult
,
SExecTaskInfo
*
pTaskInfo
);
SOperatorInfo
*
createStatewindowOperatorInfo
(
SOperatorInfo
*
downstream
,
SExprInfo
*
pExpr
,
int32_t
numOfCols
,
SSDataBlock
*
pResBlock
,
SExecTaskInfo
*
pTaskInfo
);
SOperatorInfo
*
createPartitionOperatorInfo
(
SOperatorInfo
*
downstream
,
SExprInfo
*
pExprInfo
,
int32_t
numOfCols
,
SSDataBlock
*
pResultBlock
,
SArray
*
pGroupColList
,
SOperatorInfo
*
createPartitionOperatorInfo
(
SOperatorInfo
*
downstream
,
SExprInfo
*
pExprInfo
,
int32_t
numOfCols
,
SExecTaskInfo
*
pTaskInfo
,
const
STableGroupInfo
*
pTableGroupInfo
);
SSDataBlock
*
pResultBlock
,
SArray
*
pGroupColList
,
SExecTaskInfo
*
pTaskInfo
,
SOperatorInfo
*
createTimeSliceOperatorInfo
(
SOperatorInfo
*
downstream
,
SExprInfo
*
pExprInfo
,
int32_t
numOfCols
,
SSDataBlock
*
pResultBlock
,
SExecTaskInfo
*
pTaskInfo
);
const
STableGroupInfo
*
pTableGroupInfo
);
SOperatorInfo
*
createTimeSliceOperatorInfo
(
SOperatorInfo
*
downstream
,
SExprInfo
*
pExprInfo
,
int32_t
numOfCols
,
SSDataBlock
*
pResultBlock
,
SExecTaskInfo
*
pTaskInfo
);
SOperatorInfo
*
createJoinOperatorInfo
(
SOperatorInfo
**
pDownstream
,
int32_t
numOfDownstream
,
SExprInfo
*
pExprInfo
,
int32_t
numOfCols
,
SSDataBlock
*
pResBlock
,
SNode
*
pOnCondition
,
SExecTaskInfo
*
pTaskInfo
);
SOperatorInfo
*
createJoinOperatorInfo
(
SOperatorInfo
**
pDownstream
,
int32_t
numOfDownstream
,
SExprInfo
*
pExprInfo
,
int32_t
numOfCols
,
SSDataBlock
*
pResBlock
,
SNode
*
pOnCondition
,
SExecTaskInfo
*
pTaskInfo
);
...
@@ -651,7 +676,8 @@ SOperatorInfo* createMultiTableTimeIntervalOperatorInfo(STaskRuntimeEnv* pRuntim
...
@@ -651,7 +676,8 @@ SOperatorInfo* createMultiTableTimeIntervalOperatorInfo(STaskRuntimeEnv* pRuntim
SOperatorInfo* createTagScanOperatorInfo(SReaderHandle* pReaderHandle, SExprInfo* pExpr, int32_t numOfOutput);
SOperatorInfo* createTagScanOperatorInfo(SReaderHandle* pReaderHandle, SExprInfo* pExpr, int32_t numOfOutput);
#endif
#endif
void
projectApplyFunctions
(
SExprInfo
*
pExpr
,
SSDataBlock
*
pResult
,
SSDataBlock
*
pSrcBlock
,
SqlFunctionCtx
*
pCtx
,
int32_t
numOfOutput
,
SArray
*
pPseudoList
);
void
projectApplyFunctions
(
SExprInfo
*
pExpr
,
SSDataBlock
*
pResult
,
SSDataBlock
*
pSrcBlock
,
SqlFunctionCtx
*
pCtx
,
int32_t
numOfOutput
,
SArray
*
pPseudoList
);
void
setInputDataBlock
(
SOperatorInfo
*
pOperator
,
SqlFunctionCtx
*
pCtx
,
SSDataBlock
*
pBlock
,
int32_t
order
);
void
setInputDataBlock
(
SOperatorInfo
*
pOperator
,
SqlFunctionCtx
*
pCtx
,
SSDataBlock
*
pBlock
,
int32_t
order
);
...
@@ -675,11 +701,15 @@ int32_t getMaximumIdleDurationSec();
...
@@ -675,11 +701,15 @@ int32_t getMaximumIdleDurationSec();
void
doInvokeUdf
(
struct
SUdfInfo
*
pUdfInfo
,
SqlFunctionCtx
*
pCtx
,
int32_t
idx
,
int32_t
type
);
void
doInvokeUdf
(
struct
SUdfInfo
*
pUdfInfo
,
SqlFunctionCtx
*
pCtx
,
int32_t
idx
,
int32_t
type
);
void
setTaskStatus
(
SExecTaskInfo
*
pTaskInfo
,
int8_t
status
);
void
setTaskStatus
(
SExecTaskInfo
*
pTaskInfo
,
int8_t
status
);
int32_t
createExecTaskInfoImpl
(
SSubplan
*
pPlan
,
SExecTaskInfo
**
pTaskInfo
,
SReadHandle
*
pHandle
,
uint64_t
taskId
,
EOPTR_EXEC_MODEL
model
);
int32_t
createExecTaskInfoImpl
(
SSubplan
*
pPlan
,
SExecTaskInfo
**
pTaskInfo
,
SReadHandle
*
pHandle
,
uint64_t
taskId
,
int32_t
getOperatorExplainExecInfo
(
SOperatorInfo
*
operatorInfo
,
SExplainExecInfo
**
pRes
,
int32_t
*
capacity
,
int32_t
*
resNum
);
EOPTR_EXEC_MODEL
model
);
int32_t
getOperatorExplainExecInfo
(
SOperatorInfo
*
operatorInfo
,
SExplainExecInfo
**
pRes
,
int32_t
*
capacity
,
bool
aggDecodeResultRow
(
SOperatorInfo
*
pOperator
,
SAggSupporter
*
pSup
,
SOptrBasicInfo
*
pInfo
,
char
*
result
,
int32_t
length
);
int32_t
*
resNum
);
void
aggEncodeResultRow
(
SOperatorInfo
*
pOperator
,
SAggSupporter
*
pSup
,
SOptrBasicInfo
*
pInfo
,
char
**
result
,
int32_t
*
length
);
bool
aggDecodeResultRow
(
SOperatorInfo
*
pOperator
,
SAggSupporter
*
pSup
,
SOptrBasicInfo
*
pInfo
,
char
*
result
,
int32_t
length
);
void
aggEncodeResultRow
(
SOperatorInfo
*
pOperator
,
SAggSupporter
*
pSup
,
SOptrBasicInfo
*
pInfo
,
char
**
result
,
int32_t
*
length
);
#ifdef __cplusplus
#ifdef __cplusplus
}
}
...
...
source/libs/executor/inc/indexoperator.h
0 → 100644
浏览文件 @
fd9e5208
/*
* 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 "filter.h"
#include "tglobal.h"
typedef
enum
{
SFLT_NOT_INDEX
,
SFLT_COARSE_INDEX
,
SFLT_ACCURATE_INDEX
}
SIdxFltStatus
;
SIdxFltStatus
idxGetFltStatus
(
SNode
*
pFilterNode
);
// construct tag filter operator later
int32_t
doFilterTag
(
const
SNode
*
pFilterNode
,
SArray
*
resutl
);
source/libs/executor/src/indexoperator.c
0 → 100644
浏览文件 @
fd9e5208
/*
* 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 "indexoperator.h"
#include "executorimpl.h"
#include "nodes.h"
typedef
struct
SIFCtx
{
int32_t
code
;
SHashObj
*
pRes
;
/* element is SScalarParam */
}
SIFCtx
;
typedef
struct
SIFParam
{
SArray
*
result
;
SHashObj
*
pFilter
;
}
SIFParam
;
// construct tag filter operator later
static
void
destroyTagFilterOperatorInfo
(
void
*
param
)
{
STagFilterOperatorInfo
*
pInfo
=
(
STagFilterOperatorInfo
*
)
param
;
}
static
void
sifFreeParam
(
SIFParam
*
param
)
{
if
(
param
==
NULL
)
return
;
taosArrayDestroy
(
param
->
result
);
}
int32_t
sifInitOperParams
(
SIFParam
*
params
,
SOperatorNode
*
node
,
SIFCtx
*
ctx
)
{
int32_t
code
=
0
;
return
code
;
}
static
int32_t
sifExecFunction
(
SFunctionNode
*
node
,
SIFCtx
*
ctx
,
SIFParam
*
output
)
{
qError
(
"index-filter not support buildin function"
);
return
TSDB_CODE_SUCCESS
;
}
static
int32_t
sifExecOper
(
SOperatorNode
*
node
,
SIFCtx
*
ctx
,
SIFParam
*
output
)
{
SIFParam
*
params
=
NULL
;
return
TSDB_CODE_SUCCESS
;
}
static
int32_t
sifExecLogic
(
SLogicConditionNode
*
node
,
SIFCtx
*
ctx
,
SIFParam
*
output
)
{
return
TSDB_CODE_SUCCESS
;
}
static
EDealRes
sifWalkFunction
(
SNode
*
pNode
,
void
*
context
)
{
// impl later
SFunctionNode
*
node
=
(
SFunctionNode
*
)
pNode
;
SIFParam
output
=
{
0
};
SIFCtx
*
ctx
=
context
;
ctx
->
code
=
sifExecFunction
(
node
,
ctx
,
&
output
);
if
(
ctx
->
code
!=
TSDB_CODE_SUCCESS
)
{
return
DEAL_RES_ERROR
;
}
if
(
taosHashPut
(
ctx
->
pRes
,
&
pNode
,
POINTER_BYTES
,
&
output
,
sizeof
(
output
)))
{
ctx
->
code
=
TSDB_CODE_QRY_OUT_OF_MEMORY
;
return
DEAL_RES_ERROR
;
}
return
DEAL_RES_CONTINUE
;
}
static
EDealRes
sifWalkLogic
(
SNode
*
pNode
,
void
*
context
)
{
SLogicConditionNode
*
node
=
(
SLogicConditionNode
*
)
pNode
;
SIFParam
output
=
{
0
};
SIFCtx
*
ctx
=
context
;
ctx
->
code
=
sifExecLogic
(
node
,
ctx
,
&
output
);
if
(
ctx
->
code
)
{
return
DEAL_RES_ERROR
;
}
if
(
taosHashPut
(
ctx
->
pRes
,
&
pNode
,
POINTER_BYTES
,
&
output
,
sizeof
(
output
)))
{
ctx
->
code
=
TSDB_CODE_QRY_OUT_OF_MEMORY
;
return
DEAL_RES_ERROR
;
}
return
DEAL_RES_CONTINUE
;
}
static
EDealRes
sifWalkOper
(
SNode
*
pNode
,
void
*
context
)
{
SOperatorNode
*
node
=
(
SOperatorNode
*
)
pNode
;
SIFParam
output
=
{
0
};
SIFCtx
*
ctx
=
context
;
ctx
->
code
=
sifExecOper
(
node
,
ctx
,
&
output
);
if
(
ctx
->
code
)
{
return
DEAL_RES_ERROR
;
}
if
(
taosHashPut
(
ctx
->
pRes
,
&
pNode
,
POINTER_BYTES
,
&
output
,
sizeof
(
output
)))
{
ctx
->
code
=
TSDB_CODE_QRY_OUT_OF_MEMORY
;
return
DEAL_RES_ERROR
;
}
return
DEAL_RES_CONTINUE
;
}
EDealRes
sifCalcWalker
(
SNode
*
node
,
void
*
context
)
{
if
(
QUERY_NODE_VALUE
==
nodeType
(
node
)
||
QUERY_NODE_NODE_LIST
==
nodeType
(
node
)
||
QUERY_NODE_COLUMN
==
nodeType
(
node
))
{
return
DEAL_RES_CONTINUE
;
}
SIFCtx
*
ctx
=
(
SIFCtx
*
)
context
;
if
(
QUERY_NODE_FUNCTION
==
nodeType
(
node
))
{
return
sifWalkFunction
(
node
,
ctx
);
}
if
(
QUERY_NODE_LOGIC_CONDITION
==
nodeType
(
node
))
{
return
sifWalkLogic
(
node
,
ctx
);
}
if
(
QUERY_NODE_OPERATOR
==
nodeType
(
node
))
{
return
sifWalkOper
(
node
,
ctx
);
}
qError
(
"invalid node type for index filter calculating, type:%d"
,
nodeType
(
node
));
ctx
->
code
=
TSDB_CODE_QRY_INVALID_INPUT
;
return
DEAL_RES_ERROR
;
}
void
sifFreeRes
(
SHashObj
*
res
)
{
void
*
pIter
=
taosHashIterate
(
res
,
NULL
);
while
(
pIter
)
{
SIFParam
*
p
=
pIter
;
if
(
p
)
{
sifFreeParam
(
p
);
}
pIter
=
taosHashIterate
(
res
,
pIter
);
}
taosHashCleanup
(
res
);
}
static
int32_t
sifCalculate
(
SNode
*
pNode
,
SIFParam
*
pDst
)
{
if
(
pNode
==
NULL
||
pDst
==
NULL
)
{
return
TSDB_CODE_QRY_INVALID_INPUT
;
}
int32_t
code
=
0
;
SIFCtx
ctx
=
{.
code
=
0
};
ctx
.
pRes
=
taosHashInit
(
4
,
taosGetDefaultHashFunction
(
TSDB_DATA_TYPE_BIGINT
),
false
,
HASH_NO_LOCK
);
if
(
NULL
==
ctx
.
pRes
)
{
qError
(
"index-filter failed to taosHashInit"
);
return
TSDB_CODE_QRY_OUT_OF_MEMORY
;
}
nodesWalkExprPostOrder
(
pNode
,
sifCalcWalker
,
&
ctx
);
if
(
ctx
.
code
!=
TSDB_CODE_SUCCESS
)
{
return
ctx
.
code
;
}
if
(
pDst
)
{
SIFParam
*
res
=
(
SIFParam
*
)
taosHashGet
(
ctx
.
pRes
,
(
void
*
)
&
pNode
,
POINTER_BYTES
);
if
(
res
==
NULL
)
{
qError
(
"no valid res in hash, node:(%p), type(%d)"
,
(
void
*
)
&
pNode
,
nodeType
(
pNode
));
return
TSDB_CODE_QRY_APP_ERROR
;
}
taosArrayAddAll
(
pDst
->
result
,
res
->
result
);
sifFreeParam
(
res
);
taosHashRemove
(
ctx
.
pRes
,
(
void
*
)
&
pNode
,
POINTER_BYTES
);
}
return
TSDB_CODE_SUCCESS
;
}
int32_t
doFilterTag
(
const
SNode
*
pFilterNode
,
SArray
*
result
)
{
if
(
pFilterNode
==
NULL
)
{
return
TSDB_CODE_SUCCESS
;
}
SFilterInfo
*
filter
=
NULL
;
// todo move to the initialization function
int32_t
code
=
filterInitFromNode
((
SNode
*
)
pFilterNode
,
&
filter
,
0
);
if
(
code
!=
TSDB_CODE_SUCCESS
)
{
return
code
;
}
SIFParam
param
=
{
0
};
code
=
sifCalculate
((
SNode
*
)
pFilterNode
,
&
param
);
if
(
code
!=
TSDB_CODE_SUCCESS
)
{
return
code
;
}
taosArrayAddAll
(
result
,
param
.
result
);
sifFreeParam
(
&
param
);
return
code
;
}
SIdxFltStatus
idxGetFltStatus
(
SNode
*
pFilterNode
)
{
if
(
pFilterNode
==
NULL
)
{
return
SFLT_NOT_INDEX
;
}
// impl later
return
SFLT_ACCURATE_INDEX
;
}
source/libs/function/inc/builtins.h
浏览文件 @
fd9e5208
...
@@ -37,6 +37,7 @@ extern "C" {
...
@@ -37,6 +37,7 @@ extern "C" {
#define FUNC_MGT_WINDOW_PC_FUNC FUNC_MGT_FUNC_CLASSIFICATION_MASK(8)
#define FUNC_MGT_WINDOW_PC_FUNC FUNC_MGT_FUNC_CLASSIFICATION_MASK(8)
#define FUNC_MGT_SPECIAL_DATA_REQUIRED FUNC_MGT_FUNC_CLASSIFICATION_MASK(9)
#define FUNC_MGT_SPECIAL_DATA_REQUIRED FUNC_MGT_FUNC_CLASSIFICATION_MASK(9)
#define FUNC_MGT_DYNAMIC_SCAN_OPTIMIZED FUNC_MGT_FUNC_CLASSIFICATION_MASK(10)
#define FUNC_MGT_DYNAMIC_SCAN_OPTIMIZED FUNC_MGT_FUNC_CLASSIFICATION_MASK(10)
#define FUNC_MGT_MULTI_RES_FUNC FUNC_MGT_FUNC_CLASSIFICATION_MASK(11)
#define FUNC_MGT_TEST_MASK(val, mask) (((val) & (mask)) != 0)
#define FUNC_MGT_TEST_MASK(val, mask) (((val) & (mask)) != 0)
...
...
source/libs/function/src/builtins.c
浏览文件 @
fd9e5208
...
@@ -203,9 +203,9 @@ static int32_t translateLastRow(SFunctionNode* pFunc, char* pErrBuf, int32_t len
...
@@ -203,9 +203,9 @@ static int32_t translateLastRow(SFunctionNode* pFunc, char* pErrBuf, int32_t len
}
}
static
int32_t
translateFirstLast
(
SFunctionNode
*
pFunc
,
char
*
pErrBuf
,
int32_t
len
)
{
static
int32_t
translateFirstLast
(
SFunctionNode
*
pFunc
,
char
*
pErrBuf
,
int32_t
len
)
{
// first(
*)/first(col_list) has been
rewritten as first(col)
// first(
col_list) will be
rewritten as first(col)
if
(
1
!=
LIST_LENGTH
(
pFunc
->
pParameterList
))
{
if
(
1
!=
LIST_LENGTH
(
pFunc
->
pParameterList
))
{
return
invaildFuncParaNumErrMsg
(
pErrBuf
,
len
,
pFunc
->
functionName
)
;
return
TSDB_CODE_SUCCESS
;
}
}
SNode
*
pPara
=
nodesListGetNode
(
pFunc
->
pParameterList
,
0
);
SNode
*
pPara
=
nodesListGetNode
(
pFunc
->
pParameterList
,
0
);
...
@@ -370,6 +370,20 @@ static int32_t translateTimeDiff(SFunctionNode* pFunc, char* pErrBuf, int32_t le
...
@@ -370,6 +370,20 @@ static int32_t translateTimeDiff(SFunctionNode* pFunc, char* pErrBuf, int32_t le
return
TSDB_CODE_SUCCESS
;
return
TSDB_CODE_SUCCESS
;
}
}
static
int32_t
translateToJson
(
SFunctionNode
*
pFunc
,
char
*
pErrBuf
,
int32_t
len
)
{
if
(
1
!=
LIST_LENGTH
(
pFunc
->
pParameterList
))
{
return
invaildFuncParaNumErrMsg
(
pErrBuf
,
len
,
pFunc
->
functionName
);
}
SExprNode
*
pPara
=
nodesListGetNode
(
pFunc
->
pParameterList
,
0
);
if
(
QUERY_NODE_VALUE
!=
nodeType
(
pPara
)
||
(
!
IS_VAR_DATA_TYPE
(
pPara
->
resType
.
type
)))
{
return
invaildFuncParaTypeErrMsg
(
pErrBuf
,
len
,
pFunc
->
functionName
);
}
pFunc
->
node
.
resType
=
(
SDataType
)
{
.
bytes
=
tDataTypes
[
TSDB_DATA_TYPE_JSON
].
bytes
,
.
type
=
TSDB_DATA_TYPE_JSON
};
return
TSDB_CODE_SUCCESS
;
}
const
SBuiltinFuncDefinition
funcMgtBuiltins
[]
=
{
const
SBuiltinFuncDefinition
funcMgtBuiltins
[]
=
{
{
{
.
name
=
"count"
,
.
name
=
"count"
,
...
@@ -475,7 +489,7 @@ const SBuiltinFuncDefinition funcMgtBuiltins[] = {
...
@@ -475,7 +489,7 @@ const SBuiltinFuncDefinition funcMgtBuiltins[] = {
{
{
.
name
=
"last_row"
,
.
name
=
"last_row"
,
.
type
=
FUNCTION_TYPE_LAST_ROW
,
.
type
=
FUNCTION_TYPE_LAST_ROW
,
.
classification
=
FUNC_MGT_AGG_FUNC
,
.
classification
=
FUNC_MGT_AGG_FUNC
|
FUNC_MGT_MULTI_RES_FUNC
,
.
translateFunc
=
translateLastRow
,
.
translateFunc
=
translateLastRow
,
.
getEnvFunc
=
getMinmaxFuncEnv
,
.
getEnvFunc
=
getMinmaxFuncEnv
,
.
initFunc
=
maxFunctionSetup
,
.
initFunc
=
maxFunctionSetup
,
...
@@ -485,7 +499,7 @@ const SBuiltinFuncDefinition funcMgtBuiltins[] = {
...
@@ -485,7 +499,7 @@ const SBuiltinFuncDefinition funcMgtBuiltins[] = {
{
{
.
name
=
"first"
,
.
name
=
"first"
,
.
type
=
FUNCTION_TYPE_FIRST
,
.
type
=
FUNCTION_TYPE_FIRST
,
.
classification
=
FUNC_MGT_AGG_FUNC
,
.
classification
=
FUNC_MGT_AGG_FUNC
|
FUNC_MGT_MULTI_RES_FUNC
,
.
translateFunc
=
translateFirstLast
,
.
translateFunc
=
translateFirstLast
,
.
getEnvFunc
=
getFirstLastFuncEnv
,
.
getEnvFunc
=
getFirstLastFuncEnv
,
.
initFunc
=
functionSetup
,
.
initFunc
=
functionSetup
,
...
@@ -495,7 +509,7 @@ const SBuiltinFuncDefinition funcMgtBuiltins[] = {
...
@@ -495,7 +509,7 @@ const SBuiltinFuncDefinition funcMgtBuiltins[] = {
{
{
.
name
=
"last"
,
.
name
=
"last"
,
.
type
=
FUNCTION_TYPE_LAST
,
.
type
=
FUNCTION_TYPE_LAST
,
.
classification
=
FUNC_MGT_AGG_FUNC
,
.
classification
=
FUNC_MGT_AGG_FUNC
|
FUNC_MGT_MULTI_RES_FUNC
,
.
translateFunc
=
translateFirstLast
,
.
translateFunc
=
translateFirstLast
,
.
getEnvFunc
=
getFirstLastFuncEnv
,
.
getEnvFunc
=
getFirstLastFuncEnv
,
.
initFunc
=
functionSetup
,
.
initFunc
=
functionSetup
,
...
@@ -871,6 +885,16 @@ const SBuiltinFuncDefinition funcMgtBuiltins[] = {
...
@@ -871,6 +885,16 @@ const SBuiltinFuncDefinition funcMgtBuiltins[] = {
.
initFunc
=
NULL
,
.
initFunc
=
NULL
,
.
sprocessFunc
=
winDurFunction
,
.
sprocessFunc
=
winDurFunction
,
.
finalizeFunc
=
NULL
.
finalizeFunc
=
NULL
},
{
.
name
=
"to_json"
,
.
type
=
FUNCTION_TYPE_TO_JSON
,
.
classification
=
FUNC_MGT_SCALAR_FUNC
,
.
translateFunc
=
translateToJson
,
.
getEnvFunc
=
NULL
,
.
initFunc
=
NULL
,
.
sprocessFunc
=
NULL
,
.
finalizeFunc
=
NULL
}
}
};
};
...
...
source/libs/function/src/functionMgt.c
浏览文件 @
fd9e5208
...
@@ -138,6 +138,10 @@ bool fmIsDynamicScanOptimizedFunc(int32_t funcId) {
...
@@ -138,6 +138,10 @@ bool fmIsDynamicScanOptimizedFunc(int32_t funcId) {
return
isSpecificClassifyFunc
(
funcId
,
FUNC_MGT_DYNAMIC_SCAN_OPTIMIZED
);
return
isSpecificClassifyFunc
(
funcId
,
FUNC_MGT_DYNAMIC_SCAN_OPTIMIZED
);
}
}
bool
fmIsMultiResFunc
(
int32_t
funcId
)
{
return
isSpecificClassifyFunc
(
funcId
,
FUNC_MGT_MULTI_RES_FUNC
);
}
void
fmFuncMgtDestroy
()
{
void
fmFuncMgtDestroy
()
{
void
*
m
=
gFunMgtService
.
pFuncNameHashTable
;
void
*
m
=
gFunMgtService
.
pFuncNameHashTable
;
if
(
m
!=
NULL
&&
atomic_val_compare_exchange_ptr
((
void
**
)
&
gFunMgtService
.
pFuncNameHashTable
,
m
,
0
)
==
m
)
{
if
(
m
!=
NULL
&&
atomic_val_compare_exchange_ptr
((
void
**
)
&
gFunMgtService
.
pFuncNameHashTable
,
m
,
0
)
==
m
)
{
...
...
source/libs/nodes/src/nodesUtilFuncs.c
浏览文件 @
fd9e5208
...
@@ -84,6 +84,8 @@ SNodeptr nodesMakeNode(ENodeType type) {
...
@@ -84,6 +84,8 @@ SNodeptr nodesMakeNode(ENodeType type) {
return
makeNode
(
type
,
sizeof
(
SIndexOptions
));
return
makeNode
(
type
,
sizeof
(
SIndexOptions
));
case
QUERY_NODE_EXPLAIN_OPTIONS
:
case
QUERY_NODE_EXPLAIN_OPTIONS
:
return
makeNode
(
type
,
sizeof
(
SExplainOptions
));
return
makeNode
(
type
,
sizeof
(
SExplainOptions
));
case
QUERY_NODE_STREAM_OPTIONS
:
return
makeNode
(
type
,
sizeof
(
SStreamOptions
));
case
QUERY_NODE_SET_OPERATOR
:
case
QUERY_NODE_SET_OPERATOR
:
return
makeNode
(
type
,
sizeof
(
SSetOperator
));
return
makeNode
(
type
,
sizeof
(
SSetOperator
));
case
QUERY_NODE_SELECT_STMT
:
case
QUERY_NODE_SELECT_STMT
:
...
@@ -146,6 +148,19 @@ SNodeptr nodesMakeNode(ENodeType type) {
...
@@ -146,6 +148,19 @@ SNodeptr nodesMakeNode(ENodeType type) {
return
makeNode
(
type
,
sizeof
(
SDescribeStmt
));
return
makeNode
(
type
,
sizeof
(
SDescribeStmt
));
case
QUERY_NODE_RESET_QUERY_CACHE_STMT
:
case
QUERY_NODE_RESET_QUERY_CACHE_STMT
:
return
makeNode
(
type
,
sizeof
(
SNode
));
return
makeNode
(
type
,
sizeof
(
SNode
));
case
QUERY_NODE_COMPACT_STMT
:
case
QUERY_NODE_CREATE_FUNCTION_STMT
:
case
QUERY_NODE_DROP_FUNCTION_STMT
:
break
;
case
QUERY_NODE_CREATE_STREAM_STMT
:
return
makeNode
(
type
,
sizeof
(
SCreateStreamStmt
));
case
QUERY_NODE_DROP_STREAM_STMT
:
return
makeNode
(
type
,
sizeof
(
SDropStreamStmt
));
case
QUERY_NODE_MERGE_VGROUP_STMT
:
case
QUERY_NODE_REDISTRIBUTE_VGROUP_STMT
:
case
QUERY_NODE_SPLIT_VGROUP_STMT
:
case
QUERY_NODE_SYNCDB_STMT
:
break
;
case
QUERY_NODE_SHOW_DNODES_STMT
:
case
QUERY_NODE_SHOW_DNODES_STMT
:
case
QUERY_NODE_SHOW_MNODES_STMT
:
case
QUERY_NODE_SHOW_MNODES_STMT
:
case
QUERY_NODE_SHOW_MODULES_STMT
:
case
QUERY_NODE_SHOW_MODULES_STMT
:
...
@@ -169,7 +184,16 @@ SNodeptr nodesMakeNode(ENodeType type) {
...
@@ -169,7 +184,16 @@ SNodeptr nodesMakeNode(ENodeType type) {
case
QUERY_NODE_SHOW_CONFIGS_STMT
:
case
QUERY_NODE_SHOW_CONFIGS_STMT
:
case
QUERY_NODE_SHOW_QUERIES_STMT
:
case
QUERY_NODE_SHOW_QUERIES_STMT
:
case
QUERY_NODE_SHOW_VNODES_STMT
:
case
QUERY_NODE_SHOW_VNODES_STMT
:
case
QUERY_NODE_SHOW_APPS_STMT
:
case
QUERY_NODE_SHOW_SCORES_STMT
:
case
QUERY_NODE_SHOW_VARIABLE_STMT
:
case
QUERY_NODE_SHOW_CREATE_DATABASE_STMT
:
case
QUERY_NODE_SHOW_CREATE_TABLE_STMT
:
case
QUERY_NODE_SHOW_CREATE_STABLE_STMT
:
return
makeNode
(
type
,
sizeof
(
SShowStmt
));
return
makeNode
(
type
,
sizeof
(
SShowStmt
));
case
QUERY_NODE_KILL_CONNECTION_STMT
:
case
QUERY_NODE_KILL_QUERY_STMT
:
return
makeNode
(
type
,
sizeof
(
SKillStmt
));
case
QUERY_NODE_LOGIC_PLAN_SCAN
:
case
QUERY_NODE_LOGIC_PLAN_SCAN
:
return
makeNode
(
type
,
sizeof
(
SScanLogicNode
));
return
makeNode
(
type
,
sizeof
(
SScanLogicNode
));
case
QUERY_NODE_LOGIC_PLAN_JOIN
:
case
QUERY_NODE_LOGIC_PLAN_JOIN
:
...
@@ -675,6 +699,7 @@ int32_t nodesListAppend(SNodeList* pList, SNodeptr pNode) {
...
@@ -675,6 +699,7 @@ int32_t nodesListAppend(SNodeList* pList, SNodeptr pNode) {
if
(
NULL
!=
pList
->
pTail
)
{
if
(
NULL
!=
pList
->
pTail
)
{
pList
->
pTail
->
pNext
=
p
;
pList
->
pTail
->
pNext
=
p
;
}
}
p
->
pPrev
=
pList
->
pTail
;
pList
->
pTail
=
p
;
pList
->
pTail
=
p
;
++
(
pList
->
length
);
++
(
pList
->
length
);
return
TSDB_CODE_SUCCESS
;
return
TSDB_CODE_SUCCESS
;
...
...
source/libs/parser/inc/parAst.h
浏览文件 @
fd9e5208
...
@@ -86,6 +86,7 @@ SNode* createColumnNode(SAstCreateContext* pCxt, SToken* pTableAlias, SToken* pC
...
@@ -86,6 +86,7 @@ SNode* createColumnNode(SAstCreateContext* pCxt, SToken* pTableAlias, SToken* pC
SNode
*
createValueNode
(
SAstCreateContext
*
pCxt
,
int32_t
dataType
,
const
SToken
*
pLiteral
);
SNode
*
createValueNode
(
SAstCreateContext
*
pCxt
,
int32_t
dataType
,
const
SToken
*
pLiteral
);
SNode
*
createDurationValueNode
(
SAstCreateContext
*
pCxt
,
const
SToken
*
pLiteral
);
SNode
*
createDurationValueNode
(
SAstCreateContext
*
pCxt
,
const
SToken
*
pLiteral
);
SNode
*
createDefaultDatabaseCondValue
(
SAstCreateContext
*
pCxt
);
SNode
*
createDefaultDatabaseCondValue
(
SAstCreateContext
*
pCxt
);
SNode
*
createPlaceholderValueNode
(
SAstCreateContext
*
pCxt
);
SNode
*
setProjectionAlias
(
SAstCreateContext
*
pCxt
,
SNode
*
pNode
,
const
SToken
*
pAlias
);
SNode
*
setProjectionAlias
(
SAstCreateContext
*
pCxt
,
SNode
*
pNode
,
const
SToken
*
pAlias
);
SNode
*
createLogicConditionNode
(
SAstCreateContext
*
pCxt
,
ELogicConditionType
type
,
SNode
*
pParam1
,
SNode
*
pParam2
);
SNode
*
createLogicConditionNode
(
SAstCreateContext
*
pCxt
,
ELogicConditionType
type
,
SNode
*
pParam1
,
SNode
*
pParam2
);
SNode
*
createOperatorNode
(
SAstCreateContext
*
pCxt
,
EOperatorType
type
,
SNode
*
pLeft
,
SNode
*
pRight
);
SNode
*
createOperatorNode
(
SAstCreateContext
*
pCxt
,
EOperatorType
type
,
SNode
*
pLeft
,
SNode
*
pRight
);
...
@@ -166,8 +167,9 @@ SNode* createResetQueryCacheStmt(SAstCreateContext* pCxt);
...
@@ -166,8 +167,9 @@ SNode* createResetQueryCacheStmt(SAstCreateContext* pCxt);
SNode
*
createCompactStmt
(
SAstCreateContext
*
pCxt
,
SNodeList
*
pVgroups
);
SNode
*
createCompactStmt
(
SAstCreateContext
*
pCxt
,
SNodeList
*
pVgroups
);
SNode
*
createCreateFunctionStmt
(
SAstCreateContext
*
pCxt
,
bool
aggFunc
,
const
SToken
*
pFuncName
,
const
SToken
*
pLibPath
,
SDataType
dataType
,
int32_t
bufSize
);
SNode
*
createCreateFunctionStmt
(
SAstCreateContext
*
pCxt
,
bool
aggFunc
,
const
SToken
*
pFuncName
,
const
SToken
*
pLibPath
,
SDataType
dataType
,
int32_t
bufSize
);
SNode
*
createDropFunctionStmt
(
SAstCreateContext
*
pCxt
,
const
SToken
*
pFuncName
);
SNode
*
createDropFunctionStmt
(
SAstCreateContext
*
pCxt
,
const
SToken
*
pFuncName
);
SNode
*
createCreateStreamStmt
(
SAstCreateContext
*
pCxt
,
const
SToken
*
pStreamName
,
const
SToken
*
pTableName
,
SNode
*
pQuery
);
SNode
*
createStreamOptions
(
SAstCreateContext
*
pCxt
);
SNode
*
createDropStreamStmt
(
SAstCreateContext
*
pCxt
,
const
SToken
*
pStreamName
);
SNode
*
createCreateStreamStmt
(
SAstCreateContext
*
pCxt
,
bool
ignoreExists
,
const
SToken
*
pStreamName
,
SNode
*
pRealTable
,
SNode
*
pOptions
,
SNode
*
pQuery
);
SNode
*
createDropStreamStmt
(
SAstCreateContext
*
pCxt
,
bool
ignoreNotExists
,
const
SToken
*
pStreamName
);
SNode
*
createKillStmt
(
SAstCreateContext
*
pCxt
,
ENodeType
type
,
const
SToken
*
pId
);
SNode
*
createKillStmt
(
SAstCreateContext
*
pCxt
,
ENodeType
type
,
const
SToken
*
pId
);
SNode
*
createMergeVgroupStmt
(
SAstCreateContext
*
pCxt
,
const
SToken
*
pVgId1
,
const
SToken
*
pVgId2
);
SNode
*
createMergeVgroupStmt
(
SAstCreateContext
*
pCxt
,
const
SToken
*
pVgId1
,
const
SToken
*
pVgId2
);
SNode
*
createRedistributeVgroupStmt
(
SAstCreateContext
*
pCxt
,
const
SToken
*
pVgId
,
SNodeList
*
pDnodes
);
SNode
*
createRedistributeVgroupStmt
(
SAstCreateContext
*
pCxt
,
const
SToken
*
pVgId
,
SNodeList
*
pDnodes
);
...
...
source/libs/parser/inc/sql.y
浏览文件 @
fd9e5208
...
@@ -293,6 +293,7 @@ tags_def(A) ::= TAGS NK_LP column_def_list(B) NK_RP.
...
@@ -293,6 +293,7 @@ tags_def(A) ::= TAGS NK_LP column_def_list(B) NK_RP.
table_options(A) ::= . { A = createTableOptions(pCxt); }
table_options(A) ::= . { A = createTableOptions(pCxt); }
table_options(A) ::= table_options(B) COMMENT NK_STRING(C). { ((STableOptions*)B)->pComments = (SValueNode*)createValueNode(pCxt, TSDB_DATA_TYPE_BINARY, &C); A = B; }
table_options(A) ::= table_options(B) COMMENT NK_STRING(C). { ((STableOptions*)B)->pComments = (SValueNode*)createValueNode(pCxt, TSDB_DATA_TYPE_BINARY, &C); A = B; }
table_options(A) ::= table_options(B) KEEP integer_list(C). { ((STableOptions*)B)->pKeep = C; A = B; }
table_options(A) ::= table_options(B) KEEP integer_list(C). { ((STableOptions*)B)->pKeep = C; A = B; }
table_options(A) ::= table_options(B) KEEP variable_list(C). { ((STableOptions*)B)->pKeep = C; A = B; }
table_options(A) ::= table_options(B) TTL NK_INTEGER(C). { ((STableOptions*)B)->pTtl = (SValueNode*)createValueNode(pCxt, TSDB_DATA_TYPE_BIGINT, &C); A = B; }
table_options(A) ::= table_options(B) TTL NK_INTEGER(C). { ((STableOptions*)B)->pTtl = (SValueNode*)createValueNode(pCxt, TSDB_DATA_TYPE_BIGINT, &C); A = B; }
table_options(A) ::= table_options(B) SMA NK_LP col_name_list(C) NK_RP. { ((STableOptions*)B)->pSma = C; A = B; }
table_options(A) ::= table_options(B) SMA NK_LP col_name_list(C) NK_RP. { ((STableOptions*)B)->pSma = C; A = B; }
table_options(A) ::= table_options(B) ROLLUP NK_LP func_name_list(C) NK_RP. { ((STableOptions*)B)->pFuncs = C; A = B; }
table_options(A) ::= table_options(B) ROLLUP NK_LP func_name_list(C) NK_RP. { ((STableOptions*)B)->pFuncs = C; A = B; }
...
@@ -306,6 +307,7 @@ alter_table_options(A) ::= alter_table_options(B) alter_table_option(C).
...
@@ -306,6 +307,7 @@ alter_table_options(A) ::= alter_table_options(B) alter_table_option(C).
%destructor alter_table_option { }
%destructor alter_table_option { }
alter_table_option(A) ::= COMMENT NK_STRING(B). { A.type = TABLE_OPTION_COMMENT; A.pVal = (SValueNode*)createValueNode(pCxt, TSDB_DATA_TYPE_BINARY, &B); }
alter_table_option(A) ::= COMMENT NK_STRING(B). { A.type = TABLE_OPTION_COMMENT; A.pVal = (SValueNode*)createValueNode(pCxt, TSDB_DATA_TYPE_BINARY, &B); }
alter_table_option(A) ::= KEEP integer_list(B). { A.type = TABLE_OPTION_KEEP; A.pList = B; }
alter_table_option(A) ::= KEEP integer_list(B). { A.type = TABLE_OPTION_KEEP; A.pList = B; }
alter_table_option(A) ::= KEEP variable_list(B). { A.type = TABLE_OPTION_KEEP; A.pList = B; }
alter_table_option(A) ::= TTL NK_INTEGER(B). { A.type = TABLE_OPTION_TTL; A.pVal = (SValueNode*)createValueNode(pCxt, TSDB_DATA_TYPE_BIGINT, &B); }
alter_table_option(A) ::= TTL NK_INTEGER(B). { A.type = TABLE_OPTION_TTL; A.pVal = (SValueNode*)createValueNode(pCxt, TSDB_DATA_TYPE_BIGINT, &B); }
%type col_name_list { SNodeList* }
%type col_name_list { SNodeList* }
...
@@ -424,8 +426,17 @@ bufsize_opt(A) ::= .
...
@@ -424,8 +426,17 @@ bufsize_opt(A) ::= .
bufsize_opt(A) ::= BUFSIZE NK_INTEGER(B). { A = strtol(B.z, NULL, 10); }
bufsize_opt(A) ::= BUFSIZE NK_INTEGER(B). { A = strtol(B.z, NULL, 10); }
/************************************************ create/drop stream **************************************************/
/************************************************ create/drop stream **************************************************/
cmd ::= CREATE STREAM stream_name(A) INTO table_name(B) AS query_expression(C). { pCxt->pRootNode = createCreateStreamStmt(pCxt, &A, &B, C); }
cmd ::= CREATE STREAM not_exists_opt(E) stream_name(A)
cmd ::= DROP STREAM stream_name(A). { pCxt->pRootNode = createDropStreamStmt(pCxt, &A); }
stream_options(B) into_opt(C) AS query_expression(D). { pCxt->pRootNode = createCreateStreamStmt(pCxt, E, &A, B, C, D); }
cmd ::= DROP STREAM exists_opt(A) stream_name(B). { pCxt->pRootNode = createDropStreamStmt(pCxt, A, &B); }
into_opt(A) ::= . { A = NULL; }
into_opt(A) ::= INTO full_table_name(B). { A = B; }
stream_options(A) ::= . { A = createStreamOptions(pCxt); }
stream_options(A) ::= stream_options(B) TRIGGER AT_ONCE. { ((SStreamOptions*)B)->triggerType = STREAM_TRIGGER_AT_ONCE; A = B; }
stream_options(A) ::= stream_options(B) TRIGGER WINDOW_CLOSE. { ((SStreamOptions*)B)->triggerType = STREAM_TRIGGER_WINDOW_CLOSE; A = B; }
stream_options(A) ::= stream_options(B) WATERMARK duration_literal(C). { ((SStreamOptions*)B)->pWatermark = releaseRawExprNode(pCxt, C); A = B; }
/************************************************ kill connection/query ***********************************************/
/************************************************ kill connection/query ***********************************************/
cmd ::= KILL CONNECTION NK_INTEGER(A). { pCxt->pRootNode = createKillStmt(pCxt, QUERY_NODE_KILL_CONNECTION_STMT, &A); }
cmd ::= KILL CONNECTION NK_INTEGER(A). { pCxt->pRootNode = createKillStmt(pCxt, QUERY_NODE_KILL_CONNECTION_STMT, &A); }
...
@@ -455,6 +466,7 @@ literal(A) ::= NK_BOOL(B).
...
@@ -455,6 +466,7 @@ literal(A) ::= NK_BOOL(B).
literal(A) ::= TIMESTAMP(B) NK_STRING(C). { A = createRawExprNodeExt(pCxt, &B, &C, createValueNode(pCxt, TSDB_DATA_TYPE_TIMESTAMP, &C)); }
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) ::= duration_literal(B). { A = B; }
literal(A) ::= NULL(B). { A = createRawExprNode(pCxt, &B, createValueNode(pCxt, TSDB_DATA_TYPE_NULL, NULL)); }
literal(A) ::= NULL(B). { A = createRawExprNode(pCxt, &B, createValueNode(pCxt, TSDB_DATA_TYPE_NULL, NULL)); }
literal(A) ::= NK_QUESTION(B). { A = createRawExprNode(pCxt, &B, createPlaceholderValueNode(pCxt)); }
duration_literal(A) ::= NK_VARIABLE(B). { A = createRawExprNode(pCxt, &B, createDurationValueNode(pCxt, &B)); }
duration_literal(A) ::= NK_VARIABLE(B). { A = createRawExprNode(pCxt, &B, createDurationValueNode(pCxt, &B)); }
...
@@ -501,10 +513,6 @@ column_name(A) ::= NK_ID(B).
...
@@ -501,10 +513,6 @@ column_name(A) ::= NK_ID(B).
%type function_name { SToken }
%type function_name { SToken }
%destructor function_name { }
%destructor function_name { }
function_name(A) ::= NK_ID(B). { A = B; }
function_name(A) ::= NK_ID(B). { A = B; }
function_name(A) ::= FIRST(B). { A = B; }
function_name(A) ::= LAST(B). { A = B; }
function_name(A) ::= NOW(B). { A = B; }
function_name(A) ::= TODAY(B). { A = B; }
%type table_alias { SToken }
%type table_alias { SToken }
%destructor table_alias { }
%destructor table_alias { }
...
@@ -532,13 +540,9 @@ stream_name(A) ::= NK_ID(B).
...
@@ -532,13 +540,9 @@ stream_name(A) ::= NK_ID(B).
/************************************************ expression **********************************************************/
/************************************************ expression **********************************************************/
expression(A) ::= literal(B). { A = B; }
expression(A) ::= literal(B). { A = B; }
//expression(A) ::= NK_QUESTION(B). { A = B; }
expression(A) ::= pseudo_column(B). { A = B; }
expression(A) ::= pseudo_column(B). { A = B; }
expression(A) ::= column_reference(B). { A = B; }
expression(A) ::= column_reference(B). { A = B; }
expression(A) ::= function_name(B) NK_LP expression_list(C) NK_RP(D). { A = createRawExprNodeExt(pCxt, &B, &D, createFunctionNode(pCxt, &B, C)); }
expression(A) ::= function_expression(B). { A = B; }
expression(A) ::= function_name(B) NK_LP NK_STAR(C) NK_RP(D). { A = createRawExprNodeExt(pCxt, &B, &D, createFunctionNode(pCxt, &B, createNodeList(pCxt, createColumnNode(pCxt, NULL, &C)))); }
expression(A) ::= function_name(B) NK_LP NK_RP(D). { A = createRawExprNodeExt(pCxt, &B, &D, createFunctionNodeNoParam(pCxt, &B)); }
expression(A) ::= CAST(B) NK_LP expression(C) AS type_name(D) NK_RP(E). { A = createRawExprNodeExt(pCxt, &B, &E, createCastFunctionNode(pCxt, releaseRawExprNode(pCxt, C), D)); }
//expression(A) ::= case_expression(B). { A = B; }
//expression(A) ::= case_expression(B). { A = B; }
expression(A) ::= subquery(B). { A = B; }
expression(A) ::= subquery(B). { A = B; }
expression(A) ::= NK_LP(B) expression(C) NK_RP(D). { A = createRawExprNodeExt(pCxt, &B, &D, releaseRawExprNode(pCxt, C)); }
expression(A) ::= NK_LP(B) expression(C) NK_RP(D). { A = createRawExprNodeExt(pCxt, &B, &D, releaseRawExprNode(pCxt, C)); }
...
@@ -575,6 +579,10 @@ expression(A) ::= expression(B) NK_REM expression(C).
...
@@ -575,6 +579,10 @@ expression(A) ::= expression(B) NK_REM expression(C).
SToken e = getTokenFromRawExprNode(pCxt, C);
SToken e = getTokenFromRawExprNode(pCxt, C);
A = createRawExprNodeExt(pCxt, &s, &e, createOperatorNode(pCxt, OP_TYPE_MOD, releaseRawExprNode(pCxt, B), releaseRawExprNode(pCxt, C)));
A = createRawExprNodeExt(pCxt, &s, &e, createOperatorNode(pCxt, OP_TYPE_MOD, releaseRawExprNode(pCxt, B), releaseRawExprNode(pCxt, C)));
}
}
expression(A) ::= column_reference(B) NK_ARROW NK_STRING(C). {
SToken s = getTokenFromRawExprNode(pCxt, B);
A = createRawExprNodeExt(pCxt, &s, &C, createOperatorNode(pCxt, OP_TYPE_JSON_GET_VALUE, releaseRawExprNode(pCxt, B), createValueNode(pCxt, TSDB_DATA_TYPE_BINARY, &C)));
}
%type expression_list { SNodeList* }
%type expression_list { SNodeList* }
%destructor expression_list { nodesDestroyList($$); }
%destructor expression_list { nodesDestroyList($$); }
...
@@ -584,8 +592,6 @@ expression_list(A) ::= expression_list(B) NK_COMMA expression(C).
...
@@ -584,8 +592,6 @@ expression_list(A) ::= expression_list(B) NK_COMMA expression(C).
column_reference(A) ::= column_name(B). { A = createRawExprNode(pCxt, &B, createColumnNode(pCxt, NULL, &B)); }
column_reference(A) ::= column_name(B). { A = createRawExprNode(pCxt, &B, createColumnNode(pCxt, NULL, &B)); }
column_reference(A) ::= table_name(B) NK_DOT column_name(C). { A = createRawExprNodeExt(pCxt, &B, &C, createColumnNode(pCxt, &B, &C)); }
column_reference(A) ::= table_name(B) NK_DOT column_name(C). { A = createRawExprNodeExt(pCxt, &B, &C, createColumnNode(pCxt, &B, &C)); }
//pseudo_column(A) ::= NOW(B). { A = createRawExprNode(pCxt, &B, createFunctionNode(pCxt, &B, NULL)); }
//pseudo_column(A) ::= TODAY(B). { A = createRawExprNode(pCxt, &B, createFunctionNode(pCxt, &B, NULL)); }
pseudo_column(A) ::= ROWTS(B). { A = createRawExprNode(pCxt, &B, createFunctionNode(pCxt, &B, NULL)); }
pseudo_column(A) ::= ROWTS(B). { A = createRawExprNode(pCxt, &B, createFunctionNode(pCxt, &B, NULL)); }
pseudo_column(A) ::= TBNAME(B). { A = createRawExprNode(pCxt, &B, createFunctionNode(pCxt, &B, NULL)); }
pseudo_column(A) ::= TBNAME(B). { A = createRawExprNode(pCxt, &B, createFunctionNode(pCxt, &B, NULL)); }
pseudo_column(A) ::= QSTARTTS(B). { A = createRawExprNode(pCxt, &B, createFunctionNode(pCxt, &B, NULL)); }
pseudo_column(A) ::= QSTARTTS(B). { A = createRawExprNode(pCxt, &B, createFunctionNode(pCxt, &B, NULL)); }
...
@@ -594,6 +600,36 @@ pseudo_column(A) ::= WSTARTTS(B).
...
@@ -594,6 +600,36 @@ pseudo_column(A) ::= WSTARTTS(B).
pseudo_column(A) ::= WENDTS(B). { A = createRawExprNode(pCxt, &B, createFunctionNode(pCxt, &B, NULL)); }
pseudo_column(A) ::= WENDTS(B). { A = createRawExprNode(pCxt, &B, createFunctionNode(pCxt, &B, NULL)); }
pseudo_column(A) ::= WDURATION(B). { A = createRawExprNode(pCxt, &B, createFunctionNode(pCxt, &B, NULL)); }
pseudo_column(A) ::= WDURATION(B). { A = createRawExprNode(pCxt, &B, createFunctionNode(pCxt, &B, NULL)); }
function_expression(A) ::= function_name(B) NK_LP expression_list(C) NK_RP(D). { A = createRawExprNodeExt(pCxt, &B, &D, createFunctionNode(pCxt, &B, C)); }
function_expression(A) ::= star_func(B) NK_LP star_func_para_list(C) NK_RP(D). { A = createRawExprNodeExt(pCxt, &B, &D, createFunctionNode(pCxt, &B, C)); }
function_expression(A) ::= CAST(B) NK_LP expression(C) AS type_name(D) NK_RP(E). { A = createRawExprNodeExt(pCxt, &B, &E, createCastFunctionNode(pCxt, releaseRawExprNode(pCxt, C), D)); }
function_expression(A) ::= noarg_func(B) NK_LP NK_RP(C). { A = createRawExprNodeExt(pCxt, &B, &C, createFunctionNode(pCxt, &B, NULL)); }
%type noarg_func { SToken }
%destructor noarg_func { }
noarg_func(A) ::= NOW(B). { A = B; }
noarg_func(A) ::= TODAY(B). { A = B; }
%type star_func { SToken }
%destructor star_func { }
star_func(A) ::= COUNT(B). { A = B; }
star_func(A) ::= FIRST(B). { A = B; }
star_func(A) ::= LAST(B). { A = B; }
star_func(A) ::= LAST_ROW(B). { A = B; }
%type star_func_para_list { SNodeList* }
%destructor star_func_para_list { nodesDestroyList($$); }
star_func_para_list(A) ::= NK_STAR(B). { A = createNodeList(pCxt, createColumnNode(pCxt, NULL, &B)); }
star_func_para_list(A) ::= other_para_list(B). { A = B; }
%type other_para_list { SNodeList* }
%destructor other_para_list { nodesDestroyList($$); }
other_para_list(A) ::= star_func_para(B). { A = createNodeList(pCxt, B); }
other_para_list(A) ::= other_para_list(B) NK_COMMA star_func_para(C). { A = addNodeToList(pCxt, B, C); }
star_func_para(A) ::= expression(B). { A = releaseRawExprNode(pCxt, B); }
star_func_para(A) ::= table_name(B) NK_DOT NK_STAR(C). { A = createColumnNode(pCxt, &B, &C); }
/************************************************ predicate ***********************************************************/
/************************************************ predicate ***********************************************************/
predicate(A) ::= expression(B) compare_op(C) expression(D). {
predicate(A) ::= expression(B) compare_op(C) expression(D). {
SToken s = getTokenFromRawExprNode(pCxt, B);
SToken s = getTokenFromRawExprNode(pCxt, B);
...
@@ -637,6 +673,7 @@ compare_op(A) ::= LIKE.
...
@@ -637,6 +673,7 @@ compare_op(A) ::= LIKE.
compare_op(A) ::= NOT LIKE. { A = OP_TYPE_NOT_LIKE; }
compare_op(A) ::= NOT LIKE. { A = OP_TYPE_NOT_LIKE; }
compare_op(A) ::= MATCH. { A = OP_TYPE_MATCH; }
compare_op(A) ::= MATCH. { A = OP_TYPE_MATCH; }
compare_op(A) ::= NMATCH. { A = OP_TYPE_NMATCH; }
compare_op(A) ::= NMATCH. { A = OP_TYPE_NMATCH; }
compare_op(A) ::= CONTAINS. { A = OP_TYPE_JSON_CONTAINS; }
%type in_op { EOperatorType }
%type in_op { EOperatorType }
%destructor in_op { }
%destructor in_op { }
...
...
source/libs/parser/src/parAstCreater.c
浏览文件 @
fd9e5208
...
@@ -305,6 +305,13 @@ SNode* createDefaultDatabaseCondValue(SAstCreateContext* pCxt) {
...
@@ -305,6 +305,13 @@ SNode* createDefaultDatabaseCondValue(SAstCreateContext* pCxt) {
return
(
SNode
*
)
val
;
return
(
SNode
*
)
val
;
}
}
SNode
*
createPlaceholderValueNode
(
SAstCreateContext
*
pCxt
)
{
SValueNode
*
val
=
(
SValueNode
*
)
nodesMakeNode
(
QUERY_NODE_VALUE
);
CHECK_OUT_OF_MEM
(
val
);
// todo
return
(
SNode
*
)
val
;
}
SNode
*
createLogicConditionNode
(
SAstCreateContext
*
pCxt
,
ELogicConditionType
type
,
SNode
*
pParam1
,
SNode
*
pParam2
)
{
SNode
*
createLogicConditionNode
(
SAstCreateContext
*
pCxt
,
ELogicConditionType
type
,
SNode
*
pParam1
,
SNode
*
pParam2
)
{
SLogicConditionNode
*
cond
=
(
SLogicConditionNode
*
)
nodesMakeNode
(
QUERY_NODE_LOGIC_CONDITION
);
SLogicConditionNode
*
cond
=
(
SLogicConditionNode
*
)
nodesMakeNode
(
QUERY_NODE_LOGIC_CONDITION
);
CHECK_OUT_OF_MEM
(
cond
);
CHECK_OUT_OF_MEM
(
cond
);
...
@@ -944,6 +951,18 @@ SNode* createShowStmt(SAstCreateContext* pCxt, ENodeType type, SNode* pDbName, S
...
@@ -944,6 +951,18 @@ SNode* createShowStmt(SAstCreateContext* pCxt, ENodeType type, SNode* pDbName, S
return
(
SNode
*
)
pStmt
;
return
(
SNode
*
)
pStmt
;
}
}
SNode
*
createShowCreateDatabaseStmt
(
SAstCreateContext
*
pCxt
,
const
SToken
*
pDbName
)
{
SNode
*
pStmt
=
nodesMakeNode
(
QUERY_NODE_SHOW_CREATE_DATABASE_STMT
);
CHECK_OUT_OF_MEM
(
pStmt
);
return
pStmt
;
}
SNode
*
createShowCreateTableStmt
(
SAstCreateContext
*
pCxt
,
ENodeType
type
,
SNode
*
pRealTable
)
{
SNode
*
pStmt
=
nodesMakeNode
(
type
);
CHECK_OUT_OF_MEM
(
pStmt
);
return
pStmt
;
}
SNode
*
createCreateUserStmt
(
SAstCreateContext
*
pCxt
,
SToken
*
pUserName
,
const
SToken
*
pPassword
)
{
SNode
*
createCreateUserStmt
(
SAstCreateContext
*
pCxt
,
SToken
*
pUserName
,
const
SToken
*
pPassword
)
{
char
password
[
TSDB_USET_PASSWORD_LEN
]
=
{
0
};
char
password
[
TSDB_USET_PASSWORD_LEN
]
=
{
0
};
if
(
!
checkUserName
(
pCxt
,
pUserName
)
||
!
checkPassword
(
pCxt
,
pPassword
,
password
))
{
if
(
!
checkUserName
(
pCxt
,
pUserName
)
||
!
checkPassword
(
pCxt
,
pPassword
,
password
))
{
...
@@ -1175,16 +1194,34 @@ SNode* createDropFunctionStmt(SAstCreateContext* pCxt, const SToken* pFuncName)
...
@@ -1175,16 +1194,34 @@ SNode* createDropFunctionStmt(SAstCreateContext* pCxt, const SToken* pFuncName)
return
pStmt
;
return
pStmt
;
}
}
SNode
*
createCreateStreamStmt
(
SAstCreateContext
*
pCxt
,
const
SToken
*
pStreamName
,
const
SToken
*
pTableName
,
SNode
*
pQuery
)
{
SNode
*
createStreamOptions
(
SAstCreateContext
*
pCxt
)
{
SNode
*
pStmt
=
nodesMakeNode
(
QUERY_NODE_CREATE_STREAM_STMT
);
SStreamOptions
*
pOptions
=
nodesMakeNode
(
QUERY_NODE_STREAM_OPTIONS
);
CHECK_OUT_OF_MEM
(
pOptions
);
pOptions
->
triggerType
=
STREAM_TRIGGER_AT_ONCE
;
return
(
SNode
*
)
pOptions
;
}
SNode
*
createCreateStreamStmt
(
SAstCreateContext
*
pCxt
,
bool
ignoreExists
,
const
SToken
*
pStreamName
,
SNode
*
pRealTable
,
SNode
*
pOptions
,
SNode
*
pQuery
)
{
SCreateStreamStmt
*
pStmt
=
nodesMakeNode
(
QUERY_NODE_CREATE_STREAM_STMT
);
CHECK_OUT_OF_MEM
(
pStmt
);
CHECK_OUT_OF_MEM
(
pStmt
);
return
pStmt
;
strncpy
(
pStmt
->
streamName
,
pStreamName
->
z
,
pStreamName
->
n
);
if
(
NULL
!=
pRealTable
)
{
strcpy
(
pStmt
->
targetDbName
,
((
SRealTableNode
*
)
pRealTable
)
->
table
.
dbName
);
strcpy
(
pStmt
->
targetTabName
,
((
SRealTableNode
*
)
pRealTable
)
->
table
.
tableName
);
nodesDestroyNode
(
pRealTable
);
}
pStmt
->
ignoreExists
=
ignoreExists
;
pStmt
->
pOptions
=
(
SStreamOptions
*
)
pOptions
;
pStmt
->
pQuery
=
pQuery
;
return
(
SNode
*
)
pStmt
;
}
}
SNode
*
createDropStreamStmt
(
SAstCreateContext
*
pCxt
,
const
SToken
*
pStreamName
)
{
SNode
*
createDropStreamStmt
(
SAstCreateContext
*
pCxt
,
bool
ignoreNotExists
,
const
SToken
*
pStreamName
)
{
S
Node
*
pStmt
=
nodesMakeNode
(
QUERY_NODE_DROP_STREAM_STMT
);
S
DropStreamStmt
*
pStmt
=
nodesMakeNode
(
QUERY_NODE_DROP_STREAM_STMT
);
CHECK_OUT_OF_MEM
(
pStmt
);
CHECK_OUT_OF_MEM
(
pStmt
);
return
pStmt
;
strncpy
(
pStmt
->
streamName
,
pStreamName
->
z
,
pStreamName
->
n
);
pStmt
->
ignoreNotExists
=
ignoreNotExists
;
return
(
SNode
*
)
pStmt
;
}
}
SNode
*
createKillStmt
(
SAstCreateContext
*
pCxt
,
ENodeType
type
,
const
SToken
*
pId
)
{
SNode
*
createKillStmt
(
SAstCreateContext
*
pCxt
,
ENodeType
type
,
const
SToken
*
pId
)
{
...
...
source/libs/parser/src/parTokenizer.c
浏览文件 @
fd9e5208
...
@@ -39,6 +39,7 @@ static SKeyword keywordTable[] = {
...
@@ -39,6 +39,7 @@ static SKeyword keywordTable[] = {
{
"APPS"
,
TK_APPS
},
{
"APPS"
,
TK_APPS
},
{
"AS"
,
TK_AS
},
{
"AS"
,
TK_AS
},
{
"ASC"
,
TK_ASC
},
{
"ASC"
,
TK_ASC
},
{
"AT_ONCE"
,
TK_AT_ONCE
},
{
"BETWEEN"
,
TK_BETWEEN
},
{
"BETWEEN"
,
TK_BETWEEN
},
{
"BINARY"
,
TK_BINARY
},
{
"BINARY"
,
TK_BINARY
},
{
"BIGINT"
,
TK_BIGINT
},
{
"BIGINT"
,
TK_BIGINT
},
...
@@ -50,6 +51,7 @@ static SKeyword keywordTable[] = {
...
@@ -50,6 +51,7 @@ static SKeyword keywordTable[] = {
{
"BY"
,
TK_BY
},
{
"BY"
,
TK_BY
},
{
"CACHE"
,
TK_CACHE
},
{
"CACHE"
,
TK_CACHE
},
{
"CACHELAST"
,
TK_CACHELAST
},
{
"CACHELAST"
,
TK_CACHELAST
},
{
"CAST"
,
TK_CAST
},
{
"COLUMN"
,
TK_COLUMN
},
{
"COLUMN"
,
TK_COLUMN
},
{
"COMMENT"
,
TK_COMMENT
},
{
"COMMENT"
,
TK_COMMENT
},
{
"COMP"
,
TK_COMP
},
{
"COMP"
,
TK_COMP
},
...
@@ -57,6 +59,7 @@ static SKeyword keywordTable[] = {
...
@@ -57,6 +59,7 @@ static SKeyword keywordTable[] = {
{
"CONNS"
,
TK_CONNS
},
{
"CONNS"
,
TK_CONNS
},
{
"CONNECTION"
,
TK_CONNECTION
},
{
"CONNECTION"
,
TK_CONNECTION
},
{
"CONNECTIONS"
,
TK_CONNECTIONS
},
{
"CONNECTIONS"
,
TK_CONNECTIONS
},
{
"COUNT"
,
TK_COUNT
},
{
"CREATE"
,
TK_CREATE
},
{
"CREATE"
,
TK_CREATE
},
{
"DATABASE"
,
TK_DATABASE
},
{
"DATABASE"
,
TK_DATABASE
},
{
"DATABASES"
,
TK_DATABASES
},
{
"DATABASES"
,
TK_DATABASES
},
...
@@ -100,6 +103,7 @@ static SKeyword keywordTable[] = {
...
@@ -100,6 +103,7 @@ static SKeyword keywordTable[] = {
{
"KEEP"
,
TK_KEEP
},
{
"KEEP"
,
TK_KEEP
},
{
"KILL"
,
TK_KILL
},
{
"KILL"
,
TK_KILL
},
{
"LAST"
,
TK_LAST
},
{
"LAST"
,
TK_LAST
},
{
"LAST_ROW"
,
TK_LAST_ROW
},
{
"LICENCE"
,
TK_LICENCE
},
{
"LICENCE"
,
TK_LICENCE
},
{
"LIKE"
,
TK_LIKE
},
{
"LIKE"
,
TK_LIKE
},
{
"LIMIT"
,
TK_LIMIT
},
{
"LIMIT"
,
TK_LIMIT
},
...
@@ -132,10 +136,8 @@ static SKeyword keywordTable[] = {
...
@@ -132,10 +136,8 @@ static SKeyword keywordTable[] = {
{
"PRECISION"
,
TK_PRECISION
},
{
"PRECISION"
,
TK_PRECISION
},
{
"PRIVILEGE"
,
TK_PRIVILEGE
},
{
"PRIVILEGE"
,
TK_PRIVILEGE
},
{
"PREV"
,
TK_PREV
},
{
"PREV"
,
TK_PREV
},
{
"_QENDTS"
,
TK_QENDTS
},
{
"QNODE"
,
TK_QNODE
},
{
"QNODE"
,
TK_QNODE
},
{
"QNODES"
,
TK_QNODES
},
{
"QNODES"
,
TK_QNODES
},
{
"_QSTARTTS"
,
TK_QSTARTTS
},
{
"QTIME"
,
TK_QTIME
},
{
"QTIME"
,
TK_QTIME
},
{
"QUERIES"
,
TK_QUERIES
},
{
"QUERIES"
,
TK_QUERIES
},
{
"QUERY"
,
TK_QUERY
},
{
"QUERY"
,
TK_QUERY
},
...
@@ -145,7 +147,6 @@ static SKeyword keywordTable[] = {
...
@@ -145,7 +147,6 @@ static SKeyword keywordTable[] = {
{
"RESET"
,
TK_RESET
},
{
"RESET"
,
TK_RESET
},
{
"RETENTIONS"
,
TK_RETENTIONS
},
{
"RETENTIONS"
,
TK_RETENTIONS
},
{
"ROLLUP"
,
TK_ROLLUP
},
{
"ROLLUP"
,
TK_ROLLUP
},
{
"_ROWTS"
,
TK_ROWTS
},
{
"SCORES"
,
TK_SCORES
},
{
"SCORES"
,
TK_SCORES
},
{
"SELECT"
,
TK_SELECT
},
{
"SELECT"
,
TK_SELECT
},
{
"SESSION"
,
TK_SESSION
},
{
"SESSION"
,
TK_SESSION
},
...
@@ -178,6 +179,7 @@ static SKeyword keywordTable[] = {
...
@@ -178,6 +179,7 @@ static SKeyword keywordTable[] = {
{
"TODAY"
,
TK_TODAY
},
{
"TODAY"
,
TK_TODAY
},
{
"TOPIC"
,
TK_TOPIC
},
{
"TOPIC"
,
TK_TOPIC
},
{
"TOPICS"
,
TK_TOPICS
},
{
"TOPICS"
,
TK_TOPICS
},
{
"TRIGGER"
,
TK_TRIGGER
},
{
"TSERIES"
,
TK_TSERIES
},
{
"TSERIES"
,
TK_TSERIES
},
{
"TTL"
,
TK_TTL
},
{
"TTL"
,
TK_TTL
},
{
"UNION"
,
TK_UNION
},
{
"UNION"
,
TK_UNION
},
...
@@ -194,9 +196,14 @@ static SKeyword keywordTable[] = {
...
@@ -194,9 +196,14 @@ static SKeyword keywordTable[] = {
{
"VGROUPS"
,
TK_VGROUPS
},
{
"VGROUPS"
,
TK_VGROUPS
},
{
"VNODES"
,
TK_VNODES
},
{
"VNODES"
,
TK_VNODES
},
{
"WAL"
,
TK_WAL
},
{
"WAL"
,
TK_WAL
},
{
"WATERMARK"
,
TK_WATERMARK
},
{
"WHERE"
,
TK_WHERE
},
{
"WINDOW_CLOSE"
,
TK_WINDOW_CLOSE
},
{
"_QENDTS"
,
TK_QENDTS
},
{
"_QSTARTTS"
,
TK_QSTARTTS
},
{
"_ROWTS"
,
TK_ROWTS
},
{
"_WDURATION"
,
TK_WDURATION
},
{
"_WDURATION"
,
TK_WDURATION
},
{
"_WENDTS"
,
TK_WENDTS
},
{
"_WENDTS"
,
TK_WENDTS
},
{
"WHERE"
,
TK_WHERE
},
{
"_WSTARTTS"
,
TK_WSTARTTS
},
{
"_WSTARTTS"
,
TK_WSTARTTS
},
// {"ID", TK_ID},
// {"ID", TK_ID},
// {"STRING", TK_STRING},
// {"STRING", TK_STRING},
...
@@ -260,7 +267,6 @@ static SKeyword keywordTable[] = {
...
@@ -260,7 +267,6 @@ static SKeyword keywordTable[] = {
// {"RESTRICT", TK_RESTRICT},
// {"RESTRICT", TK_RESTRICT},
// {"ROW", TK_ROW},
// {"ROW", TK_ROW},
// {"STATEMENT", TK_STATEMENT},
// {"STATEMENT", TK_STATEMENT},
// {"TRIGGER", TK_TRIGGER},
// {"VIEW", TK_VIEW},
// {"VIEW", TK_VIEW},
// {"SEMI", TK_SEMI},
// {"SEMI", TK_SEMI},
// {"PARTITIONS", TK_PARTITIONS},
// {"PARTITIONS", TK_PARTITIONS},
...
@@ -345,6 +351,9 @@ uint32_t tGetToken(const char* z, uint32_t* tokenId) {
...
@@ -345,6 +351,9 @@ uint32_t tGetToken(const char* z, uint32_t* tokenId) {
}
}
*
tokenId
=
TK_NK_COMMENT
;
*
tokenId
=
TK_NK_COMMENT
;
return
i
;
return
i
;
}
else
if
(
z
[
1
]
==
'>'
)
{
*
tokenId
=
TK_NK_ARROW
;
return
2
;
}
}
*
tokenId
=
TK_NK_MINUS
;
*
tokenId
=
TK_NK_MINUS
;
return
1
;
return
1
;
...
...
source/libs/parser/src/parTranslater.c
浏览文件 @
fd9e5208
...
@@ -770,92 +770,165 @@ static int32_t createAllColumns(STranslateContext* pCxt, SNodeList** pCols) {
...
@@ -770,92 +770,165 @@ static int32_t createAllColumns(STranslateContext* pCxt, SNodeList** pCols) {
return
TSDB_CODE_SUCCESS
;
return
TSDB_CODE_SUCCESS
;
}
}
static
bool
isFirstLastFunc
(
SFunctionNode
*
pFunc
)
{
static
bool
isMultiResFunc
(
SNode
*
pNode
)
{
return
(
FUNCTION_TYPE_FIRST
==
pFunc
->
funcType
||
FUNCTION_TYPE_LAST
==
pFunc
->
funcType
);
if
(
QUERY_NODE_FUNCTION
!=
nodeType
(
pNode
)
||
!
fmIsMultiResFunc
(((
SFunctionNode
*
)
pNode
)
->
funcId
))
{
}
static
bool
isFirstLastStar
(
SNode
*
pNode
)
{
if
(
QUERY_NODE_FUNCTION
!=
nodeType
(
pNode
)
||
!
isFirstLastFunc
((
SFunctionNode
*
)
pNode
))
{
return
false
;
return
false
;
}
}
SNodeList
*
pParameterList
=
((
SFunctionNode
*
)
pNode
)
->
pParameterList
;
SNodeList
*
pParameterList
=
((
SFunctionNode
*
)
pNode
)
->
pParameterList
;
if
(
LIST_LENGTH
(
pParameterList
)
!=
1
)
{
if
(
LIST_LENGTH
(
pParameterList
)
>
1
)
{
return
fals
e
;
return
tru
e
;
}
}
SNode
*
pParam
=
nodesListGetNode
(
pParameterList
,
0
);
SNode
*
pParam
=
nodesListGetNode
(
pParameterList
,
0
);
return
(
QUERY_NODE_COLUMN
==
nodeType
(
pParam
)
?
0
==
strcmp
(((
SColumnNode
*
)
pParam
)
->
colName
,
"*"
)
:
false
);
return
(
QUERY_NODE_COLUMN
==
nodeType
(
pParam
)
?
0
==
strcmp
(((
SColumnNode
*
)
pParam
)
->
colName
,
"*"
)
:
false
);
}
}
static
SNode
*
create
FirstLastFunc
(
SFunctionNode
*
pSrcFunc
,
SColumnNode
*
pCol
)
{
static
SNode
*
create
MultiResFunc
(
SFunctionNode
*
pSrcFunc
,
SExprNode
*
pExpr
)
{
SFunctionNode
*
pFunc
=
nodesMakeNode
(
QUERY_NODE_FUNCTION
);
SFunctionNode
*
pFunc
=
nodesMakeNode
(
QUERY_NODE_FUNCTION
);
if
(
NULL
==
pFunc
)
{
if
(
NULL
==
pFunc
)
{
return
NULL
;
return
NULL
;
}
}
pFunc
->
pParameterList
=
nodesMakeList
();
pFunc
->
pParameterList
=
nodesMakeList
();
if
(
NULL
==
pFunc
->
pParameterList
||
TSDB_CODE_SUCCESS
!=
nodesList
Append
(
pFunc
->
pParameterList
,
pCol
))
{
if
(
NULL
==
pFunc
->
pParameterList
||
TSDB_CODE_SUCCESS
!=
nodesList
StrictAppend
(
pFunc
->
pParameterList
,
nodesCloneNode
(
pExpr
)
))
{
nodesDestroyNode
(
pFunc
);
nodesDestroyNode
(
pFunc
);
return
NULL
;
return
NULL
;
}
}
pFunc
->
node
.
resType
=
p
Col
->
node
.
resType
;
pFunc
->
node
.
resType
=
p
Expr
->
resType
;
pFunc
->
funcId
=
pSrcFunc
->
funcId
;
pFunc
->
funcId
=
pSrcFunc
->
funcId
;
pFunc
->
funcType
=
pSrcFunc
->
funcType
;
pFunc
->
funcType
=
pSrcFunc
->
funcType
;
strcpy
(
pFunc
->
functionName
,
pSrcFunc
->
functionName
);
strcpy
(
pFunc
->
functionName
,
pSrcFunc
->
functionName
);
snprintf
(
pFunc
->
node
.
aliasName
,
sizeof
(
pFunc
->
node
.
aliasName
),
char
buf
[
TSDB_FUNC_NAME_LEN
+
TSDB_TABLE_NAME_LEN
+
TSDB_COL_NAME_LEN
];
(
FUNCTION_TYPE_FIRST
==
pSrcFunc
->
funcType
?
"first(%s)"
:
"last(%s)"
),
pCol
->
colName
);
int32_t
len
=
0
;
if
(
QUERY_NODE_COLUMN
==
nodeType
(
pExpr
))
{
SColumnNode
*
pCol
=
(
SColumnNode
*
)
pExpr
;
len
=
snprintf
(
buf
,
sizeof
(
buf
),
"%s(%s.%s)"
,
pSrcFunc
->
functionName
,
pCol
->
tableAlias
,
pCol
->
colName
);
}
else
{
len
=
snprintf
(
buf
,
sizeof
(
buf
),
"%s(%s)"
,
pSrcFunc
->
functionName
,
pExpr
->
aliasName
);
}
strncpy
(
pFunc
->
node
.
aliasName
,
buf
,
TMIN
(
len
,
sizeof
(
pFunc
->
node
.
aliasName
)
-
1
));
return
(
SNode
*
)
pFunc
;
return
(
SNode
*
)
pFunc
;
}
}
static
int32_t
createFirstLastAllCols
(
STranslateContext
*
pCxt
,
SFunctionNode
*
pSrcFunc
,
SNodeList
**
pOutput
)
{
static
int32_t
findTable
(
STranslateContext
*
pCxt
,
const
char
*
pTableAlias
,
STableNode
**
pOutput
)
{
SNodeList
*
pCols
=
NULL
;
SArray
*
pTables
=
taosArrayGetP
(
pCxt
->
pNsLevel
,
pCxt
->
currLevel
);
if
(
TSDB_CODE_SUCCESS
!=
createAllColumns
(
pCxt
,
&
pCols
))
{
size_t
nums
=
taosArrayGetSize
(
pTables
);
return
TSDB_CODE_OUT_OF_MEMORY
;
for
(
size_t
i
=
0
;
i
<
nums
;
++
i
)
{
STableNode
*
pTable
=
taosArrayGetP
(
pTables
,
i
);
if
(
NULL
==
pTableAlias
||
0
==
strcmp
(
pTable
->
tableAlias
,
pTableAlias
))
{
*
pOutput
=
pTable
;
return
TSDB_CODE_SUCCESS
;
}
}
}
return
generateDealNodeErrMsg
(
pCxt
,
TSDB_CODE_PAR_TABLE_NOT_EXIST
,
pTableAlias
);
}
SNodeList
*
pFuncs
=
nodesMakeList
();
static
int32_t
createTableAllCols
(
STranslateContext
*
pCxt
,
SColumnNode
*
pCol
,
SNodeList
**
pOutput
)
{
if
(
NULL
==
pFuncs
)
{
STableNode
*
pTable
=
NULL
;
return
TSDB_CODE_OUT_OF_MEMORY
;
int32_t
code
=
findTable
(
pCxt
,
pCol
->
tableAlias
,
&
pTable
);
if
(
TSDB_CODE_SUCCESS
==
code
&&
NULL
==
*
pOutput
)
{
*
pOutput
=
nodesMakeList
();
if
(
NULL
==
*
pOutput
)
{
code
=
generateSyntaxErrMsg
(
&
pCxt
->
msgBuf
,
TSDB_CODE_OUT_OF_MEMORY
);
}
}
SNode
*
pCol
=
NULL
;
FOREACH
(
pCol
,
pCols
)
{
if
(
TSDB_CODE_SUCCESS
!=
nodesListStrictAppend
(
pFuncs
,
createFirstLastFunc
(
pSrcFunc
,
(
SColumnNode
*
)
pCol
)))
{
nodesDestroyNode
(
pFuncs
);
return
TSDB_CODE_OUT_OF_MEMORY
;
}
}
if
(
TSDB_CODE_SUCCESS
==
code
)
{
code
=
createColumnNodeByTable
(
pCxt
,
pTable
,
*
pOutput
);
}
}
return
code
;
}
*
pOutput
=
pFuncs
;
static
bool
isStar
(
SNode
*
pNode
)
{
return
TSDB_CODE_SUCCESS
;
return
(
QUERY_NODE_COLUMN
==
nodeType
(
pNode
))
&&
(
'\0'
==
((
SColumnNode
*
)
pNode
)
->
tableAlias
[
0
])
&&
(
0
==
strcmp
(((
SColumnNode
*
)
pNode
)
->
colName
,
"*"
))
;
}
}
static
bool
isTableStar
(
SNode
*
pNode
)
{
static
bool
isTableStar
(
SNode
*
pNode
)
{
return
(
QUERY_NODE_COLUMN
==
nodeType
(
pNode
))
&&
(
0
==
strcmp
(((
SColumnNode
*
)
pNode
)
->
colName
,
"*"
));
return
(
QUERY_NODE_COLUMN
==
nodeType
(
pNode
))
&&
(
'\0'
!=
((
SColumnNode
*
)
pNode
)
->
tableAlias
[
0
])
&&
(
0
==
strcmp
(((
SColumnNode
*
)
pNode
)
->
colName
,
"*"
));
}
}
static
int32_t
createTableAllCols
(
STranslateContext
*
pCxt
,
SColumnNode
*
pCol
,
SNodeList
**
pOutput
)
{
static
int32_t
createMultiResFuncsParas
(
STranslateContext
*
pCxt
,
SNodeList
*
pSrcParas
,
SNodeList
**
pOutput
)
{
*
pOutput
=
nodesMakeList
();
int32_t
code
=
TSDB_CODE_SUCCESS
;
if
(
NULL
==
*
pOutput
)
{
return
generateSyntaxErrMsg
(
&
pCxt
->
msgBuf
,
TSDB_CODE_OUT_OF_MEMORY
);
SNodeList
*
pExprs
=
NULL
;
SNode
*
pPara
=
NULL
;
FOREACH
(
pPara
,
pSrcParas
)
{
if
(
isStar
(
pPara
))
{
code
=
createAllColumns
(
pCxt
,
&
pExprs
);
// The syntax definition ensures that * and other parameters do not appear at the same time
break
;
}
else
if
(
isTableStar
(
pPara
))
{
code
=
createTableAllCols
(
pCxt
,
(
SColumnNode
*
)
pPara
,
&
pExprs
);
}
else
{
code
=
nodesListMakeStrictAppend
(
&
pExprs
,
nodesCloneNode
(
pPara
));
}
}
bool
foundTable
=
false
;
SArray
*
pTables
=
taosArrayGetP
(
pCxt
->
pNsLevel
,
pCxt
->
currLevel
);
size_t
nums
=
taosArrayGetSize
(
pTables
);
for
(
size_t
i
=
0
;
i
<
nums
;
++
i
)
{
STableNode
*
pTable
=
taosArrayGetP
(
pTables
,
i
);
if
(
0
==
strcmp
(
pTable
->
tableAlias
,
pCol
->
tableAlias
))
{
int32_t
code
=
createColumnNodeByTable
(
pCxt
,
pTable
,
*
pOutput
);
if
(
TSDB_CODE_SUCCESS
!=
code
)
{
if
(
TSDB_CODE_SUCCESS
!=
code
)
{
break
;
}
}
if
(
TSDB_CODE_SUCCESS
==
code
)
{
*
pOutput
=
pExprs
;
}
else
{
nodesDestroyList
(
pExprs
);
}
return
code
;
return
code
;
}
static
int32_t
createMultiResFuncs
(
SFunctionNode
*
pSrcFunc
,
SNodeList
*
pExprs
,
SNodeList
**
pOutput
)
{
SNodeList
*
pFuncs
=
nodesMakeList
();
if
(
NULL
==
pFuncs
)
{
return
TSDB_CODE_OUT_OF_MEMORY
;
}
}
foundTable
=
true
;
int32_t
code
=
TSDB_CODE_SUCCESS
;
SNode
*
pExpr
=
NULL
;
FOREACH
(
pExpr
,
pExprs
)
{
code
=
nodesListStrictAppend
(
pFuncs
,
createMultiResFunc
(
pSrcFunc
,
(
SExprNode
*
)
pExpr
));
if
(
TSDB_CODE_SUCCESS
!=
code
)
{
break
;
break
;
}
}
}
}
if
(
!
foundTable
)
{
return
generateDealNodeErrMsg
(
pCxt
,
TSDB_CODE_PAR_TABLE_NOT_EXIST
,
pCol
->
tableAlias
);
if
(
TSDB_CODE_SUCCESS
==
code
)
{
*
pOutput
=
pFuncs
;
}
else
{
nodesDestroyList
(
pFuncs
);
}
}
return
TSDB_CODE_SUCCESS
;
return
code
;
}
static
int32_t
createMultiResFuncsFromStar
(
STranslateContext
*
pCxt
,
SFunctionNode
*
pSrcFunc
,
SNodeList
**
pOutput
)
{
SNodeList
*
pExprs
=
NULL
;
int32_t
code
=
createMultiResFuncsParas
(
pCxt
,
pSrcFunc
->
pParameterList
,
&
pExprs
);
if
(
TSDB_CODE_SUCCESS
==
code
)
{
code
=
createMultiResFuncs
(
pSrcFunc
,
pExprs
,
pOutput
);
}
if
(
TSDB_CODE_SUCCESS
!=
code
)
{
nodesDestroyList
(
pExprs
);
}
return
code
;
}
static
bool
isCountStar
(
SNode
*
pNode
)
{
if
(
QUERY_NODE_FUNCTION
!=
nodeType
(
pNode
)
||
1
!=
LIST_LENGTH
(((
SFunctionNode
*
)
pNode
)
->
pParameterList
))
{
return
false
;
}
SNode
*
pPara
=
nodesListGetNode
(((
SFunctionNode
*
)
pNode
)
->
pParameterList
,
0
);
return
(
QUERY_NODE_COLUMN
==
nodeType
(
pPara
)
&&
0
==
strcmp
(((
SColumnNode
*
)
pPara
)
->
colName
,
"*"
));
}
static
int32_t
rewriteCountStar
(
STranslateContext
*
pCxt
,
SFunctionNode
*
pCount
)
{
SColumnNode
*
pCol
=
nodesListGetNode
(
pCount
->
pParameterList
,
0
);
STableNode
*
pTable
=
NULL
;
int32_t
code
=
findTable
(
pCxt
,
(
'\0'
==
pCol
->
tableAlias
[
0
]
?
NULL
:
pCol
->
tableAlias
),
&
pTable
);
if
(
TSDB_CODE_SUCCESS
==
code
&&
QUERY_NODE_REAL_TABLE
==
nodeType
(
pTable
))
{
setColumnInfoBySchema
((
SRealTableNode
*
)
pTable
,
((
SRealTableNode
*
)
pTable
)
->
pMeta
->
schema
,
false
,
pCol
);
}
return
code
;
}
}
static
int32_t
translateStar
(
STranslateContext
*
pCxt
,
SSelectStmt
*
pSelect
)
{
static
int32_t
translateStar
(
STranslateContext
*
pCxt
,
SSelectStmt
*
pSelect
)
{
...
@@ -864,9 +937,9 @@ static int32_t translateStar(STranslateContext* pCxt, SSelectStmt* pSelect) {
...
@@ -864,9 +937,9 @@ static int32_t translateStar(STranslateContext* pCxt, SSelectStmt* pSelect) {
}
else
{
}
else
{
SNode
*
pNode
=
NULL
;
SNode
*
pNode
=
NULL
;
WHERE_EACH
(
pNode
,
pSelect
->
pProjectionList
)
{
WHERE_EACH
(
pNode
,
pSelect
->
pProjectionList
)
{
if
(
is
FirstLastStar
(
pNode
))
{
if
(
is
MultiResFunc
(
pNode
))
{
SNodeList
*
pFuncs
=
NULL
;
SNodeList
*
pFuncs
=
NULL
;
if
(
TSDB_CODE_SUCCESS
!=
create
FirstLastAllCols
(
pCxt
,
(
SFunctionNode
*
)
pNode
,
&
pFuncs
))
{
if
(
TSDB_CODE_SUCCESS
!=
create
MultiResFuncsFromStar
(
pCxt
,
(
SFunctionNode
*
)
pNode
,
&
pFuncs
))
{
return
TSDB_CODE_OUT_OF_MEMORY
;
return
TSDB_CODE_OUT_OF_MEMORY
;
}
}
INSERT_LIST
(
pSelect
->
pProjectionList
,
pFuncs
);
INSERT_LIST
(
pSelect
->
pProjectionList
,
pFuncs
);
...
@@ -880,6 +953,11 @@ static int32_t translateStar(STranslateContext* pCxt, SSelectStmt* pSelect) {
...
@@ -880,6 +953,11 @@ static int32_t translateStar(STranslateContext* pCxt, SSelectStmt* pSelect) {
INSERT_LIST
(
pSelect
->
pProjectionList
,
pCols
);
INSERT_LIST
(
pSelect
->
pProjectionList
,
pCols
);
ERASE_NODE
(
pSelect
->
pProjectionList
);
ERASE_NODE
(
pSelect
->
pProjectionList
);
continue
;
continue
;
}
else
if
(
isCountStar
(
pNode
))
{
int32_t
code
=
rewriteCountStar
(
pCxt
,
(
SFunctionNode
*
)
pNode
);
if
(
TSDB_CODE_SUCCESS
!=
code
)
{
return
code
;
}
}
}
WHERE_NEXT
;
WHERE_NEXT
;
}
}
...
@@ -2067,6 +2145,46 @@ static int32_t translateKillQuery(STranslateContext* pCxt, SKillStmt* pStmt) {
...
@@ -2067,6 +2145,46 @@ static int32_t translateKillQuery(STranslateContext* pCxt, SKillStmt* pStmt) {
return
buildCmdMsg
(
pCxt
,
TDMT_MND_KILL_QUERY
,
(
FSerializeFunc
)
tSerializeSKillQueryReq
,
&
killReq
);
return
buildCmdMsg
(
pCxt
,
TDMT_MND_KILL_QUERY
,
(
FSerializeFunc
)
tSerializeSKillQueryReq
,
&
killReq
);
}
}
static
int32_t
translateCreateStream
(
STranslateContext
*
pCxt
,
SCreateStreamStmt
*
pStmt
)
{
SCMCreateStreamReq
createReq
=
{
0
};
createReq
.
igExists
=
pStmt
->
ignoreExists
;
SName
name
=
{.
type
=
TSDB_TABLE_NAME_T
,
.
acctId
=
pCxt
->
pParseCxt
->
acctId
};
strcpy
(
name
.
dbname
,
pCxt
->
pParseCxt
->
db
);
strcpy
(
name
.
tname
,
pStmt
->
streamName
);
tNameExtractFullName
(
&
name
,
createReq
.
name
);
if
(
'\0'
!=
pStmt
->
targetTabName
[
0
])
{
strcpy
(
name
.
dbname
,
pStmt
->
targetDbName
);
strcpy
(
name
.
tname
,
pStmt
->
targetTabName
);
tNameExtractFullName
(
&
name
,
createReq
.
outputSTbName
);
}
int32_t
code
=
translateQuery
(
pCxt
,
pStmt
->
pQuery
);
if
(
TSDB_CODE_SUCCESS
==
code
)
{
code
=
nodesNodeToString
(
pStmt
->
pQuery
,
false
,
&
createReq
.
ast
,
NULL
);
}
if
(
TSDB_CODE_SUCCESS
==
code
)
{
createReq
.
sql
=
strdup
(
pCxt
->
pParseCxt
->
pSql
);
if
(
NULL
==
createReq
.
sql
)
{
code
=
TSDB_CODE_OUT_OF_MEMORY
;
}
}
if
(
TSDB_CODE_SUCCESS
==
code
)
{
code
=
buildCmdMsg
(
pCxt
,
TDMT_MND_CREATE_STREAM
,
(
FSerializeFunc
)
tSerializeSCMCreateStreamReq
,
&
createReq
);
}
tFreeSCMCreateStreamReq
(
&
createReq
);
return
code
;
}
static
int32_t
translateDropStream
(
STranslateContext
*
pCxt
,
SDropStreamStmt
*
pStmt
)
{
// todo
return
TSDB_CODE_SUCCESS
;
}
static
int32_t
translateQuery
(
STranslateContext
*
pCxt
,
SNode
*
pNode
)
{
static
int32_t
translateQuery
(
STranslateContext
*
pCxt
,
SNode
*
pNode
)
{
int32_t
code
=
TSDB_CODE_SUCCESS
;
int32_t
code
=
TSDB_CODE_SUCCESS
;
...
@@ -2160,6 +2278,12 @@ static int32_t translateQuery(STranslateContext* pCxt, SNode* pNode) {
...
@@ -2160,6 +2278,12 @@ static int32_t translateQuery(STranslateContext* pCxt, SNode* pNode) {
case
QUERY_NODE_KILL_QUERY_STMT
:
case
QUERY_NODE_KILL_QUERY_STMT
:
code
=
translateKillQuery
(
pCxt
,
(
SKillStmt
*
)
pNode
);
code
=
translateKillQuery
(
pCxt
,
(
SKillStmt
*
)
pNode
);
break
;
break
;
case
QUERY_NODE_CREATE_STREAM_STMT
:
code
=
translateCreateStream
(
pCxt
,
(
SCreateStreamStmt
*
)
pNode
);
break
;
case
QUERY_NODE_DROP_STREAM_STMT
:
code
=
translateDropStream
(
pCxt
,
(
SDropStreamStmt
*
)
pNode
);
break
;
default:
default:
break
;
break
;
}
}
...
...
source/libs/parser/src/sql.c
浏览文件 @
fd9e5208
因为 它太大了无法显示 source diff 。你可以改为
查看blob
。
source/libs/parser/test/mockCatalogService.cpp
浏览文件 @
fd9e5208
...
@@ -264,7 +264,7 @@ private:
...
@@ -264,7 +264,7 @@ private:
}
}
std
::
string
ftToString
(
int16_t
colid
,
int16_t
numOfColumns
)
const
{
std
::
string
ftToString
(
int16_t
colid
,
int16_t
numOfColumns
)
const
{
return
(
0
==
colid
?
"column"
:
(
colid
<
=
numOfColumns
?
"tag"
:
"column
"
));
return
(
0
==
colid
?
"column"
:
(
colid
<
numOfColumns
?
"column"
:
"tag
"
));
}
}
STableMeta
*
getTableSchemaMeta
(
const
std
::
string
&
db
,
const
std
::
string
&
tbname
)
const
{
STableMeta
*
getTableSchemaMeta
(
const
std
::
string
&
db
,
const
std
::
string
&
tbname
)
const
{
...
...
source/libs/parser/test/parserAstTest.cpp
浏览文件 @
fd9e5208
...
@@ -18,6 +18,7 @@
...
@@ -18,6 +18,7 @@
#include <gtest/gtest.h>
#include <gtest/gtest.h>
#include "parserTestUtil.h"
#include "parInt.h"
#include "parInt.h"
using
namespace
std
;
using
namespace
std
;
...
@@ -44,7 +45,7 @@ protected:
...
@@ -44,7 +45,7 @@ protected:
query_
=
nullptr
;
query_
=
nullptr
;
bool
res
=
runImpl
(
parseCode
,
translateCode
);
bool
res
=
runImpl
(
parseCode
,
translateCode
);
qDestroyQuery
(
query_
);
qDestroyQuery
(
query_
);
if
(
1
/*!res*/
)
{
if
(
!
res
||
g_isDump
)
{
dump
();
dump
();
}
}
return
res
;
return
res
;
...
@@ -57,7 +58,7 @@ private:
...
@@ -57,7 +58,7 @@ private:
int32_t
code
=
parse
(
&
cxt_
,
&
query_
);
int32_t
code
=
parse
(
&
cxt_
,
&
query_
);
if
(
code
!=
TSDB_CODE_SUCCESS
)
{
if
(
code
!=
TSDB_CODE_SUCCESS
)
{
parseErrStr_
=
string
(
"code:"
)
+
tstrerror
(
code
)
+
string
(
", msg:"
)
+
errMagBuf_
;
parseErrStr_
=
string
(
"code:"
)
+
tstrerror
(
code
)
+
string
(
", msg:"
)
+
errMagBuf_
;
return
(
terrno
==
parseCode
);
return
(
code
==
parseCode
);
}
}
if
(
TSDB_CODE_SUCCESS
!=
parseCode
)
{
if
(
TSDB_CODE_SUCCESS
!=
parseCode
)
{
return
false
;
return
false
;
...
@@ -66,7 +67,7 @@ private:
...
@@ -66,7 +67,7 @@ private:
code
=
translate
(
&
cxt_
,
query_
);
code
=
translate
(
&
cxt_
,
query_
);
if
(
code
!=
TSDB_CODE_SUCCESS
)
{
if
(
code
!=
TSDB_CODE_SUCCESS
)
{
translateErrStr_
=
string
(
"code:"
)
+
tstrerror
(
code
)
+
string
(
", msg:"
)
+
errMagBuf_
;
translateErrStr_
=
string
(
"code:"
)
+
tstrerror
(
code
)
+
string
(
", msg:"
)
+
errMagBuf_
;
return
(
terrno
==
translateCode
);
return
(
code
==
translateCode
);
}
}
translatedAstStr_
=
toString
(
query_
->
pRoot
);
translatedAstStr_
=
toString
(
query_
->
pRoot
);
code
=
calculateConstant
(
&
cxt_
,
query_
);
code
=
calculateConstant
(
&
cxt_
,
query_
);
...
@@ -243,6 +244,19 @@ TEST_F(ParserTest, selectPseudoColumn) {
...
@@ -243,6 +244,19 @@ TEST_F(ParserTest, selectPseudoColumn) {
ASSERT_TRUE
(
run
());
ASSERT_TRUE
(
run
());
}
}
TEST_F
(
ParserTest
,
selectMultiResFunc
)
{
setDatabase
(
"root"
,
"test"
);
// bind("SELECT last(*), first(*), last_row(*) FROM t1");
// ASSERT_TRUE(run());
bind
(
"SELECT last(c1, c2), first(t1.*), last_row(c3) FROM t1"
);
ASSERT_TRUE
(
run
());
bind
(
"SELECT last(t2.*), first(t1.c1, t2.*), last_row(t1.*, t2.*) FROM st1s1 t1, st1s2 t2 where t1.ts = t2.ts"
);
ASSERT_TRUE
(
run
());
}
TEST_F
(
ParserTest
,
selectClause
)
{
TEST_F
(
ParserTest
,
selectClause
)
{
setDatabase
(
"root"
,
"test"
);
setDatabase
(
"root"
,
"test"
);
...
@@ -726,6 +740,22 @@ TEST_F(ParserTest, dropTopic) {
...
@@ -726,6 +740,22 @@ TEST_F(ParserTest, dropTopic) {
ASSERT_TRUE
(
run
());
ASSERT_TRUE
(
run
());
}
}
TEST_F
(
ParserTest
,
createStream
)
{
setDatabase
(
"root"
,
"test"
);
bind
(
"create stream s1 as select * from t1"
);
ASSERT_TRUE
(
run
());
bind
(
"create stream if not exists s1 as select * from t1"
);
ASSERT_TRUE
(
run
());
bind
(
"create stream s1 into st1 as select * from t1"
);
ASSERT_TRUE
(
run
());
bind
(
"create stream if not exists s1 trigger window_close watermark 10s into st1 as select * from t1"
);
ASSERT_TRUE
(
run
());
}
TEST_F
(
ParserTest
,
explain
)
{
TEST_F
(
ParserTest
,
explain
)
{
setDatabase
(
"root"
,
"test"
);
setDatabase
(
"root"
,
"test"
);
...
...
source/libs/parser/test/parserTestMain.cpp
浏览文件 @
fd9e5208
...
@@ -15,12 +15,16 @@
...
@@ -15,12 +15,16 @@
#include <string>
#include <string>
#include <getopt.h>
#include <gtest/gtest.h>
#include <gtest/gtest.h>
#include "mockCatalog.h"
#include "mockCatalog.h"
#include "parserTestUtil.h"
#include "parToken.h"
#include "parToken.h"
#include "functionMgt.h"
#include "functionMgt.h"
bool
g_isDump
=
false
;
class
ParserEnv
:
public
testing
::
Environment
{
class
ParserEnv
:
public
testing
::
Environment
{
public:
public:
virtual
void
SetUp
()
{
virtual
void
SetUp
()
{
...
@@ -38,8 +42,27 @@ public:
...
@@ -38,8 +42,27 @@ public:
virtual
~
ParserEnv
()
{}
virtual
~
ParserEnv
()
{}
};
};
static
void
parseArg
(
int
argc
,
char
*
argv
[])
{
int
opt
=
0
;
const
char
*
optstring
=
""
;
static
struct
option
long_options
[]
=
{
{
"dump"
,
no_argument
,
NULL
,
'd'
},
{
0
,
0
,
0
,
0
}
};
while
((
opt
=
getopt_long
(
argc
,
argv
,
optstring
,
long_options
,
NULL
))
!=
-
1
)
{
switch
(
opt
)
{
case
'd'
:
g_isDump
=
true
;
break
;
default:
break
;
}
}
}
int
main
(
int
argc
,
char
*
argv
[])
{
int
main
(
int
argc
,
char
*
argv
[])
{
testing
::
AddGlobalTestEnvironment
(
new
ParserEnv
());
testing
::
AddGlobalTestEnvironment
(
new
ParserEnv
());
testing
::
InitGoogleTest
(
&
argc
,
argv
);
testing
::
InitGoogleTest
(
&
argc
,
argv
);
parseArg
(
argc
,
argv
);
return
RUN_ALL_TESTS
();
return
RUN_ALL_TESTS
();
}
}
source/libs/parser/test/parserTestUtil.h
0 → 100644
浏览文件 @
fd9e5208
/*
* 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/>.
*/
extern
bool
g_isDump
;
\ No newline at end of file
source/libs/planner/test/plannerTest.cpp
浏览文件 @
fd9e5208
...
@@ -196,14 +196,14 @@ TEST_F(PlannerTest, selectGroupBy) {
...
@@ -196,14 +196,14 @@ TEST_F(PlannerTest, selectGroupBy) {
bind
(
"SELECT count(*) FROM t1"
);
bind
(
"SELECT count(*) FROM t1"
);
ASSERT_TRUE
(
run
());
ASSERT_TRUE
(
run
());
// bind("SELECT c1, max(c3), min(c2
), count(*) FROM t1 GROUP BY c1");
bind
(
"SELECT c1, max(c3), min(c3
), count(*) FROM t1 GROUP BY c1"
);
//
ASSERT_TRUE(run());
ASSERT_TRUE
(
run
());
//
bind("SELECT c1 + c3, c1 + count(*) FROM t1 where c2 = 'abc' GROUP BY c1, c3");
bind
(
"SELECT c1 + c3, c1 + count(*) FROM t1 where c2 = 'abc' GROUP BY c1, c3"
);
//
ASSERT_TRUE(run());
ASSERT_TRUE
(
run
());
//
bind("SELECT c1 + c3, sum(c4 * c5) FROM t1 where concat(c2, 'wwww') = 'abcwww' GROUP BY c1 + c3");
bind
(
"SELECT c1 + c3, sum(c4 * c5) FROM t1 where concat(c2, 'wwww') = 'abcwww' GROUP BY c1 + c3"
);
//
ASSERT_TRUE(run());
ASSERT_TRUE
(
run
());
}
}
TEST_F
(
PlannerTest
,
selectSubquery
)
{
TEST_F
(
PlannerTest
,
selectSubquery
)
{
...
...
source/libs/scheduler/src/scheduler.c
浏览文件 @
fd9e5208
...
@@ -14,12 +14,12 @@
...
@@ -14,12 +14,12 @@
*/
*/
#include "catalog.h"
#include "catalog.h"
#include "command.h"
#include "query.h"
#include "query.h"
#include "schedulerInt.h"
#include "schedulerInt.h"
#include "tmsg.h"
#include "tmsg.h"
#include "tref.h"
#include "tref.h"
#include "trpc.h"
#include "trpc.h"
#include "command.h"
SSchedulerMgmt
schMgmt
=
{
0
};
SSchedulerMgmt
schMgmt
=
{
0
};
...
@@ -141,7 +141,6 @@ _return:
...
@@ -141,7 +141,6 @@ _return:
SCH_RET
(
code
);
SCH_RET
(
code
);
}
}
void
schFreeRpcCtx
(
SRpcCtx
*
pCtx
)
{
void
schFreeRpcCtx
(
SRpcCtx
*
pCtx
)
{
if
(
NULL
==
pCtx
)
{
if
(
NULL
==
pCtx
)
{
return
;
return
;
...
@@ -1254,7 +1253,8 @@ int32_t schGetTaskFromTaskList(SHashObj *pTaskList, uint64_t taskId, SSchTask **
...
@@ -1254,7 +1253,8 @@ int32_t schGetTaskFromTaskList(SHashObj *pTaskList, uint64_t taskId, SSchTask **
}
}
int32_t
schUpdateTaskExecNodeHandle
(
SSchTask
*
pTask
,
void
*
handle
,
int32_t
rspCode
)
{
int32_t
schUpdateTaskExecNodeHandle
(
SSchTask
*
pTask
,
void
*
handle
,
int32_t
rspCode
)
{
if
(
rspCode
||
NULL
==
pTask
->
execNodes
||
taosArrayGetSize
(
pTask
->
execNodes
)
>
1
||
taosArrayGetSize
(
pTask
->
execNodes
)
<=
0
)
{
if
(
rspCode
||
NULL
==
pTask
->
execNodes
||
taosArrayGetSize
(
pTask
->
execNodes
)
>
1
||
taosArrayGetSize
(
pTask
->
execNodes
)
<=
0
)
{
return
TSDB_CODE_SUCCESS
;
return
TSDB_CODE_SUCCESS
;
}
}
...
@@ -1264,7 +1264,6 @@ int32_t schUpdateTaskExecNodeHandle(SSchTask *pTask, void *handle, int32_t rspCo
...
@@ -1264,7 +1264,6 @@ int32_t schUpdateTaskExecNodeHandle(SSchTask *pTask, void *handle, int32_t rspCo
return
TSDB_CODE_SUCCESS
;
return
TSDB_CODE_SUCCESS
;
}
}
int32_t
schHandleCallback
(
void
*
param
,
const
SDataBuf
*
pMsg
,
int32_t
msgType
,
int32_t
rspCode
)
{
int32_t
schHandleCallback
(
void
*
param
,
const
SDataBuf
*
pMsg
,
int32_t
msgType
,
int32_t
rspCode
)
{
int32_t
code
=
0
;
int32_t
code
=
0
;
SSchTaskCallbackParam
*
pParam
=
(
SSchTaskCallbackParam
*
)
param
;
SSchTaskCallbackParam
*
pParam
=
(
SSchTaskCallbackParam
*
)
param
;
...
@@ -1282,13 +1281,15 @@ int32_t schHandleCallback(void *param, const SDataBuf *pMsg, int32_t msgType, in
...
@@ -1282,13 +1281,15 @@ int32_t schHandleCallback(void *param, const SDataBuf *pMsg, int32_t msgType, in
if
(
TDMT_VND_EXPLAIN_RSP
==
msgType
)
{
if
(
TDMT_VND_EXPLAIN_RSP
==
msgType
)
{
schGetTaskFromTaskList
(
pJob
->
succTasks
,
pParam
->
taskId
,
&
pTask
);
schGetTaskFromTaskList
(
pJob
->
succTasks
,
pParam
->
taskId
,
&
pTask
);
}
else
{
}
else
{
SCH_JOB_ELOG
(
"task not found in execTask list, refId:%"
PRIx64
", taskId:%"
PRIx64
,
pParam
->
refId
,
pParam
->
taskId
);
SCH_JOB_ELOG
(
"task not found in execTask list, refId:%"
PRIx64
", taskId:%"
PRIx64
,
pParam
->
refId
,
pParam
->
taskId
);
SCH_ERR_JRET
(
TSDB_CODE_SCH_INTERNAL_ERROR
);
SCH_ERR_JRET
(
TSDB_CODE_SCH_INTERNAL_ERROR
);
}
}
}
}
if
(
NULL
==
pTask
)
{
if
(
NULL
==
pTask
)
{
SCH_JOB_ELOG
(
"task not found in execList & succList, refId:%"
PRIx64
", taskId:%"
PRIx64
,
pParam
->
refId
,
pParam
->
taskId
);
SCH_JOB_ELOG
(
"task not found in execList & succList, refId:%"
PRIx64
", taskId:%"
PRIx64
,
pParam
->
refId
,
pParam
->
taskId
);
SCH_ERR_JRET
(
TSDB_CODE_SCH_INTERNAL_ERROR
);
SCH_ERR_JRET
(
TSDB_CODE_SCH_INTERNAL_ERROR
);
}
}
...
@@ -2682,7 +2683,6 @@ int32_t schedulerGetTasksStatus(int64_t job, SArray *pSub) {
...
@@ -2682,7 +2683,6 @@ int32_t schedulerGetTasksStatus(int64_t job, SArray *pSub) {
return
TSDB_CODE_SUCCESS
;
return
TSDB_CODE_SUCCESS
;
}
}
int32_t
scheduleCancelJob
(
int64_t
job
)
{
int32_t
scheduleCancelJob
(
int64_t
job
)
{
SSchJob
*
pJob
=
schAcquireJob
(
job
);
SSchJob
*
pJob
=
schAcquireJob
(
job
);
if
(
NULL
==
pJob
)
{
if
(
NULL
==
pJob
)
{
...
@@ -2734,15 +2734,17 @@ void schedulerFreeTaskList(SArray *taskList) {
...
@@ -2734,15 +2734,17 @@ void schedulerFreeTaskList(SArray *taskList) {
void
schedulerDestroy
(
void
)
{
void
schedulerDestroy
(
void
)
{
if
(
schMgmt
.
jobRef
)
{
if
(
schMgmt
.
jobRef
)
{
SSchJob
*
pJob
=
taosIterateRef
(
schMgmt
.
jobRef
,
0
);
SSchJob
*
pJob
=
taosIterateRef
(
schMgmt
.
jobRef
,
0
);
int64_t
refId
=
0
;
while
(
pJob
)
{
while
(
pJob
)
{
refId
=
pJob
->
refId
;
taosRemoveRef
(
schMgmt
.
jobRef
,
pJob
->
refId
);
taosRemoveRef
(
schMgmt
.
jobRef
,
pJob
->
refId
);
pJob
=
taosIterateRef
(
schMgmt
.
jobRef
,
pJob
->
refId
);
pJob
=
taosIterateRef
(
schMgmt
.
jobRef
,
refId
);
}
}
taosCloseRef
(
schMgmt
.
jobRef
);
taosCloseRef
(
schMgmt
.
jobRef
);
schMgmt
.
jobRef
=
0
;
schMgmt
.
jobRef
=
0
;
}
}
}
}
tests/script/runAllSimCases.sh
浏览文件 @
fd9e5208
#
!/bin/bash
!
/bin/bash
##################################################
##################################################
#
#
...
@@ -8,14 +8,74 @@
...
@@ -8,14 +8,74 @@
set
-e
set
-e
#set -x
#set -x
VALGRIND
=
0
LOG_BK_DIR
=
/data/valgrind_log_backup
# 192.168.0.203
while
getopts
"v:r"
arg
do
case
$arg
in
v
)
VALGRIND
=
1
;;
r
)
LOG_BK_DIR
=
$(
echo
$OPTARG
)
;;
?
)
#unknow option
echo
"unkonw argument"
exit
1
;;
esac
done
echo
"VALGRIND:
$VALGRIND
, LOG_BK_DIR:
$LOG_BK_DIR
"
CURRENT_DIR
=
`
pwd
`
TSIM_LOG_DIR
=
$CURRENT_DIR
/../../sim/tsim/log
TAOSD_LOG_DIR
=
$CURRENT_DIR
/../../sim
echo
"tsim log dir:
$TSIM_LOG_DIR
"
echo
"taosd log dir:
$TAOSD_LOG_DIR
"
if
[[
$VALGRIND
-eq
1
]]
;
then
if
[
-d
${
LOG_BK_DIR
}
]
;
then
rm
-rf
${
LOG_BK_DIR
}
/
*
else
mkdir
-p
$LOG_BK_DIR
/
fi
fi
while
read
line
while
read
line
do
do
firstChar
=
`
echo
${
line
:0:1
}
`
firstChar
=
`
echo
${
line
:0:1
}
`
if
[[
-n
"
$line
"
]]
&&
[[
$firstChar
!=
"#"
]]
;
then
if
[[
-n
"
$line
"
]]
&&
[[
$firstChar
!=
"#"
]]
;
then
if
[[
$VALGRIND
-eq
1
]]
;
then
echo
"========
$line
-v ========"
$line
-v
# move all valgrind log files of the sim case to valgrind back dir
# get current sim case name for
result
=
`
echo
${
line
%sim*
}
`
result
=
`
echo
${
result
#*/
}
`
result
=
`
echo
${
result
#*/
}
`
result
=
`
echo
${
result
////-
}
`
tsimLogFile
=
valgrind-
${
result
}
sim.log
echo
"cp
${
TSIM_LOG_DIR
}
/valgrind-tsim.log
${
LOG_BK_DIR
}
/
${
tsimLogFile
}
"
cp
${
TSIM_LOG_DIR
}
/valgrind-tsim.log
${
LOG_BK_DIR
}
/
${
tsimLogFile
}
cp
${
TAOSD_LOG_DIR
}
/dnode1/log/valgrind
*
.log
${
LOG_BK_DIR
}
/
||
:
cp
${
TAOSD_LOG_DIR
}
/dnode2/log/valgrind
*
.log
${
LOG_BK_DIR
}
/
||
:
cp
${
TAOSD_LOG_DIR
}
/dnode3/log/valgrind
*
.log
${
LOG_BK_DIR
}
/
||
:
cp
${
TAOSD_LOG_DIR
}
/dnode4/log/valgrind
*
.log
${
LOG_BK_DIR
}
/
||
:
cp
${
TAOSD_LOG_DIR
}
/dnode5/log/valgrind
*
.log
${
LOG_BK_DIR
}
/
||
:
cp
${
TAOSD_LOG_DIR
}
/dnode6/log/valgrind
*
.log
${
LOG_BK_DIR
}
/
||
:
cp
${
TAOSD_LOG_DIR
}
/dnode7/log/valgrind
*
.log
${
LOG_BK_DIR
}
/
||
:
cp
${
TAOSD_LOG_DIR
}
/dnode8/log/valgrind
*
.log
${
LOG_BK_DIR
}
/
||
:
cp
${
TAOSD_LOG_DIR
}
/dnode9/log/valgrind
*
.log
${
LOG_BK_DIR
}
/
||
:
else
echo
"========
$line
========"
echo
"========
$line
========"
$line
$line
fi
fi
fi
done
< ./jenkins/basic.txt
done
< ./jenkins/basic.txt
tests/script/sh/exec.sh
浏览文件 @
fd9e5208
...
@@ -97,13 +97,14 @@ if [ "$CLEAR_OPTION" = "clear" ]; then
...
@@ -97,13 +97,14 @@ if [ "$CLEAR_OPTION" = "clear" ]; then
fi
fi
if
[
"
$EXEC_OPTON
"
=
"start"
]
;
then
if
[
"
$EXEC_OPTON
"
=
"start"
]
;
then
echo
"ExcuteCmd:"
$EXE_DIR
/taosd
-c
$CFG_DIR
#echo "ExcuteCmd:" $EXE_DIR/taosd -c $CFG_DIR
if
[
"
$VALGRIND_OPTION
"
=
"true"
]
;
then
if
[
"
$VALGRIND_OPTION
"
=
"true"
]
;
then
TT
=
`
date
+%s
`
TT
=
`
date
+%s
`
mkdir
${
LOG_DIR
}
/
${
TT
}
#mkdir ${LOG_DIR}/${TT}
nohup
valgrind
--log-file
=
${
LOG_DIR
}
/
${
TT
}
/valgrind.log
--tool
=
memcheck
--leak-check
=
full
--show-reachable
=
no
--track-origins
=
yes
--show-leak-kinds
=
all
-v
--workaround-gcc296-bugs
=
yes
$EXE_DIR
/taosd
-c
$CFG_DIR
>
/dev/null 2>&1 &
echo
"nohup valgrind --log-file=
${
LOG_DIR
}
/valgrind-taosd-
${
TT
}
.log --tool=memcheck --leak-check=full --show-reachable=no --track-origins=yes --show-leak-kinds=all -v --workaround-gcc296-bugs=yes
$EXE_DIR
/taosd -c
$CFG_DIR
> /dev/null 2>&1 &"
nohup
valgrind
--log-file
=
${
LOG_DIR
}
/valgrind-taosd-
${
TT
}
.log
--tool
=
memcheck
--leak-check
=
full
--show-reachable
=
no
--track-origins
=
yes
--show-leak-kinds
=
all
-v
--workaround-gcc296-bugs
=
yes
$EXE_DIR
/taosd
-c
$CFG_DIR
>
/dev/null 2>&1 &
else
else
echo
"nohup
$EXE_DIR
/taosd -c
$CFG_DIR
> /dev/null 2>&1 &"
nohup
$EXE_DIR
/taosd
-c
$CFG_DIR
>
/dev/null 2>&1 &
nohup
$EXE_DIR
/taosd
-c
$CFG_DIR
>
/dev/null 2>&1 &
fi
fi
...
...
tests/script/test.sh
浏览文件 @
fd9e5208
...
@@ -126,7 +126,7 @@ if [ -n "$FILE_NAME" ]; then
...
@@ -126,7 +126,7 @@ if [ -n "$FILE_NAME" ]; then
echo
"------------------------------------------------------------------------"
echo
"------------------------------------------------------------------------"
if
[
$VALGRIND
-eq
1
]
;
then
if
[
$VALGRIND
-eq
1
]
;
then
echo
valgrind
--tool
=
memcheck
--leak-check
=
full
--show-reachable
=
no
--track-origins
=
yes
--show-leak-kinds
=
all
-v
--workaround-gcc296-bugs
=
yes
--log-file
=
${
CODE_DIR
}
/../script/valgrind.log
$PROGRAM
-c
$CFG_DIR
-f
$FILE_NAME
-v
echo
valgrind
--tool
=
memcheck
--leak-check
=
full
--show-reachable
=
no
--track-origins
=
yes
--show-leak-kinds
=
all
-v
--workaround-gcc296-bugs
=
yes
--log-file
=
${
CODE_DIR
}
/../script/valgrind.log
$PROGRAM
-c
$CFG_DIR
-f
$FILE_NAME
-v
valgrind
--tool
=
memcheck
--leak-check
=
full
--show-reachable
=
no
--track-origins
=
yes
--show-leak-kinds
=
all
-v
--workaround-gcc296-bugs
=
yes
--log-file
=
${
CODE_DIR
}
/../script/valgrind
.log
$PROGRAM
-c
$CFG_DIR
-f
$FILE_NAME
-v
valgrind
--tool
=
memcheck
--leak-check
=
full
--show-reachable
=
no
--track-origins
=
yes
--show-leak-kinds
=
all
-v
--workaround-gcc296-bugs
=
yes
--log-file
=
${
LOG_DIR
}
/valgrind-tsim
.log
$PROGRAM
-c
$CFG_DIR
-f
$FILE_NAME
-v
else
else
if
[[
$MULTIPROCESS
-eq
1
]]
;
then
if
[[
$MULTIPROCESS
-eq
1
]]
;
then
echo
"ExcuteCmd(multiprocess):"
$PROGRAM
-m
-c
$CFG_DIR
-f
$FILE_NAME
echo
"ExcuteCmd(multiprocess):"
$PROGRAM
-m
-c
$CFG_DIR
-f
$FILE_NAME
...
...
tests/script/tsim/insert/basic0.sim
浏览文件 @
fd9e5208
...
@@ -537,4 +537,4 @@ endi
...
@@ -537,4 +537,4 @@ endi
#endi
#endi
#
system sh/exec.sh -n dnode1 -s stop -x SIGINT
system sh/exec.sh -n dnode1 -s stop -x SIGINT
tests/script/tsim/query/stddev.sim
浏览文件 @
fd9e5208
system sh/stop_dnodes.sh
system sh/stop_dnodes.sh
system sh/deploy.sh -n dnode1 -i 1
system sh/deploy.sh -n dnode1 -i 1
system sh/cfg.sh -n dnode1 -c walLevel -v 1
system sh/exec.sh -n dnode1 -s start
system sh/exec.sh -n dnode1 -s start
$loop_cnt = 0
$loop_cnt = 0
...
@@ -12,6 +10,7 @@ check_dnode_ready:
...
@@ -12,6 +10,7 @@ check_dnode_ready:
print ====> dnode not ready!
print ====> dnode not ready!
return -1
return -1
endi
endi
sql show dnodes
sql show dnodes
print ===> $rows $data00 $data01 $data02 $data03 $data04 $data05
print ===> $rows $data00 $data01 $data02 $data03 $data04 $data05
if $data00 != 1 then
if $data00 != 1 then
...
@@ -23,107 +22,409 @@ endi
...
@@ -23,107 +22,409 @@ endi
sql connect
sql connect
$dbPrefix = db
print =============== create database
$tbPrefix = ctb
sql create database db
$mtPrefix = stb
sql show databases
$tbNum = 10
if $rows != 3 then
$rowNum = 20
return -1
$totalNum = 200
endi
sql use db
print =============== create super table and child table
sql create table stb1 (ts timestamp, c1 int, c2 bigint, c3 smallint, c4 tinyint, c5 float, c6 double, c7 bool, c8 binary(16),c9 nchar(32), c10 timestamp) tags (t1 int)
sql show stables
print $rows $data00 $data01 $data02
if $rows != 1 then
return -1
endi
sql create table ct1 using stb1 tags ( 1 )
sql create table ct2 using stb1 tags ( 2 )
sql create table ct3 using stb1 tags ( 3 )
sql create table ct4 using stb1 tags ( 4 )
sql show tables
print $rows $data00 $data10 $data20
if $rows != 4 then
return -1
endi
sql create table t1 (ts timestamp, c1 int, c2 bigint, c3 smallint, c4 tinyint, c5 float, c6 double, c7 bool, c8 binary(16),c9 nchar(32), c10 timestamp)
print =============== insert data into child table ct1 (s)
sql insert into ct1 values ( '2022-01-01 01:01:01.000', 1, 11111, 111, 11, 1.11, 11.11, 1, "binary1", "nchar1", now+1a )
sql insert into ct1 values ( '2022-01-01 01:01:06.000', 2, 22222, 222, 22, 2.22, 22.22, 0, "binary2", "nchar2", now+2a )
sql insert into ct1 values ( '2022-01-01 01:01:10.000', 3, 33333, 333, 33, 3.33, 33.33, 0, "binary3", "nchar3", now+3a )
sql insert into ct1 values ( '2022-01-01 01:01:16.000', 4, 44444, 444, 44, 4.44, 44.44, 1, "binary4", "nchar4", now+4a )
sql insert into ct1 values ( '2022-01-01 01:01:20.000', 5, 55555, 555, 55, 5.55, 55.55, 0, "binary5", "nchar5", now+5a )
sql insert into ct1 values ( '2022-01-01 01:01:26.000', 6, 66666, 666, 66, 6.66, 66.66, 1, "binary6", "nchar6", now+6a )
sql insert into ct1 values ( '2022-01-01 01:01:30.000', 7, 00000, 000, 00, 0.00, 00.00, 1, "binary7", "nchar7", now+7a )
sql insert into ct1 values ( '2022-01-01 01:01:36.000', 8, -88888, -888, -88, -8.88, -88.88, 0, "binary8", "nchar8", now+8a )
print =============== insert data into child table ct4 (y)
sql insert into ct4 values ( '2019-01-21 01:01:01.000', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL )
sql insert into ct4 values ( '2019-10-21 01:01:01.000', 1, 11111, 111, 11, 1.11, 11.11, 1, "binary1", "nchar1", now+1a )
sql insert into ct4 values ( '2019-12-31 01:01:01.000', 2, 22222, 222, 22, 2.22, 22.22, 0, "binary2", "nchar2", now+2a )
sql insert into ct4 values ( '2020-01-01 01:01:06.000', 3, 33333, 333, 33, 3.33, 33.33, 0, "binary3", "nchar3", now+3a )
sql insert into ct4 values ( '2020-05-07 01:01:10.000', 4, 44444, 444, 44, 4.44, 44.44, 1, "binary4", "nchar4", now+4a )
sql insert into ct4 values ( '2020-09-30 01:01:16.000', 5, 55555, 555, 55, 5.55, 55.55, 0, "binary5", "nchar5", now+5a )
sql insert into ct4 values ( '2020-12-21 01:01:01.000', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL )
sql insert into ct4 values ( '2021-02-01 01:01:20.000', 6, 66666, 666, 66, 6.66, 66.66, 1, "binary6", "nchar6", now+6a )
sql insert into ct4 values ( '2021-10-28 01:01:26.000', 7, 00000, 000, 00, 0.00, 00.00, 1, "binary7", "nchar7", "1970-01-01 08:00:00.000" )
sql insert into ct4 values ( '2021-12-01 01:01:30.000', 8, -88888, -888, -88, -8.88, -88.88, 0, "binary8", "nchar8", "1969-01-01 01:00:00.000" )
sql insert into ct4 values ( '2022-02-31 01:01:36.000', 9, -99999999999999999, -999, -99, -9.99, -999999999999999999999.99, 1, "binary9", "nchar9", "1900-01-01 00:00:00.000" )
sql insert into ct4 values ( '2022-05-21 01:01:01.000', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL )
print =============== insert data into child table t1
sql insert into t1 values ( '2020-10-21 01:01:01.000', 1, 11111, 111, 11, 1.11, 11.11, 1, "binary1", "nchar1", now+1a )
sql insert into t1 values ( '2020-12-31 01:01:01.000', 2, 22222, 222, 22, 2.22, 22.22, 0, "binary2", "nchar2", now+2a )
sql insert into t1 values ( '2021-01-01 01:01:06.000', 3, 33333, 333, 33, 3.33, 33.33, 0, "binary3", "nchar3", now+3a )
sql insert into t1 values ( '2021-05-07 01:01:10.000', 4, 44444, 444, 44, 4.44, 44.44, 1, "binary4", "nchar4", now+4a )
sql insert into t1 values ( '2021-09-30 01:01:16.000', 5, 55555, 555, 55, 5.55, 55.55, 0, "binary5", "nchar5", now+5a )
sql insert into t1 values ( '2022-02-01 01:01:20.000', 6, 66666, 666, 66, 6.66, 66.66, 1, "binary6", "nchar6", now+6a )
sql insert into t1 values ( '2022-10-28 01:01:26.000', 7, 00000, 000, 00, 0.00, 00.00, 1, "binary7", "nchar7", "1970-01-01 08:00:00.000" )
sql insert into t1 values ( '2022-12-01 01:01:30.000', 8, -88888, -888, -88, -8.88, -88.88, 0, "binary8", "nchar8", "1969-01-01 01:00:00.000" )
sql insert into t1 values ( '2022-12-31 01:01:36.000', 9, -99999999999999999, -999, -99, -9.99, -999999999999999999999.99, 1, "binary9", "nchar9", "1900-01-01 00:00:00.000" )
print ================ start query ======================
print =============== step1
print =============== step1
$i = 0
print =====sql : select stddev(c1) as b from ct4
$db = $dbPrefix . $i
sql select stddev(c1) as b from ct4
$mt = $mtPrefix . $i
print ===> $rows
if $rows != 1 then
return -1
endi
print =====sql : select stddev(c1) as b from t1
sql select stddev(c1) as b from t1
print ===> $rows
if $rows != 1 then
return -1
endi
print =====sql : select _wstartts, stddev(c1) as b from ct4 interval(1y)
sql select _wstartts, stddev(c1) as b from ct4 interval(1y)
print ===> $rows
if $rows != 4 then
return -1
endi
print =====sql : select _wstartts, stddev(c1) as b from t1 interval(1y)
sql select _wstartts, stddev(c1) as b from t1 interval(1y)
print ===> $rows
if $rows != 3 then
return -1
endi
print =====select _wstartts, stddev(c1) as b from ct4 where c1 <= 6 interval(180d)
sql select _wstartts, stddev(c1) as b from ct4 where c1 <= 6 interval(180d)
# print ===> $rows
# if $rows != 3 then
# return -1
# endi
print =====select _wstartts, stddev(c1) as b from t1 where c1 <= 6 interval(180d)
sql select _wstartts, stddev(c1) as b from t1 where c1 <= 6 interval(180d)
# print ===> $rows
# if $rows != 3 then
# return -1
# endi
print =====sql : select stddev(c1) a1, sum(c1) b1 from ct4
sql select stddev(c1) a1, sum(c1) b1 from ct4
print ===> $rows
if $rows != 1 then
return -1
endi
print =====sql : select stddev(c1) a1, sum(c1) b1 from t1
sql select stddev(c1) a1, sum(c1) b1 from t1
print ===> $rows
if $rows != 1 then
return -1
endi
print =====sql : select stddev(c1)+sum(c1) b1 from ct4
sql select stddev(c1)+sum(c1) b1 from ct4
print ===> $rows
if $rows != 1 then
return -1
endi
print =====sql : select stddev(c1)+sum(c1) b1 from t1
sql select stddev(c1)+sum(c1) b1 from t1
print ===> $rows
if $rows != 1 then
return -1
endi
print =====sql : select stddev(c2) from ct4
sql select stddev(c2) from ct4
print ===> $rows
if $rows != 1 then
return -1
endi
print =====sql : select stddev(c2) from t1
sql select stddev(c2) from t1
print ===> $rows
if $rows != 1 then
return -1
endi
print =====sql : select stddev(c3) from ct4
sql select stddev(c3) from ct4
print ===> $rows
if $rows != 1 then
return -1
endi
print =====sql : select stddev(c3) from t1
sql select stddev(c3) from t1
print ===> $rows
if $rows != 1 then
return -1
endi
print =====sql : select stddev(c4) from ct4
sql select stddev(c4) from ct4
print ===> $rows
if $rows != 1 then
return -1
endi
print =====sql : select stddev(c4) from t1
sql select stddev(c4) from t1
print ===> $rows
if $rows != 1 then
return -1
endi
print =====sql : select stddev(c5) from ct4
sql select stddev(c5) from ct4
print ===> $rows
if $rows != 1 then
return -1
endi
print =====sql : select stddev(c5) from t1
sql select stddev(c5) from t1
print ===> $rows
if $rows != 1 then
return -1
endi
print =====sql : select stddev(c6) from ct4
sql select stddev(c6) from ct4
print ===> $rows
if $rows != 1 then
return -1
endi
sql drop database $db -x step1
print =====sql : select stddev(c6) from t1
step1:
sql select stddev(c6) from t1
sql create database $db
print ===> $rows
sql use $db
if $rows != 1 then
sql create table $mt (ts timestamp, tbcol int) TAGS(tgcol int)
return -1
endi
$i = 0
print =====sql : select stddev(c7) from ct4
while $i < $tbNum
sql_error select stddev(c7) from ct4
$tb = $tbPrefix . $i
# print ===> $rows
sql create table $tb using $mt tags( $i )
# if $rows != 1 then
# return -1
# endi
$x = 0
print =====sql : select stddev(c7) from t1
while $x < $rowNum
sql_error select stddev(c7) from t1
$cc = $x * 60000
# print ===> $rows
$ms = 1601481600000 + $cc
# if $rows != 1 then
# return -1
# endi
sql insert into $tb values ($ms , $x )
#=================================================
$x = $x + 1
print =============== stop and restart taosd
endw
system sh/exec.sh -n dnode1 -s stop -x SIGINT
system sh/exec.sh -n dnode1 -s start
$i = $i + 1
$loop_cnt = 0
endw
check_dnode_ready_0:
$loop_cnt = $loop_cnt + 1
sleep 200
if $loop_cnt == 10 then
print ====> dnode not ready!
return -1
endi
sleep 100
sql show dnodes
print ===> $rows $data00 $data01 $data02 $data03 $data04 $data05
if $data00 != 1 then
return -1
endi
if $data04 != ready then
goto check_dnode_ready_0
endi
print =============== step2
print =============== step2 after wal
$i = 1
print =====sql : select stddev(c1) as b from ct4
$tb = $tbPrefix . $i
sql select stddev(c1) as b from ct4
print ===> $rows
if $rows != 1 then
return -1
endi
sql select stddev(tbcol) from $tb
print =====sql : select stddev(c1) as b from t1
print ===> $data00
sql select stddev(c1) as b from t1
if $data00 != 5.766281297 then
print ===> $rows
if $rows != 1 then
return -1
return -1
endi
endi
print =============== step3
print =====sql : select _wstartts, stddev(c1) as b from ct4 interval(1y)
$cc = 4 * 60000
sql select _wstartts, stddev(c1) as b from ct4 interval(1y)
$ms = 1601481600000 + $cc
print ===> $rows
if $rows != 4 then
return -1
endi
print ===
> select stddev(tbcol) from $tb where ts <= $ms
print ===
==sql : select _wstartts, stddev(c1) as b from t1 interval(1y)
sql select
stddev(tbcol) from $tb where ts <= $ms
sql select
_wstartts, stddev(c1) as b from t1 interval(1y)
print ===
=> $data00 $data01 $data02 $data03 $data04 $data05
print ===
> $rows
if $
data00 != 1.414213562 then
if $
rows != 3 then
return -1
return -1
endi
endi
print =====
========== step4
print =====
select _wstartts, stddev(c1) as b from ct4 where c1 <= 6 interval(180d)
sql select
stddev(tbcol) as b from $tb
sql select
_wstartts, stddev(c1) as b from ct4 where c1 <= 6 interval(180d)
print ===> $
data00
print ===> $
rows
if $
data00 != 5.766281297 then
if $
rows != 3 then
return -1
return -1
endi
endi
print =============== step5
print =====select _wstartts, stddev(c1) as b from t1 where c1 <= 6 interval(180d)
sql select _wstartts, stddev(tbcol) as b from $tb interval(1m)
sql select _wstartts, stddev(c1) as b from t1 where c1 <= 6 interval(180d)
print ===> $data01
print ===> $rows
if $data01 != 0.000000000 then
if $rows != 3 then
print expect 0.000000000, actual: $data01
return -1
return -1
endi
endi
sql select _wstartts, stddev(tbcol) as b from $tb interval(1d)
print =====sql : select stddev(c1) a1, sum(c1) b1 from ct4
print ===> $data01
sql select stddev(c1) a1, sum(c1) b1 from ct4
if $data01 != 5.766281297 then
print ===> $rows
if $rows != 1 then
return -1
return -1
endi
endi
print =============== step6
print =====sql : select stddev(c1) a1, sum(c1) b1 from t1
$cc = 4 * 60000
sql select stddev(c1) a1, sum(c1) b1 from t1
$ms = 1601481600000 + $cc
print ===> $rows
if $rows != 1 then
return -1
endi
print
select _wstartts, stddev(tbcol) as b from $tb where ts <= $ms interval(1m)
print
=====sql : select stddev(c1)+sum(c1) b1 from ct4
sql
select _wstartts, stddev(tbcol) as b from $tb where ts <= $ms interval(1m)
sql
select stddev(c1)+sum(c1) b1 from ct4
print ===> $
data01
print ===> $
rows
if $
data01 != 0.000000000 then
if $
rows != 1 then
return -1
return -1
endi
endi
print $data00 , $data10 , $data20 , $data30 , $data40 , $data50 , $data60
print =====sql : select stddev(c1)+sum(c1) b1 from t1
sql select stddev(c1)+sum(c1) b1 from t1
print ===> $rows
if $rows != 1 then
return -1
endi
if $rows != 5 then
print =====sql : select stddev(c2) from ct4
print expect 5, actual: $rows
sql select stddev(c2) from ct4
print ===> $rows
if $rows != 1 then
return -1
return -1
endi
endi
print =====sql : select stddev(c2) from t1
sql select stddev(c2) from t1
print ===> $rows
if $rows != 1 then
return -1
endi
print =====sql : select stddev(c3) from ct4
sql select stddev(c3) from ct4
print ===> $rows
if $rows != 1 then
return -1
endi
print =====sql : select stddev(c3) from t1
sql select stddev(c3) from t1
print ===> $rows
if $rows != 1 then
return -1
endi
print =====sql : select stddev(c4) from ct4
sql select stddev(c4) from ct4
print ===> $rows
if $rows != 1 then
return -1
endi
print =====sql : select stddev(c4) from t1
sql select stddev(c4) from t1
print ===> $rows
if $rows != 1 then
return -1
endi
print =====sql : select stddev(c5) from ct4
sql select stddev(c5) from ct4
print ===> $rows
if $rows != 1 then
return -1
endi
print =====sql : select stddev(c5) from t1
sql select stddev(c5) from t1
print ===> $rows
if $rows != 1 then
return -1
endi
print =====sql : select stddev(c6) from ct4
sql select stddev(c6) from ct4
print ===> $rows
if $rows != 1 then
return -1
endi
print =====sql : select stddev(c6) from t1
sql select stddev(c6) from t1
print ===> $rows
if $rows != 1 then
return -1
endi
print =====sql : select stddev(c7) from ct4
sql_error select stddev(c7) from ct4
# print ===> $rows
# if $rows != 1 then
# return -1
# endi
print =====sql : select stddev(c7) from t1
sql_error select stddev(c7) from t1
# print ===> $rows
# if $rows != 1 then
# return -1
# endi
print =============== clear
print =============== clear
sql drop database
$
db
sql drop database db
sql show databases
sql show databases
if $rows !=
1
then
if $rows !=
2
then
return -1
return -1
endi
endi
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录