diff --git a/velox/dwio/parquet/reader/ParquetReader.cpp b/velox/dwio/parquet/reader/ParquetReader.cpp index 635366f19f136..d5b9c6995b9d4 100644 --- a/velox/dwio/parquet/reader/ParquetReader.cpp +++ b/velox/dwio/parquet/reader/ParquetReader.cpp @@ -464,6 +464,23 @@ std::unique_ptr ReaderBase::getParquetColumnInfo( maxDefine, isOptional, isRepeated); + } else { + // Row type + auto type = + createRowType(children, isFileColumnNamesReadAsLowerCase()); + return std::make_unique( + std::move(type), + std::move(children), + curSchemaIdx, + maxSchemaElementIdx, + ParquetTypeWithId::kNonLeaf, // columnIdx, + std::move(name), + std::nullopt, + std::nullopt, + maxRepeat, + maxDefine, + isOptional, + isRepeated); } } else { // Row type diff --git a/velox/dwio/parquet/tests/examples/proto-struct-with-array.parquet b/velox/dwio/parquet/tests/examples/proto-struct-with-array.parquet new file mode 100644 index 0000000000000..325a8370ad20e Binary files /dev/null and b/velox/dwio/parquet/tests/examples/proto-struct-with-array.parquet differ