You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@arrow.apache.org by al...@apache.org on 2023/11/29 19:07:59 UTC
(arrow-datafusion) branch main updated: Minor: Make BuiltInScalarFunction::alias a method (#8349)
This is an automated email from the ASF dual-hosted git repository.
alamb pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/arrow-datafusion.git
The following commit(s) were added to refs/heads/main by this push:
new 167b5b75a0 Minor: Make BuiltInScalarFunction::alias a method (#8349)
167b5b75a0 is described below
commit 167b5b75a06d4b5f4bb38a87de1092c6251089a2
Author: Andrew Lamb <an...@nerdnetworks.org>
AuthorDate: Wed Nov 29 14:07:52 2023 -0500
Minor: Make BuiltInScalarFunction::alias a method (#8349)
---
datafusion/expr/src/built_in_function.rs | 362 ++++++++++++++++---------------
1 file changed, 187 insertions(+), 175 deletions(-)
diff --git a/datafusion/expr/src/built_in_function.rs b/datafusion/expr/src/built_in_function.rs
index c511c752b4..53f9e850d3 100644
--- a/datafusion/expr/src/built_in_function.rs
+++ b/datafusion/expr/src/built_in_function.rs
@@ -313,8 +313,7 @@ fn name_to_function() -> &'static HashMap<&'static str, BuiltinScalarFunction> {
NAME_TO_FUNCTION_LOCK.get_or_init(|| {
let mut map = HashMap::new();
BuiltinScalarFunction::iter().for_each(|func| {
- let a = aliases(&func);
- a.iter().for_each(|&a| {
+ func.aliases().iter().for_each(|&a| {
map.insert(a, func);
});
});
@@ -330,7 +329,7 @@ fn function_to_name() -> &'static HashMap<BuiltinScalarFunction, &'static str> {
FUNCTION_TO_NAME_LOCK.get_or_init(|| {
let mut map = HashMap::new();
BuiltinScalarFunction::iter().for_each(|func| {
- map.insert(func, *aliases(&func).first().unwrap_or(&"NO_ALIAS"));
+ map.insert(func, *func.aliases().first().unwrap_or(&"NO_ALIAS"));
});
map
})
@@ -1417,188 +1416,201 @@ impl BuiltinScalarFunction {
None
}
}
-}
-fn aliases(func: &BuiltinScalarFunction) -> &'static [&'static str] {
- match func {
- BuiltinScalarFunction::Abs => &["abs"],
- BuiltinScalarFunction::Acos => &["acos"],
- BuiltinScalarFunction::Acosh => &["acosh"],
- BuiltinScalarFunction::Asin => &["asin"],
- BuiltinScalarFunction::Asinh => &["asinh"],
- BuiltinScalarFunction::Atan => &["atan"],
- BuiltinScalarFunction::Atanh => &["atanh"],
- BuiltinScalarFunction::Atan2 => &["atan2"],
- BuiltinScalarFunction::Cbrt => &["cbrt"],
- BuiltinScalarFunction::Ceil => &["ceil"],
- BuiltinScalarFunction::Cos => &["cos"],
- BuiltinScalarFunction::Cot => &["cot"],
- BuiltinScalarFunction::Cosh => &["cosh"],
- BuiltinScalarFunction::Degrees => &["degrees"],
- BuiltinScalarFunction::Exp => &["exp"],
- BuiltinScalarFunction::Factorial => &["factorial"],
- BuiltinScalarFunction::Floor => &["floor"],
- BuiltinScalarFunction::Gcd => &["gcd"],
- BuiltinScalarFunction::Isnan => &["isnan"],
- BuiltinScalarFunction::Iszero => &["iszero"],
- BuiltinScalarFunction::Lcm => &["lcm"],
- BuiltinScalarFunction::Ln => &["ln"],
- BuiltinScalarFunction::Log => &["log"],
- BuiltinScalarFunction::Log10 => &["log10"],
- BuiltinScalarFunction::Log2 => &["log2"],
- BuiltinScalarFunction::Nanvl => &["nanvl"],
- BuiltinScalarFunction::Pi => &["pi"],
- BuiltinScalarFunction::Power => &["power", "pow"],
- BuiltinScalarFunction::Radians => &["radians"],
- BuiltinScalarFunction::Random => &["random"],
- BuiltinScalarFunction::Round => &["round"],
- BuiltinScalarFunction::Signum => &["signum"],
- BuiltinScalarFunction::Sin => &["sin"],
- BuiltinScalarFunction::Sinh => &["sinh"],
- BuiltinScalarFunction::Sqrt => &["sqrt"],
- BuiltinScalarFunction::Tan => &["tan"],
- BuiltinScalarFunction::Tanh => &["tanh"],
- BuiltinScalarFunction::Trunc => &["trunc"],
+ /// Returns all names that can be used to call this function
+ pub fn aliases(&self) -> &'static [&'static str] {
+ match self {
+ BuiltinScalarFunction::Abs => &["abs"],
+ BuiltinScalarFunction::Acos => &["acos"],
+ BuiltinScalarFunction::Acosh => &["acosh"],
+ BuiltinScalarFunction::Asin => &["asin"],
+ BuiltinScalarFunction::Asinh => &["asinh"],
+ BuiltinScalarFunction::Atan => &["atan"],
+ BuiltinScalarFunction::Atanh => &["atanh"],
+ BuiltinScalarFunction::Atan2 => &["atan2"],
+ BuiltinScalarFunction::Cbrt => &["cbrt"],
+ BuiltinScalarFunction::Ceil => &["ceil"],
+ BuiltinScalarFunction::Cos => &["cos"],
+ BuiltinScalarFunction::Cot => &["cot"],
+ BuiltinScalarFunction::Cosh => &["cosh"],
+ BuiltinScalarFunction::Degrees => &["degrees"],
+ BuiltinScalarFunction::Exp => &["exp"],
+ BuiltinScalarFunction::Factorial => &["factorial"],
+ BuiltinScalarFunction::Floor => &["floor"],
+ BuiltinScalarFunction::Gcd => &["gcd"],
+ BuiltinScalarFunction::Isnan => &["isnan"],
+ BuiltinScalarFunction::Iszero => &["iszero"],
+ BuiltinScalarFunction::Lcm => &["lcm"],
+ BuiltinScalarFunction::Ln => &["ln"],
+ BuiltinScalarFunction::Log => &["log"],
+ BuiltinScalarFunction::Log10 => &["log10"],
+ BuiltinScalarFunction::Log2 => &["log2"],
+ BuiltinScalarFunction::Nanvl => &["nanvl"],
+ BuiltinScalarFunction::Pi => &["pi"],
+ BuiltinScalarFunction::Power => &["power", "pow"],
+ BuiltinScalarFunction::Radians => &["radians"],
+ BuiltinScalarFunction::Random => &["random"],
+ BuiltinScalarFunction::Round => &["round"],
+ BuiltinScalarFunction::Signum => &["signum"],
+ BuiltinScalarFunction::Sin => &["sin"],
+ BuiltinScalarFunction::Sinh => &["sinh"],
+ BuiltinScalarFunction::Sqrt => &["sqrt"],
+ BuiltinScalarFunction::Tan => &["tan"],
+ BuiltinScalarFunction::Tanh => &["tanh"],
+ BuiltinScalarFunction::Trunc => &["trunc"],
- // conditional functions
- BuiltinScalarFunction::Coalesce => &["coalesce"],
- BuiltinScalarFunction::NullIf => &["nullif"],
+ // conditional functions
+ BuiltinScalarFunction::Coalesce => &["coalesce"],
+ BuiltinScalarFunction::NullIf => &["nullif"],
- // string functions
- BuiltinScalarFunction::Ascii => &["ascii"],
- BuiltinScalarFunction::BitLength => &["bit_length"],
- BuiltinScalarFunction::Btrim => &["btrim"],
- BuiltinScalarFunction::CharacterLength => {
- &["character_length", "char_length", "length"]
- }
- BuiltinScalarFunction::Concat => &["concat"],
- BuiltinScalarFunction::ConcatWithSeparator => &["concat_ws"],
- BuiltinScalarFunction::Chr => &["chr"],
- BuiltinScalarFunction::InitCap => &["initcap"],
- BuiltinScalarFunction::Left => &["left"],
- BuiltinScalarFunction::Lower => &["lower"],
- BuiltinScalarFunction::Lpad => &["lpad"],
- BuiltinScalarFunction::Ltrim => &["ltrim"],
- BuiltinScalarFunction::OctetLength => &["octet_length"],
- BuiltinScalarFunction::Repeat => &["repeat"],
- BuiltinScalarFunction::Replace => &["replace"],
- BuiltinScalarFunction::Reverse => &["reverse"],
- BuiltinScalarFunction::Right => &["right"],
- BuiltinScalarFunction::Rpad => &["rpad"],
- BuiltinScalarFunction::Rtrim => &["rtrim"],
- BuiltinScalarFunction::SplitPart => &["split_part"],
- BuiltinScalarFunction::StringToArray => &["string_to_array", "string_to_list"],
- BuiltinScalarFunction::StartsWith => &["starts_with"],
- BuiltinScalarFunction::Strpos => &["strpos"],
- BuiltinScalarFunction::Substr => &["substr"],
- BuiltinScalarFunction::ToHex => &["to_hex"],
- BuiltinScalarFunction::Translate => &["translate"],
- BuiltinScalarFunction::Trim => &["trim"],
- BuiltinScalarFunction::Upper => &["upper"],
- BuiltinScalarFunction::Uuid => &["uuid"],
- BuiltinScalarFunction::Levenshtein => &["levenshtein"],
- BuiltinScalarFunction::SubstrIndex => &["substr_index", "substring_index"],
+ // string functions
+ BuiltinScalarFunction::Ascii => &["ascii"],
+ BuiltinScalarFunction::BitLength => &["bit_length"],
+ BuiltinScalarFunction::Btrim => &["btrim"],
+ BuiltinScalarFunction::CharacterLength => {
+ &["character_length", "char_length", "length"]
+ }
+ BuiltinScalarFunction::Concat => &["concat"],
+ BuiltinScalarFunction::ConcatWithSeparator => &["concat_ws"],
+ BuiltinScalarFunction::Chr => &["chr"],
+ BuiltinScalarFunction::InitCap => &["initcap"],
+ BuiltinScalarFunction::Left => &["left"],
+ BuiltinScalarFunction::Lower => &["lower"],
+ BuiltinScalarFunction::Lpad => &["lpad"],
+ BuiltinScalarFunction::Ltrim => &["ltrim"],
+ BuiltinScalarFunction::OctetLength => &["octet_length"],
+ BuiltinScalarFunction::Repeat => &["repeat"],
+ BuiltinScalarFunction::Replace => &["replace"],
+ BuiltinScalarFunction::Reverse => &["reverse"],
+ BuiltinScalarFunction::Right => &["right"],
+ BuiltinScalarFunction::Rpad => &["rpad"],
+ BuiltinScalarFunction::Rtrim => &["rtrim"],
+ BuiltinScalarFunction::SplitPart => &["split_part"],
+ BuiltinScalarFunction::StringToArray => {
+ &["string_to_array", "string_to_list"]
+ }
+ BuiltinScalarFunction::StartsWith => &["starts_with"],
+ BuiltinScalarFunction::Strpos => &["strpos"],
+ BuiltinScalarFunction::Substr => &["substr"],
+ BuiltinScalarFunction::ToHex => &["to_hex"],
+ BuiltinScalarFunction::Translate => &["translate"],
+ BuiltinScalarFunction::Trim => &["trim"],
+ BuiltinScalarFunction::Upper => &["upper"],
+ BuiltinScalarFunction::Uuid => &["uuid"],
+ BuiltinScalarFunction::Levenshtein => &["levenshtein"],
+ BuiltinScalarFunction::SubstrIndex => &["substr_index", "substring_index"],
- // regex functions
- BuiltinScalarFunction::RegexpMatch => &["regexp_match"],
- BuiltinScalarFunction::RegexpReplace => &["regexp_replace"],
+ // regex functions
+ BuiltinScalarFunction::RegexpMatch => &["regexp_match"],
+ BuiltinScalarFunction::RegexpReplace => &["regexp_replace"],
- // time/date functions
- BuiltinScalarFunction::Now => &["now"],
- BuiltinScalarFunction::CurrentDate => &["current_date"],
- BuiltinScalarFunction::CurrentTime => &["current_time"],
- BuiltinScalarFunction::DateBin => &["date_bin"],
- BuiltinScalarFunction::DateTrunc => &["date_trunc", "datetrunc"],
- BuiltinScalarFunction::DatePart => &["date_part", "datepart"],
- BuiltinScalarFunction::ToTimestamp => &["to_timestamp"],
- BuiltinScalarFunction::ToTimestampMillis => &["to_timestamp_millis"],
- BuiltinScalarFunction::ToTimestampMicros => &["to_timestamp_micros"],
- BuiltinScalarFunction::ToTimestampSeconds => &["to_timestamp_seconds"],
- BuiltinScalarFunction::ToTimestampNanos => &["to_timestamp_nanos"],
- BuiltinScalarFunction::FromUnixtime => &["from_unixtime"],
+ // time/date functions
+ BuiltinScalarFunction::Now => &["now"],
+ BuiltinScalarFunction::CurrentDate => &["current_date"],
+ BuiltinScalarFunction::CurrentTime => &["current_time"],
+ BuiltinScalarFunction::DateBin => &["date_bin"],
+ BuiltinScalarFunction::DateTrunc => &["date_trunc", "datetrunc"],
+ BuiltinScalarFunction::DatePart => &["date_part", "datepart"],
+ BuiltinScalarFunction::ToTimestamp => &["to_timestamp"],
+ BuiltinScalarFunction::ToTimestampMillis => &["to_timestamp_millis"],
+ BuiltinScalarFunction::ToTimestampMicros => &["to_timestamp_micros"],
+ BuiltinScalarFunction::ToTimestampSeconds => &["to_timestamp_seconds"],
+ BuiltinScalarFunction::ToTimestampNanos => &["to_timestamp_nanos"],
+ BuiltinScalarFunction::FromUnixtime => &["from_unixtime"],
- // hashing functions
- BuiltinScalarFunction::Digest => &["digest"],
- BuiltinScalarFunction::MD5 => &["md5"],
- BuiltinScalarFunction::SHA224 => &["sha224"],
- BuiltinScalarFunction::SHA256 => &["sha256"],
- BuiltinScalarFunction::SHA384 => &["sha384"],
- BuiltinScalarFunction::SHA512 => &["sha512"],
+ // hashing functions
+ BuiltinScalarFunction::Digest => &["digest"],
+ BuiltinScalarFunction::MD5 => &["md5"],
+ BuiltinScalarFunction::SHA224 => &["sha224"],
+ BuiltinScalarFunction::SHA256 => &["sha256"],
+ BuiltinScalarFunction::SHA384 => &["sha384"],
+ BuiltinScalarFunction::SHA512 => &["sha512"],
- // encode/decode
- BuiltinScalarFunction::Encode => &["encode"],
- BuiltinScalarFunction::Decode => &["decode"],
+ // encode/decode
+ BuiltinScalarFunction::Encode => &["encode"],
+ BuiltinScalarFunction::Decode => &["decode"],
- // other functions
- BuiltinScalarFunction::ArrowTypeof => &["arrow_typeof"],
+ // other functions
+ BuiltinScalarFunction::ArrowTypeof => &["arrow_typeof"],
- // array functions
- BuiltinScalarFunction::ArrayAppend => &[
- "array_append",
- "list_append",
- "array_push_back",
- "list_push_back",
- ],
- BuiltinScalarFunction::ArrayConcat => {
- &["array_concat", "array_cat", "list_concat", "list_cat"]
- }
- BuiltinScalarFunction::ArrayDims => &["array_dims", "list_dims"],
- BuiltinScalarFunction::ArrayEmpty => &["empty"],
- BuiltinScalarFunction::ArrayElement => &[
- "array_element",
- "array_extract",
- "list_element",
- "list_extract",
- ],
- BuiltinScalarFunction::ArrayExcept => &["array_except", "list_except"],
- BuiltinScalarFunction::Flatten => &["flatten"],
- BuiltinScalarFunction::ArrayHasAll => &["array_has_all", "list_has_all"],
- BuiltinScalarFunction::ArrayHasAny => &["array_has_any", "list_has_any"],
- BuiltinScalarFunction::ArrayHas => {
- &["array_has", "list_has", "array_contains", "list_contains"]
- }
- BuiltinScalarFunction::ArrayLength => &["array_length", "list_length"],
- BuiltinScalarFunction::ArrayNdims => &["array_ndims", "list_ndims"],
- BuiltinScalarFunction::ArrayPopFront => &["array_pop_front", "list_pop_front"],
- BuiltinScalarFunction::ArrayPopBack => &["array_pop_back", "list_pop_back"],
- BuiltinScalarFunction::ArrayPosition => &[
- "array_position",
- "list_position",
- "array_indexof",
- "list_indexof",
- ],
- BuiltinScalarFunction::ArrayPositions => &["array_positions", "list_positions"],
- BuiltinScalarFunction::ArrayPrepend => &[
- "array_prepend",
- "list_prepend",
- "array_push_front",
- "list_push_front",
- ],
- BuiltinScalarFunction::ArrayRepeat => &["array_repeat", "list_repeat"],
- BuiltinScalarFunction::ArrayRemove => &["array_remove", "list_remove"],
- BuiltinScalarFunction::ArrayRemoveN => &["array_remove_n", "list_remove_n"],
- BuiltinScalarFunction::ArrayRemoveAll => &["array_remove_all", "list_remove_all"],
- BuiltinScalarFunction::ArrayReplace => &["array_replace", "list_replace"],
- BuiltinScalarFunction::ArrayReplaceN => &["array_replace_n", "list_replace_n"],
- BuiltinScalarFunction::ArrayReplaceAll => {
- &["array_replace_all", "list_replace_all"]
- }
- BuiltinScalarFunction::ArraySlice => &["array_slice", "list_slice"],
- BuiltinScalarFunction::ArrayToString => &[
- "array_to_string",
- "list_to_string",
- "array_join",
- "list_join",
- ],
- BuiltinScalarFunction::ArrayUnion => &["array_union", "list_union"],
- BuiltinScalarFunction::Cardinality => &["cardinality"],
- BuiltinScalarFunction::MakeArray => &["make_array", "make_list"],
- BuiltinScalarFunction::ArrayIntersect => &["array_intersect", "list_intersect"],
- BuiltinScalarFunction::OverLay => &["overlay"],
- BuiltinScalarFunction::Range => &["range", "generate_series"],
+ // array functions
+ BuiltinScalarFunction::ArrayAppend => &[
+ "array_append",
+ "list_append",
+ "array_push_back",
+ "list_push_back",
+ ],
+ BuiltinScalarFunction::ArrayConcat => {
+ &["array_concat", "array_cat", "list_concat", "list_cat"]
+ }
+ BuiltinScalarFunction::ArrayDims => &["array_dims", "list_dims"],
+ BuiltinScalarFunction::ArrayEmpty => &["empty"],
+ BuiltinScalarFunction::ArrayElement => &[
+ "array_element",
+ "array_extract",
+ "list_element",
+ "list_extract",
+ ],
+ BuiltinScalarFunction::ArrayExcept => &["array_except", "list_except"],
+ BuiltinScalarFunction::Flatten => &["flatten"],
+ BuiltinScalarFunction::ArrayHasAll => &["array_has_all", "list_has_all"],
+ BuiltinScalarFunction::ArrayHasAny => &["array_has_any", "list_has_any"],
+ BuiltinScalarFunction::ArrayHas => {
+ &["array_has", "list_has", "array_contains", "list_contains"]
+ }
+ BuiltinScalarFunction::ArrayLength => &["array_length", "list_length"],
+ BuiltinScalarFunction::ArrayNdims => &["array_ndims", "list_ndims"],
+ BuiltinScalarFunction::ArrayPopFront => {
+ &["array_pop_front", "list_pop_front"]
+ }
+ BuiltinScalarFunction::ArrayPopBack => &["array_pop_back", "list_pop_back"],
+ BuiltinScalarFunction::ArrayPosition => &[
+ "array_position",
+ "list_position",
+ "array_indexof",
+ "list_indexof",
+ ],
+ BuiltinScalarFunction::ArrayPositions => {
+ &["array_positions", "list_positions"]
+ }
+ BuiltinScalarFunction::ArrayPrepend => &[
+ "array_prepend",
+ "list_prepend",
+ "array_push_front",
+ "list_push_front",
+ ],
+ BuiltinScalarFunction::ArrayRepeat => &["array_repeat", "list_repeat"],
+ BuiltinScalarFunction::ArrayRemove => &["array_remove", "list_remove"],
+ BuiltinScalarFunction::ArrayRemoveN => &["array_remove_n", "list_remove_n"],
+ BuiltinScalarFunction::ArrayRemoveAll => {
+ &["array_remove_all", "list_remove_all"]
+ }
+ BuiltinScalarFunction::ArrayReplace => &["array_replace", "list_replace"],
+ BuiltinScalarFunction::ArrayReplaceN => {
+ &["array_replace_n", "list_replace_n"]
+ }
+ BuiltinScalarFunction::ArrayReplaceAll => {
+ &["array_replace_all", "list_replace_all"]
+ }
+ BuiltinScalarFunction::ArraySlice => &["array_slice", "list_slice"],
+ BuiltinScalarFunction::ArrayToString => &[
+ "array_to_string",
+ "list_to_string",
+ "array_join",
+ "list_join",
+ ],
+ BuiltinScalarFunction::ArrayUnion => &["array_union", "list_union"],
+ BuiltinScalarFunction::Cardinality => &["cardinality"],
+ BuiltinScalarFunction::MakeArray => &["make_array", "make_list"],
+ BuiltinScalarFunction::ArrayIntersect => {
+ &["array_intersect", "list_intersect"]
+ }
+ BuiltinScalarFunction::OverLay => &["overlay"],
+ BuiltinScalarFunction::Range => &["range", "generate_series"],
- // struct functions
- BuiltinScalarFunction::Struct => &["struct"],
+ // struct functions
+ BuiltinScalarFunction::Struct => &["struct"],
+ }
}
}