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


##########
be/src/format/table/iceberg_reader_mixin.h:
##########
@@ -1226,6 +1245,22 @@ Status 
IcebergReaderMixin<BaseReader>::_register_missing_equality_delete_column(
     return Status::OK();
 }
 
+template <typename BaseReader>
+void IcebergReaderMixin<BaseReader>::_register_derived_equality_delete_column(
+        const std::string& name, const DataTypePtr& delete_key_type) {
+    DORIS_CHECK(delete_key_type != nullptr);
+    // The key is extracted from its source column after the read. Until then 
a placeholder keeps
+    // the carrier at the batch row count, so the reader filters it with the 
other columns.
+    auto placeholder = delete_key_type->create_column();
+    placeholder->insert_default();
+    this->register_synthesized_column_handler(

Review Comment:
   [P1] Resolve hidden placeholders without requiring tuple slots
   
   The new projected-root and shared-carrier paths register internal names such 
as `__equality_delete_column__2_existing` here, but those keys only exist in 
`_expand_columns`, not the query tuple. `ParquetReader::_do_init_reader` 
unconditionally calls `_classify_columns_for_lazy_read`, whose production-only 
synthesized-column loop requires a matching tuple slot. This aborts on 
`DCHECK(slot_id != -1)` in debug builds. In release, 
`RowDescriptor::get_column_id(-1)` returns `-1`, which is stored as 
`UINT32_MAX` in `all_predicate_col_ids`; with lazy materialization and a 
partially selective predicate (for example `SELECT id, payload ... WHERE id > 
1` with a nested equality delete), `_do_lazy_read` passes that index to 
`Block::filter_block_internal` and accesses outside the block. The added tests 
miss this because `BE_TEST` excludes the classifier loop. Please resolve these 
internal keys through their actual expanded block positions, or give them a 
separate fill/filter path, and cover pro
 duction classification with a selective predicate.



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