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 9fa011e028 Publish built docs triggered by 
84a22eaa327ee8ad495f53e8c32e20da81ed4d86
9fa011e028 is described below

commit 9fa011e0288217405d6d5a63518a8736006c765c
Author: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
AuthorDate: Mon Mar 9 23:35:55 2026 +0000

    Publish built docs triggered by 84a22eaa327ee8ad495f53e8c32e20da81ed4d86
---
 .../library-user-guide/upgrading/54.0.0.md.txt     | 33 +++++++++++++++++++++-
 library-user-guide/upgrading/54.0.0.html           | 26 +++++++++++++++++
 searchindex.js                                     |  2 +-
 3 files changed, 59 insertions(+), 2 deletions(-)

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 85cb8e9dd0..77b4fb6f71 100644
--- a/_sources/library-user-guide/upgrading/54.0.0.md.txt
+++ b/_sources/library-user-guide/upgrading/54.0.0.md.txt
@@ -77,7 +77,7 @@ fn apply_expressions(
 
 **Node whose only expressions are in `output_ordering()` (e.g. a synthetic 
test node with no owned expression fields):**
 
-```rust,ignore
+````rust,ignore
 fn apply_expressions(
     &self,
     f: &mut dyn FnMut(&dyn PhysicalExpr) -> Result<TreeNodeRecursion>,
@@ -90,4 +90,35 @@ fn apply_expressions(
     }
     Ok(tnr)
 }
+
+### `ExecutionPlan::partition_statistics` now returns `Arc<Statistics>`
+
+`ExecutionPlan::partition_statistics` now returns `Result<Arc<Statistics>>` 
instead of `Result<Statistics>`. This avoids cloning `Statistics` when it is 
shared across multiple consumers.
+
+**Before:**
+
+```rust,ignore
+fn partition_statistics(&self, partition: Option<usize>) -> Result<Statistics> 
{
+    Ok(Statistics::new_unknown(&self.schema()))
+}
+````
+
+**After:**
+
+```rust,ignore
+fn partition_statistics(&self, partition: Option<usize>) -> 
Result<Arc<Statistics>> {
+    Ok(Arc::new(Statistics::new_unknown(&self.schema())))
+}
+```
+
+If you need an owned `Statistics` value (e.g. to mutate it), use 
`Arc::unwrap_or_clone`:
+
+```rust,ignore
+// If you previously consumed the Statistics directly:
+let stats = plan.partition_statistics(None)?;
+stats.column_statistics[0].min_value = ...;
+
+// Now unwrap the Arc first:
+let mut stats = Arc::unwrap_or_clone(plan.partition_statistics(None)?);
+stats.column_statistics[0].min_value = ...;
 ```
diff --git a/library-user-guide/upgrading/54.0.0.html 
b/library-user-guide/upgrading/54.0.0.html
index bd93aca421..79b873b92b 100644
--- a/library-user-guide/upgrading/54.0.0.html
+++ b/library-user-guide/upgrading/54.0.0.html
@@ -481,6 +481,32 @@ to the main branch and are awaiting release in this 
version.</p>
 <span class="w">    </span><span class="p">}</span>
 <span class="w">    </span><span class="nb">Ok</span><span 
class="p">(</span><span class="n">tnr</span><span class="p">)</span>
 <span class="p">}</span>
+
+<span class="p">###</span><span class="w"> </span><span 
class="err">`</span><span class="n">ExecutionPlan</span><span 
class="p">::</span><span class="n">partition_statistics</span><span 
class="err">`</span><span class="w"> </span><span class="n">now</span><span 
class="w"> </span><span class="n">returns</span><span class="w"> </span><span 
class="err">`</span><span class="n">Arc</span><span class="o">&lt;</span><span 
class="n">Statistics</span><span class="o">&gt;</span><span class="err">`</span>
+
+<span class="err">`</span><span class="n">ExecutionPlan</span><span 
class="p">::</span><span class="n">partition_statistics</span><span 
class="err">`</span><span class="w"> </span><span class="n">now</span><span 
class="w"> </span><span class="n">returns</span><span class="w"> </span><span 
class="err">`</span><span class="nb">Result</span><span 
class="o">&lt;</span><span class="n">Arc</span><span class="o">&lt;</span><span 
class="n">Statistics</span><span class="o">&gt;&gt;</span><span cl [...]
+
+<span class="o">**</span><span class="n">Before</span><span 
class="p">:</span><span class="o">**</span>
+<span class="err">```</span><span class="n">rust</span><span 
class="p">,</span><span class="n">ignore</span>
+<span class="k">fn</span><span class="w"> </span><span 
class="nf">partition_statistics</span><span class="p">(</span><span 
class="o">&amp;</span><span class="bp">self</span><span class="p">,</span><span 
class="w"> </span><span class="n">partition</span><span class="p">:</span><span 
class="w"> </span><span class="nb">Option</span><span 
class="o">&lt;</span><span class="kt">usize</span><span 
class="o">&gt;</span><span class="p">)</span><span class="w"> </span><span 
class="p">-&gt;</span><s [...]
+<span class="w">    </span><span class="nb">Ok</span><span 
class="p">(</span><span class="n">Statistics</span><span 
class="p">::</span><span class="n">new_unknown</span><span 
class="p">(</span><span class="o">&amp;</span><span class="bp">self</span><span 
class="p">.</span><span class="n">schema</span><span class="p">()))</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="k">fn</span><span class="w"> 
</span><span class="nf">partition_statistics</span><span 
class="p">(</span><span class="o">&amp;</span><span class="bp">self</span><span 
class="p">,</span><span class="w"> </span><span class="n">partition</span><span 
class="p">:</span><span class="w"> </span><span class="nb">Option</span><span 
class="o">&lt;</span><span class="kt">usize</span><span class="o">&gt;</sp [...]
+<span class="w">    </span><span class="nb">Ok</span><span 
class="p">(</span><span class="n">Arc</span><span class="p">::</span><span 
class="n">new</span><span class="p">(</span><span 
class="n">Statistics</span><span class="p">::</span><span 
class="n">new_unknown</span><span class="p">(</span><span 
class="o">&amp;</span><span class="bp">self</span><span class="p">.</span><span 
class="n">schema</span><span class="p">())))</span>
+<span class="p">}</span>
+</pre></div>
+</div>
+<p>If you need an owned <code class="docutils literal notranslate"><span 
class="pre">Statistics</span></code> value (e.g. to mutate it), use <code 
class="docutils literal notranslate"><span 
class="pre">Arc::unwrap_or_clone</span></code>:</p>
+<div class="highlight-rust notranslate"><div 
class="highlight"><pre><span></span><span class="c1">// If you previously 
consumed the Statistics directly:</span>
+<span class="kd">let</span><span class="w"> </span><span 
class="n">stats</span><span class="w"> </span><span class="o">=</span><span 
class="w"> </span><span class="n">plan</span><span class="p">.</span><span 
class="n">partition_statistics</span><span class="p">(</span><span 
class="nb">None</span><span class="p">)</span><span class="o">?</span><span 
class="p">;</span>
+<span class="n">stats</span><span class="p">.</span><span 
class="n">column_statistics</span><span class="p">[</span><span 
class="mi">0</span><span class="p">].</span><span 
class="n">min_value</span><span class="w"> </span><span class="o">=</span><span 
class="w"> </span><span class="o">..</span><span class="p">.;</span>
+
+<span class="c1">// Now unwrap the Arc first:</span>
+<span class="kd">let</span><span class="w"> </span><span 
class="k">mut</span><span class="w"> </span><span class="n">stats</span><span 
class="w"> </span><span class="o">=</span><span class="w"> </span><span 
class="n">Arc</span><span class="p">::</span><span 
class="n">unwrap_or_clone</span><span class="p">(</span><span 
class="n">plan</span><span class="p">.</span><span 
class="n">partition_statistics</span><span class="p">(</span><span 
class="nb">None</span><span class="p">)</span><span cl [...]
+<span class="n">stats</span><span class="p">.</span><span 
class="n">column_statistics</span><span class="p">[</span><span 
class="mi">0</span><span class="p">].</span><span 
class="n">min_value</span><span class="w"> </span><span class="o">=</span><span 
class="w"> </span><span class="o">..</span><span class="p">.;</span>
 </pre></div>
 </div>
 </section>
diff --git a/searchindex.js b/searchindex.js
index 884bbcdd6b..7c4f69e687 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]

Reply via email to