diff --git a/parquet-column/src/main/java/org/apache/parquet/schema/Types.java b/parquet-column/src/main/java/org/apache/parquet/schema/Types.java index 2f12991ab0..82e4b96c8e 100644 --- a/parquet-column/src/main/java/org/apache/parquet/schema/Types.java +++ b/parquet-column/src/main/java/org/apache/parquet/schema/Types.java @@ -344,6 +344,9 @@ public abstract static class BasePrimitiveBuilder parquetSchema = Lists.newArrayList(new SchemaElement("Message").setNum_children(1), leaf); + List columnOrders = + Lists.newArrayList(new org.apache.parquet.format.ColumnOrder()); + columnOrders.get(0).setTYPE_ORDER(new TypeDefinedOrder()); + + MessageType schema = converter.fromParquetSchema(parquetSchema, columnOrders); + + PrimitiveType result = schema.getType("bool_ts").asPrimitiveType(); + assertThat(result.getPrimitiveTypeName()).isEqualTo(PrimitiveTypeName.BOOLEAN); + assertThat(result.getLogicalTypeAnnotation()).isNull(); + assertThat(result.columnOrder().getColumnOrderName()).isEqualTo(ColumnOrder.ColumnOrderName.UNDEFINED); + } + + private static PrimitiveType droppedAnnotationInt32() { + return Types.optional(PrimitiveTypeName.INT32) + .columnOrder(ColumnOrder.undefined()) + .named("ts_int32"); + } + + @Test + public void testDroppedAnnotationIgnoresStats() { + ParquetMetadataConverter converter = new ParquetMetadataConverter(); + org.apache.parquet.format.Statistics stats = new org.apache.parquet.format.Statistics(); + stats.setMin_value(new byte[] {1, 2, 3, 4}); + stats.setMax_value(new byte[] {0, 1, 2, 3}); + stats.setNull_count(3L); + + Statistics result = converter.fromParquetStatistics(Version.FULL_VERSION, stats, droppedAnnotationInt32()); + + assertThat(result.hasNonNullValue()).isFalse(); + assertThat(result.isNumNullsSet()).isTrue(); + assertThat(result.getNumNulls()).isEqualTo(3L); + } + + @Test + public void testDroppedAnnotationColumnIndexIsNull() { + PrimitiveType int32Type = Types.required(PrimitiveTypeName.INT32).named("i32"); + ColumnIndexBuilder cb = ColumnIndexBuilder.getBuilder(int32Type, Integer.MAX_VALUE); + Statistics stats = Statistics.createStats(int32Type); + stats.updateStats(-100); + stats.updateStats(100); + cb.add(stats, null); + org.apache.parquet.format.ColumnIndex parquetColumnIndex = + ParquetMetadataConverter.toParquetColumnIndex(int32Type, cb.build()); + + assertThat(ParquetMetadataConverter.fromParquetColumnIndex(droppedAnnotationInt32(), parquetColumnIndex)) + .isNull(); + } }