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 2021/03/12 07:31:00 UTC
[shardingsphere] branch master updated: Fix error if existedTables
is empty (#9641)
This is an automated email from the ASF dual-hosted git repository.
zhangyonglun 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 98cf008 Fix error if existedTables is empty (#9641)
98cf008 is described below
commit 98cf008463eae59bef58cecead0fee7be7252464
Author: Liang Zhang <te...@163.com>
AuthorDate: Fri Mar 12 15:30:34 2021 +0800
Fix error if existedTables is empty (#9641)
---
.../builder/loader/dialect/MySQLTableMetaDataLoader.java | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/schema/builder/loader/dialect/MySQLTableMetaDataLoader.java b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/schema/builder/loader/dialect/MySQLTableMetaDataLoader.java
index fad620a..0c6694d 100644
--- a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/schema/builder/loader/dialect/MySQLTableMetaDataLoader.java
+++ b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/schema/builder/loader/dialect/MySQLTableMetaDataLoader.java
@@ -37,8 +37,9 @@ import java.util.stream.Collectors;
*/
public final class MySQLTableMetaDataLoader implements DialectTableMetaDataLoader {
- private static final String TABLE_META_DATA_SQL
- = "SELECT TABLE_NAME, COLUMN_NAME, DATA_TYPE, COLUMN_KEY, EXTRA, COLLATION_NAME FROM information_schema.columns WHERE TABLE_SCHEMA=? AND TABLE_NAME NOT IN (%s)";
+ private static final String BASIC_TABLE_META_DATA_SQL = "SELECT TABLE_NAME, COLUMN_NAME, DATA_TYPE, COLUMN_KEY, EXTRA, COLLATION_NAME FROM information_schema.columns WHERE TABLE_SCHEMA=?";
+
+ private static final String TABLE_META_DATA_SQL_WITH_EXISTED_TABLES = BASIC_TABLE_META_DATA_SQL + " AND TABLE_NAME NOT IN (%s)";
@Override
public Map<String, TableMetaData> load(final DataSource dataSource, final Collection<String> existedTables) throws SQLException {
@@ -49,11 +50,9 @@ public final class MySQLTableMetaDataLoader implements DialectTableMetaDataLoade
}
private void loadColumnMetaData(final DataSource dataSource, final Collection<String> existedTables, final Map<String, TableMetaData> tableMetaDataMap) throws SQLException {
- String sql = String.format(TABLE_META_DATA_SQL, existedTables.stream().map(each -> String.format("'%s'", each)).collect(Collectors.joining(",")));
try (
Connection connection = dataSource.getConnection();
- PreparedStatement preparedStatement = connection.prepareStatement(sql)
- ) {
+ PreparedStatement preparedStatement = connection.prepareStatement(getTableMetaDataSQL(existedTables))) {
Map<String, Integer> dataTypes = DataTypeLoader.load(connection.getMetaData());
preparedStatement.setString(1, connection.getCatalog());
try (ResultSet resultSet = preparedStatement.executeQuery()) {
@@ -78,6 +77,11 @@ public final class MySQLTableMetaDataLoader implements DialectTableMetaDataLoade
return new ColumnMetaData(columnName, dataTypeMap.get(dataType), primaryKey, generated, caseSensitive);
}
+ private String getTableMetaDataSQL(final Collection<String> existedTables) {
+ return existedTables.isEmpty() ? BASIC_TABLE_META_DATA_SQL
+ : String.format(TABLE_META_DATA_SQL_WITH_EXISTED_TABLES, existedTables.stream().map(each -> String.format("'%s'", each)).collect(Collectors.joining(",")));
+ }
+
@Override
public String getDatabaseType() {
return "MySQL";