Loading RELEASE-NOTES.md +2 −1 Original line number Diff line number Diff line Loading @@ -8,6 +8,7 @@ 1. [ISSUE #520](https://github.com/shardingjdbc/sharding-jdbc/issues/520) 引入分表后,唯一键冲突时异常类型不再是DuplicateKeyException 1. [ISSUE #521](https://github.com/shardingjdbc/sharding-jdbc/issues/521) YAML文件中ShardingProperties设置无效 1. [ISSUE #522](https://github.com/shardingjdbc/sharding-jdbc/issues/522) 读写分离Slave库不需要执行DDL语句 1. [ISSUE #529](https://github.com/shardingjdbc/sharding-jdbc/issues/529) 表名大写无法查询 ## 2.0.1 Loading sharding-jdbc-core/src/main/java/io/shardingjdbc/core/parsing/parser/context/table/Tables.java +4 −4 Original line number Diff line number Diff line Loading @@ -23,8 +23,8 @@ import lombok.ToString; import java.util.ArrayList; import java.util.Collection; import java.util.HashSet; import java.util.List; import java.util.TreeSet; /** * Tables collection. Loading Loading @@ -79,7 +79,7 @@ public final class Tables { * @return 表名称集合 */ public Collection<String> getTableNames() { Collection<String> result = new TreeSet<>(String.CASE_INSENSITIVE_ORDER); Collection<String> result = new HashSet<>(tables.size(), 1); for (Table each : tables) { result.add(each.getName()); } Loading @@ -99,7 +99,7 @@ public final class Tables { private Optional<Table> findTableFromName(final String name) { for (Table each : tables) { if (each.getName().equalsIgnoreCase(name)) { if (each.getName().equals(name)) { return Optional.of(each); } } Loading @@ -108,7 +108,7 @@ public final class Tables { private Optional<Table> findTableFromAlias(final String alias) { for (Table each : tables) { if (each.getAlias().isPresent() && each.getAlias().get().equalsIgnoreCase(alias)) { if (each.getAlias().isPresent() && each.getAlias().get().equals(alias)) { return Optional.of(each); } } Loading sharding-jdbc-core/src/main/java/io/shardingjdbc/core/parsing/parser/token/IndexToken.java +2 −2 Original line number Diff line number Diff line Loading @@ -45,7 +45,7 @@ public final class IndexToken implements SQLToken { * @return index name */ public String getIndexName() { return SQLUtil.getExactlyValue(originalLiterals).toLowerCase(); return SQLUtil.getExactlyValue(originalLiterals); } /** Loading @@ -54,6 +54,6 @@ public final class IndexToken implements SQLToken { * @return table name */ public String getTableName() { return SQLUtil.getExactlyValue(tableName).toLowerCase(); return SQLUtil.getExactlyValue(tableName); } } sharding-jdbc-core/src/main/java/io/shardingjdbc/core/parsing/parser/token/TableToken.java +1 −1 Original line number Diff line number Diff line Loading @@ -42,6 +42,6 @@ public final class TableToken implements SQLToken { * @return table name */ public String getTableName() { return SQLUtil.getExactlyValue(originalLiterals).toLowerCase(); return SQLUtil.getExactlyValue(originalLiterals); } } sharding-jdbc-core/src/main/java/io/shardingjdbc/core/rewrite/SQLRewriteEngine.java +12 −9 Original line number Diff line number Diff line Loading @@ -127,14 +127,14 @@ public final class SQLRewriteEngine { } private void appendTableToken(final SQLBuilder sqlBuilder, final TableToken tableToken, final int count, final List<SQLToken> sqlTokens) { sqlBuilder.appendTable(tableToken.getTableName()); sqlBuilder.appendTable(tableToken.getTableName().toLowerCase()); int beginPosition = tableToken.getBeginPosition() + tableToken.getOriginalLiterals().length(); appendRest(sqlBuilder, count, sqlTokens, beginPosition); } private void appendIndexToken(final SQLBuilder sqlBuilder, final IndexToken indexToken, final int count, final List<SQLToken> sqlTokens) { String indexName = indexToken.getIndexName(); String logicTableName = indexToken.getTableName(); String indexName = indexToken.getIndexName().toLowerCase(); String logicTableName = indexToken.getTableName().toLowerCase(); if (Strings.isNullOrEmpty(logicTableName)) { logicTableName = shardingRule.getLogicTableName(indexName); } Loading Loading @@ -220,9 +220,10 @@ public final class SQLRewriteEngine { } private Map<String, String> getTableTokens(final TableUnit tableUnit) { String logicTableName = tableUnit.getLogicTableName().toLowerCase(); Map<String, String> tableTokens = new HashMap<>(); tableTokens.put(tableUnit.getLogicTableName(), tableUnit.getActualTableName()); Optional<BindingTableRule> bindingTableRule = shardingRule.findBindingTableRule(tableUnit.getLogicTableName()); tableTokens.put(logicTableName, tableUnit.getActualTableName()); Optional<BindingTableRule> bindingTableRule = shardingRule.findBindingTableRule(logicTableName); if (bindingTableRule.isPresent()) { tableTokens.putAll(getBindingTableTokens(tableUnit, bindingTableRule.get())); } Loading @@ -232,8 +233,9 @@ public final class SQLRewriteEngine { private Map<String, String> getTableTokens(final CartesianTableReference cartesianTableReference) { Map<String, String> tableTokens = new HashMap<>(); for (TableUnit each : cartesianTableReference.getTableUnits()) { tableTokens.put(each.getLogicTableName(), each.getActualTableName()); Optional<BindingTableRule> bindingTableRule = shardingRule.findBindingTableRule(each.getLogicTableName()); String logicTableName = each.getLogicTableName().toLowerCase(); tableTokens.put(logicTableName, each.getActualTableName()); Optional<BindingTableRule> bindingTableRule = shardingRule.findBindingTableRule(logicTableName); if (bindingTableRule.isPresent()) { tableTokens.putAll(getBindingTableTokens(each, bindingTableRule.get())); } Loading @@ -244,8 +246,9 @@ public final class SQLRewriteEngine { private Map<String, String> getBindingTableTokens(final TableUnit tableUnit, final BindingTableRule bindingTableRule) { Map<String, String> result = new HashMap<>(); for (String eachTable : sqlStatement.getTables().getTableNames()) { if (!eachTable.equalsIgnoreCase(tableUnit.getLogicTableName()) && bindingTableRule.hasLogicTable(eachTable)) { result.put(eachTable, bindingTableRule.getBindingActualTable(tableUnit.getDataSourceName(), eachTable, tableUnit.getActualTableName())); String tableName = eachTable.toLowerCase(); if (!tableName.equals(tableUnit.getLogicTableName().toLowerCase()) && bindingTableRule.hasLogicTable(tableName)) { result.put(tableName, bindingTableRule.getBindingActualTable(tableUnit.getDataSourceName(), tableName, tableUnit.getActualTableName())); } } return result; Loading Loading
RELEASE-NOTES.md +2 −1 Original line number Diff line number Diff line Loading @@ -8,6 +8,7 @@ 1. [ISSUE #520](https://github.com/shardingjdbc/sharding-jdbc/issues/520) 引入分表后,唯一键冲突时异常类型不再是DuplicateKeyException 1. [ISSUE #521](https://github.com/shardingjdbc/sharding-jdbc/issues/521) YAML文件中ShardingProperties设置无效 1. [ISSUE #522](https://github.com/shardingjdbc/sharding-jdbc/issues/522) 读写分离Slave库不需要执行DDL语句 1. [ISSUE #529](https://github.com/shardingjdbc/sharding-jdbc/issues/529) 表名大写无法查询 ## 2.0.1 Loading
sharding-jdbc-core/src/main/java/io/shardingjdbc/core/parsing/parser/context/table/Tables.java +4 −4 Original line number Diff line number Diff line Loading @@ -23,8 +23,8 @@ import lombok.ToString; import java.util.ArrayList; import java.util.Collection; import java.util.HashSet; import java.util.List; import java.util.TreeSet; /** * Tables collection. Loading Loading @@ -79,7 +79,7 @@ public final class Tables { * @return 表名称集合 */ public Collection<String> getTableNames() { Collection<String> result = new TreeSet<>(String.CASE_INSENSITIVE_ORDER); Collection<String> result = new HashSet<>(tables.size(), 1); for (Table each : tables) { result.add(each.getName()); } Loading @@ -99,7 +99,7 @@ public final class Tables { private Optional<Table> findTableFromName(final String name) { for (Table each : tables) { if (each.getName().equalsIgnoreCase(name)) { if (each.getName().equals(name)) { return Optional.of(each); } } Loading @@ -108,7 +108,7 @@ public final class Tables { private Optional<Table> findTableFromAlias(final String alias) { for (Table each : tables) { if (each.getAlias().isPresent() && each.getAlias().get().equalsIgnoreCase(alias)) { if (each.getAlias().isPresent() && each.getAlias().get().equals(alias)) { return Optional.of(each); } } Loading
sharding-jdbc-core/src/main/java/io/shardingjdbc/core/parsing/parser/token/IndexToken.java +2 −2 Original line number Diff line number Diff line Loading @@ -45,7 +45,7 @@ public final class IndexToken implements SQLToken { * @return index name */ public String getIndexName() { return SQLUtil.getExactlyValue(originalLiterals).toLowerCase(); return SQLUtil.getExactlyValue(originalLiterals); } /** Loading @@ -54,6 +54,6 @@ public final class IndexToken implements SQLToken { * @return table name */ public String getTableName() { return SQLUtil.getExactlyValue(tableName).toLowerCase(); return SQLUtil.getExactlyValue(tableName); } }
sharding-jdbc-core/src/main/java/io/shardingjdbc/core/parsing/parser/token/TableToken.java +1 −1 Original line number Diff line number Diff line Loading @@ -42,6 +42,6 @@ public final class TableToken implements SQLToken { * @return table name */ public String getTableName() { return SQLUtil.getExactlyValue(originalLiterals).toLowerCase(); return SQLUtil.getExactlyValue(originalLiterals); } }
sharding-jdbc-core/src/main/java/io/shardingjdbc/core/rewrite/SQLRewriteEngine.java +12 −9 Original line number Diff line number Diff line Loading @@ -127,14 +127,14 @@ public final class SQLRewriteEngine { } private void appendTableToken(final SQLBuilder sqlBuilder, final TableToken tableToken, final int count, final List<SQLToken> sqlTokens) { sqlBuilder.appendTable(tableToken.getTableName()); sqlBuilder.appendTable(tableToken.getTableName().toLowerCase()); int beginPosition = tableToken.getBeginPosition() + tableToken.getOriginalLiterals().length(); appendRest(sqlBuilder, count, sqlTokens, beginPosition); } private void appendIndexToken(final SQLBuilder sqlBuilder, final IndexToken indexToken, final int count, final List<SQLToken> sqlTokens) { String indexName = indexToken.getIndexName(); String logicTableName = indexToken.getTableName(); String indexName = indexToken.getIndexName().toLowerCase(); String logicTableName = indexToken.getTableName().toLowerCase(); if (Strings.isNullOrEmpty(logicTableName)) { logicTableName = shardingRule.getLogicTableName(indexName); } Loading Loading @@ -220,9 +220,10 @@ public final class SQLRewriteEngine { } private Map<String, String> getTableTokens(final TableUnit tableUnit) { String logicTableName = tableUnit.getLogicTableName().toLowerCase(); Map<String, String> tableTokens = new HashMap<>(); tableTokens.put(tableUnit.getLogicTableName(), tableUnit.getActualTableName()); Optional<BindingTableRule> bindingTableRule = shardingRule.findBindingTableRule(tableUnit.getLogicTableName()); tableTokens.put(logicTableName, tableUnit.getActualTableName()); Optional<BindingTableRule> bindingTableRule = shardingRule.findBindingTableRule(logicTableName); if (bindingTableRule.isPresent()) { tableTokens.putAll(getBindingTableTokens(tableUnit, bindingTableRule.get())); } Loading @@ -232,8 +233,9 @@ public final class SQLRewriteEngine { private Map<String, String> getTableTokens(final CartesianTableReference cartesianTableReference) { Map<String, String> tableTokens = new HashMap<>(); for (TableUnit each : cartesianTableReference.getTableUnits()) { tableTokens.put(each.getLogicTableName(), each.getActualTableName()); Optional<BindingTableRule> bindingTableRule = shardingRule.findBindingTableRule(each.getLogicTableName()); String logicTableName = each.getLogicTableName().toLowerCase(); tableTokens.put(logicTableName, each.getActualTableName()); Optional<BindingTableRule> bindingTableRule = shardingRule.findBindingTableRule(logicTableName); if (bindingTableRule.isPresent()) { tableTokens.putAll(getBindingTableTokens(each, bindingTableRule.get())); } Loading @@ -244,8 +246,9 @@ public final class SQLRewriteEngine { private Map<String, String> getBindingTableTokens(final TableUnit tableUnit, final BindingTableRule bindingTableRule) { Map<String, String> result = new HashMap<>(); for (String eachTable : sqlStatement.getTables().getTableNames()) { if (!eachTable.equalsIgnoreCase(tableUnit.getLogicTableName()) && bindingTableRule.hasLogicTable(eachTable)) { result.put(eachTable, bindingTableRule.getBindingActualTable(tableUnit.getDataSourceName(), eachTable, tableUnit.getActualTableName())); String tableName = eachTable.toLowerCase(); if (!tableName.equals(tableUnit.getLogicTableName().toLowerCase()) && bindingTableRule.hasLogicTable(tableName)) { result.put(tableName, bindingTableRule.getBindingActualTable(tableUnit.getDataSourceName(), tableName, tableUnit.getActualTableName())); } } return result; Loading