|
18 | 18 | */ |
19 | 19 | package org.apache.parquet.parser; |
20 | 20 |
|
| 21 | +import static org.apache.parquet.format.LogicalTypes.VARIANT; |
21 | 22 | import static org.apache.parquet.schema.LogicalTypeAnnotation.TimeUnit.MILLIS; |
22 | 23 | import static org.apache.parquet.schema.LogicalTypeAnnotation.TimeUnit.NANOS; |
23 | 24 | import static org.apache.parquet.schema.LogicalTypeAnnotation.intType; |
|
55 | 56 | import static org.junit.Assert.assertEquals; |
56 | 57 |
|
57 | 58 | import org.apache.parquet.schema.GroupType; |
| 59 | +import org.apache.parquet.schema.LogicalTypeAnnotation; |
58 | 60 | import org.apache.parquet.schema.MessageType; |
59 | 61 | import org.apache.parquet.schema.MessageTypeParser; |
60 | 62 | import org.apache.parquet.schema.OriginalType; |
@@ -447,4 +449,30 @@ public void testEmbeddedAnnotations() { |
447 | 449 | MessageType reparsed = MessageTypeParser.parseMessageType(parsed.toString()); |
448 | 450 | assertEquals(expected, reparsed); |
449 | 451 | } |
| 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 | + } |
450 | 478 | } |
0 commit comments