#include #include #include #include #include #include #include using namespace DB; using TraceDataType = TraceLogElement::TraceDataType; const TraceDataType::Values TraceLogElement::trace_values = { {"Real", static_cast(TraceType::REAL_TIME)}, {"CPU", static_cast(TraceType::CPU_TIME)}, {"Memory", static_cast(TraceType::MEMORY)}, }; Block TraceLogElement::createBlock() { return { {std::make_shared(), "event_date"}, {std::make_shared(), "event_time"}, {std::make_shared(), "revision"}, {std::make_shared(trace_values), "trace_type"}, {std::make_shared(), "thread_number"}, {std::make_shared(), "query_id"}, {std::make_shared(std::make_shared()), "trace"}, {std::make_shared(), "size"}, }; } void TraceLogElement::appendToBlock(Block & block) const { MutableColumns columns = block.mutateColumns(); size_t i = 0; columns[i++]->insert(DateLUT::instance().toDayNum(event_time)); columns[i++]->insert(event_time); columns[i++]->insert(ClickHouseRevision::get()); columns[i++]->insert(static_cast(trace_type)); columns[i++]->insert(thread_number); columns[i++]->insertData(query_id.data(), query_id.size()); columns[i++]->insert(trace); columns[i++]->insert(size); block.setColumns(std::move(columns)); }