anoopj opened a new issue, #3014:
URL: https://github.com/apache/iceberg-rust/issues/3014

   ### Is your feature request related to a problem or challenge?
   
   `CachingDeleteFileLoader::parse_positional_deletes_record_batch_stream`  
currently allocates and hashes the map key on every row.   A positional delete 
file is sorted by (file_path, pos) and typically targets a single data file, so 
the same (often ~60–80 char) path string repeats for every one of potentially 
millions of rows. Each
     iteration heap-allocates a throwaway String and hashes it purely to look 
up a map entry that, after the first row, already exists. On merge-on-read 
tables with large delete files this is pure overhead on
     a hot path.
   
   ### Describe the solution you'd like
   
   Within each Arrow batch, buffer the contiguous run of positions for one path 
and merge it into the map with a single entry lookup, so the key is allocated 
and hashed once per run instead of once per row. Positions are still inserted 
one-by-one (no ordering precondition), and a recurring path merges into its 
existing delete vector via entry().or_default(), so results are identical 
regardless of ordering.
   
   Within each Arrow batch, buffer the contiguous run of positions for one path 
and merge it into the map with a single entry lookup. 
   
   ## Java parity
   
   This brings the Rust reader in line with the Java implementation, which 
already avoids per-row key allocation.
   
   ## Scope
   
   Applies to the Parquet positional-delete read path (the v2 representation). 
v3 deletion vectors are a separate, Puffin-encoded bitmap path 
   
   ### Willingness to contribute
   
   I can contribute to this feature independently


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


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to