yihua opened a new pull request, #906:
URL: https://github.com/apache/hudi-rs/pull/906

   ## Description
   
   closes #905
   
   Stacked on #869; review that first.
   
   `DataBlock::entries` walks an HFile data block's entries as borrowed key and 
value slices, parsing the same layout `KeyValue::parse` does, and fails on an 
entry that does not fit the block rather than ending the walk early, since a 
lookup that stopped quietly would report its keys as absent. 
`HFileReader::records_in_block_admitted` builds records only for the keys a 
predicate admits, and the record index log-block scan uses it, so a lookup of a 
few thousand keys among millions of entries pays key comparisons instead of a 
record allocation per entry.
   
   On a 10M-row table, a 10,000-key upsert spent about 90% of its time in this 
decode before the change.
   
   ## How are the changes test-covered
   
   - [ ] N/A
   - [x] Automated tests (unit and/or integration tests)
   - [ ] Manual tests
     - [ ] Details are described below
   
   `entries_match_key_values_and_reject_a_truncated_entry` checks the walk 
against the copying iterator on a hand-built block and that a truncated tail 
entry is an error; `test_records_in_block_admitted_matches_the_full_block` 
checks the admitted records against the filtered full block on the HBase 
fixture. The record index and HFile suites pass unchanged.
   


-- 
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