Skip to content

Commit

Permalink
fix
Browse files Browse the repository at this point in the history
Signed-off-by: jayzhan211 <[email protected]>
  • Loading branch information
jayzhan211 committed Mar 9, 2024
1 parent 99e38ab commit 970dd7d
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 43 deletions.
28 changes: 0 additions & 28 deletions datafusion/physical-expr/src/array_expressions.rs
Original file line number Diff line number Diff line change
Expand Up @@ -829,34 +829,6 @@ fn order_nulls_first(modifier: &str) -> Result<bool> {
}
}

/// Array_empty SQL function
pub fn array_empty(args: &[ArrayRef]) -> Result<ArrayRef> {
if args.len() != 1 {
return exec_err!("array_empty expects one argument");
}

if as_null_array(&args[0]).is_ok() {
// Make sure to return Boolean type.
return Ok(Arc::new(BooleanArray::new_null(args[0].len())));
}
let array_type = args[0].data_type();

match array_type {
DataType::List(_) => array_empty_dispatch::<i32>(&args[0]),
DataType::LargeList(_) => array_empty_dispatch::<i64>(&args[0]),
_ => exec_err!("array_empty does not support type '{array_type:?}'."),
}
}

fn array_empty_dispatch<O: OffsetSizeTrait>(array: &ArrayRef) -> Result<ArrayRef> {
let array = as_generic_list_array::<O>(array)?;
let builder = array
.iter()
.map(|arr| arr.map(|arr| arr.len() == arr.null_count()))
.collect::<BooleanArray>();
Ok(Arc::new(builder))
}

/// Array_repeat SQL function
pub fn array_repeat(args: &[ArrayRef]) -> Result<ArrayRef> {
if args.len() != 2 {
Expand Down
15 changes: 7 additions & 8 deletions datafusion/proto/src/logical_plan/from_proto.rs
Original file line number Diff line number Diff line change
Expand Up @@ -47,14 +47,13 @@ use datafusion_common::{
use datafusion_expr::expr::Unnest;
use datafusion_expr::window_frame::{check_window_frame, regularize_window_order_by};
use datafusion_expr::{
acosh, array_distinct, array_element,
array_except, array_intersect, array_pop_back, array_pop_front, array_position,
array_positions, array_remove, array_remove_all, array_remove_n,
array_repeat, array_replace, array_replace_all, array_replace_n, array_resize,
array_slice, array_sort, array_union, arrow_typeof, ascii, asinh, atan, atan2, atanh,
bit_length, btrim, cbrt, ceil, character_length, chr, coalesce, concat_expr,
concat_ws_expr, cos, cosh, cot, current_date, current_time, date_bin, date_part,
date_trunc, degrees, digest, ends_with, exp,
acosh, array_distinct, array_element, array_except, array_intersect, array_pop_back,
array_pop_front, array_position, array_positions, array_remove, array_remove_all,
array_remove_n, array_repeat, array_replace, array_replace_all, array_replace_n,
array_resize, array_slice, array_sort, array_union, arrow_typeof, ascii, asinh, atan,
atan2, atanh, bit_length, btrim, cbrt, ceil, character_length, chr, coalesce,
concat_expr, concat_ws_expr, cos, cosh, cot, current_date, current_time, date_bin,
date_part, date_trunc, degrees, digest, ends_with, exp,
expr::{self, InList, Sort, WindowFunction},
factorial, find_in_set, flatten, floor, from_unixtime, gcd, initcap, iszero, lcm,
left, levenshtein, ln, log, log10, log2,
Expand Down
14 changes: 7 additions & 7 deletions datafusion/proto/tests/cases/roundtrip_logical_plan.rs
Original file line number Diff line number Diff line change
Expand Up @@ -595,17 +595,17 @@ async fn roundtrip_expr_api() -> Result<()> {
make_array(vec![lit(3), lit(4)]),
]),
make_array(vec![lit(1), lit(2), lit(3)]),
array_has(array(vec![lit(1), lit(2), lit(3)]), lit(1)),
array_has(make_array(vec![lit(1), lit(2), lit(3)]), lit(1)),
array_has_all(
array(vec![lit(1), lit(2), lit(3)]),
array(vec![lit(1), lit(2)]),
make_array(vec![lit(1), lit(2), lit(3)]),
make_array(vec![lit(1), lit(2)]),
),
array_has_any(
array(vec![lit(1), lit(2), lit(3)]),
array(vec![lit(1), lit(4)]),
make_array(vec![lit(1), lit(2), lit(3)]),
make_array(vec![lit(1), lit(4)]),
),
array_empty(array(vec![lit(1), lit(2), lit(3)])),
array_length(array(vec![lit(1), lit(2), lit(3)])),
array_empty(make_array(vec![lit(1), lit(2), lit(3)])),
array_length(make_array(vec![lit(1), lit(2), lit(3)])),
];

// ensure expressions created with the expr api can be round tripped
Expand Down

0 comments on commit 970dd7d

Please sign in to comment.