Skip to content

Commit e7c97e6

Browse files
committed
Update to parquet-format 2.11.0
1 parent 29632de commit e7c97e6

5 files changed

Lines changed: 40 additions & 2 deletions

File tree

parquet-column/src/main/java/org/apache/parquet/schema/LogicalTypeAnnotation.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,9 @@ protected LogicalTypeAnnotation fromString(List<String> params) {
5959
VARIANT {
6060
@Override
6161
protected LogicalTypeAnnotation fromString(List<String> params) {
62+
Preconditions.checkArgument(
63+
params.isEmpty(), "Expecting 0 parameter for variant logical type, got %d", params.size());
64+
6265
return variantType();
6366
}
6467
},

parquet-column/src/test/java/org/apache/parquet/parser/TestParquetParser.java

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
*/
1919
package org.apache.parquet.parser;
2020

21+
import static org.apache.parquet.format.LogicalTypes.VARIANT;
2122
import static org.apache.parquet.schema.LogicalTypeAnnotation.TimeUnit.MILLIS;
2223
import static org.apache.parquet.schema.LogicalTypeAnnotation.TimeUnit.NANOS;
2324
import static org.apache.parquet.schema.LogicalTypeAnnotation.intType;
@@ -55,6 +56,7 @@
5556
import static org.junit.Assert.assertEquals;
5657

5758
import org.apache.parquet.schema.GroupType;
59+
import org.apache.parquet.schema.LogicalTypeAnnotation;
5860
import org.apache.parquet.schema.MessageType;
5961
import org.apache.parquet.schema.MessageTypeParser;
6062
import org.apache.parquet.schema.OriginalType;
@@ -447,4 +449,30 @@ public void testEmbeddedAnnotations() {
447449
MessageType reparsed = MessageTypeParser.parseMessageType(parsed.toString());
448450
assertEquals(expected, reparsed);
449451
}
452+
453+
@Test
454+
public void testVARIANTAnnotation() {
455+
String message = "message Message {\n"
456+
+ " required group aVariant (VARIANT) {\n"
457+
+ " required binary metadata;\n"
458+
+ " required binary value;\n"
459+
+ " }\n"
460+
+ "}\n";
461+
462+
MessageType expected = buildMessage()
463+
.requiredGroup()
464+
.as(LogicalTypeAnnotation.variantType())
465+
.required(BINARY)
466+
.named("metadata")
467+
.required(BINARY)
468+
.named("value")
469+
.named("aVariant")
470+
.named("Message");
471+
472+
MessageType parsed = parseMessageType(message);
473+
474+
assertEquals(expected, parsed);
475+
MessageType reparsed = parseMessageType(parsed.toString());
476+
assertEquals(expected, reparsed);
477+
}
450478
}

parquet-format-structures/src/main/java/org/apache/parquet/format/LogicalTypes.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,4 +53,5 @@ public static LogicalType DECIMAL(int scale, int precision) {
5353
public static final LogicalType JSON = LogicalType.JSON(new JsonType());
5454
public static final LogicalType BSON = LogicalType.BSON(new BsonType());
5555
public static final LogicalType FLOAT16 = LogicalType.FLOAT16(new Float16Type());
56+
public static final LogicalType VARIANT = LogicalType.VARIANT(new VariantType());
5657
}

parquet-hadoop/src/main/java/org/apache/parquet/format/converter/ParquetMetadataConverter.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,7 @@
112112
import org.apache.parquet.format.TypeDefinedOrder;
113113
import org.apache.parquet.format.UUIDType;
114114
import org.apache.parquet.format.Uncompressed;
115+
import org.apache.parquet.format.VariantType;
115116
import org.apache.parquet.format.XxHash;
116117
import org.apache.parquet.hadoop.metadata.BlockMetaData;
117118
import org.apache.parquet.hadoop.metadata.ColumnChunkMetaData;
@@ -516,14 +517,19 @@ public Optional<LogicalType> visit(LogicalTypeAnnotation.Float16LogicalTypeAnnot
516517
}
517518

518519
@Override
519-
public Optional<LogicalType> visit(LogicalTypeAnnotation.UnknownLogicalTypeAnnotation intervalLogicalType) {
520+
public Optional<LogicalType> visit(LogicalTypeAnnotation.UnknownLogicalTypeAnnotation unknownLogicalType) {
520521
return of(LogicalType.UNKNOWN(new NullType()));
521522
}
522523

523524
@Override
524525
public Optional<LogicalType> visit(LogicalTypeAnnotation.IntervalLogicalTypeAnnotation intervalLogicalType) {
525526
return of(LogicalType.UNKNOWN(new NullType()));
526527
}
528+
529+
@Override
530+
public Optional<LogicalType> visit(LogicalTypeAnnotation.VariantLogicalTypeAnnotation variantLogicalType) {
531+
return of(LogicalType.VARIANT(new VariantType()));
532+
}
527533
}
528534

529535
private void addRowGroup(

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@
9494
<shade.prefix>shaded.parquet</shade.prefix>
9595
<!-- Guarantees no newer classes/methods/constants are used by parquet. -->
9696
<hadoop.version>3.3.0</hadoop.version>
97-
<parquet.format.version>2.10.0</parquet.format.version>
97+
<parquet.format.version>2.11.0</parquet.format.version>
9898
<previous.version>1.15.1</previous.version>
9999
<thrift.executable>thrift</thrift.executable>
100100
<format.thrift.executable>${thrift.executable}</format.thrift.executable>

0 commit comments

Comments
 (0)