This is an automated email from the ASF dual-hosted git repository.
zhangliang 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 28345eb8748 Remove JapaneseDate related context in
IntervalShardingAlgorithm (#17953)
28345eb8748 is described below
commit 28345eb8748f70d5458f9805dbdca09f59b1d385
Author: Ling Hengqian <[email protected]>
AuthorDate: Thu May 26 11:08:52 2022 +0800
Remove JapaneseDate related context in IntervalShardingAlgorithm (#17953)
* Remove JapaneseDate related context in IntervalShardingAlgorithm due to
JDK limitations.
* Use upper-level abstractions to cover edge cases.
---
.../datetime/IntervalShardingAlgorithm.java | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/algorithm/sharding/datetime/IntervalShardingAlgorithm.java
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/algorithm/sharding/datetime/IntervalShardingAlgorithm.java
index af9a905fb28..9735ba28385 100644
---
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/algorithm/sharding/datetime/IntervalShardingAlgorithm.java
+++
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/algorithm/sharding/datetime/IntervalShardingAlgorithm.java
@@ -33,8 +33,9 @@ import java.time.LocalTime;
import java.time.OffsetDateTime;
import java.time.OffsetTime;
import java.time.ZoneId;
-import java.time.ZonedDateTime;
-import java.time.chrono.JapaneseDate;
+import java.time.chrono.ChronoLocalDate;
+import java.time.chrono.ChronoLocalDateTime;
+import java.time.chrono.ChronoZonedDateTime;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeParseException;
import java.time.temporal.ChronoUnit;
@@ -146,10 +147,8 @@ public final class IntervalShardingAlgorithm implements
StandardShardingAlgorith
TemporalAccessor calculateTime = dateTimeLower;
LocalDate queryToLocalDate =
calculateTime.query(TemporalQueries.localDate());
LocalTime queryToLocalTime =
calculateTime.query(TemporalQueries.localTime());
- LocalDate dateTimeLowerAsLocalDate =
dateTimeLower.query(TemporalQueries.localDate());
- LocalTime dateTimeLowerAsLocalTime =
dateTimeLower.query(TemporalQueries.localTime());
LocalDate dateTimeUpperAsLocalDate =
dateTimeUpper.query(TemporalQueries.localDate());
- LocalTime dateTimeUpperAsLocalTime =
dateTimeUpper.query(TemporalQueries.localTime());
+ LocalDate dateTimeLowerAsLocalDate =
dateTimeLower.query(TemporalQueries.localDate());
if (null == queryToLocalTime) {
LocalDate calculateTimeAsView =
calculateTime.query(TemporalQueries.localDate());
while (!calculateTimeAsView.isAfter(dateTimeUpperAsLocalDate)) {
@@ -160,6 +159,8 @@ public final class IntervalShardingAlgorithm implements
StandardShardingAlgorith
}
return result;
}
+ LocalTime dateTimeUpperAsLocalTime =
dateTimeUpper.query(TemporalQueries.localTime());
+ LocalTime dateTimeLowerAsLocalTime =
dateTimeLower.query(TemporalQueries.localTime());
if (null == queryToLocalDate) {
LocalTime calculateTimeAsView =
calculateTime.query(TemporalQueries.localTime());
while (!calculateTimeAsView.isAfter(dateTimeUpperAsLocalTime)) {
@@ -171,8 +172,8 @@ public final class IntervalShardingAlgorithm implements
StandardShardingAlgorith
return result;
}
LocalDateTime calculateTimeAsView =
LocalDateTime.of(calculateTime.query(TemporalQueries.localDate()),
calculateTime.query(TemporalQueries.localTime()));
- LocalDateTime dateTimeLowerAsLocalDateTime =
LocalDateTime.of(dateTimeLowerAsLocalDate, dateTimeLowerAsLocalTime);
LocalDateTime dateTimeUpperAsLocalDateTime =
LocalDateTime.of(dateTimeUpperAsLocalDate, dateTimeUpperAsLocalTime);
+ LocalDateTime dateTimeLowerAsLocalDateTime =
LocalDateTime.of(dateTimeLowerAsLocalDate, dateTimeLowerAsLocalTime);
while (!calculateTimeAsView.isAfter(dateTimeUpperAsLocalDateTime)) {
if (hasIntersection(Range.closedOpen(calculateTimeAsView,
calculateTimeAsView.plus(stepAmount, stepUnit)), range,
dateTimeLowerAsLocalDateTime, dateTimeUpperAsLocalDateTime)) {
result.addAll(getMatchedTables(calculateTimeAsView,
availableTargetNames));
@@ -220,11 +221,11 @@ public final class IntervalShardingAlgorithm implements
StandardShardingAlgorith
private LocalTime parseLocalTime(final Comparable<?> endpoint) {
return LocalTime.parse(getDateTimeText(endpoint).substring(0,
dateTimePatternLength), dateTimeFormatter);
}
-
+
private String getDateTimeText(final Comparable<?> endpoint) {
- if (endpoint instanceof LocalDateTime || endpoint instanceof
ZonedDateTime
- || endpoint instanceof OffsetDateTime || endpoint instanceof
LocalTime
- || endpoint instanceof OffsetTime || endpoint instanceof
JapaneseDate) {
+ if (endpoint instanceof ChronoLocalDateTime || endpoint instanceof
ChronoZonedDateTime
+ || endpoint instanceof OffsetDateTime || endpoint instanceof
ChronoLocalDate
+ || endpoint instanceof LocalTime || endpoint instanceof
OffsetTime) {
return dateTimeFormatter.format((TemporalAccessor) endpoint);
}
if (endpoint instanceof Instant) {