diff --git a/src/Interpreters/InterpreterCreateQuery.cpp b/src/Interpreters/InterpreterCreateQuery.cpp index f29f824eb49..007fec6f087 100644 --- a/src/Interpreters/InterpreterCreateQuery.cpp +++ b/src/Interpreters/InterpreterCreateQuery.cpp @@ -811,6 +811,11 @@ InterpreterCreateQuery::TableProperties InterpreterCreateQuery::getTableProperti /// as_storage->getColumns() and setEngine(...) must be called under structure lock of other_table for CREATE ... AS other_table. as_storage_lock = as_storage->lockForShare(getContext()->getCurrentQueryId(), getContext()->getSettingsRef().lock_acquire_timeout); + if (create.is_clone_as && !endsWith(as_storage->getName(), "MergeTree")) + { + throw Exception(ErrorCodes::SUPPORT_IS_DISABLED, "Only support CLONE AS with tables of the MergeTree family"); + } + auto as_storage_metadata = as_storage->getInMemoryMetadataPtr(); properties.columns = as_storage_metadata->getColumns(); @@ -828,10 +833,6 @@ InterpreterCreateQuery::TableProperties InterpreterCreateQuery::getTableProperti { /// Only MergeTree support TTL properties.columns.resetColumnTTLs(); - if (create.is_clone_as) - { - throw Exception(ErrorCodes::SUPPORT_IS_DISABLED, "Only support CLONE AS with tables of the MergeTree family"); - } } properties.constraints = as_storage_metadata->getConstraints(); @@ -1960,18 +1961,6 @@ BlockIO InterpreterCreateQuery::fillTableIfNeeded(const ASTCreateQuery & create) && (!(create.is_materialized_view || create.is_window_view) || create.is_populate)) { String as_database_name = getContext()->resolveDatabase(create.as_database); - StorageID as_table_id = {as_database_name, as_table_saved}; - StoragePtr as_table = DatabaseCatalog::instance().tryGetTable(as_table_id, getContext()); - if (!as_table) - { - return {}; - } - - auto merge_tree_table = std::dynamic_pointer_cast(as_table); - if (!merge_tree_table) - { - return {}; - } auto partition = std::make_shared(); partition->all = true; diff --git a/tests/queries/0_stateless/03231_create_with_clone_as.reference b/tests/queries/0_stateless/03231_create_with_clone_as.reference index 34f39fe932a..e0d292ec5d4 100644 --- a/tests/queries/0_stateless/03231_create_with_clone_as.reference +++ b/tests/queries/0_stateless/03231_create_with_clone_as.reference @@ -24,8 +24,8 @@ CREATE TABLE default.foo_replicated_merge_tree\n(\n `x` Int8,\n `y` String 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 +CREATE TABLE default_1.foo_merge_tree\n(\n `x` Int8,\n `y` String\n)\nENGINE = MergeTree\nPRIMARY KEY x\nORDER BY x\nSETTINGS index_granularity = 8192 +from foo_merge_tree 1 a 2 b s1 r1 OK 0 0 diff --git a/tests/queries/0_stateless/03231_create_with_clone_as.sql b/tests/queries/0_stateless/03231_create_with_clone_as.sql index b410c09bb9c..712e90b2f8a 100644 --- a/tests/queries/0_stateless/03231_create_with_clone_as.sql +++ b/tests/queries/0_stateless/03231_create_with_clone_as.sql @@ -71,17 +71,18 @@ DROP TABLE IF EXISTS foo_replicated_merge_tree; DROP TABLE IF EXISTS clone_as_foo_replicated_merge_tree; -- CLONE AS with a Replicated database -DROP DATABASE IF EXISTS imdb_03231; +DROP DATABASE IF EXISTS {CLICKHOUSE_DATABASE_1:Identifier}; -CREATE DATABASE imdb_03231 ENGINE = Replicated('/test/databases/{database}/imdb_03231', 's1', 'r1'); +CREATE DATABASE {CLICKHOUSE_DATABASE_1:Identifier} ENGINE = Replicated('/test/databases/{database}/test_03231', 's1', 'r1'); +USE {CLICKHOUSE_DATABASE_1:Identifier}; -CREATE TABLE imdb_03231.foo_merge_tree (x Int8, y String) ENGINE=MergeTree PRIMARY KEY x; -SHOW CREATE TABLE imdb_03231.foo_merge_tree; -INSERT INTO imdb_03231.foo_merge_tree VALUES (1, 'a'), (2, 'b'); -SELECT 'from imdb_03231.foo_merge_tree'; -SELECT * FROM imdb_03231.foo_merge_tree; -CREATE TABLE imdb_03231.clone_as_foo_merge_tree CLONE AS imdb_03231.foo_merge_tree; -- { serverError SUPPORT_IS_DISABLED } +CREATE TABLE foo_merge_tree (x Int8, y String) ENGINE=MergeTree PRIMARY KEY x; +SHOW CREATE TABLE foo_merge_tree; +INSERT INTO foo_merge_tree VALUES (1, 'a'), (2, 'b'); +SELECT 'from foo_merge_tree'; +SELECT * FROM foo_merge_tree; +CREATE TABLE clone_as_foo_merge_tree CLONE AS foo_merge_tree; -- { serverError SUPPORT_IS_DISABLED } -DROP TABLE IF EXISTS imdb_03231.clone_as_foo_merge_tree; -DROP TABLE IF EXISTS imdb_03231.foo_merge_tree; -DROP DATABASE IF EXISTS imdb_03231; \ No newline at end of file +DROP TABLE IF EXISTS clone_as_foo_merge_tree; +DROP TABLE IF EXISTS foo_merge_tree; +DROP DATABASE IF EXISTS {CLICKHOUSE_DATABASE_1:Identifier}; \ No newline at end of file