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


##########
be/src/format/parquet/vparquet_column_reader.cpp:
##########
@@ -115,7 +1667,7 @@ Status ParquetColumnReader::create(io::FileReaderSPtr 
file, FieldSchema* field,
     size_t total_rows = row_group.num_rows;
     if (field->data_type->get_primitive_type() == TYPE_ARRAY) {
         std::unique_ptr<ParquetColumnReader> element_reader;

Review Comment:
   The factory still dispatches ARRAY/MAP/STRUCT using 
`field->data_type->get_primitive_type()` without unwrapping nullable, so the 
new VARIANT struct-reader path can still send a valid optional complex 
`typed_value` child into the scalar-reader branch. For example, a VARIANT 
schema with `optional group typed_value { optional int64 a; }` selected by 
`v['a']` reaches the top synthetic struct reader, then recurses into the 
`typed_value` child whose `data_type` is `Nullable(Struct(...))`; this skips 
the STRUCT branch and falls through with the group field's 
`physical_column_index == -1`. This is distinct from the earlier optional 
top-level VARIANT thread because the top synthetic struct is now non-nullable, 
but its optional complex children remain nullable. Please dispatch 
ARRAY/MAP/STRUCT on `remove_nullable(field->data_type)` as well, and add 
coverage for optional complex `typed_value` struct/list/map shards.



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