Skip to content

chore(audit): audit conditional expressions across Spark 3.4.3, 3.5.8, 4.0.1, 4.1.1#4475

Open
andygrove wants to merge 1 commit into
apache:mainfrom
andygrove:worktree-audit-conditional-funcs
Open

chore(audit): audit conditional expressions across Spark 3.4.3, 3.5.8, 4.0.1, 4.1.1#4475
andygrove wants to merge 1 commit into
apache:mainfrom
andygrove:worktree-audit-conditional-funcs

Conversation

@andygrove
Copy link
Copy Markdown
Member

Which issue does this PR close?

Closes #.

Rationale for this change

Continuation of the per-category expression audit. Same pattern as #4474 (misc), #4473 (collection), #4470 (json), #4469 (struct), using the updated audit-comet-expression skill in #4468.

What changes are included in this PR?

Support-doc audit notes

Add per-version audit sub-bullets to coalesce, if, ifnull, nullif, nvl, nvl2, and when in docs/source/contributor-guide/spark_expressions_support.md. Only three Comet serdes back this entire category:

  • CometIf handles if, nvl2 (rewritten by the analyzer to If(IsNotNull, e2, e3)), and nullif (rewritten to If(EqualTo, null, left)).
  • CometCoalesce handles coalesce, nvl (rewritten to Coalesce), and ifnull (registry alias of nvl).
  • CometCaseWhen handles when / SQL CASE WHEN.

The Spark classes are byte-for-byte identical across all four versions for behaviour; Spark 4.0 only added the withNewAlwaysEvaluatedInputs optimizer hook on If/CaseWhen and reformatted error messages (no runtime change).

Support-level consistency fixes

None. All three serdes were already clean: no Incompatible(None) cases, no reason-string drift, and the convert-time withInfo fallbacks are for child-conversion failures which (per the skill) legitimately belong in convert rather than getSupportLevel.

Tracking issues filed for follow-up

None. No correctness divergences were found.

Audit process

Audited directly using the audit-comet-expression skill (4 Spark versions per #4468). Three small serdes, no parallel subagents needed.

How are these changes tested?

  • make core succeeds (no code changes; only the doc was updated).
  • Existing CometExpressionSuite and CometSqlFileTestSuite coverage for if, case when, coalesce, and their RuntimeReplaceable callers remains unchanged.

…, 4.0.1, 4.1.1

Add per-version audit sub-bullets to `coalesce`, `if`, `ifnull`,
`nullif`, `nvl`, `nvl2`, and `when` in
`docs/source/contributor-guide/spark_expressions_support.md`.

Only three Comet serdes back this entire category:

- `CometIf` handles `if`, `nvl2` (rewritten to `If(IsNotNull, e2, e3)`), and `nullif` (rewritten to `If(EqualTo, null, left)`).
- `CometCoalesce` handles `coalesce`, `nvl` (rewritten to `Coalesce`), and `ifnull` (registry alias of `nvl`).
- `CometCaseWhen` handles `when` / SQL `CASE WHEN`.

The Spark classes are byte-for-byte identical across all four versions for
behaviour; Spark 4.0 only added the `withNewAlwaysEvaluatedInputs` optimizer
hook on `If`/`CaseWhen` and reformatted error messages (no runtime change).

No support-level consistency issues were found in the three serdes; all
convert-time fallbacks are for child-conversion failures (which cannot be
detected from the expression alone). No new tracking issues are filed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant