Loading sharding-core/src/main/java/io/shardingsphere/core/constant/properties/ShardingPropertiesConstant.java +3 −1 Original line number Diff line number Diff line Loading @@ -103,7 +103,9 @@ public enum ShardingPropertiesConstant { PROXY_BACKEND_MAX_CONNECTIONS("proxy.backend.max.connections", String.valueOf(8), int.class), PROXY_BACKEND_CONNECTION_TIMEOUT_SECONDS("proxy.backend.connection.timeout.seconds", String.valueOf(60), int.class); PROXY_BACKEND_CONNECTION_TIMEOUT_SECONDS("proxy.backend.connection.timeout.seconds", String.valueOf(60), int.class), CHECK_TABLE_METADATA_ENABLED("check.table.metadata.enabled", String.valueOf(Boolean.TRUE), boolean.class); private final String key; Loading sharding-core/src/main/java/io/shardingsphere/core/metadata/ShardingMetaData.java +3 −3 Original line number Diff line number Diff line Loading @@ -40,9 +40,9 @@ public final class ShardingMetaData { private final ShardingTableMetaData table; public ShardingMetaData(final Map<String, String> dataSourceURLs, final ShardingRule shardingRule, final DatabaseType databaseType, final ShardingExecuteEngine executeEngine, final TableMetaDataConnectionManager connectionManager, final int maxConnectionsSizePerQuery) { public ShardingMetaData(final Map<String, String> dataSourceURLs, final ShardingRule shardingRule, final DatabaseType databaseType, final ShardingExecuteEngine executeEngine, final TableMetaDataConnectionManager connectionManager, final int maxConnectionsSizePerQuery, final boolean isCheckingMetaData) { dataSource = new ShardingDataSourceMetaData(dataSourceURLs, shardingRule, databaseType); table = new ShardingTableMetaData(new TableMetaDataInitializer(dataSource, executeEngine, connectionManager, maxConnectionsSizePerQuery).load(shardingRule)); table = new ShardingTableMetaData(new TableMetaDataInitializer(dataSource, executeEngine, connectionManager, maxConnectionsSizePerQuery, isCheckingMetaData).load(shardingRule)); } } sharding-core/src/main/java/io/shardingsphere/core/metadata/table/executor/TableMetaDataInitializer.java +3 −3 Original line number Diff line number Diff line Loading @@ -47,11 +47,11 @@ public final class TableMetaDataInitializer { private final TableMetaDataLoader tableMetaDataLoader; public TableMetaDataInitializer(final ShardingDataSourceMetaData shardingDataSourceMetaData, final ShardingExecuteEngine executeEngine, final TableMetaDataConnectionManager connectionManager, final int maxConnectionsSizePerQuery) { public TableMetaDataInitializer(final ShardingDataSourceMetaData shardingDataSourceMetaData, final ShardingExecuteEngine executeEngine, final TableMetaDataConnectionManager connectionManager, final int maxConnectionsSizePerQuery, final boolean isCheckingMetaData) { this.shardingDataSourceMetaData = shardingDataSourceMetaData; this.connectionManager = connectionManager; tableMetaDataLoader = new TableMetaDataLoader(shardingDataSourceMetaData, executeEngine, connectionManager, maxConnectionsSizePerQuery); tableMetaDataLoader = new TableMetaDataLoader(shardingDataSourceMetaData, executeEngine, connectionManager, maxConnectionsSizePerQuery, isCheckingMetaData); } /** Loading sharding-core/src/main/java/io/shardingsphere/core/metadata/table/executor/TableMetaDataLoader.java +16 −1 Original line number Diff line number Diff line Loading @@ -46,6 +46,7 @@ import java.util.Map.Entry; * Table meta data loader. * * @author zhangliang * @author panjuan */ @RequiredArgsConstructor public final class TableMetaDataLoader { Loading @@ -58,6 +59,8 @@ public final class TableMetaDataLoader { private final int maxConnectionsSizePerQuery; private final boolean isCheckingMetaData; /** * Load table meta data. * Loading @@ -67,7 +70,7 @@ public final class TableMetaDataLoader { * @throws SQLException SQL exception */ public TableMetaData load(final String logicTableName, final ShardingRule shardingRule) throws SQLException { List<TableMetaData> actualTableMetaDataList = load(shardingRule.getTableRuleByLogicTableName(logicTableName).getDataNodeGroups(), shardingRule.getShardingDataSourceNames()); List<TableMetaData> actualTableMetaDataList = load(getDataNodeGroups(logicTableName, shardingRule), shardingRule.getShardingDataSourceNames()); checkUniformed(logicTableName, actualTableMetaDataList); return actualTableMetaDataList.iterator().next(); } Loading Loading @@ -96,6 +99,15 @@ public final class TableMetaDataLoader { return result; } private Map<String, List<DataNode>> getDataNodeGroups(final String logicTableName, final ShardingRule shardingRule) { Map<String, List<DataNode>> result = shardingRule.getTableRuleByLogicTableName(logicTableName).getDataNodeGroups(); if (isCheckingMetaData) { return result; } String firstKey = result.keySet().iterator().next(); return Collections.singletonMap(firstKey, Collections.singletonList(result.get(firstKey).get(0))); } private Collection<ShardingExecuteGroup<DataNode>> getDataNodeGroups(final Map<String, List<DataNode>> dataNodeGroups) { Collection<ShardingExecuteGroup<DataNode>> result = new LinkedList<>(); for (Entry<String, List<DataNode>> entry : dataNodeGroups.entrySet()) { Loading Loading @@ -142,6 +154,9 @@ public final class TableMetaDataLoader { } private void checkUniformed(final String logicTableName, final List<TableMetaData> actualTableMetaDataList) { if (!isCheckingMetaData) { return; } final TableMetaData sample = actualTableMetaDataList.iterator().next(); for (TableMetaData each : actualTableMetaDataList) { if (!sample.equals(each)) { Loading sharding-jdbc/sharding-jdbc-core/src/main/java/io/shardingsphere/shardingjdbc/jdbc/adapter/AbstractStatementAdapter.java +2 −1 Original line number Diff line number Diff line Loading @@ -273,7 +273,8 @@ public abstract class AbstractStatementAdapter extends AbstractUnsupportedOperat private void doOther(final String logicTableName, final ShardingConnection connection) throws SQLException { TableMetaDataLoader tableMetaDataLoader = new TableMetaDataLoader(connection.getShardingContext().getMetaData().getDataSource(), connection.getShardingContext().getExecuteEngine(), new JDBCTableMetaDataConnectionManager(connection.getDataSourceMap()), connection.getShardingContext().getShardingProperties().<Integer>getValue(ShardingPropertiesConstant.MAX_CONNECTIONS_SIZE_PER_QUERY)); connection.getShardingContext().getShardingProperties().<Integer>getValue(ShardingPropertiesConstant.MAX_CONNECTIONS_SIZE_PER_QUERY), connection.getShardingContext().getShardingProperties().<Boolean>getValue(ShardingPropertiesConstant.CHECK_TABLE_METADATA_ENABLED)); connection.getShardingContext().getMetaData().getTable().put(logicTableName, tableMetaDataLoader.load(logicTableName, connection.getShardingContext().getShardingRule())); } } Loading
sharding-core/src/main/java/io/shardingsphere/core/constant/properties/ShardingPropertiesConstant.java +3 −1 Original line number Diff line number Diff line Loading @@ -103,7 +103,9 @@ public enum ShardingPropertiesConstant { PROXY_BACKEND_MAX_CONNECTIONS("proxy.backend.max.connections", String.valueOf(8), int.class), PROXY_BACKEND_CONNECTION_TIMEOUT_SECONDS("proxy.backend.connection.timeout.seconds", String.valueOf(60), int.class); PROXY_BACKEND_CONNECTION_TIMEOUT_SECONDS("proxy.backend.connection.timeout.seconds", String.valueOf(60), int.class), CHECK_TABLE_METADATA_ENABLED("check.table.metadata.enabled", String.valueOf(Boolean.TRUE), boolean.class); private final String key; Loading
sharding-core/src/main/java/io/shardingsphere/core/metadata/ShardingMetaData.java +3 −3 Original line number Diff line number Diff line Loading @@ -40,9 +40,9 @@ public final class ShardingMetaData { private final ShardingTableMetaData table; public ShardingMetaData(final Map<String, String> dataSourceURLs, final ShardingRule shardingRule, final DatabaseType databaseType, final ShardingExecuteEngine executeEngine, final TableMetaDataConnectionManager connectionManager, final int maxConnectionsSizePerQuery) { public ShardingMetaData(final Map<String, String> dataSourceURLs, final ShardingRule shardingRule, final DatabaseType databaseType, final ShardingExecuteEngine executeEngine, final TableMetaDataConnectionManager connectionManager, final int maxConnectionsSizePerQuery, final boolean isCheckingMetaData) { dataSource = new ShardingDataSourceMetaData(dataSourceURLs, shardingRule, databaseType); table = new ShardingTableMetaData(new TableMetaDataInitializer(dataSource, executeEngine, connectionManager, maxConnectionsSizePerQuery).load(shardingRule)); table = new ShardingTableMetaData(new TableMetaDataInitializer(dataSource, executeEngine, connectionManager, maxConnectionsSizePerQuery, isCheckingMetaData).load(shardingRule)); } }
sharding-core/src/main/java/io/shardingsphere/core/metadata/table/executor/TableMetaDataInitializer.java +3 −3 Original line number Diff line number Diff line Loading @@ -47,11 +47,11 @@ public final class TableMetaDataInitializer { private final TableMetaDataLoader tableMetaDataLoader; public TableMetaDataInitializer(final ShardingDataSourceMetaData shardingDataSourceMetaData, final ShardingExecuteEngine executeEngine, final TableMetaDataConnectionManager connectionManager, final int maxConnectionsSizePerQuery) { public TableMetaDataInitializer(final ShardingDataSourceMetaData shardingDataSourceMetaData, final ShardingExecuteEngine executeEngine, final TableMetaDataConnectionManager connectionManager, final int maxConnectionsSizePerQuery, final boolean isCheckingMetaData) { this.shardingDataSourceMetaData = shardingDataSourceMetaData; this.connectionManager = connectionManager; tableMetaDataLoader = new TableMetaDataLoader(shardingDataSourceMetaData, executeEngine, connectionManager, maxConnectionsSizePerQuery); tableMetaDataLoader = new TableMetaDataLoader(shardingDataSourceMetaData, executeEngine, connectionManager, maxConnectionsSizePerQuery, isCheckingMetaData); } /** Loading
sharding-core/src/main/java/io/shardingsphere/core/metadata/table/executor/TableMetaDataLoader.java +16 −1 Original line number Diff line number Diff line Loading @@ -46,6 +46,7 @@ import java.util.Map.Entry; * Table meta data loader. * * @author zhangliang * @author panjuan */ @RequiredArgsConstructor public final class TableMetaDataLoader { Loading @@ -58,6 +59,8 @@ public final class TableMetaDataLoader { private final int maxConnectionsSizePerQuery; private final boolean isCheckingMetaData; /** * Load table meta data. * Loading @@ -67,7 +70,7 @@ public final class TableMetaDataLoader { * @throws SQLException SQL exception */ public TableMetaData load(final String logicTableName, final ShardingRule shardingRule) throws SQLException { List<TableMetaData> actualTableMetaDataList = load(shardingRule.getTableRuleByLogicTableName(logicTableName).getDataNodeGroups(), shardingRule.getShardingDataSourceNames()); List<TableMetaData> actualTableMetaDataList = load(getDataNodeGroups(logicTableName, shardingRule), shardingRule.getShardingDataSourceNames()); checkUniformed(logicTableName, actualTableMetaDataList); return actualTableMetaDataList.iterator().next(); } Loading Loading @@ -96,6 +99,15 @@ public final class TableMetaDataLoader { return result; } private Map<String, List<DataNode>> getDataNodeGroups(final String logicTableName, final ShardingRule shardingRule) { Map<String, List<DataNode>> result = shardingRule.getTableRuleByLogicTableName(logicTableName).getDataNodeGroups(); if (isCheckingMetaData) { return result; } String firstKey = result.keySet().iterator().next(); return Collections.singletonMap(firstKey, Collections.singletonList(result.get(firstKey).get(0))); } private Collection<ShardingExecuteGroup<DataNode>> getDataNodeGroups(final Map<String, List<DataNode>> dataNodeGroups) { Collection<ShardingExecuteGroup<DataNode>> result = new LinkedList<>(); for (Entry<String, List<DataNode>> entry : dataNodeGroups.entrySet()) { Loading Loading @@ -142,6 +154,9 @@ public final class TableMetaDataLoader { } private void checkUniformed(final String logicTableName, final List<TableMetaData> actualTableMetaDataList) { if (!isCheckingMetaData) { return; } final TableMetaData sample = actualTableMetaDataList.iterator().next(); for (TableMetaData each : actualTableMetaDataList) { if (!sample.equals(each)) { Loading
sharding-jdbc/sharding-jdbc-core/src/main/java/io/shardingsphere/shardingjdbc/jdbc/adapter/AbstractStatementAdapter.java +2 −1 Original line number Diff line number Diff line Loading @@ -273,7 +273,8 @@ public abstract class AbstractStatementAdapter extends AbstractUnsupportedOperat private void doOther(final String logicTableName, final ShardingConnection connection) throws SQLException { TableMetaDataLoader tableMetaDataLoader = new TableMetaDataLoader(connection.getShardingContext().getMetaData().getDataSource(), connection.getShardingContext().getExecuteEngine(), new JDBCTableMetaDataConnectionManager(connection.getDataSourceMap()), connection.getShardingContext().getShardingProperties().<Integer>getValue(ShardingPropertiesConstant.MAX_CONNECTIONS_SIZE_PER_QUERY)); connection.getShardingContext().getShardingProperties().<Integer>getValue(ShardingPropertiesConstant.MAX_CONNECTIONS_SIZE_PER_QUERY), connection.getShardingContext().getShardingProperties().<Boolean>getValue(ShardingPropertiesConstant.CHECK_TABLE_METADATA_ENABLED)); connection.getShardingContext().getMetaData().getTable().put(logicTableName, tableMetaDataLoader.load(logicTableName, connection.getShardingContext().getShardingRule())); } }