diff --git a/velox/dwio/parquet/reader/ParquetReader.cpp b/velox/dwio/parquet/reader/ParquetReader.cpp index 28170d235ff8..635366f19f13 100644 --- a/velox/dwio/parquet/reader/ParquetReader.cpp +++ b/velox/dwio/parquet/reader/ParquetReader.cpp @@ -280,7 +280,10 @@ std::unique_ptr ReaderBase::getParquetColumnInfo( auto curSchemaIdx = schemaIdx; for (int32_t i = 0; i < schemaElement.num_children; i++) { ++schemaIdx; - auto& childName = schema[schemaIdx].name; + auto childName = schema[schemaIdx].name; + if (isFileColumnNamesReadAsLowerCase()) { + folly::toLowerAscii(childName); + } auto childRequestedType = requestedType ? requestedType->asRow().findChild(childName) : nullptr; auto child = getParquetColumnInfo( diff --git a/velox/dwio/parquet/tests/reader/ParquetReaderTest.cpp b/velox/dwio/parquet/tests/reader/ParquetReaderTest.cpp index 743f14682627..e46dfadfa1ef 100644 --- a/velox/dwio/parquet/tests/reader/ParquetReaderTest.cpp +++ b/velox/dwio/parquet/tests/reader/ParquetReaderTest.cpp @@ -304,6 +304,8 @@ TEST_F(ParquetReaderTest, parseReadAsLowerCase) { const std::string upper(getExampleFilePath("upper.parquet")); dwio::common::ReaderOptions readerOptions{leafPool_.get()}; + auto outputRowType = ROW({"a", "b"}, {BIGINT(), BIGINT()}); + readerOptions.setFileSchema(outputRowType); readerOptions.setFileColumnNamesReadAsLowerCase(true); auto reader = createReader(upper, readerOptions); EXPECT_EQ(reader->numberOfRows(), 2ULL);