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 fc30993f6e Publish built docs triggered by
3089ace491701b1b1d0cb047df66d4821dfdf15e
fc30993f6e is described below
commit fc30993f6ed80009e8d838cc3bbae264bd7ce753
Author: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
AuthorDate: Wed Jul 8 15:49:37 2026 +0000
Publish built docs triggered by 3089ace491701b1b1d0cb047df66d4821dfdf15e
---
.../library-user-guide/functions/adding-udfs.md.txt | 12 ++++++------
_sources/library-user-guide/upgrading/55.0.0.md.txt | 21 +++++++++++++++++++++
library-user-guide/functions/adding-udfs.html | 6 +++---
library-user-guide/upgrading/55.0.0.html | 19 +++++++++++++++++++
searchindex.js | 2 +-
5 files changed, 50 insertions(+), 10 deletions(-)
diff --git a/_sources/library-user-guide/functions/adding-udfs.md.txt
b/_sources/library-user-guide/functions/adding-udfs.md.txt
index b6021c9dbb..c3a40557a0 100644
--- a/_sources/library-user-guide/functions/adding-udfs.md.txt
+++ b/_sources/library-user-guide/functions/adding-udfs.md.txt
@@ -397,9 +397,9 @@ impl AsyncUpper {
pub fn new() -> Self {
Self {
signature: Signature::new(
- TypeSignature::Coercible(vec![Coercion::Exact {
- desired_type: TypeSignatureClass::Native(logical_string()),
- }]),
+ TypeSignature::Coercible(vec![Coercion::new_exact(
+ TypeSignatureClass::Native(logical_string()),
+ )]),
Volatility::Volatile,
),
}
@@ -497,9 +497,9 @@ We can now transfer the async UDF into the normal scalar
using `into_scalar_udf`
# pub fn new() -> Self {
# Self {
# signature: Signature::new(
-# TypeSignature::Coercible(vec![Coercion::Exact {
-# desired_type:
TypeSignatureClass::Native(logical_string()),
-# }]),
+# TypeSignature::Coercible(vec![Coercion::new_exact(
+# TypeSignatureClass::Native(logical_string()),
+# )]),
# Volatility::Volatile,
# ),
# }
diff --git a/_sources/library-user-guide/upgrading/55.0.0.md.txt
b/_sources/library-user-guide/upgrading/55.0.0.md.txt
index f39b34a640..26a26b69b5 100644
--- a/_sources/library-user-guide/upgrading/55.0.0.md.txt
+++ b/_sources/library-user-guide/upgrading/55.0.0.md.txt
@@ -124,6 +124,27 @@ will now appear as `Decimal128(NULL,10,2)`.
Query result values already used human-readable decimal formatting and are
unchanged.
+### `Coercion` supports dictionary encoding preservation
+
+`datafusion_expr_common::signature::Coercion` now supports optional dictionary
+encoding preservation. When enabled for `TypeSignatureClass::Native(...)`
+coercions, DataFusion coerces dictionary inputs to
+`Dictionary(original_key_type, coerced_value_type)` instead of materializing
them
+to the coerced value type.
+
+User-defined functions can opt in by setting dictionary encoding preservation
on
+the relevant coercion:
+
+```rust
+Coercion::new_exact(TypeSignatureClass::Native(logical_string()))
+ .with_encoding_preservation(EncodingPreservation::dictionary())
+```
+
+This changes the coerced argument type passed to the function. If a function
+derives its return type from that coerced argument type, code that checks exact
+result types may need to update its expectations or add an explicit cast to
+materialize the result.
+
### `GroupsAccumulator::merge_batch` no longer takes `opt_filter`
The `opt_filter` argument has been removed from
diff --git a/library-user-guide/functions/adding-udfs.html
b/library-user-guide/functions/adding-udfs.html
index e6e114daad..088c60ddd9 100644
--- a/library-user-guide/functions/adding-udfs.html
+++ b/library-user-guide/functions/adding-udfs.html
@@ -695,9 +695,9 @@ UDF.</p>
<span class="w"> </span><span class="k">pub</span><span class="w">
</span><span class="k">fn</span><span class="w"> </span><span
class="nf">new</span><span class="p">()</span><span class="w"> </span><span
class="p">-></span><span class="w"> </span><span class="nc">Self</span><span
class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="bp">Self</span><span class="w">
</span><span class="p">{</span>
<span class="w"> </span><span class="n">signature</span><span
class="p">:</span><span class="w"> </span><span
class="nc">Signature</span><span class="p">::</span><span
class="n">new</span><span class="p">(</span>
-<span class="w"> </span><span
class="n">TypeSignature</span><span class="p">::</span><span
class="n">Coercible</span><span class="p">(</span><span
class="fm">vec!</span><span class="p">[</span><span
class="n">Coercion</span><span class="p">::</span><span
class="n">Exact</span><span class="w"> </span><span class="p">{</span>
-<span class="w"> </span><span
class="n">desired_type</span><span class="p">:</span><span class="w">
</span><span class="nc">TypeSignatureClass</span><span class="p">::</span><span
class="n">Native</span><span class="p">(</span><span
class="n">logical_string</span><span class="p">()),</span>
-<span class="w"> </span><span class="p">}]),</span>
+<span class="w"> </span><span
class="n">TypeSignature</span><span class="p">::</span><span
class="n">Coercible</span><span class="p">(</span><span
class="fm">vec!</span><span class="p">[</span><span
class="n">Coercion</span><span class="p">::</span><span
class="n">new_exact</span><span class="p">(</span>
+<span class="w"> </span><span
class="n">TypeSignatureClass</span><span class="p">::</span><span
class="n">Native</span><span class="p">(</span><span
class="n">logical_string</span><span class="p">()),</span>
+<span class="w"> </span><span class="p">)]),</span>
<span class="w"> </span><span class="n">Volatility</span><span
class="p">::</span><span class="n">Volatile</span><span class="p">,</span>
<span class="w"> </span><span class="p">),</span>
<span class="w"> </span><span class="p">}</span>
diff --git a/library-user-guide/upgrading/55.0.0.html
b/library-user-guide/upgrading/55.0.0.html
index 6911e77a73..06422ccea6 100644
--- a/library-user-guide/upgrading/55.0.0.html
+++ b/library-user-guide/upgrading/55.0.0.html
@@ -529,6 +529,24 @@ will now appear as <code class="docutils literal
notranslate"><span class="pre">
<p>Query result values already used human-readable decimal formatting and are
unchanged.</p>
</section>
+<section id="coercion-supports-dictionary-encoding-preservation">
+<h3><code class="docutils literal notranslate"><span
class="pre">Coercion</span></code> supports dictionary encoding preservation<a
class="headerlink" href="#coercion-supports-dictionary-encoding-preservation"
title="Link to this heading">#</a></h3>
+<p><code class="docutils literal notranslate"><span
class="pre">datafusion_expr_common::signature::Coercion</span></code> now
supports optional dictionary
+encoding preservation. When enabled for <code class="docutils literal
notranslate"><span class="pre">TypeSignatureClass::Native(...)</span></code>
+coercions, DataFusion coerces dictionary inputs to
+<code class="docutils literal notranslate"><span
class="pre">Dictionary(original_key_type,</span> <span
class="pre">coerced_value_type)</span></code> instead of materializing them
+to the coerced value type.</p>
+<p>User-defined functions can opt in by setting dictionary encoding
preservation on
+the relevant coercion:</p>
+<div class="highlight-rust notranslate"><div
class="highlight"><pre><span></span><span class="n">Coercion</span><span
class="p">::</span><span class="n">new_exact</span><span
class="p">(</span><span class="n">TypeSignatureClass</span><span
class="p">::</span><span class="n">Native</span><span class="p">(</span><span
class="n">logical_string</span><span class="p">()))</span>
+<span class="w"> </span><span class="p">.</span><span
class="n">with_encoding_preservation</span><span class="p">(</span><span
class="n">EncodingPreservation</span><span class="p">::</span><span
class="n">dictionary</span><span class="p">())</span>
+</pre></div>
+</div>
+<p>This changes the coerced argument type passed to the function. If a function
+derives its return type from that coerced argument type, code that checks exact
+result types may need to update its expectations or add an explicit cast to
+materialize the result.</p>
+</section>
<section id="groupsaccumulator-merge-batch-no-longer-takes-opt-filter">
<h3><code class="docutils literal notranslate"><span
class="pre">GroupsAccumulator::merge_batch</span></code> no longer takes <code
class="docutils literal notranslate"><span
class="pre">opt_filter</span></code><a class="headerlink"
href="#groupsaccumulator-merge-batch-no-longer-takes-opt-filter" title="Link to
this heading">#</a></h3>
<p>The <code class="docutils literal notranslate"><span
class="pre">opt_filter</span></code> argument has been removed from
@@ -940,6 +958,7 @@ metadata and schema fingerprint match.</p>
<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link"
href="#dialect-available-replaced-by-dialect-available"><code class="docutils
literal notranslate"><span class="pre">Dialect::AVAILABLE</span></code>
replaced by <code class="docutils literal notranslate"><span
class="pre">Dialect::available()</span></code></a></li>
<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link"
href="#spill-record-batch-by-size-removed"><code class="docutils literal
notranslate"><span class="pre">spill_record_batch_by_size</span></code>
removed</a></li>
<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link"
href="#decimal-scalar-formatting-uses-human-readable-values">Decimal scalar
formatting uses human-readable values</a></li>
+<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link"
href="#coercion-supports-dictionary-encoding-preservation"><code
class="docutils literal notranslate"><span class="pre">Coercion</span></code>
supports dictionary encoding preservation</a></li>
<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link"
href="#groupsaccumulator-merge-batch-no-longer-takes-opt-filter"><code
class="docutils literal notranslate"><span
class="pre">GroupsAccumulator::merge_batch</span></code> no longer takes <code
class="docutils literal notranslate"><span
class="pre">opt_filter</span></code></a></li>
<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link"
href="#is-dynamic-physical-expr-is-deprecated"><code class="docutils literal
notranslate"><span class="pre">is_dynamic_physical_expr</span></code> is
deprecated</a></li>
<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link"
href="#filepruner-try-new-no-longer-builds-a-pruner-for-static-predicates-without-statistics"><code
class="docutils literal notranslate"><span
class="pre">FilePruner::try_new</span></code> no longer builds a pruner for
static predicates without statistics</a></li>
diff --git a/searchindex.js b/searchindex.js
index bd8cca11c5..ded7266bc4 100644
--- a/searchindex.js
+++ b/searchindex.js
@@ -1 +1 @@
-Search.setIndex({"alltitles":{"!=":[[74,"op-neq"]],"!~":[[74,"op-re-not-match"]],"!~*":[[74,"op-re-not-match-i"]],"!~~":[[74,"id19"]],"!~~*":[[74,"id20"]],"#":[[74,"op-bit-xor"]],"%":[[74,"op-modulo"]],"&":[[74,"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"]],"*":[[74,"op-multiply"]],"+":[[74,"op-plus"]],"-":[[74,"op-minus"]],"/":[[74,"op-divide"]],"1.
Array Literal Con [...]
\ No newline at end of file
+Search.setIndex({"alltitles":{"!=":[[74,"op-neq"]],"!~":[[74,"op-re-not-match"]],"!~*":[[74,"op-re-not-match-i"]],"!~~":[[74,"id19"]],"!~~*":[[74,"id20"]],"#":[[74,"op-bit-xor"]],"%":[[74,"op-modulo"]],"&":[[74,"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"]],"*":[[74,"op-multiply"]],"+":[[74,"op-plus"]],"-":[[74,"op-minus"]],"/":[[74,"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]