diff --git a/velox/dwio/parquet/reader/RepeatedColumnReader.cpp b/velox/dwio/parquet/reader/RepeatedColumnReader.cpp index 7b33154da7f5..f7a5f0fa832b 100644 --- a/velox/dwio/parquet/reader/RepeatedColumnReader.cpp +++ b/velox/dwio/parquet/reader/RepeatedColumnReader.cpp @@ -215,8 +215,7 @@ void MapColumnReader::filterRowGroups( uint64_t rowGroupSize, const dwio::common::StatsContext& context, dwio::common::FormatData::FilterRowGroupsResult& result) const { - keyReader_->filterRowGroups(rowGroupSize, context, result); - elementReader_->filterRowGroups(rowGroupSize, context, result); + // empty placeholder to avoid incorrect calling on parent's impl } ListColumnReader::ListColumnReader( @@ -318,7 +317,7 @@ void ListColumnReader::filterRowGroups( uint64_t rowGroupSize, const dwio::common::StatsContext& context, dwio::common::FormatData::FilterRowGroupsResult& result) const { - child_->filterRowGroups(rowGroupSize, context, result); + // empty placeholder to avoid incorrect calling on parent's impl } } // namespace facebook::velox::parquet diff --git a/velox/dwio/parquet/tests/examples/null_map.parquet b/velox/dwio/parquet/tests/examples/null_map.parquet new file mode 100644 index 000000000000..64dbe3e87a43 Binary files /dev/null and b/velox/dwio/parquet/tests/examples/null_map.parquet differ diff --git a/velox/dwio/parquet/tests/reader/ParquetTableScanTest.cpp b/velox/dwio/parquet/tests/reader/ParquetTableScanTest.cpp index bd9daa97db43..f9239a8249d6 100644 --- a/velox/dwio/parquet/tests/reader/ParquetTableScanTest.cpp +++ b/velox/dwio/parquet/tests/reader/ParquetTableScanTest.cpp @@ -384,6 +384,19 @@ TEST_F(ParquetTableScanTest, map) { assertSelectWithFilter({"map"}, {}, "", "SELECT map FROM tmp"); } +TEST_F(ParquetTableScanTest, nullMap) { + auto path = getExampleFilePath("null_map.parquet"); + loadData( + path, + ROW({"i", "c"}, {VARCHAR(), MAP(VARCHAR(), VARCHAR())}), + makeRowVector( + {"i", "c"}, + {makeConstant("1", 1), + makeNullableMapVector({std::nullopt})})); + + assertSelectWithFilter({"i", "c"}, {}, "", "SELECT i, c FROM tmp"); +} + // Core dump is fixed. TEST_F(ParquetTableScanTest, singleRowStruct) { auto vector = makeArrayVector({{}});