mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-10 17:44:23 +00:00
Merge pull request #14704 from ClickHouse/fix_misleading_message_uuid_macro
Fix misleading exception message about uuid macro
This commit is contained in:
commit
1f47b1ff6b
@ -68,8 +68,14 @@ String Macros::expand(const String & s,
|
|||||||
res += database_name;
|
res += database_name;
|
||||||
else if (macro_name == "table" && !table_name.empty())
|
else if (macro_name == "table" && !table_name.empty())
|
||||||
res += table_name;
|
res += table_name;
|
||||||
else if (macro_name == "uuid" && uuid != UUIDHelpers::Nil)
|
else if (macro_name == "uuid")
|
||||||
|
{
|
||||||
|
if (uuid == UUIDHelpers::Nil)
|
||||||
|
throw Exception("Macro 'uuid' and empty arguments of ReplicatedMergeTree "
|
||||||
|
"are supported only for ON CLUSTER queries with Atomic database engine",
|
||||||
|
ErrorCodes::SYNTAX_ERROR);
|
||||||
res += toString(uuid);
|
res += toString(uuid);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
throw Exception("No macro '" + macro_name +
|
throw Exception("No macro '" + macro_name +
|
||||||
"' in config while processing substitutions in '" + s + "' at '"
|
"' in config while processing substitutions in '" + s + "' at '"
|
||||||
|
@ -395,9 +395,10 @@ static StoragePtr create(const StorageFactory::Arguments & args)
|
|||||||
|
|
||||||
if (replicated)
|
if (replicated)
|
||||||
{
|
{
|
||||||
bool has_arguments = arg_num + 2 <= arg_cnt && engine_args[arg_num]->as<ASTLiteral>() && engine_args[arg_num + 1]->as<ASTLiteral>();
|
bool has_arguments = arg_num + 2 <= arg_cnt;
|
||||||
|
bool has_valid_arguments = has_arguments && engine_args[arg_num]->as<ASTLiteral>() && engine_args[arg_num + 1]->as<ASTLiteral>();
|
||||||
|
|
||||||
if (has_arguments)
|
if (has_valid_arguments)
|
||||||
{
|
{
|
||||||
const auto * ast = engine_args[arg_num]->as<ASTLiteral>();
|
const auto * ast = engine_args[arg_num]->as<ASTLiteral>();
|
||||||
if (ast && ast->value.getType() == Field::Types::String)
|
if (ast && ast->value.getType() == Field::Types::String)
|
||||||
@ -420,7 +421,7 @@ static StoragePtr create(const StorageFactory::Arguments & args)
|
|||||||
"No replica name in config" + getMergeTreeVerboseHelp(is_extended_storage_def), ErrorCodes::NO_REPLICA_NAME_GIVEN);
|
"No replica name in config" + getMergeTreeVerboseHelp(is_extended_storage_def), ErrorCodes::NO_REPLICA_NAME_GIVEN);
|
||||||
++arg_num;
|
++arg_num;
|
||||||
}
|
}
|
||||||
else if (is_extended_storage_def)
|
else if (is_extended_storage_def && !has_arguments)
|
||||||
{
|
{
|
||||||
/// Try use default values if arguments are not specified.
|
/// Try use default values if arguments are not specified.
|
||||||
/// It works for ON CLUSTER queries when database engine is Atomic and there are {shard} and {replica} in config.
|
/// It works for ON CLUSTER queries when database engine is Atomic and there are {shard} and {replica} in config.
|
||||||
@ -428,7 +429,7 @@ static StoragePtr create(const StorageFactory::Arguments & args)
|
|||||||
replica_name = "{replica}"; /// TODO maybe use hostname if {replica} is not defined?
|
replica_name = "{replica}"; /// TODO maybe use hostname if {replica} is not defined?
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
throw Exception("Expected zookeper_path and replica_name arguments", ErrorCodes::BAD_ARGUMENTS);
|
throw Exception("Expected two string literal arguments: zookeper_path and replica_name", ErrorCodes::BAD_ARGUMENTS);
|
||||||
|
|
||||||
/// Allow implicit {uuid} macros only for zookeeper_path in ON CLUSTER queries
|
/// Allow implicit {uuid} macros only for zookeeper_path in ON CLUSTER queries
|
||||||
bool is_on_cluster = args.local_context.getClientInfo().query_kind == ClientInfo::QueryKind::SECONDARY_QUERY;
|
bool is_on_cluster = args.local_context.getClientInfo().query_kind == ClientInfo::QueryKind::SECONDARY_QUERY;
|
||||||
|
Loading…
Reference in New Issue
Block a user