Bug triage results: 2026-05-26
Triage pass over the open requires-triage queue, per the project Bug Triage Guide.
- Total issues processed: 22
- Labels applied to: 20
- Skipped: 2 (previous triage summaries)
priority:critical: 1
priority:high: 1 (preserved existing label set by reporter)
priority:medium: 7
priority:low: 11
Labels have already been applied and requires-triage removed from each issue listed under "Triaged". A reviewer should spot-check the calls and close this issue when satisfied. To correct a label, edit the affected issue directly.
Triaged
priority:critical
- GetStructField returns non-null for fields of a NULL struct (missing null-mask propagation) (#4432)
- Area labels:
area:expressions
- Rationale: Silent wrong results —
GetStructField returns the child column verbatim without applying the parent struct's null mask, so isnotnull(structCol.field) returns true even when structCol is null. The guide's first decision-tree question ("Can this bug cause silent wrong results?") classifies this as priority:critical, and the reporter shows a concrete Delta checkpoint reproducer.
priority:high
- Iceberg 1.11 support (#4381)
- Area labels:
area:Iceberg
- Rationale: Already labeled
priority:high and area:Iceberg by the reporter; preserved as-is. Iceberg 1.11 is the first release with Spark 4.1 support, so Comet has no Iceberg coverage on Spark 4.1 until this lands — a sizeable feature gap rather than a typical missing-feature medium.
priority:medium
- ToJson PartialEq impl is inconsistent with PartialEq impl (#4430)
- Area labels:
area:expressions
- Rationale: Clear bug — the two equality impls compare different field sets, so two
ToJson exprs differing only in timezone or ignore_null_fields compare equal through the Arc<dyn PhysicalExpr> path. Latent correctness risk if DataFusion's planner uses it for dedup/caching, but no demonstrated query producing wrong results; priority:medium per the "broken features that have workarounds" bucket, with an escalation note below.
- [EPIC] Implement all Spark date/time expressions (#4418)
- Area labels:
area:expressions
- Rationale: Tracking EPIC for missing date/time expression coverage; per the guide, missing expression support is
priority:medium ("functional bugs / broken features that have workarounds"), since unsupported expressions fall back to Spark.
- CometHashAggregateExec doesn't participate in Spark's AQEPropagateEmptyRelation optimization (#4412)
- Area labels:
area:aggregation
- Rationale: The reporter notes "query results are correct under Comet" — what's lost is an AQE short-circuit, which is a functional/perf regression (not correctness). Fits
priority:medium for broken behavior with a workaround.
- Implement TimeType support: Infrastructure - shuffle (#4396)
- Area labels:
area:shuffle
- Rationale: Missing type support causing fallback to Spark for any shuffle on TimeType columns. Per the guide, missing feature support with a workaround (Spark fallback) is
priority:medium.
- Drop the per-batch Comet→Spark buffer copy in CometColumnarPythonInput (#4383)
- Area labels: none
- Rationale: Performance enhancement — drops one of two buffer copies on the JVM→Python pyarrow UDF transport path. Per the guide, "performance regressions / broken features that have workarounds" is
priority:medium.
- Implement TimeType support: Infrastructure - sort, min/max (#4379)
- CometIcebergNativeScanExec: propagate outputOrdering from originalPlan instead of hardcoding Nil (#4367)
- Area labels:
area:scan
- Rationale: Functional/perf gap — Comet inserts an unnecessary
CometSortExec above Iceberg native scans for sort-merge joins because outputOrdering is hardcoded to Nil. Lost optimization with a clear fix path; priority:medium.
priority:low
- Revisit the case for native columnar-to-row? (#4440)
- Area labels: none
- Rationale: Design/discussion question about whether the rationale for
CometNativeColumnarToRowExec still holds (benchmarks within ~5% of JVM path, GC pressure benefit not measured). Not a bug; per the guide, "everything else" falls into priority:low.
- change default Maven profile to Spark 4.0 (#4434)
- Area labels:
area:ci
- Rationale: Build/configuration choice (which Spark profile defaults to) — tooling decision rather than a defect.
priority:low per the guide's tooling/build bucket.
- Refactor CometPlainVector by replacing boolean flags with an enum (#4433)
- Area labels: none
- Rationale: Code-quality refactor follow-up; no functional change. Cosmetic per the guide →
priority:low.
- Reorganize user and contributor guide navigation for clearer information architecture (#4421)
- Area labels: none
- Rationale: Documentation reorganization; no functional impact. Cosmetic/tooling →
priority:low.
- Add a docs-review Claude skill to enforce style guide and documentation quality (#4420)
- Area labels: none
- Rationale: Tooling enhancement (a Claude skill for docs review); no runtime impact.
priority:low.
- Establish nomenclature style guide and audit operator names for clarity (#4419)
- Area labels: none
- Rationale: Documentation/style guide work; cosmetic.
priority:low.
- Reduce Github Action Usage (#4406)
- Area labels:
area:ci
- Rationale: CI/tooling enhancement to reduce Action minutes. Per the guide, CI tooling →
priority:low.
- Implement tiered CI approach (#4389)
- Area labels:
area:ci
- Rationale: CI/tooling enhancement (tiered pipeline).
priority:low.
- Add randomised fuzz harness for pyarrow UDF vector-copy path (#4384)
- Area labels: none
- Rationale: Test infrastructure enhancement; no runtime impact. The guide explicitly lists "test-only failures, tooling" as
priority:low.
- Upgrade Spark 4.1.1 to 4.1.2 (#4380)
- Area labels: none
- Rationale: Routine dependency upgrade required for 0.17.0 per project versioning policy; tooling/maintenance →
priority:low.
- Investigate Spark SQL test suites that load Comet without registering CometShuffleManager (#4377)
- Area labels:
area:shuffle, spark sql tests
- Rationale: Test investigation — surfaces an asymmetry between how
CometSparkSessionExtensions and CometShuffleManager are wired across Spark SQL suites. Test-only / tooling concern; priority:low.
Escalations to consider
- ToJson PartialEq impl is inconsistent with PartialEq impl (#4430)
- The guide's first principle is "correctness over crashes" and the bug pattern (inconsistent equality used by the trait-object path) could in principle produce silently wrong query results if DataFusion's planner deduplicates two
ToJson exprs that differ only in timezone or ignore_null_fields. Filed at priority:medium because the user-visible impact is not demonstrated. If a reviewer can confirm the planner-cache path actually fires on this difference, escalate to priority:high or priority:critical.
Skipped — needs more info
- Bug triage results: 2026-05-18 (#4359)
- Previous triage summary issue rather than a bug; per this skill's contract it is the human reviewer's job to close it after spot-checking. Left as-is.
- Bug triage results: 2026-05-11 (#4287)
- Previous triage summary issue rather than a bug; same as above.
Bug triage results: 2026-05-26
Triage pass over the open
requires-triagequeue, per the project Bug Triage Guide.priority:critical: 1priority:high: 1 (preserved existing label set by reporter)priority:medium: 7priority:low: 11Labels have already been applied and
requires-triageremoved from each issue listed under "Triaged". A reviewer should spot-check the calls and close this issue when satisfied. To correct a label, edit the affected issue directly.Triaged
priority:critical
area:expressionsGetStructFieldreturns the child column verbatim without applying the parent struct's null mask, soisnotnull(structCol.field)returnstrueeven whenstructColis null. The guide's first decision-tree question ("Can this bug cause silent wrong results?") classifies this aspriority:critical, and the reporter shows a concrete Delta checkpoint reproducer.priority:high
area:Icebergpriority:highandarea:Icebergby the reporter; preserved as-is. Iceberg 1.11 is the first release with Spark 4.1 support, so Comet has no Iceberg coverage on Spark 4.1 until this lands — a sizeable feature gap rather than a typical missing-featuremedium.priority:medium
area:expressionsToJsonexprs differing only intimezoneorignore_null_fieldscompare equal through theArc<dyn PhysicalExpr>path. Latent correctness risk if DataFusion's planner uses it for dedup/caching, but no demonstrated query producing wrong results;priority:mediumper the "broken features that have workarounds" bucket, with an escalation note below.area:expressionspriority:medium("functional bugs / broken features that have workarounds"), since unsupported expressions fall back to Spark.area:aggregationpriority:mediumfor broken behavior with a workaround.area:shufflepriority:medium.priority:medium.area:aggregationpriority:mediumrationale.area:scanCometSortExecabove Iceberg native scans for sort-merge joins becauseoutputOrderingis hardcoded toNil. Lost optimization with a clear fix path;priority:medium.priority:low
CometNativeColumnarToRowExecstill holds (benchmarks within ~5% of JVM path, GC pressure benefit not measured). Not a bug; per the guide, "everything else" falls intopriority:low.area:cipriority:lowper the guide's tooling/build bucket.priority:low.priority:low.priority:low.priority:low.area:cipriority:low.area:cipriority:low.priority:low.priority:low.area:shuffle,spark sql testsCometSparkSessionExtensionsandCometShuffleManagerare wired across Spark SQL suites. Test-only / tooling concern;priority:low.Escalations to consider
ToJsonexprs that differ only intimezoneorignore_null_fields. Filed atpriority:mediumbecause the user-visible impact is not demonstrated. If a reviewer can confirm the planner-cache path actually fires on this difference, escalate topriority:highorpriority:critical.Skipped — needs more info