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-comet.git
The following commit(s) were added to refs/heads/asf-site by this push:
new a5ac3bb61d Publish built docs triggered by
027c9b05dc19ad3fd6bbe1d58df2f322b5bdb6c6
a5ac3bb61d is described below
commit a5ac3bb61dc267579ddb02460323efa9fe03d8b0
Author: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
AuthorDate: Fri Jun 5 02:35:56 2026 +0000
Publish built docs triggered by 027c9b05dc19ad3fd6bbe1d58df2f322b5bdb6c6
---
_sources/user-guide/latest/configs.md.txt | 1 +
.../latest/understanding-comet-plans.md.txt | 45 +++++
searchindex.js | 2 +-
user-guide/latest/configs.html | 214 +++++++++++----------
user-guide/latest/understanding-comet-plans.html | 40 ++++
5 files changed, 196 insertions(+), 106 deletions(-)
diff --git a/_sources/user-guide/latest/configs.md.txt
b/_sources/user-guide/latest/configs.md.txt
index 34264d463f..b53ac79088 100644
--- a/_sources/user-guide/latest/configs.md.txt
+++ b/_sources/user-guide/latest/configs.md.txt
@@ -291,6 +291,7 @@ These settings can be used to determine which parts of the
plan are accelerated
| `spark.comet.expression.Least.enabled` | Enable Comet acceleration for
`Least` | true |
| `spark.comet.expression.Left.enabled` | Enable Comet acceleration for `Left`
| true |
| `spark.comet.expression.Length.enabled` | Enable Comet acceleration for
`Length` | true |
+| `spark.comet.expression.LengthOfJsonArray.enabled` | Enable Comet
acceleration for `LengthOfJsonArray` | true |
| `spark.comet.expression.LessThan.enabled` | Enable Comet acceleration for
`LessThan` | true |
| `spark.comet.expression.LessThanOrEqual.enabled` | Enable Comet acceleration
for `LessThanOrEqual` | true |
| `spark.comet.expression.Like.enabled` | Enable Comet acceleration for `Like`
| true |
diff --git a/_sources/user-guide/latest/understanding-comet-plans.md.txt
b/_sources/user-guide/latest/understanding-comet-plans.md.txt
index 7fb93c8f53..a4d14a1228 100644
--- a/_sources/user-guide/latest/understanding-comet-plans.md.txt
+++ b/_sources/user-guide/latest/understanding-comet-plans.md.txt
@@ -138,6 +138,51 @@ operators were arranged after Comet's serialization). See
the
[Metrics Guide](metrics.md) for details on the native metrics that appear in
this output.
+## Programmatic Access to Fallback Reasons
+
+The configs above route fallback reasons to logs or the SQL UI. If you want
+the reasons for a specific query as data — for example, to assert in a test
+or to drive a custom report — use `org.apache.comet.ExtendedExplainInfo`
+directly. It is the same class that backs `spark.comet.explain.format`, and
+it works on any Spark version because it does not rely on the Spark 4.0
+`extendedExplainProviders` extension point.
+
+```scala
+import org.apache.comet.ExtendedExplainInfo
+
+val df = spark.sql("SELECT ...")
+val plan = df.queryExecution.executedPlan
+val info = new ExtendedExplainInfo()
+
+// Sorted, deduplicated list of fallback reasons across the whole plan.
+val reasons: Seq[String] = info.getFallbackReasons(plan)
+
+// Formatted string. Honors spark.comet.explain.format:
+// - "verbose" -> the full plan annotated with per-node fallback reasons
+// - "fallback" -> just the list of reasons
+val formatted: String = info.generateExtendedInfo(plan)
+```
+
+Example:
+
+```
+val df = spark.sql("SELECT from_unixtime(eventTime) FROM events")
+
+val plan = df.queryExecution.executedPlan
+val info = new org.apache.comet.ExtendedExplainInfo()
+println(info.generateExtendedInfo(plan))
+```
+
+Output
+
+```
+Project [COMET: from_unixtime(eventTime#5L, yyyy-MM-dd HH:mm:ss, Some(GMT)) is
not fully compatible with Spark. To enable it anyway, set
spark.comet.expression.FromUnixTime.allowIncompatible=true. For more
information, refer to the Comet Compatibility Guide
(https://datafusion.apache.org/comet/user-guide/compatibility.html).]
++- CometNativeColumnarToRow
+ +- CometNativeScan parquet
+
+Comet accelerated 1 out of 2 eligible operators (50%). Final plan contains 1
transitions between Spark and Comet.
+```
+
## Comet Operator Reference
The following sections describe the Comet nodes you will see in plans, grouped
diff --git a/searchindex.js b/searchindex.js
index 3671096812..6fa6acdd5e 100644
--- a/searchindex.js
+++ b/searchindex.js
@@ -1 +1 @@
-Search.setIndex({"alltitles": {"!": [[49, "id1"]], "%": [[47, "id1"]], "&":
[[37, "id1"]], "*": [[47, "id2"]], "+": [[47, "id3"]], "-": [[47, "id4"]], "/":
[[47, "id5"]], "1. Format Your Code": [[34, "format-your-code"]], "1. Install
Comet": [[54, "install-comet"], [63, "install-comet"]], "1. Native Operators
(nativeExecs map)": [[23, "native-operators-nativeexecs-map"]], "2. Build and
Verify": [[34, "build-and-verify"]], "2. Clone Iceberg and Apply Diff": [[54,
"clone-iceberg-and-apply- [...]
\ No newline at end of file
+Search.setIndex({"alltitles": {"!": [[49, "id1"]], "%": [[47, "id1"]], "&":
[[37, "id1"]], "*": [[47, "id2"]], "+": [[47, "id3"]], "-": [[47, "id4"]], "/":
[[47, "id5"]], "1. Format Your Code": [[34, "format-your-code"]], "1. Install
Comet": [[54, "install-comet"], [63, "install-comet"]], "1. Native Operators
(nativeExecs map)": [[23, "native-operators-nativeexecs-map"]], "2. Build and
Verify": [[34, "build-and-verify"]], "2. Clone Iceberg and Apply Diff": [[54,
"clone-iceberg-and-apply- [...]
\ No newline at end of file
diff --git a/user-guide/latest/configs.html b/user-guide/latest/configs.html
index 8d20631d13..6bd764e5dc 100644
--- a/user-guide/latest/configs.html
+++ b/user-guide/latest/configs.html
@@ -1443,423 +1443,427 @@ under the License.
<td><p>Enable Comet acceleration for <code class="docutils literal
notranslate"><span class="pre">Length</span></code></p></td>
<td><p>true</p></td>
</tr>
-<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.LessThan.enabled</span></code></p></td>
+<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.LengthOfJsonArray.enabled</span></code></p></td>
+<td><p>Enable Comet acceleration for <code class="docutils literal
notranslate"><span class="pre">LengthOfJsonArray</span></code></p></td>
+<td><p>true</p></td>
+</tr>
+<tr class="row-even"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.LessThan.enabled</span></code></p></td>
<td><p>Enable Comet acceleration for <code class="docutils literal
notranslate"><span class="pre">LessThan</span></code></p></td>
<td><p>true</p></td>
</tr>
-<tr class="row-even"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.LessThanOrEqual.enabled</span></code></p></td>
+<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.LessThanOrEqual.enabled</span></code></p></td>
<td><p>Enable Comet acceleration for <code class="docutils literal
notranslate"><span class="pre">LessThanOrEqual</span></code></p></td>
<td><p>true</p></td>
</tr>
-<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.Like.enabled</span></code></p></td>
+<tr class="row-even"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.Like.enabled</span></code></p></td>
<td><p>Enable Comet acceleration for <code class="docutils literal
notranslate"><span class="pre">Like</span></code></p></td>
<td><p>true</p></td>
</tr>
-<tr class="row-even"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.Literal.enabled</span></code></p></td>
+<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.Literal.enabled</span></code></p></td>
<td><p>Enable Comet acceleration for <code class="docutils literal
notranslate"><span class="pre">Literal</span></code></p></td>
<td><p>true</p></td>
</tr>
-<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.Log.enabled</span></code></p></td>
+<tr class="row-even"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.Log.enabled</span></code></p></td>
<td><p>Enable Comet acceleration for <code class="docutils literal
notranslate"><span class="pre">Log</span></code></p></td>
<td><p>true</p></td>
</tr>
-<tr class="row-even"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.Log10.enabled</span></code></p></td>
+<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.Log10.enabled</span></code></p></td>
<td><p>Enable Comet acceleration for <code class="docutils literal
notranslate"><span class="pre">Log10</span></code></p></td>
<td><p>true</p></td>
</tr>
-<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.Log2.enabled</span></code></p></td>
+<tr class="row-even"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.Log2.enabled</span></code></p></td>
<td><p>Enable Comet acceleration for <code class="docutils literal
notranslate"><span class="pre">Log2</span></code></p></td>
<td><p>true</p></td>
</tr>
-<tr class="row-even"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.Logarithm.enabled</span></code></p></td>
+<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.Logarithm.enabled</span></code></p></td>
<td><p>Enable Comet acceleration for <code class="docutils literal
notranslate"><span class="pre">Logarithm</span></code></p></td>
<td><p>true</p></td>
</tr>
-<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.Lower.enabled</span></code></p></td>
+<tr class="row-even"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.Lower.enabled</span></code></p></td>
<td><p>Enable Comet acceleration for <code class="docutils literal
notranslate"><span class="pre">Lower</span></code></p></td>
<td><p>true</p></td>
</tr>
-<tr class="row-even"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.MakeDate.enabled</span></code></p></td>
+<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.MakeDate.enabled</span></code></p></td>
<td><p>Enable Comet acceleration for <code class="docutils literal
notranslate"><span class="pre">MakeDate</span></code></p></td>
<td><p>true</p></td>
</tr>
-<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.MakeDecimal.enabled</span></code></p></td>
+<tr class="row-even"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.MakeDecimal.enabled</span></code></p></td>
<td><p>Enable Comet acceleration for <code class="docutils literal
notranslate"><span class="pre">MakeDecimal</span></code></p></td>
<td><p>true</p></td>
</tr>
-<tr class="row-even"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.MakeTimestamp.enabled</span></code></p></td>
+<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.MakeTimestamp.enabled</span></code></p></td>
<td><p>Enable Comet acceleration for <code class="docutils literal
notranslate"><span class="pre">MakeTimestamp</span></code></p></td>
<td><p>true</p></td>
</tr>
-<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.MapContainsKey.enabled</span></code></p></td>
+<tr class="row-even"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.MapContainsKey.enabled</span></code></p></td>
<td><p>Enable Comet acceleration for <code class="docutils literal
notranslate"><span class="pre">MapContainsKey</span></code></p></td>
<td><p>true</p></td>
</tr>
-<tr class="row-even"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.MapEntries.enabled</span></code></p></td>
+<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.MapEntries.enabled</span></code></p></td>
<td><p>Enable Comet acceleration for <code class="docutils literal
notranslate"><span class="pre">MapEntries</span></code></p></td>
<td><p>true</p></td>
</tr>
-<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.MapFromArrays.enabled</span></code></p></td>
+<tr class="row-even"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.MapFromArrays.enabled</span></code></p></td>
<td><p>Enable Comet acceleration for <code class="docutils literal
notranslate"><span class="pre">MapFromArrays</span></code></p></td>
<td><p>true</p></td>
</tr>
-<tr class="row-even"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.MapFromEntries.enabled</span></code></p></td>
+<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.MapFromEntries.enabled</span></code></p></td>
<td><p>Enable Comet acceleration for <code class="docutils literal
notranslate"><span class="pre">MapFromEntries</span></code></p></td>
<td><p>true</p></td>
</tr>
-<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.MapKeys.enabled</span></code></p></td>
+<tr class="row-even"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.MapKeys.enabled</span></code></p></td>
<td><p>Enable Comet acceleration for <code class="docutils literal
notranslate"><span class="pre">MapKeys</span></code></p></td>
<td><p>true</p></td>
</tr>
-<tr class="row-even"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.MapValues.enabled</span></code></p></td>
+<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.MapValues.enabled</span></code></p></td>
<td><p>Enable Comet acceleration for <code class="docutils literal
notranslate"><span class="pre">MapValues</span></code></p></td>
<td><p>true</p></td>
</tr>
-<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.Md5.enabled</span></code></p></td>
+<tr class="row-even"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.Md5.enabled</span></code></p></td>
<td><p>Enable Comet acceleration for <code class="docutils literal
notranslate"><span class="pre">Md5</span></code></p></td>
<td><p>true</p></td>
</tr>
-<tr class="row-even"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.MicrosToTimestamp.enabled</span></code></p></td>
+<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.MicrosToTimestamp.enabled</span></code></p></td>
<td><p>Enable Comet acceleration for <code class="docutils literal
notranslate"><span class="pre">MicrosToTimestamp</span></code></p></td>
<td><p>true</p></td>
</tr>
-<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.MillisToTimestamp.enabled</span></code></p></td>
+<tr class="row-even"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.MillisToTimestamp.enabled</span></code></p></td>
<td><p>Enable Comet acceleration for <code class="docutils literal
notranslate"><span class="pre">MillisToTimestamp</span></code></p></td>
<td><p>true</p></td>
</tr>
-<tr class="row-even"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.Minute.enabled</span></code></p></td>
+<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.Minute.enabled</span></code></p></td>
<td><p>Enable Comet acceleration for <code class="docutils literal
notranslate"><span class="pre">Minute</span></code></p></td>
<td><p>true</p></td>
</tr>
-<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.MonotonicallyIncreasingID.enabled</span></code></p></td>
+<tr class="row-even"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.MonotonicallyIncreasingID.enabled</span></code></p></td>
<td><p>Enable Comet acceleration for <code class="docutils literal
notranslate"><span class="pre">MonotonicallyIncreasingID</span></code></p></td>
<td><p>true</p></td>
</tr>
-<tr class="row-even"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.Month.enabled</span></code></p></td>
+<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.Month.enabled</span></code></p></td>
<td><p>Enable Comet acceleration for <code class="docutils literal
notranslate"><span class="pre">Month</span></code></p></td>
<td><p>true</p></td>
</tr>
-<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.MonthsBetween.enabled</span></code></p></td>
+<tr class="row-even"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.MonthsBetween.enabled</span></code></p></td>
<td><p>Enable Comet acceleration for <code class="docutils literal
notranslate"><span class="pre">MonthsBetween</span></code></p></td>
<td><p>true</p></td>
</tr>
-<tr class="row-even"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.Multiply.enabled</span></code></p></td>
+<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.Multiply.enabled</span></code></p></td>
<td><p>Enable Comet acceleration for <code class="docutils literal
notranslate"><span class="pre">Multiply</span></code></p></td>
<td><p>true</p></td>
</tr>
-<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.Murmur3Hash.enabled</span></code></p></td>
+<tr class="row-even"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.Murmur3Hash.enabled</span></code></p></td>
<td><p>Enable Comet acceleration for <code class="docutils literal
notranslate"><span class="pre">Murmur3Hash</span></code></p></td>
<td><p>true</p></td>
</tr>
-<tr class="row-even"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.NextDay.enabled</span></code></p></td>
+<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.NextDay.enabled</span></code></p></td>
<td><p>Enable Comet acceleration for <code class="docutils literal
notranslate"><span class="pre">NextDay</span></code></p></td>
<td><p>true</p></td>
</tr>
-<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.Not.enabled</span></code></p></td>
+<tr class="row-even"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.Not.enabled</span></code></p></td>
<td><p>Enable Comet acceleration for <code class="docutils literal
notranslate"><span class="pre">Not</span></code></p></td>
<td><p>true</p></td>
</tr>
-<tr class="row-even"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.OctetLength.enabled</span></code></p></td>
+<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.OctetLength.enabled</span></code></p></td>
<td><p>Enable Comet acceleration for <code class="docutils literal
notranslate"><span class="pre">OctetLength</span></code></p></td>
<td><p>true</p></td>
</tr>
-<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.Or.enabled</span></code></p></td>
+<tr class="row-even"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.Or.enabled</span></code></p></td>
<td><p>Enable Comet acceleration for <code class="docutils literal
notranslate"><span class="pre">Or</span></code></p></td>
<td><p>true</p></td>
</tr>
-<tr class="row-even"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.ParseUrl.enabled</span></code></p></td>
+<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.ParseUrl.enabled</span></code></p></td>
<td><p>Enable Comet acceleration for <code class="docutils literal
notranslate"><span class="pre">ParseUrl</span></code></p></td>
<td><p>true</p></td>
</tr>
-<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.Pi.enabled</span></code></p></td>
+<tr class="row-even"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.Pi.enabled</span></code></p></td>
<td><p>Enable Comet acceleration for <code class="docutils literal
notranslate"><span class="pre">Pi</span></code></p></td>
<td><p>true</p></td>
</tr>
-<tr class="row-even"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.Pow.enabled</span></code></p></td>
+<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.Pow.enabled</span></code></p></td>
<td><p>Enable Comet acceleration for <code class="docutils literal
notranslate"><span class="pre">Pow</span></code></p></td>
<td><p>true</p></td>
</tr>
-<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.Quarter.enabled</span></code></p></td>
+<tr class="row-even"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.Quarter.enabled</span></code></p></td>
<td><p>Enable Comet acceleration for <code class="docutils literal
notranslate"><span class="pre">Quarter</span></code></p></td>
<td><p>true</p></td>
</tr>
-<tr class="row-even"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.RLike.enabled</span></code></p></td>
+<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.RLike.enabled</span></code></p></td>
<td><p>Enable Comet acceleration for <code class="docutils literal
notranslate"><span class="pre">RLike</span></code></p></td>
<td><p>true</p></td>
</tr>
-<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.Rand.enabled</span></code></p></td>
+<tr class="row-even"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.Rand.enabled</span></code></p></td>
<td><p>Enable Comet acceleration for <code class="docutils literal
notranslate"><span class="pre">Rand</span></code></p></td>
<td><p>true</p></td>
</tr>
-<tr class="row-even"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.Randn.enabled</span></code></p></td>
+<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.Randn.enabled</span></code></p></td>
<td><p>Enable Comet acceleration for <code class="docutils literal
notranslate"><span class="pre">Randn</span></code></p></td>
<td><p>true</p></td>
</tr>
-<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.RegExpReplace.enabled</span></code></p></td>
+<tr class="row-even"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.RegExpReplace.enabled</span></code></p></td>
<td><p>Enable Comet acceleration for <code class="docutils literal
notranslate"><span class="pre">RegExpReplace</span></code></p></td>
<td><p>true</p></td>
</tr>
-<tr class="row-even"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.Remainder.enabled</span></code></p></td>
+<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.Remainder.enabled</span></code></p></td>
<td><p>Enable Comet acceleration for <code class="docutils literal
notranslate"><span class="pre">Remainder</span></code></p></td>
<td><p>true</p></td>
</tr>
-<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.Reverse.enabled</span></code></p></td>
+<tr class="row-even"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.Reverse.enabled</span></code></p></td>
<td><p>Enable Comet acceleration for <code class="docutils literal
notranslate"><span class="pre">Reverse</span></code></p></td>
<td><p>true</p></td>
</tr>
-<tr class="row-even"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.Right.enabled</span></code></p></td>
+<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.Right.enabled</span></code></p></td>
<td><p>Enable Comet acceleration for <code class="docutils literal
notranslate"><span class="pre">Right</span></code></p></td>
<td><p>true</p></td>
</tr>
-<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.Rint.enabled</span></code></p></td>
+<tr class="row-even"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.Rint.enabled</span></code></p></td>
<td><p>Enable Comet acceleration for <code class="docutils literal
notranslate"><span class="pre">Rint</span></code></p></td>
<td><p>true</p></td>
</tr>
-<tr class="row-even"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.Round.enabled</span></code></p></td>
+<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.Round.enabled</span></code></p></td>
<td><p>Enable Comet acceleration for <code class="docutils literal
notranslate"><span class="pre">Round</span></code></p></td>
<td><p>true</p></td>
</tr>
-<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.ScalaUDF.enabled</span></code></p></td>
+<tr class="row-even"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.ScalaUDF.enabled</span></code></p></td>
<td><p>Enable Comet acceleration for <code class="docutils literal
notranslate"><span class="pre">ScalaUDF</span></code></p></td>
<td><p>true</p></td>
</tr>
-<tr class="row-even"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.ScalarSubquery.enabled</span></code></p></td>
+<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.ScalarSubquery.enabled</span></code></p></td>
<td><p>Enable Comet acceleration for <code class="docutils literal
notranslate"><span class="pre">ScalarSubquery</span></code></p></td>
<td><p>true</p></td>
</tr>
-<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.Sec.enabled</span></code></p></td>
+<tr class="row-even"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.Sec.enabled</span></code></p></td>
<td><p>Enable Comet acceleration for <code class="docutils literal
notranslate"><span class="pre">Sec</span></code></p></td>
<td><p>true</p></td>
</tr>
-<tr class="row-even"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.Second.enabled</span></code></p></td>
+<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.Second.enabled</span></code></p></td>
<td><p>Enable Comet acceleration for <code class="docutils literal
notranslate"><span class="pre">Second</span></code></p></td>
<td><p>true</p></td>
</tr>
-<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.SecondsToTimestamp.enabled</span></code></p></td>
+<tr class="row-even"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.SecondsToTimestamp.enabled</span></code></p></td>
<td><p>Enable Comet acceleration for <code class="docutils literal
notranslate"><span class="pre">SecondsToTimestamp</span></code></p></td>
<td><p>true</p></td>
</tr>
-<tr class="row-even"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.Sha1.enabled</span></code></p></td>
+<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.Sha1.enabled</span></code></p></td>
<td><p>Enable Comet acceleration for <code class="docutils literal
notranslate"><span class="pre">Sha1</span></code></p></td>
<td><p>true</p></td>
</tr>
-<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.Sha2.enabled</span></code></p></td>
+<tr class="row-even"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.Sha2.enabled</span></code></p></td>
<td><p>Enable Comet acceleration for <code class="docutils literal
notranslate"><span class="pre">Sha2</span></code></p></td>
<td><p>true</p></td>
</tr>
-<tr class="row-even"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.ShiftLeft.enabled</span></code></p></td>
+<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.ShiftLeft.enabled</span></code></p></td>
<td><p>Enable Comet acceleration for <code class="docutils literal
notranslate"><span class="pre">ShiftLeft</span></code></p></td>
<td><p>true</p></td>
</tr>
-<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.ShiftRight.enabled</span></code></p></td>
+<tr class="row-even"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.ShiftRight.enabled</span></code></p></td>
<td><p>Enable Comet acceleration for <code class="docutils literal
notranslate"><span class="pre">ShiftRight</span></code></p></td>
<td><p>true</p></td>
</tr>
-<tr class="row-even"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.ShiftRightUnsigned.enabled</span></code></p></td>
+<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.ShiftRightUnsigned.enabled</span></code></p></td>
<td><p>Enable Comet acceleration for <code class="docutils literal
notranslate"><span class="pre">ShiftRightUnsigned</span></code></p></td>
<td><p>true</p></td>
</tr>
-<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.Signum.enabled</span></code></p></td>
+<tr class="row-even"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.Signum.enabled</span></code></p></td>
<td><p>Enable Comet acceleration for <code class="docutils literal
notranslate"><span class="pre">Signum</span></code></p></td>
<td><p>true</p></td>
</tr>
-<tr class="row-even"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.Sin.enabled</span></code></p></td>
+<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.Sin.enabled</span></code></p></td>
<td><p>Enable Comet acceleration for <code class="docutils literal
notranslate"><span class="pre">Sin</span></code></p></td>
<td><p>true</p></td>
</tr>
-<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.Sinh.enabled</span></code></p></td>
+<tr class="row-even"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.Sinh.enabled</span></code></p></td>
<td><p>Enable Comet acceleration for <code class="docutils literal
notranslate"><span class="pre">Sinh</span></code></p></td>
<td><p>true</p></td>
</tr>
-<tr class="row-even"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.Size.enabled</span></code></p></td>
+<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.Size.enabled</span></code></p></td>
<td><p>Enable Comet acceleration for <code class="docutils literal
notranslate"><span class="pre">Size</span></code></p></td>
<td><p>true</p></td>
</tr>
-<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.Slice.enabled</span></code></p></td>
+<tr class="row-even"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.Slice.enabled</span></code></p></td>
<td><p>Enable Comet acceleration for <code class="docutils literal
notranslate"><span class="pre">Slice</span></code></p></td>
<td><p>true</p></td>
</tr>
-<tr class="row-even"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.SortArray.enabled</span></code></p></td>
+<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.SortArray.enabled</span></code></p></td>
<td><p>Enable Comet acceleration for <code class="docutils literal
notranslate"><span class="pre">SortArray</span></code></p></td>
<td><p>true</p></td>
</tr>
-<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.SortOrder.enabled</span></code></p></td>
+<tr class="row-even"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.SortOrder.enabled</span></code></p></td>
<td><p>Enable Comet acceleration for <code class="docutils literal
notranslate"><span class="pre">SortOrder</span></code></p></td>
<td><p>true</p></td>
</tr>
-<tr class="row-even"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.SparkPartitionID.enabled</span></code></p></td>
+<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.SparkPartitionID.enabled</span></code></p></td>
<td><p>Enable Comet acceleration for <code class="docutils literal
notranslate"><span class="pre">SparkPartitionID</span></code></p></td>
<td><p>true</p></td>
</tr>
-<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.Sqrt.enabled</span></code></p></td>
+<tr class="row-even"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.Sqrt.enabled</span></code></p></td>
<td><p>Enable Comet acceleration for <code class="docutils literal
notranslate"><span class="pre">Sqrt</span></code></p></td>
<td><p>true</p></td>
</tr>
-<tr class="row-even"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.StartsWith.enabled</span></code></p></td>
+<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.StartsWith.enabled</span></code></p></td>
<td><p>Enable Comet acceleration for <code class="docutils literal
notranslate"><span class="pre">StartsWith</span></code></p></td>
<td><p>true</p></td>
</tr>
-<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.StaticInvoke.enabled</span></code></p></td>
+<tr class="row-even"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.StaticInvoke.enabled</span></code></p></td>
<td><p>Enable Comet acceleration for <code class="docutils literal
notranslate"><span class="pre">StaticInvoke</span></code></p></td>
<td><p>true</p></td>
</tr>
-<tr class="row-even"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.StringInstr.enabled</span></code></p></td>
+<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.StringInstr.enabled</span></code></p></td>
<td><p>Enable Comet acceleration for <code class="docutils literal
notranslate"><span class="pre">StringInstr</span></code></p></td>
<td><p>true</p></td>
</tr>
-<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.StringLPad.enabled</span></code></p></td>
+<tr class="row-even"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.StringLPad.enabled</span></code></p></td>
<td><p>Enable Comet acceleration for <code class="docutils literal
notranslate"><span class="pre">StringLPad</span></code></p></td>
<td><p>true</p></td>
</tr>
-<tr class="row-even"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.StringRPad.enabled</span></code></p></td>
+<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.StringRPad.enabled</span></code></p></td>
<td><p>Enable Comet acceleration for <code class="docutils literal
notranslate"><span class="pre">StringRPad</span></code></p></td>
<td><p>true</p></td>
</tr>
-<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.StringRepeat.enabled</span></code></p></td>
+<tr class="row-even"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.StringRepeat.enabled</span></code></p></td>
<td><p>Enable Comet acceleration for <code class="docutils literal
notranslate"><span class="pre">StringRepeat</span></code></p></td>
<td><p>true</p></td>
</tr>
-<tr class="row-even"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.StringReplace.enabled</span></code></p></td>
+<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.StringReplace.enabled</span></code></p></td>
<td><p>Enable Comet acceleration for <code class="docutils literal
notranslate"><span class="pre">StringReplace</span></code></p></td>
<td><p>true</p></td>
</tr>
-<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.StringSpace.enabled</span></code></p></td>
+<tr class="row-even"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.StringSpace.enabled</span></code></p></td>
<td><p>Enable Comet acceleration for <code class="docutils literal
notranslate"><span class="pre">StringSpace</span></code></p></td>
<td><p>true</p></td>
</tr>
-<tr class="row-even"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.StringSplit.enabled</span></code></p></td>
+<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.StringSplit.enabled</span></code></p></td>
<td><p>Enable Comet acceleration for <code class="docutils literal
notranslate"><span class="pre">StringSplit</span></code></p></td>
<td><p>true</p></td>
</tr>
-<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.StringToMap.enabled</span></code></p></td>
+<tr class="row-even"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.StringToMap.enabled</span></code></p></td>
<td><p>Enable Comet acceleration for <code class="docutils literal
notranslate"><span class="pre">StringToMap</span></code></p></td>
<td><p>true</p></td>
</tr>
-<tr class="row-even"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.StringTranslate.enabled</span></code></p></td>
+<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.StringTranslate.enabled</span></code></p></td>
<td><p>Enable Comet acceleration for <code class="docutils literal
notranslate"><span class="pre">StringTranslate</span></code></p></td>
<td><p>true</p></td>
</tr>
-<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.StringTrim.enabled</span></code></p></td>
+<tr class="row-even"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.StringTrim.enabled</span></code></p></td>
<td><p>Enable Comet acceleration for <code class="docutils literal
notranslate"><span class="pre">StringTrim</span></code></p></td>
<td><p>true</p></td>
</tr>
-<tr class="row-even"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.StringTrimBoth.enabled</span></code></p></td>
+<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.StringTrimBoth.enabled</span></code></p></td>
<td><p>Enable Comet acceleration for <code class="docutils literal
notranslate"><span class="pre">StringTrimBoth</span></code></p></td>
<td><p>true</p></td>
</tr>
-<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.StringTrimLeft.enabled</span></code></p></td>
+<tr class="row-even"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.StringTrimLeft.enabled</span></code></p></td>
<td><p>Enable Comet acceleration for <code class="docutils literal
notranslate"><span class="pre">StringTrimLeft</span></code></p></td>
<td><p>true</p></td>
</tr>
-<tr class="row-even"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.StringTrimRight.enabled</span></code></p></td>
+<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.StringTrimRight.enabled</span></code></p></td>
<td><p>Enable Comet acceleration for <code class="docutils literal
notranslate"><span class="pre">StringTrimRight</span></code></p></td>
<td><p>true</p></td>
</tr>
-<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.StructsToCsv.enabled</span></code></p></td>
+<tr class="row-even"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.StructsToCsv.enabled</span></code></p></td>
<td><p>Enable Comet acceleration for <code class="docutils literal
notranslate"><span class="pre">StructsToCsv</span></code></p></td>
<td><p>true</p></td>
</tr>
-<tr class="row-even"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.StructsToJson.enabled</span></code></p></td>
+<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.StructsToJson.enabled</span></code></p></td>
<td><p>Enable Comet acceleration for <code class="docutils literal
notranslate"><span class="pre">StructsToJson</span></code></p></td>
<td><p>true</p></td>
</tr>
-<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.Substring.enabled</span></code></p></td>
+<tr class="row-even"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.Substring.enabled</span></code></p></td>
<td><p>Enable Comet acceleration for <code class="docutils literal
notranslate"><span class="pre">Substring</span></code></p></td>
<td><p>true</p></td>
</tr>
-<tr class="row-even"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.SubstringIndex.enabled</span></code></p></td>
+<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.SubstringIndex.enabled</span></code></p></td>
<td><p>Enable Comet acceleration for <code class="docutils literal
notranslate"><span class="pre">SubstringIndex</span></code></p></td>
<td><p>true</p></td>
</tr>
-<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.Subtract.enabled</span></code></p></td>
+<tr class="row-even"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.Subtract.enabled</span></code></p></td>
<td><p>Enable Comet acceleration for <code class="docutils literal
notranslate"><span class="pre">Subtract</span></code></p></td>
<td><p>true</p></td>
</tr>
-<tr class="row-even"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.Tan.enabled</span></code></p></td>
+<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.Tan.enabled</span></code></p></td>
<td><p>Enable Comet acceleration for <code class="docutils literal
notranslate"><span class="pre">Tan</span></code></p></td>
<td><p>true</p></td>
</tr>
-<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.Tanh.enabled</span></code></p></td>
+<tr class="row-even"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.Tanh.enabled</span></code></p></td>
<td><p>Enable Comet acceleration for <code class="docutils literal
notranslate"><span class="pre">Tanh</span></code></p></td>
<td><p>true</p></td>
</tr>
-<tr class="row-even"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.ToDegrees.enabled</span></code></p></td>
+<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.ToDegrees.enabled</span></code></p></td>
<td><p>Enable Comet acceleration for <code class="docutils literal
notranslate"><span class="pre">ToDegrees</span></code></p></td>
<td><p>true</p></td>
</tr>
-<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.ToRadians.enabled</span></code></p></td>
+<tr class="row-even"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.ToRadians.enabled</span></code></p></td>
<td><p>Enable Comet acceleration for <code class="docutils literal
notranslate"><span class="pre">ToRadians</span></code></p></td>
<td><p>true</p></td>
</tr>
-<tr class="row-even"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.ToUTCTimestamp.enabled</span></code></p></td>
+<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.ToUTCTimestamp.enabled</span></code></p></td>
<td><p>Enable Comet acceleration for <code class="docutils literal
notranslate"><span class="pre">ToUTCTimestamp</span></code></p></td>
<td><p>true</p></td>
</tr>
-<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.ToUnixTimestamp.enabled</span></code></p></td>
+<tr class="row-even"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.ToUnixTimestamp.enabled</span></code></p></td>
<td><p>Enable Comet acceleration for <code class="docutils literal
notranslate"><span class="pre">ToUnixTimestamp</span></code></p></td>
<td><p>true</p></td>
</tr>
-<tr class="row-even"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.TruncDate.enabled</span></code></p></td>
+<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.TruncDate.enabled</span></code></p></td>
<td><p>Enable Comet acceleration for <code class="docutils literal
notranslate"><span class="pre">TruncDate</span></code></p></td>
<td><p>true</p></td>
</tr>
-<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.TruncTimestamp.enabled</span></code></p></td>
+<tr class="row-even"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.TruncTimestamp.enabled</span></code></p></td>
<td><p>Enable Comet acceleration for <code class="docutils literal
notranslate"><span class="pre">TruncTimestamp</span></code></p></td>
<td><p>true</p></td>
</tr>
-<tr class="row-even"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.TryEval.enabled</span></code></p></td>
+<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.TryEval.enabled</span></code></p></td>
<td><p>Enable Comet acceleration for <code class="docutils literal
notranslate"><span class="pre">TryEval</span></code></p></td>
<td><p>true</p></td>
</tr>
-<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.UnaryMinus.enabled</span></code></p></td>
+<tr class="row-even"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.UnaryMinus.enabled</span></code></p></td>
<td><p>Enable Comet acceleration for <code class="docutils literal
notranslate"><span class="pre">UnaryMinus</span></code></p></td>
<td><p>true</p></td>
</tr>
-<tr class="row-even"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.Unhex.enabled</span></code></p></td>
+<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.Unhex.enabled</span></code></p></td>
<td><p>Enable Comet acceleration for <code class="docutils literal
notranslate"><span class="pre">Unhex</span></code></p></td>
<td><p>true</p></td>
</tr>
-<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.UnixDate.enabled</span></code></p></td>
+<tr class="row-even"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.UnixDate.enabled</span></code></p></td>
<td><p>Enable Comet acceleration for <code class="docutils literal
notranslate"><span class="pre">UnixDate</span></code></p></td>
<td><p>true</p></td>
</tr>
-<tr class="row-even"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.UnixMicros.enabled</span></code></p></td>
+<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.UnixMicros.enabled</span></code></p></td>
<td><p>Enable Comet acceleration for <code class="docutils literal
notranslate"><span class="pre">UnixMicros</span></code></p></td>
<td><p>true</p></td>
</tr>
-<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.UnixMillis.enabled</span></code></p></td>
+<tr class="row-even"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.UnixMillis.enabled</span></code></p></td>
<td><p>Enable Comet acceleration for <code class="docutils literal
notranslate"><span class="pre">UnixMillis</span></code></p></td>
<td><p>true</p></td>
</tr>
-<tr class="row-even"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.UnixSeconds.enabled</span></code></p></td>
+<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.UnixSeconds.enabled</span></code></p></td>
<td><p>Enable Comet acceleration for <code class="docutils literal
notranslate"><span class="pre">UnixSeconds</span></code></p></td>
<td><p>true</p></td>
</tr>
-<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.UnixTimestamp.enabled</span></code></p></td>
+<tr class="row-even"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.UnixTimestamp.enabled</span></code></p></td>
<td><p>Enable Comet acceleration for <code class="docutils literal
notranslate"><span class="pre">UnixTimestamp</span></code></p></td>
<td><p>true</p></td>
</tr>
-<tr class="row-even"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.UnscaledValue.enabled</span></code></p></td>
+<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.UnscaledValue.enabled</span></code></p></td>
<td><p>Enable Comet acceleration for <code class="docutils literal
notranslate"><span class="pre">UnscaledValue</span></code></p></td>
<td><p>true</p></td>
</tr>
-<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.Upper.enabled</span></code></p></td>
+<tr class="row-even"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.Upper.enabled</span></code></p></td>
<td><p>Enable Comet acceleration for <code class="docutils literal
notranslate"><span class="pre">Upper</span></code></p></td>
<td><p>true</p></td>
</tr>
-<tr class="row-even"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.WeekDay.enabled</span></code></p></td>
+<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.WeekDay.enabled</span></code></p></td>
<td><p>Enable Comet acceleration for <code class="docutils literal
notranslate"><span class="pre">WeekDay</span></code></p></td>
<td><p>true</p></td>
</tr>
-<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.WeekOfYear.enabled</span></code></p></td>
+<tr class="row-even"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.WeekOfYear.enabled</span></code></p></td>
<td><p>Enable Comet acceleration for <code class="docutils literal
notranslate"><span class="pre">WeekOfYear</span></code></p></td>
<td><p>true</p></td>
</tr>
-<tr class="row-even"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.XxHash64.enabled</span></code></p></td>
+<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.XxHash64.enabled</span></code></p></td>
<td><p>Enable Comet acceleration for <code class="docutils literal
notranslate"><span class="pre">XxHash64</span></code></p></td>
<td><p>true</p></td>
</tr>
-<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.Year.enabled</span></code></p></td>
+<tr class="row-even"><td><p><code class="docutils literal notranslate"><span
class="pre">spark.comet.expression.Year.enabled</span></code></p></td>
<td><p>Enable Comet acceleration for <code class="docutils literal
notranslate"><span class="pre">Year</span></code></p></td>
<td><p>true</p></td>
</tr>
diff --git a/user-guide/latest/understanding-comet-plans.html
b/user-guide/latest/understanding-comet-plans.html
index 9e0ddf6ca7..a13819c5d4 100644
--- a/user-guide/latest/understanding-comet-plans.html
+++ b/user-guide/latest/understanding-comet-plans.html
@@ -660,6 +660,46 @@ operators were arranged after Comet’s serialization). See
the
this output.</p>
</section>
</section>
+<section id="programmatic-access-to-fallback-reasons">
+<h2>Programmatic Access to Fallback Reasons<a class="headerlink"
href="#programmatic-access-to-fallback-reasons" title="Link to this
heading">#</a></h2>
+<p>The configs above route fallback reasons to logs or the SQL UI. If you want
+the reasons for a specific query as data — for example, to assert in a test
+or to drive a custom report — use <code class="docutils literal
notranslate"><span
class="pre">org.apache.comet.ExtendedExplainInfo</span></code>
+directly. It is the same class that backs <code class="docutils literal
notranslate"><span class="pre">spark.comet.explain.format</span></code>, and
+it works on any Spark version because it does not rely on the Spark 4.0
+<code class="docutils literal notranslate"><span
class="pre">extendedExplainProviders</span></code> extension point.</p>
+<div class="highlight-scala notranslate"><div
class="highlight"><pre><span></span><span class="k">import</span><span
class="w"> </span><span class="nn">org</span><span class="p">.</span><span
class="nn">apache</span><span class="p">.</span><span
class="nn">comet</span><span class="p">.</span><span
class="nc">ExtendedExplainInfo</span>
+
+<span class="kd">val</span><span class="w"> </span><span
class="n">df</span><span class="w"> </span><span class="o">=</span><span
class="w"> </span><span class="n">spark</span><span class="p">.</span><span
class="n">sql</span><span class="p">(</span><span class="s">"SELECT
..."</span><span class="p">)</span>
+<span class="kd">val</span><span class="w"> </span><span
class="n">plan</span><span class="w"> </span><span class="o">=</span><span
class="w"> </span><span class="n">df</span><span class="p">.</span><span
class="n">queryExecution</span><span class="p">.</span><span
class="n">executedPlan</span>
+<span class="kd">val</span><span class="w"> </span><span
class="n">info</span><span class="w"> </span><span class="o">=</span><span
class="w"> </span><span class="k">new</span><span class="w"> </span><span
class="nc">ExtendedExplainInfo</span><span class="p">()</span>
+
+<span class="c1">// Sorted, deduplicated list of fallback reasons across the
whole plan.</span>
+<span class="kd">val</span><span class="w"> </span><span
class="n">reasons</span><span class="p">:</span><span class="w"> </span><span
class="nc">Seq</span><span class="p">[</span><span
class="nc">String</span><span class="p">]</span><span class="w"> </span><span
class="o">=</span><span class="w"> </span><span class="n">info</span><span
class="p">.</span><span class="n">getFallbackReasons</span><span
class="p">(</span><span class="n">plan</span><span class="p">)</span>
+
+<span class="c1">// Formatted string. Honors spark.comet.explain.format:</span>
+<span class="c1">// - "verbose" -> the full plan annotated
with per-node fallback reasons</span>
+<span class="c1">// - "fallback" -> just the list of
reasons</span>
+<span class="kd">val</span><span class="w"> </span><span
class="n">formatted</span><span class="p">:</span><span class="w"> </span><span
class="nc">String</span><span class="w"> </span><span class="o">=</span><span
class="w"> </span><span class="n">info</span><span class="p">.</span><span
class="n">generateExtendedInfo</span><span class="p">(</span><span
class="n">plan</span><span class="p">)</span>
+</pre></div>
+</div>
+<p>Example:</p>
+<div class="highlight-default notranslate"><div
class="highlight"><pre><span></span><span class="n">val</span> <span
class="n">df</span> <span class="o">=</span> <span class="n">spark</span><span
class="o">.</span><span class="n">sql</span><span class="p">(</span><span
class="s2">"SELECT from_unixtime(eventTime) FROM events"</span><span
class="p">)</span>
+
+<span class="n">val</span> <span class="n">plan</span> <span
class="o">=</span> <span class="n">df</span><span class="o">.</span><span
class="n">queryExecution</span><span class="o">.</span><span
class="n">executedPlan</span>
+<span class="n">val</span> <span class="n">info</span> <span
class="o">=</span> <span class="n">new</span> <span class="n">org</span><span
class="o">.</span><span class="n">apache</span><span class="o">.</span><span
class="n">comet</span><span class="o">.</span><span
class="n">ExtendedExplainInfo</span><span class="p">()</span>
+<span class="n">println</span><span class="p">(</span><span
class="n">info</span><span class="o">.</span><span
class="n">generateExtendedInfo</span><span class="p">(</span><span
class="n">plan</span><span class="p">))</span>
+</pre></div>
+</div>
+<p>Output</p>
+<div class="highlight-default notranslate"><div
class="highlight"><pre><span></span><span class="n">Project</span> <span
class="p">[</span><span class="n">COMET</span><span class="p">:</span> <span
class="n">from_unixtime</span><span class="p">(</span><span
class="n">eventTime</span><span class="c1">#5L, yyyy-MM-dd HH:mm:ss, Some(GMT))
is not fully compatible with Spark. To enable it anyway, set
spark.comet.expression.FromUnixTime.allowIncompatible=true. For more
information, refer to th [...]
+<span class="o">+-</span> <span class="n">CometNativeColumnarToRow</span>
+ <span class="o">+-</span> <span class="n">CometNativeScan</span> <span
class="n">parquet</span>
+
+<span class="n">Comet</span> <span class="n">accelerated</span> <span
class="mi">1</span> <span class="n">out</span> <span class="n">of</span> <span
class="mi">2</span> <span class="n">eligible</span> <span
class="n">operators</span> <span class="p">(</span><span
class="mi">50</span><span class="o">%</span><span class="p">)</span><span
class="o">.</span> <span class="n">Final</span> <span class="n">plan</span>
<span class="n">contains</span> <span class="mi">1</span> <span class="n">tran
[...]
+</pre></div>
+</div>
+</section>
<section id="comet-operator-reference">
<h2>Comet Operator Reference<a class="headerlink"
href="#comet-operator-reference" title="Link to this heading">#</a></h2>
<p>The following sections describe the Comet nodes you will see in plans,
grouped
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]