Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
2c403266
T
TDengine
项目概览
taosdata
/
TDengine
大约 1 年 前同步成功
通知
1184
Star
22015
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看板
体验新版 GitCode,发现更多精彩内容 >>
提交
2c403266
编写于
5月 09, 2023
作者:
D
dapan1121
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feat: support restore dnode clause
上级
6c7d4ec8
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
59 addition
and
56 deletion
+59
-56
source/libs/parser/inc/parAst.h
source/libs/parser/inc/parAst.h
+1
-0
source/libs/parser/src/parTokenizer.c
source/libs/parser/src/parTokenizer.c
+1
-0
source/libs/parser/test/parAlterToBalanceTest.cpp
source/libs/parser/test/parAlterToBalanceTest.cpp
+0
-56
source/libs/parser/test/parExplainToSyncdbTest.cpp
source/libs/parser/test/parExplainToSyncdbTest.cpp
+57
-0
未找到文件。
source/libs/parser/inc/parAst.h
浏览文件 @
2c403266
...
...
@@ -202,6 +202,7 @@ SNode* createIndexOption(SAstCreateContext* pCxt, SNodeList* pFuncs, SNode* pInt
SNode
*
createDropIndexStmt
(
SAstCreateContext
*
pCxt
,
bool
ignoreNotExists
,
SNode
*
pIndexName
);
SNode
*
createCreateComponentNodeStmt
(
SAstCreateContext
*
pCxt
,
ENodeType
type
,
const
SToken
*
pDnodeId
);
SNode
*
createDropComponentNodeStmt
(
SAstCreateContext
*
pCxt
,
ENodeType
type
,
const
SToken
*
pDnodeId
);
SNode
*
createRestoreComponentNodeStmt
(
SAstCreateContext
*
pCxt
,
ENodeType
type
,
const
SToken
*
pDnodeId
);
SNode
*
createCreateTopicStmtUseQuery
(
SAstCreateContext
*
pCxt
,
bool
ignoreExists
,
SToken
*
pTopicName
,
SNode
*
pQuery
);
SNode
*
createCreateTopicStmtUseDb
(
SAstCreateContext
*
pCxt
,
bool
ignoreExists
,
SToken
*
pTopicName
,
SToken
*
pSubDbName
,
bool
withMeta
);
...
...
source/libs/parser/src/parTokenizer.c
浏览文件 @
2c403266
...
...
@@ -181,6 +181,7 @@ static SKeyword keywordTable[] = {
{
"REPLACE"
,
TK_REPLACE
},
{
"REPLICA"
,
TK_REPLICA
},
{
"RESET"
,
TK_RESET
},
{
"RESTORE"
,
TK_RESTORE
},
{
"RETENTIONS"
,
TK_RETENTIONS
},
{
"REVOKE"
,
TK_REVOKE
},
{
"ROLLUP"
,
TK_ROLLUP
},
...
...
source/libs/parser/test/parAlterToBalanceTest.cpp
浏览文件 @
2c403266
...
...
@@ -92,62 +92,6 @@ TEST_F(ParserInitialATest, alterDnode) {
clearCfgDnodeReq
();
}
TEST_F
(
ParserInitialATest
,
restoreDnode
)
{
useDb
(
"root"
,
"test"
);
SRestoreDnodeReq
expect
=
{
0
};
auto
clearRestoreDnodeReq
=
[
&
]()
{
memset
(
&
expect
,
0
,
sizeof
(
SRestoreDnodeReq
));
};
auto
setRestoreDnodeReq
=
[
&
](
int32_t
dnodeId
,
int8_t
type
)
{
expect
.
dnodeId
=
dnodeId
;
expect
.
restoreType
=
type
;
};
setCheckDdlFunc
([
&
](
const
SQuery
*
pQuery
,
ParserStage
stage
)
{
int32_t
expectNodeType
=
0
;
switch
(
expect
.
restoreType
)
{
case
RESTORE_TYPE__ALL
:
expectNodeType
=
QUERY_NODE_RESTORE_DNODE_STMT
;
break
;
case
RESTORE_TYPE__MNODE
:
expectNodeType
=
QUERY_NODE_RESTORE_MNODE_STMT
;
break
;
case
RESTORE_TYPE__VNODE
:
expectNodeType
=
QUERY_NODE_RESTORE_VNODE_STMT
;
break
;
case
RESTORE_TYPE__QNODE
:
expectNodeType
=
QUERY_NODE_RESTORE_QNODE_STMT
;
break
;
default:
break
;
}
ASSERT_EQ
(
nodeType
(
pQuery
->
pRoot
),
expectNodeType
);
ASSERT_EQ
(
pQuery
->
pCmdMsg
->
msgType
,
TDMT_MND_RESTORE_DNODE
);
SRestoreDnodeReq
req
=
{
0
};
ASSERT_EQ
(
tDeserializeSRestoreDnodeReq
(
pQuery
->
pCmdMsg
->
pMsg
,
pQuery
->
pCmdMsg
->
msgLen
,
&
req
),
TSDB_CODE_SUCCESS
);
ASSERT_EQ
(
req
.
dnodeId
,
expect
.
dnodeId
);
ASSERT_EQ
(
req
.
restoreType
,
expect
.
restoreType
);
});
setRestoreDnodeReq
(
1
,
RESTORE_TYPE__ALL
);
run
(
"RESTORE DNODE 1"
);
clearRestoreDnodeReq
();
setRestoreDnodeReq
(
2
,
RESTORE_TYPE__MNODE
);
run
(
"RESTORE MNODE ON DNODE 2"
);
clearRestoreDnodeReq
();
setRestoreDnodeReq
(
1
,
RESTORE_TYPE__VNODE
);
run
(
"RESTORE VNODE ON DNODE 1"
);
clearRestoreDnodeReq
();
setRestoreDnodeReq
(
2
,
RESTORE_TYPE__QNODE
);
run
(
"RESTORE QNODE ON DNODE 2"
);
clearRestoreDnodeReq
();
}
/*
* ALTER DATABASE db_name [alter_database_options]
*
...
...
source/libs/parser/test/parExplainToSyncdbTest.cpp
浏览文件 @
2c403266
...
...
@@ -133,6 +133,63 @@ TEST_F(ParserExplainToSyncdbTest, redistributeVgroup) {
run
(
"REDISTRIBUTE VGROUP 5 DNODE 10 DNODE 20 DNODE 30"
);
}
TEST_F
(
ParserExplainToSyncdbTest
,
restoreDnode
)
{
useDb
(
"root"
,
"test"
);
SRestoreDnodeReq
expect
=
{
0
};
auto
clearRestoreDnodeReq
=
[
&
]()
{
memset
(
&
expect
,
0
,
sizeof
(
SRestoreDnodeReq
));
};
auto
setRestoreDnodeReq
=
[
&
](
int32_t
dnodeId
,
int8_t
type
)
{
expect
.
dnodeId
=
dnodeId
;
expect
.
restoreType
=
type
;
};
setCheckDdlFunc
([
&
](
const
SQuery
*
pQuery
,
ParserStage
stage
)
{
int32_t
expectNodeType
=
0
;
switch
(
expect
.
restoreType
)
{
case
RESTORE_TYPE__ALL
:
expectNodeType
=
QUERY_NODE_RESTORE_DNODE_STMT
;
break
;
case
RESTORE_TYPE__MNODE
:
expectNodeType
=
QUERY_NODE_RESTORE_MNODE_STMT
;
break
;
case
RESTORE_TYPE__VNODE
:
expectNodeType
=
QUERY_NODE_RESTORE_VNODE_STMT
;
break
;
case
RESTORE_TYPE__QNODE
:
expectNodeType
=
QUERY_NODE_RESTORE_QNODE_STMT
;
break
;
default:
break
;
}
ASSERT_EQ
(
nodeType
(
pQuery
->
pRoot
),
expectNodeType
);
ASSERT_EQ
(
pQuery
->
pCmdMsg
->
msgType
,
TDMT_MND_RESTORE_DNODE
);
SRestoreDnodeReq
req
=
{
0
};
ASSERT_EQ
(
tDeserializeSRestoreDnodeReq
(
pQuery
->
pCmdMsg
->
pMsg
,
pQuery
->
pCmdMsg
->
msgLen
,
&
req
),
TSDB_CODE_SUCCESS
);
ASSERT_EQ
(
req
.
dnodeId
,
expect
.
dnodeId
);
ASSERT_EQ
(
req
.
restoreType
,
expect
.
restoreType
);
});
setRestoreDnodeReq
(
1
,
RESTORE_TYPE__ALL
);
run
(
"RESTORE DNODE 1"
);
clearRestoreDnodeReq
();
setRestoreDnodeReq
(
2
,
RESTORE_TYPE__MNODE
);
run
(
"RESTORE MNODE ON DNODE 2"
);
clearRestoreDnodeReq
();
setRestoreDnodeReq
(
1
,
RESTORE_TYPE__VNODE
);
run
(
"RESTORE VNODE ON DNODE 1"
);
clearRestoreDnodeReq
();
setRestoreDnodeReq
(
2
,
RESTORE_TYPE__QNODE
);
run
(
"RESTORE QNODE ON DNODE 2"
);
clearRestoreDnodeReq
();
}
// todo reset query cache
TEST_F
(
ParserExplainToSyncdbTest
,
revoke
)
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录