Loading sharding-jdbc/sharding-jdbc-core/src/main/java/io/shardingsphere/shardingjdbc/jdbc/adapter/AbstractStatementAdapter.java +9 −16 Original line number Diff line number Diff line Loading @@ -19,17 +19,15 @@ package io.shardingsphere.shardingjdbc.jdbc.adapter; import com.google.common.base.Optional; import io.shardingsphere.core.constant.SQLType; import io.shardingsphere.core.constant.properties.ShardingPropertiesConstant; import io.shardingsphere.core.metadata.table.TableMetaData; import io.shardingsphere.core.metadata.table.TableMetaDataFactory; import io.shardingsphere.core.metadata.table.executor.TableMetaDataLoader; import io.shardingsphere.core.parsing.antlr.sql.statement.ddl.AlterTableStatement; import io.shardingsphere.core.parsing.antlr.sql.statement.ddl.CreateTableStatement; import io.shardingsphere.core.parsing.antlr.sql.statement.ddl.DropTableStatement; import io.shardingsphere.core.routing.SQLRouteResult; import io.shardingsphere.shardingjdbc.jdbc.adapter.executor.ForceExecuteCallback; import io.shardingsphere.shardingjdbc.jdbc.adapter.executor.ForceExecuteTemplate; import io.shardingsphere.shardingjdbc.jdbc.core.connection.ShardingConnection; import io.shardingsphere.shardingjdbc.jdbc.metadata.JDBCTableMetaDataConnectionManager; import io.shardingsphere.shardingjdbc.jdbc.unsupported.AbstractUnsupportedOperationStatement; import lombok.RequiredArgsConstructor; Loading Loading @@ -240,12 +238,13 @@ public abstract class AbstractStatementAdapter extends AbstractUnsupportedOperat protected abstract Collection<? extends Statement> getRoutedStatements(); protected final void refreshTableMetaData(final ShardingConnection connection, final SQLRouteResult routeResult) throws SQLException { protected final void refreshTableMetaData(final ShardingConnection connection, final SQLRouteResult routeResult) { if (null != routeResult && null != connection && SQLType.DDL == routeResult.getSqlStatement().getType() && !routeResult.getSqlStatement().getTables().isEmpty()) { String logicTableName = routeResult.getSqlStatement().getTables().getSingleTableName(); if (routeResult.getSqlStatement() instanceof CreateTableStatement) { connection.getShardingContext().getMetaData().getTable().put(logicTableName, TableMetaDataFactory.newInstance((CreateTableStatement) routeResult.getSqlStatement())); connection.getShardingContext().getMetaData().getTable().put( routeResult.getSqlStatement().getTables().getSingleTableName(), TableMetaDataFactory.newInstance((CreateTableStatement) routeResult.getSqlStatement())); } else if (routeResult.getSqlStatement() instanceof AlterTableStatement) { String logicTableName = routeResult.getSqlStatement().getTables().getSingleTableName(); TableMetaData newTableMetaData = TableMetaDataFactory.newInstance((AlterTableStatement) routeResult.getSqlStatement(), connection.getShardingContext().getMetaData().getTable().get(logicTableName)); Optional<String> newTableName = ((AlterTableStatement) routeResult.getSqlStatement()).getNewTableName(); Loading @@ -255,17 +254,11 @@ public abstract class AbstractStatementAdapter extends AbstractUnsupportedOperat } else { connection.getShardingContext().getMetaData().getTable().put(logicTableName, newTableMetaData); } } else { doOther(logicTableName, connection); } else if (routeResult.getSqlStatement() instanceof DropTableStatement) { for (String each : routeResult.getSqlStatement().getTables().getTableNames()) { connection.getShardingContext().getMetaData().getTable().remove(each); } } } 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().<Boolean>getValue(ShardingPropertiesConstant.CHECK_TABLE_METADATA_ENABLED)); connection.getShardingContext().getMetaData().getTable().put(logicTableName, tableMetaDataLoader.load(logicTableName, connection.getShardingContext().getShardingRule())); } } Loading
sharding-jdbc/sharding-jdbc-core/src/main/java/io/shardingsphere/shardingjdbc/jdbc/adapter/AbstractStatementAdapter.java +9 −16 Original line number Diff line number Diff line Loading @@ -19,17 +19,15 @@ package io.shardingsphere.shardingjdbc.jdbc.adapter; import com.google.common.base.Optional; import io.shardingsphere.core.constant.SQLType; import io.shardingsphere.core.constant.properties.ShardingPropertiesConstant; import io.shardingsphere.core.metadata.table.TableMetaData; import io.shardingsphere.core.metadata.table.TableMetaDataFactory; import io.shardingsphere.core.metadata.table.executor.TableMetaDataLoader; import io.shardingsphere.core.parsing.antlr.sql.statement.ddl.AlterTableStatement; import io.shardingsphere.core.parsing.antlr.sql.statement.ddl.CreateTableStatement; import io.shardingsphere.core.parsing.antlr.sql.statement.ddl.DropTableStatement; import io.shardingsphere.core.routing.SQLRouteResult; import io.shardingsphere.shardingjdbc.jdbc.adapter.executor.ForceExecuteCallback; import io.shardingsphere.shardingjdbc.jdbc.adapter.executor.ForceExecuteTemplate; import io.shardingsphere.shardingjdbc.jdbc.core.connection.ShardingConnection; import io.shardingsphere.shardingjdbc.jdbc.metadata.JDBCTableMetaDataConnectionManager; import io.shardingsphere.shardingjdbc.jdbc.unsupported.AbstractUnsupportedOperationStatement; import lombok.RequiredArgsConstructor; Loading Loading @@ -240,12 +238,13 @@ public abstract class AbstractStatementAdapter extends AbstractUnsupportedOperat protected abstract Collection<? extends Statement> getRoutedStatements(); protected final void refreshTableMetaData(final ShardingConnection connection, final SQLRouteResult routeResult) throws SQLException { protected final void refreshTableMetaData(final ShardingConnection connection, final SQLRouteResult routeResult) { if (null != routeResult && null != connection && SQLType.DDL == routeResult.getSqlStatement().getType() && !routeResult.getSqlStatement().getTables().isEmpty()) { String logicTableName = routeResult.getSqlStatement().getTables().getSingleTableName(); if (routeResult.getSqlStatement() instanceof CreateTableStatement) { connection.getShardingContext().getMetaData().getTable().put(logicTableName, TableMetaDataFactory.newInstance((CreateTableStatement) routeResult.getSqlStatement())); connection.getShardingContext().getMetaData().getTable().put( routeResult.getSqlStatement().getTables().getSingleTableName(), TableMetaDataFactory.newInstance((CreateTableStatement) routeResult.getSqlStatement())); } else if (routeResult.getSqlStatement() instanceof AlterTableStatement) { String logicTableName = routeResult.getSqlStatement().getTables().getSingleTableName(); TableMetaData newTableMetaData = TableMetaDataFactory.newInstance((AlterTableStatement) routeResult.getSqlStatement(), connection.getShardingContext().getMetaData().getTable().get(logicTableName)); Optional<String> newTableName = ((AlterTableStatement) routeResult.getSqlStatement()).getNewTableName(); Loading @@ -255,17 +254,11 @@ public abstract class AbstractStatementAdapter extends AbstractUnsupportedOperat } else { connection.getShardingContext().getMetaData().getTable().put(logicTableName, newTableMetaData); } } else { doOther(logicTableName, connection); } else if (routeResult.getSqlStatement() instanceof DropTableStatement) { for (String each : routeResult.getSqlStatement().getTables().getTableNames()) { connection.getShardingContext().getMetaData().getTable().remove(each); } } } 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().<Boolean>getValue(ShardingPropertiesConstant.CHECK_TABLE_METADATA_ENABLED)); connection.getShardingContext().getMetaData().getTable().put(logicTableName, tableMetaDataLoader.load(logicTableName, connection.getShardingContext().getShardingRule())); } }