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


##########
be/src/format/table/iceberg_reader.cpp:
##########
@@ -335,11 +365,32 @@ ColumnIdResult 
IcebergParquetReader::_create_column_ids(const FieldDescriptor* f
     };
 
     for (const auto* slot : tuple_descriptor->slots()) {
-        auto it = iceberg_id_to_field_schema_map.find(slot->col_unique_id());
-        if (it == iceberg_id_to_field_schema_map.end()) {
+        const FieldSchema* field_schema = nullptr;
+        if (table_info_node != nullptr) {
+            if (table_info_node->children_column_exists(slot->col_name())) {

Review Comment:
   This new `table_info_node` branch still runs for every tuple slot, but 
`history_schema_info` only contains columns that FE serializes into the schema 
tree. A global row-id slot is classified as `SYNTHESIZED`, and the FE 
column-index/schema helpers skip that non-file-backed slot, so a 
TopN/global-row-id projection can leave the slot name absent from the 
`StructNode`. When `_create_column_ids()` reaches it, 
`StructNode::children_column_exists()` `DCHECK`s and then does 
`children.at(slot_name)`, which can throw/abort during V1 Parquet init before 
the runtime fill handler produces the column. The ORC twin at line 697 has the 
same issue. Please skip non-file-backed metadata slots here, or first check 
that the struct contains the slot name before asking whether the child exists, 
and cover this V1 metadata-column path in tests.
   



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