ClickHouse
37 строк · 1.1 Кб
1#include <Processors/Sources/SourceFromSingleChunk.h>
2#include <DataTypes/DataTypeAggregateFunction.h>
3#include <Processors/Transforms/AggregatingTransform.h>
4
5namespace DB
6{
7
8SourceFromSingleChunk::SourceFromSingleChunk(Block header, Chunk chunk_) : ISource(std::move(header)), chunk(std::move(chunk_)) {}
9
10SourceFromSingleChunk::SourceFromSingleChunk(Block data) : ISource(data.cloneEmpty()), chunk(data.getColumns(), data.rows())
11{
12const auto & sample = getPort().getHeader();
13bool has_aggregate_functions = false;
14for (auto & type : sample.getDataTypes())
15if (typeid_cast<const DataTypeAggregateFunction *>(type.get()))
16has_aggregate_functions = true;
17
18if (has_aggregate_functions)
19{
20auto info = std::make_shared<AggregatedChunkInfo>();
21info->bucket_num = data.info.bucket_num;
22info->is_overflows = data.info.is_overflows;
23chunk.setChunkInfo(std::move(info));
24}
25}
26
27String SourceFromSingleChunk::getName() const
28{
29return "SourceFromSingleChunk";
30}
31
32Chunk SourceFromSingleChunk::generate()
33{
34return std::move(chunk);
35}
36
37}
38