This is an automated email from the ASF dual-hosted git repository. xuyang pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/master by this push: new 0b51e6d8e1 [refractor](FunctionArrayIndex) make the codes more simple 0b51e6d8e1 is described below commit 0b51e6d8e1759f27c442c15da22b77b7c982aca0 Author: camby <zhuxiaol...@baidu.com> AuthorDate: Tue Aug 22 17:48:59 2023 +0800 [refractor](FunctionArrayIndex) make the codes more simple --- be/src/vec/functions/array/function_array_index.cpp | 16 +++------------- be/src/vec/functions/array/function_array_index.h | 7 +++++-- be/src/vec/functions/function_map.cpp | 2 +- 3 files changed, 9 insertions(+), 16 deletions(-) diff --git a/be/src/vec/functions/array/function_array_index.cpp b/be/src/vec/functions/array/function_array_index.cpp index dec7236963..c153d6843f 100644 --- a/be/src/vec/functions/array/function_array_index.cpp +++ b/be/src/vec/functions/array/function_array_index.cpp @@ -21,20 +21,10 @@ namespace doris::vectorized { -struct NameArrayContains { - static constexpr auto name = "array_contains"; -}; -struct NameArrayPosition { - static constexpr auto name = "array_position"; -}; -struct NameCountEqual { - static constexpr auto name = "countequal"; -}; - void register_function_array_index(SimpleFunctionFactory& factory) { - factory.register_function<FunctionArrayIndex<ArrayContainsAction, NameArrayContains>>(); - factory.register_function<FunctionArrayIndex<ArrayPositionAction, NameArrayPosition>>(); - factory.register_function<FunctionArrayIndex<ArrayCountEqual, NameCountEqual>>(); + factory.register_function<FunctionArrayIndex<ArrayContainsAction>>(); + factory.register_function<FunctionArrayIndex<ArrayPositionAction>>(); + factory.register_function<FunctionArrayIndex<ArrayCountEqual>>(); } } // namespace doris::vectorized diff --git a/be/src/vec/functions/array/function_array_index.h b/be/src/vec/functions/array/function_array_index.h index 8e4d73687a..6da1381d9a 100644 --- a/be/src/vec/functions/array/function_array_index.h +++ b/be/src/vec/functions/array/function_array_index.h @@ -51,28 +51,31 @@ namespace doris::vectorized { struct ArrayContainsAction { using ResultType = UInt8; + static constexpr auto name = "array_contains"; static constexpr const bool resume_execution = false; static constexpr void apply(ResultType& current, size_t) noexcept { current = 1; } }; struct ArrayPositionAction { using ResultType = Int64; + static constexpr auto name = "array_position"; static constexpr const bool resume_execution = false; static constexpr void apply(ResultType& current, size_t j) noexcept { current = j + 1; } }; struct ArrayCountEqual { using ResultType = Int64; + static constexpr auto name = "countequal"; static constexpr const bool resume_execution = true; static constexpr void apply(ResultType& current, size_t j) noexcept { ++current; } }; -template <typename ConcreteAction, typename Name> +template <typename ConcreteAction> class FunctionArrayIndex : public IFunction { public: using ResultType = typename ConcreteAction::ResultType; - static constexpr auto name = Name::name; + static constexpr auto name = ConcreteAction::name; static FunctionPtr create() { return std::make_shared<FunctionArrayIndex>(); } /// Get function name. diff --git a/be/src/vec/functions/function_map.cpp b/be/src/vec/functions/function_map.cpp index 5206b4f078..3f847b4190 100644 --- a/be/src/vec/functions/function_map.cpp +++ b/be/src/vec/functions/function_map.cpp @@ -295,7 +295,7 @@ public: } private: - FunctionArrayIndex<ArrayContainsAction, FunctionMapContains<is_key>> array_contains; + FunctionArrayIndex<ArrayContainsAction> array_contains; }; template <bool is_key> --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org