Commit 672a4bb4 authored by terrymanu's avatar terrymanu
Browse files

throw SQLException on TableMetaDataLoader

parent ad1f42b3
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -67,7 +67,7 @@ public final class TableMetaDataInitializer {
        return result;
    }
    
    private Map<String, TableMetaData> loadShardingTables(final ShardingRule shardingRule) {
    private Map<String, TableMetaData> loadShardingTables(final ShardingRule shardingRule) throws SQLException {
        Map<String, TableMetaData> result = new HashMap<>(shardingRule.getTableRules().size(), 1);
        for (TableRule each : shardingRule.getTableRules()) {
            result.put(each.getLogicTable(), tableMetaDataLoader.load(each.getLogicTable(), shardingRule));
+12 −15
Original line number Diff line number Diff line
@@ -58,15 +58,15 @@ public final class TableMetaDataLoader {
     * @param logicTableName logic table name
     * @param shardingRule sharding rule
     * @return table meta data
     * @throws SQLException SQL exception
     */
    public TableMetaData load(final String logicTableName, final ShardingRule shardingRule) {
    public TableMetaData load(final String logicTableName, final ShardingRule shardingRule) throws SQLException {
        List<TableMetaData> actualTableMetaDataList = load(shardingRule.getTableRuleByLogicTableName(logicTableName).getDataNodeGroups(), shardingRule.getShardingDataSourceNames());
        checkUniformed(logicTableName, actualTableMetaDataList);
        return actualTableMetaDataList.iterator().next();
    }
    
    private List<TableMetaData> load(final Map<String, Collection<String>> dataNodeGroups, final ShardingDataSourceNames shardingDataSourceNames) {
        try {
    private List<TableMetaData> load(final Map<String, Collection<String>> dataNodeGroups, final ShardingDataSourceNames shardingDataSourceNames) throws SQLException {
        return shardingExecuteEngine.groupExecute(dataNodeGroups, new ShardingGroupExecuteCallback<String, TableMetaData>() {
        
            @Override
@@ -76,9 +76,6 @@ public final class TableMetaDataLoader {
                return load(shardingDataSourceNames.getRawMasterDataSourceName(dataSourceName), catalog, actualTableNames);
            }
        });
        } catch (final Exception ex) {
            throw new ShardingException(ex);
        }
    }
    
    private Collection<TableMetaData> load(final String dataSourceName, final String catalog, final Collection<String> actualTableNames) throws SQLException {
+3 −3
Original line number Diff line number Diff line
@@ -53,19 +53,19 @@ public abstract class SQLExecuteCallback<T> implements ShardingExecuteCallback<S
    
    @Override
    public final T execute(final StatementExecuteUnit executeUnit) throws SQLException {
        return executeInternal(executeUnit);
        return execute0(executeUnit);
    }
    
    @Override
    public final Collection<T> execute(final String dataSourceName, final Collection<StatementExecuteUnit> executeUnits) throws SQLException {
        Collection<T> result = new LinkedList<>();
        for (StatementExecuteUnit each : executeUnits) {
            result.add(executeInternal(each));
            result.add(execute0(each));
        }
        return result;
    }
    
    private T executeInternal(final StatementExecuteUnit executeUnit) throws SQLException {
    private T execute0(final StatementExecuteUnit executeUnit) throws SQLException {
        ExecutorExceptionHandler.setExceptionThrown(isExceptionThrown);
        ExecutorDataMap.setDataMap(dataMap);
        List<SQLExecutionEvent> events = new LinkedList<>();
+1 −1
Original line number Diff line number Diff line
@@ -244,7 +244,7 @@ public final class ShardingPreparedStatement extends AbstractShardingPreparedSta
    }
    
    // TODO refresh table meta data by SQL parse result
    private void refreshTableMetaData() {
    private void refreshTableMetaData() throws SQLException {
        if (null != routeResult && null != connection && SQLType.DDL == routeResult.getSqlStatement().getType() && !routeResult.getSqlStatement().getTables().isEmpty()) {
            String logicTableName = routeResult.getSqlStatement().getTables().getSingleTableName();
            TableMetaDataLoader tableMetaDataLoader = new TableMetaDataLoader(connection.getShardingContext().getMetaData().getDataSource(), 
+1 −1
Original line number Diff line number Diff line
@@ -284,7 +284,7 @@ public final class ShardingStatement extends AbstractStatementAdapter {
    }
    
    // TODO refresh table meta data by SQL parse result
    private void refreshTableMetaData() {
    private void refreshTableMetaData() throws SQLException {
        if (null != routeResult && null != connection && SQLType.DDL == routeResult.getSqlStatement().getType() && !routeResult.getSqlStatement().getTables().isEmpty()) {
            String logicTableName = routeResult.getSqlStatement().getTables().getSingleTableName();
            TableMetaDataLoader tableMetaDataLoader = new TableMetaDataLoader(connection.getShardingContext().getMetaData().getDataSource(), 
Loading