This is an automated email from the ASF dual-hosted git repository.
zhaojinchao pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git
The following commit(s) were added to refs/heads/master by this push:
new d1ac2de4d1d Support more e2e type in SQLValue and date format in
DateTimeFormatterFactory (#35535)
d1ac2de4d1d is described below
commit d1ac2de4d1d61d78e06ef1abd08b4361c81e6bdb
Author: Zhengqiang Duan <[email protected]>
AuthorDate: Tue May 27 16:27:29 2025 +0800
Support more e2e type in SQLValue and date format in
DateTimeFormatterFactory (#35535)
---
.../util/datetime/DateTimeFormatterFactory.java | 22 ++++++++++++++++++++++
.../test/e2e/cases/value/SQLValue.java | 13 +++++++++++++
2 files changed, 35 insertions(+)
diff --git
a/infra/util/src/main/java/org/apache/shardingsphere/infra/util/datetime/DateTimeFormatterFactory.java
b/infra/util/src/main/java/org/apache/shardingsphere/infra/util/datetime/DateTimeFormatterFactory.java
index 0b7f4c481a7..5f720a09ada 100644
---
a/infra/util/src/main/java/org/apache/shardingsphere/infra/util/datetime/DateTimeFormatterFactory.java
+++
b/infra/util/src/main/java/org/apache/shardingsphere/infra/util/datetime/DateTimeFormatterFactory.java
@@ -34,10 +34,14 @@ public final class DateTimeFormatterFactory {
private static final DateTimeFormatter TIME =
DateTimeFormatter.ofPattern("HH:mm:ss");
+ private static final DateTimeFormatter FULL_TIME =
DateTimeFormatter.ofPattern("HH:mm:ss.SSSSSS");
+
private static final DateTimeFormatter SHORT_MILLIS =
DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.S");
private static final DateTimeFormatter LONG_MILLIS =
DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS");
+ private static final DateTimeFormatter FULL_MILLIS =
DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSSSSS");
+
/**
* Get standard date time formatter.
*
@@ -56,6 +60,15 @@ public final class DateTimeFormatterFactory {
return DATE;
}
+ /**
+ * Get full time formatter.
+ *
+ * @return full time formatter
+ */
+ public static DateTimeFormatter getFullTimeFormatter() {
+ return FULL_TIME;
+ }
+
/**
* Get time formatter.
*
@@ -82,4 +95,13 @@ public final class DateTimeFormatterFactory {
public static DateTimeFormatter getLongMillisFormatter() {
return LONG_MILLIS;
}
+
+ /**
+ * Get full millis date time formatter.
+ *
+ * @return full millis date time formatter
+ */
+ public static DateTimeFormatter getFullMillisFormatter() {
+ return FULL_MILLIS;
+ }
}
diff --git
a/test/e2e/sql/src/test/java/org/apache/shardingsphere/test/e2e/cases/value/SQLValue.java
b/test/e2e/sql/src/test/java/org/apache/shardingsphere/test/e2e/cases/value/SQLValue.java
index cc249c82398..5a115419caf 100644
---
a/test/e2e/sql/src/test/java/org/apache/shardingsphere/test/e2e/cases/value/SQLValue.java
+++
b/test/e2e/sql/src/test/java/org/apache/shardingsphere/test/e2e/cases/value/SQLValue.java
@@ -94,15 +94,28 @@ public final class SQLValue {
case "boolean":
return Boolean.parseBoolean(value);
case "Date":
+ case "date":
return Date.valueOf(LocalDate.parse(value,
DateTimeFormatterFactory.getDateFormatter()));
case "datetime":
+ if (26 == value.length()) {
+ return Date.valueOf(LocalDate.parse(value,
DateTimeFormatterFactory.getFullMillisFormatter()));
+ }
if (10 == value.length()) {
return Date.valueOf(LocalDate.parse(value,
DateTimeFormatterFactory.getDateFormatter()));
}
return Date.valueOf(LocalDate.parse(value,
DateTimeFormatterFactory.getStandardFormatter()));
case "time":
+ if (value.length() > 8) {
+ return Time.valueOf(LocalTime.parse(value,
DateTimeFormatterFactory.getFullTimeFormatter()));
+ }
return Time.valueOf(LocalTime.parse(value,
DateTimeFormatterFactory.getTimeFormatter()));
case "timestamp":
+ if (26 == value.length()) {
+ return Timestamp.valueOf(LocalDateTime.parse(value,
DateTimeFormatterFactory.getFullMillisFormatter()));
+ }
+ if (19 == value.length()) {
+ return Timestamp.valueOf(LocalDateTime.parse(value,
DateTimeFormatterFactory.getStandardFormatter()));
+ }
return Timestamp.valueOf(LocalDateTime.parse(value,
DateTimeFormatterFactory.getShortMillisFormatter()));
case "blob":
case "longblob":