mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-22 07:31:57 +00:00
dbms: in refactoring [#METR-10498]
This commit is contained in:
parent
3c3d9289a3
commit
6a15b2b588
@ -102,8 +102,9 @@ public:
|
||||
/// Все новые временные таблицы, полученные при выполнении подзапросов GLOBAL IN.
|
||||
Tables external_tables;
|
||||
|
||||
/// Создаем какие сможем Set из секции In для использования индекса по ним
|
||||
/// ordered_set нужен если в In используется индекс
|
||||
void makeExplicitSets(bool create_ordered_set);
|
||||
void makeExplicitSetsForIndex(bool create_ordered_set);
|
||||
private:
|
||||
typedef std::set<String> NamesSet;
|
||||
|
||||
|
@ -24,6 +24,7 @@
|
||||
#include <DB/Storages/StorageMergeTree.h>
|
||||
#include <DB/Storages/StorageDistributed.h>
|
||||
#include <DB/Storages/StorageMemory.h>
|
||||
#include <DB/Storages/StorageReplicatedMergeTree.h>
|
||||
|
||||
#include <DB/DataStreams/copyData.h>
|
||||
|
||||
@ -498,9 +499,12 @@ void ExpressionAnalyzer::normalizeTreeImpl(ASTPtr & ast, MapOfASTs & finished_as
|
||||
finished_asts[initial_ast] = ast;
|
||||
}
|
||||
|
||||
void ExpressionAnalyzer::makeExplicitSets(bool create_ordered_set)
|
||||
void ExpressionAnalyzer::makeExplicitSetsForIndex(bool create_ordered_set)
|
||||
{
|
||||
if (storage && ast && dynamic_cast<StorageMergeTree *>(storage.get()))
|
||||
/// Для Remote, Distributed таблиц Set создавать не надо. Так как для передачи его все равно придется приобразовывать в текст
|
||||
/// в formatAST, а использоваться он не будет
|
||||
if (storage && ast &&
|
||||
(dynamic_cast<StorageMergeTree *>(storage.get()) || dynamic_cast<StorageReplicatedMergeTree *>(storage.get())))
|
||||
makeExplicitSetsRecursively(ast, storage->getSampleBlock(), create_ordered_set);
|
||||
}
|
||||
|
||||
|
@ -501,8 +501,8 @@ QueryProcessingStage::Enum InterpreterSelectQuery::executeFetchColumns(BlockInpu
|
||||
|
||||
QueryProcessingStage::Enum from_stage = QueryProcessingStage::FetchColumns;
|
||||
|
||||
/// Создаем In заданные явно. Внутри In создаем дополнительно сортированный вектор значений
|
||||
query_analyzer->makeExplicitSets(true);
|
||||
/// Создаем какие сможем In для использования в индексе. Внутри In создаем дополнительно сортированный вектор значений
|
||||
query_analyzer->makeExplicitSetsForIndex(true);
|
||||
/// Инициализируем изначальные потоки данных, на которые накладываются преобразования запроса. Таблица или подзапрос?
|
||||
if (!interpreter_subquery)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user