Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
2dot5
ClickHouse
提交
bf832b3e
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,发现更多精彩内容 >>
提交
bf832b3e
编写于
4月 17, 2018
作者:
V
Vitaliy Lyudvichenko
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Fixed OPTIMIZE after RENAME of replicated table. [#CLICKHOUSE-2]
上级
5536bf20
变更
8
隐藏空白更改
内联
并排
Showing
8 changed file
with
95 addition
and
50 deletion
+95
-50
dbms/src/Storages/MergeTree/ReplicatedMergeTreeAddress.cpp
dbms/src/Storages/MergeTree/ReplicatedMergeTreeAddress.cpp
+42
-0
dbms/src/Storages/MergeTree/ReplicatedMergeTreeAddress.h
dbms/src/Storages/MergeTree/ReplicatedMergeTreeAddress.h
+8
-34
dbms/src/Storages/MergeTree/ReplicatedMergeTreeRestartingThread.cpp
...torages/MergeTree/ReplicatedMergeTreeRestartingThread.cpp
+2
-8
dbms/src/Storages/StorageReplicatedMergeTree.cpp
dbms/src/Storages/StorageReplicatedMergeTree.cpp
+17
-0
dbms/src/Storages/StorageReplicatedMergeTree.h
dbms/src/Storages/StorageReplicatedMergeTree.h
+4
-0
dbms/tests/queries/0_stateless/00446_clear_column_in_partition_zookeeper.sql
...0_stateless/00446_clear_column_in_partition_zookeeper.sql
+0
-8
dbms/tests/queries/0_stateless/00620_optimize_on_nonleader_replica_zookeeper.reference
...s/00620_optimize_on_nonleader_replica_zookeeper.reference
+2
-0
dbms/tests/queries/0_stateless/00620_optimize_on_nonleader_replica_zookeeper.sql
...ateless/00620_optimize_on_nonleader_replica_zookeeper.sql
+20
-0
未找到文件。
dbms/src/Storages/MergeTree/ReplicatedMergeTreeAddress.cpp
0 → 100644
浏览文件 @
bf832b3e
#include "ReplicatedMergeTreeAddress.h"
#include <IO/ReadBufferFromString.h>
#include <IO/WriteBufferFromString.h>
#include <IO/Operators.h>
namespace
DB
{
void
ReplicatedMergeTreeAddress
::
writeText
(
WriteBuffer
&
out
)
const
{
out
<<
"host: "
<<
escape
<<
host
<<
'\n'
<<
"port: "
<<
replication_port
<<
'\n'
<<
"tcp_port: "
<<
queries_port
<<
'\n'
<<
"database: "
<<
escape
<<
database
<<
'\n'
<<
"table: "
<<
escape
<<
table
<<
'\n'
;
}
void
ReplicatedMergeTreeAddress
::
readText
(
ReadBuffer
&
in
)
{
in
>>
"host: "
>>
escape
>>
host
>>
"
\n
"
>>
"port: "
>>
replication_port
>>
"
\n
"
>>
"tcp_port: "
>>
queries_port
>>
"
\n
"
>>
"database: "
>>
escape
>>
database
>>
"
\n
"
>>
"table: "
>>
escape
>>
table
>>
"
\n
"
;
}
String
ReplicatedMergeTreeAddress
::
toString
()
const
{
WriteBufferFromOwnString
out
;
writeText
(
out
);
return
out
.
str
();
}
void
ReplicatedMergeTreeAddress
::
fromString
(
const
String
&
str
)
{
ReadBufferFromString
in
(
str
);
readText
(
in
);
}
}
dbms/src/Storages/MergeTree/ReplicatedMergeTreeAddress.h
浏览文件 @
bf832b3e
#pragma once
#include <Core/Types.h>
#include <IO/ReadBuffer.h>
#include <IO/ReadBufferFromString.h>
#include <IO/WriteBuffer.h>
#include <IO/WriteBufferFromString.h>
#include <IO/Operators.h>
namespace
DB
...
...
@@ -18,44 +17,19 @@ struct ReplicatedMergeTreeAddress
String
database
;
String
table
;
ReplicatedMergeTreeAddress
()
{}
ReplicatedMergeTreeAddress
(
const
String
&
str
)
ReplicatedMergeTreeAddress
()
=
default
;
explicit
ReplicatedMergeTreeAddress
(
const
String
&
str
)
{
fromString
(
str
);
}
void
writeText
(
WriteBuffer
&
out
)
const
{
out
<<
"host: "
<<
escape
<<
host
<<
'\n'
<<
"port: "
<<
replication_port
<<
'\n'
<<
"tcp_port: "
<<
queries_port
<<
'\n'
<<
"database: "
<<
escape
<<
database
<<
'\n'
<<
"table: "
<<
escape
<<
table
<<
'\n'
;
}
void
writeText
(
WriteBuffer
&
out
)
const
;
void
readText
(
ReadBuffer
&
in
)
{
in
>>
"host: "
>>
escape
>>
host
>>
"
\n
"
>>
"port: "
>>
replication_port
>>
"
\n
"
>>
"tcp_port: "
>>
queries_port
>>
"
\n
"
>>
"database: "
>>
escape
>>
database
>>
"
\n
"
>>
"table: "
>>
escape
>>
table
>>
"
\n
"
;
}
void
readText
(
ReadBuffer
&
in
);
String
toString
()
const
{
WriteBufferFromOwnString
out
;
writeText
(
out
);
return
out
.
str
();
}
String
toString
()
const
;
void
fromString
(
const
String
&
str
)
{
ReadBufferFromString
in
(
str
);
readText
(
in
);
}
void
fromString
(
const
String
&
str
);
};
}
dbms/src/Storages/MergeTree/ReplicatedMergeTreeRestartingThread.cpp
浏览文件 @
bf832b3e
...
...
@@ -292,16 +292,10 @@ void ReplicatedMergeTreeRestartingThread::updateQuorumIfWeHavePart()
void
ReplicatedMergeTreeRestartingThread
::
activateReplica
()
{
auto
host_port
=
storage
.
context
.
getInterserverIOAddress
();
auto
zookeeper
=
storage
.
getZooKeeper
();
/// How other replicas can access this.
ReplicatedMergeTreeAddress
address
;
address
.
host
=
host_port
.
first
;
address
.
replication_port
=
host_port
.
second
;
address
.
queries_port
=
storage
.
context
.
getTCPPort
();
address
.
database
=
storage
.
database_name
;
address
.
table
=
storage
.
table_name
;
/// How other replicas can access this one.
ReplicatedMergeTreeAddress
address
=
storage
.
getReplicatedMergeTreeAddress
();
String
is_active_path
=
storage
.
replica_path
+
"/is_active"
;
...
...
dbms/src/Storages/StorageReplicatedMergeTree.cpp
浏览文件 @
bf832b3e
...
...
@@ -3004,6 +3004,10 @@ void StorageReplicatedMergeTree::rename(const String & new_path_to_db, const Str
table_name
=
new_table_name
;
full_path
=
new_full_path
;
/// Update table name in zookeeper
auto
zookeeper
=
getZooKeeper
();
zookeeper
->
set
(
replica_path
+
"/host"
,
getReplicatedMergeTreeAddress
().
toString
());
/// TODO: You can update names of loggers.
}
...
...
@@ -3766,4 +3770,17 @@ void StorageReplicatedMergeTree::clearBlocksInPartition(
LOG_TRACE
(
log
,
"Deleted "
<<
to_delete_futures
.
size
()
<<
" deduplication block IDs in partition ID "
<<
partition_id
);
}
ReplicatedMergeTreeAddress
StorageReplicatedMergeTree
::
getReplicatedMergeTreeAddress
()
const
{
auto
host_port
=
context
.
getInterserverIOAddress
();
ReplicatedMergeTreeAddress
res
;
res
.
host
=
host_port
.
first
;
res
.
replication_port
=
host_port
.
second
;
res
.
queries_port
=
context
.
getTCPPort
();
res
.
database
=
database_name
;
res
.
table
=
table_name
;
return
res
;
}
}
dbms/src/Storages/StorageReplicatedMergeTree.h
浏览文件 @
bf832b3e
...
...
@@ -17,6 +17,7 @@
#include <Storages/MergeTree/AbandonableLockInZooKeeper.h>
#include <Storages/MergeTree/BackgroundProcessingPool.h>
#include <Storages/MergeTree/DataPartsExchange.h>
#include <Storages/MergeTree/ReplicatedMergeTreeAddress.h>
#include <DataTypes/DataTypesNumber.h>
#include <Common/randomSeed.h>
#include <Common/ZooKeeper/ZooKeeper.h>
...
...
@@ -451,6 +452,9 @@ private:
void
clearBlocksInPartition
(
zkutil
::
ZooKeeper
&
zookeeper
,
const
String
&
partition_id
,
Int64
min_block_num
,
Int64
max_block_num
);
/// Info about how other replicas can access this one.
ReplicatedMergeTreeAddress
getReplicatedMergeTreeAddress
()
const
;
protected:
/** If not 'attach', either creates a new table in ZK, or adds a replica to an existing table.
*/
...
...
dbms/tests/queries/0_stateless/00446_clear_column_in_partition_zookeeper.sql
浏览文件 @
bf832b3e
...
...
@@ -61,11 +61,3 @@ ALTER TABLE test.clear_column1 CLEAR COLUMN s IN PARTITION '200002';
ALTER
TABLE
test
.
clear_column1
CLEAR
COLUMN
s
IN
PARTITION
'200012'
,
CLEAR
COLUMN
i
IN
PARTITION
'200012'
;
-- Drop empty partition also Ok
ALTER
TABLE
test
.
clear_column1
DROP
PARTITION
'200012'
,
DROP
PARTITION
'200011'
;
-- check optimize for non-leader replica (it is not related with CLEAR COLUMN)
OPTIMIZE
TABLE
test
.
clear_column1
;
OPTIMIZE
TABLE
test
.
clear_column2
;
DROP
TABLE
IF
EXISTS
test
.
clear_column1
;
DROP
TABLE
IF
EXISTS
test
.
clear_column2
;
dbms/tests/queries/0_stateless/00620_optimize_on_nonleader_replica_zookeeper.reference
0 → 100644
浏览文件 @
bf832b3e
0 1 1
0 1 2
dbms/tests/queries/0_stateless/00620_optimize_on_nonleader_replica_zookeeper.sql
0 → 100644
浏览文件 @
bf832b3e
DROP
TABLE
IF
EXISTS
test
.
clear_column1
;
DROP
TABLE
IF
EXISTS
test
.
clear_column2
;
CREATE
TABLE
test
.
clear_column1
(
p
Int64
,
i
Int64
,
v
UInt64
)
ENGINE
=
ReplicatedReplacingMergeTree
(
'/clickhouse/tables/test/clear_column'
,
'1'
,
v
)
PARTITION
BY
p
ORDER
BY
i
;
CREATE
TABLE
test
.
clear_column2
(
p
Int64
,
i
Int64
,
v
UInt64
)
ENGINE
=
ReplicatedReplacingMergeTree
(
'/clickhouse/tables/test/clear_column'
,
'2'
,
v
)
PARTITION
BY
p
ORDER
BY
i
;
INSERT
INTO
test
.
clear_column1
VALUES
(
0
,
1
,
0
);
INSERT
INTO
test
.
clear_column1
VALUES
(
0
,
1
,
1
);
OPTIMIZE
TABLE
test
.
clear_column1
;
OPTIMIZE
TABLE
test
.
clear_column2
;
SELECT
*
FROM
test
.
clear_column1
;
RENAME
TABLE
test
.
clear_column2
TO
test
.
clear_column3
;
INSERT
INTO
test
.
clear_column1
VALUES
(
0
,
1
,
2
);
OPTIMIZE
TABLE
test
.
clear_column3
;
SELECT
*
FROM
test
.
clear_column1
;
DROP
TABLE
IF
EXISTS
test
.
clear_column1
;
DROP
TABLE
IF
EXISTS
test
.
clear_column2
;
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录