Skip to content

Commit bc52c6e

Browse files
committed
upmerge
2 parents bcf04bb + 57780bc commit bc52c6e

40 files changed

Lines changed: 4029 additions & 1526 deletions

.github/workflows/pr_build_linux.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,7 @@ jobs:
122122
org.apache.comet.exec.CometAsyncShuffleSuite
123123
org.apache.comet.exec.DisableAQECometShuffleSuite
124124
org.apache.comet.exec.DisableAQECometAsyncShuffleSuite
125+
org.apache.spark.shuffle.sort.SpillSorterSuite
125126
- name: "parquet"
126127
value: |
127128
org.apache.comet.parquet.CometParquetWriterSuite
@@ -160,6 +161,7 @@ jobs:
160161
value: |
161162
org.apache.comet.CometExpressionSuite
162163
org.apache.comet.CometExpressionCoverageSuite
164+
org.apache.comet.CometHashExpressionSuite
163165
org.apache.comet.CometTemporalExpressionSuite
164166
org.apache.comet.CometArrayExpressionSuite
165167
org.apache.comet.CometCastSuite

.github/workflows/pr_build_macos.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,7 @@ jobs:
8585
org.apache.comet.exec.CometAsyncShuffleSuite
8686
org.apache.comet.exec.DisableAQECometShuffleSuite
8787
org.apache.comet.exec.DisableAQECometAsyncShuffleSuite
88+
org.apache.spark.shuffle.sort.SpillSorterSuite
8889
- name: "parquet"
8990
value: |
9091
org.apache.comet.parquet.CometParquetWriterSuite
@@ -123,6 +124,7 @@ jobs:
123124
value: |
124125
org.apache.comet.CometExpressionSuite
125126
org.apache.comet.CometExpressionCoverageSuite
127+
org.apache.comet.CometHashExpressionSuite
126128
org.apache.comet.CometTemporalExpressionSuite
127129
org.apache.comet.CometArrayExpressionSuite
128130
org.apache.comet.CometCastSuite

README.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,14 @@ under the License.
2121

2222
[![Apache licensed][license-badge]][license-url]
2323
[![Discord chat][discord-badge]][discord-url]
24+
[![Pending PRs][pending-pr-badge]][pending-pr-url]
2425

2526
[license-badge]: https://img.shields.io/badge/license-Apache%20v2-blue.svg
2627
[license-url]: https://github.com/apache/datafusion-comet/blob/main/LICENSE.txt
2728
[discord-badge]: https://img.shields.io/discord/885562378132000778.svg?logo=discord&style=flat-square
2829
[discord-url]: https://discord.gg/3EAr4ZX6JK
30+
[pending-pr-badge]: https://img.shields.io/github/issues-search/apache/datafusion-comet?query=is%3Apr+is%3Aopen+draft%3Afalse+review%3Arequired+status%3Asuccess&label=Pending%20PRs&logo=github
31+
[pending-pr-url]: https://github.com/apache/datafusion-comet/pulls?q=is%3Apr+is%3Aopen+draft%3Afalse+review%3Arequired+status%3Asuccess+sort%3Aupdated-desc
2932

3033
<img src="docs/source/_static/images/DataFusionComet-Logo-Light.png" width="512" alt="logo"/>
3134

benchmarks/pyspark/run_all_benchmarks.sh

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ set -e
2525

2626
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
2727
DATA_PATH="${1:-/tmp/shuffle-benchmark-data}"
28-
COMET_JAR="${COMET_JAR:-$SCRIPT_DIR/../spark/target/comet-spark-spark3.5_2.12-0.13.0-SNAPSHOT.jar}"
28+
COMET_JAR="${COMET_JAR:-$SCRIPT_DIR/../../spark/target/comet-spark-spark3.5_2.12-0.13.0-SNAPSHOT.jar}"
2929
SPARK_MASTER="${SPARK_MASTER:-local[*]}"
3030
EXECUTOR_MEMORY="${EXECUTOR_MEMORY:-16g}"
3131
EVENT_LOG_DIR="${EVENT_LOG_DIR:-/tmp/spark-events}"
@@ -71,9 +71,10 @@ $SPARK_HOME/bin/spark-submit \
7171
--conf spark.memory.offHeap.enabled=true \
7272
--conf spark.memory.offHeap.size=16g \
7373
--conf spark.comet.enabled=true \
74-
--conf spark.comet.exec.enabled=true \
75-
--conf spark.comet.exec.all.enabled=true \
76-
--conf spark.comet.exec.shuffle.enabled=true \
74+
--conf spark.comet.operator.DataWritingCommandExec.allowIncompatible=true \
75+
--conf spark.comet.parquet.write.enabled=true \
76+
--conf spark.comet.logFallbackReasons.enabled=true \
77+
--conf spark.comet.explainFallback.enabled=true \
7778
--conf spark.comet.shuffle.mode=jvm \
7879
--conf spark.comet.exec.shuffle.mode=jvm \
7980
--conf spark.comet.exec.replaceSortMergeJoin=true \
@@ -98,9 +99,10 @@ $SPARK_HOME/bin/spark-submit \
9899
--conf spark.memory.offHeap.enabled=true \
99100
--conf spark.memory.offHeap.size=16g \
100101
--conf spark.comet.enabled=true \
101-
--conf spark.comet.exec.enabled=true \
102-
--conf spark.comet.exec.all.enabled=true \
103-
--conf spark.comet.exec.shuffle.enabled=true \
102+
--conf spark.comet.operator.DataWritingCommandExec.allowIncompatible=true \
103+
--conf spark.comet.parquet.write.enabled=true \
104+
--conf spark.comet.logFallbackReasons.enabled=true \
105+
--conf spark.comet.explainFallback.enabled=true \
104106
--conf spark.comet.exec.shuffle.mode=native \
105107
--conf spark.comet.exec.replaceSortMergeJoin=true \
106108
--conf spark.shuffle.manager=org.apache.spark.sql.comet.execution.shuffle.CometShuffleManager \

common/src/main/scala/org/apache/comet/CometConf.scala

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,10 @@ object CometConf extends ShimCometConf {
111111
.booleanConf
112112
.createWithDefault(false)
113113

114+
// Deprecated: native_comet uses mutable buffers incompatible with Arrow FFI best practices
115+
// and does not support complex types. Use native_iceberg_compat or auto instead.
116+
// See: https://github.com/apache/datafusion-comet/issues/2186
117+
@deprecated("Use SCAN_AUTO instead", "0.9.0")
114118
val SCAN_NATIVE_COMET = "native_comet"
115119
val SCAN_NATIVE_DATAFUSION = "native_datafusion"
116120
val SCAN_NATIVE_ICEBERG_COMPAT = "native_iceberg_compat"
@@ -121,11 +125,14 @@ object CometConf extends ShimCometConf {
121125
.doc(
122126
s"The implementation of Comet Native Scan to use. Available modes are `$SCAN_NATIVE_COMET`," +
123127
s"`$SCAN_NATIVE_DATAFUSION`, and `$SCAN_NATIVE_ICEBERG_COMPAT`. " +
124-
s"`$SCAN_NATIVE_COMET` is for the original Comet native scan which uses a jvm based " +
125-
"parquet file reader and native column decoding. Supports simple types only " +
126-
s"`$SCAN_NATIVE_DATAFUSION` is a fully native implementation of scan based on DataFusion" +
127-
s"`$SCAN_NATIVE_ICEBERG_COMPAT` is a native implementation that exposes apis to read " +
128-
s"parquet columns natively. `$SCAN_AUTO` chooses the best scan.")
128+
s"`$SCAN_NATIVE_COMET` (DEPRECATED) is for the original Comet native scan which " +
129+
"uses a jvm based parquet file reader and native column decoding. " +
130+
"Supports simple types only. " +
131+
s"`$SCAN_NATIVE_DATAFUSION` is a fully native implementation of scan based on " +
132+
"DataFusion. " +
133+
s"`$SCAN_NATIVE_ICEBERG_COMPAT` is the recommended native implementation that " +
134+
"exposes apis to read parquet columns natively and supports complex types. " +
135+
s"`$SCAN_AUTO` (default) chooses the best scan.")
129136
.internal()
130137
.stringConf
131138
.transform(_.toLowerCase(Locale.ROOT))

dev/ensure-jars-have-correct-contents.sh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,7 @@ allowed_expr+="|^org/apache/spark/shuffle/$"
8686
allowed_expr+="|^org/apache/spark/shuffle/sort/$"
8787
allowed_expr+="|^org/apache/spark/shuffle/sort/CometShuffleExternalSorter.*$"
8888
allowed_expr+="|^org/apache/spark/shuffle/sort/RowPartition.class$"
89+
allowed_expr+="|^org/apache/spark/shuffle/sort/SpillSorter.*$"
8990
allowed_expr+="|^org/apache/spark/shuffle/comet/.*$"
9091
allowed_expr+="|^org/apache/spark/sql/$"
9192
# allow ExplainPlanGenerator trait since it may not be available in older Spark versions

docs/source/contributor-guide/adding_a_new_expression.md

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -236,6 +236,29 @@ test("unhex") {
236236
}
237237
```
238238

239+
#### Testing with Literal Values
240+
241+
When writing tests that use literal values (e.g., `SELECT my_func('literal')`), Spark's constant folding optimizer may evaluate the expression at planning time rather than execution time. This means your Comet implementation might not actually be exercised during the test.
242+
243+
To ensure literal expressions are executed by Comet, disable the constant folding optimizer:
244+
245+
```scala
246+
test("my_func with literals") {
247+
withSQLConf(SQLConf.OPTIMIZER_EXCLUDED_RULES.key ->
248+
"org.apache.spark.sql.catalyst.optimizer.ConstantFolding") {
249+
checkSparkAnswerAndOperator("SELECT my_func('literal_value')")
250+
}
251+
}
252+
```
253+
254+
This is particularly important for:
255+
256+
- Edge case tests using specific literal values (e.g., null handling, overflow conditions)
257+
- Tests verifying behavior with special input values
258+
- Any test where the expression inputs are entirely literal
259+
260+
When possible, prefer testing with column references from tables (as shown in the `unhex` example above), which naturally avoids the constant folding issue.
261+
239262
### Adding the Expression To the Protobuf Definition
240263

241264
Once you have the expression implemented in Scala, you might need to update the protobuf definition to include the new expression. You may not need to do this if the expression is already covered by the existing protobuf definition (e.g. you're adding a new scalar function that uses the `ScalarFunc` message).

docs/source/user-guide/latest/compatibility.md

Lines changed: 95 additions & 99 deletions
Original file line numberDiff line numberDiff line change
@@ -73,122 +73,118 @@ should not be used in production. The feature will be enabled in a future releas
7373

7474
Cast operations in Comet fall into three levels of support:
7575

76-
- **Compatible**: The results match Apache Spark
77-
- **Incompatible**: The results may match Apache Spark for some inputs, but there are known issues where some inputs
76+
- **C (Compatible)**: The results match Apache Spark
77+
- **I (Incompatible)**: The results may match Apache Spark for some inputs, but there are known issues where some inputs
7878
will result in incorrect results or exceptions. The query stage will fall back to Spark by default. Setting
7979
`spark.comet.expression.Cast.allowIncompatible=true` will allow all incompatible casts to run natively in Comet, but this is not
8080
recommended for production use.
81-
- **Unsupported**: Comet does not provide a native version of this cast expression and the query stage will fall back to
81+
- **U (Unsupported)**: Comet does not provide a native version of this cast expression and the query stage will fall back to
8282
Spark.
83+
- **N/A**: Spark does not support this cast.
8384

84-
### Compatible Casts
85+
### Legacy Mode
8586

86-
The following cast operations are generally compatible with Spark except for the differences noted here.
87+
<!-- WARNING! DO NOT MANUALLY MODIFY CONTENT BETWEEN THE BEGIN AND END TAGS -->
88+
89+
<!--BEGIN:CAST_LEGACY_TABLE-->
90+
<!-- prettier-ignore-start -->
91+
| | binary | boolean | byte | date | decimal | double | float | integer | long | short | string | timestamp |
92+
|---|---|---|---|---|---|---|---|---|---|---|---|---|
93+
| binary | - | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A | C | N/A |
94+
| boolean | N/A | - | C | N/A | U | C | C | C | C | C | C | U |
95+
| byte | U | C | - | N/A | C | C | C | C | C | C | C | U |
96+
| date | N/A | U | U | - | U | U | U | U | U | U | C | U |
97+
| decimal | N/A | C | C | N/A | - | C | C | C | C | C | C | U |
98+
| double | N/A | C | C | N/A | I | - | C | C | C | C | C | U |
99+
| float | N/A | C | C | N/A | I | C | - | C | C | C | C | U |
100+
| integer | U | C | C | N/A | C | C | C | - | C | C | C | U |
101+
| long | U | C | C | N/A | C | C | C | C | - | C | C | U |
102+
| short | U | C | C | N/A | C | C | C | C | C | - | C | U |
103+
| string | C | C | C | C | I | C | C | C | C | C | - | I |
104+
| timestamp | N/A | U | U | C | U | U | U | U | C | U | C | - |
105+
<!-- prettier-ignore-end -->
106+
107+
**Notes:**
108+
109+
- **decimal -> string**: There can be formatting differences in some case due to Spark using scientific notation where Comet does not
110+
- **double -> decimal**: There can be rounding differences
111+
- **double -> string**: There can be differences in precision. For example, the input "1.4E-45" will produce 1.0E-45 instead of 1.4E-45
112+
- **float -> decimal**: There can be rounding differences
113+
- **float -> string**: There can be differences in precision. For example, the input "1.4E-45" will produce 1.0E-45 instead of 1.4E-45
114+
- **string -> date**: Only supports years between 262143 BC and 262142 AD
115+
- **string -> decimal**: Does not support fullwidth unicode digits (e.g \\uFF10)
116+
or strings containing null bytes (e.g \\u0000)
117+
- **string -> timestamp**: Not all valid formats are supported
118+
<!--END:CAST_LEGACY_TABLE-->
119+
120+
### Try Mode
87121

88122
<!-- WARNING! DO NOT MANUALLY MODIFY CONTENT BETWEEN THE BEGIN AND END TAGS -->
89123

90-
<!--BEGIN:COMPAT_CAST_TABLE-->
124+
<!--BEGIN:CAST_TRY_TABLE-->
91125
<!-- prettier-ignore-start -->
92-
| From Type | To Type | Notes |
93-
|-|-|-|
94-
| boolean | byte | |
95-
| boolean | short | |
96-
| boolean | integer | |
97-
| boolean | long | |
98-
| boolean | float | |
99-
| boolean | double | |
100-
| boolean | string | |
101-
| byte | boolean | |
102-
| byte | short | |
103-
| byte | integer | |
104-
| byte | long | |
105-
| byte | float | |
106-
| byte | double | |
107-
| byte | decimal | |
108-
| byte | string | |
109-
| short | boolean | |
110-
| short | byte | |
111-
| short | integer | |
112-
| short | long | |
113-
| short | float | |
114-
| short | double | |
115-
| short | decimal | |
116-
| short | string | |
117-
| integer | boolean | |
118-
| integer | byte | |
119-
| integer | short | |
120-
| integer | long | |
121-
| integer | float | |
122-
| integer | double | |
123-
| integer | decimal | |
124-
| integer | string | |
125-
| long | boolean | |
126-
| long | byte | |
127-
| long | short | |
128-
| long | integer | |
129-
| long | float | |
130-
| long | double | |
131-
| long | decimal | |
132-
| long | string | |
133-
| float | boolean | |
134-
| float | byte | |
135-
| float | short | |
136-
| float | integer | |
137-
| float | long | |
138-
| float | double | |
139-
| float | string | There can be differences in precision. For example, the input "1.4E-45" will produce 1.0E-45 instead of 1.4E-45 |
140-
| double | boolean | |
141-
| double | byte | |
142-
| double | short | |
143-
| double | integer | |
144-
| double | long | |
145-
| double | float | |
146-
| double | string | There can be differences in precision. For example, the input "1.4E-45" will produce 1.0E-45 instead of 1.4E-45 |
147-
| decimal | boolean | |
148-
| decimal | byte | |
149-
| decimal | short | |
150-
| decimal | integer | |
151-
| decimal | long | |
152-
| decimal | float | |
153-
| decimal | double | |
154-
| decimal | decimal | |
155-
| decimal | string | There can be formatting differences in some case due to Spark using scientific notation where Comet does not |
156-
| string | boolean | |
157-
| string | byte | |
158-
| string | short | |
159-
| string | integer | |
160-
| string | long | |
161-
| string | float | |
162-
| string | double | |
163-
| string | binary | |
164-
| string | date | Only supports years between 262143 BC and 262142 AD |
165-
| binary | string | |
166-
| date | string | |
167-
| timestamp | long | |
168-
| timestamp | string | |
169-
| timestamp | date | |
126+
| | binary | boolean | byte | date | decimal | double | float | integer | long | short | string | timestamp |
127+
|---|---|---|---|---|---|---|---|---|---|---|---|---|
128+
| binary | - | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A | C | N/A |
129+
| boolean | N/A | - | C | N/A | U | C | C | C | C | C | C | U |
130+
| byte | U | C | - | N/A | C | C | C | C | C | C | C | U |
131+
| date | N/A | U | U | - | U | U | U | U | U | U | C | U |
132+
| decimal | N/A | C | C | N/A | - | C | C | C | C | C | C | U |
133+
| double | N/A | C | C | N/A | I | - | C | C | C | C | C | U |
134+
| float | N/A | C | C | N/A | I | C | - | C | C | C | C | U |
135+
| integer | U | C | C | N/A | C | C | C | - | C | C | C | U |
136+
| long | U | C | C | N/A | C | C | C | C | - | C | C | U |
137+
| short | U | C | C | N/A | C | C | C | C | C | - | C | U |
138+
| string | C | C | C | C | I | C | C | C | C | C | - | I |
139+
| timestamp | N/A | U | U | C | U | U | U | U | C | U | C | - |
170140
<!-- prettier-ignore-end -->
171-
<!--END:COMPAT_CAST_TABLE-->
172141

173-
### Incompatible Casts
142+
**Notes:**
174143

175-
The following cast operations are not compatible with Spark for all inputs and are disabled by default.
144+
- **decimal -> string**: There can be formatting differences in some case due to Spark using scientific notation where Comet does not
145+
- **double -> decimal**: There can be rounding differences
146+
- **double -> string**: There can be differences in precision. For example, the input "1.4E-45" will produce 1.0E-45 instead of 1.4E-45
147+
- **float -> decimal**: There can be rounding differences
148+
- **float -> string**: There can be differences in precision. For example, the input "1.4E-45" will produce 1.0E-45 instead of 1.4E-45
149+
- **string -> date**: Only supports years between 262143 BC and 262142 AD
150+
- **string -> decimal**: Does not support fullwidth unicode digits (e.g \\uFF10)
151+
or strings containing null bytes (e.g \\u0000)
152+
- **string -> timestamp**: Not all valid formats are supported
153+
<!--END:CAST_TRY_TABLE-->
154+
155+
### ANSI Mode
176156

177157
<!-- WARNING! DO NOT MANUALLY MODIFY CONTENT BETWEEN THE BEGIN AND END TAGS -->
178158

179-
<!--BEGIN:INCOMPAT_CAST_TABLE-->
159+
<!--BEGIN:CAST_ANSI_TABLE-->
180160
<!-- prettier-ignore-start -->
181-
| From Type | To Type | Notes |
182-
|-|-|-|
183-
| float | decimal | There can be rounding differences |
184-
| double | decimal | There can be rounding differences |
185-
| string | decimal | Does not support fullwidth unicode digits (e.g \\uFF10)
186-
or strings containing null bytes (e.g \\u0000) |
187-
| string | timestamp | Not all valid formats are supported |
161+
| | binary | boolean | byte | date | decimal | double | float | integer | long | short | string | timestamp |
162+
|---|---|---|---|---|---|---|---|---|---|---|---|---|
163+
| binary | - | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A | C | N/A |
164+
| boolean | N/A | - | C | N/A | U | C | C | C | C | C | C | U |
165+
| byte | U | C | - | N/A | C | C | C | C | C | C | C | U |
166+
| date | N/A | U | U | - | U | U | U | U | U | U | C | U |
167+
| decimal | N/A | C | C | N/A | - | C | C | C | C | C | C | U |
168+
| double | N/A | C | C | N/A | I | - | C | C | C | C | C | U |
169+
| float | N/A | C | C | N/A | I | C | - | C | C | C | C | U |
170+
| integer | U | C | C | N/A | C | C | C | - | C | C | C | U |
171+
| long | U | C | C | N/A | C | C | C | C | - | C | C | U |
172+
| short | U | C | C | N/A | C | C | C | C | C | - | C | U |
173+
| string | C | C | C | C | I | C | C | C | C | C | - | I |
174+
| timestamp | N/A | U | U | C | U | U | U | U | C | U | C | - |
188175
<!-- prettier-ignore-end -->
189-
<!--END:INCOMPAT_CAST_TABLE-->
190176

191-
### Unsupported Casts
177+
**Notes:**
178+
179+
- **decimal -> string**: There can be formatting differences in some case due to Spark using scientific notation where Comet does not
180+
- **double -> decimal**: There can be rounding differences
181+
- **double -> string**: There can be differences in precision. For example, the input "1.4E-45" will produce 1.0E-45 instead of 1.4E-45
182+
- **float -> decimal**: There can be rounding differences
183+
- **float -> string**: There can be differences in precision. For example, the input "1.4E-45" will produce 1.0E-45 instead of 1.4E-45
184+
- **string -> date**: Only supports years between 262143 BC and 262142 AD
185+
- **string -> decimal**: Does not support fullwidth unicode digits (e.g \\uFF10)
186+
or strings containing null bytes (e.g \\u0000)
187+
- **string -> timestamp**: ANSI mode not supported
188+
<!--END:CAST_ANSI_TABLE-->
192189

193-
Any cast not listed in the previous tables is currently unsupported. We are working on adding more. See the
194-
[tracking issue](https://github.com/apache/datafusion-comet/issues/286) for more details.
190+
See the [tracking issue](https://github.com/apache/datafusion-comet/issues/286) for more details.

docs/source/user-guide/latest/configs.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -234,6 +234,7 @@ These settings can be used to determine which parts of the plan are accelerated
234234
| `spark.comet.expression.CreateArray.enabled` | Enable Comet acceleration for `CreateArray` | true |
235235
| `spark.comet.expression.CreateNamedStruct.enabled` | Enable Comet acceleration for `CreateNamedStruct` | true |
236236
| `spark.comet.expression.DateAdd.enabled` | Enable Comet acceleration for `DateAdd` | true |
237+
| `spark.comet.expression.DateFormatClass.enabled` | Enable Comet acceleration for `DateFormatClass` | true |
237238
| `spark.comet.expression.DateSub.enabled` | Enable Comet acceleration for `DateSub` | true |
238239
| `spark.comet.expression.DayOfMonth.enabled` | Enable Comet acceleration for `DayOfMonth` | true |
239240
| `spark.comet.expression.DayOfWeek.enabled` | Enable Comet acceleration for `DayOfWeek` | true |
@@ -333,6 +334,7 @@ These settings can be used to determine which parts of the plan are accelerated
333334
| `spark.comet.expression.TruncTimestamp.enabled` | Enable Comet acceleration for `TruncTimestamp` | true |
334335
| `spark.comet.expression.UnaryMinus.enabled` | Enable Comet acceleration for `UnaryMinus` | true |
335336
| `spark.comet.expression.Unhex.enabled` | Enable Comet acceleration for `Unhex` | true |
337+
| `spark.comet.expression.UnixDate.enabled` | Enable Comet acceleration for `UnixDate` | true |
336338
| `spark.comet.expression.UnscaledValue.enabled` | Enable Comet acceleration for `UnscaledValue` | true |
337339
| `spark.comet.expression.Upper.enabled` | Enable Comet acceleration for `Upper` | true |
338340
| `spark.comet.expression.WeekDay.enabled` | Enable Comet acceleration for `WeekDay` | true |

0 commit comments

Comments
 (0)