#pragma once #include #include namespace DB { class ArrayJoinAction; using ArrayJoinActionPtr = std::shared_ptr; class ArrayJoinStep : public ITransformingStep { public: ArrayJoinStep(const Header & input_header_, ArrayJoin array_join_, bool is_unaligned_, size_t max_block_size_); String getName() const override { return "ArrayJoin"; } void transformPipeline(QueryPipelineBuilder & pipeline, const BuildQueryPipelineSettings &) override; void describeActions(JSONBuilder::JSONMap & map) const override; void describeActions(FormatSettings & settings) const override; const Names & getColumns() const { return array_join.columns; } bool isLeft() const { return array_join.is_left; } private: void updateOutputHeader() override; ArrayJoin array_join; bool is_unaligned = false; size_t max_block_size = DEFAULT_BLOCK_SIZE; }; }