|
@@ -113,17 +113,22 @@ public final class TimeShardingAlgorithm implements StandardShardingAlgorithm<Da
|
|
// 循环计算分表范围
|
|
// 循环计算分表范围
|
|
Set<String> resultTableNames = new LinkedHashSet<>();
|
|
Set<String> resultTableNames = new LinkedHashSet<>();
|
|
|
|
|
|
- //确保小于最小时间表时原始表可被查询
|
|
|
|
- String minString = Collections.min(availableTargetNames.stream().filter(a->a.contains(logicTableName+TABLE_SPLIT_SYMBOL)).collect(Collectors.toList()));
|
|
|
|
- if (minString.replace(logicTableName+TABLE_SPLIT_SYMBOL,"").compareTo(DateFormatUtils.format(min, PATTERN))<=0){
|
|
|
|
- resultTableNames.add(logicTableName);
|
|
|
|
- }
|
|
|
|
|
|
|
|
while (min < max || min == max) {
|
|
while (min < max || min == max) {
|
|
String tableName = logicTableName + TABLE_SPLIT_SYMBOL + DateFormatUtils.format(min, PATTERN);
|
|
String tableName = logicTableName + TABLE_SPLIT_SYMBOL + DateFormatUtils.format(min, PATTERN);
|
|
resultTableNames.add(tableName);
|
|
resultTableNames.add(tableName);
|
|
min += longMonth;
|
|
min += longMonth;
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ List<String> filterAvailableTargetNames = availableTargetNames.stream().filter(a -> a.contains(logicTableName + TABLE_SPLIT_SYMBOL)).collect(Collectors.toList());
|
|
|
|
+ if (filterAvailableTargetNames.size() > 0) {
|
|
|
|
+ //确保小于最小时间表时原始表可被查询
|
|
|
|
+ String minString = Collections.min(filterAvailableTargetNames);
|
|
|
|
+ if (resultTableNames.contains(minString)) {
|
|
|
|
+ resultTableNames.add(logicTableName);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
Set<String> shardingTablesAndCreate = getShardingTablesAndCreate(logicTableName, resultTableNames, availableTargetNames);
|
|
Set<String> shardingTablesAndCreate = getShardingTablesAndCreate(logicTableName, resultTableNames, availableTargetNames);
|
|
// log.info(">>>>>>>>>>>>>>>>sharding结束<<<<<<<<<<<<<<<<<<<<");
|
|
// log.info(">>>>>>>>>>>>>>>>sharding结束<<<<<<<<<<<<<<<<<<<<");
|
|
return shardingTablesAndCreate;
|
|
return shardingTablesAndCreate;
|