This is an automated email from the ASF dual-hosted git repository.
github-actions[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 6923d186fa Publish built docs triggered by
5cf8eef5cfd080e718208f22498e2853adf14433
6923d186fa is described below
commit 6923d186fa3d034b1c0983221a4428d2c9871c7c
Author: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
AuthorDate: Sun May 17 07:48:41 2026 +0000
Publish built docs triggered by 5cf8eef5cfd080e718208f22498e2853adf14433
---
.../library-user-guide/upgrading/54.0.0.md.txt | 67 ++++++++++++++++++++++
library-user-guide/upgrading/54.0.0.html | 66 +++++++++++++++++++++
searchindex.js | 2 +-
3 files changed, 134 insertions(+), 1 deletion(-)
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 46b768e834..0117a776b2 100644
--- a/_sources/library-user-guide/upgrading/54.0.0.md.txt
+++ b/_sources/library-user-guide/upgrading/54.0.0.md.txt
@@ -25,6 +25,73 @@
in this section pertains to features and changes that have already been merged
to the main branch and are awaiting release in this version.
+### `AggregateFunctionExpr::human_display()` now returns `Option<&str>`
+
+`datafusion_physical_expr::aggregate::AggregateFunctionExpr::human_display()`
+now returns `Option<&str>` instead of `&str`.
+
+If your code read the display text directly, handle the `None` case and fall
+back to `name()` when needed:
+
+```rust
+let display = agg_expr.human_display().unwrap_or(agg_expr.name());
+```
+
+### Aggregate logical-to-physical lowering helpers are deprecated
+
+`create_aggregate_expr_with_name_and_maybe_filter` and
+`create_aggregate_expr_and_maybe_filter` are deprecated. Use
+`datafusion_physical_expr::aggregate::LoweredAggregateBuilder` for new code
that
+lowers a logical aggregate `Expr` into an `AggregateFunctionExpr`, filter, and
+order-by expressions.
+
+For example:
+
+```rust
+let lowered = LoweredAggregateBuilder::new(
+ expr,
+ logical_input_schema,
+ physical_input_schema,
+ execution_props,
+)
+.build()?;
+```
+
+`LoweredAggregateBuilder` returns a `LoweredAggregate` containing the aggregate
+physical expression, optional filter, and order-by expressions.
+
+### `Expr::unalias_nested()` preserves aliases with metadata
+
+`Expr::unalias_nested()` no longer removes aliases that carry non-empty
+`FieldMetadata`. This preserves user-provided output field metadata. Code that
+needs to remove all aliases, including aliases with metadata, should unwrap
+`Expr::Alias` explicitly.
+
+### Physical aggregate proto display may contain encoded alias data
+
+`PhysicalAggregateExprNode.human_display` may now contain an internal encoded
+prefix when an aggregate display has a separate output alias. DataFusion
decodes
+this when reading physical plans. Older readers that do not know this encoding
+may show the prefix text directly in diagnostics.
+
+### Physical `EXPLAIN` now shows lowered aggregate execution forms
+
+Physical `EXPLAIN` output is intended for diagnostics and may change between
+DataFusion versions. This release changes aggregate expression formatting in
+physical plans to show the lowered expression executed by the engine while
+keeping the visible output alias.
+
+Examples:
+
+- `count(*)` may now appear as `count(1) as count(*)`
+- simplified aggregates may show the lowered implementation, such as
+ `min(...) as percentile_cont(...)`
+- internal aggregate aliases may now show the underlying expression instead of
+ only the alias name
+
+Tests or diagnostics that compare physical `EXPLAIN` output exactly may need
+to update their expected strings.
+
### String/numeric comparison coercion now prefers numeric types
Previously, comparing a numeric column with a string value (e.g.,
diff --git a/library-user-guide/upgrading/54.0.0.html
b/library-user-guide/upgrading/54.0.0.html
index 5ab3044a42..89ee8aee21 100644
--- a/library-user-guide/upgrading/54.0.0.html
+++ b/library-user-guide/upgrading/54.0.0.html
@@ -435,6 +435,67 @@
<p><strong>Note:</strong> DataFusion <code class="docutils literal
notranslate"><span class="pre">54.0.0</span></code> has not been released yet.
The information provided
in this section pertains to features and changes that have already been merged
to the main branch and are awaiting release in this version.</p>
+<section id="aggregatefunctionexpr-human-display-now-returns-option-str">
+<h3><code class="docutils literal notranslate"><span
class="pre">AggregateFunctionExpr::human_display()</span></code> now returns
<code class="docutils literal notranslate"><span
class="pre">Option<&str></span></code><a class="headerlink"
href="#aggregatefunctionexpr-human-display-now-returns-option-str" title="Link
to this heading">#</a></h3>
+<p><code class="docutils literal notranslate"><span
class="pre">datafusion_physical_expr::aggregate::AggregateFunctionExpr::human_display()</span></code>
+now returns <code class="docutils literal notranslate"><span
class="pre">Option<&str></span></code> instead of <code
class="docutils literal notranslate"><span
class="pre">&str</span></code>.</p>
+<p>If your code read the display text directly, handle the <code
class="docutils literal notranslate"><span class="pre">None</span></code> case
and fall
+back to <code class="docutils literal notranslate"><span
class="pre">name()</span></code> when needed:</p>
+<div class="highlight-rust notranslate"><div
class="highlight"><pre><span></span><span class="kd">let</span><span class="w">
</span><span class="n">display</span><span class="w"> </span><span
class="o">=</span><span class="w"> </span><span class="n">agg_expr</span><span
class="p">.</span><span class="n">human_display</span><span
class="p">().</span><span class="n">unwrap_or</span><span
class="p">(</span><span class="n">agg_expr</span><span class="p">.</span><span
class="n">name</span><sp [...]
+</pre></div>
+</div>
+</section>
+<section id="aggregate-logical-to-physical-lowering-helpers-are-deprecated">
+<h3>Aggregate logical-to-physical lowering helpers are deprecated<a
class="headerlink"
href="#aggregate-logical-to-physical-lowering-helpers-are-deprecated"
title="Link to this heading">#</a></h3>
+<p><code class="docutils literal notranslate"><span
class="pre">create_aggregate_expr_with_name_and_maybe_filter</span></code> and
+<code class="docutils literal notranslate"><span
class="pre">create_aggregate_expr_and_maybe_filter</span></code> are
deprecated. Use
+<code class="docutils literal notranslate"><span
class="pre">datafusion_physical_expr::aggregate::LoweredAggregateBuilder</span></code>
for new code that
+lowers a logical aggregate <code class="docutils literal notranslate"><span
class="pre">Expr</span></code> into an <code class="docutils literal
notranslate"><span class="pre">AggregateFunctionExpr</span></code>, filter, and
+order-by expressions.</p>
+<p>For example:</p>
+<div class="highlight-rust notranslate"><div
class="highlight"><pre><span></span><span class="kd">let</span><span class="w">
</span><span class="n">lowered</span><span class="w"> </span><span
class="o">=</span><span class="w"> </span><span
class="n">LoweredAggregateBuilder</span><span class="p">::</span><span
class="n">new</span><span class="p">(</span>
+<span class="w"> </span><span class="n">expr</span><span class="p">,</span>
+<span class="w"> </span><span class="n">logical_input_schema</span><span
class="p">,</span>
+<span class="w"> </span><span class="n">physical_input_schema</span><span
class="p">,</span>
+<span class="w"> </span><span class="n">execution_props</span><span
class="p">,</span>
+<span class="p">)</span>
+<span class="p">.</span><span class="n">build</span><span
class="p">()</span><span class="o">?</span><span class="p">;</span>
+</pre></div>
+</div>
+<p><code class="docutils literal notranslate"><span
class="pre">LoweredAggregateBuilder</span></code> returns a <code
class="docutils literal notranslate"><span
class="pre">LoweredAggregate</span></code> containing the aggregate
+physical expression, optional filter, and order-by expressions.</p>
+</section>
+<section id="expr-unalias-nested-preserves-aliases-with-metadata">
+<h3><code class="docutils literal notranslate"><span
class="pre">Expr::unalias_nested()</span></code> preserves aliases with
metadata<a class="headerlink"
href="#expr-unalias-nested-preserves-aliases-with-metadata" title="Link to this
heading">#</a></h3>
+<p><code class="docutils literal notranslate"><span
class="pre">Expr::unalias_nested()</span></code> no longer removes aliases that
carry non-empty
+<code class="docutils literal notranslate"><span
class="pre">FieldMetadata</span></code>. This preserves user-provided output
field metadata. Code that
+needs to remove all aliases, including aliases with metadata, should unwrap
+<code class="docutils literal notranslate"><span
class="pre">Expr::Alias</span></code> explicitly.</p>
+</section>
+<section id="physical-aggregate-proto-display-may-contain-encoded-alias-data">
+<h3>Physical aggregate proto display may contain encoded alias data<a
class="headerlink"
href="#physical-aggregate-proto-display-may-contain-encoded-alias-data"
title="Link to this heading">#</a></h3>
+<p><code class="docutils literal notranslate"><span
class="pre">PhysicalAggregateExprNode.human_display</span></code> may now
contain an internal encoded
+prefix when an aggregate display has a separate output alias. DataFusion
decodes
+this when reading physical plans. Older readers that do not know this encoding
+may show the prefix text directly in diagnostics.</p>
+</section>
+<section id="physical-explain-now-shows-lowered-aggregate-execution-forms">
+<h3>Physical <code class="docutils literal notranslate"><span
class="pre">EXPLAIN</span></code> now shows lowered aggregate execution forms<a
class="headerlink"
href="#physical-explain-now-shows-lowered-aggregate-execution-forms"
title="Link to this heading">#</a></h3>
+<p>Physical <code class="docutils literal notranslate"><span
class="pre">EXPLAIN</span></code> output is intended for diagnostics and may
change between
+DataFusion versions. This release changes aggregate expression formatting in
+physical plans to show the lowered expression executed by the engine while
+keeping the visible output alias.</p>
+<p>Examples:</p>
+<ul class="simple">
+<li><p><code class="docutils literal notranslate"><span
class="pre">count(*)</span></code> may now appear as <code class="docutils
literal notranslate"><span class="pre">count(1)</span> <span
class="pre">as</span> <span class="pre">count(*)</span></code></p></li>
+<li><p>simplified aggregates may show the lowered implementation, such as
+<code class="docutils literal notranslate"><span class="pre">min(...)</span>
<span class="pre">as</span> <span
class="pre">percentile_cont(...)</span></code></p></li>
+<li><p>internal aggregate aliases may now show the underlying expression
instead of
+only the alias name</p></li>
+</ul>
+<p>Tests or diagnostics that compare physical <code class="docutils literal
notranslate"><span class="pre">EXPLAIN</span></code> output exactly may need
+to update their expected strings.</p>
+</section>
<section id="string-numeric-comparison-coercion-now-prefers-numeric-types">
<h3>String/numeric comparison coercion now prefers numeric types<a
class="headerlink"
href="#string-numeric-comparison-coercion-now-prefers-numeric-types"
title="Link to this heading">#</a></h3>
<p>Previously, comparing a numeric column with a string value (e.g.,
@@ -1073,6 +1134,11 @@ or <code class="docutils literal notranslate"><span
class="pre">Arc<OnceLock&
<nav id="pst-page-toc-nav" class="page-toc"
aria-labelledby="pst-page-navigation-heading-2">
<ul class="pst-show_toc_level 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="#aggregatefunctionexpr-human-display-now-returns-option-str"><code
class="docutils literal notranslate"><span
class="pre">AggregateFunctionExpr::human_display()</span></code> now returns
<code class="docutils literal notranslate"><span
class="pre">Option<&str></span></code></a></li>
+<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link"
href="#aggregate-logical-to-physical-lowering-helpers-are-deprecated">Aggregate
logical-to-physical lowering helpers are deprecated</a></li>
+<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link"
href="#expr-unalias-nested-preserves-aliases-with-metadata"><code
class="docutils literal notranslate"><span
class="pre">Expr::unalias_nested()</span></code> preserves aliases with
metadata</a></li>
+<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link"
href="#physical-aggregate-proto-display-may-contain-encoded-alias-data">Physical
aggregate proto display may contain encoded alias data</a></li>
+<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link"
href="#physical-explain-now-shows-lowered-aggregate-execution-forms">Physical
<code class="docutils literal notranslate"><span
class="pre">EXPLAIN</span></code> now shows lowered aggregate execution
forms</a></li>
<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link"
href="#string-numeric-comparison-coercion-now-prefers-numeric-types">String/numeric
comparison coercion now prefers numeric types</a></li>
<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link"
href="#castcolumnexpr-removed-in-favor-of-field-aware-castexpr"><code
class="docutils literal notranslate"><span
class="pre">CastColumnExpr</span></code> removed in favor of field-aware <code
class="docutils literal notranslate"><span
class="pre">CastExpr</span></code></a></li>
<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link"
href="#comparison-coercion-numeric-removed-replaced-by-comparison-coercion"><code
class="docutils literal notranslate"><span
class="pre">comparison_coercion_numeric</span></code> removed, replaced by
<code class="docutils literal notranslate"><span
class="pre">comparison_coercion</span></code></a></li>
diff --git a/searchindex.js b/searchindex.js
index bcabfe582c..b99ce55550 100644
--- a/searchindex.js
+++ b/searchindex.js
@@ -1 +1 @@
-Search.setIndex({"alltitles":{"!=":[[73,"op-neq"]],"!~":[[73,"op-re-not-match"]],"!~*":[[73,"op-re-not-match-i"]],"!~~":[[73,"id19"]],"!~~*":[[73,"id20"]],"#":[[73,"op-bit-xor"]],"%":[[73,"op-modulo"]],"&":[[73,"op-bit-and"]],"(relation,
name) tuples in logical fields and logical columns are
unique":[[15,"relation-name-tuples-in-logical-fields-and-logical-columns-are-unique"]],"*":[[73,"op-multiply"]],"+":[[73,"op-plus"]],"-":[[73,"op-minus"]],"/":[[73,"op-divide"]],"1.
Array Literal Con [...]
\ No newline at end of file
+Search.setIndex({"alltitles":{"!=":[[73,"op-neq"]],"!~":[[73,"op-re-not-match"]],"!~*":[[73,"op-re-not-match-i"]],"!~~":[[73,"id19"]],"!~~*":[[73,"id20"]],"#":[[73,"op-bit-xor"]],"%":[[73,"op-modulo"]],"&":[[73,"op-bit-and"]],"(relation,
name) tuples in logical fields and logical columns are
unique":[[15,"relation-name-tuples-in-logical-fields-and-logical-columns-are-unique"]],"*":[[73,"op-multiply"]],"+":[[73,"op-plus"]],"-":[[73,"op-minus"]],"/":[[73,"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]