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 9004eb4e48  uncomment tests (#8881)
9004eb4e48 is described below

commit 9004eb4e4851a92e9bba60f0ca027514918ba1ae
Author: Alex Huang <[email protected]>
AuthorDate: Thu Jan 18 04:26:12 2024 +0800

     uncomment tests (#8881)
---
 datafusion/common/src/scalar.rs                   |  14 ++
 datafusion/physical-expr/src/array_expressions.rs |  22 +--
 datafusion/sqllogictest/test_files/array.slt      | 166 +++++++++++-----------
 3 files changed, 108 insertions(+), 94 deletions(-)

diff --git a/datafusion/common/src/scalar.rs b/datafusion/common/src/scalar.rs
index 9cbd9e292f..20d03c7096 100644
--- a/datafusion/common/src/scalar.rs
+++ b/datafusion/common/src/scalar.rs
@@ -2957,6 +2957,20 @@ impl TryFrom<&DataType> for ScalarValue {
                 .to_owned()
                 .into(),
             ),
+            // 'ScalarValue::LargeList' contains single element `LargeListArray
+            DataType::LargeList(field) => ScalarValue::LargeList(
+                new_null_array(
+                    &DataType::LargeList(Arc::new(Field::new(
+                        "item",
+                        field.data_type().clone(),
+                        true,
+                    ))),
+                    1,
+                )
+                .as_list::<i64>()
+                .to_owned()
+                .into(),
+            ),
             DataType::Struct(fields) => ScalarValue::Struct(None, 
fields.clone()),
             DataType::Null => ScalarValue::Null,
             _ => {
diff --git a/datafusion/physical-expr/src/array_expressions.rs 
b/datafusion/physical-expr/src/array_expressions.rs
index 5b35c4b9d8..af6587631d 100644
--- a/datafusion/physical-expr/src/array_expressions.rs
+++ b/datafusion/physical-expr/src/array_expressions.rs
@@ -1074,7 +1074,9 @@ pub fn array_prepend(args: &[ArrayRef]) -> 
Result<ArrayRef> {
     }
 }
 
-fn align_array_dimensions(args: Vec<ArrayRef>) -> Result<Vec<ArrayRef>> {
+fn align_array_dimensions<O: OffsetSizeTrait>(
+    args: Vec<ArrayRef>,
+) -> Result<Vec<ArrayRef>> {
     let args_ndim = args
         .iter()
         .map(|arg| datafusion_common::utils::list_ndims(arg.data_type()))
@@ -1091,9 +1093,9 @@ fn align_array_dimensions(args: Vec<ArrayRef>) -> 
Result<Vec<ArrayRef>> {
                 for _ in 0..(max_ndim - ndim) {
                     let data_type = aligned_array.data_type().to_owned();
                     let array_lengths = vec![1; aligned_array.len()];
-                    let offsets = 
OffsetBuffer::<i32>::from_lengths(array_lengths);
+                    let offsets = 
OffsetBuffer::<O>::from_lengths(array_lengths);
 
-                    aligned_array = Arc::new(ListArray::try_new(
+                    aligned_array = Arc::new(GenericListArray::<O>::try_new(
                         Arc::new(Field::new("item", data_type, true)),
                         offsets,
                         aligned_array,
@@ -1112,13 +1114,12 @@ fn align_array_dimensions(args: Vec<ArrayRef>) -> 
Result<Vec<ArrayRef>> {
 
 // Concatenate arrays on the same row.
 fn concat_internal<O: OffsetSizeTrait>(args: &[ArrayRef]) -> Result<ArrayRef> {
-    let args = align_array_dimensions(args.to_vec())?;
+    let args = align_array_dimensions::<O>(args.to_vec())?;
 
     let list_arrays = args
         .iter()
         .map(|arg| as_generic_list_array::<O>(arg))
         .collect::<Result<Vec<_>>>()?;
-
     // Assume number of rows is the same for all arrays
     let row_count = list_arrays[0].len();
 
@@ -2733,9 +2734,11 @@ mod tests {
         let array2d_1 = Arc::new(array_into_list_array(array1d_1.clone())) as 
ArrayRef;
         let array2d_2 = Arc::new(array_into_list_array(array1d_2.clone())) as 
ArrayRef;
 
-        let res =
-            align_array_dimensions(vec![array1d_1.to_owned(), 
array2d_2.to_owned()])
-                .unwrap();
+        let res = align_array_dimensions::<i32>(vec![
+            array1d_1.to_owned(),
+            array2d_2.to_owned(),
+        ])
+        .unwrap();
 
         let expected = as_list_array(&array2d_1).unwrap();
         let expected_dim = 
datafusion_common::utils::list_ndims(array2d_1.data_type());
@@ -2748,7 +2751,8 @@ mod tests {
         let array3d_1 = Arc::new(array_into_list_array(array2d_1)) as ArrayRef;
         let array3d_2 = array_into_list_array(array2d_2.to_owned());
         let res =
-            align_array_dimensions(vec![array1d_1, 
Arc::new(array3d_2.clone())]).unwrap();
+            align_array_dimensions::<i32>(vec![array1d_1, 
Arc::new(array3d_2.clone())])
+                .unwrap();
 
         let expected = as_list_array(&array3d_1).unwrap();
         let expected_dim = 
datafusion_common::utils::list_ndims(array3d_1.data_type());
diff --git a/datafusion/sqllogictest/test_files/array.slt 
b/datafusion/sqllogictest/test_files/array.slt
index 6b45f204fe..342fcb5bec 100644
--- a/datafusion/sqllogictest/test_files/array.slt
+++ b/datafusion/sqllogictest/test_files/array.slt
@@ -107,18 +107,17 @@ AS VALUES
   (make_array(make_array(4, 5, 6), make_array(10, 11, 12), make_array(4, 9, 
8), make_array(7, 8, 9), make_array(10, 11, 12), make_array(1, 8, 7)), 
make_array(10, 11, 12), 3, make_array([[11, 12, 13], [14, 15, 16]], [[17, 18, 
19], [20, 21, 22]]), make_array(121, 131, 141))
 ;
 
-# TODO: add this when #8305 is fixed
-# statement ok
-# CREATE TABLE large_nested_arrays
-# AS
-#   SELECT
-#     arrow_cast(column1, 'LargeList(LargeList(Int64))') AS column1,
-#     arrow_cast(column2, 'LargeList(Int64)') AS column2,
-#     column3,
-#     arrow_cast(column4, 'LargeList(LargeList(List(Int64)))') AS column4,
-#     arrow_cast(column5, 'LargeList(Int64)') AS column5
-#   FROM nested_arrays
-# ;
+statement ok
+CREATE TABLE large_nested_arrays
+AS
+  SELECT
+    arrow_cast(column1, 'LargeList(LargeList(Int64))') AS column1,
+    arrow_cast(column2, 'LargeList(Int64)') AS column2,
+    column3,
+    arrow_cast(column4, 'LargeList(LargeList(List(Int64)))') AS column4,
+    arrow_cast(column5, 'LargeList(Int64)') AS column5
+  FROM nested_arrays
+;
 
 statement ok
 CREATE TABLE arrays_values
@@ -155,16 +154,15 @@ AS VALUES
   (NULL, NULL, NULL, NULL)
 ;
 
-# TODO: add this when #8305 is fixed
-# statement ok
-# CREATE TABLE large_arrays_values_v2
-# AS SELECT
-#   arrow_cast(column1, 'LargeList(Int64)') AS column1,
-#   arrow_cast(column2, 'LargeList(Int64)') AS column2,
-#   column3,
-#   arrow_cast(column4, 'LargeList(LargeList(Int64))') AS column4
-# FROM arrays_values_v2
-# ;
+statement ok
+CREATE TABLE large_arrays_values_v2
+AS SELECT
+  arrow_cast(column1, 'LargeList(Int64)') AS column1,
+  arrow_cast(column2, 'LargeList(Int64)') AS column2,
+  column3,
+  arrow_cast(column4, 'LargeList(LargeList(Int64))') AS column4
+FROM arrays_values_v2
+;
 
 statement ok
 CREATE TABLE flatten_table
@@ -1576,16 +1574,15 @@ select
 ----
 [4] [] [1, , 3, 4] [, , 1]
 
-# TODO: add this when #8305 is fixed
-# query ????
-# select
-#   array_append(arrow_cast(make_array(), 'LargeList(Null)'), 4),
-#   array_append(make_array(), null),
-#   array_append(make_array(1, null, 3), 4),
-#   array_append(make_array(null, null), 1)
-# ;
-# ----
-# [4] [] [1, , 3, 4] [, , 1]
+query ????
+select
+  array_append(arrow_cast(make_array(), 'LargeList(Null)'), 4),
+  array_append(make_array(), null),
+  array_append(make_array(1, null, 3), 4),
+  array_append(make_array(null, null), 1)
+;
+----
+[4] [] [1, , 3, 4] [, , 1]
 
 # test invalid (non-null)
 query error
@@ -1604,13 +1601,12 @@ select
 ----
 [[1, , 3], []] [[1, , 3], ]
 
-# TODO: add this when #8305 is fixed
-# query ??
-# select
-#   array_append(arrow_cast(make_array(make_array(1, null, 3), 
'LargeList(LargeList(Int64))')), arrow_cast(make_array(null), 
'LargeList(Int64)')),
-#   array_append(arrow_cast(make_array(make_array(1, null, 3), 
'LargeList(LargeList(Int64))')), null);
-# ----
-# [[1, , 3], []] [[1, , 3], ]
+query ??
+select
+  array_append(arrow_cast(make_array(make_array(1, null, 3)), 
'LargeList(LargeList(Int64))'), arrow_cast(make_array(null), 
'LargeList(Int64)')),
+  array_append(arrow_cast(make_array(make_array(1, null, 3)), 
'LargeList(LargeList(Int64))'), null);
+----
+[[1, , 3], []] [[1, , 3], ]
 
 # array_append scalar function #3
 query ???
@@ -1629,11 +1625,10 @@ select array_append(make_array([1], [2], [3]), 
make_array(4)), array_append(make
 ----
 [[1], [2], [3], [4]] [[1.0], [2.0], [3.0], [4.0]] [[h], [e], [l], [l], [o]]
 
-# TODO: add this when #8305 is fixed
-# query ???
-# select array_append(arrow_cast(make_array([1], [2], [3]), 
'LargeList(LargeList(Int64))'), arrow_cast(make_array(4), 'LargeList(Int64)')), 
array_append(arrow_cast(make_array([1.0], [2.0], [3.0]), 
'LargeList(LargeList(Float64))'), arrow_cast(make_array(4.0), 
'LargeList(Float64)')), array_append(arrow_cast(make_array(['h'], ['e'], ['l'], 
['l']), 'LargeList(LargeList(Utf8))'), arrow_cast(make_array('o'), 
'LargeList(Utf8)'));
-# ----
-# [[1], [2], [3], [4]] [[1.0], [2.0], [3.0], [4.0]] [[h], [e], [l], [l], [o]]
+query ???
+select array_append(arrow_cast(make_array([1], [2], [3]), 
'LargeList(LargeList(Int64))'), arrow_cast(make_array(4), 'LargeList(Int64)')), 
array_append(arrow_cast(make_array([1.0], [2.0], [3.0]), 
'LargeList(LargeList(Float64))'), arrow_cast(make_array(4.0), 
'LargeList(Float64)')), array_append(arrow_cast(make_array(['h'], ['e'], ['l'], 
['l']), 'LargeList(LargeList(Utf8))'), arrow_cast(make_array('o'), 
'LargeList(Utf8)'));
+----
+[[1], [2], [3], [4]] [[1.0], [2.0], [3.0], [4.0]] [[h], [e], [l], [l], [o]]
 
 # list_append scalar function #5 (function alias `array_append`)
 query ???
@@ -1700,12 +1695,11 @@ select array_append(column1, column2) from 
nested_arrays;
 [[1, 2, 3], [2, 9, 1], [7, 8, 9], [1, 2, 3], [1, 7, 4], [4, 5, 6], [7, 8, 9]]
 [[4, 5, 6], [10, 11, 12], [4, 9, 8], [7, 8, 9], [10, 11, 12], [1, 8, 7], [10, 
11, 12]]
 
-# TODO: add this when #8305 is fixed
-# query ?
-# select array_append(column1, column2) from large_nested_arrays;
-# ----
-# [[1, 2, 3], [2, 9, 1], [7, 8, 9], [1, 2, 3], [1, 7, 4], [4, 5, 6], [7, 8, 9]]
-# [[4, 5, 6], [10, 11, 12], [4, 9, 8], [7, 8, 9], [10, 11, 12], [1, 8, 7], 
[10, 11, 12]]
+query ?
+select array_append(column1, column2) from large_nested_arrays;
+----
+[[1, 2, 3], [2, 9, 1], [7, 8, 9], [1, 2, 3], [1, 7, 4], [4, 5, 6], [7, 8, 9]]
+[[4, 5, 6], [10, 11, 12], [4, 9, 8], [7, 8, 9], [10, 11, 12], [1, 8, 7], [10, 
11, 12]]
 
 # array_append with columns and scalars #1
 query ??
@@ -1737,12 +1731,11 @@ select array_append(column1, make_array(1, 11, 111)), 
array_append(make_array(ma
 [[1, 2, 3], [2, 9, 1], [7, 8, 9], [1, 2, 3], [1, 7, 4], [4, 5, 6], [1, 11, 
111]] [[1, 2, 3], [11, 12, 13], [7, 8, 9]]
 [[4, 5, 6], [10, 11, 12], [4, 9, 8], [7, 8, 9], [10, 11, 12], [1, 8, 7], [1, 
11, 111]] [[1, 2, 3], [11, 12, 13], [10, 11, 12]]
 
-# TODO: add this when #8305 is fixed
-# query ??
-# select array_append(column1, arrow_cast(make_array(1, 11, 111), 
'LargeList(Int64)')), array_append(arrow_cast(make_array(make_array(1, 2, 3), 
make_array(11, 12, 13)), 'LargeList(LargeList(Int64))'), column2) from 
large_nested_arrays;
-# ----
-# [[1, 2, 3], [2, 9, 1], [7, 8, 9], [1, 2, 3], [1, 7, 4], [4, 5, 6], [1, 11, 
111]] [[1, 2, 3], [11, 12, 13], [7, 8, 9]]
-# [[4, 5, 6], [10, 11, 12], [4, 9, 8], [7, 8, 9], [10, 11, 12], [1, 8, 7], [1, 
11, 111]] [[1, 2, 3], [11, 12, 13], [10, 11, 12]]
+query ??
+select array_append(column1, arrow_cast(make_array(1, 11, 111), 
'LargeList(Int64)')), array_append(arrow_cast(make_array(make_array(1, 2, 3), 
make_array(11, 12, 13)), 'LargeList(LargeList(Int64))'), column2) from 
large_nested_arrays;
+----
+[[1, 2, 3], [2, 9, 1], [7, 8, 9], [1, 2, 3], [1, 7, 4], [4, 5, 6], [1, 11, 
111]] [[1, 2, 3], [11, 12, 13], [7, 8, 9]]
+[[4, 5, 6], [10, 11, 12], [4, 9, 8], [7, 8, 9], [10, 11, 12], [1, 8, 7], [1, 
11, 111]] [[1, 2, 3], [11, 12, 13], [10, 11, 12]]
 
 ## array_prepend (aliases: `list_prepend`, `array_push_front`, 
`list_push_front`)
 
@@ -1816,11 +1809,12 @@ select array_prepend(make_array(1), 
make_array(make_array(2), make_array(3), mak
 ----
 [[1], [2], [3], [4]] [[1.0], [2.0], [3.0], [4.0]] [[h], [e], [l], [l], [o]]
 
-# TODO: add this when #8305 is fixed
-# query ???
-# select array_prepend(arrow_cast(make_array(1), 'LargeList(Int64)'), 
arrow_cast(make_array(make_array(2), make_array(3), make_array(4)), 
'LargeList(LargeList(Int64))')), array_prepend(arrow_cast(make_array(1.0), 
'LargeList(Float64)'), arrow_cast(make_array([2.0], [3.0], [4.0]), 
'LargeList(LargeList(Float64))')), array_prepend(arrow_cast(make_array('h'), 
'LargeList(Utf8)'), arrow_cast(make_array(['e'], ['l'], ['l'], ['o']), 
'LargeList(LargeList(Utf8))''));
-# ----
-# [[1], [2], [3], [4]] [[1.0], [2.0], [3.0], [4.0]] [[h], [e], [l], [l], [o]]
+query ???
+select array_prepend(arrow_cast(make_array(1), 'LargeList(Int64)'), 
arrow_cast(make_array(make_array(2), make_array(3), make_array(4)), 
'LargeList(LargeList(Int64))')),
+       array_prepend(arrow_cast(make_array(1.0), 'LargeList(Float64)'), 
arrow_cast(make_array([2.0], [3.0], [4.0]), 'LargeList(LargeList(Float64))')),
+       array_prepend(arrow_cast(make_array('h'), 'LargeList(Utf8)'), 
arrow_cast(make_array(['e'], ['l'], ['l'], ['o']), 
'LargeList(LargeList(Utf8))'));
+----
+[[1], [2], [3], [4]] [[1.0], [2.0], [3.0], [4.0]] [[h], [e], [l], [l], [o]]
 
 # list_prepend scalar function #5 (function alias `array_prepend`)
 query ???
@@ -1887,12 +1881,11 @@ select array_prepend(column2, column1) from 
nested_arrays;
 [[7, 8, 9], [1, 2, 3], [2, 9, 1], [7, 8, 9], [1, 2, 3], [1, 7, 4], [4, 5, 6]]
 [[10, 11, 12], [4, 5, 6], [10, 11, 12], [4, 9, 8], [7, 8, 9], [10, 11, 12], 
[1, 8, 7]]
 
-# TODO: add this when #8305 is fixed
-# query ?
-# select array_prepend(column2, column1) from large_nested_arrays;
-# ----
-# [[7, 8, 9], [1, 2, 3], [2, 9, 1], [7, 8, 9], [1, 2, 3], [1, 7, 4], [4, 5, 6]]
-# [[10, 11, 12], [4, 5, 6], [10, 11, 12], [4, 9, 8], [7, 8, 9], [10, 11, 12], 
[1, 8, 7]]
+query ?
+select array_prepend(column2, column1) from large_nested_arrays;
+----
+[[7, 8, 9], [1, 2, 3], [2, 9, 1], [7, 8, 9], [1, 2, 3], [1, 7, 4], [4, 5, 6]]
+[[10, 11, 12], [4, 5, 6], [10, 11, 12], [4, 9, 8], [7, 8, 9], [10, 11, 12], 
[1, 8, 7]]
 
 # array_prepend with columns and scalars #1
 query ??
@@ -1924,12 +1917,11 @@ select array_prepend(make_array(1, 11, 111), column1), 
array_prepend(column2, ma
 [[1, 11, 111], [1, 2, 3], [2, 9, 1], [7, 8, 9], [1, 2, 3], [1, 7, 4], [4, 5, 
6]] [[7, 8, 9], [1, 2, 3], [11, 12, 13]]
 [[1, 11, 111], [4, 5, 6], [10, 11, 12], [4, 9, 8], [7, 8, 9], [10, 11, 12], 
[1, 8, 7]] [[10, 11, 12], [1, 2, 3], [11, 12, 13]]
 
-# TODO: add this when #8305 is fixed
-# query ??
-# select array_prepend(arrow_cast(make_array(1, 11, 111), 'LargeList(Int64)'), 
column1), array_prepend(column2, arrow_cast(make_array(make_array(1, 2, 3), 
make_array(11, 12, 13)), 'LargeList(LargeList(Int64))')) from 
large_nested_arrays;
-# ----
-# [[1, 11, 111], [1, 2, 3], [2, 9, 1], [7, 8, 9], [1, 2, 3], [1, 7, 4], [4, 5, 
6]] [[7, 8, 9], [1, 2, 3], [11, 12, 13]]
-# [[1, 11, 111], [4, 5, 6], [10, 11, 12], [4, 9, 8], [7, 8, 9], [10, 11, 12], 
[1, 8, 7]] [[10, 11, 12], [1, 2, 3], [11, 12, 13]]
+query ??
+select array_prepend(arrow_cast(make_array(1, 11, 111), 'LargeList(Int64)'), 
column1), array_prepend(column2, arrow_cast(make_array(make_array(1, 2, 3), 
make_array(11, 12, 13)), 'LargeList(LargeList(Int64))')) from 
large_nested_arrays;
+----
+[[1, 11, 111], [1, 2, 3], [2, 9, 1], [7, 8, 9], [1, 2, 3], [1, 7, 4], [4, 5, 
6]] [[7, 8, 9], [1, 2, 3], [11, 12, 13]]
+[[1, 11, 111], [4, 5, 6], [10, 11, 12], [4, 9, 8], [7, 8, 9], [10, 11, 12], 
[1, 8, 7]] [[10, 11, 12], [1, 2, 3], [11, 12, 13]]
 
 ## array_repeat (aliases: `list_repeat`)
 
@@ -2372,12 +2364,11 @@ select array_position(column1, column2), 
array_position(column1, column2, column
 3 3
 2 5
 
-#TODO: add this test when #8305 is fixed
-#query II
-#select array_position(column1, column2), array_position(column1, column2, 
column3) from nested_arrays;
-#----
-#3 3
-#2 5
+query II
+select array_position(column1, column2), array_position(column1, column2, 
column3) from nested_arrays;
+----
+3 3
+2 5
 
 # array_position with columns and scalars #1
 query III
@@ -2403,12 +2394,11 @@ select array_position(make_array([1, 2, 3], [4, 5, 6], 
[11, 12, 13]), column2),
 NULL 6 4
 NULL 1 NULL
 
-#TODO: add this test when #8305 is fixed
-#query III
-#select array_position(arrow_cast(make_array([1, 2, 3], [4, 5, 6], [11, 12, 
13]), 'LargeList(List(Int64))'), column2), array_position(column1, 
make_array(4, 5, 6)), array_position(column1, make_array(1, 2, 3), 2) from 
large_nested_arrays;
-#----
-#NULL 6 4
-#NULL 1 NULL
+query III
+select array_position(arrow_cast(make_array([1, 2, 3], [4, 5, 6], [11, 12, 
13]), 'LargeList(LargeList(Int64))'), column2), array_position(column1, 
arrow_cast(make_array(4, 5, 6), 'LargeList(Int64)')), array_position(column1, 
arrow_cast(make_array(1, 2, 3), 'LargeList(Int64)'), 2) from 
large_nested_arrays;
+----
+NULL 6 4
+NULL 1 NULL
 
 ## array_positions (aliases: `list_positions`)
 
@@ -4989,6 +4979,9 @@ drop table values_without_nulls;
 statement ok
 drop table nested_arrays;
 
+statement ok
+drop table large_nested_arrays;
+
 statement ok
 drop table arrays;
 
@@ -5007,6 +5000,9 @@ drop table arrays_values;
 statement ok
 drop table arrays_values_v2;
 
+statement ok
+drop table large_arrays_values_v2;
+
 statement ok
 drop table array_has_table_1D;
 

Reply via email to