zhf999 opened a new pull request, #207:
URL: https://github.com/apache/paimon-cpp/pull/207

   <!-- PR title: perf(parquet): reuse leaf column index set across fields in 
page-filtered reads -->
   
   ### Purpose
   
   `PageFilteredRowGroupReader::ReadFilteredRowGroup()` reads one top-level 
field at a time and, for
   every field, calls the patched Arrow API 
`parquet::arrow::FileReader::GetColumn(i, column_indices,
   iterator_factory, out)` to build a leaf-filtered reader tree. That API used 
to take a
   `const std::vector<int>&` and internally convert it with 
`VectorToSharedSet(column_indices)`, so a
   fresh `std::unordered_set<int>` was allocated and populated on **every** 
call, i.e. once per
   projected top-level field per row group. For wide projections and many 
filtered row groups this is a
   repeated allocation plus hashing of the same, unchanging leaf index set on 
the hot read path.
   
   No behavioral change is intended: the set contents are identical to what 
`VectorToSharedSet()`
   produced from the same `column_indices` vector, and the public 
`ReadFilteredRowGroup()` signature
   (which still takes `const std::vector<int32_t>&`) is unchanged. Only the 
internal helper and the
   vendored-Arrow patch signature change.
   
   Note: because `cmake_modules/arrow.diff` is part of the change, the Arrow 
external project must be
   re-patched and rebuilt for the new signature to take effect; a stale Arrow 
install directory will
   fail to compile the caller.
   
   ### Tests
   
   No new test is added.
   
   ### API and Format
   
   No change to public API.
   
   ### Documentation
   
   No new feature.
   
   ### Generative AI tooling
   
   No.
   


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