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 2195c84b4e Publish built docs triggered by 
3fabee7705164d8e9c58ffe8c2119039edc411ce
2195c84b4e is described below

commit 2195c84b4e2d375c53b7d5066a9752786f1374b0
Author: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
AuthorDate: Mon Dec 8 18:43:07 2025 +0000

    Publish built docs triggered by 3fabee7705164d8e9c58ffe8c2119039edc411ce
---
 _sources/library-user-guide/upgrading.md.txt | 96 ----------------------------
 library-user-guide/upgrading.html            | 88 -------------------------
 searchindex.js                               |  2 +-
 3 files changed, 1 insertion(+), 185 deletions(-)

diff --git a/_sources/library-user-guide/upgrading.md.txt 
b/_sources/library-user-guide/upgrading.md.txt
index caab9ad4e7..6462961ce6 100644
--- a/_sources/library-user-guide/upgrading.md.txt
+++ b/_sources/library-user-guide/upgrading.md.txt
@@ -380,102 +380,6 @@ If you were using a custom `SchemaAdapterFactory` for 
schema adaptation (e.g., d
 
 See the [default column values 
example](https://github.com/apache/datafusion/blob/main/datafusion-examples/examples/custom_data_source/default_column_values.rs)
 for how to implement a custom `PhysicalExprAdapterFactory`.
 
-### `PhysicalOptimizerRule::optimize` deprecated in favor of `optimize_plan`
-
-The `PhysicalOptimizerRule` trait has been updated to provide optimizer rules 
with access to broader session context. A new method `optimize_plan` has been 
added that accepts an `OptimizerContext` parameter, and the existing `optimize` 
method has been deprecated.
-
-**Who is affected:**
-
-- Users who have implemented custom `PhysicalOptimizerRule` implementations
-
-**Breaking changes:**
-
-1. **New `optimize_plan` method**: This is the preferred method for 
implementing optimization rules. It provides access to the full `SessionConfig` 
through `OptimizerContext`, rather than just `ConfigOptions`.
-
-2. **`optimize` method deprecated**: The old `optimize` method that takes 
`&ConfigOptions` is now deprecated and will be removed in DataFusion 58.0.0.
-
-**Migration guide:**
-
-If you have a custom `PhysicalOptimizerRule` implementation, update it to 
implement `optimize_plan` instead of `optimize`:
-
-**Before:**
-
-```rust
-use datafusion::physical_optimizer::PhysicalOptimizerRule;
-use datafusion_common::config::ConfigOptions;
-use datafusion_common::Result;
-use datafusion_physical_plan::ExecutionPlan;
-use std::sync::Arc;
-
-#[derive(Debug)]
-struct MyOptimizerRule;
-
-#[allow(deprecated)]
-impl PhysicalOptimizerRule for MyOptimizerRule {
-    fn optimize(
-        &self,
-        plan: Arc<dyn ExecutionPlan>,
-        _config: &ConfigOptions,
-    ) -> Result<Arc<dyn ExecutionPlan>> {
-        // Use config.optimizer, config.execution, etc.
-        // ... optimization logic ...
-        Ok(plan)
-    }
-
-    fn name(&self) -> &str {
-        "my_optimizer_rule"
-    }
-
-    fn schema_check(&self) -> bool {
-        true
-    }
-}
-```
-
-**After:**
-
-```rust
-use datafusion::physical_optimizer::{OptimizerContext, PhysicalOptimizerRule};
-use datafusion_common::Result;
-use datafusion_physical_plan::ExecutionPlan;
-use std::sync::Arc;
-
-#[derive(Debug)]
-struct MyOptimizerRule;
-
-impl PhysicalOptimizerRule for MyOptimizerRule {
-    fn optimize_plan(
-        &self,
-        plan: Arc<dyn ExecutionPlan>,
-        context: &OptimizerContext,
-    ) -> Result<Arc<dyn ExecutionPlan>> {
-        // Access ConfigOptions through session_config
-        let _config = context.session_config().options();
-        // Or access extensions through session_config
-        let _extensions = context.session_config().extensions();
-        // ... optimization logic ...
-        Ok(plan)
-    }
-
-    fn name(&self) -> &str {
-        "my_optimizer_rule"
-    }
-
-    fn schema_check(&self) -> bool {
-        true
-    }
-}
-```
-
-**What is `OptimizerContext`?**
-
-`OptimizerContext` is a new struct that provides context during physical plan 
optimization, similar to how `TaskContext` provides context during execution. 
It wraps `SessionConfig`, giving optimizer rules access to:
-
-- Configuration options via `context.session_config().options()`
-- Session extensions via `context.session_config().extensions()`
-
-This enables optimizer rules to access custom extensions registered with the 
session, which was not possible with the old `&ConfigOptions` parameter.
-
 ## DataFusion `51.0.0`
 
 ### `arrow` / `parquet` updated to 57.0.0
diff --git a/library-user-guide/upgrading.html 
b/library-user-guide/upgrading.html
index 336c1d7d5d..48e1de3fce 100644
--- a/library-user-guide/upgrading.html
+++ b/library-user-guide/upgrading.html
@@ -705,93 +705,6 @@ that introduced these changes for more examples for how 
this was handled for the
 <p>If you were using a custom <code class="docutils literal notranslate"><span 
class="pre">SchemaAdapterFactory</span></code> for schema adaptation (e.g., 
default column values, type coercion), you should now implement <code 
class="docutils literal notranslate"><span 
class="pre">PhysicalExprAdapterFactory</span></code> instead.</p>
 <p>See the <a class="reference external" 
href="https://github.com/apache/datafusion/blob/main/datafusion-examples/examples/custom_data_source/default_column_values.rs";>default
 column values example</a> for how to implement a custom <code class="docutils 
literal notranslate"><span 
class="pre">PhysicalExprAdapterFactory</span></code>.</p>
 </section>
-<section 
id="physicaloptimizerrule-optimize-deprecated-in-favor-of-optimize-plan">
-<h3><code class="docutils literal notranslate"><span 
class="pre">PhysicalOptimizerRule::optimize</span></code> deprecated in favor 
of <code class="docutils literal notranslate"><span 
class="pre">optimize_plan</span></code><a class="headerlink" 
href="#physicaloptimizerrule-optimize-deprecated-in-favor-of-optimize-plan" 
title="Link to this heading">#</a></h3>
-<p>The <code class="docutils literal notranslate"><span 
class="pre">PhysicalOptimizerRule</span></code> trait has been updated to 
provide optimizer rules with access to broader session context. A new method 
<code class="docutils literal notranslate"><span 
class="pre">optimize_plan</span></code> has been added that accepts an <code 
class="docutils literal notranslate"><span 
class="pre">OptimizerContext</span></code> parameter, and the existing <code 
class="docutils literal notranslate"><s [...]
-<p><strong>Who is affected:</strong></p>
-<ul class="simple">
-<li><p>Users who have implemented custom <code class="docutils literal 
notranslate"><span class="pre">PhysicalOptimizerRule</span></code> 
implementations</p></li>
-</ul>
-<p><strong>Breaking changes:</strong></p>
-<ol class="arabic simple">
-<li><p><strong>New <code class="docutils literal notranslate"><span 
class="pre">optimize_plan</span></code> method</strong>: This is the preferred 
method for implementing optimization rules. It provides access to the full 
<code class="docutils literal notranslate"><span 
class="pre">SessionConfig</span></code> through <code class="docutils literal 
notranslate"><span class="pre">OptimizerContext</span></code>, rather than just 
<code class="docutils literal notranslate"><span class="pre">Co [...]
-<li><p><strong><code class="docutils literal notranslate"><span 
class="pre">optimize</span></code> method deprecated</strong>: The old <code 
class="docutils literal notranslate"><span class="pre">optimize</span></code> 
method that takes <code class="docutils literal notranslate"><span 
class="pre">&amp;ConfigOptions</span></code> is now deprecated and will be 
removed in DataFusion 58.0.0.</p></li>
-</ol>
-<p><strong>Migration guide:</strong></p>
-<p>If you have a custom <code class="docutils literal notranslate"><span 
class="pre">PhysicalOptimizerRule</span></code> implementation, update it to 
implement <code class="docutils literal notranslate"><span 
class="pre">optimize_plan</span></code> instead of <code class="docutils 
literal notranslate"><span class="pre">optimize</span></code>:</p>
-<p><strong>Before:</strong></p>
-<div class="highlight-rust notranslate"><div 
class="highlight"><pre><span></span><span class="k">use</span><span class="w"> 
</span><span class="n">datafusion</span><span class="p">::</span><span 
class="n">physical_optimizer</span><span class="p">::</span><span 
class="n">PhysicalOptimizerRule</span><span class="p">;</span>
-<span class="k">use</span><span class="w"> </span><span 
class="n">datafusion_common</span><span class="p">::</span><span 
class="n">config</span><span class="p">::</span><span 
class="n">ConfigOptions</span><span class="p">;</span>
-<span class="k">use</span><span class="w"> </span><span 
class="n">datafusion_common</span><span class="p">::</span><span 
class="nb">Result</span><span class="p">;</span>
-<span class="k">use</span><span class="w"> </span><span 
class="n">datafusion_physical_plan</span><span class="p">::</span><span 
class="n">ExecutionPlan</span><span class="p">;</span>
-<span class="k">use</span><span class="w"> </span><span 
class="n">std</span><span class="p">::</span><span class="n">sync</span><span 
class="p">::</span><span class="n">Arc</span><span class="p">;</span>
-
-<span class="cp">#[derive(Debug)]</span>
-<span class="k">struct</span><span class="w"> </span><span 
class="nc">MyOptimizerRule</span><span class="p">;</span>
-
-<span class="cp">#[allow(deprecated)]</span>
-<span class="k">impl</span><span class="w"> </span><span 
class="n">PhysicalOptimizerRule</span><span class="w"> </span><span 
class="k">for</span><span class="w"> </span><span 
class="n">MyOptimizerRule</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">optimize</span><span class="p">(</span>
-<span class="w">        </span><span class="o">&amp;</span><span 
class="bp">self</span><span class="p">,</span>
-<span class="w">        </span><span class="n">plan</span><span 
class="p">:</span><span class="w"> </span><span class="nc">Arc</span><span 
class="o">&lt;</span><span class="k">dyn</span><span class="w"> </span><span 
class="n">ExecutionPlan</span><span class="o">&gt;</span><span 
class="p">,</span>
-<span class="w">        </span><span class="n">_config</span><span 
class="p">:</span><span class="w"> </span><span class="kp">&amp;</span><span 
class="nc">ConfigOptions</span><span class="p">,</span>
-<span class="w">    </span><span class="p">)</span><span class="w"> 
</span><span class="p">-&gt;</span><span class="w"> </span><span 
class="nb">Result</span><span class="o">&lt;</span><span 
class="n">Arc</span><span class="o">&lt;</span><span class="k">dyn</span><span 
class="w"> </span><span class="n">ExecutionPlan</span><span 
class="o">&gt;&gt;</span><span class="w"> </span><span class="p">{</span>
-<span class="w">        </span><span class="c1">// Use config.optimizer, 
config.execution, etc.</span>
-<span class="w">        </span><span class="c1">// ... optimization logic 
...</span>
-<span class="w">        </span><span class="nb">Ok</span><span 
class="p">(</span><span class="n">plan</span><span class="p">)</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">&amp;</span><span class="bp">self</span><span class="p">)</span><span 
class="w"> </span><span class="p">-&gt;</span><span class="w"> </span><span 
class="kp">&amp;</span><span class="kt">str</span><span class="w"> </span><span 
class="p">{</span>
-<span class="w">        </span><span 
class="s">&quot;my_optimizer_rule&quot;</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">schema_check</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="p">-&gt;</span><span class="w"> </span><span 
class="kt">bool</span><span class="w"> </span><span class="p">{</span>
-<span class="w">        </span><span class="kc">true</span>
-<span class="w">    </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">use</span><span class="w"> 
</span><span class="n">datafusion</span><span class="p">::</span><span 
class="n">physical_optimizer</span><span class="p">::{</span><span 
class="n">OptimizerContext</span><span class="p">,</span><span class="w"> 
</span><span class="n">PhysicalOptimizerRule</span><span class="p">};</span>
-<span class="k">use</span><span class="w"> </span><span 
class="n">datafusion_common</span><span class="p">::</span><span 
class="nb">Result</span><span class="p">;</span>
-<span class="k">use</span><span class="w"> </span><span 
class="n">datafusion_physical_plan</span><span class="p">::</span><span 
class="n">ExecutionPlan</span><span class="p">;</span>
-<span class="k">use</span><span class="w"> </span><span 
class="n">std</span><span class="p">::</span><span class="n">sync</span><span 
class="p">::</span><span class="n">Arc</span><span class="p">;</span>
-
-<span class="cp">#[derive(Debug)]</span>
-<span class="k">struct</span><span class="w"> </span><span 
class="nc">MyOptimizerRule</span><span class="p">;</span>
-
-<span class="k">impl</span><span class="w"> </span><span 
class="n">PhysicalOptimizerRule</span><span class="w"> </span><span 
class="k">for</span><span class="w"> </span><span 
class="n">MyOptimizerRule</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">optimize_plan</span><span class="p">(</span>
-<span class="w">        </span><span class="o">&amp;</span><span 
class="bp">self</span><span class="p">,</span>
-<span class="w">        </span><span class="n">plan</span><span 
class="p">:</span><span class="w"> </span><span class="nc">Arc</span><span 
class="o">&lt;</span><span class="k">dyn</span><span class="w"> </span><span 
class="n">ExecutionPlan</span><span class="o">&gt;</span><span 
class="p">,</span>
-<span class="w">        </span><span class="n">context</span><span 
class="p">:</span><span class="w"> </span><span class="kp">&amp;</span><span 
class="nc">OptimizerContext</span><span class="p">,</span>
-<span class="w">    </span><span class="p">)</span><span class="w"> 
</span><span class="p">-&gt;</span><span class="w"> </span><span 
class="nb">Result</span><span class="o">&lt;</span><span 
class="n">Arc</span><span class="o">&lt;</span><span class="k">dyn</span><span 
class="w"> </span><span class="n">ExecutionPlan</span><span 
class="o">&gt;&gt;</span><span class="w"> </span><span class="p">{</span>
-<span class="w">        </span><span class="c1">// Access ConfigOptions 
through session_config</span>
-<span class="w">        </span><span class="kd">let</span><span class="w"> 
</span><span class="n">_config</span><span class="w"> </span><span 
class="o">=</span><span class="w"> </span><span class="n">context</span><span 
class="p">.</span><span class="n">session_config</span><span 
class="p">().</span><span class="n">options</span><span class="p">();</span>
-<span class="w">        </span><span class="c1">// Or access extensions 
through session_config</span>
-<span class="w">        </span><span class="kd">let</span><span class="w"> 
</span><span class="n">_extensions</span><span class="w"> </span><span 
class="o">=</span><span class="w"> </span><span class="n">context</span><span 
class="p">.</span><span class="n">session_config</span><span 
class="p">().</span><span class="n">extensions</span><span class="p">();</span>
-<span class="w">        </span><span class="c1">// ... optimization logic 
...</span>
-<span class="w">        </span><span class="nb">Ok</span><span 
class="p">(</span><span class="n">plan</span><span class="p">)</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">&amp;</span><span class="bp">self</span><span class="p">)</span><span 
class="w"> </span><span class="p">-&gt;</span><span class="w"> </span><span 
class="kp">&amp;</span><span class="kt">str</span><span class="w"> </span><span 
class="p">{</span>
-<span class="w">        </span><span 
class="s">&quot;my_optimizer_rule&quot;</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">schema_check</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="p">-&gt;</span><span class="w"> </span><span 
class="kt">bool</span><span class="w"> </span><span class="p">{</span>
-<span class="w">        </span><span class="kc">true</span>
-<span class="w">    </span><span class="p">}</span>
-<span class="p">}</span>
-</pre></div>
-</div>
-<p><strong>What is <code class="docutils literal notranslate"><span 
class="pre">OptimizerContext</span></code>?</strong></p>
-<p><code class="docutils literal notranslate"><span 
class="pre">OptimizerContext</span></code> is a new struct that provides 
context during physical plan optimization, similar to how <code class="docutils 
literal notranslate"><span class="pre">TaskContext</span></code> provides 
context during execution. It wraps <code class="docutils literal 
notranslate"><span class="pre">SessionConfig</span></code>, giving optimizer 
rules access to:</p>
-<ul class="simple">
-<li><p>Configuration options via <code class="docutils literal 
notranslate"><span 
class="pre">context.session_config().options()</span></code></p></li>
-<li><p>Session extensions via <code class="docutils literal notranslate"><span 
class="pre">context.session_config().extensions()</span></code></p></li>
-</ul>
-<p>This enables optimizer rules to access custom extensions registered with 
the session, which was not possible with the old <code class="docutils literal 
notranslate"><span class="pre">&amp;ConfigOptions</span></code> parameter.</p>
-</section>
 </section>
 <section id="datafusion-51-0-0">
 <h2>DataFusion <code class="docutils literal notranslate"><span 
class="pre">51.0.0</span></code><a class="headerlink" href="#datafusion-51-0-0" 
title="Link to this heading">#</a></h2>
@@ -2041,7 +1954,6 @@ take care of constructing the <code class="docutils 
literal notranslate"><span c
 <li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" 
href="#ffi-crate-updates">FFI crate updates</a></li>
 <li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" 
href="#projection-handling-moved-from-filescanconfig-to-filesource">Projection 
handling moved from FileScanConfig to FileSource</a></li>
 <li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" 
href="#schemaadapterfactory-fully-removed-from-parquet"><code class="docutils 
literal notranslate"><span class="pre">SchemaAdapterFactory</span></code> Fully 
Removed from Parquet</a></li>
-<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" 
href="#physicaloptimizerrule-optimize-deprecated-in-favor-of-optimize-plan"><code
 class="docutils literal notranslate"><span 
class="pre">PhysicalOptimizerRule::optimize</span></code> deprecated in favor 
of <code class="docutils literal notranslate"><span 
class="pre">optimize_plan</span></code></a></li>
 </ul>
 </li>
 <li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" 
href="#datafusion-51-0-0">DataFusion <code class="docutils literal 
notranslate"><span class="pre">51.0.0</span></code></a><ul class="nav 
section-nav flex-column">
diff --git a/searchindex.js b/searchindex.js
index 47ffcd4f84..a4a37cfcf1 100644
--- a/searchindex.js
+++ b/searchindex.js
@@ -1 +1 @@
-Search.setIndex({"alltitles":{"!=":[[60,"op-neq"]],"!~":[[60,"op-re-not-match"]],"!~*":[[60,"op-re-not-match-i"]],"!~~":[[60,"id19"]],"!~~*":[[60,"id20"]],"#":[[60,"op-bit-xor"]],"%":[[60,"op-modulo"]],"&":[[60,"op-bit-and"]],"(relation,
 name) tuples in logical fields and logical columns are 
unique":[[13,"relation-name-tuples-in-logical-fields-and-logical-columns-are-unique"]],"*":[[60,"op-multiply"]],"+":[[60,"op-plus"]],"-":[[60,"op-minus"]],"/":[[60,"op-divide"]],"<":[[60,"op-lt"]],"<
 [...]
\ No newline at end of file
+Search.setIndex({"alltitles":{"!=":[[60,"op-neq"]],"!~":[[60,"op-re-not-match"]],"!~*":[[60,"op-re-not-match-i"]],"!~~":[[60,"id19"]],"!~~*":[[60,"id20"]],"#":[[60,"op-bit-xor"]],"%":[[60,"op-modulo"]],"&":[[60,"op-bit-and"]],"(relation,
 name) tuples in logical fields and logical columns are 
unique":[[13,"relation-name-tuples-in-logical-fields-and-logical-columns-are-unique"]],"*":[[60,"op-multiply"]],"+":[[60,"op-plus"]],"-":[[60,"op-minus"]],"/":[[60,"op-divide"]],"<":[[60,"op-lt"]],"<
 [...]
\ No newline at end of file


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to