#pragma once #include #include #include namespace DB { class IFunctionOverloadResolver; using FunctionOverloadResolverPtr = std::shared_ptr; class ArrayJoinAction { public: NameSet columns; bool is_left = false; bool is_unaligned = false; /// For unaligned [LEFT] ARRAY JOIN FunctionOverloadResolverPtr function_length; FunctionOverloadResolverPtr function_greatest; FunctionOverloadResolverPtr function_arrayResize; /// For LEFT ARRAY JOIN. FunctionOverloadResolverPtr function_builder; ArrayJoinAction(const NameSet & array_joined_columns_, bool array_join_is_left, ContextPtr context); void prepare(ColumnsWithTypeAndName & sample) const; void execute(Block & block); }; using ArrayJoinActionPtr = std::shared_ptr; }