mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-09-22 17:50:47 +00:00
changed ExternalLoader::getObjectsMap return type [#CLICKHOUSE-3305]
This commit is contained in:
parent
092567af39
commit
371e234f01
@ -27,7 +27,7 @@ void DatabaseDictionary::loadTables(Context & context, ThreadPool * thread_pool,
|
||||
Tables DatabaseDictionary::loadTables()
|
||||
{
|
||||
auto objects_map = external_dictionaries.getObjectsMap();
|
||||
const auto & dictionaries = std::get<1>(objects_map);
|
||||
const auto & dictionaries = objects_map.get();
|
||||
|
||||
Tables tables;
|
||||
for (const auto & pair : dictionaries)
|
||||
@ -52,7 +52,7 @@ bool DatabaseDictionary::isTableExist(
|
||||
const String & table_name) const
|
||||
{
|
||||
auto objects_map = external_dictionaries.getObjectsMap();
|
||||
const auto & dictionaries = std::get<1>(objects_map);
|
||||
const auto & dictionaries = objects_map.get();
|
||||
return dictionaries.count(table_name) && !deleted_tables.count(table_name);
|
||||
}
|
||||
|
||||
@ -61,7 +61,7 @@ StoragePtr DatabaseDictionary::tryGetTable(
|
||||
const String & table_name)
|
||||
{
|
||||
auto objects_map = external_dictionaries.getObjectsMap();
|
||||
const auto & dictionaries = std::get<1>(objects_map);
|
||||
const auto & dictionaries = objects_map.get();
|
||||
|
||||
if (deleted_tables.count(table_name))
|
||||
return {};
|
||||
@ -90,7 +90,7 @@ DatabaseIteratorPtr DatabaseDictionary::getIterator(const Context & context)
|
||||
bool DatabaseDictionary::empty(const Context & context) const
|
||||
{
|
||||
auto objects_map = external_dictionaries.getObjectsMap();
|
||||
const auto & dictionaries = std::get<1>(objects_map);
|
||||
const auto & dictionaries = objects_map.get();
|
||||
for (const auto & pair : dictionaries)
|
||||
if (pair.second.loadable && !deleted_tables.count(pair.first))
|
||||
return false;
|
||||
|
@ -425,9 +425,9 @@ ExternalLoader::LoadablePtr ExternalLoader::getLoadable(const std::string & name
|
||||
return it->second.loadable;
|
||||
}
|
||||
|
||||
std::tuple<std::unique_lock<std::mutex>, const ExternalLoader::ObjectsMap &> ExternalLoader::getObjectsMap() const
|
||||
ExternalLoader::LockedObjectsMap ExternalLoader::getObjectsMap() const
|
||||
{
|
||||
return std::make_tuple(std::unique_lock<std::mutex>(map_mutex), std::cref(loadable_objects));
|
||||
return LockedObjectsMap(map_mutex, loadable_objects);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -101,8 +101,18 @@ protected:
|
||||
virtual std::unique_ptr<IExternalLoadable> create(const std::string & name, const Configuration & config,
|
||||
const std::string & config_prefix) = 0;
|
||||
|
||||
class LockedObjectsMap
|
||||
{
|
||||
public:
|
||||
LockedObjectsMap(std::mutex & mutex, const ObjectsMap & objectsMap) : lock(mutex), objectsMap(objectsMap) {}
|
||||
const ObjectsMap & get() { return objectsMap; }
|
||||
private:
|
||||
std::unique_lock<std::mutex> lock;
|
||||
const ObjectsMap & objectsMap;
|
||||
};
|
||||
|
||||
/// Direct access to objects.
|
||||
std::tuple<std::unique_lock<std::mutex>, const ObjectsMap &> getObjectsMap() const;
|
||||
LockedObjectsMap getObjectsMap() const;
|
||||
|
||||
/// Should be called in derived constructor (to avoid pure virtual call).
|
||||
void init(bool throw_on_error);
|
||||
|
@ -77,7 +77,7 @@ BlockInputStreams StorageSystemDictionaries::read(
|
||||
|
||||
const auto & external_dictionaries = context.getExternalDictionaries();
|
||||
auto objects_map = external_dictionaries.getObjectsMap();
|
||||
const auto & dictionaries = std::get<1>(objects_map);
|
||||
const auto & dictionaries = objects_map.get();
|
||||
|
||||
for (const auto & dict_info : dictionaries)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user