This is an automated email from the ASF dual-hosted git repository.

github-bot pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/datafusion.git


The following commit(s) were added to refs/heads/main by this push:
     new 58bc7496bf Support FixedSizeList for array_position (#17659)
58bc7496bf is described below

commit 58bc7496bfdde37c6c1860634e0ef1d8b9b98921
Author: Jeffrey Vo <[email protected]>
AuthorDate: Sun Sep 21 22:39:31 2025 +1000

    Support FixedSizeList for array_position (#17659)
---
 datafusion/expr-common/src/signature.rs      |  4 ++--
 datafusion/sqllogictest/test_files/array.slt | 10 ++++++++++
 2 files changed, 12 insertions(+), 2 deletions(-)

diff --git a/datafusion/expr-common/src/signature.rs 
b/datafusion/expr-common/src/signature.rs
index 61585bd945..9ed39806fe 100644
--- a/datafusion/expr-common/src/signature.rs
+++ b/datafusion/expr-common/src/signature.rs
@@ -969,7 +969,7 @@ impl Signature {
                         ArrayFunctionArgument::Array,
                         ArrayFunctionArgument::Element,
                     ],
-                    array_coercion: None,
+                    array_coercion: Some(ListCoercion::FixedSizedListToList),
                 }),
                 TypeSignature::ArraySignature(ArrayFunctionSignature::Array {
                     arguments: vec![
@@ -977,7 +977,7 @@ impl Signature {
                         ArrayFunctionArgument::Element,
                         ArrayFunctionArgument::Index,
                     ],
-                    array_coercion: None,
+                    array_coercion: Some(ListCoercion::FixedSizedListToList),
                 }),
             ]),
             volatility,
diff --git a/datafusion/sqllogictest/test_files/array.slt 
b/datafusion/sqllogictest/test_files/array.slt
index e579bb68b4..75556a3b35 100644
--- a/datafusion/sqllogictest/test_files/array.slt
+++ b/datafusion/sqllogictest/test_files/array.slt
@@ -3557,6 +3557,11 @@ select array_position(arrow_cast(['h', 'e', 'l', 'l', 
'o'], 'LargeList(Utf8)'),
 ----
 3 5 1
 
+query III
+select array_position(arrow_cast(['h', 'e', 'l', 'l', 'o'], 'FixedSizeList(5, 
Utf8)'), 'l'), array_position(arrow_cast([1, 2, 3, 4, 5], 'FixedSizeList(5, 
Int64)'), 5), array_position(arrow_cast([1, 1, 1], 'FixedSizeList(3, Int64)'), 
1);
+----
+3 5 1
+
 # array_position scalar function #2 (with optional argument)
 query III
 select array_position(['h', 'e', 'l', 'l', 'o'], 'l', 4), array_position([1, 
2, 5, 4, 5], 5, 4), array_position([1, 1, 1], 1, 2);
@@ -3568,6 +3573,11 @@ select array_position(arrow_cast(['h', 'e', 'l', 'l', 
'o'], 'LargeList(Utf8)'),
 ----
 4 5 2
 
+query III
+select array_position(arrow_cast(['h', 'e', 'l', 'l', 'o'], 'FixedSizeList(5, 
Utf8)'), 'l', 4), array_position(arrow_cast([1, 2, 3, 4, 5], 'FixedSizeList(5, 
Int64)'), 5, 4), array_position(arrow_cast([1, 1, 1], 'FixedSizeList(3, 
Int64)'), 1, 2);
+----
+4 5 2
+
 # array_position scalar function #3 (element is list)
 query II
 select array_position(make_array([1, 2, 3], [4, 5, 6], [5, 5, 5], [4, 5, 6], 
[7, 8, 9]), [4, 5, 6]), array_position(make_array([1, 3, 2], [2, 3, 4], [2, 3, 
4], [5, 3, 1], [1, 3, 2]), [2, 3, 4]);


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to