Loading sharding-core/src/main/java/io/shardingjdbc/core/merger/MergeEngine.java +1 −1 Original line number Diff line number Diff line Loading @@ -20,7 +20,7 @@ package io.shardingjdbc.core.merger; import java.sql.SQLException; /** * result set merge engine. * Result set merge engine. * * @author zhangliang */ Loading sharding-core/src/main/java/io/shardingjdbc/core/merger/MergeEngineFactory.java 0 → 100644 +58 −0 Original line number Diff line number Diff line /* * Copyright 1999-2015 dangdang.com. * <p> * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * </p> */ package io.shardingjdbc.core.merger; import io.shardingjdbc.core.merger.dal.DALMergeEngine; import io.shardingjdbc.core.merger.dql.DQLMergeEngine; import io.shardingjdbc.core.parsing.parser.sql.SQLStatement; import io.shardingjdbc.core.parsing.parser.sql.dal.DALStatement; import io.shardingjdbc.core.parsing.parser.sql.dql.select.SelectStatement; import io.shardingjdbc.core.rule.ShardingRule; import lombok.AccessLevel; import lombok.NoArgsConstructor; import java.sql.SQLException; import java.util.List; /** * Result merge engine factory. * * @author zhangliang */ @NoArgsConstructor(access = AccessLevel.PRIVATE) public final class MergeEngineFactory { /** * Create merge engine instance. * * @param shardingRule sharding rule * @param queryResults query results * @param sqlStatement SQL statement * @return merge engine instance * @throws SQLException SQL exception */ public static MergeEngine newInstance(final ShardingRule shardingRule, final List<QueryResult> queryResults, final SQLStatement sqlStatement) throws SQLException { if (sqlStatement instanceof SelectStatement) { return new DQLMergeEngine(queryResults, (SelectStatement) sqlStatement); } if (sqlStatement instanceof DALStatement) { return new DALMergeEngine(shardingRule, queryResults, (DALStatement) sqlStatement); } throw new UnsupportedOperationException(String.format("Cannot support type '%s'", sqlStatement.getType())); } } sharding-jdbc-core/src/main/java/io/shardingjdbc/core/jdbc/core/statement/ShardingPreparedStatement.java +4 −17 Original line number Diff line number Diff line Loading @@ -30,10 +30,9 @@ import io.shardingjdbc.core.jdbc.core.ShardingContext; import io.shardingjdbc.core.jdbc.core.connection.ShardingConnection; import io.shardingjdbc.core.jdbc.core.resultset.GeneratedKeysResultSet; import io.shardingjdbc.core.jdbc.core.resultset.ShardingResultSet; import io.shardingjdbc.core.merger.dal.DALMergeEngine; import io.shardingjdbc.core.merger.dql.DQLMergeEngine; import io.shardingjdbc.core.merger.JDBCQueryResult; import io.shardingjdbc.core.merger.MergeEngine; import io.shardingjdbc.core.merger.MergeEngineFactory; import io.shardingjdbc.core.merger.QueryResult; import io.shardingjdbc.core.parsing.parser.context.GeneratedKey; import io.shardingjdbc.core.parsing.parser.sql.dal.DALStatement; Loading Loading @@ -127,14 +126,7 @@ public final class ShardingPreparedStatement extends AbstractShardingPreparedSta for (ResultSet each : resultSets) { queryResults.add(new JDBCQueryResult(each)); } MergeEngine mergeEngine; if (routeResult.getSqlStatement() instanceof SelectStatement) { mergeEngine = new DQLMergeEngine(queryResults, (SelectStatement) routeResult.getSqlStatement()); } else if (routeResult.getSqlStatement() instanceof DALStatement) { mergeEngine = new DALMergeEngine(connection.getShardingContext().getShardingRule(), queryResults, (DALStatement) routeResult.getSqlStatement()); } else { throw new UnsupportedOperationException(String.format("Cannot support type '%s'", routeResult.getSqlStatement().getType())); } MergeEngine mergeEngine = MergeEngineFactory.newInstance(connection.getShardingContext().getShardingRule(), queryResults, routeResult.getSqlStatement()); result = new ShardingResultSet(resultSets, mergeEngine.merge(), this); } finally { clearBatch(); Loading Loading @@ -294,13 +286,8 @@ public final class ShardingPreparedStatement extends AbstractShardingPreparedSta resultSets.add(resultSet); queryResults.add(new JDBCQueryResult(resultSet)); } MergeEngine mergeEngine = null; if (routeResult.getSqlStatement() instanceof SelectStatement) { mergeEngine = new DQLMergeEngine(queryResults, (SelectStatement) routeResult.getSqlStatement()); } else if (routeResult.getSqlStatement() instanceof DALStatement) { mergeEngine = new DALMergeEngine(connection.getShardingContext().getShardingRule(), queryResults, (DALStatement) routeResult.getSqlStatement()); } if (null != mergeEngine) { if (routeResult.getSqlStatement() instanceof SelectStatement || routeResult.getSqlStatement() instanceof DALStatement) { MergeEngine mergeEngine = MergeEngineFactory.newInstance(connection.getShardingContext().getShardingRule(), queryResults, routeResult.getSqlStatement()); currentResultSet = new ShardingResultSet(resultSets, mergeEngine.merge(), this); } return currentResultSet; Loading sharding-jdbc-core/src/main/java/io/shardingjdbc/core/jdbc/core/statement/ShardingStatement.java +5 −18 Original line number Diff line number Diff line Loading @@ -26,11 +26,10 @@ import io.shardingjdbc.core.jdbc.core.ShardingContext; import io.shardingjdbc.core.jdbc.core.connection.ShardingConnection; import io.shardingjdbc.core.jdbc.core.resultset.GeneratedKeysResultSet; import io.shardingjdbc.core.jdbc.core.resultset.ShardingResultSet; import io.shardingjdbc.core.merger.dal.DALMergeEngine; import io.shardingjdbc.core.merger.dql.DQLMergeEngine; import io.shardingjdbc.core.merger.JDBCQueryResult; import io.shardingjdbc.core.merger.MergeEngine; import io.shardingjdbc.core.merger.MergeEngineFactory; import io.shardingjdbc.core.merger.QueryResult; import io.shardingjdbc.core.merger.JDBCQueryResult; import io.shardingjdbc.core.parsing.parser.context.GeneratedKey; import io.shardingjdbc.core.parsing.parser.sql.dal.DALStatement; import io.shardingjdbc.core.parsing.parser.sql.dml.insert.InsertStatement; Loading Loading @@ -106,14 +105,7 @@ public class ShardingStatement extends AbstractStatementAdapter { for (ResultSet each : resultSets) { queryResults.add(new JDBCQueryResult(each)); } MergeEngine mergeEngine; if (routeResult.getSqlStatement() instanceof SelectStatement) { mergeEngine = new DQLMergeEngine(queryResults, (SelectStatement) routeResult.getSqlStatement()); } else if (routeResult.getSqlStatement() instanceof DALStatement) { mergeEngine = new DALMergeEngine(connection.getShardingContext().getShardingRule(), queryResults, (DALStatement) routeResult.getSqlStatement()); } else { throw new UnsupportedOperationException(String.format("Cannot support type '%s'", routeResult.getSqlStatement().getType())); } MergeEngine mergeEngine = MergeEngineFactory.newInstance(connection.getShardingContext().getShardingRule(), queryResults, routeResult.getSqlStatement()); result = new ShardingResultSet(resultSets, mergeEngine.merge(), this); } finally { currentResultSet = null; Loading Loading @@ -269,13 +261,8 @@ public class ShardingStatement extends AbstractStatementAdapter { resultSets.add(resultSet); queryResults.add(new JDBCQueryResult(resultSet)); } MergeEngine mergeEngine = null; if (routeResult.getSqlStatement() instanceof SelectStatement) { mergeEngine = new DQLMergeEngine(queryResults, (SelectStatement) routeResult.getSqlStatement()); } else if (routeResult.getSqlStatement() instanceof DALStatement && !queryResults.isEmpty()) { mergeEngine = new DALMergeEngine(connection.getShardingContext().getShardingRule(), queryResults, (DALStatement) routeResult.getSqlStatement()); } if (null != mergeEngine) { if (routeResult.getSqlStatement() instanceof SelectStatement || routeResult.getSqlStatement() instanceof DALStatement) { MergeEngine mergeEngine = MergeEngineFactory.newInstance(connection.getShardingContext().getShardingRule(), queryResults, routeResult.getSqlStatement()); currentResultSet = new ShardingResultSet(resultSets, mergeEngine.merge(), this); } return currentResultSet; Loading Loading
sharding-core/src/main/java/io/shardingjdbc/core/merger/MergeEngine.java +1 −1 Original line number Diff line number Diff line Loading @@ -20,7 +20,7 @@ package io.shardingjdbc.core.merger; import java.sql.SQLException; /** * result set merge engine. * Result set merge engine. * * @author zhangliang */ Loading
sharding-core/src/main/java/io/shardingjdbc/core/merger/MergeEngineFactory.java 0 → 100644 +58 −0 Original line number Diff line number Diff line /* * Copyright 1999-2015 dangdang.com. * <p> * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * </p> */ package io.shardingjdbc.core.merger; import io.shardingjdbc.core.merger.dal.DALMergeEngine; import io.shardingjdbc.core.merger.dql.DQLMergeEngine; import io.shardingjdbc.core.parsing.parser.sql.SQLStatement; import io.shardingjdbc.core.parsing.parser.sql.dal.DALStatement; import io.shardingjdbc.core.parsing.parser.sql.dql.select.SelectStatement; import io.shardingjdbc.core.rule.ShardingRule; import lombok.AccessLevel; import lombok.NoArgsConstructor; import java.sql.SQLException; import java.util.List; /** * Result merge engine factory. * * @author zhangliang */ @NoArgsConstructor(access = AccessLevel.PRIVATE) public final class MergeEngineFactory { /** * Create merge engine instance. * * @param shardingRule sharding rule * @param queryResults query results * @param sqlStatement SQL statement * @return merge engine instance * @throws SQLException SQL exception */ public static MergeEngine newInstance(final ShardingRule shardingRule, final List<QueryResult> queryResults, final SQLStatement sqlStatement) throws SQLException { if (sqlStatement instanceof SelectStatement) { return new DQLMergeEngine(queryResults, (SelectStatement) sqlStatement); } if (sqlStatement instanceof DALStatement) { return new DALMergeEngine(shardingRule, queryResults, (DALStatement) sqlStatement); } throw new UnsupportedOperationException(String.format("Cannot support type '%s'", sqlStatement.getType())); } }
sharding-jdbc-core/src/main/java/io/shardingjdbc/core/jdbc/core/statement/ShardingPreparedStatement.java +4 −17 Original line number Diff line number Diff line Loading @@ -30,10 +30,9 @@ import io.shardingjdbc.core.jdbc.core.ShardingContext; import io.shardingjdbc.core.jdbc.core.connection.ShardingConnection; import io.shardingjdbc.core.jdbc.core.resultset.GeneratedKeysResultSet; import io.shardingjdbc.core.jdbc.core.resultset.ShardingResultSet; import io.shardingjdbc.core.merger.dal.DALMergeEngine; import io.shardingjdbc.core.merger.dql.DQLMergeEngine; import io.shardingjdbc.core.merger.JDBCQueryResult; import io.shardingjdbc.core.merger.MergeEngine; import io.shardingjdbc.core.merger.MergeEngineFactory; import io.shardingjdbc.core.merger.QueryResult; import io.shardingjdbc.core.parsing.parser.context.GeneratedKey; import io.shardingjdbc.core.parsing.parser.sql.dal.DALStatement; Loading Loading @@ -127,14 +126,7 @@ public final class ShardingPreparedStatement extends AbstractShardingPreparedSta for (ResultSet each : resultSets) { queryResults.add(new JDBCQueryResult(each)); } MergeEngine mergeEngine; if (routeResult.getSqlStatement() instanceof SelectStatement) { mergeEngine = new DQLMergeEngine(queryResults, (SelectStatement) routeResult.getSqlStatement()); } else if (routeResult.getSqlStatement() instanceof DALStatement) { mergeEngine = new DALMergeEngine(connection.getShardingContext().getShardingRule(), queryResults, (DALStatement) routeResult.getSqlStatement()); } else { throw new UnsupportedOperationException(String.format("Cannot support type '%s'", routeResult.getSqlStatement().getType())); } MergeEngine mergeEngine = MergeEngineFactory.newInstance(connection.getShardingContext().getShardingRule(), queryResults, routeResult.getSqlStatement()); result = new ShardingResultSet(resultSets, mergeEngine.merge(), this); } finally { clearBatch(); Loading Loading @@ -294,13 +286,8 @@ public final class ShardingPreparedStatement extends AbstractShardingPreparedSta resultSets.add(resultSet); queryResults.add(new JDBCQueryResult(resultSet)); } MergeEngine mergeEngine = null; if (routeResult.getSqlStatement() instanceof SelectStatement) { mergeEngine = new DQLMergeEngine(queryResults, (SelectStatement) routeResult.getSqlStatement()); } else if (routeResult.getSqlStatement() instanceof DALStatement) { mergeEngine = new DALMergeEngine(connection.getShardingContext().getShardingRule(), queryResults, (DALStatement) routeResult.getSqlStatement()); } if (null != mergeEngine) { if (routeResult.getSqlStatement() instanceof SelectStatement || routeResult.getSqlStatement() instanceof DALStatement) { MergeEngine mergeEngine = MergeEngineFactory.newInstance(connection.getShardingContext().getShardingRule(), queryResults, routeResult.getSqlStatement()); currentResultSet = new ShardingResultSet(resultSets, mergeEngine.merge(), this); } return currentResultSet; Loading
sharding-jdbc-core/src/main/java/io/shardingjdbc/core/jdbc/core/statement/ShardingStatement.java +5 −18 Original line number Diff line number Diff line Loading @@ -26,11 +26,10 @@ import io.shardingjdbc.core.jdbc.core.ShardingContext; import io.shardingjdbc.core.jdbc.core.connection.ShardingConnection; import io.shardingjdbc.core.jdbc.core.resultset.GeneratedKeysResultSet; import io.shardingjdbc.core.jdbc.core.resultset.ShardingResultSet; import io.shardingjdbc.core.merger.dal.DALMergeEngine; import io.shardingjdbc.core.merger.dql.DQLMergeEngine; import io.shardingjdbc.core.merger.JDBCQueryResult; import io.shardingjdbc.core.merger.MergeEngine; import io.shardingjdbc.core.merger.MergeEngineFactory; import io.shardingjdbc.core.merger.QueryResult; import io.shardingjdbc.core.merger.JDBCQueryResult; import io.shardingjdbc.core.parsing.parser.context.GeneratedKey; import io.shardingjdbc.core.parsing.parser.sql.dal.DALStatement; import io.shardingjdbc.core.parsing.parser.sql.dml.insert.InsertStatement; Loading Loading @@ -106,14 +105,7 @@ public class ShardingStatement extends AbstractStatementAdapter { for (ResultSet each : resultSets) { queryResults.add(new JDBCQueryResult(each)); } MergeEngine mergeEngine; if (routeResult.getSqlStatement() instanceof SelectStatement) { mergeEngine = new DQLMergeEngine(queryResults, (SelectStatement) routeResult.getSqlStatement()); } else if (routeResult.getSqlStatement() instanceof DALStatement) { mergeEngine = new DALMergeEngine(connection.getShardingContext().getShardingRule(), queryResults, (DALStatement) routeResult.getSqlStatement()); } else { throw new UnsupportedOperationException(String.format("Cannot support type '%s'", routeResult.getSqlStatement().getType())); } MergeEngine mergeEngine = MergeEngineFactory.newInstance(connection.getShardingContext().getShardingRule(), queryResults, routeResult.getSqlStatement()); result = new ShardingResultSet(resultSets, mergeEngine.merge(), this); } finally { currentResultSet = null; Loading Loading @@ -269,13 +261,8 @@ public class ShardingStatement extends AbstractStatementAdapter { resultSets.add(resultSet); queryResults.add(new JDBCQueryResult(resultSet)); } MergeEngine mergeEngine = null; if (routeResult.getSqlStatement() instanceof SelectStatement) { mergeEngine = new DQLMergeEngine(queryResults, (SelectStatement) routeResult.getSqlStatement()); } else if (routeResult.getSqlStatement() instanceof DALStatement && !queryResults.isEmpty()) { mergeEngine = new DALMergeEngine(connection.getShardingContext().getShardingRule(), queryResults, (DALStatement) routeResult.getSqlStatement()); } if (null != mergeEngine) { if (routeResult.getSqlStatement() instanceof SelectStatement || routeResult.getSqlStatement() instanceof DALStatement) { MergeEngine mergeEngine = MergeEngineFactory.newInstance(connection.getShardingContext().getShardingRule(), queryResults, routeResult.getSqlStatement()); currentResultSet = new ShardingResultSet(resultSets, mergeEngine.merge(), this); } return currentResultSet; Loading