From 58fa4bea1ff6ba57da217ae83c3f09f039cf180f Mon Sep 17 00:00:00 2001 From: Liang-Chi Hsieh Date: Tue, 19 Apr 2022 08:59:15 -0700 Subject: [PATCH 1/3] Fix map nullable flag --- parquet/src/arrow/schema.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/parquet/src/arrow/schema.rs b/parquet/src/arrow/schema.rs index b0679e361819..55483876fce5 100644 --- a/parquet/src/arrow/schema.rs +++ b/parquet/src/arrow/schema.rs @@ -1018,7 +1018,7 @@ impl ParquetTypeConverter<'_> { Box::new(Field::new( key_item.name(), DataType::Struct(vec![key, value]), - false, + self.schema.is_optional(), )), false, // There is no information to tell if keys are sorted ))), From aab053c68c8907c30fb02a8559f3bc47251b8977 Mon Sep 17 00:00:00 2001 From: Liang-Chi Hsieh Date: Tue, 19 Apr 2022 17:22:08 -0700 Subject: [PATCH 2/3] Fix tests --- parquet/src/arrow/schema.rs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/parquet/src/arrow/schema.rs b/parquet/src/arrow/schema.rs index 55483876fce5..b6424a50111e 100644 --- a/parquet/src/arrow/schema.rs +++ b/parquet/src/arrow/schema.rs @@ -1500,7 +1500,7 @@ mod tests { Field::new("str", DataType::Utf8, false), Field::new("num", DataType::Int32, false), ]), - false, + true, )), false, ), @@ -1525,7 +1525,7 @@ mod tests { Field::new("key", DataType::Utf8, false), Field::new("value", DataType::Int32, true), ]), - false, + true, )), false, ), @@ -2096,7 +2096,7 @@ mod tests { true, ), ]), - false, + true, )), false, // fails to roundtrip keys_sorted ), @@ -2119,7 +2119,7 @@ mod tests { true, ), ]), - false, + true, )), false, // fails to roundtrip keys_sorted ), From 380ba0a4b512f7990b0a29af0a4210768613b99f Mon Sep 17 00:00:00 2001 From: Liang-Chi Hsieh Date: Tue, 19 Apr 2022 17:30:47 -0700 Subject: [PATCH 3/3] Add another map case --- parquet/src/arrow/schema.rs | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/parquet/src/arrow/schema.rs b/parquet/src/arrow/schema.rs index b6424a50111e..239311adec71 100644 --- a/parquet/src/arrow/schema.rs +++ b/parquet/src/arrow/schema.rs @@ -2125,6 +2125,29 @@ mod tests { ), true, ), + Field::new( + "c41", + DataType::Map( + Box::new(Field::new( + "my_entries", + DataType::Struct(vec![ + Field::new("my_key", DataType::Utf8, false), + Field::new( + "my_value", + DataType::List(Box::new(Field::new( + "item", + DataType::Utf8, + true, + ))), + true, + ), + ]), + false, + )), + false, // fails to roundtrip keys_sorted + ), + false, + ), ], metadata, );