#pragma once #include #include namespace DB { class ExpressionTransform; class JoiningTransform; /// Calculates specified expression. See ExpressionTransform. class ExpressionStep : public ITransformingStep { public: explicit ExpressionStep(const Header & input_header_, ActionsDAG actions_dag_); String getName() const override { return "Expression"; } void transformPipeline(QueryPipelineBuilder & pipeline, const BuildQueryPipelineSettings & settings) override; void describeActions(FormatSettings & settings) const override; ActionsDAG & getExpression() { return actions_dag; } const ActionsDAG & getExpression() const { return actions_dag; } void describeActions(JSONBuilder::JSONMap & map) const override; private: void updateOutputHeader() override; ActionsDAG actions_dag; }; }