Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -233,7 +233,7 @@ private static TimestampData convertToTimestamp(Object object, LogicalType type)
return TimestampData.fromEpochMillis(timeLong);
} else if (precision <= 6) {
return TimestampData.fromEpochMillis(
Math.floorDiv(timeLong, 1000L), (int) Math.floorMod(timeLong, 1000L) * 1_000_000);
Math.floorDiv(timeLong, 1000L), (int) Math.floorMod(timeLong, 1000L) * 1000);
} else {
// Iceberg: Added support for nanoseconds precision (FLINK-39251)
return TimestampData.fromEpochMillis(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,7 @@ public static class Primitives implements DataGenerator {
private static final int DAYS_BTW_EPOC_AND_20220110 =
Days.daysBetween(JODA_DATETIME_EPOC, JODA_DATETIME_20220110).getDays();
private static final int HOUR_8_IN_MILLI = (int) TimeUnit.HOURS.toMillis(8);
private static final int MICROS_OF_MILLI_20220110 = 456;

private static final LocalDate JAVA_LOCAL_DATE_20220110 = LocalDate.of(2022, 1, 10);
private static final LocalTime JAVA_LOCAL_TIME_HOUR8 = LocalTime.of(8, 0);
Expand Down Expand Up @@ -226,8 +227,10 @@ public GenericRowData generateFlinkRowData() {
HOUR_8_IN_MILLI,
// Although Avro logical type for timestamp fields are in micro seconds,
// AvroToRowDataConverters only looks for long value in milliseconds.
TimestampData.fromEpochMillis(JODA_DATETIME_20220110.getMillis()),
TimestampData.fromEpochMillis(JODA_DATETIME_20220110.getMillis()),
TimestampData.fromEpochMillis(
JODA_DATETIME_20220110.getMillis(), MICROS_OF_MILLI_20220110 * 1000),
TimestampData.fromEpochMillis(
JODA_DATETIME_20220110.getMillis(), MICROS_OF_MILLI_20220110 * 1000),
uuidBytes,
binaryBytes,
DecimalData.fromBigDecimal(BIG_DECIMAL_NEGATIVE, 9, 2),
Expand All @@ -253,8 +256,12 @@ public org.apache.avro.generic.GenericRecord generateAvroGenericRecord() {
genericRecord.put("time_field", HOUR_8_IN_MILLI);
// Now that AvroToRowDataConverters correctly supports microseconds,
// we must inject correct microsecond scale values into the Avro data.
genericRecord.put("ts_with_zone_field", JODA_DATETIME_20220110.getMillis() * 1000L);
genericRecord.put("ts_without_zone_field", JODA_DATETIME_20220110.getMillis() * 1000L);
genericRecord.put(
"ts_with_zone_field",
JODA_DATETIME_20220110.getMillis() * 1000L + MICROS_OF_MILLI_20220110);
genericRecord.put(
"ts_without_zone_field",
JODA_DATETIME_20220110.getMillis() * 1000L + MICROS_OF_MILLI_20220110);
genericRecord.put("ts_ns_with_zone_field", ICEBERG_MAX_NANOS_EPOCH);
genericRecord.put("ts_ns_without_zone_field", ICEBERG_MAX_NANOS_EPOCH);

Expand Down
Loading