Skip to content

Conversation

@DrakeLin
Copy link
Collaborator

@DrakeLin DrakeLin commented Jan 21, 2026

🥞 Stacked PR

Use this link to review incremental changes.


What changes are proposed in this pull request?

This PR adds an Expression::coalesce helper method to simplify creating COALESCE expressions, and updates all existing call sites to use the new helper.

How was this change tested?

Existing tests

@codecov
Copy link

codecov bot commented Jan 21, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 84.65%. Comparing base (25fa27f) to head (e9f2b41).
⚠️ Report is 1 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #1648      +/-   ##
==========================================
- Coverage   84.65%   84.65%   -0.01%     
==========================================
  Files         123      123              
  Lines       34114    34109       -5     
  Branches    34114    34109       -5     
==========================================
- Hits        28880    28875       -5     
  Misses       3905     3905              
  Partials     1329     1329              

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@DrakeLin DrakeLin force-pushed the stack/coalesce branch 2 times, most recently from b85bf5f to 287577f Compare January 21, 2026 23:38
@github-actions github-actions bot added the breaking-change Change that require a major version bump label Jan 21, 2026
Copy link
Collaborator

@dengsh12 dengsh12 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, thanks!

DrakeLin added a commit that referenced this pull request Jan 23, 2026
## 🥞 Stacked PR
Use this
[link](https://github.com/delta-io/delta-kernel-rs/pull/1645/files) to
review incremental changes.
-
[**stack/null-propagation**](#1645)
[[Files
changed](https://github.com/delta-io/delta-kernel-rs/pull/1645/files)]
-
[stack/coalesce](#1648)
[[Files
changed](https://github.com/delta-io/delta-kernel-rs/pull/1648/files/37e755009566511bf7c2f00e014c1647e77e4533..d64042f7908844ef2d8a1c68312dc3ff936d60dc)]
-
[stack/checkpoint-transforms](#1646)
[[Files
changed](https://github.com/delta-io/delta-kernel-rs/pull/1646/files/d64042f7908844ef2d8a1c68312dc3ff936d60dc..4e66ca004f89b23431a96ac106a9c0d400718b10)]
-
[stack/write-stats](#1643)
[[Files
changed](https://github.com/delta-io/delta-kernel-rs/pull/1643/files/4e66ca004f89b23431a96ac106a9c0d400718b10..cd64f79fd3b40ebfa811cb333369cb17aa1a2a74)]

---------
## What changes are proposed in this pull request?

Fixes a bug in nested transform expression evaluation where null rows in
the source struct were losing their null bitmap, causing null structs to
incorrectly appear as non-null structs with null fields.

When evaluating nested transform expressions (transforms with an
input_path that operate on a nested struct), the output StructArray was
created with None for the null buffer:
`let data = StructArray::try_new(output_fields.into(), output_cols,
None)?;`
This meant that if the source struct had null rows (e.g., an add action
that is null in a checkpoint batch), the output would lose that null
information. The struct would appear as non-null but with all-null
fields, which is semantically different.

## How was this change tested?
Existing transform tests pass. The stats transform integration tests (in
a follow-up PR) exercise this code path.
@DrakeLin DrakeLin merged commit d4ecc0a into delta-io:main Jan 23, 2026
22 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

breaking-change Change that require a major version bump

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants