ClickHouse
69 строк · 1.8 Кб
1#include <Processors/Merges/MergingSortedTransform.h>
2#include <Processors/Transforms/ColumnGathererTransform.h>
3#include <IO/WriteBuffer.h>
4
5#include <Common/logger_useful.h>
6#include <Common/formatReadable.h>
7
8namespace DB
9{
10
11MergingSortedTransform::MergingSortedTransform(
12const Block & header,
13size_t num_inputs,
14const SortDescription & description_,
15size_t max_block_size_rows,
16size_t max_block_size_bytes,
17SortingQueueStrategy sorting_queue_strategy,
18UInt64 limit_,
19bool always_read_till_end_,
20WriteBuffer * out_row_sources_buf_,
21bool quiet_,
22bool use_average_block_sizes,
23bool have_all_inputs_)
24: IMergingTransform(
25num_inputs,
26header,
27header,
28have_all_inputs_,
29limit_,
30always_read_till_end_,
31header,
32num_inputs,
33description_,
34max_block_size_rows,
35max_block_size_bytes,
36sorting_queue_strategy,
37limit_,
38out_row_sources_buf_,
39use_average_block_sizes)
40, quiet(quiet_)
41{
42}
43
44void MergingSortedTransform::onNewInput()
45{
46algorithm.addInput();
47}
48
49void MergingSortedTransform::onFinish()
50{
51if (quiet)
52return;
53
54const auto & merged_data = algorithm.getMergedData();
55
56auto log = getLogger("MergingSortedTransform");
57
58double seconds = total_stopwatch.elapsedSeconds();
59
60if (seconds == 0.0)
61LOG_DEBUG(log, "Merge sorted {} blocks, {} rows in 0 sec.", merged_data.totalChunks(), merged_data.totalMergedRows());
62else
63LOG_DEBUG(log, "Merge sorted {} blocks, {} rows in {} sec., {} rows/sec., {}/sec",
64merged_data.totalChunks(), merged_data.totalMergedRows(), seconds,
65merged_data.totalMergedRows() / seconds,
66ReadableSize(merged_data.totalAllocatedBytes() / seconds));
67}
68
69}
70