From 6d156e41857206cd148366c1a73152755be0f071 Mon Sep 17 00:00:00 2001 From: Pramod Date: Fri, 9 Aug 2024 12:56:29 -0700 Subject: [PATCH] Fix childName to consider ReaderOption fileColumnNamesReadAsLowerCase (#10687) Summary: Converts `childName` to lowercase if hive config `isFileColumnNamesReadAsLowerCase` is enabled. cc: yingsu00 aditi-pandit Pull Request resolved: https://github.com/facebookincubator/velox/pull/10687 Reviewed By: Yuhta Differential Revision: D61032300 Pulled By: xiaoxmeng fbshipit-source-id: 38520b69cf575f0a7acc2184963573b432b76a85 --- velox/dwio/parquet/reader/ParquetReader.cpp | 5 ++++- velox/dwio/parquet/tests/reader/ParquetReaderTest.cpp | 2 ++ 2 files changed, 6 insertions(+), 1 deletion(-) 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);