1#include <Interpreters/ExternalDictionariesLoader.h>
2#include <Dictionaries/DictionaryFactory.h>
3
4namespace DB
5{
6
7/// Must not acquire Context lock in constructor to avoid possibility of deadlocks.
8ExternalDictionariesLoader::ExternalDictionariesLoader(Context & context_)
9 : ExternalLoader("external dictionary", &Logger::get("ExternalDictionariesLoader"))
10 , context(context_)
11{
12 setConfigSettings({"dictionary", "name", "database"});
13 enableAsyncLoading(true);
14 enablePeriodicUpdates(true);
15}
16
17
18ExternalLoader::LoadablePtr ExternalDictionariesLoader::create(
19 const std::string & name, const Poco::Util::AbstractConfiguration & config,
20 const std::string & key_in_config, const std::string & repository_name) const
21{
22 /// For dictionaries from databases (created with DDL qureies) we have to perform
23 /// additional checks, so we identify them here.
24 bool dictionary_from_database = !repository_name.empty();
25 return DictionaryFactory::instance().create(name, config, key_in_config, context, dictionary_from_database);
26}
27}
28