Weijun-H commented on code in PR #8516:
URL: https://github.com/apache/arrow-datafusion/pull/8516#discussion_r1428957052


##########
datafusion/sqllogictest/test_files/array.slt:
##########
@@ -3037,6 +3043,16 @@ select array_intersect([], []);
 ----
 []
 
+query ?
+select array_intersect([1, 1, 2, 2, 3, 3], null);
+----
+[1, 2, 3]
+
+query ?
+select array_intersect(null, [1, 1, 2, 2, 3, 3]);
+----
+[1, 2, 3]

Review Comment:
   I tried to return empty array for array_intersect, but met this panic.
   
   ``` bash
   
[/Users/huangweijun/Desktop/rust/arrow-datafusion/datafusion/physical-expr/src/array_expressions.rs:1641]
 new_empty_array(array1.data_type()).data_type() = List(
       Field {
           name: "item",
           data_type: Int64,
           nullable: true,
           dict_id: 0,
           dict_is_ordered: false,
           metadata: {},
       },
   )
   thread 'main' panicked at 'index out of bounds: the len is 1 but the index 
is 1', 
/Users/huangweijun/.cargo/registry/src/index.crates.io-6f17d22bba15001f/arrow-array-49.0.0/src/array/list_array.rs:289:19
   stack backtrace:
      0: rust_begin_unwind
                at 
/rustc/5680fa18feaa87f3ff04063800aec256c3d4b4be/library/std/src/panicking.rs:593:5
      1: core::panicking::panic_fmt
                at 
/rustc/5680fa18feaa87f3ff04063800aec256c3d4b4be/library/core/src/panicking.rs:67:14
      2: core::panicking::panic_bounds_check
                at 
/rustc/5680fa18feaa87f3ff04063800aec256c3d4b4be/library/core/src/panicking.rs:162:5
      3: arrow_array::array::list_array::GenericListArray<OffsetSize>::value
                at 
/Users/huangweijun/.cargo/registry/src/index.crates.io-6f17d22bba15001f/arrow-array-49.0.0/src/array/list_array.rs:289:19
      4: datafusion_common::scalar::ScalarValue::try_from_array
                at 
/Users/huangweijun/Desktop/rust/arrow-datafusion/datafusion/common/src/scalar.rs:2147:36
      5: 
datafusion_physical_expr::functions::make_scalar_function_with_hints::{{closure}}::{{closure}}
                at 
/Users/huangweijun/Desktop/rust/arrow-datafusion/datafusion/physical-expr/src/functions.rs:248:48
      6: core::result::Result<T,E>::and_then
                at 
/rustc/5680fa18feaa87f3ff04063800aec256c3d4b4be/library/core/src/result.rs:1319:22
      7: 
datafusion_physical_expr::functions::make_scalar_function_with_hints::{{closure}}
                at 
/Users/huangweijun/Desktop/rust/arrow-datafusion/datafusion/physical-expr/src/functions.rs:248:26
      8: datafusion_physical_expr::functions::create_physical_fun::{{closure}}
                at 
/Users/huangweijun/Desktop/rust/arrow-datafusion/datafusion/physical-expr/src/functions.rs:414:13
      9: <datafusion_physical_expr::scalar_function::ScalarFunctionExpr as 
datafusion_physical_expr::physical_expr::PhysicalExpr>::evaluate
                at 
/Users/huangweijun/Desktop/rust/arrow-datafusion/datafusion/physical-expr/src/scalar_function.rs:161:9
     10: 
datafusion_optimizer::simplify_expressions::expr_simplifier::ConstEvaluator::evaluate_to_scalar
                at 
/Users/huangweijun/Desktop/rust/arrow-datafusion/datafusion/optimizer/src/simplify_expressions/expr_simplifier.rs:390:23
     11: 
<datafusion_optimizer::simplify_expressions::expr_simplifier::ConstEvaluator as 
datafusion_common::tree_node::TreeNodeRewriter>::mutate
                at 
/Users/huangweijun/Desktop/rust/arrow-datafusion/datafusion/optimizer/src/simplify_expressions/expr_simplifier.rs:284:44
     12: datafusion_common::tree_node::TreeNode::rewrite
                at 
/Users/huangweijun/Desktop/rust/arrow-datafusion/datafusion/common/src/tree_node.rs:205:13
     13: 
datafusion_optimizer::simplify_expressions::expr_simplifier::ExprSimplifier<S>::simplify
                at 
/Users/huangweijun/Desktop/rust/arrow-datafusion/datafusion/optimizer/src/simplify_expressions/expr_simplifier.rs:142:9
     14: 
datafusion_optimizer::simplify_expressions::simplify_exprs::SimplifyExpressions::optimize_internal::{{closure}}
                at 
/Users/huangweijun/Desktop/rust/arrow-datafusion/datafusion/optimizer/src/simplify_expressions/simplify_exprs.rs:102:29
     15: core::iter::adapters::map::map_try_fold::{{closure}}
                at 
/rustc/5680fa18feaa87f3ff04063800aec256c3d4b4be/library/core/src/iter/adapters/map.rs:91:28
     16: core::iter::traits::iterator::Iterator::try_fold
                at 
/rustc/5680fa18feaa87f3ff04063800aec256c3d4b4be/library/core/src/iter/traits/iterator.rs:2303:21
     17: <core::iter::adapters::map::Map<I,F> as 
core::iter::traits::iterator::Iterator>::try_fold
                at 
/rustc/5680fa18feaa87f3ff04063800aec256c3d4b4be/library/core/src/iter/adapters/map.rs:117:9
     18: <core::iter::adapters::GenericShunt<I,R> as 
core::iter::traits::iterator::Iterator>::try_fold
                at 
/rustc/5680fa18feaa87f3ff04063800aec256c3d4b4be/library/core/src/iter/adapters/mod.rs:195:9
     19: <I as 
alloc::vec::in_place_collect::SpecInPlaceCollect<T,I>>::collect_in_place
                at 
/rustc/5680fa18feaa87f3ff04063800aec256c3d4b4be/library/alloc/src/vec/in_place_collect.rs:258:13
     20: alloc::vec::in_place_collect::<impl 
alloc::vec::spec_from_iter::SpecFromIter<T,I> for alloc::vec::Vec<T>>::from_iter
                at 
/rustc/5680fa18feaa87f3ff04063800aec256c3d4b4be/library/alloc/src/vec/in_place_collect.rs:182:28
     21: <alloc::vec::Vec<T> as 
core::iter::traits::collect::FromIterator<T>>::from_iter
                at 
/rustc/5680fa18feaa87f3ff04063800aec256c3d4b4be/library/alloc/src/vec/mod.rs:2696:9
     22: core::iter::traits::iterator::Iterator::collect
                at 
/rustc/5680fa18feaa87f3ff04063800aec256c3d4b4be/library/core/src/iter/traits/iterator.rs:1895:9
     23: <core::result::Result<V,E> as 
core::iter::traits::collect::FromIterator<core::result::Result<A,E>>>::from_iter::{{closure}}
                at 
/rustc/5680fa18feaa87f3ff04063800aec256c3d4b4be/library/core/src/result.rs:1932:51
     24: core::iter::adapters::try_process
                at 
/rustc/5680fa18feaa87f3ff04063800aec256c3d4b4be/library/core/src/iter/adapters/mod.rs:164:17
     25: <core::result::Result<V,E> as 
core::iter::traits::collect::FromIterator<core::result::Result<A,E>>>::from_iter
                at 
/rustc/5680fa18feaa87f3ff04063800aec256c3d4b4be/library/core/src/result.rs:1932:9
     26: core::iter::traits::iterator::Iterator::collect
                at 
/rustc/5680fa18feaa87f3ff04063800aec256c3d4b4be/library/core/src/iter/traits/iterator.rs:1895:9
     27: 
datafusion_optimizer::simplify_expressions::simplify_exprs::SimplifyExpressions::optimize_internal
                at 
/Users/huangweijun/Desktop/rust/arrow-datafusion/datafusion/optimizer/src/simplify_expressions/simplify_exprs.rs:96:20
     28: 
<datafusion_optimizer::simplify_expressions::simplify_exprs::SimplifyExpressions
 as datafusion_optimizer::optimizer::OptimizerRule>::try_optimize
                at 
/Users/huangweijun/Desktop/rust/arrow-datafusion/datafusion/optimizer/src/simplify_expressions/simplify_exprs.rs:57:17
     29: datafusion_optimizer::optimizer::Optimizer::optimize_recursively
                at 
/Users/huangweijun/Desktop/rust/arrow-datafusion/datafusion/optimizer/src/optimizer.rs:419:18
     30: datafusion_optimizer::optimizer::Optimizer::optimize
                at 
/Users/huangweijun/Desktop/rust/arrow-datafusion/datafusion/optimizer/src/optimizer.rs:294:21
     31: datafusion::execution::context::SessionState::optimize
                at 
/Users/huangweijun/Desktop/rust/arrow-datafusion/datafusion/core/src/execution/context/mod.rs:1791:13
     32: 
datafusion::execution::context::SessionState::create_physical_plan::{{closure}}
                at 
/Users/huangweijun/Desktop/rust/arrow-datafusion/datafusion/core/src/execution/context/mod.rs:1806:28
     33: datafusion::dataframe::DataFrame::create_physical_plan::{{closure}}
                at 
/Users/huangweijun/Desktop/rust/arrow-datafusion/datafusion/core/src/dataframe/mod.rs:154:61
     34: datafusion::dataframe::DataFrame::collect::{{closure}}
                at 
/Users/huangweijun/Desktop/rust/arrow-datafusion/datafusion/core/src/dataframe/mod.rs:758:48
     35: datafusion_cli::exec::exec_and_print::{{closure}}
                at ./src/exec.rs:231:36
     36: datafusion_cli::exec::exec_from_repl::{{closure}}
                at ./src/exec.rs:168:65
     37: datafusion_cli::main::{{closure}}
                at ./src/main.rs:221:14
     38: tokio::runtime::park::CachedParkThread::block_on::{{closure}}
                at 
/Users/huangweijun/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.34.0/src/runtime/park.rs:282:63
     39: tokio::runtime::coop::with_budget
                at 
/Users/huangweijun/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.34.0/src/runtime/coop.rs:107:5
     40: tokio::runtime::coop::budget
                at 
/Users/huangweijun/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.34.0/src/runtime/coop.rs:73:5
     41: tokio::runtime::park::CachedParkThread::block_on
                at 
/Users/huangweijun/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.34.0/src/runtime/park.rs:282:31
     42: tokio::runtime::context::blocking::BlockingRegionGuard::block_on
                at 
/Users/huangweijun/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.34.0/src/runtime/context/blocking.rs:66:9
     43: 
tokio::runtime::scheduler::multi_thread::MultiThread::block_on::{{closure}}
                at 
/Users/huangweijun/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.34.0/src/runtime/scheduler/multi_thread/mod.rs:87:13
     44: tokio::runtime::context::runtime::enter_runtime
                at 
/Users/huangweijun/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.34.0/src/runtime/context/runtime.rs:65:16
     45: tokio::runtime::scheduler::multi_thread::MultiThread::block_on
                at 
/Users/huangweijun/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.34.0/src/runtime/scheduler/multi_thread/mod.rs:86:9
     46: tokio::runtime::runtime::Runtime::block_on
                at 
/Users/huangweijun/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.34.0/src/runtime/runtime.rs:350:45
     47: datafusion_cli::main
                at ./src/main.rs:215:5
     48: core::ops::function::FnOnce::call_once
                at 
/rustc/5680fa18feaa87f3ff04063800aec256c3d4b4be/library/core/src/ops/function.rs:250:5
   note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose 
backtrace.
   ```
   I am not sure it is an issue 🤔 



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to