mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-09-19 16:20:50 +00:00
Throw an error if CREATE ... CLONE AS ... with a Replicated database
This commit is contained in:
parent
782353d831
commit
23f0701fc8
@ -1501,6 +1501,13 @@ BlockIO InterpreterCreateQuery::createTable(ASTCreateQuery & create)
|
||||
}
|
||||
}
|
||||
|
||||
if (database && database->getEngineName() == "Replicated" && create.is_clone_as)
|
||||
{
|
||||
throw Exception(
|
||||
ErrorCodes::SUPPORT_IS_DISABLED,
|
||||
"CREATE CLONE AS is not supported with Replicated databases. Consider using separate CREATE and INSERT queries.");
|
||||
}
|
||||
|
||||
if (database && database->shouldReplicateQuery(getContext(), query_ptr))
|
||||
{
|
||||
chassert(!ddl_guard);
|
||||
|
@ -22,3 +22,10 @@ from foo_replacing_merge_tree
|
||||
from clone_as_foo_replacing_merge_tree
|
||||
1 a
|
||||
2 b
|
||||
s1 r1 OK 0 0
|
||||
CREATE TABLE imdb_03231.foo_merge_tree\n(\n `x` Int8,\n `y` String\n)\nENGINE = MergeTree\nPRIMARY KEY x\nORDER BY x\nSETTINGS index_granularity = 8192
|
||||
from imdb_03231.foo_merge_tree
|
||||
1 a
|
||||
2 b
|
||||
1
|
||||
s1 r1 OK 0 0
|
||||
|
@ -1,4 +1,5 @@
|
||||
#!/usr/bin/env bash
|
||||
# Tags: no-replicated-database
|
||||
|
||||
CUR_DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)
|
||||
# shellcheck source=../shell_config.sh
|
||||
@ -63,4 +64,21 @@ ${CLICKHOUSE_CLIENT} -q "DROP TABLE IF EXISTS clone_as_foo_file"
|
||||
${CLICKHOUSE_CLIENT} -q "DROP TABLE IF EXISTS foo_merge_tree"
|
||||
${CLICKHOUSE_CLIENT} -q "DROP TABLE IF EXISTS clone_as_foo_merge_tree"
|
||||
${CLICKHOUSE_CLIENT} -q "DROP TABLE IF EXISTS foo_replacing_merge_tree"
|
||||
${CLICKHOUSE_CLIENT} -q "DROP TABLE IF EXISTS clone_as_foo_replacing_merge_tree"
|
||||
${CLICKHOUSE_CLIENT} -q "DROP TABLE IF EXISTS clone_as_foo_replacing_merge_tree"
|
||||
|
||||
# CLONE AS with a Replicated database
|
||||
${CLICKHOUSE_CLIENT} -q "DROP DATABASE IF EXISTS imdb_03231"
|
||||
|
||||
${CLICKHOUSE_CLIENT} -q "CREATE DATABASE imdb_03231 ENGINE = Replicated('/test/databases/imdb_03231', 's1', 'r1')"
|
||||
|
||||
${CLICKHOUSE_CLIENT} --optimize_throw_if_noop 1 -q "CREATE TABLE imdb_03231.foo_merge_tree (x Int8, y String) ENGINE=MergeTree PRIMARY KEY x"
|
||||
${CLICKHOUSE_CLIENT} --optimize_throw_if_noop 1 -q "SHOW CREATE TABLE imdb_03231.foo_merge_tree"
|
||||
${CLICKHOUSE_CLIENT} --optimize_throw_if_noop 1 -q "INSERT INTO imdb_03231.foo_merge_tree VALUES (1, 'a'), (2, 'b')"
|
||||
echo "from imdb_03231.foo_merge_tree"
|
||||
${CLICKHOUSE_CLIENT} --optimize_throw_if_noop 1 -q "SELECT * FROM imdb_03231.foo_merge_tree"
|
||||
echo "$(${CLICKHOUSE_CLIENT} --optimize_throw_if_noop 1 --server_logs_file=/dev/null -q "CREATE TABLE imdb_03231.clone_as_foo_merge_tree CLONE AS imdb_03231.foo_merge_tree" 2>&1)" \
|
||||
| grep -c 'Code: 344. DB::Exception: .* CREATE CLONE AS is not supported with Replicated databases. Consider using separate CREATE and INSERT queries.'
|
||||
|
||||
${CLICKHOUSE_CLIENT} -q "DROP TABLE IF EXISTS imdb_03231.clone_as_foo_merge_tree"
|
||||
${CLICKHOUSE_CLIENT} -q "DROP TABLE IF EXISTS imdb_03231.foo_merge_tree"
|
||||
${CLICKHOUSE_CLIENT} -q "DROP DATABASE IF EXISTS imdb_03231"
|
Loading…
Reference in New Issue
Block a user