mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-25 00:52:02 +00:00
dbms: better [#METR-10841].
This commit is contained in:
parent
813406b01b
commit
fedcc0081a
@ -47,8 +47,6 @@ public:
|
||||
void drop() override {}
|
||||
void rename(const String & new_path_to_db, const String & new_name) { name = new_name; }
|
||||
|
||||
void getSelectedTables(StorageVector & selected_tables);
|
||||
|
||||
/// в подтаблицах добавлять и удалять столбы нужно вручную
|
||||
/// структура подтаблиц не проверяется
|
||||
void alter(const ASTAlterQuery::Parameters & params);
|
||||
@ -70,6 +68,8 @@ private:
|
||||
const String & source_database_,
|
||||
const String & table_name_regexp_,
|
||||
const Context & context_);
|
||||
|
||||
void getSelectedTables(StorageVector & selected_tables) const;
|
||||
};
|
||||
|
||||
}
|
||||
|
@ -61,16 +61,10 @@ BlockInputStreams StorageMerge::read(
|
||||
processed_stage = QueryProcessingStage::Complete;
|
||||
QueryProcessingStage::Enum tmp_processed_stage = QueryProcessingStage::Complete;
|
||||
|
||||
/// Список таблиц могут менять в другом потоке.
|
||||
{
|
||||
Poco::ScopedLock<Poco::Mutex> lock(context.getMutex());
|
||||
context.assertDatabaseExists(source_database);
|
||||
|
||||
/** Сначала составим список выбранных таблиц, чтобы узнать его размер.
|
||||
* Это нужно, чтобы правильно передать в каждую таблицу рекомендацию по количеству потоков.
|
||||
*/
|
||||
getSelectedTables(selected_tables);
|
||||
}
|
||||
/** Сначала составим список выбранных таблиц, чтобы узнать его размер.
|
||||
* Это нужно, чтобы правильно передать в каждую таблицу рекомендацию по количеству потоков.
|
||||
*/
|
||||
getSelectedTables(selected_tables);
|
||||
|
||||
/// Если в запросе используется PREWHERE, надо убедиться, что все таблицы это поддерживают.
|
||||
if (dynamic_cast<const ASTSelectQuery &>(*query).prewhere_expression)
|
||||
@ -159,12 +153,16 @@ Block StorageMerge::getBlockWithVirtualColumns(const std::vector<StoragePtr> & s
|
||||
return res;
|
||||
}
|
||||
|
||||
void StorageMerge::getSelectedTables(StorageVector & selected_tables)
|
||||
void StorageMerge::getSelectedTables(StorageVector & selected_tables) const
|
||||
{
|
||||
/// Список таблиц могут менять в другом потоке.
|
||||
Poco::ScopedLock<Poco::Mutex> lock(context.getMutex());
|
||||
context.assertDatabaseExists(source_database);
|
||||
|
||||
const Tables & tables = context.getDatabases().at(source_database);
|
||||
for (Tables::const_iterator it = tables.begin(); it != tables.end(); ++it)
|
||||
if (it->second.get() != this && table_name_regexp.match(it->first))
|
||||
selected_tables.push_back(it->second);
|
||||
for (const auto & name_table_pair : tables)
|
||||
if (name_table_pair.second.get() != this && table_name_regexp.match(name_table_pair.first))
|
||||
selected_tables.push_back(name_table_pair.second);
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user