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 f2d6cc22f38 Simplify the logic processing of IntervalShardingAlgorithm 
and update corresponding documents (#17963)
f2d6cc22f38 is described below

commit f2d6cc22f386f7245598d1041fbf2a7711274701
Author: Ling Hengqian <[email protected]>
AuthorDate: Thu May 26 15:13:37 2022 +0800

    Simplify the logic processing of IntervalShardingAlgorithm and update 
corresponding documents (#17963)
    
    * Remove JapaneseDate related context in IntervalShardingAlgorithm due to 
JDK limitations.
    
    * - Use LocalDateTime#from instead of LocalDateTime#of in 
IntervalShardingAlgorithm.
    - Updated documentation for Interval Sharding Algorithm.
    
    * Fix Checkstyle.
    
    * Fix merge error.
---
 .../shardingsphere-jdbc/builtin-algorithm/sharding.cn.md | 16 ++++++++--------
 .../shardingsphere-jdbc/builtin-algorithm/sharding.en.md | 16 ++++++++--------
 .../sharding/datetime/IntervalShardingAlgorithm.java     |  8 ++++----
 3 files changed, 20 insertions(+), 20 deletions(-)

diff --git 
a/docs/document/content/user-manual/shardingsphere-jdbc/builtin-algorithm/sharding.cn.md
 
b/docs/document/content/user-manual/shardingsphere-jdbc/builtin-algorithm/sharding.cn.md
index 5372104261b..afd102d9e06 100644
--- 
a/docs/document/content/user-manual/shardingsphere-jdbc/builtin-algorithm/sharding.cn.md
+++ 
b/docs/document/content/user-manual/shardingsphere-jdbc/builtin-algorithm/sharding.cn.md
@@ -84,14 +84,14 @@ Apache ShardingSphere 内置的标准分片算法实现类包括:
 
 可配置属性:
 
-| *属性名称*                    | *数据类型* | *说明*                                    
                                                                        | *默认值* 
|
-| ---------------------------- | -------- | 
----------------------------------------------------------------------------------------------------------------
 | ------- |
-| datetime-pattern             | String   | 分片键的时间戳格式,必须遵循 Java 
DateTimeFormatter 的格式。例如:yyyy-MM-dd HH:mm:ss                                    
|         |
-| datetime-lower               | String   | 时间分片下界值,格式与 `datetime-pattern` 
定义的时间戳格式一致                                                           |         |
-| datetime-upper (?)           | String   | 时间分片上界值,格式与 `datetime-pattern` 
定义的时间戳格式一致                                                           | 当前时间 |
-| sharding-suffix-pattern      | String   | 分片数据源或真实表的后缀格式,必须遵循 Java 
DateTimeFormatter 的格式,必须和 `datetime-interval-unit` 保持一致。例如:yyyyMM |         |
-| datetime-interval-amount (?) | int      | 分片键时间间隔,超过该时间间隔将进入下一分片             
                                                                | 1       |
-| datetime-interval-unit (?)   | String   | 分片键时间间隔单位,必须遵循 Java ChronoUnit 
的枚举值。例如:MONTHS                                                      | DAYS    |
+| *属性名称*                    | *数据类型* | *说明*                                    
                                                                                
                                         | *默认值* |
+| ---------------------------- | -------- | 
------------------------------------------------------------------------------------------------------------------------------------------------------------------|
 ------- |
+| datetime-pattern             | String   | 分片键的时间戳格式,必须遵循 Java 
DateTimeFormatter 的格式。例如:yyyy-MM-dd HH:mm:ss,yyyy-MM-dd 或 HH:mm:ss 等。但不支持与 
`java.time.chrono.JapaneseDate` 相关的 Gy-MM 等   |         |
+| datetime-lower               | String   | 时间分片下界值,格式与 `datetime-pattern` 
定义的时间戳格式一致                                                                      
                                      |         |
+| datetime-upper (?)           | String   | 时间分片上界值,格式与 `datetime-pattern` 
定义的时间戳格式一致                                                                      
                                      | 当前时间 |
+| sharding-suffix-pattern      | String   | 分片数据源或真实表的后缀格式,必须遵循 Java 
DateTimeFormatter 的格式,必须和 `datetime-interval-unit` 保持一致。例如:yyyyMM               
                                    |         |
+| datetime-interval-amount (?) | int      | 分片键时间间隔,超过该时间间隔将进入下一分片             
                                                                                
                                 | 1       |
+| datetime-interval-unit (?)   | String   | 分片键时间间隔单位,必须遵循 Java ChronoUnit 
的枚举值。例如:MONTHS                                                                  
                                     | DAYS    |
 
 ## 复合分片算法
 
diff --git 
a/docs/document/content/user-manual/shardingsphere-jdbc/builtin-algorithm/sharding.en.md
 
b/docs/document/content/user-manual/shardingsphere-jdbc/builtin-algorithm/sharding.en.md
index c0c77a37c14..b850e1010cf 100644
--- 
a/docs/document/content/user-manual/shardingsphere-jdbc/builtin-algorithm/sharding.en.md
+++ 
b/docs/document/content/user-manual/shardingsphere-jdbc/builtin-algorithm/sharding.en.md
@@ -85,14 +85,14 @@ Type: INTERVAL
 
 Attributes:
 
-| *Name*                       | *DataType* | *Description*                    
                                                                                
                                                         | *Default Value* |
-| ---------------------------- | ---------- | 
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 | --------------- |
-| datetime-pattern             | String     | Timestamp pattern of sharding 
value, must can be transformed to Java LocalDateTime. For example: yyyy-MM-dd 
HH:mm:ss                                                      | -               
|
-| datetime-lower               | String     | Datetime sharding lower 
boundary, pattern is defined `datetime-pattern`                                 
                                                                  | -           
    |
-| datetime-upper (?)           | String     | Datetime sharding upper 
boundary, pattern is defined `datetime-pattern`                                 
                                                                  | Now         
    |
-| sharding-suffix-pattern      | String     | Suffix pattern of sharding data 
sources or tables, must can be transformed to Java LocalDateTime, must be 
consistent with `datetime-interval-unit`. For example: yyyyMM   | -             
  |
-| datetime-interval-amount (?) | int        | Interval of sharding value       
                                                                                
                                                         | 1               |
-| datetime-interval-unit (?)   | String     | Unit of sharding value interval, 
must can be transformed to Java ChronoUnit's Enum value. For example: MONTHS    
                                                         | DAYS            |
+| *Name*                       | *DataType* | *Description*                    
                                                                                
                                                                                
                               | *Default Value* |
+| ---------------------------- | ---------- | 
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
 --------------- |
+| datetime-pattern             | String     | Timestamp pattern of sharding 
value, must can be transformed to Java LocalDateTime. For example: yyyy-MM-dd 
HH:mm:ss, yyyy-MM-dd or HH:mm:ss etc. But Gy-MM etc. related to 
`java.time.chrono.JapaneseDate` are not supported   | -               |
+| datetime-lower               | String     | Datetime sharding lower 
boundary, pattern is defined `datetime-pattern`                                 
                                                                                
                                        | -               |
+| datetime-upper (?)           | String     | Datetime sharding upper 
boundary, pattern is defined `datetime-pattern`                                 
                                                                                
                                        | Now             |
+| sharding-suffix-pattern      | String     | Suffix pattern of sharding data 
sources or tables, must can be transformed to Java LocalDateTime, must be 
consistent with `datetime-interval-unit`. For example: yyyyMM                   
                                      | -               |
+| datetime-interval-amount (?) | int        | Interval of sharding value       
                                                                                
                                                                                
                               | 1               |
+| datetime-interval-unit (?)   | String     | Unit of sharding value interval, 
must can be transformed to Java ChronoUnit's Enum value. For example: MONTHS    
                                                                                
                               | DAYS            |
 
 ## Complex Sharding Algorithm
 
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 d6ca8dd31ff..167b23ec20c 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
@@ -171,9 +171,9 @@ public final class IntervalShardingAlgorithm implements 
StandardShardingAlgorith
             }
             return result;
         }
-        LocalDateTime calculateTimeAsView = 
LocalDateTime.of(calculateTime.query(TemporalQueries.localDate()), 
calculateTime.query(TemporalQueries.localTime()));
-        LocalDateTime dateTimeUpperAsLocalDateTime = 
LocalDateTime.of(dateTimeUpperAsLocalDate, dateTimeUpperAsLocalTime);
-        LocalDateTime dateTimeLowerAsLocalDateTime = 
LocalDateTime.of(dateTimeLowerAsLocalDate, dateTimeLowerAsLocalTime);
+        LocalDateTime calculateTimeAsView = LocalDateTime.from(calculateTime);
+        LocalDateTime dateTimeUpperAsLocalDateTime = 
LocalDateTime.from(dateTimeUpper);
+        LocalDateTime dateTimeLowerAsLocalDateTime = 
LocalDateTime.from(dateTimeLower);
         while (!calculateTimeAsView.isAfter(dateTimeUpperAsLocalDateTime)) {
             if (hasIntersection(Range.closedOpen(calculateTimeAsView, 
calculateTimeAsView.plus(stepAmount, stepUnit)), range, 
dateTimeLowerAsLocalDateTime, dateTimeUpperAsLocalDateTime)) {
                 result.addAll(getMatchedTables(calculateTimeAsView, 
availableTargetNames));
@@ -249,7 +249,7 @@ public final class IntervalShardingAlgorithm implements 
StandardShardingAlgorith
             tableSuffix = viewAsLocalTime.format(tableSuffixPattern);
             return availableTargetNames.parallelStream().filter(each -> 
each.endsWith(tableSuffix)).collect(Collectors.toSet());
         }
-        tableSuffix = LocalDateTime.of(viewAsLocalDate, 
viewAsLocalTime).format(tableSuffixPattern);
+        tableSuffix = LocalDateTime.from(dateTime).format(tableSuffixPattern);
         return availableTargetNames.parallelStream().filter(each -> 
each.endsWith(tableSuffix)).collect(Collectors.toSet());
     }
     

Reply via email to