mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-22 15:42:02 +00:00
Review fixes
This commit is contained in:
parent
84c8757049
commit
221c09589c
@ -136,8 +136,10 @@ DatabasePtr DatabaseFactory::getImpl(const ASTCreateQuery & create, const String
|
||||
else if (engine_name == "MySQL" || engine_name == "MaterializeMySQL" || engine_name == "MaterializedMySQL")
|
||||
{
|
||||
const ASTFunction * engine = engine_define->engine;
|
||||
ASTs & engine_args = engine->arguments->children;
|
||||
auto [common_configuration, storage_specific_args, with_named_collection] = getExternalDataSourceConfiguration(engine_args, context, true);
|
||||
if (!engine->arguments)
|
||||
throw Exception(ErrorCodes::BAD_ARGUMENTS, "Engine `{}` must have arguments", engine_name);
|
||||
ASTs & arguments = engine->arguments->children;
|
||||
auto [common_configuration, storage_specific_args, with_named_collection] = getExternalDataSourceConfiguration(arguments, context, true);
|
||||
StorageMySQLConfiguration configuration(common_configuration);
|
||||
|
||||
if (with_named_collection)
|
||||
@ -149,11 +151,10 @@ DatabasePtr DatabaseFactory::getImpl(const ASTCreateQuery & create, const String
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!engine->arguments || engine->arguments->children.size() != 4)
|
||||
if (arguments.size() != 4)
|
||||
throw Exception(ErrorCodes::BAD_ARGUMENTS,
|
||||
"MySQL database require mysql_hostname, mysql_database_name, mysql_username, mysql_password arguments.");
|
||||
|
||||
ASTs & arguments = engine->arguments->children;
|
||||
arguments[1] = evaluateConstantExpressionOrIdentifierAsLiteral(arguments[1], context);
|
||||
|
||||
const auto & host_port = safeGetLiteralValue<String>(arguments[0], engine_name);
|
||||
@ -258,31 +259,34 @@ DatabasePtr DatabaseFactory::getImpl(const ASTCreateQuery & create, const String
|
||||
else if (engine_name == "PostgreSQL")
|
||||
{
|
||||
const ASTFunction * engine = engine_define->engine;
|
||||
if (!engine->arguments)
|
||||
throw Exception(ErrorCodes::BAD_ARGUMENTS, "Engine `{}` must have arguments", engine_name);
|
||||
|
||||
ASTs & engine_args = engine->arguments->children;
|
||||
auto [common_configuration, storage_specific_args, with_named_collection] = getExternalDataSourceConfiguration(engine_args, context, true);
|
||||
StoragePostgreSQLConfiguration configuration(common_configuration);
|
||||
auto use_table_cache = false;
|
||||
|
||||
if (with_named_collection)
|
||||
{
|
||||
configuration.addresses = {std::make_pair(configuration.host, configuration.port)};
|
||||
for (const auto & [arg_name, arg_value] : storage_specific_args)
|
||||
{
|
||||
if (arg_name == "on_conflict")
|
||||
configuration.on_conflict = arg_value.safeGet<String>();
|
||||
if (arg_name == "use_table_cache")
|
||||
use_table_cache = true;
|
||||
else
|
||||
throw Exception(ErrorCodes::BAD_ARGUMENTS,
|
||||
"Unexpected argument name for key-value defined argument."
|
||||
"Unexpected key-value argument."
|
||||
"Got: {}, but expected one of:"
|
||||
"host, port, username, password, database, schema, on_conflict, use_table_cache.", arg_name);
|
||||
"host, port, username, password, database, schema, use_table_cache.", arg_name);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!engine->arguments || engine->arguments->children.size() < 4 || engine->arguments->children.size() > 7)
|
||||
if (engine_args.size() < 4 || engine_args.size() > 6)
|
||||
throw Exception(ErrorCodes::BAD_ARGUMENTS,
|
||||
"PostgreSQL Database require `host:port`, `database_name`, `username`, `password`"
|
||||
"[, `schema` = "", `use_table_cache` = 0, on_conflict='ON CONFLICT TO NOTHING'");
|
||||
"[, `schema` = "", `use_table_cache` = 0");
|
||||
|
||||
for (auto & engine_arg : engine_args)
|
||||
engine_arg = evaluateConstantExpressionOrIdentifierAsLiteral(engine_arg, context);
|
||||
@ -299,7 +303,6 @@ DatabasePtr DatabaseFactory::getImpl(const ASTCreateQuery & create, const String
|
||||
configuration.schema = safeGetLiteralValue<String>(engine_args[4], engine_name);
|
||||
}
|
||||
|
||||
auto use_table_cache = 0;
|
||||
if (engine_args.size() >= 6)
|
||||
use_table_cache = safeGetLiteralValue<UInt8>(engine_args[5], engine_name);
|
||||
|
||||
@ -313,6 +316,8 @@ DatabasePtr DatabaseFactory::getImpl(const ASTCreateQuery & create, const String
|
||||
else if (engine_name == "MaterializedPostgreSQL")
|
||||
{
|
||||
const ASTFunction * engine = engine_define->engine;
|
||||
if (!engine->arguments)
|
||||
throw Exception(ErrorCodes::BAD_ARGUMENTS, "Engine `{}` must have arguments", engine_name);
|
||||
|
||||
ASTs & engine_args = engine->arguments->children;
|
||||
auto [common_configuration, storage_specific_args, with_named_collection] = getExternalDataSourceConfiguration(engine_args, context, true);
|
||||
@ -321,18 +326,14 @@ DatabasePtr DatabaseFactory::getImpl(const ASTCreateQuery & create, const String
|
||||
if (with_named_collection)
|
||||
{
|
||||
if (!storage_specific_args.empty())
|
||||
{
|
||||
throw Exception(ErrorCodes::BAD_ARGUMENTS,
|
||||
"MaterializedPostgreSQL Database requires only `host`, `port`, `database_name`, `username`, `password`.");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!engine->arguments || engine->arguments->children.size() != 4)
|
||||
{
|
||||
if (engine_args.size() != 4)
|
||||
throw Exception(ErrorCodes::BAD_ARGUMENTS,
|
||||
"MaterializedPostgreSQL Database require `host:port`, `database_name`, `username`, `password`.");
|
||||
}
|
||||
|
||||
for (auto & engine_arg : engine_args)
|
||||
engine_arg = evaluateConstantExpressionOrIdentifierAsLiteral(engine_arg, context);
|
||||
|
@ -233,7 +233,7 @@ getURLBasedDataSourceConfiguration(const ASTs & args, ContextPtr context)
|
||||
else if (key == "headers")
|
||||
{
|
||||
Poco::Util::AbstractConfiguration::Keys header_keys;
|
||||
config.keys(config_prefix + '.' + "headers", header_keys);
|
||||
config.keys(config_prefix + ".headers", header_keys);
|
||||
for (const auto & header : header_keys)
|
||||
{
|
||||
const auto header_prefix = config_prefix + ".headers." + header;
|
||||
|
@ -119,7 +119,7 @@ StorageMongoDBConfiguration StorageMongoDB::getConfiguration(ASTs engine_args, C
|
||||
configuration.options = arg_value.safeGet<String>();
|
||||
else
|
||||
throw Exception(ErrorCodes::BAD_ARGUMENTS,
|
||||
"Unexpected argument name for key-value defined argument."
|
||||
"Unexpected key-value argument."
|
||||
"Got: {}, but expected one of:"
|
||||
"host, port, username, password, database, table, options.", arg_name);
|
||||
}
|
||||
@ -157,7 +157,7 @@ void registerStorageMongoDB(StorageFactory & factory)
|
||||
{
|
||||
factory.registerStorage("MongoDB", [](const StorageFactory::Arguments & args)
|
||||
{
|
||||
auto configuration = StorageMongoDB::getConfiguration(args.engine_args, args.getContext());
|
||||
auto configuration = StorageMongoDB::getConfiguration(args.engine_args, args.getLocalContext());
|
||||
|
||||
return StorageMongoDB::create(
|
||||
args.table_id,
|
||||
|
@ -251,7 +251,7 @@ StorageMySQLConfiguration StorageMySQL::getConfiguration(ASTs engine_args, Conte
|
||||
configuration.on_duplicate_clause = arg_value.safeGet<String>();
|
||||
else
|
||||
throw Exception(ErrorCodes::BAD_ARGUMENTS,
|
||||
"Unexpected argument name for key-value defined argument."
|
||||
"Unexpected key-value argument."
|
||||
"Got: {}, but expected one of:"
|
||||
"host, port, username, password, database, table, replace_query, on_duplicate_clause.", arg_name);
|
||||
}
|
||||
@ -293,7 +293,7 @@ void registerStorageMySQL(StorageFactory & factory)
|
||||
{
|
||||
factory.registerStorage("MySQL", [](const StorageFactory::Arguments & args)
|
||||
{
|
||||
auto configuration = StorageMySQL::getConfiguration(args.engine_args, args.getContext());
|
||||
auto configuration = StorageMySQL::getConfiguration(args.engine_args, args.getLocalContext());
|
||||
|
||||
MySQLSettings mysql_settings; /// TODO: move some arguments from the arguments to the SETTINGS.
|
||||
if (args.storage_def->settings)
|
||||
|
@ -398,7 +398,7 @@ StoragePostgreSQLConfiguration StoragePostgreSQL::getConfiguration(ASTs engine_a
|
||||
configuration.on_conflict = arg_value.safeGet<String>();
|
||||
else
|
||||
throw Exception(ErrorCodes::BAD_ARGUMENTS,
|
||||
"Unexpected argument name for key-value defined argument."
|
||||
"Unexpected key-value argument."
|
||||
"Got: {}, but expected one of:"
|
||||
"host, port, username, password, database, table, schema, on_conflict.", arg_name);
|
||||
}
|
||||
@ -442,7 +442,7 @@ void registerStoragePostgreSQL(StorageFactory & factory)
|
||||
{
|
||||
factory.registerStorage("PostgreSQL", [](const StorageFactory::Arguments & args)
|
||||
{
|
||||
auto configuration = StoragePostgreSQL::getConfiguration(args.engine_args, args.getContext());
|
||||
auto configuration = StoragePostgreSQL::getConfiguration(args.engine_args, args.getLocalContext());
|
||||
auto pool = std::make_shared<postgres::PoolWithFailover>(configuration,
|
||||
args.getContext()->getSettingsRef().postgresql_connection_pool_size,
|
||||
args.getContext()->getSettingsRef().postgresql_connection_pool_wait_timeout);
|
||||
|
@ -793,7 +793,7 @@ void registerStorageS3Impl(const String & name, StorageFactory & factory)
|
||||
if (engine_args.empty())
|
||||
throw Exception(ErrorCodes::BAD_ARGUMENTS, "External data source must have arguments");
|
||||
|
||||
auto configuration = StorageS3::getConfiguration(engine_args, args.getContext());
|
||||
auto configuration = StorageS3::getConfiguration(engine_args, args.getLocalContext());
|
||||
// Use format settings from global server context + settings from
|
||||
// the SETTINGS clause of the create query. Settings from current
|
||||
// session and user are ignored.
|
||||
|
Loading…
Reference in New Issue
Block a user