Loading sharding-jdbc/sharding-jdbc-core/src/main/java/io/shardingsphere/shardingjdbc/jdbc/core/ShardingContext.java +8 −3 Original line number Diff line number Diff line Loading @@ -56,9 +56,8 @@ public final class ShardingContext implements AutoCloseable { private final ShardingMetaData metaData; public ShardingContext(final DatabaseMetaData databaseMetaData, final Map<String, DataSource> dataSourceMap, final ShardingRule shardingRule, final DatabaseType databaseType, final Properties props) throws SQLException { this.databaseMetaData = databaseMetaData; public ShardingContext(final Map<String, DataSource> dataSourceMap, final ShardingRule shardingRule, final DatabaseType databaseType, final Properties props) throws SQLException { this.databaseMetaData = getDatabaseMetaData(dataSourceMap); this.shardingRule = shardingRule; this.databaseType = databaseType; shardingProperties = new ShardingProperties(null == props ? new Properties() : props); Loading @@ -69,6 +68,12 @@ public final class ShardingContext implements AutoCloseable { shardingProperties.<Boolean>getValue(ShardingPropertiesConstant.CHECK_TABLE_METADATA_ENABLED)); } private DatabaseMetaData getDatabaseMetaData(final Map<String, DataSource> dataSourceMap) throws SQLException { try (Connection connection = dataSourceMap.values().iterator().next().getConnection()) { return connection.getMetaData(); } } private Map<String, String> getDataSourceURLs(final Map<String, DataSource> dataSourceMap) throws SQLException { Map<String, String> result = new LinkedHashMap<>(dataSourceMap.size(), 1); for (Entry<String, DataSource> entry : dataSourceMap.entrySet()) { Loading sharding-jdbc/sharding-jdbc-core/src/main/java/io/shardingsphere/shardingjdbc/jdbc/core/connection/MasterSlaveConnection.java +2 −2 Original line number Diff line number Diff line Loading @@ -55,8 +55,8 @@ public final class MasterSlaveConnection extends AbstractConnectionAdapter { } @Override public DatabaseMetaData getMetaData() throws SQLException { return getConnection(masterSlaveDataSource.getMasterSlaveRule().getMasterDataSourceName()).getMetaData(); public DatabaseMetaData getMetaData() { return masterSlaveDataSource.getDatabaseMetaData(); } @Override Loading sharding-jdbc/sharding-jdbc-core/src/main/java/io/shardingsphere/shardingjdbc/jdbc/core/datasource/MasterSlaveDataSource.java +5 −5 Original line number Diff line number Diff line Loading @@ -45,35 +45,35 @@ import java.util.Properties; @Slf4j public class MasterSlaveDataSource extends AbstractDataSourceAdapter { private final MasterSlaveRule masterSlaveRule; private final DatabaseMetaData databaseMetaData; private final MasterSlaveRule masterSlaveRule; private final ShardingProperties shardingProperties; public MasterSlaveDataSource(final Map<String, DataSource> dataSourceMap, final MasterSlaveRuleConfiguration masterSlaveRuleConfig, final Map<String, Object> configMap, final Properties props) throws SQLException { super(dataSourceMap); databaseMetaData = getDatabaseMetaData(dataSourceMap); if (!configMap.isEmpty()) { ConfigMapContext.getInstance().getConfigMap().putAll(configMap); } this.masterSlaveRule = new MasterSlaveRule(masterSlaveRuleConfig); databaseMetaData = getDatabaseMetaData(dataSourceMap); shardingProperties = new ShardingProperties(null == props ? new Properties() : props); } public MasterSlaveDataSource(final Map<String, DataSource> dataSourceMap, final MasterSlaveRule masterSlaveRule, final Map<String, Object> configMap, final Properties props) throws SQLException { super(dataSourceMap); databaseMetaData = getDatabaseMetaData(dataSourceMap); if (!configMap.isEmpty()) { ConfigMapContext.getInstance().getConfigMap().putAll(configMap); } this.masterSlaveRule = masterSlaveRule; databaseMetaData = getDatabaseMetaData(dataSourceMap); shardingProperties = new ShardingProperties(null == props ? new Properties() : props); } private DatabaseMetaData getDatabaseMetaData(final Map<String, DataSource> dataSourceMap) throws SQLException { try (Connection connection = dataSourceMap.get(masterSlaveRule.getMasterDataSourceName()).getConnection()) { try (Connection connection = dataSourceMap.values().iterator().next().getConnection()) { return connection.getMetaData(); } } Loading sharding-jdbc/sharding-jdbc-core/src/main/java/io/shardingsphere/shardingjdbc/jdbc/core/datasource/ShardingDataSource.java +1 −23 Original line number Diff line number Diff line Loading @@ -19,7 +19,6 @@ package io.shardingsphere.shardingjdbc.jdbc.core.datasource; import com.google.common.base.Preconditions; import io.shardingsphere.api.ConfigMapContext; import io.shardingsphere.core.rule.MasterSlaveRule; import io.shardingsphere.core.rule.ShardingRule; import io.shardingsphere.shardingjdbc.jdbc.adapter.AbstractDataSourceAdapter; import io.shardingsphere.shardingjdbc.jdbc.core.ShardingContext; Loading @@ -29,10 +28,7 @@ import lombok.Getter; import lombok.extern.slf4j.Slf4j; import javax.sql.DataSource; import java.sql.Connection; import java.sql.DatabaseMetaData; import java.sql.SQLException; import java.util.Collection; import java.util.Map; import java.util.Properties; import java.util.concurrent.ConcurrentHashMap; Loading Loading @@ -60,8 +56,7 @@ public class ShardingDataSource extends AbstractDataSourceAdapter { if (!configMap.isEmpty()) { ConfigMapContext.getInstance().getConfigMap().putAll(configMap); } Map<String, DataSource> originalDataSourceMap = getDataSourceMap(); shardingContext = new ShardingContext(getDatabaseMetaData(originalDataSourceMap, shardingRule), originalDataSourceMap, shardingRule, getDatabaseType(), props); shardingContext = new ShardingContext(getDataSourceMap(), shardingRule, getDatabaseType(), props); } private void checkDataSourceType(final Map<String, DataSource> dataSourceMap) { Loading @@ -70,23 +65,6 @@ public class ShardingDataSource extends AbstractDataSourceAdapter { } } private DatabaseMetaData getDatabaseMetaData(final Map<String, DataSource> dataSourceMap, final ShardingRule shardingRule) throws SQLException { Collection<MasterSlaveRule> masterSlaveRules = shardingRule.getMasterSlaveRules(); if (masterSlaveRules.isEmpty()) { try (Connection connection = dataSourceMap.values().iterator().next().getConnection()) { return connection.getMetaData(); } } for (MasterSlaveRule each : masterSlaveRules) { if (getDataSourceMap().containsKey(each.getMasterDataSourceName())) { try (Connection connection = dataSourceMap.get(each.getMasterDataSourceName()).getConnection()) { return connection.getMetaData(); } } } throw new UnsupportedOperationException(); } @Override public final ShardingConnection getConnection() { return new ShardingConnection(getShardingTransactionalDataSources().getDataSourceMap(), shardingContext, TransactionTypeHolder.get()); Loading Loading
sharding-jdbc/sharding-jdbc-core/src/main/java/io/shardingsphere/shardingjdbc/jdbc/core/ShardingContext.java +8 −3 Original line number Diff line number Diff line Loading @@ -56,9 +56,8 @@ public final class ShardingContext implements AutoCloseable { private final ShardingMetaData metaData; public ShardingContext(final DatabaseMetaData databaseMetaData, final Map<String, DataSource> dataSourceMap, final ShardingRule shardingRule, final DatabaseType databaseType, final Properties props) throws SQLException { this.databaseMetaData = databaseMetaData; public ShardingContext(final Map<String, DataSource> dataSourceMap, final ShardingRule shardingRule, final DatabaseType databaseType, final Properties props) throws SQLException { this.databaseMetaData = getDatabaseMetaData(dataSourceMap); this.shardingRule = shardingRule; this.databaseType = databaseType; shardingProperties = new ShardingProperties(null == props ? new Properties() : props); Loading @@ -69,6 +68,12 @@ public final class ShardingContext implements AutoCloseable { shardingProperties.<Boolean>getValue(ShardingPropertiesConstant.CHECK_TABLE_METADATA_ENABLED)); } private DatabaseMetaData getDatabaseMetaData(final Map<String, DataSource> dataSourceMap) throws SQLException { try (Connection connection = dataSourceMap.values().iterator().next().getConnection()) { return connection.getMetaData(); } } private Map<String, String> getDataSourceURLs(final Map<String, DataSource> dataSourceMap) throws SQLException { Map<String, String> result = new LinkedHashMap<>(dataSourceMap.size(), 1); for (Entry<String, DataSource> entry : dataSourceMap.entrySet()) { Loading
sharding-jdbc/sharding-jdbc-core/src/main/java/io/shardingsphere/shardingjdbc/jdbc/core/connection/MasterSlaveConnection.java +2 −2 Original line number Diff line number Diff line Loading @@ -55,8 +55,8 @@ public final class MasterSlaveConnection extends AbstractConnectionAdapter { } @Override public DatabaseMetaData getMetaData() throws SQLException { return getConnection(masterSlaveDataSource.getMasterSlaveRule().getMasterDataSourceName()).getMetaData(); public DatabaseMetaData getMetaData() { return masterSlaveDataSource.getDatabaseMetaData(); } @Override Loading
sharding-jdbc/sharding-jdbc-core/src/main/java/io/shardingsphere/shardingjdbc/jdbc/core/datasource/MasterSlaveDataSource.java +5 −5 Original line number Diff line number Diff line Loading @@ -45,35 +45,35 @@ import java.util.Properties; @Slf4j public class MasterSlaveDataSource extends AbstractDataSourceAdapter { private final MasterSlaveRule masterSlaveRule; private final DatabaseMetaData databaseMetaData; private final MasterSlaveRule masterSlaveRule; private final ShardingProperties shardingProperties; public MasterSlaveDataSource(final Map<String, DataSource> dataSourceMap, final MasterSlaveRuleConfiguration masterSlaveRuleConfig, final Map<String, Object> configMap, final Properties props) throws SQLException { super(dataSourceMap); databaseMetaData = getDatabaseMetaData(dataSourceMap); if (!configMap.isEmpty()) { ConfigMapContext.getInstance().getConfigMap().putAll(configMap); } this.masterSlaveRule = new MasterSlaveRule(masterSlaveRuleConfig); databaseMetaData = getDatabaseMetaData(dataSourceMap); shardingProperties = new ShardingProperties(null == props ? new Properties() : props); } public MasterSlaveDataSource(final Map<String, DataSource> dataSourceMap, final MasterSlaveRule masterSlaveRule, final Map<String, Object> configMap, final Properties props) throws SQLException { super(dataSourceMap); databaseMetaData = getDatabaseMetaData(dataSourceMap); if (!configMap.isEmpty()) { ConfigMapContext.getInstance().getConfigMap().putAll(configMap); } this.masterSlaveRule = masterSlaveRule; databaseMetaData = getDatabaseMetaData(dataSourceMap); shardingProperties = new ShardingProperties(null == props ? new Properties() : props); } private DatabaseMetaData getDatabaseMetaData(final Map<String, DataSource> dataSourceMap) throws SQLException { try (Connection connection = dataSourceMap.get(masterSlaveRule.getMasterDataSourceName()).getConnection()) { try (Connection connection = dataSourceMap.values().iterator().next().getConnection()) { return connection.getMetaData(); } } Loading
sharding-jdbc/sharding-jdbc-core/src/main/java/io/shardingsphere/shardingjdbc/jdbc/core/datasource/ShardingDataSource.java +1 −23 Original line number Diff line number Diff line Loading @@ -19,7 +19,6 @@ package io.shardingsphere.shardingjdbc.jdbc.core.datasource; import com.google.common.base.Preconditions; import io.shardingsphere.api.ConfigMapContext; import io.shardingsphere.core.rule.MasterSlaveRule; import io.shardingsphere.core.rule.ShardingRule; import io.shardingsphere.shardingjdbc.jdbc.adapter.AbstractDataSourceAdapter; import io.shardingsphere.shardingjdbc.jdbc.core.ShardingContext; Loading @@ -29,10 +28,7 @@ import lombok.Getter; import lombok.extern.slf4j.Slf4j; import javax.sql.DataSource; import java.sql.Connection; import java.sql.DatabaseMetaData; import java.sql.SQLException; import java.util.Collection; import java.util.Map; import java.util.Properties; import java.util.concurrent.ConcurrentHashMap; Loading Loading @@ -60,8 +56,7 @@ public class ShardingDataSource extends AbstractDataSourceAdapter { if (!configMap.isEmpty()) { ConfigMapContext.getInstance().getConfigMap().putAll(configMap); } Map<String, DataSource> originalDataSourceMap = getDataSourceMap(); shardingContext = new ShardingContext(getDatabaseMetaData(originalDataSourceMap, shardingRule), originalDataSourceMap, shardingRule, getDatabaseType(), props); shardingContext = new ShardingContext(getDataSourceMap(), shardingRule, getDatabaseType(), props); } private void checkDataSourceType(final Map<String, DataSource> dataSourceMap) { Loading @@ -70,23 +65,6 @@ public class ShardingDataSource extends AbstractDataSourceAdapter { } } private DatabaseMetaData getDatabaseMetaData(final Map<String, DataSource> dataSourceMap, final ShardingRule shardingRule) throws SQLException { Collection<MasterSlaveRule> masterSlaveRules = shardingRule.getMasterSlaveRules(); if (masterSlaveRules.isEmpty()) { try (Connection connection = dataSourceMap.values().iterator().next().getConnection()) { return connection.getMetaData(); } } for (MasterSlaveRule each : masterSlaveRules) { if (getDataSourceMap().containsKey(each.getMasterDataSourceName())) { try (Connection connection = dataSourceMap.get(each.getMasterDataSourceName()).getConnection()) { return connection.getMetaData(); } } } throw new UnsupportedOperationException(); } @Override public final ShardingConnection getConnection() { return new ShardingConnection(getShardingTransactionalDataSources().getDataSourceMap(), shardingContext, TransactionTypeHolder.get()); Loading