From 03a1fb7713725701d3470e78c2b85dbcdd7f7d1e Mon Sep 17 00:00:00 2001 From: Oscar WvH-K Date: Fri, 27 Jun 2025 16:11:08 +0200 Subject: [PATCH 1/3] AVRO-4159: Add duration logical type to switch statement --- lang/java/avro/src/main/java/org/apache/avro/LogicalTypes.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lang/java/avro/src/main/java/org/apache/avro/LogicalTypes.java b/lang/java/avro/src/main/java/org/apache/avro/LogicalTypes.java index 6a894f05104..d5b246b4b7d 100644 --- a/lang/java/avro/src/main/java/org/apache/avro/LogicalTypes.java +++ b/lang/java/avro/src/main/java/org/apache/avro/LogicalTypes.java @@ -140,6 +140,9 @@ private static LogicalType fromSchemaImpl(Schema schema, boolean throwErrors) { case BIG_DECIMAL: logicalType = BIG_DECIMAL_TYPE; break; + case DURATION: + logicalType = DURATION_TYPE; + break; case UUID: logicalType = UUID_TYPE; break; From ece9470e4485413d11c80e58ee4493ddf9be1540 Mon Sep 17 00:00:00 2001 From: Oscar WvH-K Date: Fri, 27 Jun 2025 16:11:23 +0200 Subject: [PATCH 2/3] AVRO-4159: Improve TimePeriod javadoc --- .../src/main/java/org/apache/avro/util/TimePeriod.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lang/java/avro/src/main/java/org/apache/avro/util/TimePeriod.java b/lang/java/avro/src/main/java/org/apache/avro/util/TimePeriod.java index a1f7fa4e8b5..89496744f30 100644 --- a/lang/java/avro/src/main/java/org/apache/avro/util/TimePeriod.java +++ b/lang/java/avro/src/main/java/org/apache/avro/util/TimePeriod.java @@ -52,7 +52,7 @@ *

* Compared to {@link Period java.time.Period}, this class has a smaller range * ('only' supporting a little less than 358 million years), and cannot support - * negative time periods. + * negative periods. *

* *

@@ -82,9 +82,9 @@ * * * Time range (approx.) - * 0 - 49 days + * 0 &endash; 49 days * unsupported - * -68 - 68 years + * -68 &endash; 68 years * * * Date range (approx.) @@ -95,7 +95,7 @@ * * * @see Avro 1.11 + * "https://avro.apache.org/docs/current/specification/#duration">Avro * specification on duration */ public final class TimePeriod implements TemporalAmount, Serializable { From 499b538a2ceeb448bd803880c30fde92e8834785 Mon Sep 17 00:00:00 2001 From: Oscar WvH-K Date: Fri, 27 Jun 2025 16:14:56 +0200 Subject: [PATCH 3/3] AVRO-4159: Also test for support by type name --- .../avro/src/test/java/org/apache/avro/TestLogicalType.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lang/java/avro/src/test/java/org/apache/avro/TestLogicalType.java b/lang/java/avro/src/test/java/org/apache/avro/TestLogicalType.java index 733997db28f..61cc03a94c8 100644 --- a/lang/java/avro/src/test/java/org/apache/avro/TestLogicalType.java +++ b/lang/java/avro/src/test/java/org/apache/avro/TestLogicalType.java @@ -215,7 +215,7 @@ void uuidExtendsString() { @Test void durationExtendsFixed12() { Schema durationSchema = LogicalTypes.duration().addToSchema(Schema.createFixed("f", null, null, 12)); - assertEquals(LogicalTypes.duration(), durationSchema.getLogicalType()); + assertEquals(LogicalTypes.duration(), LogicalTypes.fromSchema(durationSchema)); assertThrows("Duration requires a fixed(12)", IllegalArgumentException.class, "Duration can only be used with an underlying fixed type of size 12.",