github-actions[bot] commented on code in PR #69300:
URL: https://github.com/apache/doris/pull/69300#discussion_r4321394838


##########
be/src/format_v2/table_reader.h:
##########
@@ -148,6 +152,7 @@ struct TableReadOptions {
     std::shared_ptr<io::IOContext> io_ctx;
     RuntimeState* runtime_state;
     RuntimeProfile* scanner_profile;
+    parquet::ParquetProfileCache* parquet_profile_cache = nullptr;

Review Comment:
   [P2] Cache the nested position-delete system-table reader too
   
   Scanning `table$position_deletes` with multiple Parquet delete files still 
takes the full counter-registration path for every split: 
`IcebergPositionDeleteSysTableV2Reader::_init_position_delete_reader()` creates 
a fresh `PositionDeleteFileTableReader` but omits this option. The generic 
factory consequently receives a null cache and `ParquetReader::_init_profile()` 
calls `ParquetProfile::init()` for each file, repeatedly acquiring the shared 
child profile's registration lock. Retain and pass a cache bound to 
`IcebergPositionDeleteFileReader` across splits; forwarding the outer cache 
would attribute counters to the wrong profile. This is separate from the 
earlier fixed `_create_delete_file_reader()` issue: `$position_deletes` scans 
use this nested system-table reader instead of the ordinary Iceberg 
delete-application factory. Add repeated-split coverage for this path.



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