mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-09-30 05:30:51 +00:00
Add MaterializingStep.
This commit is contained in:
parent
daf6e0aa84
commit
193b572a05
39
src/Processors/QueryPlan/MaterializingStep.cpp
Normal file
39
src/Processors/QueryPlan/MaterializingStep.cpp
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
#include <Processors/QueryPlan/MaterializingStep.h>
|
||||||
|
#include <Processors/QueryPipeline.h>
|
||||||
|
#include <Processors/Transforms/MaterializingTransform.h>
|
||||||
|
|
||||||
|
#include <DataStreams/materializeBlock.h>
|
||||||
|
|
||||||
|
namespace DB
|
||||||
|
{
|
||||||
|
|
||||||
|
static ITransformingStep::Traits getTraits()
|
||||||
|
{
|
||||||
|
return ITransformingStep::Traits
|
||||||
|
{
|
||||||
|
{
|
||||||
|
.preserves_distinct_columns = true,
|
||||||
|
.returns_single_stream = false,
|
||||||
|
.preserves_number_of_streams = true,
|
||||||
|
.preserves_sorting = true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.preserves_number_of_rows = true,
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
MaterializingStep::MaterializingStep(const DataStream & input_stream_)
|
||||||
|
: ITransformingStep(input_stream_, materializeBlock(input_stream_.header), getTraits())
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void MaterializingStep::transformPipeline(QueryPipeline & pipeline)
|
||||||
|
{
|
||||||
|
pipeline.addSimpleTransform([&](const Block & header)
|
||||||
|
{
|
||||||
|
return std::make_shared<MaterializingTransform>(header);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
18
src/Processors/QueryPlan/MaterializingStep.h
Normal file
18
src/Processors/QueryPlan/MaterializingStep.h
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
#pragma once
|
||||||
|
#include <Processors/QueryPlan/ITransformingStep.h>
|
||||||
|
|
||||||
|
namespace DB
|
||||||
|
{
|
||||||
|
|
||||||
|
/// Convert one block structure to another. See ConvertingTransform.
|
||||||
|
class MaterializingStep : public ITransformingStep
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
explicit MaterializingStep(const DataStream & input_stream_);
|
||||||
|
|
||||||
|
String getName() const override { return "Materializing"; }
|
||||||
|
|
||||||
|
void transformPipeline(QueryPipeline & pipeline) override;
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
@ -105,6 +105,7 @@ SRCS(
|
|||||||
QueryPlan/ITransformingStep.cpp
|
QueryPlan/ITransformingStep.cpp
|
||||||
QueryPlan/LimitByStep.cpp
|
QueryPlan/LimitByStep.cpp
|
||||||
QueryPlan/LimitStep.cpp
|
QueryPlan/LimitStep.cpp
|
||||||
|
QueryPlan/MaterializingStep.cpp
|
||||||
QueryPlan/MergeSortingStep.cpp
|
QueryPlan/MergeSortingStep.cpp
|
||||||
QueryPlan/MergingAggregatedStep.cpp
|
QueryPlan/MergingAggregatedStep.cpp
|
||||||
QueryPlan/MergingSortedStep.cpp
|
QueryPlan/MergingSortedStep.cpp
|
||||||
|
Loading…
Reference in New Issue
Block a user