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">-&gt;</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]

Reply via email to