You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hudi.apache.org by "linliu-code (via GitHub)" <gi...@apache.org> on 2026/08/02 17:29:58 UTC
[PR] feat(core): port the merge-on-read file group reader [hudi-rs]
linliu-code opened a new pull request, #654:
URL: https://github.com/apache/hudi-rs/pull/654
**Stacked on #639–#653** — their commits appear here until they merge. **Review only the last commit.**
The reader itself, and the **last module of the port**. It resolves the schemas a read needs, opens the base file, runs the log scan into a buffer, and merges the two into batches. The subsystem is now complete — and still `pub(crate)` and unreferenced.
Base file reads go through this crate's `BaseFileReader` rather than the storage helpers upstream calls, so **Lance base files work the same way parquet ones do**.
## Reads are eager — the decision behind this PR
Upstream opens the base file as a stream and consumes it **synchronously**, one row group at a time (`block_on` per group). That deadlocks inside the async contexts this crate reads from — `Table::read_stream`, the DataFusion exec, and the Python bindings all consume from async.
So the streaming path resolves to the eager one for now: same rows, same order, higher peak memory, no worse than the existing read path. The `streaming` argument is kept so an async-native merge iterator can switch it back on without changing callers, and the streaming branch returns an error rather than panicking if reached early.
Two capabilities upstream threads through the base read are dropped and **named rather than faked**: the predicate push-down filter (no caller here) and the row-number column (position-based merging needs it; not wired up).
## Two fixes that fell out of the ported tests
- **`Instant::parse_naive_datetime` could panic.** It sliced `timestamp[..14]` without a length check, so any shorter value crashed. Callers reach it with values read from *data* — a `_hoodie_commit_time` cell — not only with instants parsed from well-formed file names. Now returns an error, matching the crate's no-panic convention.
- **`InstantRange` gains `is_in_range_lexicographic`**, which is how the reader bounds a commit time it cannot parse as a datetime. Additive; existing methods untouched.
Build warning-free; **1102 lib tests green** (709 before the port began).
🤖 Generated with [Claude Code](https://claude.com/claude-code)
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@hudi.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] feat(core): port the merge-on-read file group reader [hudi-rs]
Posted by "linliu-code (via GitHub)" <gi...@apache.org>.
linliu-code commented on PR #654:
URL: https://github.com/apache/hudi-rs/pull/654#issuecomment-5232822564
Closing: this line is superseded.
The merge-on-read work now lives on a single line (#663-#673, plus #675), which
starts from the port as one squashed commit rather than this decomposition of
it. That squashed commit contains everything this chain built, so nothing here
is lost -- it is the same tree, reached by a different route.
#660 carries the full squash for review, and is now up to date with the tip.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@hudi.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] feat(core): port the merge-on-read file group reader [hudi-rs]
Posted by "linliu-code (via GitHub)" <gi...@apache.org>.
linliu-code closed pull request #654: feat(core): port the merge-on-read file group reader
URL: https://github.com/apache/hudi-rs/pull/654
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@hudi.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org