```
milovidov-desktop :) CREATE DICTIONARY dict
:-] (
:-]     k1 UInt64,
:-]     k2 UInt8,
:-]     value String
:-] )
:-] PRIMARY KEY k1, k2
:-] SOURCE(CLICKHOUSE(HOST 'localhost' PORT 9000 USER 'default' TABLE 'dict'))
:-] LIFETIME(1000)
:-] LAYOUT(COMPLEX_KEY_HASHED());

CREATE DICTIONARY dict
(
    `k1` UInt64,
    `k2` UInt8,
    `value` String
)
PRIMARY KEY k1, k2
SOURCE(CLICKHOUSE(HOST 'localhost' PORT 9000 USER 'default' TABLE 'dict'))
LIFETIME(MIN 0 MAX 1000)
LAYOUT(COMPLEX_KEY_HASHED())

Ok.

0 rows in set. Elapsed: 0.001 sec. 

milovidov-desktop :) SELECT dictGetString('default.dict', 'third_column', (1, 2, 3, 4, 5, 6, 7, 8, 9, 10));

SELECT dictGetString('default.dict', 'third_column', (1, 2, 3, 4, 5, 6, 7, 8, 9, 10))
```
const DictionaryStructure & dict_struct_,
    const Poco::Util::AbstractConfiguration & config,
    const std::string & path_to_settings,
    const std::string & config_prefix,
    const Block & sample_block_,
    const Context & context_,
    const std::string & default_database)
    : update_time{std::chrono::system_clock::from_time_t(0)}
    , dict_struct{dict_struct_}
    , secure(config.getBool(config_prefix + ".secure", false))
    , host{config.getString(config_prefix + ".host", "localhost")}
    , port(config.getInt(config_prefix + ".port", getPortFromContext(context_, secure)))
    , user{config.getString(config_prefix + ".user", "default")}
    , password{config.getString(config_prefix + ".password", "")}
    , db{config.getString(config_prefix + ".db", default_database)}
    , table{config.getString(config_prefix + ".table")}
    , where{config.getString(config_prefix + ".where", "")}
    , update_field{config.getString(config_prefix + ".update_field", "")}
    , invalidate_query{config.getString(config_prefix + ".invalidate_query", "")}
    , query_builder{dict_struct, db, "", table, where, IdentifierQuotingStyle::Backticks}
    , sample_block{sample_block_}
    , context(context_)
    , is_local{isLocalAddress({host, port}, getPortFromContext(context_, secure))}
    , pool{is_local ? nullptr : createPool(host, port, secure, db, user, password)}
    , load_all_query{query_builder.composeLoadAllQuery()}
{
    
    if (is_local)
    {
        context.setUser(user, password, Poco::Net::SocketAddress("127.0.0.1", 0));