#include #include #include #include #include #include #include #include namespace DB { StorageSystemMerges::StorageSystemMerges(const std::string & name) : name{name} { setColumns(ColumnsDescription({ { "database", std::make_shared() }, { "table", std::make_shared() }, { "elapsed", std::make_shared() }, { "progress", std::make_shared() }, { "num_parts", std::make_shared() }, { "source_part_names", std::make_shared(std::make_shared()) }, { "result_part_name", std::make_shared() }, { "total_size_bytes_compressed", std::make_shared() }, { "total_size_marks", std::make_shared() }, { "bytes_read_uncompressed", std::make_shared() }, { "rows_read", std::make_shared() }, { "bytes_written_uncompressed", std::make_shared() }, { "rows_written", std::make_shared() }, { "columns_written", std::make_shared() }, { "memory_usage", std::make_shared() }, { "thread_number", std::make_shared() }, })); } BlockInputStreams StorageSystemMerges::read( const Names & column_names, const SelectQueryInfo &, const Context & context, QueryProcessingStage::Enum & processed_stage, const size_t, const unsigned) { check(column_names); processed_stage = QueryProcessingStage::FetchColumns; MutableColumns res_columns = getSampleBlock().cloneEmptyColumns(); for (const auto & merge : context.getMergeList().get()) { size_t i = 0; res_columns[i++]->insert(merge.database); res_columns[i++]->insert(merge.table); res_columns[i++]->insert(merge.elapsed); res_columns[i++]->insert(merge.progress); res_columns[i++]->insert(merge.num_parts); res_columns[i++]->insert(merge.source_part_names); res_columns[i++]->insert(merge.result_part_name); res_columns[i++]->insert(merge.total_size_bytes_compressed); res_columns[i++]->insert(merge.total_size_marks); res_columns[i++]->insert(merge.bytes_read_uncompressed); res_columns[i++]->insert(merge.rows_read); res_columns[i++]->insert(merge.bytes_written_uncompressed); res_columns[i++]->insert(merge.rows_written); res_columns[i++]->insert(merge.columns_written); res_columns[i++]->insert(merge.memory_usage); res_columns[i++]->insert(merge.thread_number); } return BlockInputStreams(1, std::make_shared(getSampleBlock().cloneWithColumns(std::move(res_columns)))); } }