Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
8bca99da
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看板
提交
8bca99da
编写于
7月 19, 2022
作者:
P
plum-lihui
浏览文件
操作
浏览文件
下载
差异文件
Merge branch '3.0' into test3.0/lihui
上级
b255b15a
68dd74bc
变更
54
展开全部
隐藏空白更改
内联
并排
Showing
54 changed file
with
2510 addition
and
2253 deletion
+2510
-2253
include/client/taos.h
include/client/taos.h
+1
-1
include/libs/executor/executor.h
include/libs/executor/executor.h
+1
-1
include/util/taoserror.h
include/util/taoserror.h
+7
-18
source/client/src/clientImpl.c
source/client/src/clientImpl.c
+3
-2
source/client/src/tmq.c
source/client/src/tmq.c
+8
-6
source/client/test/smlTest.cpp
source/client/test/smlTest.cpp
+7
-3
source/dnode/mnode/impl/src/mndSync.c
source/dnode/mnode/impl/src/mndSync.c
+5
-3
source/dnode/mnode/impl/test/sdb/sdbTest.cpp
source/dnode/mnode/impl/test/sdb/sdbTest.cpp
+1
-1
source/dnode/mnode/sdb/inc/sdb.h
source/dnode/mnode/sdb/inc/sdb.h
+1
-1
source/dnode/mnode/sdb/src/sdbFile.c
source/dnode/mnode/sdb/src/sdbFile.c
+14
-1
source/dnode/vnode/src/inc/tq.h
source/dnode/vnode/src/inc/tq.h
+1
-1
source/dnode/vnode/src/inc/vnodeInt.h
source/dnode/vnode/src/inc/vnodeInt.h
+5
-6
source/dnode/vnode/src/meta/metaTable.c
source/dnode/vnode/src/meta/metaTable.c
+7
-0
source/dnode/vnode/src/sma/smaOpen.c
source/dnode/vnode/src/sma/smaOpen.c
+0
-2
source/dnode/vnode/src/sma/smaRollup.c
source/dnode/vnode/src/sma/smaRollup.c
+2
-7
source/dnode/vnode/src/tq/tq.c
source/dnode/vnode/src/tq/tq.c
+1
-1
source/dnode/vnode/src/tq/tqExec.c
source/dnode/vnode/src/tq/tqExec.c
+5
-5
source/dnode/vnode/src/tq/tqMeta.c
source/dnode/vnode/src/tq/tqMeta.c
+2
-1
source/dnode/vnode/src/tq/tqSink.c
source/dnode/vnode/src/tq/tqSink.c
+4
-1
source/dnode/vnode/src/tsdb/tsdbRead.c
source/dnode/vnode/src/tsdb/tsdbRead.c
+5
-3
source/dnode/vnode/src/vnd/vnodeSnapshot.c
source/dnode/vnode/src/vnd/vnodeSnapshot.c
+38
-0
source/libs/executor/inc/executorimpl.h
source/libs/executor/inc/executorimpl.h
+28
-27
source/libs/executor/src/cachescanoperator.c
source/libs/executor/src/cachescanoperator.c
+3
-3
source/libs/executor/src/dataDispatcher.c
source/libs/executor/src/dataDispatcher.c
+6
-6
source/libs/executor/src/executor.c
source/libs/executor/src/executor.c
+30
-16
source/libs/executor/src/executorMain.c
source/libs/executor/src/executorMain.c
+1
-0
source/libs/executor/src/executorimpl.c
source/libs/executor/src/executorimpl.c
+20
-15
source/libs/executor/src/timewindowoperator.c
source/libs/executor/src/timewindowoperator.c
+1
-0
source/libs/function/src/builtins.c
source/libs/function/src/builtins.c
+13
-11
source/libs/function/src/builtinsimpl.c
source/libs/function/src/builtinsimpl.c
+8
-8
source/libs/nodes/src/nodesCodeFuncs.c
source/libs/nodes/src/nodesCodeFuncs.c
+3
-0
source/libs/nodes/src/nodesUtilFuncs.c
source/libs/nodes/src/nodesUtilFuncs.c
+3
-1
source/libs/parser/inc/sql.y
source/libs/parser/inc/sql.y
+8
-8
source/libs/parser/src/parAstCreater.c
source/libs/parser/src/parAstCreater.c
+13
-2
source/libs/parser/src/parAstParser.c
source/libs/parser/src/parAstParser.c
+2
-2
source/libs/parser/src/parInsert.c
source/libs/parser/src/parInsert.c
+1
-1
source/libs/parser/src/parTranslater.c
source/libs/parser/src/parTranslater.c
+80
-42
source/libs/parser/src/parUtil.c
source/libs/parser/src/parUtil.c
+1
-27
source/libs/parser/src/sql.c
source/libs/parser/src/sql.c
+1831
-1858
source/libs/parser/test/mockCatalog.cpp
source/libs/parser/test/mockCatalog.cpp
+0
-40
source/libs/parser/test/parInitialATest.cpp
source/libs/parser/test/parInitialATest.cpp
+250
-64
source/libs/parser/test/parInitialCTest.cpp
source/libs/parser/test/parInitialCTest.cpp
+9
-9
source/libs/parser/test/parTestUtil.cpp
source/libs/parser/test/parTestUtil.cpp
+1
-1
source/libs/qworker/inc/qwInt.h
source/libs/qworker/inc/qwInt.h
+0
-1
source/libs/qworker/src/qwUtil.c
source/libs/qworker/src/qwUtil.c
+0
-6
source/libs/qworker/src/qworker.c
source/libs/qworker/src/qworker.c
+0
-4
source/libs/scalar/src/filter.c
source/libs/scalar/src/filter.c
+4
-0
source/libs/sync/src/syncElection.c
source/libs/sync/src/syncElection.c
+1
-1
source/libs/sync/src/syncMain.c
source/libs/sync/src/syncMain.c
+16
-12
source/libs/sync/src/syncRequestVote.c
source/libs/sync/src/syncRequestVote.c
+39
-2
source/util/src/terror.c
source/util/src/terror.c
+2
-12
tests/pytest/util/dnodes.py
tests/pytest/util/dnodes.py
+16
-7
tests/tsim/inc/simParse.h
tests/tsim/inc/simParse.h
+2
-2
tools/shell/src/shellEngine.c
tools/shell/src/shellEngine.c
+0
-1
未找到文件。
include/client/taos.h
浏览文件 @
8bca99da
...
@@ -259,7 +259,7 @@ enum tmq_res_t {
...
@@ -259,7 +259,7 @@ enum tmq_res_t {
TMQ_RES_TABLE_META
=
2
,
TMQ_RES_TABLE_META
=
2
,
};
};
typedef
struct
{
typedef
struct
tmq_raw_data
{
void
*
raw_meta
;
void
*
raw_meta
;
uint32_t
raw_meta_len
;
uint32_t
raw_meta_len
;
uint16_t
raw_meta_type
;
uint16_t
raw_meta_type
;
...
...
include/libs/executor/executor.h
浏览文件 @
8bca99da
...
@@ -64,7 +64,7 @@ qTaskInfo_t qCreateStreamExecTaskInfo(void* msg, SReadHandle* readers);
...
@@ -64,7 +64,7 @@ qTaskInfo_t qCreateStreamExecTaskInfo(void* msg, SReadHandle* readers);
* @param SReadHandle
* @param SReadHandle
* @return
* @return
*/
*/
qTaskInfo_t
qCreateQueueExecTaskInfo
(
void
*
msg
,
SReadHandle
*
readers
);
qTaskInfo_t
qCreateQueueExecTaskInfo
(
void
*
msg
,
SReadHandle
*
readers
,
int32_t
*
numOfCols
);
/**
/**
* Set the input data block for the stream scan.
* Set the input data block for the stream scan.
...
...
include/util/taoserror.h
浏览文件 @
8bca99da
...
@@ -493,10 +493,11 @@ int32_t* taosGetErrno();
...
@@ -493,10 +493,11 @@ int32_t* taosGetErrno();
//parser
//parser
#define TSDB_CODE_PAR_SYNTAX_ERROR TAOS_DEF_ERROR_CODE(0, 0x2600)
#define TSDB_CODE_PAR_SYNTAX_ERROR TAOS_DEF_ERROR_CODE(0, 0x2600)
#define TSDB_CODE_PAR_INVALID_COLUMN TAOS_DEF_ERROR_CODE(0, 0x2601)
#define TSDB_CODE_PAR_INCOMPLETE_SQL TAOS_DEF_ERROR_CODE(0, 0x2601)
#define TSDB_CODE_PAR_TABLE_NOT_EXIST TAOS_DEF_ERROR_CODE(0, 0x2602)
#define TSDB_CODE_PAR_INVALID_COLUMN TAOS_DEF_ERROR_CODE(0, 0x2602)
#define TSDB_CODE_PAR_AMBIGUOUS_COLUMN TAOS_DEF_ERROR_CODE(0, 0x2603)
#define TSDB_CODE_PAR_TABLE_NOT_EXIST TAOS_DEF_ERROR_CODE(0, 0x2603)
#define TSDB_CODE_PAR_WRONG_VALUE_TYPE TAOS_DEF_ERROR_CODE(0, 0x2604)
#define TSDB_CODE_PAR_AMBIGUOUS_COLUMN TAOS_DEF_ERROR_CODE(0, 0x2604)
#define TSDB_CODE_PAR_WRONG_VALUE_TYPE TAOS_DEF_ERROR_CODE(0, 0x2605)
#define TSDB_CODE_PAR_ILLEGAL_USE_AGG_FUNCTION TAOS_DEF_ERROR_CODE(0, 0x2608)
#define TSDB_CODE_PAR_ILLEGAL_USE_AGG_FUNCTION TAOS_DEF_ERROR_CODE(0, 0x2608)
#define TSDB_CODE_PAR_WRONG_NUMBER_OF_SELECT TAOS_DEF_ERROR_CODE(0, 0x2609)
#define TSDB_CODE_PAR_WRONG_NUMBER_OF_SELECT TAOS_DEF_ERROR_CODE(0, 0x2609)
#define TSDB_CODE_PAR_GROUPBY_LACK_EXPRESSION TAOS_DEF_ERROR_CODE(0, 0x260A)
#define TSDB_CODE_PAR_GROUPBY_LACK_EXPRESSION TAOS_DEF_ERROR_CODE(0, 0x260A)
...
@@ -504,7 +505,6 @@ int32_t* taosGetErrno();
...
@@ -504,7 +505,6 @@ int32_t* taosGetErrno();
#define TSDB_CODE_PAR_NOT_SINGLE_GROUP TAOS_DEF_ERROR_CODE(0, 0x260C)
#define TSDB_CODE_PAR_NOT_SINGLE_GROUP TAOS_DEF_ERROR_CODE(0, 0x260C)
#define TSDB_CODE_PAR_TAGS_NOT_MATCHED TAOS_DEF_ERROR_CODE(0, 0x260D)
#define TSDB_CODE_PAR_TAGS_NOT_MATCHED TAOS_DEF_ERROR_CODE(0, 0x260D)
#define TSDB_CODE_PAR_INVALID_TAG_NAME TAOS_DEF_ERROR_CODE(0, 0x260E)
#define TSDB_CODE_PAR_INVALID_TAG_NAME TAOS_DEF_ERROR_CODE(0, 0x260E)
#define TSDB_CODE_PAR_INCOMPLETE_SQL TAOS_DEF_ERROR_CODE(0, 0x260F)
#define TSDB_CODE_PAR_NAME_OR_PASSWD_TOO_LONG TAOS_DEF_ERROR_CODE(0, 0x2610)
#define TSDB_CODE_PAR_NAME_OR_PASSWD_TOO_LONG TAOS_DEF_ERROR_CODE(0, 0x2610)
#define TSDB_CODE_PAR_PASSWD_EMPTY TAOS_DEF_ERROR_CODE(0, 0x2611)
#define TSDB_CODE_PAR_PASSWD_EMPTY TAOS_DEF_ERROR_CODE(0, 0x2611)
#define TSDB_CODE_PAR_INVALID_PORT TAOS_DEF_ERROR_CODE(0, 0x2612)
#define TSDB_CODE_PAR_INVALID_PORT TAOS_DEF_ERROR_CODE(0, 0x2612)
...
@@ -514,19 +514,9 @@ int32_t* taosGetErrno();
...
@@ -514,19 +514,9 @@ int32_t* taosGetErrno();
#define TSDB_CODE_PAR_DB_NOT_SPECIFIED TAOS_DEF_ERROR_CODE(0, 0x2616)
#define TSDB_CODE_PAR_DB_NOT_SPECIFIED TAOS_DEF_ERROR_CODE(0, 0x2616)
#define TSDB_CODE_PAR_INVALID_IDENTIFIER_NAME TAOS_DEF_ERROR_CODE(0, 0x2617)
#define TSDB_CODE_PAR_INVALID_IDENTIFIER_NAME TAOS_DEF_ERROR_CODE(0, 0x2617)
#define TSDB_CODE_PAR_CORRESPONDING_STABLE_ERR TAOS_DEF_ERROR_CODE(0, 0x2618)
#define TSDB_CODE_PAR_CORRESPONDING_STABLE_ERR TAOS_DEF_ERROR_CODE(0, 0x2618)
#define TSDB_CODE_PAR_INVALID_RANGE_OPTION TAOS_DEF_ERROR_CODE(0, 0x2619)
#define TSDB_CODE_PAR_INVALID_DB_OPTION TAOS_DEF_ERROR_CODE(0, 0x2619)
#define TSDB_CODE_PAR_INVALID_STR_OPTION TAOS_DEF_ERROR_CODE(0, 0x261A)
#define TSDB_CODE_PAR_INVALID_TABLE_OPTION TAOS_DEF_ERROR_CODE(0, 0x261A)
#define TSDB_CODE_PAR_INVALID_ENUM_OPTION TAOS_DEF_ERROR_CODE(0, 0x261B)
#define TSDB_CODE_PAR_INVALID_KEEP_NUM TAOS_DEF_ERROR_CODE(0, 0x261D)
#define TSDB_CODE_PAR_INVALID_KEEP_ORDER TAOS_DEF_ERROR_CODE(0, 0x261E)
#define TSDB_CODE_PAR_INVALID_KEEP_VALUE TAOS_DEF_ERROR_CODE(0, 0x261F)
#define TSDB_CODE_PAR_INVALID_COMMENT_OPTION TAOS_DEF_ERROR_CODE(0, 0x2620)
#define TSDB_CODE_PAR_INVALID_F_RANGE_OPTION TAOS_DEF_ERROR_CODE(0, 0x2621)
#define TSDB_CODE_PAR_INVALID_ROLLUP_OPTION TAOS_DEF_ERROR_CODE(0, 0x2622)
#define TSDB_CODE_PAR_INVALID_RETENTIONS_OPTION TAOS_DEF_ERROR_CODE(0, 0x2623)
#define TSDB_CODE_PAR_GROUPBY_WINDOW_COEXIST TAOS_DEF_ERROR_CODE(0, 0x2624)
#define TSDB_CODE_PAR_GROUPBY_WINDOW_COEXIST TAOS_DEF_ERROR_CODE(0, 0x2624)
#define TSDB_CODE_PAR_INVALID_OPTION_UNIT TAOS_DEF_ERROR_CODE(0, 0x2625)
#define TSDB_CODE_PAR_INVALID_KEEP_UNIT TAOS_DEF_ERROR_CODE(0, 0x2626)
#define TSDB_CODE_PAR_AGG_FUNC_NESTING TAOS_DEF_ERROR_CODE(0, 0x2627)
#define TSDB_CODE_PAR_AGG_FUNC_NESTING TAOS_DEF_ERROR_CODE(0, 0x2627)
#define TSDB_CODE_PAR_INVALID_STATE_WIN_TYPE TAOS_DEF_ERROR_CODE(0, 0x2628)
#define TSDB_CODE_PAR_INVALID_STATE_WIN_TYPE TAOS_DEF_ERROR_CODE(0, 0x2628)
#define TSDB_CODE_PAR_INVALID_STATE_WIN_COL TAOS_DEF_ERROR_CODE(0, 0x2629)
#define TSDB_CODE_PAR_INVALID_STATE_WIN_COL TAOS_DEF_ERROR_CODE(0, 0x2629)
...
@@ -580,7 +570,6 @@ int32_t* taosGetErrno();
...
@@ -580,7 +570,6 @@ int32_t* taosGetErrno();
#define TSDB_CODE_PAR_WINDOW_NOT_ALLOWED_FUNC TAOS_DEF_ERROR_CODE(0, 0x2659)
#define TSDB_CODE_PAR_WINDOW_NOT_ALLOWED_FUNC TAOS_DEF_ERROR_CODE(0, 0x2659)
#define TSDB_CODE_PAR_STREAM_NOT_ALLOWED_FUNC TAOS_DEF_ERROR_CODE(0, 0x265A)
#define TSDB_CODE_PAR_STREAM_NOT_ALLOWED_FUNC TAOS_DEF_ERROR_CODE(0, 0x265A)
#define TSDB_CODE_PAR_GROUP_BY_NOT_ALLOWED_FUNC TAOS_DEF_ERROR_CODE(0, 0x265B)
#define TSDB_CODE_PAR_GROUP_BY_NOT_ALLOWED_FUNC TAOS_DEF_ERROR_CODE(0, 0x265B)
#define TSDB_CODE_PAR_INVALID_TABLE_OPTION TAOS_DEF_ERROR_CODE(0, 0x265C)
#define TSDB_CODE_PAR_INVALID_INTERP_CLAUSE TAOS_DEF_ERROR_CODE(0, 0x265D)
#define TSDB_CODE_PAR_INVALID_INTERP_CLAUSE TAOS_DEF_ERROR_CODE(0, 0x265D)
#define TSDB_CODE_PAR_NO_VALID_FUNC_IN_WIN TAOS_DEF_ERROR_CODE(0, 0x265E)
#define TSDB_CODE_PAR_NO_VALID_FUNC_IN_WIN TAOS_DEF_ERROR_CODE(0, 0x265E)
#define TSDB_CODE_PAR_ONLY_SUPPORT_SINGLE_TABLE TAOS_DEF_ERROR_CODE(0, 0x265F)
#define TSDB_CODE_PAR_ONLY_SUPPORT_SINGLE_TABLE TAOS_DEF_ERROR_CODE(0, 0x265F)
...
...
source/client/src/clientImpl.c
浏览文件 @
8bca99da
...
@@ -2093,8 +2093,9 @@ TAOS_RES* taosQueryImpl(TAOS* taos, const char* sql, bool validateOnly) {
...
@@ -2093,8 +2093,9 @@ TAOS_RES* taosQueryImpl(TAOS* taos, const char* sql, bool validateOnly) {
taosAsyncQueryImpl
(
*
(
int64_t
*
)
taos
,
sql
,
syncQueryFn
,
param
,
validateOnly
);
taosAsyncQueryImpl
(
*
(
int64_t
*
)
taos
,
sql
,
syncQueryFn
,
param
,
validateOnly
);
tsem_wait
(
&
param
->
sem
);
tsem_wait
(
&
param
->
sem
);
if
(
param
->
pRequest
!=
NULL
)
{
param
->
pRequest
->
syncQuery
=
true
;
param
->
pRequest
->
syncQuery
=
true
;
}
return
param
->
pRequest
;
return
param
->
pRequest
;
#else
#else
size_t
sqlLen
=
strlen
(
sql
);
size_t
sqlLen
=
strlen
(
sql
);
...
...
source/client/src/tmq.c
浏览文件 @
8bca99da
...
@@ -2193,17 +2193,19 @@ static char* buildCreateCTableJson(STag* pTag, char* sname, char* name, SArray*
...
@@ -2193,17 +2193,19 @@ static char* buildCreateCTableJson(STag* pTag, char* sname, char* name, SArray*
cJSON
*
ttype
=
cJSON_CreateNumber
(
pTagVal
->
type
);
cJSON
*
ttype
=
cJSON_CreateNumber
(
pTagVal
->
type
);
cJSON_AddItemToObject
(
tag
,
"type"
,
ttype
);
cJSON_AddItemToObject
(
tag
,
"type"
,
ttype
);
c
har
*
buf
=
NULL
;
c
JSON
*
tvalue
=
NULL
;
if
(
IS_VAR_DATA_TYPE
(
pTagVal
->
type
))
{
if
(
IS_VAR_DATA_TYPE
(
pTagVal
->
type
))
{
buf
=
taosMemoryCalloc
(
pTagVal
->
nData
+
1
,
1
);
char
*
buf
=
taosMemoryCalloc
(
pTagVal
->
nData
+
3
,
1
);
if
(
!
buf
)
goto
end
;
dataConverToStr
(
buf
,
pTagVal
->
type
,
pTagVal
->
pData
,
pTagVal
->
nData
,
NULL
);
dataConverToStr
(
buf
,
pTagVal
->
type
,
pTagVal
->
pData
,
pTagVal
->
nData
,
NULL
);
tvalue
=
cJSON_CreateString
(
buf
);
taosMemoryFree
(
buf
);
}
else
{
}
else
{
buf
=
taosMemoryCalloc
(
32
,
1
);
double
val
=
0
;
dataConverToStr
(
buf
,
pTagVal
->
type
,
&
pTagVal
->
i64
,
tDataTypes
[
pTagVal
->
type
].
bytes
,
NULL
);
GET_TYPED_DATA
(
val
,
double
,
pTagVal
->
type
,
&
pTagVal
->
i64
);
tvalue
=
cJSON_CreateNumber
(
val
);
}
}
cJSON
*
tvalue
=
cJSON_CreateString
(
buf
);
taosMemoryFree
(
buf
);
cJSON_AddItemToObject
(
tag
,
"value"
,
tvalue
);
cJSON_AddItemToObject
(
tag
,
"value"
,
tvalue
);
cJSON_AddItemToArray
(
tags
,
tag
);
cJSON_AddItemToArray
(
tags
,
tag
);
}
}
...
...
source/client/test/smlTest.cpp
浏览文件 @
8bca99da
此差异已折叠。
点击以展开。
source/dnode/mnode/impl/src/mndSync.c
浏览文件 @
8bca99da
...
@@ -144,9 +144,11 @@ int32_t mndSnapshotStartWrite(struct SSyncFSM *pFsm, void *pParam, void **ppWrit
...
@@ -144,9 +144,11 @@ int32_t mndSnapshotStartWrite(struct SSyncFSM *pFsm, void *pParam, void **ppWrit
}
}
int32_t
mndSnapshotStopWrite
(
struct
SSyncFSM
*
pFsm
,
void
*
pWriter
,
bool
isApply
,
SSnapshot
*
pSnapshot
)
{
int32_t
mndSnapshotStopWrite
(
struct
SSyncFSM
*
pFsm
,
void
*
pWriter
,
bool
isApply
,
SSnapshot
*
pSnapshot
)
{
mInfo
(
"stop to apply snapshot to sdb, apply:%d"
,
isApply
);
mInfo
(
"stop to apply snapshot to sdb, apply:%d, index:%"
PRId64
" term:%"
PRIu64
" config:%"
PRId64
,
isApply
,
pSnapshot
->
lastApplyIndex
,
pSnapshot
->
lastApplyTerm
,
pSnapshot
->
lastApplyIndex
);
SMnode
*
pMnode
=
pFsm
->
data
;
SMnode
*
pMnode
=
pFsm
->
data
;
return
sdbStopWrite
(
pMnode
->
pSdb
,
pWriter
,
isApply
);
return
sdbStopWrite
(
pMnode
->
pSdb
,
pWriter
,
isApply
,
pSnapshot
->
lastApplyIndex
,
pSnapshot
->
lastApplyTerm
,
pSnapshot
->
lastConfigIndex
);
}
}
int32_t
mndSnapshotDoWrite
(
struct
SSyncFSM
*
pFsm
,
void
*
pWriter
,
void
*
pBuf
,
int32_t
len
)
{
int32_t
mndSnapshotDoWrite
(
struct
SSyncFSM
*
pFsm
,
void
*
pWriter
,
void
*
pBuf
,
int32_t
len
)
{
...
@@ -157,7 +159,7 @@ int32_t mndSnapshotDoWrite(struct SSyncFSM *pFsm, void *pWriter, void *pBuf, int
...
@@ -157,7 +159,7 @@ int32_t mndSnapshotDoWrite(struct SSyncFSM *pFsm, void *pWriter, void *pBuf, int
void
mndLeaderTransfer
(
struct
SSyncFSM
*
pFsm
,
const
SRpcMsg
*
pMsg
,
SFsmCbMeta
cbMeta
)
{
void
mndLeaderTransfer
(
struct
SSyncFSM
*
pFsm
,
const
SRpcMsg
*
pMsg
,
SFsmCbMeta
cbMeta
)
{
SMnode
*
pMnode
=
pFsm
->
data
;
SMnode
*
pMnode
=
pFsm
->
data
;
atomic_store_8
(
&
(
pMnode
->
syncMgmt
.
leaderTransferFinish
),
1
);
atomic_store_8
(
&
(
pMnode
->
syncMgmt
.
leaderTransferFinish
),
1
);
mDebug
(
"vgId:1, mn
d
leader transfer finish"
);
mDebug
(
"vgId:1, mn
ode
leader transfer finish"
);
}
}
SSyncFSM
*
mndSyncMakeFsm
(
SMnode
*
pMnode
)
{
SSyncFSM
*
mndSyncMakeFsm
(
SMnode
*
pMnode
)
{
...
...
source/dnode/mnode/impl/test/sdb/sdbTest.cpp
浏览文件 @
8bca99da
...
@@ -925,7 +925,7 @@ TEST_F(MndTestSdb, 01_Read_Str) {
...
@@ -925,7 +925,7 @@ TEST_F(MndTestSdb, 01_Read_Str) {
}
}
sdbStopRead
(
pSdb
,
pReader
);
sdbStopRead
(
pSdb
,
pReader
);
sdbStopWrite
(
pSdb
,
pWritter
,
true
);
sdbStopWrite
(
pSdb
,
pWritter
,
true
,
-
1
,
-
1
,
-
1
);
}
}
ASSERT_EQ
(
sdbGetSize
(
pSdb
,
SDB_CONSUMER
),
1
);
ASSERT_EQ
(
sdbGetSize
(
pSdb
,
SDB_CONSUMER
),
1
);
...
...
source/dnode/mnode/sdb/inc/sdb.h
浏览文件 @
8bca99da
...
@@ -394,7 +394,7 @@ int32_t sdbStopRead(SSdb *pSdb, SSdbIter *pIter);
...
@@ -394,7 +394,7 @@ int32_t sdbStopRead(SSdb *pSdb, SSdbIter *pIter);
int32_t
sdbDoRead
(
SSdb
*
pSdb
,
SSdbIter
*
pIter
,
void
**
ppBuf
,
int32_t
*
len
);
int32_t
sdbDoRead
(
SSdb
*
pSdb
,
SSdbIter
*
pIter
,
void
**
ppBuf
,
int32_t
*
len
);
int32_t
sdbStartWrite
(
SSdb
*
pSdb
,
SSdbIter
**
ppIter
);
int32_t
sdbStartWrite
(
SSdb
*
pSdb
,
SSdbIter
**
ppIter
);
int32_t
sdbStopWrite
(
SSdb
*
pSdb
,
SSdbIter
*
pIter
,
bool
isApply
);
int32_t
sdbStopWrite
(
SSdb
*
pSdb
,
SSdbIter
*
pIter
,
bool
isApply
,
int64_t
index
,
int64_t
term
,
int64_t
config
);
int32_t
sdbDoWrite
(
SSdb
*
pSdb
,
SSdbIter
*
pIter
,
void
*
pBuf
,
int32_t
len
);
int32_t
sdbDoWrite
(
SSdb
*
pSdb
,
SSdbIter
*
pIter
,
void
*
pBuf
,
int32_t
len
);
const
char
*
sdbTableName
(
ESdbType
type
);
const
char
*
sdbTableName
(
ESdbType
type
);
...
...
source/dnode/mnode/sdb/src/sdbFile.c
浏览文件 @
8bca99da
...
@@ -613,7 +613,7 @@ int32_t sdbStartWrite(SSdb *pSdb, SSdbIter **ppIter) {
...
@@ -613,7 +613,7 @@ int32_t sdbStartWrite(SSdb *pSdb, SSdbIter **ppIter) {
return
0
;
return
0
;
}
}
int32_t
sdbStopWrite
(
SSdb
*
pSdb
,
SSdbIter
*
pIter
,
bool
isApply
)
{
int32_t
sdbStopWrite
(
SSdb
*
pSdb
,
SSdbIter
*
pIter
,
bool
isApply
,
int64_t
index
,
int64_t
term
,
int64_t
config
)
{
int32_t
code
=
0
;
int32_t
code
=
0
;
if
(
!
isApply
)
{
if
(
!
isApply
)
{
...
@@ -641,6 +641,19 @@ int32_t sdbStopWrite(SSdb *pSdb, SSdbIter *pIter, bool isApply) {
...
@@ -641,6 +641,19 @@ int32_t sdbStopWrite(SSdb *pSdb, SSdbIter *pIter, bool isApply) {
return
-
1
;
return
-
1
;
}
}
if
(
config
>
0
)
{
ASSERT
(
pSdb
->
commitConfig
==
config
);
pSdb
->
commitConfig
=
config
;
}
if
(
term
>
0
)
{
ASSERT
(
pSdb
->
commitTerm
==
term
);
pSdb
->
commitTerm
=
term
;
}
if
(
index
>
0
)
{
ASSERT
(
pSdb
->
commitIndex
==
index
);
pSdb
->
commitIndex
=
index
;
}
mDebug
(
"sdbiter:%p, successfully applyed to sdb"
,
pIter
);
mDebug
(
"sdbiter:%p, successfully applyed to sdb"
,
pIter
);
return
0
;
return
0
;
}
}
...
...
source/dnode/vnode/src/inc/tq.h
浏览文件 @
8bca99da
...
@@ -88,7 +88,7 @@ typedef struct {
...
@@ -88,7 +88,7 @@ typedef struct {
STqExecTb
execTb
;
STqExecTb
execTb
;
STqExecDb
execDb
;
STqExecDb
execDb
;
};
};
int32_t
numOfCols
;
// number of out pout column, temporarily used
}
STqExecHandle
;
}
STqExecHandle
;
typedef
struct
{
typedef
struct
{
...
...
source/dnode/vnode/src/inc/vnodeInt.h
浏览文件 @
8bca99da
...
@@ -275,8 +275,8 @@ struct SVnode {
...
@@ -275,8 +275,8 @@ struct SVnode {
#define VND_TSDB(vnd) ((vnd)->pTsdb)
#define VND_TSDB(vnd) ((vnd)->pTsdb)
#define VND_RSMA0(vnd) ((vnd)->pTsdb)
#define VND_RSMA0(vnd) ((vnd)->pTsdb)
#define VND_RSMA1(vnd) ((vnd)->pSma->pRSmaTsdb
1
)
#define VND_RSMA1(vnd) ((vnd)->pSma->pRSmaTsdb
[TSDB_RETENTION_L0]
)
#define VND_RSMA2(vnd) ((vnd)->pSma->pRSmaTsdb
2
)
#define VND_RSMA2(vnd) ((vnd)->pSma->pRSmaTsdb
[TSDB_RETENTION_L1]
)
#define VND_RETENTIONS(vnd) (&(vnd)->config.tsdbCfg.retentions)
#define VND_RETENTIONS(vnd) (&(vnd)->config.tsdbCfg.retentions)
#define VND_IS_RSMA(v) ((v)->config.isRsma == 1)
#define VND_IS_RSMA(v) ((v)->config.isRsma == 1)
#define VND_IS_TSMA(v) ((v)->config.isTsma == 1)
#define VND_IS_TSMA(v) ((v)->config.isTsma == 1)
...
@@ -291,8 +291,7 @@ struct SSma {
...
@@ -291,8 +291,7 @@ struct SSma {
bool
locked
;
bool
locked
;
TdThreadMutex
mutex
;
TdThreadMutex
mutex
;
SVnode
*
pVnode
;
SVnode
*
pVnode
;
STsdb
*
pRSmaTsdb1
;
STsdb
*
pRSmaTsdb
[
TSDB_RETENTION_L2
];
STsdb
*
pRSmaTsdb2
;
void
*
pTSmaEnv
;
void
*
pTSmaEnv
;
void
*
pRSmaEnv
;
void
*
pRSmaEnv
;
};
};
...
@@ -307,8 +306,8 @@ struct SSma {
...
@@ -307,8 +306,8 @@ struct SSma {
#define SMA_TSMA_ENV(s) ((s)->pTSmaEnv)
#define SMA_TSMA_ENV(s) ((s)->pTSmaEnv)
#define SMA_RSMA_ENV(s) ((s)->pRSmaEnv)
#define SMA_RSMA_ENV(s) ((s)->pRSmaEnv)
#define SMA_RSMA_TSDB0(s) ((s)->pVnode->pTsdb)
#define SMA_RSMA_TSDB0(s) ((s)->pVnode->pTsdb)
#define SMA_RSMA_TSDB1(s) ((s)->pRSmaTsdb
1
)
#define SMA_RSMA_TSDB1(s) ((s)->pRSmaTsdb
[TSDB_RETENTION_L0]
)
#define SMA_RSMA_TSDB2(s) ((s)->pRSmaTsdb
2
)
#define SMA_RSMA_TSDB2(s) ((s)->pRSmaTsdb
[TSDB_RETENTION_L1]
)
// sma
// sma
void
smaHandleRes
(
void
*
pVnode
,
int64_t
smaId
,
const
SArray
*
data
);
void
smaHandleRes
(
void
*
pVnode
,
int64_t
smaId
,
const
SArray
*
data
);
...
...
source/dnode/vnode/src/meta/metaTable.c
浏览文件 @
8bca99da
...
@@ -374,6 +374,13 @@ int metaCreateTable(SMeta *pMeta, int64_t version, SVCreateTbReq *pReq) {
...
@@ -374,6 +374,13 @@ int metaCreateTable(SMeta *pMeta, int64_t version, SVCreateTbReq *pReq) {
}
}
metaReaderClear
(
&
mr
);
metaReaderClear
(
&
mr
);
if
(
pReq
->
type
==
TSDB_CHILD_TABLE
)
{
tb_uid_t
suid
=
metaGetTableEntryUidByName
(
pMeta
,
pReq
->
ctb
.
name
);
if
(
suid
==
0
)
{
terrno
=
TSDB_CODE_PAR_TABLE_NOT_EXIST
;
return
-
1
;
}
}
// build SMetaEntry
// build SMetaEntry
me
.
version
=
version
;
me
.
version
=
version
;
me
.
type
=
pReq
->
type
;
me
.
type
=
pReq
->
type
;
...
...
source/dnode/vnode/src/sma/smaOpen.c
浏览文件 @
8bca99da
...
@@ -123,11 +123,9 @@ int32_t smaOpen(SVnode *pVnode) {
...
@@ -123,11 +123,9 @@ int32_t smaOpen(SVnode *pVnode) {
}
}
// restore the rsma
// restore the rsma
#if 1
if
(
rsmaRestore
(
pSma
)
<
0
)
{
if
(
rsmaRestore
(
pSma
)
<
0
)
{
goto
_err
;
goto
_err
;
}
}
#endif
}
}
return
0
;
return
0
;
...
...
source/dnode/vnode/src/sma/smaRollup.c
浏览文件 @
8bca99da
...
@@ -605,7 +605,7 @@ static int32_t tdRSmaFetchAndSubmitResult(SRSmaInfoItem *pItem, STSchema *pTSche
...
@@ -605,7 +605,7 @@ static int32_t tdRSmaFetchAndSubmitResult(SRSmaInfoItem *pItem, STSchema *pTSche
snprintf
(
flag
,
10
,
"level %"
PRIi8
,
pItem
->
level
);
snprintf
(
flag
,
10
,
"level %"
PRIi8
,
pItem
->
level
);
blockDebugShowDataBlocks
(
pResult
,
flag
);
blockDebugShowDataBlocks
(
pResult
,
flag
);
#endif
#endif
STsdb
*
sinkTsdb
=
(
pItem
->
level
==
TSDB_RETENTION_L1
?
pSma
->
pRSmaTsdb
1
:
pSma
->
pRSmaTsdb2
);
STsdb
*
sinkTsdb
=
(
pItem
->
level
==
TSDB_RETENTION_L1
?
pSma
->
pRSmaTsdb
[
0
]
:
pSma
->
pRSmaTsdb
[
1
]
);
SSubmitReq
*
pReq
=
NULL
;
SSubmitReq
*
pReq
=
NULL
;
// TODO: the schema update should be handled
// TODO: the schema update should be handled
if
(
buildSubmitReqFromDataBlock
(
&
pReq
,
pResult
,
pTSchema
,
SMA_VID
(
pSma
),
suid
)
<
0
)
{
if
(
buildSubmitReqFromDataBlock
(
&
pReq
,
pResult
,
pTSchema
,
SMA_VID
(
pSma
),
suid
)
<
0
)
{
...
@@ -949,13 +949,8 @@ _err:
...
@@ -949,13 +949,8 @@ _err:
* @return int32_t
* @return int32_t
*/
*/
static
int32_t
tdRSmaRestoreTSDataReload
(
SSma
*
pSma
,
int64_t
committed
)
{
static
int32_t
tdRSmaRestoreTSDataReload
(
SSma
*
pSma
,
int64_t
committed
)
{
// TODO
// NOTHING TODO: the data would be restored from the unified WAL replay procedure
smaDebug
(
"vgId:%d, rsma restore from %"
PRIi64
", ts data reload success"
,
SMA_VID
(
pSma
),
committed
);
return
TSDB_CODE_SUCCESS
;
return
TSDB_CODE_SUCCESS
;
_err:
smaError
(
"vgId:%d, rsma restore from %"
PRIi64
", ts data reload failed since %s"
,
SMA_VID
(
pSma
),
committed
,
terrstr
());
return
TSDB_CODE_FAILED
;
}
}
int32_t
tdProcessRSmaRestoreImpl
(
SSma
*
pSma
)
{
int32_t
tdProcessRSmaRestoreImpl
(
SSma
*
pSma
)
{
...
...
source/dnode/vnode/src/tq/tq.c
浏览文件 @
8bca99da
...
@@ -506,7 +506,7 @@ int32_t tqProcessVgChangeReq(STQ* pTq, char* msg, int32_t msgLen) {
...
@@ -506,7 +506,7 @@ int32_t tqProcessVgChangeReq(STQ* pTq, char* msg, int32_t msgLen) {
.
initTqReader
=
true
,
.
initTqReader
=
true
,
.
version
=
ver
,
.
version
=
ver
,
};
};
pHandle
->
execHandle
.
execCol
.
task
[
i
]
=
qCreateQueueExecTaskInfo
(
pHandle
->
execHandle
.
execCol
.
qmsg
,
&
handle
);
pHandle
->
execHandle
.
execCol
.
task
[
i
]
=
qCreateQueueExecTaskInfo
(
pHandle
->
execHandle
.
execCol
.
qmsg
,
&
handle
,
&
pHandle
->
execHandle
.
numOfCols
);
ASSERT
(
pHandle
->
execHandle
.
execCol
.
task
[
i
]);
ASSERT
(
pHandle
->
execHandle
.
execCol
.
task
[
i
]);
void
*
scanner
=
NULL
;
void
*
scanner
=
NULL
;
qExtractStreamScanner
(
pHandle
->
execHandle
.
execCol
.
task
[
i
],
&
scanner
);
qExtractStreamScanner
(
pHandle
->
execHandle
.
execCol
.
task
[
i
],
&
scanner
);
...
...
source/dnode/vnode/src/tq/tqExec.c
浏览文件 @
8bca99da
...
@@ -15,7 +15,7 @@
...
@@ -15,7 +15,7 @@
#include "tq.h"
#include "tq.h"
static
int32_t
tqAddBlockDataToRsp
(
const
SSDataBlock
*
pBlock
,
SMqDataRsp
*
pRsp
)
{
static
int32_t
tqAddBlockDataToRsp
(
const
SSDataBlock
*
pBlock
,
SMqDataRsp
*
pRsp
,
int32_t
numOfCols
)
{
int32_t
dataStrLen
=
sizeof
(
SRetrieveTableRsp
)
+
blockGetEncodeSize
(
pBlock
);
int32_t
dataStrLen
=
sizeof
(
SRetrieveTableRsp
)
+
blockGetEncodeSize
(
pBlock
);
void
*
buf
=
taosMemoryCalloc
(
1
,
dataStrLen
);
void
*
buf
=
taosMemoryCalloc
(
1
,
dataStrLen
);
if
(
buf
==
NULL
)
return
-
1
;
if
(
buf
==
NULL
)
return
-
1
;
...
@@ -29,7 +29,7 @@ static int32_t tqAddBlockDataToRsp(const SSDataBlock* pBlock, SMqDataRsp* pRsp)
...
@@ -29,7 +29,7 @@ static int32_t tqAddBlockDataToRsp(const SSDataBlock* pBlock, SMqDataRsp* pRsp)
// TODO enable compress
// TODO enable compress
int32_t
actualLen
=
0
;
int32_t
actualLen
=
0
;
blockEncode
(
pBlock
,
pRetrieve
->
data
,
&
actualLen
,
taosArrayGetSize
(
pBlock
->
pDataBlock
)
,
false
);
blockEncode
(
pBlock
,
pRetrieve
->
data
,
&
actualLen
,
numOfCols
,
false
);
actualLen
+=
sizeof
(
SRetrieveTableRsp
);
actualLen
+=
sizeof
(
SRetrieveTableRsp
);
ASSERT
(
actualLen
<=
dataStrLen
);
ASSERT
(
actualLen
<=
dataStrLen
);
taosArrayPush
(
pRsp
->
blockDataLen
,
&
actualLen
);
taosArrayPush
(
pRsp
->
blockDataLen
,
&
actualLen
);
...
@@ -87,7 +87,7 @@ int64_t tqScan(STQ* pTq, const STqHandle* pHandle, SMqDataRsp* pRsp, STqOffsetVa
...
@@ -87,7 +87,7 @@ int64_t tqScan(STQ* pTq, const STqHandle* pHandle, SMqDataRsp* pRsp, STqOffsetVa
tqDebug
(
"task execute end, get %p"
,
pDataBlock
);
tqDebug
(
"task execute end, get %p"
,
pDataBlock
);
if
(
pDataBlock
!=
NULL
)
{
if
(
pDataBlock
!=
NULL
)
{
tqAddBlockDataToRsp
(
pDataBlock
,
pRsp
);
tqAddBlockDataToRsp
(
pDataBlock
,
pRsp
,
pExec
->
numOfCols
);
pRsp
->
blockNum
++
;
pRsp
->
blockNum
++
;
if
(
pRsp
->
withTbName
)
{
if
(
pRsp
->
withTbName
)
{
if
(
pOffset
->
type
==
TMQ_OFFSET__LOG
)
{
if
(
pOffset
->
type
==
TMQ_OFFSET__LOG
)
{
...
@@ -195,7 +195,7 @@ int32_t tqLogScanExec(STQ* pTq, STqExecHandle* pExec, SSubmitReq* pReq, SMqDataR
...
@@ -195,7 +195,7 @@ int32_t tqLogScanExec(STQ* pTq, STqExecHandle* pExec, SSubmitReq* pReq, SMqDataR
if
(
terrno
==
TSDB_CODE_TQ_TABLE_SCHEMA_NOT_FOUND
)
continue
;
if
(
terrno
==
TSDB_CODE_TQ_TABLE_SCHEMA_NOT_FOUND
)
continue
;
ASSERT
(
0
);
ASSERT
(
0
);
}
}
tqAddBlockDataToRsp
(
&
block
,
pRsp
);
tqAddBlockDataToRsp
(
&
block
,
pRsp
,
taosArrayGetSize
(
block
.
pDataBlock
)
);
if
(
pRsp
->
withTbName
)
{
if
(
pRsp
->
withTbName
)
{
int64_t
uid
=
pExec
->
pExecReader
[
workerId
]
->
msgIter
.
uid
;
int64_t
uid
=
pExec
->
pExecReader
[
workerId
]
->
msgIter
.
uid
;
tqAddTbNameToRsp
(
pTq
,
uid
,
pRsp
);
tqAddTbNameToRsp
(
pTq
,
uid
,
pRsp
);
...
@@ -213,7 +213,7 @@ int32_t tqLogScanExec(STQ* pTq, STqExecHandle* pExec, SSubmitReq* pReq, SMqDataR
...
@@ -213,7 +213,7 @@ int32_t tqLogScanExec(STQ* pTq, STqExecHandle* pExec, SSubmitReq* pReq, SMqDataR
if
(
terrno
==
TSDB_CODE_TQ_TABLE_SCHEMA_NOT_FOUND
)
continue
;
if
(
terrno
==
TSDB_CODE_TQ_TABLE_SCHEMA_NOT_FOUND
)
continue
;
ASSERT
(
0
);
ASSERT
(
0
);
}
}
tqAddBlockDataToRsp
(
&
block
,
pRsp
);
tqAddBlockDataToRsp
(
&
block
,
pRsp
,
taosArrayGetSize
(
block
.
pDataBlock
)
);
if
(
pRsp
->
withTbName
)
{
if
(
pRsp
->
withTbName
)
{
int64_t
uid
=
pExec
->
pExecReader
[
workerId
]
->
msgIter
.
uid
;
int64_t
uid
=
pExec
->
pExecReader
[
workerId
]
->
msgIter
.
uid
;
tqAddTbNameToRsp
(
pTq
,
uid
,
pRsp
);
tqAddTbNameToRsp
(
pTq
,
uid
,
pRsp
);
...
...
source/dnode/vnode/src/tq/tqMeta.c
浏览文件 @
8bca99da
...
@@ -92,7 +92,8 @@ int32_t tqMetaOpen(STQ* pTq) {
...
@@ -92,7 +92,8 @@ int32_t tqMetaOpen(STQ* pTq) {
.
initTqReader
=
true
,
.
initTqReader
=
true
,
.
version
=
handle
.
snapshotVer
,
.
version
=
handle
.
snapshotVer
,
};
};
handle
.
execHandle
.
execCol
.
task
[
i
]
=
qCreateQueueExecTaskInfo
(
handle
.
execHandle
.
execCol
.
qmsg
,
&
reader
);
handle
.
execHandle
.
execCol
.
task
[
i
]
=
qCreateQueueExecTaskInfo
(
handle
.
execHandle
.
execCol
.
qmsg
,
&
reader
,
&
handle
.
execHandle
.
numOfCols
);
ASSERT
(
handle
.
execHandle
.
execCol
.
task
[
i
]);
ASSERT
(
handle
.
execHandle
.
execCol
.
task
[
i
]);
void
*
scanner
=
NULL
;
void
*
scanner
=
NULL
;
qExtractStreamScanner
(
handle
.
execHandle
.
execCol
.
task
[
i
],
&
scanner
);
qExtractStreamScanner
(
handle
.
execHandle
.
execCol
.
task
[
i
],
&
scanner
);
...
...
source/dnode/vnode/src/tq/tqSink.c
浏览文件 @
8bca99da
...
@@ -49,8 +49,11 @@ SSubmitReq* tdBlockToSubmit(const SArray* pBlocks, const STSchema* pTSchema, boo
...
@@ -49,8 +49,11 @@ SSubmitReq* tdBlockToSubmit(const SArray* pBlocks, const STSchema* pTSchema, boo
}
}
SVCreateTbReq
createTbReq
=
{
0
};
SVCreateTbReq
createTbReq
=
{
0
};
SName
name
=
{
0
};
tNameFromString
(
&
name
,
stbFullName
,
T_NAME_ACCT
|
T_NAME_DB
|
T_NAME_TABLE
);
createTbReq
.
name
=
buildCtbNameByGroupId
(
stbFullName
,
pDataBlock
->
info
.
groupId
);
createTbReq
.
name
=
buildCtbNameByGroupId
(
stbFullName
,
pDataBlock
->
info
.
groupId
);
createTbReq
.
ctb
.
name
=
strdup
(
stbFullName
);
createTbReq
.
ctb
.
name
=
strdup
(
(
char
*
)
tNameGetTableName
(
&
name
));
// strdup(
stbFullName);
createTbReq
.
flags
=
0
;
createTbReq
.
flags
=
0
;
createTbReq
.
type
=
TSDB_CHILD_TABLE
;
createTbReq
.
type
=
TSDB_CHILD_TABLE
;
createTbReq
.
ctb
.
suid
=
suid
;
createTbReq
.
ctb
.
suid
=
suid
;
...
...
source/dnode/vnode/src/tsdb/tsdbRead.c
浏览文件 @
8bca99da
...
@@ -1961,9 +1961,11 @@ int32_t initDelSkylineIterator(STableBlockScanInfo* pBlockScanInfo, STsdbReader*
...
@@ -1961,9 +1961,11 @@ int32_t initDelSkylineIterator(STableBlockScanInfo* pBlockScanInfo, STsdbReader*
SDelIdx
idx
=
{.
suid
=
pReader
->
suid
,
.
uid
=
pBlockScanInfo
->
uid
};
SDelIdx
idx
=
{.
suid
=
pReader
->
suid
,
.
uid
=
pBlockScanInfo
->
uid
};
SDelIdx
*
pIdx
=
taosArraySearch
(
aDelIdx
,
&
idx
,
tCmprDelIdx
,
TD_EQ
);
SDelIdx
*
pIdx
=
taosArraySearch
(
aDelIdx
,
&
idx
,
tCmprDelIdx
,
TD_EQ
);
code
=
tsdbReadDelData
(
pDelFReader
,
pIdx
,
pDelData
,
NULL
);
if
(
pIdx
!=
NULL
)
{
if
(
code
!=
TSDB_CODE_SUCCESS
)
{
code
=
tsdbReadDelData
(
pDelFReader
,
pIdx
,
pDelData
,
NULL
);
goto
_err
;
if
(
code
!=
TSDB_CODE_SUCCESS
)
{
goto
_err
;
}
}
}
}
}
...
...
source/dnode/vnode/src/vnd/vnodeSnapshot.c
浏览文件 @
8bca99da
...
@@ -27,6 +27,8 @@ struct SVSnapReader {
...
@@ -27,6 +27,8 @@ struct SVSnapReader {
// tsdb
// tsdb
int8_t
tsdbDone
;
int8_t
tsdbDone
;
STsdbSnapReader
*
pTsdbReader
;
STsdbSnapReader
*
pTsdbReader
;
// rsma
int8_t
rsmaDone
[
TSDB_RETENTION_L2
];
};
};
int32_t
vnodeSnapReaderOpen
(
SVnode
*
pVnode
,
int64_t
sver
,
int64_t
ever
,
SVSnapReader
**
ppReader
)
{
int32_t
vnodeSnapReaderOpen
(
SVnode
*
pVnode
,
int64_t
sver
,
int64_t
ever
,
SVSnapReader
**
ppReader
)
{
...
@@ -115,6 +117,42 @@ int32_t vnodeSnapRead(SVSnapReader *pReader, uint8_t **ppData, uint32_t *nData)
...
@@ -115,6 +117,42 @@ int32_t vnodeSnapRead(SVSnapReader *pReader, uint8_t **ppData, uint32_t *nData)
}
}
}
}
// RSMA ==============
#if 0
if (VND_IS_RSMA(pReader->pVnode)) {
// RSMA1/RSMA2
for (int32_t i = 0; i < TSDB_RETENTION_L2; ++i) {
if (!pReader->rsmaDone[i]) {
if (!pReader->pVnode->pSma->pRSmaTsdb[i]) {
// no valid tsdb
pReader->rsmaDone[i] = 1;
continue;
}
if (pReader->pTsdbReader == NULL) {
code = tsdbSnapReaderOpen(pReader->pVnode->pSma->pRSmaTsdb[i], pReader->sver, pReader->ever,
&pReader->pTsdbReader);
if (code) goto _err;
}
code = tsdbSnapRead(pReader->pTsdbReader, ppData);
if (code) {
goto _err;
} else {
if (*ppData) {
goto _exit;
} else {
pReader->tsdbDone = 1;
code = tsdbSnapReaderClose(&pReader->pTsdbReader);
if (code) goto _err;
}
}
}
}
// QTaskInfoFile
// TODO ...
}
#endif
*
ppData
=
NULL
;
*
ppData
=
NULL
;
*
nData
=
0
;
*
nData
=
0
;
...
...
source/libs/executor/inc/executorimpl.h
浏览文件 @
8bca99da
...
@@ -159,27 +159,28 @@ typedef struct {
...
@@ -159,27 +159,28 @@ typedef struct {
int64_t
recoverEndVer
;
int64_t
recoverEndVer
;
}
SStreamTaskInfo
;
}
SStreamTaskInfo
;
typedef
struct
{
char
*
tablename
;
char
*
dbname
;
int32_t
tversion
;
SSchemaWrapper
*
sw
;
}
SSchemaInfo
;
typedef
struct
SExecTaskInfo
{
typedef
struct
SExecTaskInfo
{
STaskIdInfo
id
;
STaskIdInfo
id
;
uint32_t
status
;
uint32_t
status
;
STimeWindow
window
;
STimeWindow
window
;
STaskCostInfo
cost
;
STaskCostInfo
cost
;
int64_t
owner
;
// if it is in execution
int64_t
owner
;
// if it is in execution
int32_t
code
;
int32_t
code
;
SStreamTaskInfo
streamInfo
;
SStreamTaskInfo
streamInfo
;
SSchemaInfo
schemaInfo
;
struct
{
STableListInfo
tableqinfoList
;
// this is a table list
char
*
tablename
;
const
char
*
sql
;
// query sql string
char
*
dbname
;
jmp_buf
env
;
// jump to this position when error happens.
int32_t
tversion
;
EOPTR_EXEC_MODEL
execModel
;
// operator execution model [batch model|stream model]
SSchemaWrapper
*
sw
;
SSubplan
*
pSubplan
;
}
schemaVer
;
STableListInfo
tableqinfoList
;
// this is a table list
const
char
*
sql
;
// query sql string
jmp_buf
env
;
// jump to this position when error happens.
EOPTR_EXEC_MODEL
execModel
;
// operator execution model [batch model|stream model]
struct
SOperatorInfo
*
pRoot
;
struct
SOperatorInfo
*
pRoot
;
}
SExecTaskInfo
;
}
SExecTaskInfo
;
...
@@ -248,13 +249,13 @@ typedef struct SLoadRemoteDataInfo {
...
@@ -248,13 +249,13 @@ typedef struct SLoadRemoteDataInfo {
}
SLoadRemoteDataInfo
;
}
SLoadRemoteDataInfo
;
typedef
struct
SLimitInfo
{
typedef
struct
SLimitInfo
{
SLimit
limit
;
SLimit
limit
;
SLimit
slimit
;
SLimit
slimit
;
uint64_t
currentGroupId
;
uint64_t
currentGroupId
;
int64_t
remainGroupOffset
;
int64_t
remainGroupOffset
;
int64_t
numOfOutputGroups
;
int64_t
numOfOutputGroups
;
int64_t
remainOffset
;
int64_t
remainOffset
;
int64_t
numOfOutputRows
;
int64_t
numOfOutputRows
;
}
SLimitInfo
;
}
SLimitInfo
;
typedef
struct
SExchangeInfo
{
typedef
struct
SExchangeInfo
{
...
...
source/libs/executor/src/cachescanoperator.c
浏览文件 @
8bca99da
...
@@ -227,14 +227,14 @@ int32_t extractTargetSlotId(const SArray* pColMatchInfo, SExecTaskInfo* pTaskInf
...
@@ -227,14 +227,14 @@ int32_t extractTargetSlotId(const SArray* pColMatchInfo, SExecTaskInfo* pTaskInf
for
(
int32_t
i
=
0
;
i
<
numOfCols
;
++
i
)
{
for
(
int32_t
i
=
0
;
i
<
numOfCols
;
++
i
)
{
SColMatchInfo
*
pColMatch
=
taosArrayGet
(
pColMatchInfo
,
i
);
SColMatchInfo
*
pColMatch
=
taosArrayGet
(
pColMatchInfo
,
i
);
for
(
int32_t
j
=
0
;
j
<
pTaskInfo
->
schema
Ver
.
sw
->
nCols
;
++
j
)
{
for
(
int32_t
j
=
0
;
j
<
pTaskInfo
->
schema
Info
.
sw
->
nCols
;
++
j
)
{
if
(
pColMatch
->
colId
==
pTaskInfo
->
schema
Ver
.
sw
->
pSchema
[
j
].
colId
&&
if
(
pColMatch
->
colId
==
pTaskInfo
->
schema
Info
.
sw
->
pSchema
[
j
].
colId
&&
pColMatch
->
colId
==
PRIMARYKEY_TIMESTAMP_COL_ID
)
{
pColMatch
->
colId
==
PRIMARYKEY_TIMESTAMP_COL_ID
)
{
(
*
pSlotIds
)[
pColMatch
->
targetSlotId
]
=
-
1
;
(
*
pSlotIds
)[
pColMatch
->
targetSlotId
]
=
-
1
;
break
;
break
;
}
}
if
(
pColMatch
->
colId
==
pTaskInfo
->
schema
Ver
.
sw
->
pSchema
[
j
].
colId
)
{
if
(
pColMatch
->
colId
==
pTaskInfo
->
schema
Info
.
sw
->
pSchema
[
j
].
colId
)
{
(
*
pSlotIds
)[
pColMatch
->
targetSlotId
]
=
j
;
(
*
pSlotIds
)[
pColMatch
->
targetSlotId
]
=
j
;
break
;
break
;
}
}
...
...
source/libs/executor/src/dataDispatcher.c
浏览文件 @
8bca99da
...
@@ -67,15 +67,15 @@ static bool needCompress(const SSDataBlock* pData, int32_t numOfCols) {
...
@@ -67,15 +67,15 @@ static bool needCompress(const SSDataBlock* pData, int32_t numOfCols) {
return
false
;
return
false
;
}
}
// clang-format off
// data format:
// data format:
// +----------------+--------------+----------+--------------------------------------------+--------------------------------------+-------------+-----------+-------------+-----------+
// +----------------+--------------+-----------------+--------------------------------------------+------------------------------------+-------------+-----------+-------------+-----------+
// |SDataCacheEntry | total length | group id | col1_schema | col2_schema | col3_schema ...| column#1 length, column#2
// |SDataCacheEntry | total length | group id | col1_schema | col2_schema | col3_schema... | column#1 length, column#2 length...| col1 bitmap | col1 data | col2 bitmap | col2 data | .... | | (4 bytes) |(8 bytes)
// length ... | col1 bitmap | col1 data | col2 bitmap | col2 data | .... | | (4 bytes) |(8 bytes)
// | |sizeof(int32) |sizeof(uint64_t) |(sizeof(int16_t)+sizeof(int32_t))*numOfCols | sizeof(int32_t) * numOfCols | actual size | |
// |(sizeof(int16_t)+sizeof(int32_t))*numOfCols | sizeof(int32_t) * numOfCols | actual size | |
// +----------------+--------------+-----------------+--------------------------------------------+------------------------------------+-------------+-----------+-------------+-----------+
// actual size | |
// +----------------+--------------+----------+--------------------------------------------+--------------------------------------+-------------+-----------+-------------+-----------+
// The length of bitmap is decided by number of rows of this data block, and the length of each column data is
// The length of bitmap is decided by number of rows of this data block, and the length of each column data is
// recorded in the first segment, next to the struct header
// recorded in the first segment, next to the struct header
// clang-format on
static
void
toDataCacheEntry
(
SDataDispatchHandle
*
pHandle
,
const
SInputData
*
pInput
,
SDataDispatchBuf
*
pBuf
)
{
static
void
toDataCacheEntry
(
SDataDispatchHandle
*
pHandle
,
const
SInputData
*
pInput
,
SDataDispatchBuf
*
pBuf
)
{
int32_t
numOfCols
=
0
;
int32_t
numOfCols
=
0
;
SNode
*
pNode
;
SNode
*
pNode
;
...
...
source/libs/executor/src/executor.c
浏览文件 @
8bca99da
...
@@ -104,27 +104,40 @@ int32_t qSetMultiStreamInput(qTaskInfo_t tinfo, const void* pBlocks, size_t numO
...
@@ -104,27 +104,40 @@ int32_t qSetMultiStreamInput(qTaskInfo_t tinfo, const void* pBlocks, size_t numO
return
code
;
return
code
;
}
}
qTaskInfo_t
qCreateQueueExecTaskInfo
(
void
*
msg
,
SReadHandle
*
readers
)
{
qTaskInfo_t
qCreateQueueExecTaskInfo
(
void
*
msg
,
SReadHandle
*
readers
,
int32_t
*
numOfCols
)
{
if
(
msg
==
NULL
)
{
if
(
msg
==
NULL
)
{
// TODO create raw scan
// TODO create raw scan
return
NULL
;
return
NULL
;
}
}
struct
SSubplan
*
plan
=
NULL
;
struct
SSubplan
*
p
P
lan
=
NULL
;
int32_t
code
=
qStringToSubplan
(
msg
,
&
plan
);
int32_t
code
=
qStringToSubplan
(
msg
,
&
p
P
lan
);
if
(
code
!=
TSDB_CODE_SUCCESS
)
{
if
(
code
!=
TSDB_CODE_SUCCESS
)
{
terrno
=
code
;
terrno
=
code
;
return
NULL
;
return
NULL
;
}
}
qTaskInfo_t
pTaskInfo
=
NULL
;
qTaskInfo_t
pTaskInfo
=
NULL
;
code
=
qCreateExecTask
(
readers
,
0
,
0
,
plan
,
&
pTaskInfo
,
NULL
,
NULL
,
OPTR_EXEC_MODEL_QUEUE
);
code
=
qCreateExecTask
(
readers
,
0
,
0
,
p
P
lan
,
&
pTaskInfo
,
NULL
,
NULL
,
OPTR_EXEC_MODEL_QUEUE
);
if
(
code
!=
TSDB_CODE_SUCCESS
)
{
if
(
code
!=
TSDB_CODE_SUCCESS
)
{
// TODO: destroy SSubplan & pTaskInfo
nodesDestroyNode
((
SNode
*
)
pPlan
);
qDestroyTask
(
pTaskInfo
);
terrno
=
code
;
terrno
=
code
;
return
NULL
;
return
NULL
;
}
}
// extract the number of output columns
SDataBlockDescNode
*
pDescNode
=
pPlan
->
pNode
->
pOutputDataBlockDesc
;
*
numOfCols
=
0
;
SNode
*
pNode
;
FOREACH
(
pNode
,
pDescNode
->
pSlots
)
{
SSlotDescNode
*
pSlotDesc
=
(
SSlotDescNode
*
)
pNode
;
if
(
pSlotDesc
->
output
)
{
++
(
*
numOfCols
);
}
}
return
pTaskInfo
;
return
pTaskInfo
;
}
}
...
@@ -135,17 +148,18 @@ qTaskInfo_t qCreateStreamExecTaskInfo(void* msg, SReadHandle* readers) {
...
@@ -135,17 +148,18 @@ qTaskInfo_t qCreateStreamExecTaskInfo(void* msg, SReadHandle* readers) {
/*qDebugL("stream task string %s", (const char*)msg);*/
/*qDebugL("stream task string %s", (const char*)msg);*/
struct
SSubplan
*
plan
=
NULL
;
struct
SSubplan
*
p
P
lan
=
NULL
;
int32_t
code
=
qStringToSubplan
(
msg
,
&
plan
);
int32_t
code
=
qStringToSubplan
(
msg
,
&
p
P
lan
);
if
(
code
!=
TSDB_CODE_SUCCESS
)
{
if
(
code
!=
TSDB_CODE_SUCCESS
)
{
terrno
=
code
;
terrno
=
code
;
return
NULL
;
return
NULL
;
}
}
qTaskInfo_t
pTaskInfo
=
NULL
;
qTaskInfo_t
pTaskInfo
=
NULL
;
code
=
qCreateExecTask
(
readers
,
0
,
0
,
plan
,
&
pTaskInfo
,
NULL
,
NULL
,
OPTR_EXEC_MODEL_STREAM
);
code
=
qCreateExecTask
(
readers
,
0
,
0
,
p
P
lan
,
&
pTaskInfo
,
NULL
,
NULL
,
OPTR_EXEC_MODEL_STREAM
);
if
(
code
!=
TSDB_CODE_SUCCESS
)
{
if
(
code
!=
TSDB_CODE_SUCCESS
)
{
// TODO: destroy SSubplan & pTaskInfo
nodesDestroyNode
((
SNode
*
)
pPlan
);
qDestroyTask
(
pTaskInfo
);
terrno
=
code
;
terrno
=
code
;
return
NULL
;
return
NULL
;
}
}
...
@@ -227,19 +241,19 @@ int32_t qGetQueryTableSchemaVersion(qTaskInfo_t tinfo, char* dbName, char* table
...
@@ -227,19 +241,19 @@ int32_t qGetQueryTableSchemaVersion(qTaskInfo_t tinfo, char* dbName, char* table
ASSERT
(
tinfo
!=
NULL
&&
dbName
!=
NULL
&&
tableName
!=
NULL
);
ASSERT
(
tinfo
!=
NULL
&&
dbName
!=
NULL
&&
tableName
!=
NULL
);
SExecTaskInfo
*
pTaskInfo
=
(
SExecTaskInfo
*
)
tinfo
;
SExecTaskInfo
*
pTaskInfo
=
(
SExecTaskInfo
*
)
tinfo
;
if
(
pTaskInfo
->
schema
Ver
.
sw
==
NULL
)
{
if
(
pTaskInfo
->
schema
Info
.
sw
==
NULL
)
{
return
TSDB_CODE_SUCCESS
;
return
TSDB_CODE_SUCCESS
;
}
}
*
sversion
=
pTaskInfo
->
schema
Ver
.
sw
->
version
;
*
sversion
=
pTaskInfo
->
schema
Info
.
sw
->
version
;
*
tversion
=
pTaskInfo
->
schema
Ver
.
tversion
;
*
tversion
=
pTaskInfo
->
schema
Info
.
tversion
;
if
(
pTaskInfo
->
schema
Ver
.
dbname
)
{
if
(
pTaskInfo
->
schema
Info
.
dbname
)
{
strcpy
(
dbName
,
pTaskInfo
->
schema
Ver
.
dbname
);
strcpy
(
dbName
,
pTaskInfo
->
schema
Info
.
dbname
);
}
else
{
}
else
{
dbName
[
0
]
=
0
;
dbName
[
0
]
=
0
;
}
}
if
(
pTaskInfo
->
schema
Ver
.
tablename
)
{
if
(
pTaskInfo
->
schema
Info
.
tablename
)
{
strcpy
(
tableName
,
pTaskInfo
->
schema
Ver
.
tablename
);
strcpy
(
tableName
,
pTaskInfo
->
schema
Info
.
tablename
);
}
else
{
}
else
{
tableName
[
0
]
=
0
;
tableName
[
0
]
=
0
;
}
}
...
...
source/libs/executor/src/executorMain.c
浏览文件 @
8bca99da
...
@@ -39,6 +39,7 @@ int32_t qCreateExecTask(SReadHandle* readHandle, int32_t vgId, uint64_t taskId,
...
@@ -39,6 +39,7 @@ int32_t qCreateExecTask(SReadHandle* readHandle, int32_t vgId, uint64_t taskId,
taosThreadOnce
(
&
initPoolOnce
,
initRefPool
);
taosThreadOnce
(
&
initPoolOnce
,
initRefPool
);
atexit
(
cleanupRefPool
);
atexit
(
cleanupRefPool
);
int32_t
code
=
createExecTaskInfoImpl
(
pSubplan
,
pTask
,
readHandle
,
taskId
,
sql
,
model
);
int32_t
code
=
createExecTaskInfoImpl
(
pSubplan
,
pTask
,
readHandle
,
taskId
,
sql
,
model
);
if
(
code
!=
TSDB_CODE_SUCCESS
)
{
if
(
code
!=
TSDB_CODE_SUCCESS
)
{
goto
_error
;
goto
_error
;
...
...
source/libs/executor/src/executorimpl.c
浏览文件 @
8bca99da
...
@@ -1337,7 +1337,9 @@ void doFilter(const SNode* pFilterNode, SSDataBlock* pBlock) {
...
@@ -1337,7 +1337,9 @@ void doFilter(const SNode* pFilterNode, SSDataBlock* pBlock) {
if
(
pFilterNode
==
NULL
)
{
if
(
pFilterNode
==
NULL
)
{
return
;
return
;
}
}
if
(
pBlock
->
info
.
rows
==
0
)
{
return
;
}
SFilterInfo
*
filter
=
NULL
;
SFilterInfo
*
filter
=
NULL
;
// todo move to the initialization function
// todo move to the initialization function
...
@@ -4121,7 +4123,7 @@ static SExecTaskInfo* createExecTaskInfo(uint64_t queryId, uint64_t taskId, EOPT
...
@@ -4121,7 +4123,7 @@ static SExecTaskInfo* createExecTaskInfo(uint64_t queryId, uint64_t taskId, EOPT
SExecTaskInfo
*
pTaskInfo
=
taosMemoryCalloc
(
1
,
sizeof
(
SExecTaskInfo
));
SExecTaskInfo
*
pTaskInfo
=
taosMemoryCalloc
(
1
,
sizeof
(
SExecTaskInfo
));
setTaskStatus
(
pTaskInfo
,
TASK_NOT_COMPLETED
);
setTaskStatus
(
pTaskInfo
,
TASK_NOT_COMPLETED
);
pTaskInfo
->
schema
Ver
.
dbname
=
strdup
(
dbFName
);
pTaskInfo
->
schema
Info
.
dbname
=
strdup
(
dbFName
);
pTaskInfo
->
cost
.
created
=
taosGetTimestampMs
();
pTaskInfo
->
cost
.
created
=
taosGetTimestampMs
();
pTaskInfo
->
id
.
queryId
=
queryId
;
pTaskInfo
->
id
.
queryId
=
queryId
;
pTaskInfo
->
execModel
=
model
;
pTaskInfo
->
execModel
=
model
;
...
@@ -4147,35 +4149,35 @@ int32_t extractTableSchemaInfo(SReadHandle* pHandle, uint64_t uid, SExecTaskInfo
...
@@ -4147,35 +4149,35 @@ int32_t extractTableSchemaInfo(SReadHandle* pHandle, uint64_t uid, SExecTaskInfo
return
terrno
;
return
terrno
;
}
}
pTaskInfo
->
schema
Ver
.
tablename
=
strdup
(
mr
.
me
.
name
);
pTaskInfo
->
schema
Info
.
tablename
=
strdup
(
mr
.
me
.
name
);
if
(
mr
.
me
.
type
==
TSDB_SUPER_TABLE
)
{
if
(
mr
.
me
.
type
==
TSDB_SUPER_TABLE
)
{
pTaskInfo
->
schema
Ver
.
sw
=
tCloneSSchemaWrapper
(
&
mr
.
me
.
stbEntry
.
schemaRow
);
pTaskInfo
->
schema
Info
.
sw
=
tCloneSSchemaWrapper
(
&
mr
.
me
.
stbEntry
.
schemaRow
);
pTaskInfo
->
schema
Ver
.
tversion
=
mr
.
me
.
stbEntry
.
schemaTag
.
version
;
pTaskInfo
->
schema
Info
.
tversion
=
mr
.
me
.
stbEntry
.
schemaTag
.
version
;
}
else
if
(
mr
.
me
.
type
==
TSDB_CHILD_TABLE
)
{
}
else
if
(
mr
.
me
.
type
==
TSDB_CHILD_TABLE
)
{
tDecoderClear
(
&
mr
.
coder
);
tDecoderClear
(
&
mr
.
coder
);
tb_uid_t
suid
=
mr
.
me
.
ctbEntry
.
suid
;
tb_uid_t
suid
=
mr
.
me
.
ctbEntry
.
suid
;
metaGetTableEntryByUid
(
&
mr
,
suid
);
metaGetTableEntryByUid
(
&
mr
,
suid
);
pTaskInfo
->
schema
Ver
.
sw
=
tCloneSSchemaWrapper
(
&
mr
.
me
.
stbEntry
.
schemaRow
);
pTaskInfo
->
schema
Info
.
sw
=
tCloneSSchemaWrapper
(
&
mr
.
me
.
stbEntry
.
schemaRow
);
pTaskInfo
->
schema
Ver
.
tversion
=
mr
.
me
.
stbEntry
.
schemaTag
.
version
;
pTaskInfo
->
schema
Info
.
tversion
=
mr
.
me
.
stbEntry
.
schemaTag
.
version
;
}
else
{
}
else
{
pTaskInfo
->
schema
Ver
.
sw
=
tCloneSSchemaWrapper
(
&
mr
.
me
.
ntbEntry
.
schemaRow
);
pTaskInfo
->
schema
Info
.
sw
=
tCloneSSchemaWrapper
(
&
mr
.
me
.
ntbEntry
.
schemaRow
);
}
}
metaReaderClear
(
&
mr
);
metaReaderClear
(
&
mr
);
return
TSDB_CODE_SUCCESS
;
return
TSDB_CODE_SUCCESS
;
}
}
static
void
cleanupTableSchemaInfo
(
S
ExecTaskInfo
*
pTask
Info
)
{
static
void
cleanupTableSchemaInfo
(
S
SchemaInfo
*
pSchema
Info
)
{
taosMemoryFreeClear
(
p
TaskInfo
->
schemaVer
.
dbname
);
taosMemoryFreeClear
(
p
SchemaInfo
->
dbname
);
if
(
p
TaskInfo
->
schemaVer
.
sw
==
NULL
)
{
if
(
p
SchemaInfo
->
sw
==
NULL
)
{
return
;
return
;
}
}
taosMemoryFree
(
p
TaskInfo
->
schemaVer
.
sw
->
pSchema
);
taosMemoryFree
(
p
SchemaInfo
->
tablename
);
taosMemoryFree
(
p
TaskInfo
->
schemaVer
.
sw
);
taosMemoryFree
(
p
SchemaInfo
->
sw
->
pSchema
);
taosMemoryFree
(
p
TaskInfo
->
schemaVer
.
tablename
);
taosMemoryFree
(
p
SchemaInfo
->
sw
);
}
}
static
int32_t
sortTableGroup
(
STableListInfo
*
pTableListInfo
,
int32_t
groupNum
)
{
static
int32_t
sortTableGroup
(
STableListInfo
*
pTableListInfo
,
int32_t
groupNum
)
{
...
@@ -4933,6 +4935,7 @@ int32_t createExecTaskInfoImpl(SSubplan* pPlan, SExecTaskInfo** pTaskInfo, SRead
...
@@ -4933,6 +4935,7 @@ int32_t createExecTaskInfoImpl(SSubplan* pPlan, SExecTaskInfo** pTaskInfo, SRead
}
}
(
*
pTaskInfo
)
->
sql
=
sql
;
(
*
pTaskInfo
)
->
sql
=
sql
;
(
*
pTaskInfo
)
->
pSubplan
=
pPlan
;
(
*
pTaskInfo
)
->
pRoot
=
createOperatorTree
(
pPlan
->
pNode
,
*
pTaskInfo
,
pHandle
,
&
(
*
pTaskInfo
)
->
tableqinfoList
,
pPlan
->
pTagCond
,
pPlan
->
pTagIndexCond
,
pPlan
->
user
);
(
*
pTaskInfo
)
->
pRoot
=
createOperatorTree
(
pPlan
->
pNode
,
*
pTaskInfo
,
pHandle
,
&
(
*
pTaskInfo
)
->
tableqinfoList
,
pPlan
->
pTagCond
,
pPlan
->
pTagIndexCond
,
pPlan
->
user
);
if
(
NULL
==
(
*
pTaskInfo
)
->
pRoot
)
{
if
(
NULL
==
(
*
pTaskInfo
)
->
pRoot
)
{
...
@@ -4971,7 +4974,9 @@ void doDestroyTask(SExecTaskInfo* pTaskInfo) {
...
@@ -4971,7 +4974,9 @@ void doDestroyTask(SExecTaskInfo* pTaskInfo) {
doDestroyTableList
(
&
pTaskInfo
->
tableqinfoList
);
doDestroyTableList
(
&
pTaskInfo
->
tableqinfoList
);
destroyOperatorInfo
(
pTaskInfo
->
pRoot
);
destroyOperatorInfo
(
pTaskInfo
->
pRoot
);
cleanupTableSchemaInfo
(
pTaskInfo
);
cleanupTableSchemaInfo
(
&
pTaskInfo
->
schemaInfo
);
nodesDestroyNode
((
SNode
*
)
pTaskInfo
->
pSubplan
);
taosMemoryFreeClear
(
pTaskInfo
->
sql
);
taosMemoryFreeClear
(
pTaskInfo
->
sql
);
taosMemoryFreeClear
(
pTaskInfo
->
id
.
str
);
taosMemoryFreeClear
(
pTaskInfo
->
id
.
str
);
...
...
source/libs/executor/src/timewindowoperator.c
浏览文件 @
8bca99da
...
@@ -1543,6 +1543,7 @@ void destroyStreamFinalIntervalOperatorInfo(void* param, int32_t numOfOutput) {
...
@@ -1543,6 +1543,7 @@ void destroyStreamFinalIntervalOperatorInfo(void* param, int32_t numOfOutput) {
taosArrayDestroy
(
pInfo
->
pPullWins
);
taosArrayDestroy
(
pInfo
->
pPullWins
);
blockDataDestroy
(
pInfo
->
pPullDataRes
);
blockDataDestroy
(
pInfo
->
pPullDataRes
);
taosArrayDestroy
(
pInfo
->
pRecycledPages
);
taosArrayDestroy
(
pInfo
->
pRecycledPages
);
blockDataDestroy
(
pInfo
->
pUpdateRes
);
if
(
pInfo
->
pChildren
)
{
if
(
pInfo
->
pChildren
)
{
int32_t
size
=
taosArrayGetSize
(
pInfo
->
pChildren
);
int32_t
size
=
taosArrayGetSize
(
pInfo
->
pChildren
);
...
...
source/libs/function/src/builtins.c
浏览文件 @
8bca99da
...
@@ -192,9 +192,9 @@ static bool validateTimezoneFormat(const SValueNode* pVal) {
...
@@ -192,9 +192,9 @@ static bool validateTimezoneFormat(const SValueNode* pVal) {
}
}
void
static
addTimezoneParam
(
SNodeList
*
pList
)
{
void
static
addTimezoneParam
(
SNodeList
*
pList
)
{
char
buf
[
6
]
=
{
0
};
char
buf
[
6
]
=
{
0
};
time_t
t
=
taosTime
(
NULL
);
time_t
t
=
taosTime
(
NULL
);
struct
tm
tmInfo
;
struct
tm
tmInfo
;
taosLocalTime
(
&
t
,
&
tmInfo
);
taosLocalTime
(
&
t
,
&
tmInfo
);
strftime
(
buf
,
sizeof
(
buf
),
"%z"
,
&
tmInfo
);
strftime
(
buf
,
sizeof
(
buf
),
"%z"
,
&
tmInfo
);
int32_t
len
=
(
int32_t
)
strlen
(
buf
);
int32_t
len
=
(
int32_t
)
strlen
(
buf
);
...
@@ -976,7 +976,7 @@ static int32_t translateHistogram(SFunctionNode* pFunc, char* pErrBuf, int32_t l
...
@@ -976,7 +976,7 @@ static int32_t translateHistogram(SFunctionNode* pFunc, char* pErrBuf, int32_t l
// param1 ~ param3
// param1 ~ param3
if
(((
SExprNode
*
)
nodesListGetNode
(
pFunc
->
pParameterList
,
1
))
->
resType
.
type
!=
TSDB_DATA_TYPE_BINARY
||
if
(((
SExprNode
*
)
nodesListGetNode
(
pFunc
->
pParameterList
,
1
))
->
resType
.
type
!=
TSDB_DATA_TYPE_BINARY
||
((
SExprNode
*
)
nodesListGetNode
(
pFunc
->
pParameterList
,
2
))
->
resType
.
type
!=
TSDB_DATA_TYPE_BINARY
||
((
SExprNode
*
)
nodesListGetNode
(
pFunc
->
pParameterList
,
2
))
->
resType
.
type
!=
TSDB_DATA_TYPE_BINARY
||
((
SExprNode
*
)
nodesListGetNode
(
pFunc
->
pParameterList
,
3
))
->
resType
.
type
!=
TSDB_DATA_TYPE_BIGINT
)
{
!
IS_INTEGER_TYPE
(((
SExprNode
*
)
nodesListGetNode
(
pFunc
->
pParameterList
,
3
))
->
resType
.
type
)
)
{
return
invaildFuncParaTypeErrMsg
(
pErrBuf
,
len
,
pFunc
->
functionName
);
return
invaildFuncParaTypeErrMsg
(
pErrBuf
,
len
,
pFunc
->
functionName
);
}
}
...
@@ -1034,7 +1034,7 @@ static int32_t translateHistogramImpl(SFunctionNode* pFunc, char* pErrBuf, int32
...
@@ -1034,7 +1034,7 @@ static int32_t translateHistogramImpl(SFunctionNode* pFunc, char* pErrBuf, int32
// param1 ~ param3
// param1 ~ param3
if
(((
SExprNode
*
)
nodesListGetNode
(
pFunc
->
pParameterList
,
1
))
->
resType
.
type
!=
TSDB_DATA_TYPE_BINARY
||
if
(((
SExprNode
*
)
nodesListGetNode
(
pFunc
->
pParameterList
,
1
))
->
resType
.
type
!=
TSDB_DATA_TYPE_BINARY
||
((
SExprNode
*
)
nodesListGetNode
(
pFunc
->
pParameterList
,
2
))
->
resType
.
type
!=
TSDB_DATA_TYPE_BINARY
||
((
SExprNode
*
)
nodesListGetNode
(
pFunc
->
pParameterList
,
2
))
->
resType
.
type
!=
TSDB_DATA_TYPE_BINARY
||
((
SExprNode
*
)
nodesListGetNode
(
pFunc
->
pParameterList
,
3
))
->
resType
.
type
!=
TSDB_DATA_TYPE_BIGINT
)
{
!
IS_INTEGER_TYPE
(((
SExprNode
*
)
nodesListGetNode
(
pFunc
->
pParameterList
,
3
))
->
resType
.
type
)
)
{
return
invaildFuncParaTypeErrMsg
(
pErrBuf
,
len
,
pFunc
->
functionName
);
return
invaildFuncParaTypeErrMsg
(
pErrBuf
,
len
,
pFunc
->
functionName
);
}
}
...
@@ -1133,9 +1133,10 @@ static bool validateStateOper(const SValueNode* pVal) {
...
@@ -1133,9 +1133,10 @@ static bool validateStateOper(const SValueNode* pVal) {
if
(
TSDB_DATA_TYPE_BINARY
!=
pVal
->
node
.
resType
.
type
)
{
if
(
TSDB_DATA_TYPE_BINARY
!=
pVal
->
node
.
resType
.
type
)
{
return
false
;
return
false
;
}
}
return
(
0
==
strncasecmp
(
varDataVal
(
pVal
->
datum
.
p
),
"GT"
,
2
)
||
0
==
strncasecmp
(
varDataVal
(
pVal
->
datum
.
p
),
"GE"
,
2
)
||
return
(
0
==
strncasecmp
(
varDataVal
(
pVal
->
datum
.
p
),
"LT"
,
2
)
||
0
==
strncasecmp
(
varDataVal
(
pVal
->
datum
.
p
),
"LE"
,
2
)
||
0
==
strncasecmp
(
varDataVal
(
pVal
->
datum
.
p
),
"GT"
,
2
)
||
0
==
strncasecmp
(
varDataVal
(
pVal
->
datum
.
p
),
"GE"
,
2
)
||
0
==
strncasecmp
(
varDataVal
(
pVal
->
datum
.
p
),
"EQ"
,
2
)
||
0
==
strncasecmp
(
varDataVal
(
pVal
->
datum
.
p
),
"NE"
,
2
));
0
==
strncasecmp
(
varDataVal
(
pVal
->
datum
.
p
),
"LT"
,
2
)
||
0
==
strncasecmp
(
varDataVal
(
pVal
->
datum
.
p
),
"LE"
,
2
)
||
0
==
strncasecmp
(
varDataVal
(
pVal
->
datum
.
p
),
"EQ"
,
2
)
||
0
==
strncasecmp
(
varDataVal
(
pVal
->
datum
.
p
),
"NE"
,
2
));
}
}
static
int32_t
translateStateCount
(
SFunctionNode
*
pFunc
,
char
*
pErrBuf
,
int32_t
len
)
{
static
int32_t
translateStateCount
(
SFunctionNode
*
pFunc
,
char
*
pErrBuf
,
int32_t
len
)
{
...
@@ -1348,7 +1349,8 @@ static int32_t translateTail(SFunctionNode* pFunc, char* pErrBuf, int32_t len) {
...
@@ -1348,7 +1349,8 @@ static int32_t translateTail(SFunctionNode* pFunc, char* pErrBuf, int32_t len) {
SValueNode
*
pValue
=
(
SValueNode
*
)
pParamNode
;
SValueNode
*
pValue
=
(
SValueNode
*
)
pParamNode
;
if
(
pValue
->
datum
.
i
<
((
i
>
1
)
?
0
:
1
)
||
pValue
->
datum
.
i
>
100
)
{
if
((
IS_SIGNED_NUMERIC_TYPE
(
pValue
->
node
.
resType
.
type
)
?
pValue
->
datum
.
i
:
pValue
->
datum
.
u
)
<
((
i
>
1
)
?
0
:
1
)
||
(
IS_SIGNED_NUMERIC_TYPE
(
pValue
->
node
.
resType
.
type
)
?
pValue
->
datum
.
i
:
pValue
->
datum
.
u
)
>
100
)
{
return
buildFuncErrMsg
(
pErrBuf
,
len
,
TSDB_CODE_FUNC_FUNTION_ERROR
,
return
buildFuncErrMsg
(
pErrBuf
,
len
,
TSDB_CODE_FUNC_FUNTION_ERROR
,
"TAIL function second parameter should be in range [1, 100], "
"TAIL function second parameter should be in range [1, 100], "
"third parameter should be in range [0, 100]"
);
"third parameter should be in range [0, 100]"
);
...
@@ -1646,9 +1648,9 @@ static int32_t translateCast(SFunctionNode* pFunc, char* pErrBuf, int32_t len) {
...
@@ -1646,9 +1648,9 @@ static int32_t translateCast(SFunctionNode* pFunc, char* pErrBuf, int32_t len) {
if
(
IS_VAR_DATA_TYPE
(
para2Type
))
{
if
(
IS_VAR_DATA_TYPE
(
para2Type
))
{
para2Bytes
-=
VARSTR_HEADER_SIZE
;
para2Bytes
-=
VARSTR_HEADER_SIZE
;
}
}
if
(
para2Bytes
<=
0
||
para2Bytes
>
1000
)
{
// cast dst var type length limits to 1000
if
(
para2Bytes
<=
0
||
para2Bytes
>
4096
)
{
// cast dst var type length limits to 4096 bytes
return
buildFuncErrMsg
(
pErrBuf
,
len
,
TSDB_CODE_FUNC_FUNTION_ERROR
,
return
buildFuncErrMsg
(
pErrBuf
,
len
,
TSDB_CODE_FUNC_FUNTION_ERROR
,
"CAST function converted length should be in range [0,
1000]
"
);
"CAST function converted length should be in range [0,
4096] bytes
"
);
}
}
// add database precision as param
// add database precision as param
...
...
source/libs/function/src/builtinsimpl.c
浏览文件 @
8bca99da
...
@@ -80,7 +80,7 @@ typedef struct STopBotRes {
...
@@ -80,7 +80,7 @@ typedef struct STopBotRes {
}
STopBotRes
;
}
STopBotRes
;
typedef
struct
SFirstLastRes
{
typedef
struct
SFirstLastRes
{
bool
hasResult
;
bool
hasResult
;
// used for last_row function only, isNullRes in SResultRowEntry can not be passed to downstream.So,
// used for last_row function only, isNullRes in SResultRowEntry can not be passed to downstream.So,
// this attribute is required
// this attribute is required
bool
isNull
;
bool
isNull
;
...
@@ -2380,7 +2380,8 @@ int32_t percentileFunction(SqlFunctionCtx* pCtx) {
...
@@ -2380,7 +2380,8 @@ int32_t percentileFunction(SqlFunctionCtx* pCtx) {
int32_t
percentileFinalize
(
SqlFunctionCtx
*
pCtx
,
SSDataBlock
*
pBlock
)
{
int32_t
percentileFinalize
(
SqlFunctionCtx
*
pCtx
,
SSDataBlock
*
pBlock
)
{
SVariant
*
pVal
=
&
pCtx
->
param
[
1
].
param
;
SVariant
*
pVal
=
&
pCtx
->
param
[
1
].
param
;
double
v
=
(
pVal
->
nType
==
TSDB_DATA_TYPE_BIGINT
)
?
pVal
->
i
:
pVal
->
d
;
double
v
=
(
IS_SIGNED_NUMERIC_TYPE
(
pVal
->
nType
)
?
pVal
->
i
:
(
IS_UNSIGNED_NUMERIC_TYPE
(
pVal
->
nType
)
?
pVal
->
u
:
pVal
->
d
));
SResultRowEntryInfo
*
pResInfo
=
GET_RES_INFO
(
pCtx
);
SResultRowEntryInfo
*
pResInfo
=
GET_RES_INFO
(
pCtx
);
SPercentileInfo
*
ppInfo
=
(
SPercentileInfo
*
)
GET_ROWCELL_INTERBUF
(
pResInfo
);
SPercentileInfo
*
ppInfo
=
(
SPercentileInfo
*
)
GET_ROWCELL_INTERBUF
(
pResInfo
);
...
@@ -2439,7 +2440,8 @@ bool apercentileFunctionSetup(SqlFunctionCtx* pCtx, SResultRowEntryInfo* pResult
...
@@ -2439,7 +2440,8 @@ bool apercentileFunctionSetup(SqlFunctionCtx* pCtx, SResultRowEntryInfo* pResult
SAPercentileInfo
*
pInfo
=
GET_ROWCELL_INTERBUF
(
pResultInfo
);
SAPercentileInfo
*
pInfo
=
GET_ROWCELL_INTERBUF
(
pResultInfo
);
SVariant
*
pVal
=
&
pCtx
->
param
[
1
].
param
;
SVariant
*
pVal
=
&
pCtx
->
param
[
1
].
param
;
pInfo
->
percent
=
(
pVal
->
nType
==
TSDB_DATA_TYPE_BIGINT
)
?
pVal
->
i
:
pVal
->
d
;
pInfo
->
percent
=
(
IS_SIGNED_NUMERIC_TYPE
(
pVal
->
nType
)
?
pVal
->
i
:
(
IS_UNSIGNED_NUMERIC_TYPE
(
pVal
->
nType
)
?
pVal
->
u
:
pVal
->
d
));
if
(
pCtx
->
numOfParams
==
2
)
{
if
(
pCtx
->
numOfParams
==
2
)
{
pInfo
->
algo
=
APERCT_ALGO_DEFAULT
;
pInfo
->
algo
=
APERCT_ALGO_DEFAULT
;
...
@@ -2640,9 +2642,7 @@ int32_t apercentileCombine(SqlFunctionCtx* pDestCtx, SqlFunctionCtx* pSourceCtx)
...
@@ -2640,9 +2642,7 @@ int32_t apercentileCombine(SqlFunctionCtx* pDestCtx, SqlFunctionCtx* pSourceCtx)
return
TSDB_CODE_SUCCESS
;
return
TSDB_CODE_SUCCESS
;
}
}
int32_t
getFirstLastInfoSize
(
int32_t
resBytes
)
{
int32_t
getFirstLastInfoSize
(
int32_t
resBytes
)
{
return
sizeof
(
SFirstLastRes
)
+
resBytes
;
}
return
sizeof
(
SFirstLastRes
)
+
resBytes
;
}
bool
getFirstLastFuncEnv
(
SFunctionNode
*
pFunc
,
SFuncExecEnv
*
pEnv
)
{
bool
getFirstLastFuncEnv
(
SFunctionNode
*
pFunc
,
SFuncExecEnv
*
pEnv
)
{
SColumnNode
*
pNode
=
(
SColumnNode
*
)
nodesListGetNode
(
pFunc
->
pParameterList
,
0
);
SColumnNode
*
pNode
=
(
SColumnNode
*
)
nodesListGetNode
(
pFunc
->
pParameterList
,
0
);
...
@@ -2968,7 +2968,7 @@ int32_t firstLastPartialFinalize(SqlFunctionCtx* pCtx, SSDataBlock* pBlock) {
...
@@ -2968,7 +2968,7 @@ int32_t firstLastPartialFinalize(SqlFunctionCtx* pCtx, SSDataBlock* pBlock) {
return
1
;
return
1
;
}
}
//todo rewrite:
//
todo rewrite:
int32_t
lastCombine
(
SqlFunctionCtx
*
pDestCtx
,
SqlFunctionCtx
*
pSourceCtx
)
{
int32_t
lastCombine
(
SqlFunctionCtx
*
pDestCtx
,
SqlFunctionCtx
*
pSourceCtx
)
{
SResultRowEntryInfo
*
pDResInfo
=
GET_RES_INFO
(
pDestCtx
);
SResultRowEntryInfo
*
pDResInfo
=
GET_RES_INFO
(
pDestCtx
);
char
*
pDBuf
=
GET_ROWCELL_INTERBUF
(
pDResInfo
);
char
*
pDBuf
=
GET_ROWCELL_INTERBUF
(
pDResInfo
);
...
@@ -2986,7 +2986,7 @@ int32_t lastCombine(SqlFunctionCtx* pDestCtx, SqlFunctionCtx* pSourceCtx) {
...
@@ -2986,7 +2986,7 @@ int32_t lastCombine(SqlFunctionCtx* pDestCtx, SqlFunctionCtx* pSourceCtx) {
return
TSDB_CODE_SUCCESS
;
return
TSDB_CODE_SUCCESS
;
}
}
static
void
doSaveLastrow
(
SqlFunctionCtx
*
pCtx
,
char
*
pData
,
int32_t
rowIndex
,
int64_t
cts
,
SFirstLastRes
*
pInfo
)
{
static
void
doSaveLastrow
(
SqlFunctionCtx
*
pCtx
,
char
*
pData
,
int32_t
rowIndex
,
int64_t
cts
,
SFirstLastRes
*
pInfo
)
{
SInputColumnInfoData
*
pInput
=
&
pCtx
->
input
;
SInputColumnInfoData
*
pInput
=
&
pCtx
->
input
;
SColumnInfoData
*
pInputCol
=
pInput
->
pData
[
0
];
SColumnInfoData
*
pInputCol
=
pInput
->
pData
[
0
];
...
...
source/libs/nodes/src/nodesCodeFuncs.c
浏览文件 @
8bca99da
...
@@ -159,6 +159,8 @@ const char* nodesNodeName(ENodeType type) {
...
@@ -159,6 +159,8 @@ const char* nodesNodeName(ENodeType type) {
return
"ShowStreamsStmt"
;
return
"ShowStreamsStmt"
;
case
QUERY_NODE_SHOW_TABLES_STMT
:
case
QUERY_NODE_SHOW_TABLES_STMT
:
return
"ShowTablesStmt"
;
return
"ShowTablesStmt"
;
case
QUERY_NODE_SHOW_TAGS_STMT
:
return
"ShowTagsStmt"
;
case
QUERY_NODE_SHOW_USERS_STMT
:
case
QUERY_NODE_SHOW_USERS_STMT
:
return
"ShowUsersStmt"
;
return
"ShowUsersStmt"
;
case
QUERY_NODE_SHOW_LICENCE_STMT
:
case
QUERY_NODE_SHOW_LICENCE_STMT
:
...
@@ -4295,6 +4297,7 @@ static int32_t specificNodeToJson(const void* pObj, SJson* pJson) {
...
@@ -4295,6 +4297,7 @@ static int32_t specificNodeToJson(const void* pObj, SJson* pJson) {
return
alterDnodeStmtToJson
(
pObj
,
pJson
);
return
alterDnodeStmtToJson
(
pObj
,
pJson
);
case
QUERY_NODE_SHOW_DATABASES_STMT
:
case
QUERY_NODE_SHOW_DATABASES_STMT
:
case
QUERY_NODE_SHOW_TABLES_STMT
:
case
QUERY_NODE_SHOW_TABLES_STMT
:
case
QUERY_NODE_SHOW_TAGS_STMT
:
break
;
break
;
case
QUERY_NODE_CREATE_TOPIC_STMT
:
case
QUERY_NODE_CREATE_TOPIC_STMT
:
return
createTopicStmtToJson
(
pObj
,
pJson
);
return
createTopicStmtToJson
(
pObj
,
pJson
);
...
...
source/libs/nodes/src/nodesUtilFuncs.c
浏览文件 @
8bca99da
...
@@ -216,6 +216,7 @@ SNode* nodesMakeNode(ENodeType type) {
...
@@ -216,6 +216,7 @@ SNode* nodesMakeNode(ENodeType type) {
case
QUERY_NODE_SHOW_LOCAL_VARIABLES_STMT
:
case
QUERY_NODE_SHOW_LOCAL_VARIABLES_STMT
:
case
QUERY_NODE_SHOW_TRANSACTIONS_STMT
:
case
QUERY_NODE_SHOW_TRANSACTIONS_STMT
:
case
QUERY_NODE_SHOW_SUBSCRIPTIONS_STMT
:
case
QUERY_NODE_SHOW_SUBSCRIPTIONS_STMT
:
case
QUERY_NODE_SHOW_TAGS_STMT
:
return
makeNode
(
type
,
sizeof
(
SShowStmt
));
return
makeNode
(
type
,
sizeof
(
SShowStmt
));
case
QUERY_NODE_SHOW_DNODE_VARIABLES_STMT
:
case
QUERY_NODE_SHOW_DNODE_VARIABLES_STMT
:
return
makeNode
(
type
,
sizeof
(
SShowDnodeVariablesStmt
));
return
makeNode
(
type
,
sizeof
(
SShowDnodeVariablesStmt
));
...
@@ -678,7 +679,8 @@ void nodesDestroyNode(SNode* pNode) {
...
@@ -678,7 +679,8 @@ void nodesDestroyNode(SNode* pNode) {
case
QUERY_NODE_SHOW_VARIABLES_STMT
:
case
QUERY_NODE_SHOW_VARIABLES_STMT
:
case
QUERY_NODE_SHOW_LOCAL_VARIABLES_STMT
:
case
QUERY_NODE_SHOW_LOCAL_VARIABLES_STMT
:
case
QUERY_NODE_SHOW_TRANSACTIONS_STMT
:
case
QUERY_NODE_SHOW_TRANSACTIONS_STMT
:
case
QUERY_NODE_SHOW_SUBSCRIPTIONS_STMT
:
{
case
QUERY_NODE_SHOW_SUBSCRIPTIONS_STMT
:
case
QUERY_NODE_SHOW_TAGS_STMT
:
{
SShowStmt
*
pStmt
=
(
SShowStmt
*
)
pNode
;
SShowStmt
*
pStmt
=
(
SShowStmt
*
)
pNode
;
nodesDestroyNode
(
pStmt
->
pDbName
);
nodesDestroyNode
(
pStmt
->
pDbName
);
nodesDestroyNode
(
pStmt
->
pTbName
);
nodesDestroyNode
(
pStmt
->
pTbName
);
...
...
source/libs/parser/inc/sql.y
浏览文件 @
8bca99da
...
@@ -82,7 +82,6 @@ alter_account_option ::= STATE literal.
...
@@ -82,7 +82,6 @@ alter_account_option ::= STATE literal.
/************************************************ create/alter/drop user **********************************************/
/************************************************ create/alter/drop user **********************************************/
cmd ::= CREATE USER user_name(A) PASS NK_STRING(B) sysinfo_opt(C). { pCxt->pRootNode = createCreateUserStmt(pCxt, &A, &B, C); }
cmd ::= CREATE USER user_name(A) PASS NK_STRING(B) sysinfo_opt(C). { pCxt->pRootNode = createCreateUserStmt(pCxt, &A, &B, C); }
cmd ::= ALTER USER user_name(A) PASS NK_STRING(B). { pCxt->pRootNode = createAlterUserStmt(pCxt, &A, TSDB_ALTER_USER_PASSWD, &B); }
cmd ::= ALTER USER user_name(A) PASS NK_STRING(B). { pCxt->pRootNode = createAlterUserStmt(pCxt, &A, TSDB_ALTER_USER_PASSWD, &B); }
//cmd ::= ALTER USER user_name(A) PRIVILEGE NK_STRING(B). { pCxt->pRootNode = createAlterUserStmt(pCxt, &A, TSDB_ALTER_USER_PRIVILEGES, &B); }
cmd ::= ALTER USER user_name(A) ENABLE NK_INTEGER(B). { pCxt->pRootNode = createAlterUserStmt(pCxt, &A, TSDB_ALTER_USER_ENABLE, &B); }
cmd ::= ALTER USER user_name(A) ENABLE NK_INTEGER(B). { pCxt->pRootNode = createAlterUserStmt(pCxt, &A, TSDB_ALTER_USER_ENABLE, &B); }
cmd ::= ALTER USER user_name(A) SYSINFO NK_INTEGER(B). { pCxt->pRootNode = createAlterUserStmt(pCxt, &A, TSDB_ALTER_USER_SYSINFO, &B); }
cmd ::= ALTER USER user_name(A) SYSINFO NK_INTEGER(B). { pCxt->pRootNode = createAlterUserStmt(pCxt, &A, TSDB_ALTER_USER_SYSINFO, &B); }
cmd ::= DROP USER user_name(A). { pCxt->pRootNode = createDropUserStmt(pCxt, &A); }
cmd ::= DROP USER user_name(A). { pCxt->pRootNode = createDropUserStmt(pCxt, &A); }
...
@@ -198,15 +197,15 @@ alter_db_options(A) ::= alter_db_options(B) alter_db_option(C).
...
@@ -198,15 +197,15 @@ alter_db_options(A) ::= alter_db_options(B) alter_db_option(C).
%type alter_db_option { SAlterOption }
%type alter_db_option { SAlterOption }
%destructor alter_db_option { }
%destructor alter_db_option { }
alter_db_option(A) ::= BUFFER NK_INTEGER(B). { A.type = DB_OPTION_BUFFER; A.val = B; }
//
alter_db_option(A) ::= BUFFER NK_INTEGER(B). { A.type = DB_OPTION_BUFFER; A.val = B; }
alter_db_option(A) ::= CACHEMODEL NK_STRING(B). { A.type = DB_OPTION_CACHEMODEL; A.val = B; }
alter_db_option(A) ::= CACHEMODEL NK_STRING(B). { A.type = DB_OPTION_CACHEMODEL; A.val = B; }
alter_db_option(A) ::= CACHESIZE NK_INTEGER(B). { A.type = DB_OPTION_CACHESIZE; A.val = B; }
alter_db_option(A) ::= CACHESIZE NK_INTEGER(B). { A.type = DB_OPTION_CACHESIZE; A.val = B; }
alter_db_option(A) ::= FSYNC NK_INTEGER(B). { A.type = DB_OPTION_FSYNC; A.val = B; }
alter_db_option(A) ::= FSYNC NK_INTEGER(B). { A.type = DB_OPTION_FSYNC; A.val = B; }
alter_db_option(A) ::= KEEP integer_list(B). { A.type = DB_OPTION_KEEP; A.pList = B; }
alter_db_option(A) ::= KEEP integer_list(B). { A.type = DB_OPTION_KEEP; A.pList = B; }
alter_db_option(A) ::= KEEP variable_list(B). { A.type = DB_OPTION_KEEP; A.pList = B; }
alter_db_option(A) ::= KEEP variable_list(B). { A.type = DB_OPTION_KEEP; A.pList = B; }
alter_db_option(A) ::= PAGES NK_INTEGER(B). { A.type = DB_OPTION_PAGES; A.val = B; }
//
alter_db_option(A) ::= PAGES NK_INTEGER(B). { A.type = DB_OPTION_PAGES; A.val = B; }
alter_db_option(A) ::= REPLICA NK_INTEGER(B). { A.type = DB_OPTION_REPLICA; A.val = B; }
//
alter_db_option(A) ::= REPLICA NK_INTEGER(B). { A.type = DB_OPTION_REPLICA; A.val = B; }
alter_db_option(A) ::= STRICT NK_INTEGER(B).
{ A.type = DB_OPTION_STRICT; A.val = B; }
//alter_db_option(A) ::= STRICT NK_STRING(B).
{ A.type = DB_OPTION_STRICT; A.val = B; }
alter_db_option(A) ::= WAL NK_INTEGER(B). { A.type = DB_OPTION_WAL; A.val = B; }
alter_db_option(A) ::= WAL NK_INTEGER(B). { A.type = DB_OPTION_WAL; A.val = B; }
%type integer_list { SNodeList* }
%type integer_list { SNodeList* }
...
@@ -394,6 +393,7 @@ cmd ::= SHOW TRANSACTIONS.
...
@@ -394,6 +393,7 @@ cmd ::= SHOW TRANSACTIONS.
cmd ::= SHOW TABLE DISTRIBUTED full_table_name(A). { pCxt->pRootNode = createShowTableDistributedStmt(pCxt, A); }
cmd ::= SHOW TABLE DISTRIBUTED full_table_name(A). { pCxt->pRootNode = createShowTableDistributedStmt(pCxt, A); }
cmd ::= SHOW CONSUMERS. { pCxt->pRootNode = createShowStmt(pCxt, QUERY_NODE_SHOW_CONSUMERS_STMT); }
cmd ::= SHOW CONSUMERS. { pCxt->pRootNode = createShowStmt(pCxt, QUERY_NODE_SHOW_CONSUMERS_STMT); }
cmd ::= SHOW SUBSCRIPTIONS. { pCxt->pRootNode = createShowStmt(pCxt, QUERY_NODE_SHOW_SUBSCRIPTIONS_STMT); }
cmd ::= SHOW SUBSCRIPTIONS. { pCxt->pRootNode = createShowStmt(pCxt, QUERY_NODE_SHOW_SUBSCRIPTIONS_STMT); }
cmd ::= SHOW TAGS FROM table_name_cond(A) from_db_opt(B). { pCxt->pRootNode = createShowStmtWithCond(pCxt, QUERY_NODE_SHOW_TAGS_STMT, B, A, OP_TYPE_EQUAL); }
db_name_cond_opt(A) ::= . { A = createDefaultDatabaseCondValue(pCxt); }
db_name_cond_opt(A) ::= . { A = createDefaultDatabaseCondValue(pCxt); }
db_name_cond_opt(A) ::= db_name(B) NK_DOT. { A = createValueNode(pCxt, TSDB_DATA_TYPE_BINARY, &B); }
db_name_cond_opt(A) ::= db_name(B) NK_DOT. { A = createValueNode(pCxt, TSDB_DATA_TYPE_BINARY, &B); }
...
@@ -525,7 +525,7 @@ cmd ::= INSERT INTO full_table_name(A)
...
@@ -525,7 +525,7 @@ cmd ::= INSERT INTO full_table_name(A)
cmd ::= INSERT INTO full_table_name(A) query_expression(B). { pCxt->pRootNode = createInsertStmt(pCxt, A, NULL, B); }
cmd ::= INSERT INTO full_table_name(A) query_expression(B). { pCxt->pRootNode = createInsertStmt(pCxt, A, NULL, B); }
/************************************************ literal *************************************************************/
/************************************************ literal *************************************************************/
literal(A) ::= NK_INTEGER(B). { A = createRawExprNode(pCxt, &B, createValueNode(pCxt, TSDB_DATA_TYPE_BIGINT, &B)); }
literal(A) ::= NK_INTEGER(B). { A = createRawExprNode(pCxt, &B, createValueNode(pCxt, TSDB_DATA_TYPE_
U
BIGINT, &B)); }
literal(A) ::= NK_FLOAT(B). { A = createRawExprNode(pCxt, &B, createValueNode(pCxt, TSDB_DATA_TYPE_DOUBLE, &B)); }
literal(A) ::= NK_FLOAT(B). { A = createRawExprNode(pCxt, &B, createValueNode(pCxt, TSDB_DATA_TYPE_DOUBLE, &B)); }
literal(A) ::= NK_STRING(B). { A = createRawExprNode(pCxt, &B, createValueNode(pCxt, TSDB_DATA_TYPE_BINARY, &B)); }
literal(A) ::= NK_STRING(B). { A = createRawExprNode(pCxt, &B, createValueNode(pCxt, TSDB_DATA_TYPE_BINARY, &B)); }
literal(A) ::= NK_BOOL(B). { A = createRawExprNode(pCxt, &B, createValueNode(pCxt, TSDB_DATA_TYPE_BOOL, &B)); }
literal(A) ::= NK_BOOL(B). { A = createRawExprNode(pCxt, &B, createValueNode(pCxt, TSDB_DATA_TYPE_BOOL, &B)); }
...
@@ -536,8 +536,8 @@ literal(A) ::= NK_QUESTION(B).
...
@@ -536,8 +536,8 @@ literal(A) ::= NK_QUESTION(B).
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)); }
signed(A) ::= NK_INTEGER(B). { A = createValueNode(pCxt, TSDB_DATA_TYPE_BIGINT, &B); }
signed(A) ::= NK_INTEGER(B). { A = createValueNode(pCxt, TSDB_DATA_TYPE_
U
BIGINT, &B); }
signed(A) ::= NK_PLUS NK_INTEGER(B). { A = createValueNode(pCxt, TSDB_DATA_TYPE_BIGINT, &B); }
signed(A) ::= NK_PLUS NK_INTEGER(B). { A = createValueNode(pCxt, TSDB_DATA_TYPE_
U
BIGINT, &B); }
signed(A) ::= NK_MINUS(B) NK_INTEGER(C). {
signed(A) ::= NK_MINUS(B) NK_INTEGER(C). {
SToken t = B;
SToken t = B;
t.n = (C.z + C.n) - B.z;
t.n = (C.z + C.n) - B.z;
...
...
source/libs/parser/src/parAstCreater.c
浏览文件 @
8bca99da
...
@@ -393,9 +393,16 @@ SNode* createOperatorNode(SAstCreateContext* pCxt, EOperatorType type, SNode* pL
...
@@ -393,9 +393,16 @@ SNode* createOperatorNode(SAstCreateContext* pCxt, EOperatorType type, SNode* pL
SValueNode
*
pVal
=
(
SValueNode
*
)
pLeft
;
SValueNode
*
pVal
=
(
SValueNode
*
)
pLeft
;
char
*
pNewLiteral
=
taosMemoryCalloc
(
1
,
strlen
(
pVal
->
literal
)
+
2
);
char
*
pNewLiteral
=
taosMemoryCalloc
(
1
,
strlen
(
pVal
->
literal
)
+
2
);
CHECK_OUT_OF_MEM
(
pNewLiteral
);
CHECK_OUT_OF_MEM
(
pNewLiteral
);
sprintf
(
pNewLiteral
,
"-%s"
,
pVal
->
literal
);
if
(
'+'
==
pVal
->
literal
[
0
])
{
sprintf
(
pNewLiteral
,
"-%s"
,
pVal
->
literal
+
1
);
}
else
if
(
'-'
==
pVal
->
literal
[
0
])
{
sprintf
(
pNewLiteral
,
"%s"
,
pVal
->
literal
+
1
);
}
else
{
sprintf
(
pNewLiteral
,
"-%s"
,
pVal
->
literal
);
}
taosMemoryFree
(
pVal
->
literal
);
taosMemoryFree
(
pVal
->
literal
);
pVal
->
literal
=
pNewLiteral
;
pVal
->
literal
=
pNewLiteral
;
pVal
->
node
.
resType
.
type
=
TSDB_DATA_TYPE_BIGINT
;
return
pLeft
;
return
pLeft
;
}
}
SOperatorNode
*
op
=
(
SOperatorNode
*
)
nodesMakeNode
(
QUERY_NODE_OPERATOR
);
SOperatorNode
*
op
=
(
SOperatorNode
*
)
nodesMakeNode
(
QUERY_NODE_OPERATOR
);
...
@@ -1343,7 +1350,11 @@ SNode* createAlterDnodeStmt(SAstCreateContext* pCxt, const SToken* pDnode, const
...
@@ -1343,7 +1350,11 @@ SNode* createAlterDnodeStmt(SAstCreateContext* pCxt, const SToken* pDnode, const
CHECK_PARSER_STATUS
(
pCxt
);
CHECK_PARSER_STATUS
(
pCxt
);
SAlterDnodeStmt
*
pStmt
=
(
SAlterDnodeStmt
*
)
nodesMakeNode
(
QUERY_NODE_ALTER_DNODE_STMT
);
SAlterDnodeStmt
*
pStmt
=
(
SAlterDnodeStmt
*
)
nodesMakeNode
(
QUERY_NODE_ALTER_DNODE_STMT
);
CHECK_OUT_OF_MEM
(
pStmt
);
CHECK_OUT_OF_MEM
(
pStmt
);
pStmt
->
dnodeId
=
taosStr2Int32
(
pDnode
->
z
,
NULL
,
10
);
if
(
NULL
!=
pDnode
)
{
pStmt
->
dnodeId
=
taosStr2Int32
(
pDnode
->
z
,
NULL
,
10
);
}
else
{
pStmt
->
dnodeId
=
-
1
;
}
trimString
(
pConfig
->
z
,
pConfig
->
n
,
pStmt
->
config
,
sizeof
(
pStmt
->
config
));
trimString
(
pConfig
->
z
,
pConfig
->
n
,
pStmt
->
config
,
sizeof
(
pStmt
->
config
));
if
(
NULL
!=
pValue
)
{
if
(
NULL
!=
pValue
)
{
trimString
(
pValue
->
z
,
pValue
->
n
,
pStmt
->
value
,
sizeof
(
pStmt
->
value
));
trimString
(
pValue
->
z
,
pValue
->
n
,
pStmt
->
value
,
sizeof
(
pStmt
->
value
));
...
...
source/libs/parser/src/parAstParser.c
浏览文件 @
8bca99da
...
@@ -372,8 +372,8 @@ static int32_t collectMetaKeyFromShowTables(SCollectMetaKeyCxt* pCxt, SShowStmt*
...
@@ -372,8 +372,8 @@ static int32_t collectMetaKeyFromShowTables(SCollectMetaKeyCxt* pCxt, SShowStmt*
}
}
static
int32_t
collectMetaKeyFromShowTags
(
SCollectMetaKeyCxt
*
pCxt
,
SShowStmt
*
pStmt
)
{
static
int32_t
collectMetaKeyFromShowTags
(
SCollectMetaKeyCxt
*
pCxt
,
SShowStmt
*
pStmt
)
{
int32_t
code
=
reserveTableMetaInCache
(
pCxt
->
pParseCxt
->
acctId
,
TSDB_INFORMATION_SCHEMA_DB
,
int32_t
code
=
reserveTableMetaInCache
(
pCxt
->
pParseCxt
->
acctId
,
TSDB_INFORMATION_SCHEMA_DB
,
TSDB_INS_TABLE_USER_TAGS
,
TSDB_INS_TABLE_USER_TAGS
,
pCxt
->
pMetaCache
);
pCxt
->
pMetaCache
);
if
(
TSDB_CODE_SUCCESS
==
code
)
{
if
(
TSDB_CODE_SUCCESS
==
code
)
{
if
(
NULL
!=
pStmt
->
pDbName
)
{
if
(
NULL
!=
pStmt
->
pDbName
)
{
code
=
reserveDbVgInfoInCache
(
pCxt
->
pParseCxt
->
acctId
,
((
SValueNode
*
)
pStmt
->
pDbName
)
->
literal
,
pCxt
->
pMetaCache
);
code
=
reserveDbVgInfoInCache
(
pCxt
->
pParseCxt
->
acctId
,
((
SValueNode
*
)
pStmt
->
pDbName
)
->
literal
,
pCxt
->
pMetaCache
);
...
...
source/libs/parser/src/parInsert.c
浏览文件 @
8bca99da
...
@@ -2385,7 +2385,7 @@ int32_t smlBindData(void* handle, SArray* tags, SArray* colsSchema, SArray* cols
...
@@ -2385,7 +2385,7 @@ int32_t smlBindData(void* handle, SArray* tags, SArray* colsSchema, SArray* cols
if
(
format
)
{
if
(
format
)
{
if
(
j
<
rowDataSize
)
{
if
(
j
<
rowDataSize
)
{
kv
=
taosArrayGetP
(
rowData
,
j
);
kv
=
taosArrayGetP
(
rowData
,
j
);
if
(
rowDataSize
!=
spd
->
numOfBound
&&
if
(
rowDataSize
!=
spd
->
numOfBound
&&
j
!=
0
&&
(
kv
->
keyLen
!=
strlen
(
pColSchema
->
name
)
||
strncmp
(
kv
->
key
,
pColSchema
->
name
,
kv
->
keyLen
)
!=
0
))
{
(
kv
->
keyLen
!=
strlen
(
pColSchema
->
name
)
||
strncmp
(
kv
->
key
,
pColSchema
->
name
,
kv
->
keyLen
)
!=
0
))
{
kv
=
NULL
;
kv
=
NULL
;
}
else
{
}
else
{
...
...
source/libs/parser/src/parTranslater.c
浏览文件 @
8bca99da
此差异已折叠。
点击以展开。
source/libs/parser/src/parUtil.c
浏览文件 @
8bca99da
...
@@ -67,32 +67,8 @@ static char* getSyntaxErrFormat(int32_t errCode) {
...
@@ -67,32 +67,8 @@ static char* getSyntaxErrFormat(int32_t errCode) {
return
"Invalid identifier name: %s"
;
return
"Invalid identifier name: %s"
;
case
TSDB_CODE_PAR_CORRESPONDING_STABLE_ERR
:
case
TSDB_CODE_PAR_CORRESPONDING_STABLE_ERR
:
return
"Corresponding super table not in this db"
;
return
"Corresponding super table not in this db"
;
case
TSDB_CODE_PAR_INVALID_RANGE_OPTION
:
return
"Invalid option %s: %"
PRId64
" valid range: [%d, %d]"
;
case
TSDB_CODE_PAR_INVALID_STR_OPTION
:
return
"Invalid option %s: %s"
;
case
TSDB_CODE_PAR_INVALID_ENUM_OPTION
:
return
"Invalid option %s: %"
PRId64
", only %d, %d allowed"
;
case
TSDB_CODE_PAR_INVALID_KEEP_NUM
:
return
"Invalid number of keep options"
;
case
TSDB_CODE_PAR_INVALID_KEEP_ORDER
:
return
"Invalid keep value, should be keep0 <= keep1 <= keep2"
;
case
TSDB_CODE_PAR_INVALID_KEEP_VALUE
:
return
"Invalid option keep: %"
PRId64
", %"
PRId64
", %"
PRId64
" valid range: [%dm, %dm]"
;
case
TSDB_CODE_PAR_INVALID_COMMENT_OPTION
:
return
"Invalid option comment, length cannot exceed %d"
;
case
TSDB_CODE_PAR_INVALID_F_RANGE_OPTION
:
return
"Invalid option %s: %f valid range: [%d, %d]"
;
case
TSDB_CODE_PAR_INVALID_ROLLUP_OPTION
:
return
"Invalid option rollup: only one function is allowed"
;
case
TSDB_CODE_PAR_INVALID_RETENTIONS_OPTION
:
return
"Invalid option retentions"
;
case
TSDB_CODE_PAR_GROUPBY_WINDOW_COEXIST
:
case
TSDB_CODE_PAR_GROUPBY_WINDOW_COEXIST
:
return
"GROUP BY and WINDOW-clause can't be used together"
;
return
"GROUP BY and WINDOW-clause can't be used together"
;
case
TSDB_CODE_PAR_INVALID_OPTION_UNIT
:
return
"Invalid option %s unit: %c, only %c, %c, %c allowed"
;
case
TSDB_CODE_PAR_INVALID_KEEP_UNIT
:
return
"Invalid option keep unit: %c, only m, h, d allowed"
;
case
TSDB_CODE_PAR_AGG_FUNC_NESTING
:
case
TSDB_CODE_PAR_AGG_FUNC_NESTING
:
return
"Aggregate functions do not support nesting"
;
return
"Aggregate functions do not support nesting"
;
case
TSDB_CODE_PAR_INVALID_STATE_WIN_TYPE
:
case
TSDB_CODE_PAR_INVALID_STATE_WIN_TYPE
:
...
@@ -194,8 +170,6 @@ static char* getSyntaxErrFormat(int32_t errCode) {
...
@@ -194,8 +170,6 @@ static char* getSyntaxErrFormat(int32_t errCode) {
return
"%s function is not supported in stream query"
;
return
"%s function is not supported in stream query"
;
case
TSDB_CODE_PAR_GROUP_BY_NOT_ALLOWED_FUNC
:
case
TSDB_CODE_PAR_GROUP_BY_NOT_ALLOWED_FUNC
:
return
"%s function is not supported in group query"
;
return
"%s function is not supported in group query"
;
case
TSDB_CODE_PAR_INVALID_TABLE_OPTION
:
return
"Invalid option %s"
;
case
TSDB_CODE_PAR_INVALID_INTERP_CLAUSE
:
case
TSDB_CODE_PAR_INVALID_INTERP_CLAUSE
:
return
"Invalid usage of RANGE clause, EVERY clause or FILL clause"
;
return
"Invalid usage of RANGE clause, EVERY clause or FILL clause"
;
case
TSDB_CODE_PAR_NO_VALID_FUNC_IN_WIN
:
case
TSDB_CODE_PAR_NO_VALID_FUNC_IN_WIN
:
...
@@ -389,7 +363,7 @@ int32_t parseJsontoTagData(const char* json, SArray* pTagVals, STag** ppTag, voi
...
@@ -389,7 +363,7 @@ int32_t parseJsontoTagData(const char* json, SArray* pTagVals, STag** ppTag, voi
continue
;
continue
;
}
}
STagVal
val
=
{
0
};
STagVal
val
=
{
0
};
// strcpy(val.colName, colName);
// strcpy(val.colName, colName);
val
.
pKey
=
jsonKey
;
val
.
pKey
=
jsonKey
;
taosHashPut
(
keyHash
,
jsonKey
,
keyLen
,
&
keyLen
,
taosHashPut
(
keyHash
,
jsonKey
,
keyLen
,
&
keyLen
,
CHAR_BYTES
);
// add key to hash to remove dumplicate, value is useless
CHAR_BYTES
);
// add key to hash to remove dumplicate, value is useless
...
...
source/libs/parser/src/sql.c
浏览文件 @
8bca99da
此差异已折叠。
点击以展开。
source/libs/parser/test/mockCatalog.cpp
浏览文件 @
8bca99da
...
@@ -328,46 +328,6 @@ void initMetaDataEnv() {
...
@@ -328,46 +328,6 @@ void initMetaDataEnv() {
stub
.
set
(
catalogGetTableIndex
,
__catalogGetTableIndex
);
stub
.
set
(
catalogGetTableIndex
,
__catalogGetTableIndex
);
stub
.
set
(
catalogGetDnodeList
,
__catalogGetDnodeList
);
stub
.
set
(
catalogGetDnodeList
,
__catalogGetDnodeList
);
stub
.
set
(
catalogRefreshGetTableCfg
,
__catalogRefreshGetTableCfg
);
stub
.
set
(
catalogRefreshGetTableCfg
,
__catalogRefreshGetTableCfg
);
// {
// AddrAny any("libcatalog.so");
// std::map<std::string,void*> result;
// any.get_global_func_addr_dynsym("^catalogGetHandle$", result);
// for (const auto& f : result) {
// stub.set(f.second, __catalogGetHandle);
// }
// }
// {
// AddrAny any("libcatalog.so");
// std::map<std::string,void*> result;
// any.get_global_func_addr_dynsym("^catalogGetTableMeta$", result);
// for (const auto& f : result) {
// stub.set(f.second, __catalogGetTableMeta);
// }
// }
// {
// AddrAny any("libcatalog.so");
// std::map<std::string,void*> result;
// any.get_global_func_addr_dynsym("^catalogGetTableHashVgroup$", result);
// for (const auto& f : result) {
// stub.set(f.second, __catalogGetTableHashVgroup);
// }
// }
// {
// AddrAny any("libcatalog.so");
// std::map<std::string,void*> result;
// any.get_global_func_addr_dynsym("^catalogGetTableDistVgInfo$", result);
// for (const auto& f : result) {
// stub.set(f.second, __catalogGetTableDistVgInfo);
// }
// }
// {
// AddrAny any("libcatalog.so");
// std::map<std::string,void*> result;
// any.get_global_func_addr_dynsym("^catalogGetDBVgVersion$", result);
// for (const auto& f : result) {
// stub.set(f.second, __catalogGetDBVgVersion);
// }
// }
}
}
void
generateMetaData
()
{
void
generateMetaData
()
{
...
...
source/libs/parser/test/parInitialATest.cpp
浏览文件 @
8bca99da
...
@@ -27,22 +27,217 @@ TEST_F(ParserInitialATest, alterAccount) {
...
@@ -27,22 +27,217 @@ TEST_F(ParserInitialATest, alterAccount) {
run
(
"ALTER ACCOUNT ac_wxy PASS '123456'"
,
TSDB_CODE_PAR_EXPRIE_STATEMENT
,
PARSER_STAGE_PARSE
);
run
(
"ALTER ACCOUNT ac_wxy PASS '123456'"
,
TSDB_CODE_PAR_EXPRIE_STATEMENT
,
PARSER_STAGE_PARSE
);
}
}
/*
* ALTER DNODE dnode_id 'config' ['value']
* ALTER ALL DNODES 'config' ['value']
*/
TEST_F
(
ParserInitialATest
,
alterDnode
)
{
TEST_F
(
ParserInitialATest
,
alterDnode
)
{
useDb
(
"root"
,
"test"
);
useDb
(
"root"
,
"test"
);
SMCfgDnodeReq
expect
=
{
0
};
auto
clearCfgDnodeReq
=
[
&
]()
{
memset
(
&
expect
,
0
,
sizeof
(
SMCfgDnodeReq
));
};
auto
setCfgDnodeReq
=
[
&
](
int32_t
dnodeId
,
const
char
*
pConfig
,
const
char
*
pValue
=
nullptr
)
{
expect
.
dnodeId
=
dnodeId
;
strcpy
(
expect
.
config
,
pConfig
);
if
(
nullptr
!=
pValue
)
{
strcpy
(
expect
.
value
,
pValue
);
}
};
setCheckDdlFunc
([
&
](
const
SQuery
*
pQuery
,
ParserStage
stage
)
{
ASSERT_EQ
(
nodeType
(
pQuery
->
pRoot
),
QUERY_NODE_ALTER_DNODE_STMT
);
SMCfgDnodeReq
req
=
{
0
};
ASSERT_EQ
(
tDeserializeSMCfgDnodeReq
(
pQuery
->
pCmdMsg
->
pMsg
,
pQuery
->
pCmdMsg
->
msgLen
,
&
req
),
TSDB_CODE_SUCCESS
);
ASSERT_EQ
(
req
.
dnodeId
,
expect
.
dnodeId
);
ASSERT_EQ
(
std
::
string
(
req
.
config
),
std
::
string
(
expect
.
config
));
ASSERT_EQ
(
std
::
string
(
req
.
value
),
std
::
string
(
expect
.
value
));
});
setCfgDnodeReq
(
1
,
"resetLog"
);
run
(
"ALTER DNODE 1 'resetLog'"
);
run
(
"ALTER DNODE 1 'resetLog'"
);
clearCfgDnodeReq
();
setCfgDnodeReq
(
2
,
"debugFlag"
,
"134"
);
run
(
"ALTER DNODE 2 'debugFlag' '134'"
);
clearCfgDnodeReq
();
run
(
"ALTER DNODE 1 'debugFlag' '134'"
);
setCfgDnodeReq
(
-
1
,
"resetQueryCache"
);
run
(
"ALTER ALL DNODES 'resetQueryCache'"
);
clearCfgDnodeReq
();
setCfgDnodeReq
(
-
1
,
"qDebugflag"
,
"135"
);
run
(
"ALTER ALL DNODES 'qDebugflag' '135'"
);
clearCfgDnodeReq
();
}
}
/*
* ALTER DATABASE db_name [alter_database_options]
*
* alter_database_options:
* alter_database_option ...
*
* alter_database_option: {
* BUFFER int_value -- todo: range [3, 16384], default 96, unit MB
* | CACHEMODEL {'none' | 'last_row' | 'last_value' | 'both'} -- default 'none'
* | CACHESIZE int_value -- range [1, 65536], default 1, unit MB
* | FSYNC int_value -- rang [0, 180000], default 3000, unit ms
* | KEEP {int_value | duration_value} -- rang [1, 365000], default 3650, unit day
* | PAGES int_value -- todo: rang [64, +oo), default 256, unit page
* | REPLICA int_value -- todo: enum 1, 3, default 1, unit replica
* | STRICT {'off' | 'on'} -- todo: default 'off'
* | WAL int_value -- enum 1, 2, default 1
* }
*/
TEST_F
(
ParserInitialATest
,
alterDatabase
)
{
TEST_F
(
ParserInitialATest
,
alterDatabase
)
{
useDb
(
"root"
,
"test"
);
useDb
(
"root"
,
"test"
);
run
(
"ALTER DATABASE test CACHEMODEL 'last_row' FSYNC 200 WAL 1"
);
SAlterDbReq
expect
=
{
0
};
auto
clearAlterDbReq
=
[
&
]()
{
memset
(
&
expect
,
0
,
sizeof
(
SAlterDbReq
));
};
auto
initAlterDb
=
[
&
](
const
char
*
pDb
)
{
snprintf
(
expect
.
db
,
sizeof
(
expect
.
db
),
"0.%s"
,
pDb
);
expect
.
buffer
=
-
1
;
expect
.
pageSize
=
-
1
;
expect
.
pages
=
-
1
;
expect
.
daysPerFile
=
-
1
;
expect
.
daysToKeep0
=
-
1
;
expect
.
daysToKeep1
=
-
1
;
expect
.
daysToKeep2
=
-
1
;
expect
.
fsyncPeriod
=
-
1
;
expect
.
walLevel
=
-
1
;
expect
.
strict
=
-
1
;
expect
.
cacheLast
=
-
1
;
expect
.
cacheLastSize
=
-
1
;
expect
.
replications
=
-
1
;
};
auto
setAlterDbBuffer
=
[
&
](
int32_t
buffer
)
{
expect
.
buffer
=
buffer
;
};
auto
setAlterDbPageSize
=
[
&
](
int32_t
pageSize
)
{
expect
.
pageSize
=
pageSize
;
};
auto
setAlterDbPages
=
[
&
](
int32_t
pages
)
{
expect
.
pages
=
pages
;
};
auto
setAlterDbCacheSize
=
[
&
](
int32_t
cacheSize
)
{
expect
.
cacheLastSize
=
cacheSize
;
};
auto
setAlterDbDuration
=
[
&
](
int32_t
duration
)
{
expect
.
daysPerFile
=
duration
;
};
auto
setAlterDbKeep
=
[
&
](
int32_t
daysToKeep0
,
int32_t
daysToKeep1
=
-
1
,
int32_t
daysToKeep2
=
-
1
)
{
expect
.
daysToKeep0
=
daysToKeep0
;
expect
.
daysToKeep1
=
(
-
1
==
daysToKeep1
?
expect
.
daysToKeep0
:
daysToKeep1
);
expect
.
daysToKeep2
=
(
-
1
==
daysToKeep1
?
expect
.
daysToKeep1
:
daysToKeep2
);
};
auto
setAlterDbFsync
=
[
&
](
int32_t
fsync
)
{
expect
.
fsyncPeriod
=
fsync
;
};
auto
setAlterDbWal
=
[
&
](
int8_t
wal
)
{
expect
.
walLevel
=
wal
;
};
auto
setAlterDbStrict
=
[
&
](
int8_t
strict
)
{
expect
.
strict
=
strict
;
};
auto
setAlterDbCacheModel
=
[
&
](
int8_t
cacheModel
)
{
expect
.
cacheLast
=
cacheModel
;
};
auto
setAlterDbReplica
=
[
&
](
int8_t
replications
)
{
expect
.
replications
=
replications
;
};
setCheckDdlFunc
([
&
](
const
SQuery
*
pQuery
,
ParserStage
stage
)
{
ASSERT_EQ
(
nodeType
(
pQuery
->
pRoot
),
QUERY_NODE_ALTER_DATABASE_STMT
);
SAlterDbReq
req
=
{
0
};
ASSERT_EQ
(
tDeserializeSAlterDbReq
(
pQuery
->
pCmdMsg
->
pMsg
,
pQuery
->
pCmdMsg
->
msgLen
,
&
req
),
TSDB_CODE_SUCCESS
);
ASSERT_EQ
(
std
::
string
(
req
.
db
),
std
::
string
(
expect
.
db
));
ASSERT_EQ
(
req
.
buffer
,
expect
.
buffer
);
ASSERT_EQ
(
req
.
pageSize
,
expect
.
pageSize
);
ASSERT_EQ
(
req
.
pages
,
expect
.
pages
);
ASSERT_EQ
(
req
.
cacheLastSize
,
expect
.
cacheLastSize
);
ASSERT_EQ
(
req
.
daysToKeep0
,
expect
.
daysToKeep0
);
ASSERT_EQ
(
req
.
daysToKeep1
,
expect
.
daysToKeep1
);
ASSERT_EQ
(
req
.
daysToKeep2
,
expect
.
daysToKeep2
);
ASSERT_EQ
(
req
.
fsyncPeriod
,
expect
.
fsyncPeriod
);
ASSERT_EQ
(
req
.
walLevel
,
expect
.
walLevel
);
ASSERT_EQ
(
req
.
strict
,
expect
.
strict
);
ASSERT_EQ
(
req
.
cacheLast
,
expect
.
cacheLast
);
ASSERT_EQ
(
req
.
replications
,
expect
.
replications
);
});
const
int32_t
MINUTE_PER_DAY
=
MILLISECOND_PER_DAY
/
MILLISECOND_PER_MINUTE
;
const
int32_t
MINUTE_PER_HOUR
=
MILLISECOND_PER_HOUR
/
MILLISECOND_PER_MINUTE
;
initAlterDb
(
"test"
);
setAlterDbCacheSize
(
32
);
setAlterDbKeep
(
10
*
MINUTE_PER_DAY
);
setAlterDbFsync
(
200
);
setAlterDbWal
(
1
);
setAlterDbCacheModel
(
TSDB_CACHE_MODEL_LAST_ROW
);
run
(
"ALTER DATABASE test CACHEMODEL 'last_row' CACHESIZE 32 FSYNC 200 KEEP 10 WAL 1"
);
clearAlterDbReq
();
initAlterDb
(
"test"
);
setAlterDbCacheModel
(
TSDB_CACHE_MODEL_NONE
);
run
(
"ALTER DATABASE test CACHEMODEL 'none'"
);
setAlterDbCacheModel
(
TSDB_CACHE_MODEL_LAST_ROW
);
run
(
"ALTER DATABASE test CACHEMODEL 'last_row'"
);
setAlterDbCacheModel
(
TSDB_CACHE_MODEL_LAST_VALUE
);
run
(
"ALTER DATABASE test CACHEMODEL 'last_value'"
);
setAlterDbCacheModel
(
TSDB_CACHE_MODEL_BOTH
);
run
(
"ALTER DATABASE test CACHEMODEL 'both'"
);
clearAlterDbReq
();
initAlterDb
(
"test"
);
setAlterDbCacheSize
(
1
);
run
(
"ALTER DATABASE test CACHESIZE 1"
);
setAlterDbCacheSize
(
64
);
run
(
"ALTER DATABASE test CACHESIZE 64"
);
setAlterDbCacheSize
(
65536
);
run
(
"ALTER DATABASE test CACHESIZE 65536"
);
clearAlterDbReq
();
initAlterDb
(
"test"
);
setAlterDbFsync
(
0
);
run
(
"ALTER DATABASE test FSYNC 0"
);
setAlterDbFsync
(
1000
);
run
(
"ALTER DATABASE test FSYNC 1000"
);
setAlterDbFsync
(
180000
);
run
(
"ALTER DATABASE test FSYNC 180000"
);
clearAlterDbReq
();
initAlterDb
(
"test"
);
setAlterDbKeep
(
1
*
MINUTE_PER_DAY
);
run
(
"ALTER DATABASE test KEEP 1"
);
setAlterDbKeep
(
30
*
MINUTE_PER_DAY
);
run
(
"ALTER DATABASE test KEEP 30"
);
setAlterDbKeep
(
365000
*
MINUTE_PER_DAY
);
run
(
"ALTER DATABASE test KEEP 365000"
);
setAlterDbKeep
(
1440
);
run
(
"ALTER DATABASE test KEEP 1440m"
);
setAlterDbKeep
(
14400
);
run
(
"ALTER DATABASE test KEEP 14400m"
);
setAlterDbKeep
(
525600000
);
run
(
"ALTER DATABASE test KEEP 525600000m"
);
setAlterDbKeep
(
5
*
MINUTE_PER_DAY
,
35
*
MINUTE_PER_DAY
,
500
*
MINUTE_PER_DAY
);
run
(
"ALTER DATABASE test KEEP 5,35,500"
);
setAlterDbKeep
(
14400
,
2400
*
MINUTE_PER_HOUR
,
1500
*
MINUTE_PER_DAY
);
run
(
"ALTER DATABASE test KEEP 14400m,2400h,1500d"
);
clearAlterDbReq
();
initAlterDb
(
"test"
);
setAlterDbWal
(
1
);
run
(
"ALTER DATABASE test WAL 1"
);
setAlterDbWal
(
2
);
run
(
"ALTER DATABASE test WAL 2"
);
clearAlterDbReq
();
}
TEST_F
(
ParserInitialATest
,
alterDatabaseSemanticCheck
)
{
useDb
(
"root"
,
"test"
);
run
(
"ALTER DATABASE test KEEP 2400"
);
run
(
"ALTER DATABASE test CACHEMODEL 'other'"
,
TSDB_CODE_PAR_INVALID_DB_OPTION
);
run
(
"ALTER DATABASE test CACHESIZE 0"
,
TSDB_CODE_PAR_INVALID_DB_OPTION
);
run
(
"ALTER DATABASE test CACHESIZE 65537"
,
TSDB_CODE_PAR_INVALID_DB_OPTION
);
// The syntax limits it to only positive numbers
run
(
"ALTER DATABASE test FSYNC -1"
,
TSDB_CODE_PAR_SYNTAX_ERROR
,
PARSER_STAGE_PARSE
);
run
(
"ALTER DATABASE test FSYNC 180001"
,
TSDB_CODE_PAR_INVALID_DB_OPTION
);
run
(
"ALTER DATABASE test KEEP 0"
,
TSDB_CODE_PAR_INVALID_DB_OPTION
);
run
(
"ALTER DATABASE test KEEP 365001"
,
TSDB_CODE_PAR_INVALID_DB_OPTION
);
run
(
"ALTER DATABASE test KEEP 1000000000s"
,
TSDB_CODE_PAR_INVALID_DB_OPTION
);
run
(
"ALTER DATABASE test KEEP 1w"
,
TSDB_CODE_PAR_INVALID_DB_OPTION
);
run
(
"ALTER DATABASE test WAL 0"
,
TSDB_CODE_PAR_INVALID_DB_OPTION
);
run
(
"ALTER DATABASE test WAL 3"
,
TSDB_CODE_PAR_INVALID_DB_OPTION
);
// Regardless of the specific sentence
run
(
"ALTER DATABASE db WAL 0 # td-14436"
,
TSDB_CODE_PAR_SYNTAX_ERROR
,
PARSER_STAGE_PARSE
);
}
}
/*
* ALTER LOCAL dnode_id 'config' ['value']
*/
TEST_F
(
ParserInitialATest
,
alterLocal
)
{
TEST_F
(
ParserInitialATest
,
alterLocal
)
{
useDb
(
"root"
,
"test"
);
useDb
(
"root"
,
"test"
);
...
@@ -53,7 +248,7 @@ TEST_F(ParserInitialATest, alterLocal) {
...
@@ -53,7 +248,7 @@ TEST_F(ParserInitialATest, alterLocal) {
expect
.
second
.
clear
();
expect
.
second
.
clear
();
};
};
auto
setAlterLocal
Func
=
[
&
](
const
char
*
pConfig
,
const
char
*
pValue
=
nullptr
)
{
auto
setAlterLocal
=
[
&
](
const
char
*
pConfig
,
const
char
*
pValue
=
nullptr
)
{
expect
.
first
.
assign
(
pConfig
);
expect
.
first
.
assign
(
pConfig
);
if
(
nullptr
!=
pValue
)
{
if
(
nullptr
!=
pValue
)
{
expect
.
second
.
assign
(
pValue
);
expect
.
second
.
assign
(
pValue
);
...
@@ -68,38 +263,37 @@ TEST_F(ParserInitialATest, alterLocal) {
...
@@ -68,38 +263,37 @@ TEST_F(ParserInitialATest, alterLocal) {
ASSERT_EQ
(
string
(
pStmt
->
value
),
expect
.
second
);
ASSERT_EQ
(
string
(
pStmt
->
value
),
expect
.
second
);
});
});
setAlterLocal
Func
(
"resetlog"
);
setAlterLocal
(
"resetlog"
);
run
(
"ALTER LOCAL 'resetlog'"
);
run
(
"ALTER LOCAL 'resetlog'"
);
clearAlterLocal
();
clearAlterLocal
();
setAlterLocal
Func
(
"querypolicy"
,
"2"
);
setAlterLocal
(
"querypolicy"
,
"2"
);
run
(
"ALTER LOCAL 'querypolicy' '2'"
);
run
(
"ALTER LOCAL 'querypolicy' '2'"
);
clearAlterLocal
();
clearAlterLocal
();
}
}
/*
/*
* ALTER TABLE [db_name.]tb_name alter_table_clause
* ALTER
S
TABLE [db_name.]tb_name alter_table_clause
*
*
* alter_table_clause: {
* alter_table_clause: {
* alter_table_options
* alter_table_options
* | ADD COLUMN col_name column_type
* | ADD COLUMN col_name column_type
* | DROP COLUMN col_name
* | DROP COLUMN col_name
* | MODIFY COLUMN col_name column_type
* | MODIFY COLUMN col_name column_type
* | RENAME COLUMN old_col_name new_col_name
* | RENAME COLUMN old_col_name new_col_name -- normal table
* | ADD TAG tag_name tag_type
* | ADD TAG tag_name tag_type -- super table
* | DROP TAG tag_name
* | DROP TAG tag_name -- super table
* | MODIFY TAG tag_name tag_type
* | MODIFY TAG tag_name tag_type -- super table
* | RENAME TAG old_tag_name new_tag_name
* | RENAME TAG old_tag_name new_tag_name -- super table
* | SET TAG tag_name = new_tag_value
* | SET TAG tag_name = new_tag_value -- child table
* | ADD {FULLTEXT | SMA} INDEX index_name (col_name [, col_name] ...) [index_option]
* }
* }
*
*
* alter_table_options:
* alter_table_options:
* alter_table_option ...
* alter_table_option ...
*
*
* alter_table_option: {
* alter_table_option: {
*
TTL valu
e
*
TTL int_value -- child/normal tabl
e
*
| COMMENT 'string_value'
* | COMMENT 'string_value'
* }
* }
*/
*/
TEST_F
(
ParserInitialATest
,
alterSTable
)
{
TEST_F
(
ParserInitialATest
,
alterSTable
)
{
...
@@ -112,14 +306,12 @@ TEST_F(ParserInitialATest, alterSTable) {
...
@@ -112,14 +306,12 @@ TEST_F(ParserInitialATest, alterSTable) {
memset
(
&
expect
,
0
,
sizeof
(
SMAlterStbReq
));
memset
(
&
expect
,
0
,
sizeof
(
SMAlterStbReq
));
};
};
auto
setAlterStbReqFunc
=
[
&
](
const
char
*
pTbname
,
int8_t
alterType
,
int32_t
numOfFields
=
0
,
auto
setAlterStbReq
=
[
&
](
const
char
*
pTbname
,
int8_t
alterType
,
int32_t
numOfFields
=
0
,
const
char
*
pField1Name
=
nullptr
,
int8_t
field1Type
=
0
,
int32_t
field1Bytes
=
0
,
const
char
*
pField1Name
=
nullptr
,
int8_t
field1Type
=
0
,
int32_t
field1Bytes
=
0
,
const
char
*
pField2Name
=
nullptr
,
const
char
*
pComment
=
nullptr
,
const
char
*
pField2Name
=
nullptr
,
const
char
*
pComment
=
nullptr
)
{
int32_t
ttl
=
TSDB_DEFAULT_TABLE_TTL
)
{
int32_t
len
=
snprintf
(
expect
.
name
,
sizeof
(
expect
.
name
),
"0.test.%s"
,
pTbname
);
int32_t
len
=
snprintf
(
expect
.
name
,
sizeof
(
expect
.
name
),
"0.test.%s"
,
pTbname
);
expect
.
name
[
len
]
=
'\0'
;
expect
.
name
[
len
]
=
'\0'
;
expect
.
alterType
=
alterType
;
expect
.
alterType
=
alterType
;
// expect.ttl = ttl;
if
(
nullptr
!=
pComment
)
{
if
(
nullptr
!=
pComment
)
{
expect
.
comment
=
strdup
(
pComment
);
expect
.
comment
=
strdup
(
pComment
);
expect
.
commentLen
=
strlen
(
pComment
);
expect
.
commentLen
=
strlen
(
pComment
);
...
@@ -178,59 +370,47 @@ TEST_F(ParserInitialATest, alterSTable) {
...
@@ -178,59 +370,47 @@ TEST_F(ParserInitialATest, alterSTable) {
tFreeSMAltertbReq
(
&
req
);
tFreeSMAltertbReq
(
&
req
);
});
});
// setAlterStbReqFunc("st1", TSDB_ALTER_TABLE_UPDATE_OPTIONS, 0, nullptr, 0, 0, nullptr, nullptr, 10);
setAlterStbReq
(
"st1"
,
TSDB_ALTER_TABLE_UPDATE_OPTIONS
,
0
,
nullptr
,
0
,
0
,
nullptr
,
"test"
);
// run("ALTER STABLE st1 TTL 10");
// clearAlterStbReq();
setAlterStbReqFunc
(
"st1"
,
TSDB_ALTER_TABLE_UPDATE_OPTIONS
,
0
,
nullptr
,
0
,
0
,
nullptr
,
"test"
);
run
(
"ALTER STABLE st1 COMMENT 'test'"
);
run
(
"ALTER STABLE st1 COMMENT 'test'"
);
clearAlterStbReq
();
clearAlterStbReq
();
setAlterStbReq
Func
(
"st1"
,
TSDB_ALTER_TABLE_ADD_COLUMN
,
1
,
"cc1"
,
TSDB_DATA_TYPE_BIGINT
);
setAlterStbReq
(
"st1"
,
TSDB_ALTER_TABLE_ADD_COLUMN
,
1
,
"cc1"
,
TSDB_DATA_TYPE_BIGINT
);
run
(
"ALTER STABLE st1 ADD COLUMN cc1 BIGINT"
);
run
(
"ALTER STABLE st1 ADD COLUMN cc1 BIGINT"
);
clearAlterStbReq
();
clearAlterStbReq
();
setAlterStbReq
Func
(
"st1"
,
TSDB_ALTER_TABLE_DROP_COLUMN
,
1
,
"c1"
);
setAlterStbReq
(
"st1"
,
TSDB_ALTER_TABLE_DROP_COLUMN
,
1
,
"c1"
);
run
(
"ALTER STABLE st1 DROP COLUMN c1"
);
run
(
"ALTER STABLE st1 DROP COLUMN c1"
);
clearAlterStbReq
();
clearAlterStbReq
();
setAlterStbReqFunc
(
"st1"
,
TSDB_ALTER_TABLE_UPDATE_COLUMN_BYTES
,
1
,
"c2"
,
TSDB_DATA_TYPE_VARCHAR
,
setAlterStbReq
(
"st1"
,
TSDB_ALTER_TABLE_UPDATE_COLUMN_BYTES
,
1
,
"c2"
,
TSDB_DATA_TYPE_VARCHAR
,
30
+
VARSTR_HEADER_SIZE
);
30
+
VARSTR_HEADER_SIZE
);
run
(
"ALTER STABLE st1 MODIFY COLUMN c2 VARCHAR(30)"
);
run
(
"ALTER STABLE st1 MODIFY COLUMN c2 VARCHAR(30)"
);
clearAlterStbReq
();
clearAlterStbReq
();
// setAlterStbReqFunc("st1", TSDB_ALTER_TABLE_UPDATE_COLUMN_NAME, 2, "c1", 0, 0, "cc1");
setAlterStbReq
(
"st1"
,
TSDB_ALTER_TABLE_ADD_TAG
,
1
,
"tag11"
,
TSDB_DATA_TYPE_BIGINT
);
// run("ALTER STABLE st1 RENAME COLUMN c1 cc1");
setAlterStbReqFunc
(
"st1"
,
TSDB_ALTER_TABLE_ADD_TAG
,
1
,
"tag11"
,
TSDB_DATA_TYPE_BIGINT
);
run
(
"ALTER STABLE st1 ADD TAG tag11 BIGINT"
);
run
(
"ALTER STABLE st1 ADD TAG tag11 BIGINT"
);
clearAlterStbReq
();
clearAlterStbReq
();
setAlterStbReq
Func
(
"st1"
,
TSDB_ALTER_TABLE_DROP_TAG
,
1
,
"tag1"
);
setAlterStbReq
(
"st1"
,
TSDB_ALTER_TABLE_DROP_TAG
,
1
,
"tag1"
);
run
(
"ALTER STABLE st1 DROP TAG tag1"
);
run
(
"ALTER STABLE st1 DROP TAG tag1"
);
clearAlterStbReq
();
clearAlterStbReq
();
setAlterStbReqFunc
(
"st1"
,
TSDB_ALTER_TABLE_UPDATE_TAG_BYTES
,
1
,
"tag2"
,
TSDB_DATA_TYPE_VARCHAR
,
setAlterStbReq
(
"st1"
,
TSDB_ALTER_TABLE_UPDATE_TAG_BYTES
,
1
,
"tag2"
,
TSDB_DATA_TYPE_VARCHAR
,
30
+
VARSTR_HEADER_SIZE
);
30
+
VARSTR_HEADER_SIZE
);
run
(
"ALTER STABLE st1 MODIFY TAG tag2 VARCHAR(30)"
);
run
(
"ALTER STABLE st1 MODIFY TAG tag2 VARCHAR(30)"
);
clearAlterStbReq
();
clearAlterStbReq
();
setAlterStbReq
Func
(
"st1"
,
TSDB_ALTER_TABLE_UPDATE_TAG_NAME
,
2
,
"tag1"
,
0
,
0
,
"tag11"
);
setAlterStbReq
(
"st1"
,
TSDB_ALTER_TABLE_UPDATE_TAG_NAME
,
2
,
"tag1"
,
0
,
0
,
"tag11"
);
run
(
"ALTER STABLE st1 RENAME TAG tag1 tag11"
);
run
(
"ALTER STABLE st1 RENAME TAG tag1 tag11"
);
clearAlterStbReq
();
clearAlterStbReq
();
// todo
// ADD {FULLTEXT | SMA} INDEX index_name (col_name [, col_name] ...) [index_option]
}
}
TEST_F
(
ParserInitialATest
,
alterSTableSemanticCheck
)
{
TEST_F
(
ParserInitialATest
,
alterSTableSemanticCheck
)
{
useDb
(
"root"
,
"test"
);
useDb
(
"root"
,
"test"
);
run
(
"ALTER STABLE st1 RENAME COLUMN c1 cc1"
,
TSDB_CODE_PAR_INVALID_ALTER_TABLE
);
run
(
"ALTER STABLE st1 RENAME COLUMN c1 cc1"
,
TSDB_CODE_PAR_INVALID_ALTER_TABLE
);
run
(
"ALTER STABLE st1 MODIFY COLUMN c2 NCHAR(10)"
,
TSDB_CODE_PAR_INVALID_MODIFY_COL
);
run
(
"ALTER STABLE st1 MODIFY COLUMN c2 NCHAR(10)"
,
TSDB_CODE_PAR_INVALID_MODIFY_COL
);
run
(
"ALTER STABLE st1 MODIFY TAG tag2 NCHAR(10)"
,
TSDB_CODE_PAR_INVALID_MODIFY_COL
);
run
(
"ALTER STABLE st1 MODIFY TAG tag2 NCHAR(10)"
,
TSDB_CODE_PAR_INVALID_MODIFY_COL
);
run
(
"ALTER STABLE st1 SET TAG tag1 = 10"
,
TSDB_CODE_PAR_INVALID_ALTER_TABLE
);
run
(
"ALTER STABLE st1 TTL 10"
,
TSDB_CODE_PAR_INVALID_ALTER_TABLE
);
}
}
TEST_F
(
ParserInitialATest
,
alterTable
)
{
TEST_F
(
ParserInitialATest
,
alterTable
)
{
...
@@ -246,8 +426,8 @@ TEST_F(ParserInitialATest, alterTable) {
...
@@ -246,8 +426,8 @@ TEST_F(ParserInitialATest, alterTable) {
memset
(
&
expect
,
0
,
sizeof
(
SVAlterTbReq
));
memset
(
&
expect
,
0
,
sizeof
(
SVAlterTbReq
));
};
};
auto
setAlter
ColFunc
=
[
&
](
const
char
*
pTbname
,
int8_t
alterType
,
const
char
*
pColName
,
int8_t
dataType
=
0
,
auto
setAlter
TableCol
=
[
&
](
const
char
*
pTbname
,
int8_t
alterType
,
const
char
*
pColName
,
int8_t
dataType
=
0
,
int32_t
dataBytes
=
0
,
const
char
*
pNewColName
=
nullptr
)
{
int32_t
dataBytes
=
0
,
const
char
*
pNewColName
=
nullptr
)
{
expect
.
tbName
=
strdup
(
pTbname
);
expect
.
tbName
=
strdup
(
pTbname
);
expect
.
action
=
alterType
;
expect
.
action
=
alterType
;
expect
.
colName
=
strdup
(
pColName
);
expect
.
colName
=
strdup
(
pColName
);
...
@@ -269,7 +449,7 @@ TEST_F(ParserInitialATest, alterTable) {
...
@@ -269,7 +449,7 @@ TEST_F(ParserInitialATest, alterTable) {
}
}
};
};
auto
setAlterTa
gFunc
=
[
&
](
const
char
*
pTbname
,
const
char
*
pTagName
,
uint8_t
*
pNewVal
,
uint32_t
bytes
)
{
auto
setAlterTa
bleTag
=
[
&
](
const
char
*
pTbname
,
const
char
*
pTagName
,
uint8_t
*
pNewVal
,
uint32_t
bytes
)
{
expect
.
tbName
=
strdup
(
pTbname
);
expect
.
tbName
=
strdup
(
pTbname
);
expect
.
action
=
TSDB_ALTER_TABLE_UPDATE_TAG_VAL
;
expect
.
action
=
TSDB_ALTER_TABLE_UPDATE_TAG_VAL
;
expect
.
tagName
=
strdup
(
pTagName
);
expect
.
tagName
=
strdup
(
pTagName
);
...
@@ -279,7 +459,7 @@ TEST_F(ParserInitialATest, alterTable) {
...
@@ -279,7 +459,7 @@ TEST_F(ParserInitialATest, alterTable) {
expect
.
pTagVal
=
pNewVal
;
expect
.
pTagVal
=
pNewVal
;
};
};
auto
setAlter
OptionsFunc
=
[
&
](
const
char
*
pTbname
,
int32_t
ttl
,
char
*
pComment
=
nullptr
)
{
auto
setAlter
TableOptions
=
[
&
](
const
char
*
pTbname
,
int32_t
ttl
,
char
*
pComment
=
nullptr
)
{
expect
.
tbName
=
strdup
(
pTbname
);
expect
.
tbName
=
strdup
(
pTbname
);
expect
.
action
=
TSDB_ALTER_TABLE_UPDATE_OPTIONS
;
expect
.
action
=
TSDB_ALTER_TABLE_UPDATE_OPTIONS
;
if
(
-
1
!=
ttl
)
{
if
(
-
1
!=
ttl
)
{
...
@@ -335,47 +515,56 @@ TEST_F(ParserInitialATest, alterTable) {
...
@@ -335,47 +515,56 @@ TEST_F(ParserInitialATest, alterTable) {
tDecoderClear
(
&
coder
);
tDecoderClear
(
&
coder
);
});
});
setAlter
OptionsFunc
(
"t1"
,
10
,
nullptr
);
setAlter
TableOptions
(
"t1"
,
10
,
nullptr
);
run
(
"ALTER TABLE t1 TTL 10"
);
run
(
"ALTER TABLE t1 TTL 10"
);
clearAlterTbReq
();
clearAlterTbReq
();
setAlter
OptionsFunc
(
"t1"
,
-
1
,
(
char
*
)
"test"
);
setAlter
TableOptions
(
"t1"
,
-
1
,
(
char
*
)
"test"
);
run
(
"ALTER TABLE t1 COMMENT 'test'"
);
run
(
"ALTER TABLE t1 COMMENT 'test'"
);
clearAlterTbReq
();
clearAlterTbReq
();
setAlter
ColFunc
(
"t1"
,
TSDB_ALTER_TABLE_ADD_COLUMN
,
"cc1"
,
TSDB_DATA_TYPE_BIGINT
);
setAlter
TableCol
(
"t1"
,
TSDB_ALTER_TABLE_ADD_COLUMN
,
"cc1"
,
TSDB_DATA_TYPE_BIGINT
);
run
(
"ALTER TABLE t1 ADD COLUMN cc1 BIGINT"
);
run
(
"ALTER TABLE t1 ADD COLUMN cc1 BIGINT"
);
clearAlterTbReq
();
clearAlterTbReq
();
setAlter
ColFunc
(
"t1"
,
TSDB_ALTER_TABLE_DROP_COLUMN
,
"c1"
);
setAlter
TableCol
(
"t1"
,
TSDB_ALTER_TABLE_DROP_COLUMN
,
"c1"
);
run
(
"ALTER TABLE t1 DROP COLUMN c1"
);
run
(
"ALTER TABLE t1 DROP COLUMN c1"
);
clearAlterTbReq
();
clearAlterTbReq
();
setAlter
ColFunc
(
"t1"
,
TSDB_ALTER_TABLE_UPDATE_COLUMN_BYTES
,
"c2"
,
TSDB_DATA_TYPE_VARCHAR
,
30
+
VARSTR_HEADER_SIZE
);
setAlter
TableCol
(
"t1"
,
TSDB_ALTER_TABLE_UPDATE_COLUMN_BYTES
,
"c2"
,
TSDB_DATA_TYPE_VARCHAR
,
30
+
VARSTR_HEADER_SIZE
);
run
(
"ALTER TABLE t1 MODIFY COLUMN c2 VARCHAR(30)"
);
run
(
"ALTER TABLE t1 MODIFY COLUMN c2 VARCHAR(30)"
);
clearAlterTbReq
();
clearAlterTbReq
();
setAlter
ColFunc
(
"t1"
,
TSDB_ALTER_TABLE_UPDATE_COLUMN_NAME
,
"c1"
,
0
,
0
,
"cc1"
);
setAlter
TableCol
(
"t1"
,
TSDB_ALTER_TABLE_UPDATE_COLUMN_NAME
,
"c1"
,
0
,
0
,
"cc1"
);
run
(
"ALTER TABLE t1 RENAME COLUMN c1 cc1"
);
run
(
"ALTER TABLE t1 RENAME COLUMN c1 cc1"
);
clearAlterTbReq
();
clearAlterTbReq
();
int32_t
val
=
10
;
int32_t
val
=
10
;
setAlterTa
gFunc
(
"st1s1"
,
"tag1"
,
(
uint8_t
*
)
&
val
,
sizeof
(
val
));
setAlterTa
bleTag
(
"st1s1"
,
"tag1"
,
(
uint8_t
*
)
&
val
,
sizeof
(
val
));
run
(
"ALTER TABLE st1s1 SET TAG tag1=10"
);
run
(
"ALTER TABLE st1s1 SET TAG tag1=10"
);
clearAlterTbReq
();
clearAlterTbReq
();
// todo
// ADD {FULLTEXT | SMA} INDEX index_name (col_name [, col_name] ...) [index_option]
}
}
TEST_F
(
ParserInitialATest
,
alterTableSemanticCheck
)
{
TEST_F
(
ParserInitialATest
,
alterTableSemanticCheck
)
{
useDb
(
"root"
,
"test"
);
useDb
(
"root"
,
"test"
);
run
(
"ALTER TABLE st1s1 RENAME COLUMN c1 cc1"
,
TSDB_CODE_PAR_INVALID_ALTER_TABLE
);
run
(
"ALTER TABLE st1s1 RENAME COLUMN c1 cc1"
,
TSDB_CODE_PAR_INVALID_ALTER_TABLE
);
run
(
"ALTER TABLE st1s1 ADD TAG tag11 BIGINT"
,
TSDB_CODE_PAR_INVALID_ALTER_TABLE
);
run
(
"ALTER TABLE st1s1 DROP TAG tag1"
,
TSDB_CODE_PAR_INVALID_ALTER_TABLE
);
run
(
"ALTER TABLE st1s1 MODIFY TAG tag2 VARCHAR(30)"
,
TSDB_CODE_PAR_INVALID_ALTER_TABLE
);
run
(
"ALTER TABLE st1s1 RENAME TAG tag1 tag11"
,
TSDB_CODE_PAR_INVALID_ALTER_TABLE
);
run
(
"ALTER TABLE st1s1 SET TAG tag2 = '123456789012345678901'"
,
TSDB_CODE_PAR_WRONG_VALUE_TYPE
);
run
(
"ALTER TABLE st1s1 SET TAG tag2 = '123456789012345678901'"
,
TSDB_CODE_PAR_WRONG_VALUE_TYPE
);
}
}
/*
* ALTER USER user_name PASS str_value
*
* alter_user_clause: {
* PASS str_value
* | ENABLE int_value
* | SYSINFO int_value
* }
*/
TEST_F
(
ParserInitialATest
,
alterUser
)
{
TEST_F
(
ParserInitialATest
,
alterUser
)
{
useDb
(
"root"
,
"test"
);
useDb
(
"root"
,
"test"
);
...
@@ -423,6 +612,9 @@ TEST_F(ParserInitialATest, alterUser) {
...
@@ -423,6 +612,9 @@ TEST_F(ParserInitialATest, alterUser) {
clearAlterUserReq
();
clearAlterUserReq
();
}
}
/*
* BALANCE VGROUP
*/
TEST_F
(
ParserInitialATest
,
balanceVgroup
)
{
TEST_F
(
ParserInitialATest
,
balanceVgroup
)
{
useDb
(
"root"
,
"test"
);
useDb
(
"root"
,
"test"
);
...
@@ -436,10 +628,4 @@ TEST_F(ParserInitialATest, balanceVgroup) {
...
@@ -436,10 +628,4 @@ TEST_F(ParserInitialATest, balanceVgroup) {
run
(
"BALANCE VGROUP"
);
run
(
"BALANCE VGROUP"
);
}
}
TEST_F
(
ParserInitialATest
,
bug001
)
{
useDb
(
"root"
,
"test"
);
run
(
"ALTER DATABASE db WAL 0 # td-14436"
,
TSDB_CODE_PAR_SYNTAX_ERROR
,
PARSER_STAGE_PARSE
);
}
}
// namespace ParserTest
}
// namespace ParserTest
\ No newline at end of file
source/libs/parser/test/parInitialCTest.cpp
浏览文件 @
8bca99da
...
@@ -236,12 +236,12 @@ TEST_F(ParserInitialCTest, createDatabase) {
...
@@ -236,12 +236,12 @@ TEST_F(ParserInitialCTest, createDatabase) {
TEST_F
(
ParserInitialCTest
,
createDatabaseSemanticCheck
)
{
TEST_F
(
ParserInitialCTest
,
createDatabaseSemanticCheck
)
{
useDb
(
"root"
,
"test"
);
useDb
(
"root"
,
"test"
);
run
(
"create database db2 retentions 0s:1d"
,
TSDB_CODE_PAR_INVALID_
RETENTIONS
_OPTION
);
run
(
"create database db2 retentions 0s:1d"
,
TSDB_CODE_PAR_INVALID_
DB
_OPTION
);
run
(
"create database db2 retentions 10s:0d"
,
TSDB_CODE_PAR_INVALID_
RETENTIONS
_OPTION
);
run
(
"create database db2 retentions 10s:0d"
,
TSDB_CODE_PAR_INVALID_
DB
_OPTION
);
run
(
"create database db2 retentions 1w:1d"
,
TSDB_CODE_PAR_INVALID_
RETENTIONS
_OPTION
);
run
(
"create database db2 retentions 1w:1d"
,
TSDB_CODE_PAR_INVALID_
DB
_OPTION
);
run
(
"create database db2 retentions 1w:1n"
,
TSDB_CODE_PAR_INVALID_
RETENTIONS
_OPTION
);
run
(
"create database db2 retentions 1w:1n"
,
TSDB_CODE_PAR_INVALID_
DB
_OPTION
);
run
(
"create database db2 retentions 15s:7d,15m:21d,10m:500d"
,
TSDB_CODE_PAR_INVALID_
RETENTIONS
_OPTION
);
run
(
"create database db2 retentions 15s:7d,15m:21d,10m:500d"
,
TSDB_CODE_PAR_INVALID_
DB
_OPTION
);
run
(
"create database db2 retentions 15s:7d,5m:21d,10m:10d"
,
TSDB_CODE_PAR_INVALID_
RETENTIONS
_OPTION
);
run
(
"create database db2 retentions 15s:7d,5m:21d,10m:10d"
,
TSDB_CODE_PAR_INVALID_
DB
_OPTION
);
}
}
TEST_F
(
ParserInitialCTest
,
createDnode
)
{
TEST_F
(
ParserInitialCTest
,
createDnode
)
{
...
@@ -514,13 +514,13 @@ TEST_F(ParserInitialCTest, createStableSemanticCheck) {
...
@@ -514,13 +514,13 @@ TEST_F(ParserInitialCTest, createStableSemanticCheck) {
useDb
(
"root"
,
"test"
);
useDb
(
"root"
,
"test"
);
run
(
"CREATE STABLE rollup_db.stb2 (ts TIMESTAMP, c1 INT) TAGS (tag1 INT) ROLLUP(CEIL)"
,
run
(
"CREATE STABLE rollup_db.stb2 (ts TIMESTAMP, c1 INT) TAGS (tag1 INT) ROLLUP(CEIL)"
,
TSDB_CODE_PAR_INVALID_
ROLLUP
_OPTION
);
TSDB_CODE_PAR_INVALID_
TABLE
_OPTION
);
run
(
"CREATE STABLE rollup_db.stb2 (ts TIMESTAMP, c1 INT) TAGS (tag1 INT) ROLLUP(MAX) MAX_DELAY 0s WATERMARK 1m"
,
run
(
"CREATE STABLE rollup_db.stb2 (ts TIMESTAMP, c1 INT) TAGS (tag1 INT) ROLLUP(MAX) MAX_DELAY 0s WATERMARK 1m"
,
TSDB_CODE_PAR_INVALID_
RANG
E_OPTION
);
TSDB_CODE_PAR_INVALID_
TABL
E_OPTION
);
run
(
"CREATE STABLE rollup_db.stb2 (ts TIMESTAMP, c1 INT) TAGS (tag1 INT) ROLLUP(MAX) MAX_DELAY 10s WATERMARK 18m"
,
run
(
"CREATE STABLE rollup_db.stb2 (ts TIMESTAMP, c1 INT) TAGS (tag1 INT) ROLLUP(MAX) MAX_DELAY 10s WATERMARK 18m"
,
TSDB_CODE_PAR_INVALID_
RANG
E_OPTION
);
TSDB_CODE_PAR_INVALID_
TABL
E_OPTION
);
}
}
TEST_F
(
ParserInitialCTest
,
createStream
)
{
TEST_F
(
ParserInitialCTest
,
createStream
)
{
...
...
source/libs/parser/test/parTestUtil.cpp
浏览文件 @
8bca99da
...
@@ -192,7 +192,7 @@ class ParserTestBaseImpl {
...
@@ -192,7 +192,7 @@ class ParserTestBaseImpl {
void
setParseContext
(
const
string
&
sql
,
SParseContext
*
pCxt
,
bool
async
=
false
)
{
void
setParseContext
(
const
string
&
sql
,
SParseContext
*
pCxt
,
bool
async
=
false
)
{
stmtEnv_
.
sql_
=
sql
;
stmtEnv_
.
sql_
=
sql
;
transform
(
stmtEnv_
.
sql_
.
begin
(),
stmtEnv_
.
sql_
.
end
(),
stmtEnv_
.
sql_
.
begin
(),
::
tolower
);
strtolower
((
char
*
)
stmtEnv_
.
sql_
.
c_str
(),
sql
.
c_str
()
);
pCxt
->
acctId
=
atoi
(
caseEnv_
.
acctId_
.
c_str
());
pCxt
->
acctId
=
atoi
(
caseEnv_
.
acctId_
.
c_str
());
pCxt
->
db
=
caseEnv_
.
db_
.
c_str
();
pCxt
->
db
=
caseEnv_
.
db_
.
c_str
();
...
...
source/libs/qworker/inc/qwInt.h
浏览文件 @
8bca99da
...
@@ -150,7 +150,6 @@ typedef struct SQWTaskCtx {
...
@@ -150,7 +150,6 @@ typedef struct SQWTaskCtx {
void
*
taskHandle
;
void
*
taskHandle
;
void
*
sinkHandle
;
void
*
sinkHandle
;
SSubplan
*
plan
;
STbVerInfo
tbInfo
;
STbVerInfo
tbInfo
;
}
SQWTaskCtx
;
}
SQWTaskCtx
;
...
...
source/libs/qworker/src/qwUtil.c
浏览文件 @
8bca99da
...
@@ -306,11 +306,6 @@ void qwFreeTaskCtx(SQWTaskCtx *ctx) {
...
@@ -306,11 +306,6 @@ void qwFreeTaskCtx(SQWTaskCtx *ctx) {
dsDestroyDataSinker
(
ctx
->
sinkHandle
);
dsDestroyDataSinker
(
ctx
->
sinkHandle
);
ctx
->
sinkHandle
=
NULL
;
ctx
->
sinkHandle
=
NULL
;
}
}
if
(
ctx
->
plan
)
{
nodesDestroyNode
((
SNode
*
)
ctx
->
plan
);
ctx
->
plan
=
NULL
;
}
}
}
int32_t
qwDropTaskCtx
(
QW_FPARAMS_DEF
)
{
int32_t
qwDropTaskCtx
(
QW_FPARAMS_DEF
)
{
...
@@ -327,7 +322,6 @@ int32_t qwDropTaskCtx(QW_FPARAMS_DEF) {
...
@@ -327,7 +322,6 @@ int32_t qwDropTaskCtx(QW_FPARAMS_DEF) {
atomic_store_ptr
(
&
ctx
->
taskHandle
,
NULL
);
atomic_store_ptr
(
&
ctx
->
taskHandle
,
NULL
);
atomic_store_ptr
(
&
ctx
->
sinkHandle
,
NULL
);
atomic_store_ptr
(
&
ctx
->
sinkHandle
,
NULL
);
atomic_store_ptr
(
&
ctx
->
plan
,
NULL
);
QW_SET_EVENT_PROCESSED
(
ctx
,
QW_EVENT_DROP
);
QW_SET_EVENT_PROCESSED
(
ctx
,
QW_EVENT_DROP
);
...
...
source/libs/qworker/src/qworker.c
浏览文件 @
8bca99da
...
@@ -522,8 +522,6 @@ int32_t qwProcessQuery(QW_FPARAMS_DEF, SQWMsg *qwMsg, const char* sql) {
...
@@ -522,8 +522,6 @@ int32_t qwProcessQuery(QW_FPARAMS_DEF, SQWMsg *qwMsg, const char* sql) {
QW_ERR_JRET
(
code
);
QW_ERR_JRET
(
code
);
}
}
ctx
->
plan
=
plan
;
code
=
qCreateExecTask
(
qwMsg
->
node
,
mgmt
->
nodeId
,
tId
,
plan
,
&
pTaskInfo
,
&
sinkHandle
,
sql
,
OPTR_EXEC_MODEL_BATCH
);
code
=
qCreateExecTask
(
qwMsg
->
node
,
mgmt
->
nodeId
,
tId
,
plan
,
&
pTaskInfo
,
&
sinkHandle
,
sql
,
OPTR_EXEC_MODEL_BATCH
);
if
(
code
)
{
if
(
code
)
{
QW_TASK_ELOG
(
"qCreateExecTask failed, code:%x - %s"
,
code
,
tstrerror
(
code
));
QW_TASK_ELOG
(
"qCreateExecTask failed, code:%x - %s"
,
code
,
tstrerror
(
code
));
...
@@ -928,8 +926,6 @@ int32_t qwProcessDelete(QW_FPARAMS_DEF, SQWMsg *qwMsg, SDeleteRes *pRes) {
...
@@ -928,8 +926,6 @@ int32_t qwProcessDelete(QW_FPARAMS_DEF, SQWMsg *qwMsg, SDeleteRes *pRes) {
QW_ERR_JRET
(
code
);
QW_ERR_JRET
(
code
);
}
}
ctx
.
plan
=
plan
;
code
=
qCreateExecTask
(
qwMsg
->
node
,
mgmt
->
nodeId
,
tId
,
plan
,
&
pTaskInfo
,
&
sinkHandle
,
NULL
,
OPTR_EXEC_MODEL_BATCH
);
code
=
qCreateExecTask
(
qwMsg
->
node
,
mgmt
->
nodeId
,
tId
,
plan
,
&
pTaskInfo
,
&
sinkHandle
,
NULL
,
OPTR_EXEC_MODEL_BATCH
);
if
(
code
)
{
if
(
code
)
{
QW_TASK_ELOG
(
"qCreateExecTask failed, code:%x - %s"
,
code
,
tstrerror
(
code
));
QW_TASK_ELOG
(
"qCreateExecTask failed, code:%x - %s"
,
code
,
tstrerror
(
code
));
...
...
source/libs/scalar/src/filter.c
浏览文件 @
8bca99da
...
@@ -3682,6 +3682,10 @@ EDealRes fltReviseRewriter(SNode** pNode, void* pContext) {
...
@@ -3682,6 +3682,10 @@ EDealRes fltReviseRewriter(SNode** pNode, void* pContext) {
if
(
OP_TYPE_IN
!=
node
->
opType
)
{
if
(
OP_TYPE_IN
!=
node
->
opType
)
{
SColumnNode
*
refNode
=
(
SColumnNode
*
)
node
->
pLeft
;
SColumnNode
*
refNode
=
(
SColumnNode
*
)
node
->
pLeft
;
SValueNode
*
valueNode
=
(
SValueNode
*
)
node
->
pRight
;
SValueNode
*
valueNode
=
(
SValueNode
*
)
node
->
pRight
;
if
(
FILTER_GET_FLAG
(
stat
->
info
->
options
,
FLT_OPTION_TIMESTAMP
)
&&
TSDB_DATA_TYPE_UBIGINT
==
valueNode
->
node
.
resType
.
type
&&
valueNode
->
datum
.
u
<=
INT64_MAX
)
{
valueNode
->
node
.
resType
.
type
=
TSDB_DATA_TYPE_BIGINT
;
}
int32_t
type
=
vectorGetConvertType
(
refNode
->
node
.
resType
.
type
,
valueNode
->
node
.
resType
.
type
);
int32_t
type
=
vectorGetConvertType
(
refNode
->
node
.
resType
.
type
,
valueNode
->
node
.
resType
.
type
);
if
(
0
!=
type
&&
type
!=
refNode
->
node
.
resType
.
type
)
{
if
(
0
!=
type
&&
type
!=
refNode
->
node
.
resType
.
type
)
{
stat
->
scalarMode
=
true
;
stat
->
scalarMode
=
true
;
...
...
source/libs/sync/src/syncElection.c
浏览文件 @
8bca99da
...
@@ -125,7 +125,7 @@ int32_t syncNodeRequestVote(SSyncNode* pSyncNode, const SRaftId* destRaftId, con
...
@@ -125,7 +125,7 @@ int32_t syncNodeRequestVote(SSyncNode* pSyncNode, const SRaftId* destRaftId, con
syncUtilU642Addr
(
destRaftId
->
addr
,
host
,
sizeof
(
host
),
&
port
);
syncUtilU642Addr
(
destRaftId
->
addr
,
host
,
sizeof
(
host
),
&
port
);
sDebug
(
"vgId:%d, send sync-request-vote to %s:%d, {term:%"
PRIu64
", last-index:%"
PRId64
", last-term:%"
PRIu64
sDebug
(
"vgId:%d, send sync-request-vote to %s:%d, {term:%"
PRIu64
", last-index:%"
PRId64
", last-term:%"
PRIu64
"}"
,
"}"
,
pSyncNode
->
vgId
,
host
,
port
,
pMsg
->
term
,
pMsg
->
lastLog
Term
,
pMsg
->
lastLogIndex
);
pSyncNode
->
vgId
,
host
,
port
,
pMsg
->
term
,
pMsg
->
lastLog
Index
,
pMsg
->
lastLogTerm
);
}
while
(
0
);
}
while
(
0
);
SRpcMsg
rpcMsg
;
SRpcMsg
rpcMsg
;
...
...
source/libs/sync/src/syncMain.c
浏览文件 @
8bca99da
...
@@ -1539,13 +1539,13 @@ void syncNodeEventLog(const SSyncNode* pSyncNode, char* str) {
...
@@ -1539,13 +1539,13 @@ void syncNodeEventLog(const SSyncNode* pSyncNode, char* str) {
if
(
pSyncNode
!=
NULL
&&
pSyncNode
->
pRaftCfg
!=
NULL
&&
pSyncNode
->
pRaftStore
!=
NULL
)
{
if
(
pSyncNode
!=
NULL
&&
pSyncNode
->
pRaftCfg
!=
NULL
&&
pSyncNode
->
pRaftStore
!=
NULL
)
{
snprintf
(
logBuf
,
sizeof
(
logBuf
),
snprintf
(
logBuf
,
sizeof
(
logBuf
),
"vgId:%d, sync %s %s, term:%"
PRIu64
", commit:%"
PRId64
", first:%"
PRId64
", last:%"
PRId64
"vgId:%d, sync %s %s, term:%"
PRIu64
", commit:%"
PRId64
", first:%"
PRId64
", last:%"
PRId64
", snapshot:%"
PRId64
", snapshot:%"
PRId64
", snapshot-term:%"
PRIu64
", standby:%d, "
", standby:%d, "
"strategy:%d, batch:%d, "
"strategy:%d, batch:%d, "
"replica-num:%d, "
"replica-num:%d, "
"lconfig:%"
PRId64
", changing:%d, restore:%d, %s"
,
"lconfig:%"
PRId64
", changing:%d, restore:%d, %s"
,
pSyncNode
->
vgId
,
syncUtilState2String
(
pSyncNode
->
state
),
str
,
pSyncNode
->
pRaftStore
->
currentTerm
,
pSyncNode
->
vgId
,
syncUtilState2String
(
pSyncNode
->
state
),
str
,
pSyncNode
->
pRaftStore
->
currentTerm
,
pSyncNode
->
commitIndex
,
logBeginIndex
,
logLastIndex
,
snapshot
.
lastApplyIndex
,
pSyncNode
->
commitIndex
,
logBeginIndex
,
logLastIndex
,
snapshot
.
lastApplyIndex
,
snapshot
.
lastApplyTerm
,
pSyncNode
->
pRaftCfg
->
isStandBy
,
pSyncNode
->
pRaftCfg
->
snapshotStrategy
,
pSyncNode
->
pRaftCfg
->
batchSize
,
pSyncNode
->
pRaftCfg
->
isStandBy
,
pSyncNode
->
pRaftCfg
->
snapshotStrategy
,
pSyncNode
->
pRaftCfg
->
batchSize
,
pSyncNode
->
replicaNum
,
pSyncNode
->
pRaftCfg
->
lastConfigIndex
,
pSyncNode
->
changing
,
pSyncNode
->
replicaNum
,
pSyncNode
->
pRaftCfg
->
lastConfigIndex
,
pSyncNode
->
changing
,
pSyncNode
->
restoreFinish
,
printStr
);
pSyncNode
->
restoreFinish
,
printStr
);
...
@@ -1561,13 +1561,13 @@ void syncNodeEventLog(const SSyncNode* pSyncNode, char* str) {
...
@@ -1561,13 +1561,13 @@ void syncNodeEventLog(const SSyncNode* pSyncNode, char* str) {
if
(
pSyncNode
!=
NULL
&&
pSyncNode
->
pRaftCfg
!=
NULL
&&
pSyncNode
->
pRaftStore
!=
NULL
)
{
if
(
pSyncNode
!=
NULL
&&
pSyncNode
->
pRaftCfg
!=
NULL
&&
pSyncNode
->
pRaftStore
!=
NULL
)
{
snprintf
(
s
,
len
,
snprintf
(
s
,
len
,
"vgId:%d, sync %s %s, term:%"
PRIu64
", commit:%"
PRId64
", first:%"
PRId64
", last:%"
PRId64
"vgId:%d, sync %s %s, term:%"
PRIu64
", commit:%"
PRId64
", first:%"
PRId64
", last:%"
PRId64
", snapshot:%"
PRId64
", snapshot:%"
PRId64
", snapshot-term:%"
PRIu64
", standby:%d, "
", standby:%d, "
"strategy:%d, batch:%d, "
"strategy:%d, batch:%d, "
"replica-num:%d, "
"replica-num:%d, "
"lconfig:%"
PRId64
", changing:%d, restore:%d, %s"
,
"lconfig:%"
PRId64
", changing:%d, restore:%d, %s"
,
pSyncNode
->
vgId
,
syncUtilState2String
(
pSyncNode
->
state
),
str
,
pSyncNode
->
pRaftStore
->
currentTerm
,
pSyncNode
->
vgId
,
syncUtilState2String
(
pSyncNode
->
state
),
str
,
pSyncNode
->
pRaftStore
->
currentTerm
,
pSyncNode
->
commitIndex
,
logBeginIndex
,
logLastIndex
,
snapshot
.
lastApplyIndex
,
pSyncNode
->
commitIndex
,
logBeginIndex
,
logLastIndex
,
snapshot
.
lastApplyIndex
,
snapshot
.
lastApplyTerm
,
pSyncNode
->
pRaftCfg
->
isStandBy
,
pSyncNode
->
pRaftCfg
->
snapshotStrategy
,
pSyncNode
->
pRaftCfg
->
batchSize
,
pSyncNode
->
pRaftCfg
->
isStandBy
,
pSyncNode
->
pRaftCfg
->
snapshotStrategy
,
pSyncNode
->
pRaftCfg
->
batchSize
,
pSyncNode
->
replicaNum
,
pSyncNode
->
pRaftCfg
->
lastConfigIndex
,
pSyncNode
->
changing
,
pSyncNode
->
replicaNum
,
pSyncNode
->
pRaftCfg
->
lastConfigIndex
,
pSyncNode
->
changing
,
pSyncNode
->
restoreFinish
,
printStr
);
pSyncNode
->
restoreFinish
,
printStr
);
...
@@ -1608,14 +1608,16 @@ void syncNodeErrorLog(const SSyncNode* pSyncNode, char* str) {
...
@@ -1608,14 +1608,16 @@ void syncNodeErrorLog(const SSyncNode* pSyncNode, char* str) {
if
(
pSyncNode
!=
NULL
&&
pSyncNode
->
pRaftCfg
!=
NULL
&&
pSyncNode
->
pRaftStore
!=
NULL
)
{
if
(
pSyncNode
!=
NULL
&&
pSyncNode
->
pRaftCfg
!=
NULL
&&
pSyncNode
->
pRaftStore
!=
NULL
)
{
snprintf
(
logBuf
,
sizeof
(
logBuf
),
snprintf
(
logBuf
,
sizeof
(
logBuf
),
"vgId:%d, sync %s %s, term:%"
PRIu64
", commit:%"
PRId64
", first:%"
PRId64
", last:%"
PRId64
"vgId:%d, sync %s %s, term:%"
PRIu64
", commit:%"
PRId64
", first:%"
PRId64
", last:%"
PRId64
", snapshot:%"
PRId64
", snapshot:%"
PRId64
", snapshot-term:%"
PRIu64
", standby:%d, "
", standby:%d, "
"strategy:%d, batch:%d, "
"replica-num:%d, "
"replica-num:%d, "
"lconfig:%"
PRId64
", changing:%d, restore:%d, %s"
,
"lconfig:%"
PRId64
", changing:%d, restore:%d, %s"
,
pSyncNode
->
vgId
,
syncUtilState2String
(
pSyncNode
->
state
),
str
,
pSyncNode
->
pRaftStore
->
currentTerm
,
pSyncNode
->
vgId
,
syncUtilState2String
(
pSyncNode
->
state
),
str
,
pSyncNode
->
pRaftStore
->
currentTerm
,
pSyncNode
->
commitIndex
,
logBeginIndex
,
logLastIndex
,
snapshot
.
lastApplyIndex
,
pSyncNode
->
commitIndex
,
logBeginIndex
,
logLastIndex
,
snapshot
.
lastApplyIndex
,
snapshot
.
lastApplyTerm
,
pSyncNode
->
pRaftCfg
->
isStandBy
,
pSyncNode
->
replicaNum
,
pSyncNode
->
pRaftCfg
->
lastConfigIndex
,
pSyncNode
->
pRaftCfg
->
isStandBy
,
pSyncNode
->
pRaftCfg
->
snapshotStrategy
,
pSyncNode
->
pRaftCfg
->
batchSize
,
pSyncNode
->
changing
,
pSyncNode
->
restoreFinish
,
printStr
);
pSyncNode
->
replicaNum
,
pSyncNode
->
pRaftCfg
->
lastConfigIndex
,
pSyncNode
->
changing
,
pSyncNode
->
restoreFinish
,
printStr
);
}
else
{
}
else
{
snprintf
(
logBuf
,
sizeof
(
logBuf
),
"%s"
,
str
);
snprintf
(
logBuf
,
sizeof
(
logBuf
),
"%s"
,
str
);
}
}
...
@@ -1627,14 +1629,16 @@ void syncNodeErrorLog(const SSyncNode* pSyncNode, char* str) {
...
@@ -1627,14 +1629,16 @@ void syncNodeErrorLog(const SSyncNode* pSyncNode, char* str) {
if
(
pSyncNode
!=
NULL
&&
pSyncNode
->
pRaftCfg
!=
NULL
&&
pSyncNode
->
pRaftStore
!=
NULL
)
{
if
(
pSyncNode
!=
NULL
&&
pSyncNode
->
pRaftCfg
!=
NULL
&&
pSyncNode
->
pRaftStore
!=
NULL
)
{
snprintf
(
s
,
len
,
snprintf
(
s
,
len
,
"vgId:%d, sync %s %s, term:%"
PRIu64
", commit:%"
PRId64
", first:%"
PRId64
", last:%"
PRId64
"vgId:%d, sync %s %s, term:%"
PRIu64
", commit:%"
PRId64
", first:%"
PRId64
", last:%"
PRId64
", snapshot:%"
PRId64
", snapshot:%"
PRId64
", snapshot-term:%"
PRIu64
", standby:%d, "
", standby:%d, "
"strategy:%d, batch:%d, "
"replica-num:%d, "
"replica-num:%d, "
"lconfig:%"
PRId64
", changing:%d, restore:%d, %s"
,
"lconfig:%"
PRId64
", changing:%d, restore:%d, %s"
,
pSyncNode
->
vgId
,
syncUtilState2String
(
pSyncNode
->
state
),
str
,
pSyncNode
->
pRaftStore
->
currentTerm
,
pSyncNode
->
vgId
,
syncUtilState2String
(
pSyncNode
->
state
),
str
,
pSyncNode
->
pRaftStore
->
currentTerm
,
pSyncNode
->
commitIndex
,
logBeginIndex
,
logLastIndex
,
snapshot
.
lastApplyIndex
,
pSyncNode
->
commitIndex
,
logBeginIndex
,
logLastIndex
,
snapshot
.
lastApplyIndex
,
snapshot
.
lastApplyTerm
,
pSyncNode
->
pRaftCfg
->
isStandBy
,
pSyncNode
->
replicaNum
,
pSyncNode
->
pRaftCfg
->
lastConfigIndex
,
pSyncNode
->
pRaftCfg
->
isStandBy
,
pSyncNode
->
pRaftCfg
->
snapshotStrategy
,
pSyncNode
->
pRaftCfg
->
batchSize
,
pSyncNode
->
changing
,
pSyncNode
->
restoreFinish
,
printStr
);
pSyncNode
->
replicaNum
,
pSyncNode
->
pRaftCfg
->
lastConfigIndex
,
pSyncNode
->
changing
,
pSyncNode
->
restoreFinish
,
printStr
);
}
else
{
}
else
{
snprintf
(
s
,
len
,
"%s"
,
str
);
snprintf
(
s
,
len
,
"%s"
,
str
);
}
}
...
...
source/libs/sync/src/syncRequestVote.c
浏览文件 @
8bca99da
...
@@ -159,16 +159,53 @@ static bool syncNodeOnRequestVoteLogOK(SSyncNode* pSyncNode, SyncRequestVote* pM
...
@@ -159,16 +159,53 @@ static bool syncNodeOnRequestVoteLogOK(SSyncNode* pSyncNode, SyncRequestVote* pM
SyncIndex
myLastIndex
=
syncNodeGetLastIndex
(
pSyncNode
);
SyncIndex
myLastIndex
=
syncNodeGetLastIndex
(
pSyncNode
);
if
(
myLastTerm
==
SYNC_TERM_INVALID
)
{
if
(
myLastTerm
==
SYNC_TERM_INVALID
)
{
do
{
char
logBuf
[
128
];
snprintf
(
logBuf
,
sizeof
(
logBuf
),
"logok:0, {my-lterm:%"
PRIu64
", my-lindex:%"
PRId64
", recv-lterm:%"
PRIu64
", recv-lindex:%"
PRId64
", recv-term:%"
PRIu64
"}"
,
myLastTerm
,
myLastIndex
,
pMsg
->
lastLogTerm
,
pMsg
->
lastLogIndex
,
pMsg
->
term
);
syncNodeEventLog
(
pSyncNode
,
logBuf
);
}
while
(
0
);
return
false
;
return
false
;
}
}
if
(
pMsg
->
lastLogTerm
>
myLastTerm
)
{
if
(
pMsg
->
lastLogTerm
>
myLastTerm
)
{
do
{
char
logBuf
[
128
];
snprintf
(
logBuf
,
sizeof
(
logBuf
),
"logok:1, {my-lterm:%"
PRIu64
", my-lindex:%"
PRId64
", recv-lterm:%"
PRIu64
", recv-lindex:%"
PRId64
", recv-term:%"
PRIu64
"}"
,
myLastTerm
,
myLastIndex
,
pMsg
->
lastLogTerm
,
pMsg
->
lastLogIndex
,
pMsg
->
term
);
syncNodeEventLog
(
pSyncNode
,
logBuf
);
}
while
(
0
);
return
true
;
return
true
;
}
}
if
(
pMsg
->
lastLogTerm
==
myLastTerm
&&
pMsg
->
lastLogIndex
>=
myLastIndex
)
{
if
(
pMsg
->
lastLogTerm
==
myLastTerm
&&
pMsg
->
lastLogIndex
>=
myLastIndex
)
{
do
{
char
logBuf
[
128
];
snprintf
(
logBuf
,
sizeof
(
logBuf
),
"logok:1, {my-lterm:%"
PRIu64
", my-lindex:%"
PRId64
", recv-lterm:%"
PRIu64
", recv-lindex:%"
PRId64
", recv-term:%"
PRIu64
"}"
,
myLastTerm
,
myLastIndex
,
pMsg
->
lastLogTerm
,
pMsg
->
lastLogIndex
,
pMsg
->
term
);
syncNodeEventLog
(
pSyncNode
,
logBuf
);
}
while
(
0
);
return
true
;
return
true
;
}
}
do
{
char
logBuf
[
128
];
snprintf
(
logBuf
,
sizeof
(
logBuf
),
"logok:0, {my-lterm:%"
PRIu64
", my-lindex:%"
PRId64
", recv-lterm:%"
PRIu64
", recv-lindex:%"
PRId64
", recv-term:%"
PRIu64
"}"
,
myLastTerm
,
myLastIndex
,
pMsg
->
lastLogTerm
,
pMsg
->
lastLogIndex
,
pMsg
->
term
);
syncNodeEventLog
(
pSyncNode
,
logBuf
);
}
while
(
0
);
return
false
;
return
false
;
}
}
...
@@ -224,8 +261,8 @@ int32_t syncNodeOnRequestVoteSnapshotCb(SSyncNode* ths, SyncRequestVote* pMsg) {
...
@@ -224,8 +261,8 @@ int32_t syncNodeOnRequestVoteSnapshotCb(SSyncNode* ths, SyncRequestVote* pMsg) {
uint16_t
port
;
uint16_t
port
;
syncUtilU642Addr
(
pMsg
->
srcId
.
addr
,
host
,
sizeof
(
host
),
&
port
);
syncUtilU642Addr
(
pMsg
->
srcId
.
addr
,
host
,
sizeof
(
host
),
&
port
);
snprintf
(
logBuf
,
sizeof
(
logBuf
),
snprintf
(
logBuf
,
sizeof
(
logBuf
),
"recv sync-request-vote from %s:%d, term:%"
PRIu64
", lindex:%"
PRId64
", lterm:%"
PRIu64
"recv sync-request-vote from %s:%d,
{
term:%"
PRIu64
", lindex:%"
PRId64
", lterm:%"
PRIu64
", reply-grant:%d"
,
", reply-grant:%d
}
"
,
host
,
port
,
pMsg
->
term
,
pMsg
->
lastLogIndex
,
pMsg
->
lastLogTerm
,
pReply
->
voteGranted
);
host
,
port
,
pMsg
->
term
,
pMsg
->
lastLogIndex
,
pMsg
->
lastLogTerm
,
pReply
->
voteGranted
);
syncNodeEventLog
(
ths
,
logBuf
);
syncNodeEventLog
(
ths
,
logBuf
);
}
while
(
0
);
}
while
(
0
);
...
...
source/util/src/terror.c
浏览文件 @
8bca99da
...
@@ -501,19 +501,9 @@ TAOS_DEFINE_ERROR(TSDB_CODE_PAR_INTER_VALUE_TOO_SMALL, "Interval too small")
...
@@ -501,19 +501,9 @@ TAOS_DEFINE_ERROR(TSDB_CODE_PAR_INTER_VALUE_TOO_SMALL, "Interval too small")
TAOS_DEFINE_ERROR
(
TSDB_CODE_PAR_DB_NOT_SPECIFIED
,
"Database not specified"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_PAR_DB_NOT_SPECIFIED
,
"Database not specified"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_PAR_INVALID_IDENTIFIER_NAME
,
"Invalid identifier name"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_PAR_INVALID_IDENTIFIER_NAME
,
"Invalid identifier name"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_PAR_CORRESPONDING_STABLE_ERR
,
"Corresponding super table not in this db"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_PAR_CORRESPONDING_STABLE_ERR
,
"Corresponding super table not in this db"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_PAR_INVALID_RANGE_OPTION
,
"Invalid option"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_PAR_INVALID_DB_OPTION
,
"Invalid database option"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_PAR_INVALID_STR_OPTION
,
"Invalid option"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_PAR_INVALID_TABLE_OPTION
,
"Invalid table option"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_PAR_INVALID_ENUM_OPTION
,
"Invalid option"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_PAR_INVALID_KEEP_NUM
,
"Invalid number of keep options"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_PAR_INVALID_KEEP_ORDER
,
"Invalid keep value, should be keep0 <= keep1 <= keep2"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_PAR_INVALID_KEEP_VALUE
,
"Invalid option keep"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_PAR_INVALID_COMMENT_OPTION
,
"Invalid option comment"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_PAR_INVALID_F_RANGE_OPTION
,
"Invalid option"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_PAR_INVALID_ROLLUP_OPTION
,
"Invalid option rollup: only one function is allowed"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_PAR_INVALID_RETENTIONS_OPTION
,
"Invalid option retentions"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_PAR_GROUPBY_WINDOW_COEXIST
,
"GROUP BY and WINDOW-clause can't be used together"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_PAR_GROUPBY_WINDOW_COEXIST
,
"GROUP BY and WINDOW-clause can't be used together"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_PAR_INVALID_OPTION_UNIT
,
"Invalid option unit: only m, h, d allowed"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_PAR_INVALID_KEEP_UNIT
,
"Invalid option keep unit: only m, h, d allowed"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_PAR_AGG_FUNC_NESTING
,
"Aggregate functions do not support nesting"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_PAR_AGG_FUNC_NESTING
,
"Aggregate functions do not support nesting"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_PAR_INVALID_STATE_WIN_TYPE
,
"Only support STATE_WINDOW on integer/bool/varchar column"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_PAR_INVALID_STATE_WIN_TYPE
,
"Only support STATE_WINDOW on integer/bool/varchar column"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_PAR_INVALID_STATE_WIN_COL
,
"Not support STATE_WINDOW on tag column"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_PAR_INVALID_STATE_WIN_COL
,
"Not support STATE_WINDOW on tag column"
)
...
...
tests/pytest/util/dnodes.py
浏览文件 @
8bca99da
...
@@ -488,10 +488,13 @@ class TDDnode:
...
@@ -488,10 +488,13 @@ class TDDnode:
psCmd
=
"ps -ef|grep -w %s| grep -v grep | awk '{print $2}'"
%
toBeKilled
psCmd
=
"ps -ef|grep -w %s| grep -v grep | awk '{print $2}'"
%
toBeKilled
processID
=
subprocess
.
check_output
(
processID
=
subprocess
.
check_output
(
psCmd
,
shell
=
True
).
decode
(
"utf-8"
)
psCmd
,
shell
=
True
).
decode
(
"utf-8"
)
onlyKillOnceWindows
=
0
while
(
processID
):
while
(
processID
):
killCmd
=
"kill -INT %s > /dev/null 2>&1"
%
processID
if
not
platform
.
system
().
lower
()
==
'windows'
or
(
onlyKillOnceWindows
==
0
and
platform
.
system
().
lower
()
==
'windows'
):
os
.
system
(
killCmd
)
killCmd
=
"kill -INT %s > /dev/null 2>&1"
%
processID
os
.
system
(
killCmd
)
onlyKillOnceWindows
=
1
time
.
sleep
(
1
)
time
.
sleep
(
1
)
processID
=
subprocess
.
check_output
(
processID
=
subprocess
.
check_output
(
psCmd
,
shell
=
True
).
decode
(
"utf-8"
)
psCmd
,
shell
=
True
).
decode
(
"utf-8"
)
...
@@ -524,9 +527,12 @@ class TDDnode:
...
@@ -524,9 +527,12 @@ class TDDnode:
processID
=
subprocess
.
check_output
(
processID
=
subprocess
.
check_output
(
psCmd
,
shell
=
True
).
decode
(
"utf-8"
)
psCmd
,
shell
=
True
).
decode
(
"utf-8"
)
onlyKillOnceWindows
=
0
while
(
processID
):
while
(
processID
):
killCmd
=
"kill -INT %s > /dev/null 2>&1"
%
processID
if
not
platform
.
system
().
lower
()
==
'windows'
or
(
onlyKillOnceWindows
==
0
and
platform
.
system
().
lower
()
==
'windows'
):
os
.
system
(
killCmd
)
killCmd
=
"kill -INT %s > /dev/null 2>&1"
%
processID
os
.
system
(
killCmd
)
onlyKillOnceWindows
=
1
time
.
sleep
(
1
)
time
.
sleep
(
1
)
processID
=
subprocess
.
check_output
(
processID
=
subprocess
.
check_output
(
psCmd
,
shell
=
True
).
decode
(
"utf-8"
)
psCmd
,
shell
=
True
).
decode
(
"utf-8"
)
...
@@ -550,9 +556,12 @@ class TDDnode:
...
@@ -550,9 +556,12 @@ class TDDnode:
processID
=
subprocess
.
check_output
(
processID
=
subprocess
.
check_output
(
psCmd
,
shell
=
True
).
decode
(
"utf-8"
)
psCmd
,
shell
=
True
).
decode
(
"utf-8"
)
onlyKillOnceWindows
=
0
while
(
processID
):
while
(
processID
):
killCmd
=
"kill -KILL %s > /dev/null 2>&1"
%
processID
if
not
platform
.
system
().
lower
()
==
'windows'
or
(
onlyKillOnceWindows
==
0
and
platform
.
system
().
lower
()
==
'windows'
):
os
.
system
(
killCmd
)
killCmd
=
"kill -KILL %s > /dev/null 2>&1"
%
processID
os
.
system
(
killCmd
)
onlyKillOnceWindows
=
1
time
.
sleep
(
1
)
time
.
sleep
(
1
)
processID
=
subprocess
.
check_output
(
processID
=
subprocess
.
check_output
(
psCmd
,
shell
=
True
).
decode
(
"utf-8"
)
psCmd
,
shell
=
True
).
decode
(
"utf-8"
)
...
...
tests/tsim/inc/simParse.h
浏览文件 @
8bca99da
...
@@ -35,14 +35,14 @@ enum {
...
@@ -35,14 +35,14 @@ enum {
/* label stack */
/* label stack */
typedef
struct
{
typedef
struct
{
char
top
;
/* number of labels */
int8_t
top
;
/* number of labels */
int16_t
pos
[
MAX_NUM_LABLES
];
/* the position of the label */
int16_t
pos
[
MAX_NUM_LABLES
];
/* the position of the label */
char
label
[
MAX_NUM_LABLES
][
MAX_LABEL_LEN
];
/* name of the label */
char
label
[
MAX_NUM_LABLES
][
MAX_LABEL_LEN
];
/* name of the label */
}
SLabel
;
}
SLabel
;
/* block definition */
/* block definition */
typedef
struct
{
typedef
struct
{
char
top
;
/* the number of blocks stacked */
int8_t
top
;
/* the number of blocks stacked */
char
type
[
MAX_NUM_BLOCK
];
/* the block type */
char
type
[
MAX_NUM_BLOCK
];
/* the block type */
int16_t
*
pos
[
MAX_NUM_BLOCK
];
/* position of the jump for if/elif/case */
int16_t
*
pos
[
MAX_NUM_BLOCK
];
/* position of the jump for if/elif/case */
int16_t
back
[
MAX_NUM_BLOCK
];
/* go back, endw and continue */
int16_t
back
[
MAX_NUM_BLOCK
];
/* go back, endw and continue */
...
...
tools/shell/src/shellEngine.c
浏览文件 @
8bca99da
...
@@ -758,7 +758,6 @@ void shellReadHistory() {
...
@@ -758,7 +758,6 @@ void shellReadHistory() {
taosCloseFile
(
&
pFile
);
taosCloseFile
(
&
pFile
);
int64_t
file_size
;
int64_t
file_size
;
if
(
taosStatFile
(
pHistory
->
file
,
&
file_size
,
NULL
)
==
0
&&
file_size
>
SHELL_MAX_COMMAND_SIZE
)
{
if
(
taosStatFile
(
pHistory
->
file
,
&
file_size
,
NULL
)
==
0
&&
file_size
>
SHELL_MAX_COMMAND_SIZE
)
{
fprintf
(
stdout
,
"%s(%d) %s %08"
PRId64
"
\n
"
,
__FILE__
,
__LINE__
,
__func__
,
taosGetSelfPthreadId
());
fflush
(
stdout
);
TdFilePtr
pFile
=
taosOpenFile
(
pHistory
->
file
,
TD_FILE_CREATE
|
TD_FILE_WRITE
|
TD_FILE_STREAM
|
TD_FILE_TRUNC
);
TdFilePtr
pFile
=
taosOpenFile
(
pHistory
->
file
,
TD_FILE_CREATE
|
TD_FILE_WRITE
|
TD_FILE_STREAM
|
TD_FILE_TRUNC
);
if
(
pFile
==
NULL
)
return
;
if
(
pFile
==
NULL
)
return
;
int32_t
endIndex
=
pHistory
->
hstart
;
int32_t
endIndex
=
pHistory
->
hstart
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录