Skip to content

Commit ed16015

Browse files
committed
Fix inconsistent AvroSchema type and value for SqlType.Date values
1 parent ec397ce commit ed16015

2 files changed

Lines changed: 4 additions & 2 deletions

File tree

  • sdks/java/extensions/avro/src

sdks/java/extensions/avro/src/main/java/org/apache/beam/sdk/extensions/avro/schemas/utils/AvroUtils.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1380,7 +1380,7 @@ private static org.apache.avro.Schema getFieldSchema(
13801380
return Days.daysBetween(Instant.EPOCH, (Instant) value).getDays();
13811381
} else if (SqlTypes.DATE.getIdentifier().equals(identifier)) {
13821382
// portable SqlTypes.DATE is backed by java.time.LocalDate
1383-
return ((java.time.LocalDate) value).toEpochDay();
1383+
return (int) ((java.time.LocalDate) value).toEpochDay();
13841384
} else if ("TIME".equals(identifier)) {
13851385
return (int) ((Instant) value).getMillis();
13861386
} else if (SqlTypes.TIMESTAMP.getIdentifier().equals(identifier)) {

sdks/java/extensions/avro/src/test/java/org/apache/beam/sdk/extensions/avro/schemas/utils/AvroUtilsTest.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1077,7 +1077,9 @@ public void testSqlTypesToGenericRecord() {
10771077

10781078
org.apache.avro.Schema avroSchema = AvroUtils.toAvroSchema(beamSchema);
10791079
GenericRecord expectedRecord =
1080-
new GenericRecordBuilder(avroSchema).set("local_date", localDate.toEpochDay()).build();
1080+
new GenericRecordBuilder(avroSchema)
1081+
.set("local_date", (int) localDate.toEpochDay())
1082+
.build();
10811083

10821084
assertEquals(expectedRecord, AvroUtils.toGenericRecord(rowData, avroSchema));
10831085
}

0 commit comments

Comments
 (0)