fix(encoding): handle empty rows in variable packed struct decode#5995
Merged
fix(encoding): handle empty rows in variable packed struct decode#5995
Conversation
Contributor
PR Review: fix(encoding): handle empty rows in variable packed struct decodeSummary: This is a well-targeted bug fix for handling empty rows in variable packed struct decoding. Assessment: ✅ LGTMNo P0/P1 issues identified. The fix correctly handles the edge case where rep/def produces visible rows with empty payloads (row_start == row_end). The approach of pre-creating empty placeholder values and appending them when empty rows are encountered is sound and maintains child row alignment as expected. Minor observations (non-blocking):
The implementation follows the existing code patterns well. |
Codecov Report❌ Patch coverage is
📢 Thoughts on this report? Let us know! |
wjones127
pushed a commit
to wjones127/lance
that referenced
this pull request
Feb 25, 2026
…nce-format#5995) In full-zip variable packed decoding, rep/def may produce visible rows with empty payloads (for null/invalid items). The decoder previously assumed every visible row had bytes for each child and failed with `Packed struct fixed child exceeds row bounds`. This happened during write new tables with blob v2. ## Summary - fix `PackedStructVariablePerValueDecompressor` to handle empty packed rows (`row_start == row_end`) - append one per-child placeholder value for empty rows so child builders remain row-aligned --- **Parts of this PR were drafted with assistance from Codex (with `gpt-5.3-codex`) and fully reviewed and edited by me. I take full responsibility for all changes.**
wjones127
pushed a commit
to wjones127/lance
that referenced
this pull request
Feb 25, 2026
…nce-format#5995) In full-zip variable packed decoding, rep/def may produce visible rows with empty payloads (for null/invalid items). The decoder previously assumed every visible row had bytes for each child and failed with `Packed struct fixed child exceeds row bounds`. This happened during write new tables with blob v2. ## Summary - fix `PackedStructVariablePerValueDecompressor` to handle empty packed rows (`row_start == row_end`) - append one per-child placeholder value for empty rows so child builders remain row-aligned --- **Parts of this PR were drafted with assistance from Codex (with `gpt-5.3-codex`) and fully reviewed and edited by me. I take full responsibility for all changes.**
wjones127
pushed a commit
that referenced
this pull request
Feb 26, 2026
) In full-zip variable packed decoding, rep/def may produce visible rows with empty payloads (for null/invalid items). The decoder previously assumed every visible row had bytes for each child and failed with `Packed struct fixed child exceeds row bounds`. This happened during write new tables with blob v2. ## Summary - fix `PackedStructVariablePerValueDecompressor` to handle empty packed rows (`row_start == row_end`) - append one per-child placeholder value for empty rows so child builders remain row-aligned --- **Parts of this PR were drafted with assistance from Codex (with `gpt-5.3-codex`) and fully reviewed and edited by me. I take full responsibility for all changes.**
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
In full-zip variable packed decoding, rep/def may produce visible rows with empty payloads (for null/invalid items). The decoder previously assumed every visible row had bytes for each child and failed with
Packed struct fixed child exceeds row bounds.This happened during write new tables with blob v2.
Summary
PackedStructVariablePerValueDecompressorto handle empty packed rows (row_start == row_end)Parts of this PR were drafted with assistance from Codex (with
gpt-5.3-codex) and fully reviewed and edited by me. I take full responsibility for all changes.