fix rename Distributed table

This commit is contained in:
Alexander Tokmakov 2021-06-24 13:00:33 +03:00
parent 4913b18532
commit 3a25b05765
3 changed files with 27 additions and 7 deletions

View File

@ -1155,6 +1155,7 @@ void StorageDistributed::renameOnDisk(const String & new_path_to_table_data)
{
for (const DiskPtr & disk : data_volume->getDisks())
{
disk->createDirectories(new_path_to_table_data);
disk->moveDirectory(relative_data_path, new_path_to_table_data);
auto new_path = disk->getPath() + new_path_to_table_data;

View File

@ -1,10 +1,12 @@
1 .inner.mv1 before moving tablesmv1
1 dist before moving tables
1 dst before moving tablesmv2
1 mv1 before moving tablesmv1
1 mv2 before moving tablesmv2
1 src before moving tables
ordinary:
.inner.mv1
dist
dst
mv1
mv2
@ -12,12 +14,16 @@ src
ordinary after rename:
atomic after rename:
.inner_id.
dist
dst
mv1
mv2
src
3 .inner_id. after renaming databasemv1
3 .inner_id. before moving tablesmv1
3 dist after moving tables
3 dist after renaming database
3 dist before moving tables
3 dst after renaming databasemv2
3 dst before moving tablesmv2
3 mv1 after renaming databasemv1
@ -28,6 +34,7 @@ src
3 src after renaming database
3 src before moving tables
.inner_id.
dist
dst
mv1
mv2
@ -36,6 +43,10 @@ CREATE DATABASE test_01155_atomic\nENGINE = Atomic
4 .inner.mv1 after renaming databasemv1
4 .inner.mv1 after renaming tablesmv1
4 .inner.mv1 before moving tablesmv1
4 dist after moving tables
4 dist after renaming database
4 dist after renaming tables
4 dist before moving tables
4 dst after renaming databasemv2
4 dst after renaming tablesmv2
4 dst before moving tablesmv2
@ -51,6 +62,7 @@ CREATE DATABASE test_01155_atomic\nENGINE = Atomic
4 src before moving tables
test_01155_ordinary:
.inner.mv1
dist
dst
mv1
mv2

View File

@ -9,8 +9,11 @@ CREATE TABLE src (s String) ENGINE=MergeTree() PARTITION BY tuple() ORDER BY s;
CREATE MATERIALIZED VIEW mv1 (s String) ENGINE=MergeTree() PARTITION BY tuple() ORDER BY s AS SELECT (*,).1 || 'mv1' as s FROM src;
CREATE TABLE dst (s String) ENGINE=MergeTree() PARTITION BY tuple() ORDER BY s;
CREATE MATERIALIZED VIEW mv2 TO dst (s String) AS SELECT (*,).1 || 'mv2' as s FROM src;
INSERT INTO src VALUES ('before moving tables');
SELECT 1, substr(_table, 1, 10), s FROM merge('test_01155_ordinary', '') ORDER BY _table, s;
CREATE TABLE dist (s String) Engine=Distributed(test_shard_localhost, test_01155_ordinary, src);
INSERT INTO dist VALUES ('before moving tables');
SYSTEM FLUSH DISTRIBUTED dist;
-- FIXME Cannot convert column `1` because it is non constant in source stream but must be constant in result
SELECT materialize(1), substr(_table, 1, 10), s FROM merge('test_01155_ordinary', '') ORDER BY _table, s;
-- Move tables with materialized views from Ordinary to Atomic
SELECT 'ordinary:';
@ -19,6 +22,7 @@ RENAME TABLE test_01155_ordinary.mv1 TO test_01155_atomic.mv1;
RENAME TABLE test_01155_ordinary.mv2 TO test_01155_atomic.mv2;
RENAME TABLE test_01155_ordinary.dst TO test_01155_atomic.dst;
RENAME TABLE test_01155_ordinary.src TO test_01155_atomic.src;
RENAME TABLE test_01155_ordinary.dist TO test_01155_atomic.dist;
SELECT 'ordinary after rename:';
SELECT substr(name, 1, 10) FROM system.tables WHERE database='test_01155_ordinary';
SELECT 'atomic after rename:';
@ -27,13 +31,14 @@ DROP DATABASE test_01155_ordinary;
USE default;
INSERT INTO test_01155_atomic.src VALUES ('after moving tables');
SELECT 2, substr(_table, 1, 10), s FROM merge('test_01155_atomic', '') ORDER BY _table, s; -- { serverError 81 }
SELECT materialize(2), substr(_table, 1, 10), s FROM merge('test_01155_atomic', '') ORDER BY _table, s; -- { serverError 81 }
RENAME DATABASE test_01155_atomic TO test_01155_ordinary;
USE test_01155_ordinary;
INSERT INTO src VALUES ('after renaming database');
SELECT 3, substr(_table, 1, 10), s FROM merge('test_01155_ordinary', '') ORDER BY _table, s;
INSERT INTO dist VALUES ('after renaming database');
SYSTEM FLUSH DISTRIBUTED dist;
SELECT materialize(3), substr(_table, 1, 10), s FROM merge('test_01155_ordinary', '') ORDER BY _table, s;
SELECT substr(name, 1, 10) FROM system.tables WHERE database='test_01155_ordinary';
@ -47,9 +52,11 @@ RENAME TABLE test_01155_atomic.mv1 TO test_01155_ordinary.mv1;
RENAME TABLE test_01155_atomic.mv2 TO test_01155_ordinary.mv2;
RENAME TABLE test_01155_atomic.dst TO test_01155_ordinary.dst;
RENAME TABLE test_01155_atomic.src TO test_01155_ordinary.src;
RENAME TABLE test_01155_atomic.dist TO test_01155_ordinary.dist;
INSERT INTO src VALUES ('after renaming tables');
SELECT 4, substr(_table, 1, 10), s FROM merge('test_01155_ordinary', '') ORDER BY _table, s;
INSERT INTO dist VALUES ('after renaming tables');
SYSTEM FLUSH DISTRIBUTED dist;
SELECT materialize(4), substr(_table, 1, 10), s FROM merge('test_01155_ordinary', '') ORDER BY _table, s;
SELECT 'test_01155_ordinary:';
SHOW TABLES FROM test_01155_ordinary;
SELECT 'test_01155_atomic:';