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]