diff --git a/src/Dictionaries/ClickHouseDictionarySource.cpp b/src/Dictionaries/ClickHouseDictionarySource.cpp index a80ec7919a0f364723d9150eb449d8dd0341b806..d89271932eb8f1e7211211f7432d47009bfbb7b6 100644 --- a/src/Dictionaries/ClickHouseDictionarySource.cpp +++ b/src/Dictionaries/ClickHouseDictionarySource.cpp @@ -201,11 +201,13 @@ void registerDictionarySourceClickHouse(DictionarySourceFactory & factory) UInt16 default_port = getPortFromContext(context_copy, secure); std::string settings_config_prefix = config_prefix + ".clickhouse"; + std::string host = config.getString(settings_config_prefix + ".host", "localhost"); + UInt16 port = static_cast(config.getUInt(settings_config_prefix + ".port", default_port)); ClickHouseDictionarySource::Configuration configuration { .secure = config.getBool(settings_config_prefix + ".secure", false), - .host = config.getString(settings_config_prefix + ".host", "localhost"), - .port = static_cast(config.getUInt(settings_config_prefix + ".port", default_port)), + .host = host, + .port = port, .user = config.getString(settings_config_prefix + ".user", "default"), .password = config.getString(settings_config_prefix + ".password", ""), .db = config.getString(settings_config_prefix + ".db", default_database), @@ -213,7 +215,7 @@ void registerDictionarySourceClickHouse(DictionarySourceFactory & factory) .where = config.getString(settings_config_prefix + ".where", ""), .update_field = config.getString(settings_config_prefix + ".update_field", ""), .invalidate_query = config.getString(settings_config_prefix + ".invalidate_query", ""), - .is_local = isLocalAddress({configuration.host, configuration.port}, default_port) + .is_local = isLocalAddress({host, port}, default_port) }; /// We should set user info even for the case when the dictionary is loaded in-process (without TCP communication).