#pragma once #include namespace DB { class ActionsDAG; using ActionsDAGPtr = std::shared_ptr; enum class TotalsMode; /// Execute HAVING and calculate totals. See TotalsHavingTransform. class TotalsHavingStep : public ITransformingStep { public: TotalsHavingStep( const DataStream & input_stream_, bool overflow_row_, const ActionsDAGPtr & actions_dag_, const std::string & filter_column_, TotalsMode totals_mode_, double auto_include_threshold_, bool final_); String getName() const override { return "TotalsHaving"; } void transformPipeline(QueryPipeline & pipeline, const BuildQueryPipelineSettings & settings) override; void describeActions(JSONBuilder::JSONMap & map) const override; void describeActions(FormatSettings & settings) const override; const ActionsDAGPtr & getActions() const { return actions_dag; } private: bool overflow_row; ActionsDAGPtr actions_dag; String filter_column_name; TotalsMode totals_mode; double auto_include_threshold; bool final; }; }