This is an automated email from the ASF dual-hosted git repository.
github-bot pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/datafusion.git
The following commit(s) were added to refs/heads/asf-site by this push:
new e8369855cc Publish built docs triggered by
012c1f01e6b1ad72e1c8d5419b563f1480d2198a
e8369855cc is described below
commit e8369855ccd5f1eec54cc5a13d9b071c2e324af0
Author: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
AuthorDate: Tue Mar 18 17:46:20 2025 +0000
Publish built docs triggered by 012c1f01e6b1ad72e1c8d5419b563f1480d2198a
---
_sources/library-user-guide/upgrading.md.txt | 85 ++++++++++++++++++++++++++++
library-user-guide/upgrading.html | 75 ++++++++++++++++++++++++
searchindex.js | 2 +-
3 files changed, 161 insertions(+), 1 deletion(-)
diff --git a/_sources/library-user-guide/upgrading.md.txt
b/_sources/library-user-guide/upgrading.md.txt
index 7e477d4786..d124bb7e2c 100644
--- a/_sources/library-user-guide/upgrading.md.txt
+++ b/_sources/library-user-guide/upgrading.md.txt
@@ -200,4 +200,89 @@ To include special characters (such as newlines via `\n`)
you can use an `E` lit
Elapsed 0.005 seconds.
```
+### Changes to array scalar function signatures
+
+DataFusion 46 has changed the way scalar array function signatures are
+declared. Previously, functions needed to select from a list of predefined
+signatures within the `ArrayFunctionSignature` enum. Now the signatures
+can be defined via a `Vec` of psuedo-types, which each correspond to a
+single argument. Those psuedo-types are the variants of the
+`ArrayFunctionArgument` enum and are as follows:
+
+- `Array`: An argument of type List/LargeList/FixedSizeList. All Array
+ arguments must be coercible to the same type.
+- `Element`: An argument that is coercible to the inner type of the `Array`
+ arguments.
+- `Index`: An `Int64` argument.
+
+Each of the old variants can be converted to the new format as follows:
+
+`TypeSignature::ArraySignature(ArrayFunctionSignature::ArrayAndElement)`:
+
+```rust
+
+TypeSignature::ArraySignature(ArrayFunctionSignature::Array {
+ arguments: vec![ArrayFunctionArgument::Array,
ArrayFunctionArgument::Element],
+ array_coercion: Some(ListCoercion::FixedSizedListToList),
+});
+```
+
+`TypeSignature::ArraySignature(ArrayFunctionSignature::ElementAndArray)`:
+
+```rust
+
+TypeSignature::ArraySignature(ArrayFunctionSignature::Array {
+ arguments: vec![ArrayFunctionArgument::Element,
ArrayFunctionArgument::Array],
+ array_coercion: Some(ListCoercion::FixedSizedListToList),
+});
+```
+
+`TypeSignature::ArraySignature(ArrayFunctionSignature::ArrayAndIndex)`:
+
+```rust
+
+TypeSignature::ArraySignature(ArrayFunctionSignature::Array {
+ arguments: vec![ArrayFunctionArgument::Array,
ArrayFunctionArgument::Index],
+ array_coercion: None,
+});
+```
+
+`TypeSignature::ArraySignature(ArrayFunctionSignature::ArrayAndElementAndOptionalIndex)`:
+
+```rust
+
+TypeSignature::OneOf(vec![
+ TypeSignature::ArraySignature(ArrayFunctionSignature::Array {
+ arguments: vec![ArrayFunctionArgument::Array,
ArrayFunctionArgument::Element],
+ array_coercion: None,
+ }),
+ TypeSignature::ArraySignature(ArrayFunctionSignature::Array {
+ arguments: vec![
+ ArrayFunctionArgument::Array,
+ ArrayFunctionArgument::Element,
+ ArrayFunctionArgument::Index,
+ ],
+ array_coercion: None,
+ }),
+]);
+```
+
+`TypeSignature::ArraySignature(ArrayFunctionSignature::Array)`:
+
+```rust
+
+TypeSignature::ArraySignature(ArrayFunctionSignature::Array {
+ arguments: vec![ArrayFunctionArgument::Array],
+ array_coercion: None,
+});
+```
+
+Alternatively, you can switch to using one of the following functions which
+take care of constructing the `TypeSignature` for you:
+
+- `Signature::array_and_element`
+- `Signature::array_and_element_and_optional_index`
+- `Signature::array_and_index`
+- `Signature::array`
+
[ticket]: https://github.com/apache/datafusion/issues/13286
diff --git a/library-user-guide/upgrading.html
b/library-user-guide/upgrading.html
index fbc647b543..a4179fd517 100644
--- a/library-user-guide/upgrading.html
+++ b/library-user-guide/upgrading.html
@@ -612,6 +612,11 @@
no longer automatically unescapes strings
</a>
</li>
+ <li class="toc-h3 nav-item toc-entry">
+ <a class="reference internal nav-link"
href="#changes-to-array-scalar-function-signatures">
+ Changes to array scalar function signatures
+ </a>
+ </li>
</ul>
</li>
</ul>
@@ -816,6 +821,76 @@ the following must be changed:</p>
</pre></div>
</div>
</section>
+<section id="changes-to-array-scalar-function-signatures">
+<h3>Changes to array scalar function signatures<a class="headerlink"
href="#changes-to-array-scalar-function-signatures" title="Link to this
heading">ΒΆ</a></h3>
+<p>DataFusion 46 has changed the way scalar array function signatures are
+declared. Previously, functions needed to select from a list of predefined
+signatures within the <code class="docutils literal notranslate"><span
class="pre">ArrayFunctionSignature</span></code> enum. Now the signatures
+can be defined via a <code class="docutils literal notranslate"><span
class="pre">Vec</span></code> of psuedo-types, which each correspond to a
+single argument. Those psuedo-types are the variants of the
+<code class="docutils literal notranslate"><span
class="pre">ArrayFunctionArgument</span></code> enum and are as follows:</p>
+<ul class="simple">
+<li><p><code class="docutils literal notranslate"><span
class="pre">Array</span></code>: An argument of type
List/LargeList/FixedSizeList. All Array
+arguments must be coercible to the same type.</p></li>
+<li><p><code class="docutils literal notranslate"><span
class="pre">Element</span></code>: An argument that is coercible to the inner
type of the <code class="docutils literal notranslate"><span
class="pre">Array</span></code>
+arguments.</p></li>
+<li><p><code class="docutils literal notranslate"><span
class="pre">Index</span></code>: An <code class="docutils literal
notranslate"><span class="pre">Int64</span></code> argument.</p></li>
+</ul>
+<p>Each of the old variants can be converted to the new format as follows:</p>
+<p><code class="docutils literal notranslate"><span
class="pre">TypeSignature::ArraySignature(ArrayFunctionSignature::ArrayAndElement)</span></code>:</p>
+<div class="highlight-rust notranslate"><div
class="highlight"><pre><span></span><span class="n">TypeSignature</span><span
class="p">::</span><span class="n">ArraySignature</span><span
class="p">(</span><span class="n">ArrayFunctionSignature</span><span
class="p">::</span><span class="n">Array</span><span class="w"> </span><span
class="p">{</span>
+<span class="w"> </span><span class="n">arguments</span><span
class="p">:</span><span class="w"> </span><span class="nc">vec</span><span
class="o">!</span><span class="p">[</span><span
class="n">ArrayFunctionArgument</span><span class="p">::</span><span
class="n">Array</span><span class="p">,</span><span class="w"> </span><span
class="n">ArrayFunctionArgument</span><span class="p">::</span><span
class="n">Element</span><span class="p">],</span>
+<span class="w"> </span><span class="n">array_coercion</span><span
class="p">:</span><span class="w"> </span><span class="nb">Some</span><span
class="p">(</span><span class="n">ListCoercion</span><span
class="p">::</span><span class="n">FixedSizedListToList</span><span
class="p">),</span>
+<span class="p">});</span>
+</pre></div>
+</div>
+<p><code class="docutils literal notranslate"><span
class="pre">TypeSignature::ArraySignature(ArrayFunctionSignature::ElementAndArray)</span></code>:</p>
+<div class="highlight-rust notranslate"><div
class="highlight"><pre><span></span><span class="n">TypeSignature</span><span
class="p">::</span><span class="n">ArraySignature</span><span
class="p">(</span><span class="n">ArrayFunctionSignature</span><span
class="p">::</span><span class="n">Array</span><span class="w"> </span><span
class="p">{</span>
+<span class="w"> </span><span class="n">arguments</span><span
class="p">:</span><span class="w"> </span><span class="nc">vec</span><span
class="o">!</span><span class="p">[</span><span
class="n">ArrayFunctionArgument</span><span class="p">::</span><span
class="n">Element</span><span class="p">,</span><span class="w"> </span><span
class="n">ArrayFunctionArgument</span><span class="p">::</span><span
class="n">Array</span><span class="p">],</span>
+<span class="w"> </span><span class="n">array_coercion</span><span
class="p">:</span><span class="w"> </span><span class="nb">Some</span><span
class="p">(</span><span class="n">ListCoercion</span><span
class="p">::</span><span class="n">FixedSizedListToList</span><span
class="p">),</span>
+<span class="p">});</span>
+</pre></div>
+</div>
+<p><code class="docutils literal notranslate"><span
class="pre">TypeSignature::ArraySignature(ArrayFunctionSignature::ArrayAndIndex)</span></code>:</p>
+<div class="highlight-rust notranslate"><div
class="highlight"><pre><span></span><span class="n">TypeSignature</span><span
class="p">::</span><span class="n">ArraySignature</span><span
class="p">(</span><span class="n">ArrayFunctionSignature</span><span
class="p">::</span><span class="n">Array</span><span class="w"> </span><span
class="p">{</span>
+<span class="w"> </span><span class="n">arguments</span><span
class="p">:</span><span class="w"> </span><span class="nc">vec</span><span
class="o">!</span><span class="p">[</span><span
class="n">ArrayFunctionArgument</span><span class="p">::</span><span
class="n">Array</span><span class="p">,</span><span class="w"> </span><span
class="n">ArrayFunctionArgument</span><span class="p">::</span><span
class="n">Index</span><span class="p">],</span>
+<span class="w"> </span><span class="n">array_coercion</span><span
class="p">:</span><span class="w"> </span><span class="nb">None</span><span
class="p">,</span>
+<span class="p">});</span>
+</pre></div>
+</div>
+<p><code class="docutils literal notranslate"><span
class="pre">TypeSignature::ArraySignature(ArrayFunctionSignature::ArrayAndElementAndOptionalIndex)</span></code>:</p>
+<div class="highlight-rust notranslate"><div
class="highlight"><pre><span></span><span class="n">TypeSignature</span><span
class="p">::</span><span class="n">OneOf</span><span class="p">(</span><span
class="fm">vec!</span><span class="p">[</span>
+<span class="w"> </span><span class="n">TypeSignature</span><span
class="p">::</span><span class="n">ArraySignature</span><span
class="p">(</span><span class="n">ArrayFunctionSignature</span><span
class="p">::</span><span class="n">Array</span><span class="w"> </span><span
class="p">{</span>
+<span class="w"> </span><span class="n">arguments</span><span
class="p">:</span><span class="w"> </span><span class="nc">vec</span><span
class="o">!</span><span class="p">[</span><span
class="n">ArrayFunctionArgument</span><span class="p">::</span><span
class="n">Array</span><span class="p">,</span><span class="w"> </span><span
class="n">ArrayFunctionArgument</span><span class="p">::</span><span
class="n">Element</span><span class="p">],</span>
+<span class="w"> </span><span class="n">array_coercion</span><span
class="p">:</span><span class="w"> </span><span class="nb">None</span><span
class="p">,</span>
+<span class="w"> </span><span class="p">}),</span>
+<span class="w"> </span><span class="n">TypeSignature</span><span
class="p">::</span><span class="n">ArraySignature</span><span
class="p">(</span><span class="n">ArrayFunctionSignature</span><span
class="p">::</span><span class="n">Array</span><span class="w"> </span><span
class="p">{</span>
+<span class="w"> </span><span class="n">arguments</span><span
class="p">:</span><span class="w"> </span><span class="nc">vec</span><span
class="o">!</span><span class="p">[</span>
+<span class="w"> </span><span
class="n">ArrayFunctionArgument</span><span class="p">::</span><span
class="n">Array</span><span class="p">,</span>
+<span class="w"> </span><span
class="n">ArrayFunctionArgument</span><span class="p">::</span><span
class="n">Element</span><span class="p">,</span>
+<span class="w"> </span><span
class="n">ArrayFunctionArgument</span><span class="p">::</span><span
class="n">Index</span><span class="p">,</span>
+<span class="w"> </span><span class="p">],</span>
+<span class="w"> </span><span class="n">array_coercion</span><span
class="p">:</span><span class="w"> </span><span class="nb">None</span><span
class="p">,</span>
+<span class="w"> </span><span class="p">}),</span>
+<span class="p">]);</span>
+</pre></div>
+</div>
+<p><code class="docutils literal notranslate"><span
class="pre">TypeSignature::ArraySignature(ArrayFunctionSignature::Array)</span></code>:</p>
+<div class="highlight-rust notranslate"><div
class="highlight"><pre><span></span><span class="n">TypeSignature</span><span
class="p">::</span><span class="n">ArraySignature</span><span
class="p">(</span><span class="n">ArrayFunctionSignature</span><span
class="p">::</span><span class="n">Array</span><span class="w"> </span><span
class="p">{</span>
+<span class="w"> </span><span class="n">arguments</span><span
class="p">:</span><span class="w"> </span><span class="nc">vec</span><span
class="o">!</span><span class="p">[</span><span
class="n">ArrayFunctionArgument</span><span class="p">::</span><span
class="n">Array</span><span class="p">],</span>
+<span class="w"> </span><span class="n">array_coercion</span><span
class="p">:</span><span class="w"> </span><span class="nb">None</span><span
class="p">,</span>
+<span class="p">});</span>
+</pre></div>
+</div>
+<p>Alternatively, you can switch to using one of the following functions which
+take care of constructing the <code class="docutils literal notranslate"><span
class="pre">TypeSignature</span></code> for you:</p>
+<ul class="simple">
+<li><p><code class="docutils literal notranslate"><span
class="pre">Signature::array_and_element</span></code></p></li>
+<li><p><code class="docutils literal notranslate"><span
class="pre">Signature::array_and_element_and_optional_index</span></code></p></li>
+<li><p><code class="docutils literal notranslate"><span
class="pre">Signature::array_and_index</span></code></p></li>
+<li><p><code class="docutils literal notranslate"><span
class="pre">Signature::array</span></code></p></li>
+</ul>
+</section>
</section>
</section>
diff --git a/searchindex.js b/searchindex.js
index 860af7148c..8c9aa8bf49 100644
--- a/searchindex.js
+++ b/searchindex.js
@@ -1 +1 @@
-Search.setIndex({"alltitles":{"!=":[[52,"op-neq"]],"!~":[[52,"op-re-not-match"]],"!~*":[[52,"op-re-not-match-i"]],"!~~":[[52,"id19"]],"!~~*":[[52,"id20"]],"#":[[52,"op-bit-xor"]],"%":[[52,"op-modulo"]],"&":[[52,"op-bit-and"]],"(relation,
name) tuples in logical fields and logical columns are
unique":[[12,"relation-name-tuples-in-logical-fields-and-logical-columns-are-unique"]],"*":[[52,"op-multiply"]],"+":[[52,"op-plus"]],"-":[[52,"op-minus"]],"/":[[52,"op-divide"]],"2022
Q2":[[10,"q2"]] [...]
\ No newline at end of file
+Search.setIndex({"alltitles":{"!=":[[52,"op-neq"]],"!~":[[52,"op-re-not-match"]],"!~*":[[52,"op-re-not-match-i"]],"!~~":[[52,"id19"]],"!~~*":[[52,"id20"]],"#":[[52,"op-bit-xor"]],"%":[[52,"op-modulo"]],"&":[[52,"op-bit-and"]],"(relation,
name) tuples in logical fields and logical columns are
unique":[[12,"relation-name-tuples-in-logical-fields-and-logical-columns-are-unique"]],"*":[[52,"op-multiply"]],"+":[[52,"op-plus"]],"-":[[52,"op-minus"]],"/":[[52,"op-divide"]],"2022
Q2":[[10,"q2"]] [...]
\ No newline at end of file
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]