From 3d111b8e60b97d2baf10581f4f82722138620444 Mon Sep 17 00:00:00 2001 From: Weijun-H Date: Mon, 8 Jan 2024 14:07:51 +0800 Subject: [PATCH 1/2] Fix error messages in array expressions --- .../physical-expr/src/array_expressions.rs | 34 ++++++++----------- 1 file changed, 14 insertions(+), 20 deletions(-) diff --git a/datafusion/physical-expr/src/array_expressions.rs b/datafusion/physical-expr/src/array_expressions.rs index cb4ad3ed63fe3..d1d7c7237797b 100644 --- a/datafusion/physical-expr/src/array_expressions.rs +++ b/datafusion/physical-expr/src/array_expressions.rs @@ -529,7 +529,7 @@ fn general_except( pub fn array_except(args: &[ArrayRef]) -> Result { if args.len() != 2 { - return internal_err!("array_except needs two arguments"); + return exec_err!("array_except needs two arguments"); } let array1 = &args[0]; @@ -894,7 +894,7 @@ pub fn gen_range(args: &[ArrayRef]) -> Result { as_int64_array(&args[1])?, Some(as_int64_array(&args[2])?), ), - _ => return internal_err!("gen_range expects 1 to 3 arguments"), + _ => return exec_err!("gen_range expects 1 to 3 arguments"), }; let mut values = vec![]; @@ -948,7 +948,7 @@ pub fn array_sort(args: &[ArrayRef]) -> Result { nulls_first: order_nulls_first(nulls_first)?, }) } - _ => return internal_err!("array_sort expects 1 to 3 arguments"), + _ => return exec_err!("array_sort expects 1 to 3 arguments"), }; let list_array = as_list_array(&args[0])?; @@ -994,7 +994,7 @@ fn order_desc(modifier: &str) -> Result { match modifier.to_uppercase().as_str() { "DESC" => Ok(true), "ASC" => Ok(false), - _ => internal_err!("the second parameter of array_sort expects DESC or ASC"), + _ => exec_err!("the second parameter of array_sort expects DESC or ASC"), } } @@ -1002,7 +1002,7 @@ fn order_nulls_first(modifier: &str) -> Result { match modifier.to_uppercase().as_str() { "NULLS FIRST" => Ok(true), "NULLS LAST" => Ok(false), - _ => internal_err!( + _ => exec_err!( "the third parameter of array_sort expects NULLS FIRST or NULLS LAST" ), } @@ -1208,7 +1208,7 @@ pub fn array_empty(args: &[ArrayRef]) -> Result { match array_type { DataType::List(_) => array_empty_dispatch::(&args[0]), DataType::LargeList(_) => array_empty_dispatch::(&args[0]), - _ => internal_err!("array_empty does not support type '{array_type:?}'."), + _ => exec_err!("array_empty does not support type '{array_type:?}'."), } } @@ -1598,7 +1598,7 @@ fn array_remove_internal( let list_array = array.as_list::(); general_remove::(list_array, element_array, arr_n) } - _ => internal_err!("array_remove_all expects a list array"), + array_type => exec_err!("array_remove_all does not support type '{array_type:?}'."), } } @@ -2260,10 +2260,7 @@ pub fn array_length(args: &[ArrayRef]) -> Result { match &args[0].data_type() { DataType::List(_) => array_length_dispatch::(args), DataType::LargeList(_) => array_length_dispatch::(args), - _ => internal_err!( - "array_length does not support type '{:?}'", - args[0].data_type() - ), + array_type => exec_err!("array_length does not support type '{array_type:?}'"), } } @@ -2288,11 +2285,8 @@ pub fn array_dims(args: &[ArrayRef]) -> Result { .map(compute_array_dims) .collect::>>()? } - _ => { - return exec_err!( - "array_dims does not support type '{:?}'", - args[0].data_type() - ); + array_type => { + return exec_err!("array_dims does not support type '{array_type:?}'"); } }; @@ -2441,7 +2435,7 @@ pub fn array_has_any(args: &[ArrayRef]) -> Result { DataType::LargeList(_) => { general_array_has_dispatch::(&args[0], &args[1], ComparisonType::Any) } - _ => internal_err!("array_has_any does not support type '{array_type:?}'."), + _ => exec_err!("array_has_any does not support type '{array_type:?}'."), } } @@ -2460,7 +2454,7 @@ pub fn array_has_all(args: &[ArrayRef]) -> Result { DataType::LargeList(_) => { general_array_has_dispatch::(&args[0], &args[1], ComparisonType::All) } - _ => internal_err!("array_has_all does not support type '{array_type:?}'."), + _ => exec_err!("array_has_all does not support type '{array_type:?}'."), } } @@ -2543,7 +2537,7 @@ pub fn string_to_array(args: &[ArrayRef]) -> Result { - return internal_err!( + return exec_err!( "Expect string_to_array function to take two or three parameters" ) } @@ -2611,7 +2605,7 @@ pub fn array_distinct(args: &[ArrayRef]) -> Result { let array = as_large_list_array(&args[0])?; general_array_distinct(array, field) } - _ => internal_err!("array_distinct only support list array"), + array_type => exec_err!("array_distinct does not support type '{array_type:?}'"), } } From eaf96bc0e453c8db76a23533727652278a1be974 Mon Sep 17 00:00:00 2001 From: Weijun-H Date: Mon, 8 Jan 2024 14:12:50 +0800 Subject: [PATCH 2/2] fix fmt --- datafusion/physical-expr/src/array_expressions.rs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/datafusion/physical-expr/src/array_expressions.rs b/datafusion/physical-expr/src/array_expressions.rs index d1d7c7237797b..9665116b04ab9 100644 --- a/datafusion/physical-expr/src/array_expressions.rs +++ b/datafusion/physical-expr/src/array_expressions.rs @@ -1598,7 +1598,9 @@ fn array_remove_internal( let list_array = array.as_list::(); general_remove::(list_array, element_array, arr_n) } - array_type => exec_err!("array_remove_all does not support type '{array_type:?}'."), + array_type => { + exec_err!("array_remove_all does not support type '{array_type:?}'.") + } } }