This is an automated email from the ASF dual-hosted git repository.

github-actions[bot] pushed a commit to branch asf-staging
in repository https://gitbox.apache.org/repos/asf/datafusion-site.git


The following commit(s) were added to refs/heads/asf-staging by this push:
     new 543e739  Commit build products
543e739 is described below

commit 543e7394e2391b7c8e82f0943481f8120a76e601
Author: Build Pelican (action) <[email protected]>
AuthorDate: Tue Aug 4 17:24:11 2026 +0000

    Commit build products
---
 blog/2026/08/07/datafusion-comet-1.0.0/index.html | 50 ++++++++-------------
 blog/feeds/all-en.atom.xml                        | 50 ++++++++-------------
 blog/feeds/blog.atom.xml                          | 50 ++++++++-------------
 blog/feeds/pmc.atom.xml                           | 54 +++++++++--------------
 4 files changed, 74 insertions(+), 130 deletions(-)

diff --git a/blog/2026/08/07/datafusion-comet-1.0.0/index.html 
b/blog/2026/08/07/datafusion-comet-1.0.0/index.html
index 40f5d5d..2030729 100644
--- a/blog/2026/08/07/datafusion-comet-1.0.0/index.html
+++ b/blog/2026/08/07/datafusion-comet-1.0.0/index.html
@@ -153,40 +153,26 @@ boundary, so this shrinks per-query overhead across the 
board. Plan-data injecti
 operator kind and no longer rebuilds operators it does not touch. Comet also 
makes far fewer timer calls in
 the native execution loop.</p>
 <h2 id="correctness">Correctness<a class="headerlink" href="#correctness" 
title="Permanent link">¶</a></h2>
-<p>A 1.0 release is only as good as its results. This release fixes a broad 
set of divergences from Spark, most
-of them found by running extensive AI-assisted audit sweeps of the code base, 
comparing Comet's expression
-implementations with all supported versions of Spark. Highlights:</p>
+<p>A 1.0 release is only as good as its results. This release fixes roughly 30 
divergences from Spark, spanning
+casts, ANSI error semantics, wrong-result bugs, string and encoding handling, 
collations, and error
+reporting. Most were found by running extensive AI-assisted audit sweeps of 
the code base, comparing Comet's
+expression implementations with all supported versions of Spark. See the <a 
href="https://github.com/apache/datafusion-comet/blob/main/docs/source/changelog/1.0.0.md";>change
 log</a> for the full list; two
+representative fixes give a sense of the shape of the work:</p>
 <ul>
-<li><strong>Casts</strong> to <code>boolean</code>, integral types, 
<code>float</code>/<code>double</code>, and <code>decimal</code> now use 
Spark's exact
-  whitespace-trimming rules. Comet's kernels had used four different trim 
sets, three of them wrong, so
-  results diverged in both directions — returning null where Spark parses a 
value, and returning a value
-  where Spark returns null. Casts from <code>float</code>/<code>double</code> 
to <code>decimal</code> now round the shortest decimal string
-  form as Spark does, and return null for <code>NaN</code> and infinity even 
in ANSI mode.</li>
-<li><strong>ANSI error semantics.</strong> The codegen dispatcher's null 
short-circuit no longer swallows errors Spark
-  raises. Spark evaluates null-intolerant expressions per node and left to 
right, so short-circuiting on the
-  union of input ordinals skipped subtrees Spark would have evaluated, losing 
their errors. Roughly 70
-  built-in expressions route through this dispatcher and ANSI is on by default 
in Spark 4, so this affected a
-  wide surface. Other ANSI fixes cover overflow on <code>round</code> with a 
large negative scale, <code>Long.MinValue / -1</code>,
-  floating-point remainder by zero, <code>make_decimal</code> fail-on-error, 
invalid calendar dates, and errors from
-  nested casts.</li>
-<li><strong>Wrong results</strong> in <code>count</code> when the native scan 
is disabled, Spark's legacy <code>null IN ()</code> behavior, <code>pow</code>
-  edge cases where C and Java disagree, <code>percentile</code> interpolation 
precision, <code>date_trunc</code> across DST
-  boundaries, <code>flatten</code> and <code>ArrayInsert</code> with null 
inputs, and the <code>array_filter</code> / <code>array_compact</code> fast
-  path.</li>
-<li><strong>Strings and encodings.</strong> <code>CAST(binary AS 
string)</code> now decodes exactly as the JVM's
-  <code>new String(bytes, UTF_8)</code> does, including the surrogate cases 
where Rust's lossy decoder diverges, and
-  shuffle tolerates non-UTF-8 bytes rather than failing.</li>
-<li><strong>Deep expression trees.</strong> Long chains of associative 
bitwise, <code>Add</code>, and <code>Multiply</code> operators are
-  rebalanced so plans no longer hit protobuf's recursion limit.</li>
-<li><strong>Collations.</strong> Comet now falls back for predicates whose 
operands use non-default collations, for Spark 4
-  datetime expressions under non-default collations, and for 
<code>str_to_map</code>.</li>
-<li><strong>Conservative fallbacks</strong> where native behavior could not be 
made to match: decimal <code>SUM</code> / <code>AVG</code> over
-  sliding window frames, <code>FromUnixTime</code> with a non-default format, 
<code>CreateArray</code> with
-  struct-nullability-divergent children, and native V1 scans on filesystem 
schemes that <code>object_store</code> does
-  not support.</li>
-<li><strong>Error reporting.</strong> Native Parquet read failures now surface 
as Spark's <code>FAILED_READ_FILE</code>, and a
-  DataFusion 54.1.0 Parquet page-index regression is worked around.</li>
+<li><strong>Whitespace trimming in string-to-numeric casts.</strong> Casts to 
<code>boolean</code>, integral types, <code>float</code>/<code>double</code>,
+  and <code>decimal</code> now use Spark's exact trim rules. Comet's kernels 
had used four different trim sets, three of
+  them wrong, so results diverged in both directions — returning null where 
Spark parses a value, and
+  returning a value where Spark returns null.</li>
+<li><strong>ANSI errors swallowed by null short-circuit.</strong> The codegen 
dispatcher's null short-circuit no longer
+  swallows errors Spark raises. Spark evaluates null-intolerant expressions 
per node and left to right, so
+  short-circuiting on the union of input ordinals skipped subtrees Spark would 
have evaluated, losing their
+  errors. Roughly 70 built-in expressions route through this dispatcher and 
ANSI is on by default in Spark 4,
+  so this affected a wide surface.</li>
 </ul>
+<p>Alongside the bug fixes, Comet also adds conservative fallbacks where 
native behavior could not be made to
+match — decimal <code>SUM</code> / <code>AVG</code> over sliding window 
frames, <code>FromUnixTime</code> with a non-default format, and a
+handful of others — and falls back for predicates and datetime expressions 
under non-default collations
+rather than risking a wrong result.</p>
 <h2 id="new-expression-and-aggregate-support">New Expression and Aggregate 
Support<a class="headerlink" href="#new-expression-and-aggregate-support" 
title="Permanent link">¶</a></h2>
 <p>This release expands the set of Spark expressions and aggregates that run 
natively:</p>
 <ul>
diff --git a/blog/feeds/all-en.atom.xml b/blog/feeds/all-en.atom.xml
index b096327..fdde10b 100644
--- a/blog/feeds/all-en.atom.xml
+++ b/blog/feeds/all-en.atom.xml
@@ -101,40 +101,26 @@ boundary, so this shrinks per-query overhead across the 
board. Plan-data injecti
 operator kind and no longer rebuilds operators it does not touch. Comet also 
makes far fewer timer calls in
 the native execution loop.&lt;/p&gt;
 &lt;h2 id="correctness"&gt;Correctness&lt;a class="headerlink" 
href="#correctness" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
-&lt;p&gt;A 1.0 release is only as good as its results. This release fixes a 
broad set of divergences from Spark, most
-of them found by running extensive AI-assisted audit sweeps of the code base, 
comparing Comet's expression
-implementations with all supported versions of Spark. Highlights:&lt;/p&gt;
+&lt;p&gt;A 1.0 release is only as good as its results. This release fixes 
roughly 30 divergences from Spark, spanning
+casts, ANSI error semantics, wrong-result bugs, string and encoding handling, 
collations, and error
+reporting. Most were found by running extensive AI-assisted audit sweeps of 
the code base, comparing Comet's
+expression implementations with all supported versions of Spark. See the &lt;a 
href="https://github.com/apache/datafusion-comet/blob/main/docs/source/changelog/1.0.0.md"&gt;change
 log&lt;/a&gt; for the full list; two
+representative fixes give a sense of the shape of the work:&lt;/p&gt;
 &lt;ul&gt;
-&lt;li&gt;&lt;strong&gt;Casts&lt;/strong&gt; to 
&lt;code&gt;boolean&lt;/code&gt;, integral types, 
&lt;code&gt;float&lt;/code&gt;/&lt;code&gt;double&lt;/code&gt;, and 
&lt;code&gt;decimal&lt;/code&gt; now use Spark's exact
-  whitespace-trimming rules. Comet's kernels had used four different trim 
sets, three of them wrong, so
-  results diverged in both directions — returning null where Spark parses a 
value, and returning a value
-  where Spark returns null. Casts from 
&lt;code&gt;float&lt;/code&gt;/&lt;code&gt;double&lt;/code&gt; to 
&lt;code&gt;decimal&lt;/code&gt; now round the shortest decimal string
-  form as Spark does, and return null for &lt;code&gt;NaN&lt;/code&gt; and 
infinity even in ANSI mode.&lt;/li&gt;
-&lt;li&gt;&lt;strong&gt;ANSI error semantics.&lt;/strong&gt; The codegen 
dispatcher's null short-circuit no longer swallows errors Spark
-  raises. Spark evaluates null-intolerant expressions per node and left to 
right, so short-circuiting on the
-  union of input ordinals skipped subtrees Spark would have evaluated, losing 
their errors. Roughly 70
-  built-in expressions route through this dispatcher and ANSI is on by default 
in Spark 4, so this affected a
-  wide surface. Other ANSI fixes cover overflow on 
&lt;code&gt;round&lt;/code&gt; with a large negative scale, 
&lt;code&gt;Long.MinValue / -1&lt;/code&gt;,
-  floating-point remainder by zero, &lt;code&gt;make_decimal&lt;/code&gt; 
fail-on-error, invalid calendar dates, and errors from
-  nested casts.&lt;/li&gt;
-&lt;li&gt;&lt;strong&gt;Wrong results&lt;/strong&gt; in 
&lt;code&gt;count&lt;/code&gt; when the native scan is disabled, Spark's legacy 
&lt;code&gt;null IN ()&lt;/code&gt; behavior, &lt;code&gt;pow&lt;/code&gt;
-  edge cases where C and Java disagree, &lt;code&gt;percentile&lt;/code&gt; 
interpolation precision, &lt;code&gt;date_trunc&lt;/code&gt; across DST
-  boundaries, &lt;code&gt;flatten&lt;/code&gt; and 
&lt;code&gt;ArrayInsert&lt;/code&gt; with null inputs, and the 
&lt;code&gt;array_filter&lt;/code&gt; / &lt;code&gt;array_compact&lt;/code&gt; 
fast
-  path.&lt;/li&gt;
-&lt;li&gt;&lt;strong&gt;Strings and encodings.&lt;/strong&gt; 
&lt;code&gt;CAST(binary AS string)&lt;/code&gt; now decodes exactly as the JVM's
-  &lt;code&gt;new String(bytes, UTF_8)&lt;/code&gt; does, including the 
surrogate cases where Rust's lossy decoder diverges, and
-  shuffle tolerates non-UTF-8 bytes rather than failing.&lt;/li&gt;
-&lt;li&gt;&lt;strong&gt;Deep expression trees.&lt;/strong&gt; Long chains of 
associative bitwise, &lt;code&gt;Add&lt;/code&gt;, and 
&lt;code&gt;Multiply&lt;/code&gt; operators are
-  rebalanced so plans no longer hit protobuf's recursion limit.&lt;/li&gt;
-&lt;li&gt;&lt;strong&gt;Collations.&lt;/strong&gt; Comet now falls back for 
predicates whose operands use non-default collations, for Spark 4
-  datetime expressions under non-default collations, and for 
&lt;code&gt;str_to_map&lt;/code&gt;.&lt;/li&gt;
-&lt;li&gt;&lt;strong&gt;Conservative fallbacks&lt;/strong&gt; where native 
behavior could not be made to match: decimal &lt;code&gt;SUM&lt;/code&gt; / 
&lt;code&gt;AVG&lt;/code&gt; over
-  sliding window frames, &lt;code&gt;FromUnixTime&lt;/code&gt; with a 
non-default format, &lt;code&gt;CreateArray&lt;/code&gt; with
-  struct-nullability-divergent children, and native V1 scans on filesystem 
schemes that &lt;code&gt;object_store&lt;/code&gt; does
-  not support.&lt;/li&gt;
-&lt;li&gt;&lt;strong&gt;Error reporting.&lt;/strong&gt; Native Parquet read 
failures now surface as Spark's &lt;code&gt;FAILED_READ_FILE&lt;/code&gt;, and a
-  DataFusion 54.1.0 Parquet page-index regression is worked around.&lt;/li&gt;
+&lt;li&gt;&lt;strong&gt;Whitespace trimming in string-to-numeric 
casts.&lt;/strong&gt; Casts to &lt;code&gt;boolean&lt;/code&gt;, integral 
types, &lt;code&gt;float&lt;/code&gt;/&lt;code&gt;double&lt;/code&gt;,
+  and &lt;code&gt;decimal&lt;/code&gt; now use Spark's exact trim rules. 
Comet's kernels had used four different trim sets, three of
+  them wrong, so results diverged in both directions — returning null where 
Spark parses a value, and
+  returning a value where Spark returns null.&lt;/li&gt;
+&lt;li&gt;&lt;strong&gt;ANSI errors swallowed by null 
short-circuit.&lt;/strong&gt; The codegen dispatcher's null short-circuit no 
longer
+  swallows errors Spark raises. Spark evaluates null-intolerant expressions 
per node and left to right, so
+  short-circuiting on the union of input ordinals skipped subtrees Spark would 
have evaluated, losing their
+  errors. Roughly 70 built-in expressions route through this dispatcher and 
ANSI is on by default in Spark 4,
+  so this affected a wide surface.&lt;/li&gt;
 &lt;/ul&gt;
+&lt;p&gt;Alongside the bug fixes, Comet also adds conservative fallbacks where 
native behavior could not be made to
+match — decimal &lt;code&gt;SUM&lt;/code&gt; / &lt;code&gt;AVG&lt;/code&gt; 
over sliding window frames, &lt;code&gt;FromUnixTime&lt;/code&gt; with a 
non-default format, and a
+handful of others — and falls back for predicates and datetime expressions 
under non-default collations
+rather than risking a wrong result.&lt;/p&gt;
 &lt;h2 id="new-expression-and-aggregate-support"&gt;New Expression and 
Aggregate Support&lt;a class="headerlink" 
href="#new-expression-and-aggregate-support" title="Permanent 
link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
 &lt;p&gt;This release expands the set of Spark expressions and aggregates that 
run natively:&lt;/p&gt;
 &lt;ul&gt;
diff --git a/blog/feeds/blog.atom.xml b/blog/feeds/blog.atom.xml
index f41808a..c8d7c18 100644
--- a/blog/feeds/blog.atom.xml
+++ b/blog/feeds/blog.atom.xml
@@ -101,40 +101,26 @@ boundary, so this shrinks per-query overhead across the 
board. Plan-data injecti
 operator kind and no longer rebuilds operators it does not touch. Comet also 
makes far fewer timer calls in
 the native execution loop.&lt;/p&gt;
 &lt;h2 id="correctness"&gt;Correctness&lt;a class="headerlink" 
href="#correctness" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
-&lt;p&gt;A 1.0 release is only as good as its results. This release fixes a 
broad set of divergences from Spark, most
-of them found by running extensive AI-assisted audit sweeps of the code base, 
comparing Comet's expression
-implementations with all supported versions of Spark. Highlights:&lt;/p&gt;
+&lt;p&gt;A 1.0 release is only as good as its results. This release fixes 
roughly 30 divergences from Spark, spanning
+casts, ANSI error semantics, wrong-result bugs, string and encoding handling, 
collations, and error
+reporting. Most were found by running extensive AI-assisted audit sweeps of 
the code base, comparing Comet's
+expression implementations with all supported versions of Spark. See the &lt;a 
href="https://github.com/apache/datafusion-comet/blob/main/docs/source/changelog/1.0.0.md"&gt;change
 log&lt;/a&gt; for the full list; two
+representative fixes give a sense of the shape of the work:&lt;/p&gt;
 &lt;ul&gt;
-&lt;li&gt;&lt;strong&gt;Casts&lt;/strong&gt; to 
&lt;code&gt;boolean&lt;/code&gt;, integral types, 
&lt;code&gt;float&lt;/code&gt;/&lt;code&gt;double&lt;/code&gt;, and 
&lt;code&gt;decimal&lt;/code&gt; now use Spark's exact
-  whitespace-trimming rules. Comet's kernels had used four different trim 
sets, three of them wrong, so
-  results diverged in both directions — returning null where Spark parses a 
value, and returning a value
-  where Spark returns null. Casts from 
&lt;code&gt;float&lt;/code&gt;/&lt;code&gt;double&lt;/code&gt; to 
&lt;code&gt;decimal&lt;/code&gt; now round the shortest decimal string
-  form as Spark does, and return null for &lt;code&gt;NaN&lt;/code&gt; and 
infinity even in ANSI mode.&lt;/li&gt;
-&lt;li&gt;&lt;strong&gt;ANSI error semantics.&lt;/strong&gt; The codegen 
dispatcher's null short-circuit no longer swallows errors Spark
-  raises. Spark evaluates null-intolerant expressions per node and left to 
right, so short-circuiting on the
-  union of input ordinals skipped subtrees Spark would have evaluated, losing 
their errors. Roughly 70
-  built-in expressions route through this dispatcher and ANSI is on by default 
in Spark 4, so this affected a
-  wide surface. Other ANSI fixes cover overflow on 
&lt;code&gt;round&lt;/code&gt; with a large negative scale, 
&lt;code&gt;Long.MinValue / -1&lt;/code&gt;,
-  floating-point remainder by zero, &lt;code&gt;make_decimal&lt;/code&gt; 
fail-on-error, invalid calendar dates, and errors from
-  nested casts.&lt;/li&gt;
-&lt;li&gt;&lt;strong&gt;Wrong results&lt;/strong&gt; in 
&lt;code&gt;count&lt;/code&gt; when the native scan is disabled, Spark's legacy 
&lt;code&gt;null IN ()&lt;/code&gt; behavior, &lt;code&gt;pow&lt;/code&gt;
-  edge cases where C and Java disagree, &lt;code&gt;percentile&lt;/code&gt; 
interpolation precision, &lt;code&gt;date_trunc&lt;/code&gt; across DST
-  boundaries, &lt;code&gt;flatten&lt;/code&gt; and 
&lt;code&gt;ArrayInsert&lt;/code&gt; with null inputs, and the 
&lt;code&gt;array_filter&lt;/code&gt; / &lt;code&gt;array_compact&lt;/code&gt; 
fast
-  path.&lt;/li&gt;
-&lt;li&gt;&lt;strong&gt;Strings and encodings.&lt;/strong&gt; 
&lt;code&gt;CAST(binary AS string)&lt;/code&gt; now decodes exactly as the JVM's
-  &lt;code&gt;new String(bytes, UTF_8)&lt;/code&gt; does, including the 
surrogate cases where Rust's lossy decoder diverges, and
-  shuffle tolerates non-UTF-8 bytes rather than failing.&lt;/li&gt;
-&lt;li&gt;&lt;strong&gt;Deep expression trees.&lt;/strong&gt; Long chains of 
associative bitwise, &lt;code&gt;Add&lt;/code&gt;, and 
&lt;code&gt;Multiply&lt;/code&gt; operators are
-  rebalanced so plans no longer hit protobuf's recursion limit.&lt;/li&gt;
-&lt;li&gt;&lt;strong&gt;Collations.&lt;/strong&gt; Comet now falls back for 
predicates whose operands use non-default collations, for Spark 4
-  datetime expressions under non-default collations, and for 
&lt;code&gt;str_to_map&lt;/code&gt;.&lt;/li&gt;
-&lt;li&gt;&lt;strong&gt;Conservative fallbacks&lt;/strong&gt; where native 
behavior could not be made to match: decimal &lt;code&gt;SUM&lt;/code&gt; / 
&lt;code&gt;AVG&lt;/code&gt; over
-  sliding window frames, &lt;code&gt;FromUnixTime&lt;/code&gt; with a 
non-default format, &lt;code&gt;CreateArray&lt;/code&gt; with
-  struct-nullability-divergent children, and native V1 scans on filesystem 
schemes that &lt;code&gt;object_store&lt;/code&gt; does
-  not support.&lt;/li&gt;
-&lt;li&gt;&lt;strong&gt;Error reporting.&lt;/strong&gt; Native Parquet read 
failures now surface as Spark's &lt;code&gt;FAILED_READ_FILE&lt;/code&gt;, and a
-  DataFusion 54.1.0 Parquet page-index regression is worked around.&lt;/li&gt;
+&lt;li&gt;&lt;strong&gt;Whitespace trimming in string-to-numeric 
casts.&lt;/strong&gt; Casts to &lt;code&gt;boolean&lt;/code&gt;, integral 
types, &lt;code&gt;float&lt;/code&gt;/&lt;code&gt;double&lt;/code&gt;,
+  and &lt;code&gt;decimal&lt;/code&gt; now use Spark's exact trim rules. 
Comet's kernels had used four different trim sets, three of
+  them wrong, so results diverged in both directions — returning null where 
Spark parses a value, and
+  returning a value where Spark returns null.&lt;/li&gt;
+&lt;li&gt;&lt;strong&gt;ANSI errors swallowed by null 
short-circuit.&lt;/strong&gt; The codegen dispatcher's null short-circuit no 
longer
+  swallows errors Spark raises. Spark evaluates null-intolerant expressions 
per node and left to right, so
+  short-circuiting on the union of input ordinals skipped subtrees Spark would 
have evaluated, losing their
+  errors. Roughly 70 built-in expressions route through this dispatcher and 
ANSI is on by default in Spark 4,
+  so this affected a wide surface.&lt;/li&gt;
 &lt;/ul&gt;
+&lt;p&gt;Alongside the bug fixes, Comet also adds conservative fallbacks where 
native behavior could not be made to
+match — decimal &lt;code&gt;SUM&lt;/code&gt; / &lt;code&gt;AVG&lt;/code&gt; 
over sliding window frames, &lt;code&gt;FromUnixTime&lt;/code&gt; with a 
non-default format, and a
+handful of others — and falls back for predicates and datetime expressions 
under non-default collations
+rather than risking a wrong result.&lt;/p&gt;
 &lt;h2 id="new-expression-and-aggregate-support"&gt;New Expression and 
Aggregate Support&lt;a class="headerlink" 
href="#new-expression-and-aggregate-support" title="Permanent 
link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
 &lt;p&gt;This release expands the set of Spark expressions and aggregates that 
run natively:&lt;/p&gt;
 &lt;ul&gt;
diff --git a/blog/feeds/pmc.atom.xml b/blog/feeds/pmc.atom.xml
index 529156b..9441b15 100644
--- a/blog/feeds/pmc.atom.xml
+++ b/blog/feeds/pmc.atom.xml
@@ -101,40 +101,26 @@ boundary, so this shrinks per-query overhead across the 
board. Plan-data injecti
 operator kind and no longer rebuilds operators it does not touch. Comet also 
makes far fewer timer calls in
 the native execution loop.&lt;/p&gt;
 &lt;h2 id="correctness"&gt;Correctness&lt;a class="headerlink" 
href="#correctness" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
-&lt;p&gt;A 1.0 release is only as good as its results. This release fixes a 
broad set of divergences from Spark, most
-of them found by running extensive AI-assisted audit sweeps of the code base, 
comparing Comet's expression
-implementations with all supported versions of Spark. Highlights:&lt;/p&gt;
-&lt;ul&gt;
-&lt;li&gt;&lt;strong&gt;Casts&lt;/strong&gt; to 
&lt;code&gt;boolean&lt;/code&gt;, integral types, 
&lt;code&gt;float&lt;/code&gt;/&lt;code&gt;double&lt;/code&gt;, and 
&lt;code&gt;decimal&lt;/code&gt; now use Spark's exact
-  whitespace-trimming rules. Comet's kernels had used four different trim 
sets, three of them wrong, so
-  results diverged in both directions — returning null where Spark parses a 
value, and returning a value
-  where Spark returns null. Casts from 
&lt;code&gt;float&lt;/code&gt;/&lt;code&gt;double&lt;/code&gt; to 
&lt;code&gt;decimal&lt;/code&gt; now round the shortest decimal string
-  form as Spark does, and return null for &lt;code&gt;NaN&lt;/code&gt; and 
infinity even in ANSI mode.&lt;/li&gt;
-&lt;li&gt;&lt;strong&gt;ANSI error semantics.&lt;/strong&gt; The codegen 
dispatcher's null short-circuit no longer swallows errors Spark
-  raises. Spark evaluates null-intolerant expressions per node and left to 
right, so short-circuiting on the
-  union of input ordinals skipped subtrees Spark would have evaluated, losing 
their errors. Roughly 70
-  built-in expressions route through this dispatcher and ANSI is on by default 
in Spark 4, so this affected a
-  wide surface. Other ANSI fixes cover overflow on 
&lt;code&gt;round&lt;/code&gt; with a large negative scale, 
&lt;code&gt;Long.MinValue / -1&lt;/code&gt;,
-  floating-point remainder by zero, &lt;code&gt;make_decimal&lt;/code&gt; 
fail-on-error, invalid calendar dates, and errors from
-  nested casts.&lt;/li&gt;
-&lt;li&gt;&lt;strong&gt;Wrong results&lt;/strong&gt; in 
&lt;code&gt;count&lt;/code&gt; when the native scan is disabled, Spark's legacy 
&lt;code&gt;null IN ()&lt;/code&gt; behavior, &lt;code&gt;pow&lt;/code&gt;
-  edge cases where C and Java disagree, &lt;code&gt;percentile&lt;/code&gt; 
interpolation precision, &lt;code&gt;date_trunc&lt;/code&gt; across DST
-  boundaries, &lt;code&gt;flatten&lt;/code&gt; and 
&lt;code&gt;ArrayInsert&lt;/code&gt; with null inputs, and the 
&lt;code&gt;array_filter&lt;/code&gt; / &lt;code&gt;array_compact&lt;/code&gt; 
fast
-  path.&lt;/li&gt;
-&lt;li&gt;&lt;strong&gt;Strings and encodings.&lt;/strong&gt; 
&lt;code&gt;CAST(binary AS string)&lt;/code&gt; now decodes exactly as the JVM's
-  &lt;code&gt;new String(bytes, UTF_8)&lt;/code&gt; does, including the 
surrogate cases where Rust's lossy decoder diverges, and
-  shuffle tolerates non-UTF-8 bytes rather than failing.&lt;/li&gt;
-&lt;li&gt;&lt;strong&gt;Deep expression trees.&lt;/strong&gt; Long chains of 
associative bitwise, &lt;code&gt;Add&lt;/code&gt;, and 
&lt;code&gt;Multiply&lt;/code&gt; operators are
-  rebalanced so plans no longer hit protobuf's recursion limit.&lt;/li&gt;
-&lt;li&gt;&lt;strong&gt;Collations.&lt;/strong&gt; Comet now falls back for 
predicates whose operands use non-default collations, for Spark 4
-  datetime expressions under non-default collations, and for 
&lt;code&gt;str_to_map&lt;/code&gt;.&lt;/li&gt;
-&lt;li&gt;&lt;strong&gt;Conservative fallbacks&lt;/strong&gt; where native 
behavior could not be made to match: decimal &lt;code&gt;SUM&lt;/code&gt; / 
&lt;code&gt;AVG&lt;/code&gt; over
-  sliding window frames, &lt;code&gt;FromUnixTime&lt;/code&gt; with a 
non-default format, &lt;code&gt;CreateArray&lt;/code&gt; with
-  struct-nullability-divergent children, and native V1 scans on filesystem 
schemes that &lt;code&gt;object_store&lt;/code&gt; does
-  not support.&lt;/li&gt;
-&lt;li&gt;&lt;strong&gt;Error reporting.&lt;/strong&gt; Native Parquet read 
failures now surface as Spark's &lt;code&gt;FAILED_READ_FILE&lt;/code&gt;, and a
-  DataFusion 54.1.0 Parquet page-index regression is worked around.&lt;/li&gt;
-&lt;/ul&gt;
+&lt;p&gt;A 1.0 release is only as good as its results. This release fixes 
roughly 30 divergences from Spark, spanning
+casts, ANSI error semantics, wrong-result bugs, string and encoding handling, 
collations, and error
+reporting. Most were found by running extensive AI-assisted audit sweeps of 
the code base, comparing Comet's
+expression implementations with all supported versions of Spark. See the &lt;a 
href="https://github.com/apache/datafusion-comet/blob/main/docs/source/changelog/1.0.0.md"&gt;change
 log&lt;/a&gt; for the full list; two
+representative fixes give a sense of the shape of the work:&lt;/p&gt;
+&lt;ul&gt;
+&lt;li&gt;&lt;strong&gt;Whitespace trimming in string-to-numeric 
casts.&lt;/strong&gt; Casts to &lt;code&gt;boolean&lt;/code&gt;, integral 
types, &lt;code&gt;float&lt;/code&gt;/&lt;code&gt;double&lt;/code&gt;,
+  and &lt;code&gt;decimal&lt;/code&gt; now use Spark's exact trim rules. 
Comet's kernels had used four different trim sets, three of
+  them wrong, so results diverged in both directions — returning null where 
Spark parses a value, and
+  returning a value where Spark returns null.&lt;/li&gt;
+&lt;li&gt;&lt;strong&gt;ANSI errors swallowed by null 
short-circuit.&lt;/strong&gt; The codegen dispatcher's null short-circuit no 
longer
+  swallows errors Spark raises. Spark evaluates null-intolerant expressions 
per node and left to right, so
+  short-circuiting on the union of input ordinals skipped subtrees Spark would 
have evaluated, losing their
+  errors. Roughly 70 built-in expressions route through this dispatcher and 
ANSI is on by default in Spark 4,
+  so this affected a wide surface.&lt;/li&gt;
+&lt;/ul&gt;
+&lt;p&gt;Alongside the bug fixes, Comet also adds conservative fallbacks where 
native behavior could not be made to
+match — decimal &lt;code&gt;SUM&lt;/code&gt; / &lt;code&gt;AVG&lt;/code&gt; 
over sliding window frames, &lt;code&gt;FromUnixTime&lt;/code&gt; with a 
non-default format, and a
+handful of others — and falls back for predicates and datetime expressions 
under non-default collations
+rather than risking a wrong result.&lt;/p&gt;
 &lt;h2 id="new-expression-and-aggregate-support"&gt;New Expression and 
Aggregate Support&lt;a class="headerlink" 
href="#new-expression-and-aggregate-support" title="Permanent 
link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
 &lt;p&gt;This release expands the set of Spark expressions and aggregates that 
run natively:&lt;/p&gt;
 &lt;ul&gt;


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

Reply via email to