Skip to content

Bug triage results: 2026-08-24 #5454

Description

@kazuyukitanimura

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

  • Date: 2026-08-24
  • Total issues processed: 31 (28 classified, 3 skipped, 28 failed to label)
  • Type counts: 4 bugs, 24 enhancements
  • Priority counts (recommended): priority:critical 3, priority:high 0, priority:medium 0, priority:low 1

Important

No labels were applied. Every gh issue edit call was rejected with GraphQL: Resource not accessible by personal access token (addLabelsToLabelable / removeLabelsFromLabelable) — the token used for this pass has the repository triage role but was not granted the Issues: Read and write permission. All 31 issues therefore still carry requires-triage, and no issue's labels were modified (verified against a before/after snapshot).
The classifications below are recommendations. A committer needs to apply them, after which this issue can be closed. Every issue is also listed under Failed to label.

Bugs

priority:critical

  • Unsafe native partial aggregates survive child-triggered final fallback (#5419)

    • Area labels: area:aggregation
    • Rationale: A native decimal-AVG partial that survives a child-triggered Spark final fallback silently returns NULL instead of 200.000000, matching the guide's critical example "type mismatches between partial and final aggregation stages" (correctness outranks crashes).
  • Incorrect AVG result from empty native partial buffers (#5418)

    • Area labels: area:aggregation
    • Rationale: The native AVG partial exports (sum = NULL, count = 0) where Spark initializes (sum = 0, count = 0), so an empty partition silently turns 2.0 into NULL on the mixed native-partial/Spark-final path Comet itself declares safe — the guide's silent-wrong-results category.
  • [Bug] array_min and array_max differ from Spark on signed-zero ties (#5401)

    • Area labels: area:expressions
    • Rationale: array_min/array_max are registered with no getSupportLevel override (default Compatible), so Comet silently returns -0.0/+0.0 opposite to Spark with no error or fallback, which is the guide's decision-tree step 1 "silent wrong results" and its explicit Correctness Bugs example.

priority:low

  • FuzzDataGenerator silently drops nulls for Boolean/Byte/Short/Integer columns (#5389)
    • Area labels: none
    • Rationale: Existing behavior is broken (nullable Boolean/Byte/Short/Integer columns never contain nulls despite allowNull=true because the Long arm's null unboxes to 0), but the defect is confined to shared test tooling, which the guide scores priority:low ("test-only failures, tooling").
    • Label note: No guide-table area label covers shared test data-generation utilities; the repo's test label is not an approved area label, and area:ci means CI/build tooling, so areaLabels is empty.

Enhancements

  • Support MapType(IntegerType,ArrayType(IntegerType,false),true) for CreateArray (#5448)

    • Area labels: area:expressions
    • Rationale: The body is only a fallback-reason dump for an element type CometCreateArray explicitly declines via withFallbackReason, and the guide classifies extending expression coverage behind a graceful fallback as an enhancement, not a bug.
  • Report native operator spill metrics in Spark task metrics for non-shuffle stages (#5447)

    • Area labels: none
    • Rationale: The task-level spill bridge (CometMetricNode.reportSpillMetrics) has exactly one caller, the native shuffle writer, so wiring it for CometExecRDD stages is new coverage per the body's own "Proposed scope" rather than advertised functionality behaving incorrectly, and the correct spilled_bytes SQL metric already exists.
    • Label note: No guide-table area label covers metrics/observability; the edits land in CometMetricNode.scala and operators.scala (CometExecRDD), and area:shuffle would misdirect on an explicitly non-shuffle path.
  • perf: verify shuffle IPC context-reuse allocation savings with Arrow 59.1+ (#5446)

    • Area labels: area:shuffle
    • Rationale: This is a performance-verification follow-up gated on the Arrow/DataFusion upgrade whose close criteria are all upgrade-and-measure tasks, and the guide lists performance optimization under enhancement with no priority.
  • [EPIC] Native Variant Support (#5438)

    • Area labels: area:scan, area:expressions, area:ffi, area:shuffle, area:writer
    • Rationale: A phased roadmap for brand-new VariantType functionality whose stated principle is to "preserve explicit Spark fallback for every boundary that has not yet been audited" — new functionality per the guide, with one area label per subsystem its own phases enumerate (scan, expressions, C2R/FFI, shuffle/spill, writer).
    • Label note: Spark-4-only work (VariantType arrived in Spark 4.0); the guide's spark 4 area indicator does not exist in this repo (only spark 4.0/4.1/4.2), so no versioned spark label was emitted. The repo's EPIC label would also fit but is outside the guide's area table.
  • Support top-level VariantType in Comet MapInArrow and MapInPandas transport (#5437)

    • Area labels: none
    • Rationale: The issue itself calls today's exclusion of Variant-bearing MapInArrow/MapInPandas plans "a safe fallback" and asks for new Python Arrow transport support, which the guide classifies as enhancement.
    • Label note: No guide-table label fits the Python/Arrow-UDF transport subsystem: the repo's area:udf is not in the guide's table, and area:ffi would misdirect because the work is in EliminateRedundantTransitions/CometMapInBatchExec (JVM Arrow-to-Python), not the Arrow FFI/JNI boundary. Also Spark-4.1-specific, and the guide's spark 4 label does not exist here.
  • Support VariantType in native columnar-to-row conversion (#5436)

    • Area labels: area:ffi
    • Rationale: Native C2R keeps Variant schemas on Spark fallback (supportsSchema does not admit Variant), so adding a Variant UnsafeRow writer is unadvertised new coverage; the "would produce the wrong UnsafeRow representation" sentence is a prospective design constraint, not a shipped wrong result.
    • Label note: Spark-4-only (VariantType); the guide's spark 4 label does not exist in this repo, so no versioned spark label was emitted.
  • Support native Parquet projection of VariantType nested in struct, array, and map columns (#5435)

    • Area labels: area:scan
    • Rationale: Nested Variant "remains a full scan fallback" today (CometScanRule rejects Variant structs with an explicit fallback reason), so projecting it natively is coverage Comet never claimed — an enhancement under the guide's key test.
    • Label note: Spark-4-only (VariantType); the guide's spark 4 label does not exist in this repo, so no versioned spark label was emitted.
  • Support Variant payloads through Comet shuffle and spill paths (#5434)

    • Area labels: area:shuffle
    • Rationale: Comet rejects every non-scan native operator whose schema contains VariantType so such queries fall back, and the guide treats a correct fallback as working as designed — carrying Variant through native IPC, JVM shuffle, and spill/merge is new functionality.
    • Label note: Spark-4-only (VariantType); the guide's spark 4 label does not exist in this repo, so no versioned spark label was emitted.
  • Support whole-value VariantType in native Parquet writes (#5433)

    • Area labels: area:writer
    • Rationale: Comet "currently falls back when an ordinary native Parquet write has a Spark VariantType column" (Variant is whitelisted only for scan), so adding Variant handling in the native writer is the guide's request for new functionality.
    • Label note: Spark-4.x-only work (VariantType, SPARK-45827); the guide's spark 4 area indicator does not exist in this repo, so no versioned spark label was emitted.
  • Support native variant_explode and variant_explode_outer (#5432)

    • Area labels: area:expressions
    • Rationale: The body states "Comet does not support these generators, so queries must leave native execution", i.e. a correct fallback, so this is the guide's "new expression/operator support" enhancement with no priority.
    • Label note: Spark-4-specific (variant_explode is registered only in Spark 4.x); the guide's spark 4 label does not exist in this repo, so it was omitted.
  • Support native to_variant_object (#5431)

    • Area labels: area:expressions
    • Rationale: "Comet does not serialize or evaluate it, so construction from native columns falls back" describes absent coverage rather than a defect, which is textbook new expression support under the guide.
    • Label note: Spark-4-only function; the guide's spark 4 indicator label is absent from this repo, so no versioned spark label was applied.
  • Support native casts to and from VariantType (#5430)

    • Area labels: area:expressions
    • Rationale: CometCast deliberately returns unsupported for every pair involving Variant so it falls back to Spark cleanly, and extending the cast matrix is new functionality rather than a fix to advertised behavior.
    • Label note: Variant casts exist only in Spark 4.x; the guide's spark 4 area indicator does not exist in this repo, so it was not emitted.
  • Support native is_variant_null and Spark 4.2 is_valid_variant (#5429)

    • Area labels: area:expressions
    • Rationale: "Comet has no native predicate" for these Spark 4 Variant functions today, so adding serializers plus native evaluators is new expression support per the guide, with no priority label.
    • Label note: Version-gated work (is_variant_null is Spark 4.0+, is_valid_variant Spark 4.2+); this repo has spark 4.0/4.1/4.2 rather than the guide's spark 4, so no versioned spark label was emitted.
  • Support native parse_json and try_parse_json (#5428)

    • Area labels: area:expressions
    • Rationale: "Comet has no serializer or native evaluator for either function" so the query cannot remain native — the guide's "new expression/operator support" row, with the Variant output-Field/FFI contract explicitly delegated to Support Variant-valued native expression output and two-argument variant_get #5425.
    • Label note: parse_json/try_parse_json and VariantType are Spark 4.x-only; the guide's spark 4 area indicator does not exist in this repo, so no versioned spark label was emitted.
  • Support native schema_of_variant and schema_of_variant_agg (#5427)

    • Area labels: area:expressions, area:aggregation
    • Rationale: Neither expression is implemented so schema discovery over a natively scanned Variant column falls back, making this new expression support; area:aggregation is earned because schema_of_variant_agg needs aggregate buffer merge/serialization across partial stages.
    • Label note: These Variant functions are Spark 4.x-only, and the guide's spark 4 indicator does not exist in this repo (only spark 4.0/4.1/4.2), so the version scope is noted here instead.
  • Complete native variant_get and try_variant_get support for dynamic paths and nested targets (#5426)

  • Support Variant-valued native expression output and two-argument variant_get (#5425)

    • Area labels: area:expressions, area:ffi
    • Rationale: The metadata-loss it describes ("a computed Variant can lose its logical identity") is prospective for code not yet written since Variant is still rejected in expression admission, so this defines the result contract for new functionality; area:ffi is earned because the arrow.parquet.variant marker must survive the RecordBatch/Field FFI export.
    • Label note: VariantType output is Spark 4.x-only; the guide's spark 4 area indicator does not exist in this repo, so no versioned spark label was emitted.
  • Support native variant_get and try_variant_get for literal paths and scalar targets (#5424)

    • Area labels: area:expressions
    • Rationale: The body says Phase A "intentionally leaves Variant expression evaluation on Spark" so common queries evaluate the extraction in Spark — a deliberate graceful fallback — and it requests brand-new native variant_get/try_variant_get kernels and admission.
    • Label note: variant_get/try_variant_get exist only in Spark 4.x; the guide's spark 4 area indicator does not exist in this repo, so that scope is stated here instead.
  • Empty struct columns silently fall back to Spark instead of running natively (#5413)

    • Area labels: area:shuffle, area:expressions
    • Rationale: Everything observable on main is a deliberate, correct fallback for a type six guards explicitly reject (fields.nonEmpty), which the guide says is Comet working as designed, and the from_json panic only becomes reachable after the reporter removes the isSupportedSchema guard on their branch, so this is a request to extend empty-struct coverage.
  • Converge the two Delta read paths into one plugin (clean architecture + performance) (#5411)

    • Area labels: area:scan
    • Rationale: The body is an architecture/refactor design proposal over unmerged Delta scan PRs with no defect reported, and the guide places refactoring and new-functionality design under enhancement with no priority label.
  • Improve performance for roundrobin shuffle writes for nested schemas (#5397)

    • Area labels: area:shuffle
    • Rationale: The 2-3x slowdown is measured against Spark rather than an earlier Comet release and the author's own comments propose prospective optimizations (xxhash-rust, vectorized batch distribution), so this is the guide's "performance optimization" enhancement, not a regression.
  • [EPIC] Criterion bench coverage for all native expressions (#5396)

    • Area labels: area:expressions, area:ci
    • Rationale: This is a catalog plus proposal for a shared bench harness, ~40 new bench files and a merge-blocking coverage gate — tooling that does not exist today — which the guide classifies as enhancement with no priority label.
  • Decide and document the delta-spark version pin for the Delta contrib (#5390)

    • Area labels: area:ci
    • Rationale: The reporter states "the current pins work" and asks only that the support policy be settled and written down, which is the guide's documentation flavor of enhancement rather than something broken.
    • Label note: No guide-table area label exists for the Delta contrib; area:ci is applied because the artifacts touched are the Maven profile pins and dev/verify-contrib-delta-gate.sh enforced by the Delta build gate workflow.
  • Extend native Arrow UDF path to scalar Python UDFs (ArrowEvalPythonExec) (#5386)

    • Area labels: none
    • Rationale: Nothing under spark/src/main references ArrowEvalPythonExec, so scalar Python UDFs take a clean ColumnarToRow fallback today and the ask for a new CometArrowEvalPythonExec operator is the guide's "new expression/operator support" enhancement.
    • Label note: The issue already carries area:udf, which exists in this repo but is absent from the guide's area table, so no guide-table area label was emitted; area:ffi would misdirect since the transport is JVM Arrow-to-Python, not the FFI/JNI boundary. The guide's area table arguably needs an area:udf row.

Skipped — needs more info

Failed to label

All 28 classified issues failed to label with the same error:

GraphQL: Resource not accessible by personal access token (addLabelsToLabelable / removeLabelsFromLabelable)

Recommended labels per issue, for a committer to apply:

  • Support MapType(IntegerType,ArrayType(IntegerType,false),true) for CreateArray (#5448)

    • Add: enhancement, area:expressions — Remove: requires-triage, bug
  • Report native operator spill metrics in Spark task metrics for non-shuffle stages (#5447)

    • Add: enhancement — Remove: requires-triage, bug
  • perf: verify shuffle IPC context-reuse allocation savings with Arrow 59.1+ (#5446)

    • Add: enhancement, area:shuffle — Remove: requires-triage, bug
  • [EPIC] Native Variant Support (#5438)

    • Add: enhancement, area:scan, area:expressions, area:ffi, area:shuffle, area:writer — Remove: requires-triage, bug
  • Support top-level VariantType in Comet MapInArrow and MapInPandas transport (#5437)

    • Add: enhancement — Remove: requires-triage, bug
  • Support VariantType in native columnar-to-row conversion (#5436)

    • Add: enhancement, area:ffi — Remove: requires-triage, bug
  • Support native Parquet projection of VariantType nested in struct, array, and map columns (#5435)

    • Add: enhancement, area:scan — Remove: requires-triage, bug
  • Support Variant payloads through Comet shuffle and spill paths (#5434)

    • Add: enhancement, area:shuffle — Remove: requires-triage, bug
  • Support whole-value VariantType in native Parquet writes (#5433)

    • Add: enhancement, area:writer — Remove: requires-triage, bug
  • Support native variant_explode and variant_explode_outer (#5432)

    • Add: enhancement, area:expressions — Remove: requires-triage, bug
  • Support native to_variant_object (#5431)

    • Add: enhancement, area:expressions — Remove: requires-triage, bug
  • Support native casts to and from VariantType (#5430)

    • Add: enhancement, area:expressions — Remove: requires-triage, bug
  • Support native is_variant_null and Spark 4.2 is_valid_variant (#5429)

    • Add: enhancement, area:expressions — Remove: requires-triage, bug
  • Support native parse_json and try_parse_json (#5428)

    • Add: enhancement, area:expressions — Remove: requires-triage, bug
  • Support native schema_of_variant and schema_of_variant_agg (#5427)

    • Add: enhancement, area:expressions, area:aggregation — Remove: requires-triage, bug
  • Complete native variant_get and try_variant_get support for dynamic paths and nested targets (#5426)

    • Add: enhancement, area:expressions — Remove: requires-triage, bug
  • Support Variant-valued native expression output and two-argument variant_get (#5425)

    • Add: enhancement, area:expressions, area:ffi — Remove: requires-triage, bug
  • Support native variant_get and try_variant_get for literal paths and scalar targets (#5424)

    • Add: enhancement, area:expressions — Remove: requires-triage, bug
  • Unsafe native partial aggregates survive child-triggered final fallback (#5419)

    • Add: bug, priority:critical, area:aggregation — Remove: requires-triage, enhancement
  • Incorrect AVG result from empty native partial buffers (#5418)

    • Add: bug, priority:critical, area:aggregation — Remove: requires-triage, enhancement
  • Empty struct columns silently fall back to Spark instead of running natively (#5413)

    • Add: enhancement, area:shuffle, area:expressions — Remove: requires-triage, bug
  • Converge the two Delta read paths into one plugin (clean architecture + performance) (#5411)

    • Add: enhancement, area:scan — Remove: requires-triage, bug
  • [Bug] array_min and array_max differ from Spark on signed-zero ties (#5401)

    • Add: bug, priority:critical, area:expressions — Remove: requires-triage, enhancement
  • Improve performance for roundrobin shuffle writes for nested schemas (#5397)

    • Add: enhancement, area:shuffle — Remove: requires-triage, bug
  • [EPIC] Criterion bench coverage for all native expressions (#5396)

    • Add: enhancement, area:expressions, area:ci — Remove: requires-triage, bug
  • Decide and document the delta-spark version pin for the Delta contrib (#5390)

    • Add: enhancement, area:ci — Remove: requires-triage, bug
  • FuzzDataGenerator silently drops nulls for Boolean/Byte/Short/Integer columns (#5389)

    • Add: bug, priority:low — Remove: requires-triage, enhancement
  • Extend native Arrow UDF path to scalar Python UDFs (ArrowEvalPythonExec) (#5386)

    • Add: enhancement — Remove: requires-triage, bug

Triage notes

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