You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hudi.apache.org by da...@apache.org on 2023/02/27 08:29:25 UTC
[hudi] branch master updated: [HUDI-5850] Fix timestamp(6) field long overflow (#8052)
This is an automated email from the ASF dual-hosted git repository.
danny0405 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hudi.git
The following commit(s) were added to refs/heads/master by this push:
new 58e9ce710b4 [HUDI-5850] Fix timestamp(6) field long overflow (#8052)
58e9ce710b4 is described below
commit 58e9ce710b405e7653236989912eae49559cd011
Author: sandyfog <15...@qq.com>
AuthorDate: Mon Feb 27 16:29:16 2023 +0800
[HUDI-5850] Fix timestamp(6) field long overflow (#8052)
---
.../src/main/java/org/apache/hudi/util/RowDataToAvroConverters.java | 3 ++-
.../src/test/java/org/apache/hudi/table/ITTestHoodieDataSource.java | 6 ++++--
2 files changed, 6 insertions(+), 3 deletions(-)
diff --git a/hudi-flink-datasource/hudi-flink/src/main/java/org/apache/hudi/util/RowDataToAvroConverters.java b/hudi-flink-datasource/hudi-flink/src/main/java/org/apache/hudi/util/RowDataToAvroConverters.java
index ecebd1adcdb..39b781c2751 100644
--- a/hudi-flink-datasource/hudi-flink/src/main/java/org/apache/hudi/util/RowDataToAvroConverters.java
+++ b/hudi-flink-datasource/hudi-flink/src/main/java/org/apache/hudi/util/RowDataToAvroConverters.java
@@ -176,7 +176,8 @@ public class RowDataToAvroConverters {
@Override
public Object convert(Schema schema, Object object) {
- return ChronoUnit.MICROS.between(Instant.EPOCH, ((TimestampData) object).toInstant());
+ Instant instant = ((TimestampData) object).toInstant();
+ return Math.addExact(Math.multiplyExact(instant.getEpochSecond(), 1000_000), instant.getNano() / 1000);
}
};
} else {
diff --git a/hudi-flink-datasource/hudi-flink/src/test/java/org/apache/hudi/table/ITTestHoodieDataSource.java b/hudi-flink-datasource/hudi-flink/src/test/java/org/apache/hudi/table/ITTestHoodieDataSource.java
index 73184880096..2c4b010cdc2 100644
--- a/hudi-flink-datasource/hudi-flink/src/test/java/org/apache/hudi/table/ITTestHoodieDataSource.java
+++ b/hudi-flink-datasource/hudi-flink/src/test/java/org/apache/hudi/table/ITTestHoodieDataSource.java
@@ -709,14 +709,16 @@ public class ITTestHoodieDataSource {
+ "(1,'Danny',TIMESTAMP '2021-12-01 01:02:01.100001'),\n"
+ "(2,'Stephen',TIMESTAMP '2021-12-02 03:04:02.200002'),\n"
+ "(3,'Julian',TIMESTAMP '2021-12-03 13:14:03.300003'),\n"
- + "(4,'Fabian',TIMESTAMP '2021-12-04 15:16:04.400004')";
+ + "(4,'Fabian',TIMESTAMP '2021-12-04 15:16:04.400004'),\n"
+ + "(5,'Tom',TIMESTAMP '2721-12-04 15:16:04.500005')";
execInsertSql(streamTableEnv, insertInto);
final String expected = "["
+ "+I[1, Danny, 2021-12-01T01:02:01.100001], "
+ "+I[2, Stephen, 2021-12-02T03:04:02.200002], "
+ "+I[3, Julian, 2021-12-03T13:14:03.300003], "
- + "+I[4, Fabian, 2021-12-04T15:16:04.400004]]";
+ + "+I[4, Fabian, 2021-12-04T15:16:04.400004], "
+ + "+I[5, Tom, 2721-12-04T15:16:04.500005]]";
List<Row> result = execSelectSql(streamTableEnv, "select * from t1", execMode);
assertRowsEquals(result, expected);