Skip to content

[CPP] Apply residual row offsets in non-aligned page decoding - #1007

Merged
ColinLeeo merged 1 commit into
apache:developfrom
ColinLeeo:codex/fix-tree-index-row-offset
Oct 10, 2026
Merged

ColinLeeo merged 1 commit into
apache:developfrom
ColinLeeo:codex/fix-tree-index-row-offset

Conversation

@ColinLeeo

Copy link
Copy Markdown
Contributor

Non-aligned prepared reads skip whole chunks and pages using statistics, but previously left any remaining row offset unapplied during page decoding. For a tree series containing values 0..39, an indexed series[30:40] returned 0..9 instead of 30..39.

Consume the residual offset after filtering in the boolean, string, and numeric batch decoders, while retaining whole-chunk/page skipping. Continue scanning after a page whose matching rows were consumed by the offset, and preserve the counter when decoding resumes on an unfinished page.

Regression coverage includes six value types, small output capacities, page/chunk boundaries, pages larger than the output block, filtered offsets, exhausted ranges, and Python slices across files and reopened indexes.

Validation:

  • C++ reader/query suites: 121 passed (7 existing disabled tests excluded), with Snappy and LZ4 enabled.
  • Full Python suite: 527 passed, 1 skipped.
  • Changed C++ lines checked with clang-format; Python checked with Black; git diff --check passed.

@ColinLeeo
ColinLeeo merged commit 51b04eb into apache:develop Oct 10, 2026
39 checks passed
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