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">&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">&</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"><</span><span class="k">dyn</span><span class="w"> </span><span
class="n">ExecutionPlan</span><span class="o">></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">&</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">-></span><span class="w"> </span><span
class="nb">Result</span><span class="o"><</span><span
class="n">Arc</span><span class="o"><</span><span class="k">dyn</span><span
class="w"> </span><span class="n">ExecutionPlan</span><span
class="o">>></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">&</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">"my_optimizer_rule"</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">&</span><span class="bp">self</span><span class="p">)</span><span
class="w"> </span><span class="p">-></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">&</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"><</span><span class="k">dyn</span><span class="w"> </span><span
class="n">ExecutionPlan</span><span class="o">></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">&</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">-></span><span class="w"> </span><span
class="nb">Result</span><span class="o"><</span><span
class="n">Arc</span><span class="o"><</span><span class="k">dyn</span><span
class="w"> </span><span class="n">ExecutionPlan</span><span
class="o">>></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">&</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">"my_optimizer_rule"</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">&</span><span class="bp">self</span><span class="p">)</span><span
class="w"> </span><span class="p">-></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">&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]