Skip to content

Commit 52659fb

Browse files
committed
prefer database type to connection for database type.
1 parent aa7d603 commit 52659fb

File tree

4 files changed

+15
-15
lines changed

4 files changed

+15
-15
lines changed

sharding-jdbc-core/src/main/java/io/shardingjdbc/core/jdbc/core/datasource/ShardingDataSource.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ public ShardingDataSource(final Map<String, DataSource> dataSourceMap, final Sha
6161
shardingProperties = new ShardingProperties(null == props ? new Properties() : props);
6262
int executorSize = shardingProperties.getValue(ShardingPropertiesConstant.EXECUTOR_SIZE);
6363
executorEngine = new ExecutorEngine(executorSize);
64-
ShardingMetaData shardingMetaData = new JDBCShardingMetaData(dataSourceMap);
64+
ShardingMetaData shardingMetaData = new JDBCShardingMetaData(dataSourceMap, getDatabaseType());
6565
shardingMetaData.init(shardingRule);
6666
boolean showSQL = shardingProperties.getValue(ShardingPropertiesConstant.SQL_SHOW);
6767
shardingContext = new ShardingContext(dataSourceMap, shardingRule, getDatabaseType(), executorEngine, shardingMetaData, showSQL);
@@ -85,7 +85,7 @@ public void renew(final Map<String, DataSource> newDataSourceMap, final Sharding
8585
originalExecutorEngine.close();
8686
}
8787
boolean newShowSQL = newShardingProperties.getValue(ShardingPropertiesConstant.SQL_SHOW);
88-
ShardingMetaData shardingMetaData = new JDBCShardingMetaData(newDataSourceMap);
88+
ShardingMetaData shardingMetaData = new JDBCShardingMetaData(newDataSourceMap, getDatabaseType());
8989
shardingMetaData.init(newShardingRule);
9090
shardingProperties = newShardingProperties;
9191
shardingContext = new ShardingContext(newDataSourceMap, newShardingRule, getDatabaseType(), executorEngine, shardingMetaData, newShowSQL);

sharding-jdbc-core/src/main/java/io/shardingjdbc/core/jdbc/metadata/JDBCShardingMetaData.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717

1818
package io.shardingjdbc.core.jdbc.metadata;
1919

20+
import io.shardingjdbc.core.constant.DatabaseType;
2021
import io.shardingjdbc.core.metadata.ColumnMetaData;
2122
import io.shardingjdbc.core.metadata.ShardingMetaData;
2223
import io.shardingjdbc.core.rule.DataNode;
@@ -38,9 +39,11 @@ public final class JDBCShardingMetaData extends ShardingMetaData {
3839

3940
private final Map<String, DataSource> dataSourceMap;
4041

42+
private final DatabaseType databaseType;
43+
4144
@Override
4245
protected Collection<ColumnMetaData> getColumnMetaDataList(final DataNode dataNode) throws SQLException {
43-
return ShardingMetaDataHandlerFactory.newInstance(dataSourceMap.get(dataNode.getDataSourceName()), dataNode.getTableName()).getColumnMetaDataList();
46+
return ShardingMetaDataHandlerFactory.newInstance(dataSourceMap.get(dataNode.getDataSourceName()), dataNode.getTableName(), databaseType).getColumnMetaDataList();
4447
}
4548
}
4649

sharding-jdbc-core/src/main/java/io/shardingjdbc/core/jdbc/metadata/ShardingMetaDataHandlerFactory.java

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@
2424
import lombok.AccessLevel;
2525
import lombok.NoArgsConstructor;
2626
import javax.sql.DataSource;
27-
import java.sql.Connection;
2827
import java.sql.SQLException;
2928

3029
/**
@@ -40,18 +39,16 @@ public final class ShardingMetaDataHandlerFactory {
4039
*
4140
* @param dataSource data source.
4241
* @param actualTableName actual table name.
42+
* @param databaseType database type.
4343
* @return abstract table metadata handler.
4444
* @throws SQLException SQL exception.
4545
*/
46-
public static ShardingMetaDataHandler newInstance(final DataSource dataSource, final String actualTableName) throws SQLException {
47-
try (Connection conn = dataSource.getConnection()) {
48-
DatabaseType databaseType = DatabaseType.valueFrom(conn.getMetaData().getDatabaseProductName());
49-
switch (databaseType) {
50-
case MySQL:
51-
return new MySQLShardingMetaDataHandler(dataSource, actualTableName);
52-
default:
53-
return new DefaultShardingMetaDataHandler(dataSource, actualTableName);
54-
}
46+
public static ShardingMetaDataHandler newInstance(final DataSource dataSource, final String actualTableName, final DatabaseType databaseType) throws SQLException {
47+
switch (databaseType) {
48+
case MySQL:
49+
return new MySQLShardingMetaDataHandler(dataSource, actualTableName);
50+
default:
51+
return new DefaultShardingMetaDataHandler(dataSource, actualTableName);
5552
}
5653
}
5754
}

sharding-jdbc-core/src/test/java/io/shardingjdbc/core/jdbc/core/connection/ShardingConnectionTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,14 +63,14 @@ public static void init() throws SQLException {
6363
}
6464

6565
@Before
66-
public void setUp() {
66+
public void setUp() throws SQLException {
6767
ShardingRuleConfiguration shardingRuleConfig = new ShardingRuleConfiguration();
6868
TableRuleConfiguration tableRuleConfig = new TableRuleConfiguration();
6969
tableRuleConfig.setLogicTable("test");
7070
shardingRuleConfig.getTableRuleConfigs().add(tableRuleConfig);
7171
Map<String, DataSource> dataSourceMap = new HashMap<>(1, 1);
7272
dataSourceMap.put(DS_NAME, masterSlaveDataSource);
73-
ShardingMetaData shardingMetaData = new JDBCShardingMetaData(dataSourceMap);
73+
ShardingMetaData shardingMetaData = new JDBCShardingMetaData(dataSourceMap, null);
7474
ShardingContext shardingContext = new ShardingContext(dataSourceMap, new ShardingRule(shardingRuleConfig, dataSourceMap.keySet()), null, null, shardingMetaData, false);
7575
connection = new ShardingConnection(shardingContext);
7676
}

0 commit comments

Comments
 (0)