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: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to