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 <[email protected]>
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: [email protected]
For additional commands, e-mail: [email protected]