| 107 | } |
| 108 | |
| 109 | void logProcessorProfile(ContextPtr context, const VectorWithMemoryTracking<IProcessor::ProcessorsProfileLogInfo> & profile_infos, String pipeline_dump) |
| 110 | { |
| 111 | const Settings & settings = context->getSettingsRef(); |
| 112 | if (settings[Setting::log_processors_profiles]) |
| 113 | { |
| 114 | if (auto processors_profile_log = context->getProcessorsProfileLog()) |
| 115 | { |
| 116 | ProcessorProfileLogElement processor_elem; |
| 117 | |
| 118 | const auto time_now = std::chrono::system_clock::now(); |
| 119 | processor_elem.event_time = timeInSeconds(time_now); |
| 120 | processor_elem.event_time_microseconds = timeInMicroseconds(time_now); |
| 121 | processor_elem.initial_query_id = context->getInitialQueryId(); |
| 122 | processor_elem.query_id = context->getCurrentQueryId(); |
| 123 | |
| 124 | for (const auto & info : profile_infos) |
| 125 | { |
| 126 | processor_elem.id = info.id; |
| 127 | processor_elem.parent_ids = info.parent_ids; |
| 128 | |
| 129 | processor_elem.plan_step = info.plan_step; |
| 130 | processor_elem.plan_step_name = info.plan_step_name; |
| 131 | processor_elem.plan_step_description = info.plan_step_description; |
| 132 | processor_elem.plan_group = info.plan_group; |
| 133 | processor_elem.processor_uniq_id = info.processor_uniq_id; |
| 134 | processor_elem.step_uniq_id = info.step_uniq_id; |
| 135 | |
| 136 | processor_elem.processor_name = info.processor_name; |
| 137 | |
| 138 | processor_elem.elapsed_us = info.elapsed_us; |
| 139 | processor_elem.input_wait_elapsed_us = info.input_wait_elapsed_us; |
| 140 | processor_elem.output_wait_elapsed_us = info.output_wait_elapsed_us; |
| 141 | |
| 142 | processor_elem.input_rows = info.input_rows; |
| 143 | processor_elem.input_bytes = info.input_bytes; |
| 144 | processor_elem.output_rows = info.output_rows; |
| 145 | processor_elem.output_bytes = info.output_bytes; |
| 146 | |
| 147 | processors_profile_log->add(processor_elem); |
| 148 | } |
| 149 | } |
| 150 | auto logger = ::getLogger("ProcessorProfileLog"); |
| 151 | LOG_TEST(logger, "Processors profile log:\n{}", pipeline_dump); |
| 152 | } |
| 153 | } |
| 154 | |
| 155 | void logProcessorProfile(ContextPtr context, const Processors & processors) |
| 156 | { |
no test coverage detected