Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
2dot5
ClickHouse
提交
543587fc
C
ClickHouse
项目概览
2dot5
/
ClickHouse
通知
3
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
C
ClickHouse
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
543587fc
编写于
2月 20, 2020
作者:
V
Vitaly Baranov
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Remove ATTACH and DETACH access types, check CREATE and DROP access types instead of them.
上级
4f85c148
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
8 addition
and
44 deletion
+8
-44
dbms/src/Access/AccessFlags.h
dbms/src/Access/AccessFlags.h
+0
-12
dbms/src/Access/AccessRightsContext.cpp
dbms/src/Access/AccessRightsContext.cpp
+2
-2
dbms/src/Access/AccessType.h
dbms/src/Access/AccessType.h
+0
-24
dbms/src/Interpreters/InterpreterDropQuery.cpp
dbms/src/Interpreters/InterpreterDropQuery.cpp
+6
-6
未找到文件。
dbms/src/Access/AccessFlags.h
浏览文件 @
543587fc
...
...
@@ -304,15 +304,10 @@ private:
ext
::
push_back
(
all
,
std
::
move
(
alter
));
auto
create_database
=
std
::
make_unique
<
Node
>
(
"CREATE DATABASE"
,
next_flag
++
,
DATABASE_LEVEL
);
ext
::
push_back
(
create_database
->
aliases
,
"ATTACH DATABASE"
);
auto
create_table
=
std
::
make_unique
<
Node
>
(
"CREATE TABLE"
,
next_flag
++
,
TABLE_LEVEL
);
ext
::
push_back
(
create_table
->
aliases
,
"ATTACH TABLE"
);
auto
create_view
=
std
::
make_unique
<
Node
>
(
"CREATE VIEW"
,
next_flag
++
,
VIEW_LEVEL
);
ext
::
push_back
(
create_view
->
aliases
,
"ATTACH VIEW"
);
auto
create_dictionary
=
std
::
make_unique
<
Node
>
(
"CREATE DICTIONARY"
,
next_flag
++
,
DICTIONARY_LEVEL
);
ext
::
push_back
(
create_dictionary
->
aliases
,
"ATTACH DICTIONARY"
);
auto
create
=
std
::
make_unique
<
Node
>
(
"CREATE"
,
std
::
move
(
create_database
),
std
::
move
(
create_table
),
std
::
move
(
create_view
),
std
::
move
(
create_dictionary
));
ext
::
push_back
(
create
->
aliases
,
"ATTACH"
);
ext
::
push_back
(
all
,
std
::
move
(
create
));
auto
create_temporary_table
=
std
::
make_unique
<
Node
>
(
"CREATE TEMPORARY TABLE"
,
next_flag
++
,
GLOBAL_LEVEL
);
...
...
@@ -325,13 +320,6 @@ private:
auto
drop
=
std
::
make_unique
<
Node
>
(
"DROP"
,
std
::
move
(
drop_database
),
std
::
move
(
drop_table
),
std
::
move
(
drop_view
),
std
::
move
(
drop_dictionary
));
ext
::
push_back
(
all
,
std
::
move
(
drop
));
auto
detach_database
=
std
::
make_unique
<
Node
>
(
"DETACH DATABASE"
,
next_flag
++
,
DATABASE_LEVEL
);
auto
detach_table
=
std
::
make_unique
<
Node
>
(
"DETACH TABLE"
,
next_flag
++
,
TABLE_LEVEL
);
auto
detach_view
=
std
::
make_unique
<
Node
>
(
"DETACH VIEW"
,
next_flag
++
,
VIEW_LEVEL
);
auto
detach_dictionary
=
std
::
make_unique
<
Node
>
(
"DETACH DICTIONARY"
,
next_flag
++
,
DICTIONARY_LEVEL
);
auto
detach
=
std
::
make_unique
<
Node
>
(
"DETACH"
,
std
::
move
(
detach_database
),
std
::
move
(
detach_table
),
std
::
move
(
detach_view
),
std
::
move
(
detach_dictionary
));
ext
::
push_back
(
all
,
std
::
move
(
detach
));
auto
truncate_table
=
std
::
make_unique
<
Node
>
(
"TRUNCATE TABLE"
,
next_flag
++
,
TABLE_LEVEL
);
auto
truncate_view
=
std
::
make_unique
<
Node
>
(
"TRUNCATE VIEW"
,
next_flag
++
,
VIEW_LEVEL
);
auto
truncate
=
std
::
make_unique
<
Node
>
(
"TRUNCATE"
,
std
::
move
(
truncate_table
),
std
::
move
(
truncate_view
));
...
...
dbms/src/Access/AccessRightsContext.cpp
浏览文件 @
543587fc
...
...
@@ -330,8 +330,8 @@ boost::shared_ptr<const AccessRights> AccessRightsContext::calculateResultAccess
static
const
AccessFlags
table_ddl
=
AccessType
::
CREATE_DATABASE
|
AccessType
::
CREATE_TABLE
|
AccessType
::
CREATE_VIEW
|
AccessType
::
ALTER_TABLE
|
AccessType
::
ALTER_VIEW
|
AccessType
::
DROP_DATABASE
|
AccessType
::
DROP_TABLE
|
AccessType
::
DROP_VIEW
|
AccessType
::
DETACH_DATABASE
|
AccessType
::
DETACH_TABLE
|
AccessType
::
DETACH_VIEW
|
AccessType
::
TRUNCATE
;
static
const
AccessFlags
dictionary_ddl
=
AccessType
::
CREATE_DICTIONARY
|
AccessType
::
DROP_DICTIONARY
|
AccessType
::
DETACH_DICTIONARY
;
|
AccessType
::
TRUNCATE
;
static
const
AccessFlags
dictionary_ddl
=
AccessType
::
CREATE_DICTIONARY
|
AccessType
::
DROP_DICTIONARY
;
static
const
AccessFlags
table_and_dictionary_ddl
=
table_ddl
|
dictionary_ddl
;
static
const
AccessFlags
write_table_access
=
AccessType
::
INSERT
|
AccessType
::
OPTIMIZE
;
...
...
dbms/src/Access/AccessType.h
浏览文件 @
543587fc
...
...
@@ -66,24 +66,12 @@ enum class AccessType
CREATE_TEMPORARY_TABLE
,
/// allows to create and manipulate temporary tables and views.
CREATE
,
/// allows to execute {CREATE|ATTACH} [TEMPORARY] {DATABASE|TABLE|VIEW|DICTIONARY}
ATTACH_DATABASE
,
/// allows to execute {CREATE|ATTACH} DATABASE
ATTACH_TABLE
,
/// allows to execute {CREATE|ATTACH} TABLE
ATTACH_VIEW
,
/// allows to execute {CREATE|ATTACH} VIEW
ATTACH_DICTIONARY
,
/// allows to execute {CREATE|ATTACH} DICTIONARY
ATTACH
,
/// allows to execute {CREATE|ATTACH} {DATABASE|TABLE|VIEW|DICTIONARY}
DROP_DATABASE
,
DROP_TABLE
,
DROP_VIEW
,
DROP_DICTIONARY
,
DROP
,
/// allows to execute DROP {DATABASE|TABLE|VIEW|DICTIONARY}
DETACH_DATABASE
,
DETACH_TABLE
,
DETACH_VIEW
,
DETACH_DICTIONARY
,
DETACH
,
/// allows to execute DETACH {DATABASE|TABLE|VIEW|DICTIONARY}
TRUNCATE_TABLE
,
TRUNCATE_VIEW
,
TRUNCATE
,
/// allows to execute TRUNCATE {TABLE|VIEW}
...
...
@@ -235,24 +223,12 @@ namespace impl
ACCESS_TYPE_TO_KEYWORD_CASE
(
CREATE_TEMPORARY_TABLE
);
ACCESS_TYPE_TO_KEYWORD_CASE
(
CREATE
);
ACCESS_TYPE_TO_KEYWORD_CASE
(
ATTACH_DATABASE
);
ACCESS_TYPE_TO_KEYWORD_CASE
(
ATTACH_TABLE
);
ACCESS_TYPE_TO_KEYWORD_CASE
(
ATTACH_VIEW
);
ACCESS_TYPE_TO_KEYWORD_CASE
(
ATTACH_DICTIONARY
);
ACCESS_TYPE_TO_KEYWORD_CASE
(
ATTACH
);
ACCESS_TYPE_TO_KEYWORD_CASE
(
DROP_DATABASE
);
ACCESS_TYPE_TO_KEYWORD_CASE
(
DROP_TABLE
);
ACCESS_TYPE_TO_KEYWORD_CASE
(
DROP_VIEW
);
ACCESS_TYPE_TO_KEYWORD_CASE
(
DROP_DICTIONARY
);
ACCESS_TYPE_TO_KEYWORD_CASE
(
DROP
);
ACCESS_TYPE_TO_KEYWORD_CASE
(
DETACH_DATABASE
);
ACCESS_TYPE_TO_KEYWORD_CASE
(
DETACH_TABLE
);
ACCESS_TYPE_TO_KEYWORD_CASE
(
DETACH_VIEW
);
ACCESS_TYPE_TO_KEYWORD_CASE
(
DETACH_DICTIONARY
);
ACCESS_TYPE_TO_KEYWORD_CASE
(
DETACH
);
ACCESS_TYPE_TO_KEYWORD_CASE
(
TRUNCATE_TABLE
);
ACCESS_TYPE_TO_KEYWORD_CASE
(
TRUNCATE_VIEW
);
ACCESS_TYPE_TO_KEYWORD_CASE
(
TRUNCATE
);
...
...
dbms/src/Interpreters/InterpreterDropQuery.cpp
浏览文件 @
543587fc
...
...
@@ -87,7 +87,7 @@ BlockIO InterpreterDropQuery::executeToTable(
auto
table_id
=
table
->
getStorageID
();
if
(
kind
==
ASTDropQuery
::
Kind
::
Detach
)
{
context
.
checkAccess
(
table
->
isView
()
?
AccessType
::
D
ETACH_VIEW
:
AccessType
::
DETACH
_TABLE
,
context
.
checkAccess
(
table
->
isView
()
?
AccessType
::
D
ROP_VIEW
:
AccessType
::
DROP
_TABLE
,
database_name
,
table_name
);
table
->
shutdown
();
/// If table was already dropped by anyone, an exception will be thrown
...
...
@@ -187,7 +187,7 @@ BlockIO InterpreterDropQuery::executeToDictionary(
if
(
kind
==
ASTDropQuery
::
Kind
::
Detach
)
{
/// Drop dictionary from memory, don't touch data and metadata
context
.
checkAccess
(
AccessType
::
D
ETACH
_DICTIONARY
,
database_name
,
dictionary_name
);
context
.
checkAccess
(
AccessType
::
D
ROP
_DICTIONARY
,
database_name
,
dictionary_name
);
database
->
detachDictionary
(
dictionary_name
,
context
);
}
else
if
(
kind
==
ASTDropQuery
::
Kind
::
Truncate
)
...
...
@@ -247,7 +247,7 @@ BlockIO InterpreterDropQuery::executeToDatabase(const String & database_name, AS
}
else
if
(
kind
==
ASTDropQuery
::
Kind
::
Detach
)
{
context
.
checkAccess
(
AccessType
::
D
ETACH
_DATABASE
,
database_name
);
context
.
checkAccess
(
AccessType
::
D
ROP
_DATABASE
,
database_name
);
context
.
detachDatabase
(
database_name
);
database
->
shutdown
();
}
...
...
@@ -324,14 +324,14 @@ AccessRightsElements InterpreterDropQuery::getRequiredAccessForDDLOnCluster() co
if
(
drop
.
table
.
empty
())
{
if
(
drop
.
kind
==
ASTDropQuery
::
Kind
::
Detach
)
required_access
.
emplace_back
(
AccessType
::
D
ETACH
_DATABASE
,
drop
.
database
);
required_access
.
emplace_back
(
AccessType
::
D
ROP
_DATABASE
,
drop
.
database
);
else
if
(
drop
.
kind
==
ASTDropQuery
::
Kind
::
Drop
)
required_access
.
emplace_back
(
AccessType
::
DROP_DATABASE
,
drop
.
database
);
}
else
if
(
drop
.
is_dictionary
)
{
if
(
drop
.
kind
==
ASTDropQuery
::
Kind
::
Detach
)
required_access
.
emplace_back
(
AccessType
::
D
ETACH
_DICTIONARY
,
drop
.
database
,
drop
.
table
);
required_access
.
emplace_back
(
AccessType
::
D
ROP
_DICTIONARY
,
drop
.
database
,
drop
.
table
);
else
if
(
drop
.
kind
==
ASTDropQuery
::
Kind
::
Drop
)
required_access
.
emplace_back
(
AccessType
::
DROP_DICTIONARY
,
drop
.
database
,
drop
.
table
);
}
...
...
@@ -343,7 +343,7 @@ AccessRightsElements InterpreterDropQuery::getRequiredAccessForDDLOnCluster() co
else
if
(
drop
.
kind
==
ASTDropQuery
::
Kind
::
Truncate
)
required_access
.
emplace_back
(
AccessType
::
TRUNCATE_TABLE
|
AccessType
::
TRUNCATE_VIEW
,
drop
.
database
,
drop
.
table
);
else
if
(
drop
.
kind
==
ASTDropQuery
::
Kind
::
Detach
)
required_access
.
emplace_back
(
AccessType
::
D
ETACH_TABLE
|
AccessType
::
DETACH
_VIEW
,
drop
.
database
,
drop
.
table
);
required_access
.
emplace_back
(
AccessType
::
D
ROP_TABLE
|
AccessType
::
DROP
_VIEW
,
drop
.
database
,
drop
.
table
);
}
return
required_access
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录