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 d26d36d567 Publish built docs triggered by
7cbc6b4383e6998b6a3a94ce1018a01e03c50be8
d26d36d567 is described below
commit d26d36d567c18e5b9b74d87423e585b661148d0e
Author: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
AuthorDate: Thu Mar 26 12:09:16 2026 +0000
Publish built docs triggered by 7cbc6b4383e6998b6a3a94ce1018a01e03c50be8
---
.../functions/adding-udfs.md.txt | 11 ------
.../library-user-guide/upgrading/54.0.0.md.txt | 44 ++++++++++++++++++++++
library-user-guide/functions/adding-udfs.html | 6 ---
library-user-guide/upgrading/54.0.0.html | 39 +++++++++++++++++++
searchindex.js | 2 +-
5 files changed, 84 insertions(+), 18 deletions(-)
diff --git a/_sources/library-user-guide/functions/adding-udfs.md.txt
b/_sources/library-user-guide/functions/adding-udfs.md.txt
index 48162d6abc..15db731ca3 100644
--- a/_sources/library-user-guide/functions/adding-udfs.md.txt
+++ b/_sources/library-user-guide/functions/adding-udfs.md.txt
@@ -98,7 +98,6 @@ impl AddOne {
/// Implement the ScalarUDFImpl trait for AddOne
impl ScalarUDFImpl for AddOne {
- fn as_any(&self) -> &dyn Any { self }
fn name(&self) -> &str { "add_one" }
fn signature(&self) -> &Signature { &self.signature }
fn return_type(&self, args: &[DataType]) -> Result<DataType> {
@@ -161,7 +160,6 @@ We now need to register the function with DataFusion so
that it can be used in t
#
# /// Implement the ScalarUDFImpl trait for AddOne
# impl ScalarUDFImpl for AddOne {
-# fn as_any(&self) -> &dyn Any { self }
# fn name(&self) -> &str { "add_one" }
# fn signature(&self) -> &Signature { &self.signature }
# fn return_type(&self, args: &[DataType]) -> Result<DataType> {
@@ -411,10 +409,6 @@ impl AsyncUpper {
/// Implement the normal ScalarUDFImpl trait for AsyncUpper
#[async_trait]
impl ScalarUDFImpl for AsyncUpper {
- fn as_any(&self) -> &dyn Any {
- self
- }
-
fn name(&self) -> &str {
"async_upper"
}
@@ -514,10 +508,6 @@ We can now transfer the async UDF into the normal scalar
using `into_scalar_udf`
#
# #[async_trait]
# impl ScalarUDFImpl for AsyncUpper {
-# fn as_any(&self) -> &dyn Any {
-# self
-# }
-#
# fn name(&self) -> &str {
# "async_upper"
# }
@@ -641,7 +631,6 @@ impl PowerFunction {
}
impl ScalarUDFImpl for PowerFunction {
- fn as_any(&self) -> &dyn Any { self }
fn name(&self) -> &str { "power" }
fn signature(&self) -> &Signature { &self.signature }
diff --git a/_sources/library-user-guide/upgrading/54.0.0.md.txt
b/_sources/library-user-guide/upgrading/54.0.0.md.txt
index 77b4fb6f71..fcc7aed293 100644
--- a/_sources/library-user-guide/upgrading/54.0.0.md.txt
+++ b/_sources/library-user-guide/upgrading/54.0.0.md.txt
@@ -122,3 +122,47 @@ stats.column_statistics[0].min_value = ...;
let mut stats = Arc::unwrap_or_clone(plan.partition_statistics(None)?);
stats.column_statistics[0].min_value = ...;
```
+
+### Remove `as_any` from `ScalarUDFImpl`
+
+Now that we have a more recent minimum version of Rust, we can take advantage
of
+trait upcasting for Scalar UDFs. This reduces the amount of boilerplate code
that
+users need to do to create a UDF. In your implementations, you can simply
remove
+this function. The below diff is an example from the associated PR
+
+```diff
+ impl ScalarUDFImpl for MyEq {
+- fn as_any(&self) -> &dyn Any {
+- self
+- }
+-
+ fn name(&self) -> &str {
+ "my_eq"
+ }
+
+ ...
+ }
+```
+
+If you have a function that is downcasting a scalar function, you can replace
+the call to `.as_any()` with `.as_ref() as &dyn Any`. For example
+
+**Before:**
+
+```rust,ignore
+let is_async = func
+ .inner()
+ .as_any()
+ .downcast_ref::<AsyncScalarUDF>()
+ .is_some();
+```
+
+**After:**
+
+```rust,ignore
+let is_async = (func
+ .inner()
+ .as_ref() as &dyn Any)
+ .downcast_ref::<AsyncScalarUDF>()
+ .is_some();
+```
diff --git a/library-user-guide/functions/adding-udfs.html
b/library-user-guide/functions/adding-udfs.html
index 5d54126d55..14cdfac78d 100644
--- a/library-user-guide/functions/adding-udfs.html
+++ b/library-user-guide/functions/adding-udfs.html
@@ -507,7 +507,6 @@ For production code, you may want to check, for example,
that <code class="docut
<span class="sd">/// Implement the ScalarUDFImpl trait for AddOne</span>
<span class="k">impl</span><span class="w"> </span><span
class="n">ScalarUDFImpl</span><span class="w"> </span><span
class="k">for</span><span class="w"> </span><span class="n">AddOne</span><span
class="w"> </span><span class="p">{</span>
-<span class="w"> </span><span class="k">fn</span><span class="w">
</span><span class="nf">as_any</span><span class="p">(</span><span
class="o">&</span><span class="bp">self</span><span class="p">)</span><span
class="w"> </span><span class="p">-></span><span class="w"> </span><span
class="kp">&</span><span class="nc">dyn</span><span class="w"> </span><span
class="n">Any</span><span class="w"> </span><span class="p">{</span><span
class="w"> </span><span class="bp">self</span>< [...]
<span class="w"> </span><span class="k">fn</span><span class="w">
</span><span class="nf">name</span><span class="p">(</span><span
class="o">&</span><span class="bp">self</span><span class="p">)</span><span
class="w"> </span><span class="p">-></span><span class="w"> </span><span
class="kp">&</span><span class="kt">str</span><span class="w"> </span><span
class="p">{</span><span class="w"> </span><span
class="s">"add_one"</span><span class="w"> </span><span class="p"
[...]
<span class="w"> </span><span class="k">fn</span><span class="w">
</span><span class="nf">signature</span><span class="p">(</span><span
class="o">&</span><span class="bp">self</span><span class="p">)</span><span
class="w"> </span><span class="p">-></span><span class="w"> </span><span
class="kp">&</span><span class="nc">Signature</span><span class="w">
</span><span class="p">{</span><span class="w"> </span><span
class="o">&</span><span class="bp">self</span><span class="p [...]
<span class="w"> </span><span class="k">fn</span><span class="w">
</span><span class="nf">return_type</span><span class="p">(</span><span
class="o">&</span><span class="bp">self</span><span class="p">,</span><span
class="w"> </span><span class="n">args</span><span class="p">:</span><span
class="w"> </span><span class="kp">&</span><span class="p">[</span><span
class="n">DataType</span><span class="p">])</span><span class="w"> </span><span
class="p">-></span><span class="w"> < [...]
@@ -684,10 +683,6 @@ UDF.</p>
<span class="sd">/// Implement the normal ScalarUDFImpl trait for
AsyncUpper</span>
<span class="cp">#[async_trait]</span>
<span class="k">impl</span><span class="w"> </span><span
class="n">ScalarUDFImpl</span><span class="w"> </span><span
class="k">for</span><span class="w"> </span><span
class="n">AsyncUpper</span><span class="w"> </span><span class="p">{</span>
-<span class="w"> </span><span class="k">fn</span><span class="w">
</span><span class="nf">as_any</span><span class="p">(</span><span
class="o">&</span><span class="bp">self</span><span class="p">)</span><span
class="w"> </span><span class="p">-></span><span class="w"> </span><span
class="kp">&</span><span class="nc">dyn</span><span class="w"> </span><span
class="n">Any</span><span class="w"> </span><span class="p">{</span>
-<span class="w"> </span><span class="bp">self</span>
-<span class="w"> </span><span class="p">}</span>
-
<span class="w"> </span><span class="k">fn</span><span class="w">
</span><span class="nf">name</span><span class="p">(</span><span
class="o">&</span><span class="bp">self</span><span class="p">)</span><span
class="w"> </span><span class="p">-></span><span class="w"> </span><span
class="kp">&</span><span class="kt">str</span><span class="w"> </span><span
class="p">{</span>
<span class="w"> </span><span class="s">"async_upper"</span>
<span class="w"> </span><span class="p">}</span>
@@ -801,7 +796,6 @@ UDF.</p>
<span class="p">}</span>
<span class="k">impl</span><span class="w"> </span><span
class="n">ScalarUDFImpl</span><span class="w"> </span><span
class="k">for</span><span class="w"> </span><span
class="n">PowerFunction</span><span class="w"> </span><span class="p">{</span>
-<span class="w"> </span><span class="k">fn</span><span class="w">
</span><span class="nf">as_any</span><span class="p">(</span><span
class="o">&</span><span class="bp">self</span><span class="p">)</span><span
class="w"> </span><span class="p">-></span><span class="w"> </span><span
class="kp">&</span><span class="nc">dyn</span><span class="w"> </span><span
class="n">Any</span><span class="w"> </span><span class="p">{</span><span
class="w"> </span><span class="bp">self</span> [...]
<span class="w"> </span><span class="k">fn</span><span class="w">
</span><span class="nf">name</span><span class="p">(</span><span
class="o">&</span><span class="bp">self</span><span class="p">)</span><span
class="w"> </span><span class="p">-></span><span class="w"> </span><span
class="kp">&</span><span class="kt">str</span><span class="w"> </span><span
class="p">{</span><span class="w"> </span><span
class="s">"power"</span><span class="w"> </span><span class="p"> [...]
<span class="w"> </span><span class="k">fn</span><span class="w">
</span><span class="nf">signature</span><span class="p">(</span><span
class="o">&</span><span class="bp">self</span><span class="p">)</span><span
class="w"> </span><span class="p">-></span><span class="w"> </span><span
class="kp">&</span><span class="nc">Signature</span><span class="w">
</span><span class="p">{</span><span class="w"> </span><span
class="o">&</span><span class="bp">self</span><span class=" [...]
diff --git a/library-user-guide/upgrading/54.0.0.html
b/library-user-guide/upgrading/54.0.0.html
index 79b873b92b..e9a51801c3 100644
--- a/library-user-guide/upgrading/54.0.0.html
+++ b/library-user-guide/upgrading/54.0.0.html
@@ -510,6 +510,44 @@ to the main branch and are awaiting release in this
version.</p>
</pre></div>
</div>
</section>
+<section id="remove-as-any-from-scalarudfimpl">
+<h3>Remove <code class="docutils literal notranslate"><span
class="pre">as_any</span></code> from <code class="docutils literal
notranslate"><span class="pre">ScalarUDFImpl</span></code><a class="headerlink"
href="#remove-as-any-from-scalarudfimpl" title="Link to this heading">#</a></h3>
+<p>Now that we have a more recent minimum version of Rust, we can take
advantage of
+trait upcasting for Scalar UDFs. This reduces the amount of boilerplate code
that
+users need to do to create a UDF. In your implementations, you can simply
remove
+this function. The below diff is an example from the associated PR</p>
+<div class="highlight-diff notranslate"><div
class="highlight"><pre><span></span><span class="w"> </span>impl ScalarUDFImpl
for MyEq {
+<span class="gd">- fn as_any(&self) -> &dyn Any {</span>
+<span class="gd">- self</span>
+<span class="gd">- }</span>
+<span class="gd">-</span>
+<span class="w"> </span> fn name(&self) -> &str {
+<span class="w"> </span> "my_eq"
+<span class="w"> </span> }
+
+<span class="w"> </span> ...
+<span class="w"> </span>}
+</pre></div>
+</div>
+<p>If you have a function that is downcasting a scalar function, you can
replace
+the call to <code class="docutils literal notranslate"><span
class="pre">.as_any()</span></code> with <code class="docutils literal
notranslate"><span class="pre">.as_ref()</span> <span class="pre">as</span>
<span class="pre">&dyn</span> <span class="pre">Any</span></code>. For
example</p>
+<p><strong>Before:</strong></p>
+<div class="highlight-rust notranslate"><div
class="highlight"><pre><span></span><span class="kd">let</span><span class="w">
</span><span class="n">is_async</span><span class="w"> </span><span
class="o">=</span><span class="w"> </span><span class="n">func</span>
+<span class="w"> </span><span class="p">.</span><span
class="n">inner</span><span class="p">()</span>
+<span class="w"> </span><span class="p">.</span><span
class="n">as_any</span><span class="p">()</span>
+<span class="w"> </span><span class="p">.</span><span
class="n">downcast_ref</span><span class="p">::</span><span
class="o"><</span><span class="n">AsyncScalarUDF</span><span
class="o">></span><span class="p">()</span>
+<span class="w"> </span><span class="p">.</span><span
class="n">is_some</span><span class="p">();</span>
+</pre></div>
+</div>
+<p><strong>After:</strong></p>
+<div class="highlight-rust notranslate"><div
class="highlight"><pre><span></span><span class="kd">let</span><span class="w">
</span><span class="n">is_async</span><span class="w"> </span><span
class="o">=</span><span class="w"> </span><span class="p">(</span><span
class="n">func</span>
+<span class="w"> </span><span class="p">.</span><span
class="n">inner</span><span class="p">()</span>
+<span class="w"> </span><span class="p">.</span><span
class="n">as_ref</span><span class="p">()</span><span class="w"> </span><span
class="k">as</span><span class="w"> </span><span class="o">&</span><span
class="k">dyn</span><span class="w"> </span><span class="n">Any</span><span
class="p">)</span>
+<span class="w"> </span><span class="p">.</span><span
class="n">downcast_ref</span><span class="p">::</span><span
class="o"><</span><span class="n">AsyncScalarUDF</span><span
class="o">></span><span class="p">()</span>
+<span class="w"> </span><span class="p">.</span><span
class="n">is_some</span><span class="p">();</span>
+</pre></div>
+</div>
+</section>
</section>
</section>
@@ -562,6 +600,7 @@ to the main branch and are awaiting release in this
version.</p>
<ul class="visible nav section-nav flex-column">
<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link"
href="#datafusion-54-0-0">DataFusion 54.0.0</a><ul class="nav section-nav
flex-column">
<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link"
href="#executionplan-apply-expressions-is-now-a-required-method"><code
class="docutils literal notranslate"><span
class="pre">ExecutionPlan::apply_expressions</span></code> is now a required
method</a></li>
+<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link"
href="#remove-as-any-from-scalarudfimpl">Remove <code class="docutils literal
notranslate"><span class="pre">as_any</span></code> from <code class="docutils
literal notranslate"><span class="pre">ScalarUDFImpl</span></code></a></li>
</ul>
</li>
</ul>
diff --git a/searchindex.js b/searchindex.js
index 1a34d82667..6eae72f552 100644
--- a/searchindex.js
+++ b/searchindex.js
@@ -1 +1 @@
-Search.setIndex({"alltitles":{"!=":[[72,"op-neq"]],"!~":[[72,"op-re-not-match"]],"!~*":[[72,"op-re-not-match-i"]],"!~~":[[72,"id19"]],"!~~*":[[72,"id20"]],"#":[[72,"op-bit-xor"]],"%":[[72,"op-modulo"]],"&":[[72,"op-bit-and"]],"(relation,
name) tuples in logical fields and logical columns are
unique":[[14,"relation-name-tuples-in-logical-fields-and-logical-columns-are-unique"]],"*":[[72,"op-multiply"]],"+":[[72,"op-plus"]],"-":[[72,"op-minus"]],"/":[[72,"op-divide"]],"1.
Array Literal Con [...]
\ No newline at end of file
+Search.setIndex({"alltitles":{"!=":[[72,"op-neq"]],"!~":[[72,"op-re-not-match"]],"!~*":[[72,"op-re-not-match-i"]],"!~~":[[72,"id19"]],"!~~*":[[72,"id20"]],"#":[[72,"op-bit-xor"]],"%":[[72,"op-modulo"]],"&":[[72,"op-bit-and"]],"(relation,
name) tuples in logical fields and logical columns are
unique":[[14,"relation-name-tuples-in-logical-fields-and-logical-columns-are-unique"]],"*":[[72,"op-multiply"]],"+":[[72,"op-plus"]],"-":[[72,"op-minus"]],"/":[[72,"op-divide"]],"1.
Array Literal Con [...]
\ No newline at end of file
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]