Skip to content

Fix uncompressed ORC seek at logical stream end - #272

Open
byronellis wants to merge 6 commits into
openhouse-1.2.0from
byellis/fix-orc-uncompressed-seek-end
Open

Fix uncompressed ORC seek at logical stream end#272
byronellis wants to merge 6 commits into
openhouse-1.2.0from
byellis/fix-orc-uncompressed-seek-end

Conversation

@byronellis

Copy link
Copy Markdown
Collaborator

Summary

  • Fix uncompressed ORC seeks to a logical stream end that coincides with a non-final disk-range boundary.
  • Package the pinned ORC overlay into the Spark 3.1 shaded runtime while preserving upstream behavior outside the targeted seek condition.

Testing Done

  • Local code review completed
  • Spark 3.1 ORC integration tests pass (2 tests, 0 failures, 0 errors)
  • Packaged overlay bytecode compared against upstream ORC 1.8.2-nohive
  • Shaded caller/callee protobuf descriptors and packaged class inventory verified

🤖 Generated with GitHub Copilot CLI

Byron Ellis and others added 5 commits August 16, 2026 12:46
Overlay ORC 1.8.2 InStream in the Spark 3.1 shaded runtime so a logical stream end at a non-final disk-range boundary is accepted. Add a regression test against the relocated runtime class.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Always apply the Spark 3.1 build configuration on the backport branch, compile the ORC nohive overlay against its provided APIs, and make the packaged-runtime regression sensitive to a gap after the stream boundary.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Remove the unrelated past-end seek guard and mark each intentional divergence in the ORC 1.8.2 source overlay.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Comment on lines +213 to +221
boolean isLogicalEnd = desired == length && positionFile == curRange.getEnd();
if (curRange.getOffset() <= positionFile
&& (isLogicalEnd
|| (curRange.next == null
? positionFile <= curRange.getEnd()
: positionFile < curRange.getEnd()))) {
position = desired;
setCurrent(curRange, true);
return;

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actual change.

Exclude the resolved ORC dependency from the normal shadow merge, re-add it without InStream classes, and remove inherited key and IV debug logging from the overlay.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants