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 3c5dbbc461 Publish built docs triggered by
fdaa32608bf620ea7dd9dfabd4d1fd329fafa3e3
3c5dbbc461 is described below
commit 3c5dbbc461cd13c5dd429a03c06bb9bd94c5268b
Author: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
AuthorDate: Wed May 13 15:18:36 2026 +0000
Publish built docs triggered by fdaa32608bf620ea7dd9dfabd4d1fd329fafa3e3
---
.../library-user-guide/upgrading/54.0.0.md.txt | 54 ++++++++++++++++++++++
library-user-guide/upgrading/54.0.0.html | 48 +++++++++++++++++++
searchindex.js | 2 +-
3 files changed, 103 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 0ba3e4eb3e..46b768e834 100644
--- a/_sources/library-user-guide/upgrading/54.0.0.md.txt
+++ b/_sources/library-user-guide/upgrading/54.0.0.md.txt
@@ -595,3 +595,57 @@ impl Default for MyTreeNode {
}
}
```
+
+### `MemoryPool` now requires `'static` (adds `Any` as a supertrait)
+
+To enable downcasting of `dyn MemoryPool` to concrete pool types (via
+`is::<T>()` / `downcast_ref::<T>()`), the `MemoryPool` trait now has `Any`
+as a supertrait:
+
+```rust,ignore
+// Before
+pub trait MemoryPool: Send + Sync + std::fmt::Debug + Display { ... }
+
+// After
+pub trait MemoryPool: Any + Send + Sync + std::fmt::Debug + Display { ... }
+```
+
+Because `Any` is only implemented for `'static` types, this implicitly adds a
+`'static` bound to every `MemoryPool` implementor.
+
+**Who is affected:**
+
+- Users who implement a custom `MemoryPool` whose type carries a lifetime
+ parameter or borrows state (e.g. `struct MyPool<'a> { inner: &'a State }`).
+ Existing implementations that are already `'static` (the common case) need
+ no changes.
+
+**Migration guide:**
+
+Replace borrowed references with owned handles so the pool type becomes
+`'static`. The typical fix is to swap `&'a T` for `Arc<T>` (or `Rc<T>`, or an
+owned value):
+
+```rust,ignore
+// Before — not 'static, no longer compiles
+struct MyPool<'a> {
+ inner: &'a SomeState,
+}
+
+impl<'a> MemoryPool for MyPool<'a> { ... }
+
+// After — owned handle makes MyPool: 'static
+struct MyPool {
+ inner: Arc<SomeState>,
+}
+
+impl MemoryPool for MyPool { ... }
+```
+
+If the borrowed state truly cannot be made `'static`, you can wrap the
+borrowed pool in a `'static` adapter that the pool consumer owns — for
+example, store the underlying state in an `Arc` owned by the adapter, or
+move the borrow behind an interior-mutability primitive such as `Arc<Mutex<_>>`
+or `Arc<OnceLock<_>>`.
+
+See [PR #21803](https://github.com/apache/datafusion/pull/21803) for details.
diff --git a/library-user-guide/upgrading/54.0.0.html
b/library-user-guide/upgrading/54.0.0.html
index 3b3b1cb040..5ab3044a42 100644
--- a/library-user-guide/upgrading/54.0.0.html
+++ b/library-user-guide/upgrading/54.0.0.html
@@ -975,6 +975,53 @@ allocation-free variant:</p>
</pre></div>
</div>
</section>
+<section id="memorypool-now-requires-static-adds-any-as-a-supertrait">
+<h3><code class="docutils literal notranslate"><span
class="pre">MemoryPool</span></code> now requires <code class="docutils literal
notranslate"><span class="pre">'static</span></code> (adds <code
class="docutils literal notranslate"><span class="pre">Any</span></code> as a
supertrait)<a class="headerlink"
href="#memorypool-now-requires-static-adds-any-as-a-supertrait" title="Link to
this heading">#</a></h3>
+<p>To enable downcasting of <code class="docutils literal notranslate"><span
class="pre">dyn</span> <span class="pre">MemoryPool</span></code> to concrete
pool types (via
+<code class="docutils literal notranslate"><span
class="pre">is::<T>()</span></code> / <code class="docutils literal
notranslate"><span class="pre">downcast_ref::<T>()</span></code>), the
<code class="docutils literal notranslate"><span
class="pre">MemoryPool</span></code> trait now has <code class="docutils
literal notranslate"><span class="pre">Any</span></code>
+as a supertrait:</p>
+<div class="highlight-rust notranslate"><div
class="highlight"><pre><span></span><span class="c1">// Before</span>
+<span class="k">pub</span><span class="w"> </span><span
class="k">trait</span><span class="w"> </span><span
class="n">MemoryPool</span><span class="p">:</span><span class="w">
</span><span class="nb">Send</span><span class="w"> </span><span
class="o">+</span><span class="w"> </span><span class="nb">Sync</span><span
class="w"> </span><span class="o">+</span><span class="w"> </span><span
class="n">std</span><span class="p">::</span><span class="n">fmt</span><span
class="p">::</span><span c [...]
+
+<span class="c1">// After</span>
+<span class="k">pub</span><span class="w"> </span><span
class="k">trait</span><span class="w"> </span><span
class="n">MemoryPool</span><span class="p">:</span><span class="w">
</span><span class="nc">Any</span><span class="w"> </span><span
class="o">+</span><span class="w"> </span><span class="nb">Send</span><span
class="w"> </span><span class="o">+</span><span class="w"> </span><span
class="nb">Sync</span><span class="w"> </span><span class="o">+</span><span
class="w"> </span><span clas [...]
+</pre></div>
+</div>
+<p>Because <code class="docutils literal notranslate"><span
class="pre">Any</span></code> is only implemented for <code class="docutils
literal notranslate"><span class="pre">'static</span></code> types, this
implicitly adds a
+<code class="docutils literal notranslate"><span
class="pre">'static</span></code> bound to every <code class="docutils literal
notranslate"><span class="pre">MemoryPool</span></code> implementor.</p>
+<p><strong>Who is affected:</strong></p>
+<ul class="simple">
+<li><p>Users who implement a custom <code class="docutils literal
notranslate"><span class="pre">MemoryPool</span></code> whose type carries a
lifetime
+parameter or borrows state (e.g. <code class="docutils literal
notranslate"><span class="pre">struct</span> <span
class="pre">MyPool<'a></span> <span class="pre">{</span> <span
class="pre">inner:</span> <span class="pre">&'a</span> <span
class="pre">State</span> <span class="pre">}</span></code>).
+Existing implementations that are already <code class="docutils literal
notranslate"><span class="pre">'static</span></code> (the common case) need
+no changes.</p></li>
+</ul>
+<p><strong>Migration guide:</strong></p>
+<p>Replace borrowed references with owned handles so the pool type becomes
+<code class="docutils literal notranslate"><span
class="pre">'static</span></code>. The typical fix is to swap <code
class="docutils literal notranslate"><span class="pre">&'a</span> <span
class="pre">T</span></code> for <code class="docutils literal
notranslate"><span class="pre">Arc<T></span></code> (or <code
class="docutils literal notranslate"><span
class="pre">Rc<T></span></code>, or an
+owned value):</p>
+<div class="highlight-rust notranslate"><div
class="highlight"><pre><span></span><span class="c1">// Before — not
'static, no longer compiles</span>
+<span class="k">struct</span><span class="w"> </span><span
class="nc">MyPool</span><span class="o"><'</span><span
class="na">a</span><span class="o">></span><span class="w"> </span><span
class="p">{</span>
+<span class="w"> </span><span class="n">inner</span><span
class="p">:</span><span class="w"> </span><span class="kp">&</span><span
class="o">'</span><span class="na">a</span><span class="w"> </span><span
class="nc">SomeState</span><span class="p">,</span>
+<span class="p">}</span>
+
+<span class="k">impl</span><span class="o"><'</span><span
class="na">a</span><span class="o">></span><span class="w"> </span><span
class="n">MemoryPool</span><span class="w"> </span><span
class="k">for</span><span class="w"> </span><span class="n">MyPool</span><span
class="o"><'</span><span class="na">a</span><span
class="o">></span><span class="w"> </span><span class="p">{</span><span
class="w"> </span><span class="o">..</span><span class="p">.</span><span
class="w"> [...]
+
+<span class="c1">// After — owned handle makes MyPool: 'static</span>
+<span class="k">struct</span><span class="w"> </span><span
class="nc">MyPool</span><span class="w"> </span><span class="p">{</span>
+<span class="w"> </span><span class="n">inner</span><span
class="p">:</span><span class="w"> </span><span class="nc">Arc</span><span
class="o"><</span><span class="n">SomeState</span><span
class="o">></span><span class="p">,</span>
+<span class="p">}</span>
+
+<span class="k">impl</span><span class="w"> </span><span
class="n">MemoryPool</span><span class="w"> </span><span
class="k">for</span><span class="w"> </span><span class="n">MyPool</span><span
class="w"> </span><span class="p">{</span><span class="w"> </span><span
class="o">..</span><span class="p">.</span><span class="w"> </span><span
class="p">}</span>
+</pre></div>
+</div>
+<p>If the borrowed state truly cannot be made <code class="docutils literal
notranslate"><span class="pre">'static</span></code>, you can wrap the
+borrowed pool in a <code class="docutils literal notranslate"><span
class="pre">'static</span></code> adapter that the pool consumer owns — for
+example, store the underlying state in an <code class="docutils literal
notranslate"><span class="pre">Arc</span></code> owned by the adapter, or
+move the borrow behind an interior-mutability primitive such as <code
class="docutils literal notranslate"><span
class="pre">Arc<Mutex<_>></span></code>
+or <code class="docutils literal notranslate"><span
class="pre">Arc<OnceLock<_>></span></code>.</p>
+<p>See <a class="reference external"
href="https://github.com/apache/datafusion/pull/21803">PR #21803</a> for
details.</p>
+</section>
</section>
</section>
@@ -1046,6 +1093,7 @@ allocation-free variant:</p>
<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link"
href="#partitionedfile-extensions-is-now-a-type-keyed-map"><code
class="docutils literal notranslate"><span
class="pre">PartitionedFile::extensions</span></code> is now a type-keyed
map</a></li>
<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link"
href="#arrays-zip-struct-field-names-changed"><code class="docutils literal
notranslate"><span class="pre">arrays_zip</span></code> struct field names
changed</a></li>
<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link"
href="#box-c-and-arc-c-treenodecontainer-impls-now-require-c-default"><code
class="docutils literal notranslate"><span
class="pre">Box<C></span></code> and <code class="docutils literal
notranslate"><span class="pre">Arc<C></span></code> <code class="docutils
literal notranslate"><span class="pre">TreeNodeContainer</span></code> impls
now require <code class="docutils literal notranslate"><span class [...]
+<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link"
href="#memorypool-now-requires-static-adds-any-as-a-supertrait"><code
class="docutils literal notranslate"><span class="pre">MemoryPool</span></code>
now requires <code class="docutils literal notranslate"><span
class="pre">'static</span></code> (adds <code class="docutils literal
notranslate"><span class="pre">Any</span></code> as a supertrait)</a></li>
</ul>
</li>
</ul>
diff --git a/searchindex.js b/searchindex.js
index 604ec8ea53..ac0f394164 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]