Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
2dot5
ClickHouse
提交
47e499d7
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,发现更多精彩内容 >>
未验证
提交
47e499d7
编写于
11月 26, 2019
作者:
O
Olga Khvostikova
提交者:
GitHub
11月 26, 2019
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #7833 from excitoon-favorites/detachedparts
Added disk info to `system.detached_parts`
上级
18604795
008e1efa
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
51 addition
and
3 deletion
+51
-3
dbms/src/Storages/MergeTree/MergeTreeData.cpp
dbms/src/Storages/MergeTree/MergeTreeData.cpp
+11
-1
dbms/src/Storages/MergeTree/MergeTreeData.h
dbms/src/Storages/MergeTree/MergeTreeData.h
+4
-0
dbms/src/Storages/MergeTree/MergeTreePartInfo.h
dbms/src/Storages/MergeTree/MergeTreePartInfo.h
+2
-0
dbms/src/Storages/System/StorageSystemDetachedParts.cpp
dbms/src/Storages/System/StorageSystemDetachedParts.cpp
+2
-0
dbms/tests/integration/test_multiple_disks/test.py
dbms/tests/integration/test_multiple_disks/test.py
+31
-1
dbms/tests/queries/0_stateless/00502_custom_partitioning_local.reference
...ies/0_stateless/00502_custom_partitioning_local.reference
+1
-1
未找到文件。
dbms/src/Storages/MergeTree/MergeTreeData.cpp
浏览文件 @
47e499d7
...
...
@@ -2933,7 +2933,7 @@ MergeTreeData::getDetachedParts() const
{
std
::
vector
<
DetachedPartInfo
>
res
;
for
(
const
String
&
path
:
getDataPath
s
())
for
(
const
auto
&
[
path
,
disk
]
:
getDataPathsWithDisk
s
())
{
for
(
Poco
::
DirectoryIterator
it
(
path
+
"detached"
);
it
!=
Poco
::
DirectoryIterator
();
++
it
)
...
...
@@ -2944,6 +2944,7 @@ MergeTreeData::getDetachedParts() const
auto
&
part
=
res
.
back
();
DetachedPartInfo
::
tryParseDetachedPartName
(
dir_name
,
part
,
format_version
);
part
.
disk
=
disk
->
getName
();
}
}
return
res
;
...
...
@@ -3332,6 +3333,15 @@ Strings MergeTreeData::getDataPaths() const
return
res
;
}
MergeTreeData
::
PathsWithDisks
MergeTreeData
::
getDataPathsWithDisks
()
const
{
PathsWithDisks
res
;
auto
disks
=
storage_policy
->
getDisks
();
for
(
const
auto
&
disk
:
disks
)
res
.
emplace_back
(
getFullPathOnDisk
(
disk
),
disk
);
return
res
;
}
void
MergeTreeData
::
freezePartitionsByMatcher
(
MatcherFn
matcher
,
const
String
&
with_name
,
const
Context
&
context
)
{
String
clickhouse_path
=
Poco
::
Path
(
context
.
getPath
()).
makeAbsolute
().
toString
();
...
...
dbms/src/Storages/MergeTree/MergeTreeData.h
浏览文件 @
47e499d7
...
...
@@ -669,6 +669,10 @@ public:
Strings
getDataPaths
()
const
override
;
using
PathWithDisk
=
std
::
pair
<
String
,
DiskSpace
::
DiskPtr
>
;
using
PathsWithDisks
=
std
::
vector
<
PathWithDisk
>
;
PathsWithDisks
getDataPathsWithDisks
()
const
;
/// Reserves space at least 1MB
DiskSpace
::
ReservationPtr
reserveSpace
(
UInt64
expected_size
);
...
...
dbms/src/Storages/MergeTree/MergeTreePartInfo.h
浏览文件 @
47e499d7
...
...
@@ -95,6 +95,8 @@ struct DetachedPartInfo : public MergeTreePartInfo
String
dir_name
;
String
prefix
;
String
disk
;
/// If false, MergeTreePartInfo is in invalid state (directory name was not successfully parsed).
bool
valid_name
;
...
...
dbms/src/Storages/System/StorageSystemDetachedParts.cpp
浏览文件 @
47e499d7
...
...
@@ -35,6 +35,7 @@ protected:
{
"table"
,
std
::
make_shared
<
DataTypeString
>
()},
{
"partition_id"
,
std
::
make_shared
<
DataTypeNullable
>
(
std
::
make_shared
<
DataTypeString
>
())},
{
"name"
,
std
::
make_shared
<
DataTypeString
>
()},
{
"disk"
,
std
::
make_shared
<
DataTypeString
>
()},
{
"reason"
,
std
::
make_shared
<
DataTypeNullable
>
(
std
::
make_shared
<
DataTypeString
>
())},
{
"min_block_number"
,
std
::
make_shared
<
DataTypeNullable
>
(
std
::
make_shared
<
DataTypeInt64
>
())},
{
"max_block_number"
,
std
::
make_shared
<
DataTypeNullable
>
(
std
::
make_shared
<
DataTypeInt64
>
())},
...
...
@@ -66,6 +67,7 @@ protected:
new_columns
[
i
++
]
->
insert
(
info
.
table
);
new_columns
[
i
++
]
->
insert
(
p
.
valid_name
?
p
.
partition_id
:
Field
());
new_columns
[
i
++
]
->
insert
(
p
.
dir_name
);
new_columns
[
i
++
]
->
insert
(
p
.
disk
);
new_columns
[
i
++
]
->
insert
(
p
.
valid_name
?
p
.
prefix
:
Field
());
new_columns
[
i
++
]
->
insert
(
p
.
valid_name
?
p
.
min_block
:
Field
());
new_columns
[
i
++
]
->
insert
(
p
.
valid_name
?
p
.
max_block
:
Field
());
...
...
dbms/tests/integration/test_multiple_disks/test.py
浏览文件 @
47e499d7
...
...
@@ -768,12 +768,42 @@ def test_concurrent_alter_move_and_drop(start_cluster, name, engine):
node1
.
query
(
"DROP TABLE IF EXISTS {name}"
.
format
(
name
=
name
))
@
pytest
.
mark
.
parametrize
(
"name,engine"
,
[
(
"detach_attach_mt"
,
"MergeTree()"
),
(
"replicated_detach_attach_mt"
,
"ReplicatedMergeTree('/clickhouse/replicated_detach_attach_mt', '1')"
,),
])
def
test_detach_attach
(
start_cluster
,
name
,
engine
):
try
:
node1
.
query
(
"""
CREATE TABLE {name} (
s1 String
) ENGINE = {engine}
ORDER BY tuple()
SETTINGS storage_policy='moving_jbod_with_external'
"""
.
format
(
name
=
name
,
engine
=
engine
))
data
=
[]
# 5MB in total
for
i
in
range
(
5
):
data
.
append
(
get_random_string
(
1024
*
1024
))
# 1MB row
node1
.
query
(
"INSERT INTO {} VALUES {}"
.
format
(
name
,
','
.
join
([
"('"
+
x
+
"')"
for
x
in
data
])))
node1
.
query
(
"ALTER TABLE {} DETACH PARTITION tuple()"
.
format
(
name
))
assert
node1
.
query
(
"SELECT count() FROM {}"
.
format
(
name
)).
strip
()
==
"0"
assert
node1
.
query
(
"SELECT disk FROM system.detached_parts WHERE table = '{}'"
.
format
(
name
)).
strip
()
==
"jbod1"
node1
.
query
(
"ALTER TABLE {} ATTACH PARTITION tuple()"
.
format
(
name
))
assert
node1
.
query
(
"SELECT count() FROM {}"
.
format
(
name
)).
strip
()
==
"5"
finally
:
node1
.
query
(
"DROP TABLE IF EXISTS {name}"
.
format
(
name
=
name
))
@
pytest
.
mark
.
parametrize
(
"name,engine"
,
[
(
"mutating_mt"
,
"MergeTree()"
),
(
"replicated_mutating_mt"
,
"ReplicatedMergeTree('/clickhouse/replicated_mutating_mt', '1')"
,),
])
def
test_mutate_to_another_disk
(
start_cluster
,
name
,
engine
):
try
:
node1
.
query
(
"""
CREATE TABLE {name} (
...
...
dbms/tests/queries/0_stateless/00502_custom_partitioning_local.reference
浏览文件 @
47e499d7
...
...
@@ -9,7 +9,7 @@ Sum before DETACH PARTITION:
Sum after DETACH PARTITION:
0
system.detached_parts after DETACH PARTITION:
default not_partitioned all all_1_2_1 1 2 1
default not_partitioned all all_1_2_1
default
1 2 1
*** Partitioned by week ***
Parts before OPTIMIZE:
1999-12-27 19991227_1_1_0
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录