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]