You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by zh...@apache.org on 2022/05/26 03:08:59 UTC
[shardingsphere] branch master updated: Remove JapaneseDate related context in IntervalShardingAlgorithm (#17953)
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 <li...@outlook.com>
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) {