2019-09-26 11:19:10 +00:00
|
|
|
#include <Interpreters/ExternalDictionariesLoader.h>
|
|
|
|
#include <Interpreters/Context.h>
|
|
|
|
#include <Dictionaries/DictionaryFactory.h>
|
2019-10-18 15:44:32 +00:00
|
|
|
#include <Dictionaries/getDictionaryConfigurationFromAST.h>
|
2019-09-26 11:19:10 +00:00
|
|
|
|
|
|
|
namespace DB
|
|
|
|
{
|
|
|
|
|
|
|
|
/// Must not acquire Context lock in constructor to avoid possibility of deadlocks.
|
2019-10-18 15:44:32 +00:00
|
|
|
ExternalDictionariesLoader::ExternalDictionariesLoader(Context & context_)
|
2019-09-30 16:12:08 +00:00
|
|
|
: ExternalLoader("external dictionary", &Logger::get("ExternalDictionariesLoader"))
|
|
|
|
, context(context_)
|
2019-09-26 11:19:10 +00:00
|
|
|
{
|
|
|
|
enableAsyncLoading(true);
|
|
|
|
enablePeriodicUpdates(true);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
ExternalLoader::LoadablePtr ExternalDictionariesLoader::create(
|
|
|
|
const std::string & name, const Poco::Util::AbstractConfiguration & config, const std::string & key_in_config) const
|
|
|
|
{
|
|
|
|
return DictionaryFactory::instance().create(name, config, key_in_config, context);
|
|
|
|
}
|
|
|
|
|
2019-10-17 17:18:54 +00:00
|
|
|
void ExternalDictionariesLoader::addConfigRepository(
|
|
|
|
const std::string & repository_name, std::unique_ptr<IExternalLoaderConfigRepository> config_repository)
|
|
|
|
{
|
|
|
|
ExternalLoader::addConfigRepository(repository_name, std::move(config_repository), {"dictionary", "name"});
|
|
|
|
}
|
2019-10-18 15:44:32 +00:00
|
|
|
|
|
|
|
|
2019-10-21 13:54:23 +00:00
|
|
|
void ExternalDictionariesLoader::addDictionaryWithConfig(
|
|
|
|
const String & dictionary_name, const String & repo_name, const ASTCreateQuery & query, bool load_never_loading) const
|
2019-10-18 15:44:32 +00:00
|
|
|
{
|
2019-10-21 13:54:23 +00:00
|
|
|
ExternalLoader::addObjectAndLoad(
|
|
|
|
dictionary_name, /// names are equal
|
|
|
|
dictionary_name,
|
2019-10-18 15:44:32 +00:00
|
|
|
repo_name,
|
|
|
|
getDictionaryConfigurationFromAST(query),
|
2019-10-21 13:54:23 +00:00
|
|
|
"dictionary", load_never_loading);
|
2019-10-18 15:44:32 +00:00
|
|
|
}
|
2019-09-26 11:19:10 +00:00
|
|
|
}
|