You are viewing a plain text version of this content. The canonical link for it is here.
Posted to github@datafusion.apache.org by "andygrove (via GitHub)" <gi...@apache.org> on 2026/10/04 18:46:13 UTC
[I] test: move conditional, JSON, CSV, Variant and other expression coverage to Comet SQL tests [datafusion-comet]
andygrove opened a new issue, #6635:
URL: https://github.com/apache/datafusion-comet/issues/6635
Part of #6615.
## What / Why
This issue covers the remaining smaller expression areas:
- conditional and predicates: `CometIfSuite`, `CometCaseWhenSuite`, `CometCoalesceSuite`, and `IN` / `InSet` / `<=>` / boolean tests in `CometExpressionSuite`;
- JSON: `CometJsonExpressionSuite`, `CometJsonJvmSuite`;
- CSV: `CometCsvExpressionSuite`;
- `uuid`: `CometUuidExpressionSuite`;
- `width_bucket` enable/disable: both `CometWidthBucketSuite` copies;
- Variant: `CometVariantProjectionSuite`;
- nondeterministic functions (`rand`, `randn`, `spark_partition_id`, `monotonically_increasing_id`) and fallback-reason plumbing in `CometExpressionSuite`.
It also accounts for several serde-level suites that stay in Scala: `CometLiteralSuite`, `CometScalarFunctionSuite`, `CometToPrettyStringSuite`, `CometSparkInternalFunctionsSuite` and `CometVariantTypeSuite`.
Static analysis on `main` at 3bc2faa934 found the following:
| Suite | Covered | Convert | Blocked | Split | Keep | Total |
|---|---|---|---|---|---|---|
| `CometNativeCastSuite` | 0 | 1 | 0 | 0 | 0 | 1 |
| `CometExpressionSuite` | 3 | 13 | 1 | 1 | 14 | 32 |
| `CometJsonExpressionSuite` | 1 | 7 | 0 | 0 | 0 | 8 |
| `CometJsonJvmSuite` | 1 | 2 | 0 | 0 | 0 | 3 |
| `CometCsvExpressionSuite` | 0 | 2 | 0 | 0 | 0 | 2 |
| `CometUuidExpressionSuite` | 0 | 0 | 0 | 2 | 0 | 2 |
| `CometIfSuite` | 0 | 1 | 0 | 0 | 0 | 1 |
| `CometCaseWhenSuite` | 0 | 1 | 0 | 0 | 0 | 1 |
| `CometCoalesceSuite` | 0 | 3 | 0 | 0 | 0 | 3 |
| `CometWidthBucketSuite (spark-3.5)` | 0 | 1 | 0 | 0 | 0 | 1 |
| `CometWidthBucketSuite (spark-4.x)` | 0 | 1 | 0 | 0 | 0 | 1 |
| `CometToPrettyStringSuite (spark-3.5)` | 0 | 0 | 0 | 0 | 2 | 2 |
| `CometToPrettyStringSuite (spark-4.x)` | 0 | 0 | 0 | 0 | 2 | 2 |
| `CometSparkInternalFunctionsSuite (spark-3.5)` | 0 | 0 | 0 | 0 | 1 | 1 |
| `CometSparkInternalFunctionsSuite (spark-4.x)` | 0 | 0 | 0 | 0 | 1 | 1 |
| `CometLiteralSuite` | 0 | 0 | 2 | 0 | 2 | 4 |
| `CometScalarFunctionSuite` | 0 | 0 | 0 | 0 | 14 | 14 |
| `CometVariantTypeSuite` | 0 | 0 | 0 | 0 | 1 | 1 |
| `CometVariantProjectionSuite` | 0 | 6 | 0 | 1 | 6 | 13 |
| **Total** | **5** | **38** | **3** | **4** | **43** | **93** |
## Work
Line numbers refer to `CometExpressionSuite` unless a suite is named.
**Conditional and predicates**
- `conditional/if_expr.sql` (`CometIfSuite` L27): `IF(c1 < 2, 1111, 2222)` (int-literal branches over a column predicate), `IF(c1 < c3, ...)`, and the string variant.
- `conditional/case_when.sql` (`CometCaseWhenSuite` L27)
- The six int-literal CASE shapes.
- The `WHEN NULL` branch is simplified away in both suites, so there's nothing to keep for it.
- `conditional/coalesce.sql` (`CometCoalesceSuite` L29, L54)
- `coalesce(cast(t1 AS date), cast(t2 AS date), d)`, the #168 shape.
- String coalesce. Only `coalesce(s1, 1)` and `coalesce(s2, s1)` survive `NullPropagation`; the other four Scala expressions never reached Comet.
- `conditional/case_when_lazy.sql` (`CometCoalesceSuite` L42): `coalesce(a, CAST(a AS TINYINT))`. The file's ANSI ConfigMatrix supplies the ANSI leg.
- `conditional/case_when_dictionary.sql` (new, `CometNativeCastSuite` L2540, #2038)
- `parquet.enable.dictionary=true`, and `INSERT INTO t SELECT id < 5000, 'one' FROM range(10000)`.
- Query: `CASE WHEN (b = true) THEN s ELSE '' END`.
- `conditional/in_set.sql` + `conditional/in_set_inset.sql` (new) (L2110)
- Split by the inSet threshold so queries can use `expect_native(in)` and `expect_native(inset)`, plus a ConfigMatrix over the codegen flag.
- Today `in_set.sql` uses a plain `query` where the Scala test pins the mechanism in both codegen modes.
- `conditional/in_nested_zero.sql` (L505)
- A scalar `a IN (b, 13.0D)` with signed zeros, using `expect_native(in)` under `filterPushdown=false`.
- Fix the file's InSet leg. Its `array(CAST(...))` candidates aren't Literals once ConstantFolding is excluded, so the `inSetConversionThreshold=0` run never produces InSet, despite its comment.
- `conditional/in_float_signed_zero.sql` + `inset_float_signed_zero.sql` (new; L447, convertible half): ±0.0 and NULL literal candidates (`-0.0F`, `-0.0D`).
- `conditional/predicates.sql` (L2086): the eight `IS [NOT] TRUE/FALSE` and `[NOT] _2 <=> true/false` WHERE predicates over a nullable boolean column.
- `conditional/deep_boolean_chains.sql` (new, L3828)
- 200-term AND and OR chains, written with explicit nested parentheses. Spark's parser rebalances AND/OR chains that have none.
- Check that 200 levels of parentheses parse.
**JSON and CSV**
- `struct/structs_to_json.sql` (`CometJsonExpressionSuite` L51)
- Add ordinary fractional, Min/Max and -0.0 floats and doubles. The fixture's float columns hold only NaN, ±Infinity, 0.0 and NULL.
- Add strings with control and supplementary characters.
- `struct/json_to_structs_native.sql` (new, `JsonToStructs.allowIncompatible=true`): `CometJsonExpressionSuite` L88-L188.
- Basic and all-primitive schemas.
- Null and error rows: missing field, explicit null, invalid JSON, `{}`, `null` and NULL.
- `IS NULL` and field access on a NULL input, a nested struct schema, and type-mismatch rows.
- **No fixture reaches native `from_json` today.**
- `struct/json_to_structs.sql` (`CometJsonJvmSuite` L59, L65)
- Switch lines 24 and 28 from `spark_answer_only` to `query`, or to `expect_dispatch(from_json)`. They date from #3328, and `from_json` became dispatched by default in #4305.
- Add `to_json(from_json(j, 'a INT, b STRING'))`.
- `csv/to_csv.sql` (`CometCsvExpressionSuite` L36)
- A 13-column table: boolean through decimal(36,18), date, timestamp, timestamp_ntz and string.
- Generator-style edges: integral min/max, NaN, ±Infinity, -0.0, a 36-digit decimal and a far-future timestamp.
- `csv/to_csv_native_options.sql` (new, `StructsToCsv.allowIncompatible=true`; `CometCsvExpressionSuite` L68)
- The 17 tricky strings and the 18 option maps, with `expect_native(to_csv)` on at least one query.
- Reading the code, native `to_csv` appears to ignore the `sep` alias: `CometStructsToCsv.options2Proto` reads only `delimiter`. Check this while converting, and file it if it reproduces.
**Nondeterministic functions and misc**
- `misc/rand.sql` (L3660, L3672, L3704)
- `rand` and `randn` with seeds 42, `Long.MaxValue` and NULL, over `REPARTITION(n)` subqueries, with `spark.comet.batchSize=7`.
- Use `tolerance=1e-6` for `randn`.
- `misc/spark_partition_id.sql` (L3684) and `misc/monotonically_increasing_id.sql` (L3694): two-level repartition shapes, with the expression in the outer query.
- For all five, load the input with `INSERT INTO t SELECT id FROM range(0, 100, 1, 1)` so it is one file. `INSERT ... VALUES` writes one file per row and changes the input partitions.
- `misc/null_literals.sql` (new, L665): typed NULL struct, map and array literals, plus arithmetic with NULL over int and decimal columns.
- `misc/uuid_with_seed.sql` (`CometUuidExpressionSuite` L43, L52)
- The 4.0+ halves are already covered at lines 80-92.
- For the multi-partition case, use `/*+ REPARTITION(4, id) */` instead of `DISTRIBUTE BY id`. The fixture's existing lines 65-66 are probably vacuous: AQE coalesces `REPARTITION_BY_COL`, and 32 tiny rows likely end up in one partition.
- The 3.4/3.5 halves (SQL `uuid(seed)` only exists from 4.0) and the `getNumPartitions > 1` assertion stay in Scala.
- `misc/width_bucket_disabled.sql` (new; both `CometWidthBucketSuite` copies, which are identical)
- Set `spark.comet.expression.WidthBucket.enabled=false`.
- Assert `expect_fallback(spark.comet.expression.WidthBucket.enabled=true to enable it)`.
- **Fallback-reason plumbing**
- `misc/expression_disabled_config.sql` (L1933): `spark.comet.expression.Add.enabled=false` with `expect_fallback(Expression support is disabled...)`.
- `misc/fallback_reasons_shuffle_disabled.sql` (L2522): `spark.comet.shuffle.enabled=false` with four `expect_fallback` queries.
- `misc/fallback_reason_collect_limit_disabled.sql` (L2566).
**Variant** (`CometVariantProjectionSuite`, all `MinSparkVersion: 4.0`)
- `misc/variant_native_scan.sql` (new): L88, L104, L233, L257, and the answer half of L295.
- Set `allowReadingShredded=true` and `pushVariantIntoScan=false`.
- L104 needs `ConfigMatrix writeShredding=false,true`.
- L233 uses `ALTER TABLE ADD COLUMN ... DEFAULT`.
- Three single-config files for L273: `nanosAsLong=true`, `inferTimestampNTZ=false` and `pushVariantIntoScan=true`.
- `misc/variant_encrypted_scan_fallback.sql` (new, L340)
- Use the Parquet encryption configs.
- The `Config` directive parser splits on the last `=`, so a base64 key ending in `==` cannot be written. Use an unpadded key, or fix the parser in #6618.
**Blocked**
- **#6618, ConstantFolding:**
- L64: nested float `IN` candidates, which must fold to array Literals.
- The NaN-literal half of L447.
- `CometLiteralSuite` L132 and L146, the folded array-literal path in `CometLiteral.makeListLiteral`.
## Stays in Scala
- **Serde internals and helper unit tests:**
- All 14 `CometScalarFunctionSuite` tests, which use synthetic `Unevaluable` expressions plus a registry audit.
- `CometLiteralSuite` L96 and L120.
- `CometVariantTypeSuite` L58.
- L58 (`checkCometAnswer` labels), L1383 (`withInfo`), L1420 (`withFallbackReason`) and L3975 (`NativeOptIn`).
- **Explain / COMET-INFO text:** L1442, L3986, L4005, L4016.
- **Internal expressions SQL can't reach:**
- `ToPrettyString`, 4 tests. Spark builds it only in `Dataset.show`.
- `Empty2Null`, 2 tests. Only planned writes insert it.
- **DataFrame-only inputs:**
- L2143: an empty `IN` list and a programmatic `InSet(Set.empty)`.
- L3719: `DataFrameReader.schema` with fields missing from the file.
- **UDF registration:** L3900, which also inspects the exception chain.
- **Raw NaN payload bits:** L402.
- **Raw-writer Parquet layouts:**
- L631 and L647: UINT_32/64, ENUM, FLBA, and decimals stored as INT32/INT64/FLBA.
- `CometVariantProjectionSuite` L118, L144, L179, L245, L354: hand-built shredded Variant structs, case-folded physical names, and a raw writer with required value fields.
- **`CometVariantProjectionSuite` L206:** reader-schema existence defaults combined with a serde assertion.
## Notes on the Scala tests
- **L631's dictionary run returns no rows.**
- **L693's date-literal filter never matches.** That test is in the datetime issue.
## Done when
- Every test in the table below is accounted for. Either a fixture covers it (the same inputs, configs and assertion strength, or stronger), the fixture that already covers it is cited, or it stays in Scala for the reason given above.
- Each converted Scala test is deleted in the PR that adds its coverage. A suite left empty is deleted and removed from the suite lists in `.github/workflows/pr_build_linux.yml` and `pr_build_macos.yml`.
- The new and changed fixtures pass on every Spark profile. Apply `run-all-spark-profiles`, because pull requests run only the default profile.
<details><summary>Every Scala test in scope, with its verdict and target fixture</summary>
| Suite | Line | Test | Verdict | Target |
|---|---|---|---|---|
| `CometCaseWhenSuite` | 27 | case_when | convert | conditional/case_when.sql |
| `CometCoalesceSuite` | 29 | coalesce should return correct datatype | convert | conditional/coalesce.sql |
| `CometCoalesceSuite` | 42 | test coalesce lazy eval | convert | conditional/case_when_lazy.sql |
| `CometCoalesceSuite` | 54 | string with coalesce | convert | conditional/coalesce.sql |
| `CometCsvExpressionSuite` | 36 | to_csv - default options | convert | csv/to_csv.sql |
| `CometCsvExpressionSuite` | 68 | to_csv - with configurable formatting options | convert | csv/to_csv_native_options.sql (new) |
| `CometExpressionSuite` | 58 | check output labels on mismatch (ignored) | keep | |
| `CometExpressionSuite` | 64 | nested floating point membership uses native In and InSet | blocked: #6618 | conditional/in_nested_zero.sql |
| `CometExpressionSuite` | 370 | compare true/false to negative zero | covered | conditional/boolean.sql |
| `CometExpressionSuite` | 402 | compare $dataType columns with noncanonical NaN literals (2 instances: float/_1, double/_2) | keep | |
| `CometExpressionSuite` | 447 | floating $name and NOT $name normalize NaNs and signed zeros (2 instances: In with threshold 10, InSet with threshold 1) | split (rest: #6618) | conditional/in_float_signed_zero.sql (new, threshold 10) + conditional/inset_float_signed_zero.sql (new, threshold 1) |
| `CometExpressionSuite` | 505 | floating IN with a column candidate normalizes signed zeros | convert | conditional/in_nested_zero.sql |
| `CometExpressionSuite` | 537 | parquet default values | covered | misc/parquet_default_values.sql |
| `CometExpressionSuite` | 631 | basic data type support - excluding u8/u16 | keep | |
| `CometExpressionSuite` | 647 | uint data type support - excluding u8/u16 | keep | |
| `CometExpressionSuite` | 665 | null literals | convert | misc/null_literals.sql (new) |
| `CometExpressionSuite` | 1383 | withInfo records non-fallback info rendered as COMET-INFO | keep | |
| `CometExpressionSuite` | 1420 | withFallbackReason | keep | |
| `CometExpressionSuite` | 1442 | native opt-in hint shown for codegen-dispatch path | keep | |
| `CometExpressionSuite` | 1933 | disable expression using dynamic config | convert | misc/expression_disabled_config.sql (new) |
| `CometExpressionSuite` | 2086 | EqualNullSafe should preserve comet filter | convert | conditional/predicates.sql |
| `CometExpressionSuite` | 2110 | test in(set)/not in(set) | convert | conditional/in_set.sql + conditional/in_set_inset.sql (new) |
| `CometExpressionSuite` | 2143 | null IN empty list honours legacy null-in-empty behavior | keep | |
| `CometExpressionSuite` | 2191 | not | covered | conditional/boolean.sql |
| `CometExpressionSuite` | 2522 | explain comet | convert | misc/fallback_reasons_shuffle_disabled.sql (new) |
| `CometExpressionSuite` | 2566 | explain: CollectLimit disabled | convert | misc/fallback_reason_collect_limit_disabled.sql (new) |
| `CometExpressionSuite` | 3660 | rand expression with random parameters | convert | misc/rand.sql (new) |
| `CometExpressionSuite` | 3672 | randn expression with random parameters | convert | misc/rand.sql (new) |
| `CometExpressionSuite` | 3684 | spark_partition_id expression on random dataset | convert | misc/spark_partition_id.sql (new) |
| `CometExpressionSuite` | 3694 | monotonically_increasing_id expression on random dataset | convert | misc/monotonically_increasing_id.sql (new) |
| `CometExpressionSuite` | 3704 | multiple nondetermenistic expressions with shuffle | convert | misc/rand.sql (new) |
| `CometExpressionSuite` | 3719 | vectorized reader: missing all struct fields | keep | |
| `CometExpressionSuite` | 3828 | deep AND/OR predicate chains do not overflow the protobuf recursion limit | convert | conditional/deep_boolean_chains.sql (new) |
| `CometExpressionSuite` | 3900 | pushed-down predicate divide-by-zero is not surfaced as FAILED_READ_FILE | keep | |
| `CometExpressionSuite` | 3975 | NativeOptIn message and Compatible field | keep | |
| `CometExpressionSuite` | 3986 | RLike out-of-subset literal shows native opt-in, in-subset and non-literal do not | keep | |
| `CometExpressionSuite` | 4005 | upper shows native opt-in via caseConversion config key | keep | |
| `CometExpressionSuite` | 4016 | date_format shows native opt-in for whitelisted literal format | keep | |
| `CometIfSuite` | 27 | if expression | convert | conditional/if_expr.sql |
| `CometJsonExpressionSuite` | 51 | to_json - all supported types | convert | struct/structs_to_json.sql |
| `CometJsonExpressionSuite` | 75 | to_json - options and unsupported native types route to the codegen engine | covered | struct/structs_to_json.sql |
| `CometJsonExpressionSuite` | 88 | from_json - basic primitives | convert | struct/json_to_structs_native.sql (new) |
| `CometJsonExpressionSuite` | 106 | from_json - null and error handling | convert | struct/json_to_structs_native.sql (new) |
| `CometJsonExpressionSuite` | 128 | from_json - all primitive types | convert | struct/json_to_structs_native.sql (new) |
| `CometJsonExpressionSuite` | 148 | from_json - null input produces null struct | convert | struct/json_to_structs_native.sql (new) |
| `CometJsonExpressionSuite` | 169 | from_json - nested struct | convert | struct/json_to_structs_native.sql (new) |
| `CometJsonExpressionSuite` | 188 | from_json - valid json with incompatible schema | convert | struct/json_to_structs_native.sql (new) |
| `CometJsonJvmSuite` | 52 | get_json_object via JVM engine | covered | string/routing_string_opt_in_enabled.sql |
| `CometJsonJvmSuite` | 59 | from_json with explicit schema via JVM engine | convert | struct/json_to_structs.sql |
| `CometJsonJvmSuite` | 65 | to_json round-trip via JVM engine | convert | struct/json_to_structs.sql |
| `CometLiteralSuite` | 96 | listLiteralElementSupported mirrors makeListLiteral's arms, flat and nested | keep | |
| `CometLiteralSuite` | 120 | a non-default collation is declined on both sides | keep | |
| `CometLiteralSuite` | 132 | a year-month interval array literal is serialized rather than declined | blocked: #6618 | array/array_literal_folded.sql (new, needs ConstantFolding) |
| `CometLiteralSuite` | 146 | a folded nested array literal with an empty branch and non-nullable elements | blocked: #6618 | array/array_literal_folded.sql (new, needs ConstantFolding) |
| `CometNativeCastSuite` | 2540 | test implicit cast to dictionary with case when and dictionary type | convert | conditional/case_when_dictionary.sql (new) |
| `CometScalarFunctionSuite` | 103 | CometScalarFunction rejects ANSI-sensitive expressions (#5074) | keep | |
| `CometScalarFunctionSuite` | 110 | rejects expressions with failOnError even when false (#5074) | keep | |
| `CometScalarFunctionSuite` | 117 | isAnsiSensitive detects failOnError field | keep | |
| `CometScalarFunctionSuite` | 124 | isAnsiSensitive detects evalMode field | keep | |
| `CometScalarFunctionSuite` | 132 | isAnsiSensitive detects nullOnOverflow field | keep | |
| `CometScalarFunctionSuite` | 140 | isAnsiSensitive detects ansiEnabled field | keep | |
| `CometScalarFunctionSuite` | 148 | isAnsiSensitive detects evalContext field | keep | |
| `CometScalarFunctionSuite` | 154 | isAnsiSensitive detects Spark Round ansiEnabled | keep | |
| `CometScalarFunctionSuite` | 165 | rejects expressions with evalMode via plain CometScalarFunction (#5074) | keep | |
| `CometScalarFunctionSuite` | 180 | rejects expressions with nullOnOverflow via plain CometScalarFunction (#5074) | keep | |
| `CometScalarFunctionSuite` | 195 | rejects expressions with ansiEnabled via plain CometScalarFunction | keep | |
| `CometScalarFunctionSuite` | 210 | rejects expressions with evalContext via plain CometScalarFunction | keep | |
| `CometScalarFunctionSuite` | 219 | CometScalarFunction allows non-ANSI expressions | keep | |
| `CometScalarFunctionSuite` | 231 | no ANSI-sensitive expression is registered with plain CometScalarFunction | keep | |
| `CometSparkInternalFunctionsSuite (spark-3.5)` | 27 | empty2null is offloaded to Comet | keep | |
| `CometSparkInternalFunctionsSuite (spark-4.x)` | 28 | empty2null is offloaded to Comet | keep | |
| `CometToPrettyStringSuite (spark-3.5)` | 36 | ToPrettyString | keep | |
| `CometToPrettyStringSuite (spark-3.5)` | 59 | ToPrettyString honors spark.comet.expression.ToPrettyString.enabled | keep | |
| `CometToPrettyStringSuite (spark-4.x)` | 39 | ToPrettyString | keep | |
| `CometToPrettyStringSuite (spark-4.x)` | 71 | ToPrettyString honors spark.comet.expression.ToPrettyString.enabled | keep | |
| `CometUuidExpressionSuite` | 43 | seeded uuid matches Spark bit for bit | split | misc/uuid_with_seed.sql |
| `CometUuidExpressionSuite` | 52 | seeded uuid matches Spark bit for bit across multiple partitions | split (rest: plan shape stays in Scala) | misc/uuid_with_seed.sql |
| `CometVariantProjectionSuite` | 88 | direct Variant projection preserves values and siblings | convert | misc/variant_native_scan.sql (new) |
| `CometVariantProjectionSuite` | 104 | Variant objects with empty keys match Spark | convert | misc/variant_native_scan.sql (new) |
| `CometVariantProjectionSuite` | 118 | shredded Variant missing fields and redundant residuals match Spark | keep | |
| `CometVariantProjectionSuite` | 144 | shredded Variant scalar encodings and dictionary traversal match Spark bytes | keep | |
| `CometVariantProjectionSuite` | 179 | malformed shredded Variant values report Spark's error class | keep | |
| `CometVariantProjectionSuite` | 206 | non-null Variant existence defaults fall back to Spark | keep | |
| `CometVariantProjectionSuite` | 233 | null Variant existence defaults preserve later default indexes | convert | misc/variant_native_scan.sql (new) |
| `CometVariantProjectionSuite` | 245 | Variant projection uses shared Unicode field matching | keep | |
| `CometVariantProjectionSuite` | 257 | unread Variant roots and nested fields are pruned from native scans | convert | misc/variant_native_scan.sql (new) |
| `CometVariantProjectionSuite` | 273 | Variant scans preserve strict reader and timestamp inference fallbacks | convert | misc/variant_scan_legacy_nanos_fallback.sql + variant_scan_ntz_inference_fallback.sql + variant_push_into_scan_fallback.sql (new) |
| `CometVariantProjectionSuite` | 295 | Variant consumers fall back above a native scan | split (rest: plan shape stays in Scala) | misc/variant_native_scan.sql (new) |
| `CometVariantProjectionSuite` | 340 | encrypted Variant scans fall back to Spark | convert | misc/variant_encrypted_scan_fallback.sql (new) |
| `CometVariantProjectionSuite` | 354 | strict Variant reader preserves malformed layout errors | keep | |
| `CometVariantTypeSuite` | 58 | Variant identity requires the canonical Arrow extension marker | keep | |
| `CometWidthBucketSuite (spark-3.5)` | 30 | WidthBucket honors spark.comet.expression.WidthBucket.enabled | convert | misc/width_bucket_disabled.sql (new) |
| `CometWidthBucketSuite (spark-4.x)` | 30 | WidthBucket honors spark.comet.expression.WidthBucket.enabled | convert | misc/width_bucket_disabled.sql (new) |
</details>
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: github-unsubscribe@datafusion.apache.org.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: github-unsubscribe@datafusion.apache.org
For additional commands, e-mail: github-help@datafusion.apache.org