Skip to content

Bug triage results: 2026-07-06 #4838

Description

@andygrove

Triage pass over the open requires-triage queue, per the project Bug Triage Guide.

  • Date: 2026-07-06
  • Total issues processed: 26 (25 triaged, 1 skipped, 0 failed)
  • Type counts: 7 bugs, 18 enhancements
  • Priority counts applied: priority:critical 5, priority:high 2
  • Guide: docs/source/contributor-guide/bug_triage.md

Labels have already been applied and requires-triage removed from each issue listed under "Bugs" and "Enhancements". A reviewer should spot-check the calls and close this issue when satisfied. To correct a label, edit the affected issue directly.

Bugs

priority:critical

  • array_filter: array_compact fast path misfires when IsNotNull operand is not the lambda variable (#4830)
    • Area labels: area:expressions
    • Rationale: CometArrayFilter.convert silently rewrites filter(arr, x -> captured_col IS NOT NULL) as array_compact(arr), producing wrong results whenever arr has null elements or captured_col is null — decision-tree step 1 (silent wrong results).
  • Distinct-aggregate rewrite can split an incompatible-buffer aggregate across Comet and Spark, causing crash or wrong results (#4813)
    • Area labels: area:aggregation
    • Rationale: incompatible partial buffers cross the Comet/Spark boundary in the 4-stage distinct rewrite; hard crash for percentile_approx but the reporter notes silent wrong results are likely for collect_set, collect_list, exact percentile, avg, decimal sum, and variance — escalated to critical under decision-tree step 1.
  • bug: flatten drops nulls and returns wrong results when a sub-array is null (#4788)
    • Area labels: area:expressions
    • Rationale: reporter demonstrates Comet returns a non-null misaligned array where Spark returns null; silent data corruption over a plain Parquet scan — decision-tree step 1.
  • bug: null IN () returns false instead of null under legacy null-in-empty behavior (#4786)
    • Area labels: area:expressions
    • Rationale: Comet ignores spark.sql.legacy.nullInEmptyListBehavior=true and silently returns false where Spark returns null — decision-tree step 1.
  • [EPIC] Consistent handling of invalid UTF-8 in native StringType (ingress policy) (#4764)
    • Area labels: none (existing correctness, area:shuffle, area:scan, area:ffi preserved by the reporter)
    • Rationale: reporter documents a latent-UB / silent-wrong-result hazard (arrow-rs StringArray::value on FFI-imported non-UTF-8 bytes is unchecked) plus the scan gap that Spark accepts and Comet rejects — decision-tree step 1 for the UB hazard; kept as an EPIC bug.

priority:high

  • bug: array/map kernels crash on non-null child field via CometLocalTableScanExec (#4789)
    • Area labels: area:expressions, area:scan
    • Rationale: native assertion failure / InvalidArgumentError panic on slice, map_entries, and array_insert when the local scan carries non-nullable child fields; visible crash rather than wrong results — decision-tree step 2.
  • bug: scalar subquery in RepartitionByExpression crashes with "Subquery N not found" (#4787)
    • Area labels: area:expressions
    • Rationale: CometNativeException: Subquery 75 not found for plan 12 when a scalar subquery appears in DISTRIBUTE BY; reproduces over plain Parquet — decision-tree step 2 (native crash).

Enhancements

  • Support WindowGroupLimitExec (window-based limit pushdown) (#4837)
    • Area labels: area:expressions
    • Rationale: request for a new native operator so plans containing WindowGroupLimitExec no longer fall back to Spark.
  • Support GROUPS window frame units (#4836)
    • Area labels: area:expressions
    • Rationale: adds a currently unsupported window frame type; the existing behavior is a documented, clean fallback to Spark, not a defect.
  • Support FIRST_VALUE/LAST_VALUE on a RANGE window frame with a literal offset (#4835)
    • Area labels: area:expressions
    • Rationale: extends native RANGE-frame coverage; today Comet correctly falls back to Spark, so this is a coverage gap.
  • Support RANGE window frames with an explicit offset on DATE or DECIMAL ORDER BY (#4834)
    • Area labels: area:expressions
    • Rationale: documented current limitation with clean Spark fallback; request to broaden native RANGE-frame ORDER BY type support.
  • Partial project fallback: keep a projection/filter native by evaluating an unsupported subexpression in the JVM (#4825)
    • Area labels: area:expressions
    • Rationale: proposes a new splitter hook so unsupported subexpressions no longer collapse the whole native island — a new feature behind an opt-in config.
  • [Enhancement] Enable mixed partial/final execution for approx_count_distinct (HyperLogLogPlusPlus) (#4820)
    • Area labels: area:aggregation
    • Rationale: request to broaden native coverage by flipping supportsMixedPartialFinal for approx_count_distinct now that the buffer format matches Spark; not a defect.
  • Support grouping() and grouping_id() indicator functions (#4814)
    • Area labels: area:expressions
    • Rationale: queries already run natively; the ask is to add test coverage and mark the functions as supported in the docs — a coverage/documentation enhancement.
  • feat: IO-level dynamic filter pushdown into the native Delta scan (delta-kernel-rs predicate reuse) (#4809)
  • feat: IO-level dynamic filter pushdown into IcebergScanExec (iceberg-rust predicate conversion) (#4808)
  • feat: Runtime dynamic filter pushdown for native hash joins (build side -> probe side) (#4807)
    • Area labels: none
    • Rationale: request to wire up DataFusion's dynamic filter machinery through Comet's native hash joins; new optimization behind an opt-in config.
  • Add optional fully-native deployment mode (Ballista-backed) (#4796)
    • Area labels: none
    • Rationale: proposes a new deployment mode built on Ballista; discussion-phase feature request.
  • Support native batch session_window grouping (MergingSessionsExec / UpdatingSessionsExec) (#4785)
    • Area labels: area:aggregation
    • Rationale: requests new native operators for batch session-window merging; today Comet cleanly falls back to Spark for this.
  • Performance optimizations for native in-memory cache (follow-on to feat: Add Native Support for In-Memory Cache #4591) (#4781)
  • feat: Refactor shuffle partition writing behind a writer interface (#4780)
    • Area labels: area:shuffle
    • Rationale: refactor to introduce a PartitionWriter abstraction so alternative shuffle backends can be added later; behavior-preserving.
  • Move CometCollationSuite into the spark-4.1+ test shim to avoid per-version duplication (#4770)
    • Area labels: area:ci
    • Rationale: test/build-system cleanup to add ${shims.minorPlusVerSrc} to add-test-source and move the suite; no behavior change.
  • Report unsupported metadata column names in fallback reasons (#4757)
    • Area labels: area:scan
    • Rationale: improves fallback message to include the metadata column name; user-experience enhancement.
  • Math expressions: revisit interval / input-type gating and add regression tests once interval support lands (#4756)
    • Area labels: area:expressions
    • Rationale: reporter explicitly states "no live defect today"; deferred work to add regression tests and revisit gating once native interval support lands.
  • Evaluate moving from chrono to Jiff (#4754)
    • Area labels: area:expressions
    • Rationale: investigation into swapping the chrono dependency for Jiff since chrono-tz is being deprecated; enhancement / exploration.

Escalations to consider

  • Distinct-aggregate rewrite can split an incompatible-buffer aggregate across Comet and Spark, causing crash or wrong results (#4813)
    • Reporter observed a hard crash for percentile_approx but explicitly warns that other affected aggregates (collect_set, collect_list, exact percentile, decimal sum, avg, variance) risk silent wrong results — matches the guide's "priority:high crash also produces wrong results" escalation trigger; escalated to priority:critical.

Skipped — needs more info

  • Bug triage results: 2026-06-29 (#4751)
    • Prior triage summary issue (auto-labeled requires-triage); meta, awaiting human review and closure, not a bug.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions