1) Update checking MergeTree storage. 2) Remove unused code segment. 3) Update the test

This commit is contained in:
Tuan Pham Anh 2024-09-06 15:10:35 +00:00
parent 4aa9459c63
commit c01e63fd2b
3 changed files with 19 additions and 29 deletions

View File

@ -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<MergeTreeData>(as_table);
if (!merge_tree_table)
{
return {};
}
auto partition = std::make_shared<ASTPartition>();
partition->all = true;

View File

@ -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

View File

@ -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;
DROP TABLE IF EXISTS clone_as_foo_merge_tree;
DROP TABLE IF EXISTS foo_merge_tree;
DROP DATABASE IF EXISTS {CLICKHOUSE_DATABASE_1:Identifier};