提交 024b63ea 编写于 作者: 马晓光

Add SQLUnit to wrapper sharding sql and parameters(增加SQLUnit包装分片后的sql语句和参数)

上级 ecd0a9f7
......@@ -24,9 +24,11 @@ import io.shardingjdbc.core.rewrite.placeholder.IndexPlaceholder;
import io.shardingjdbc.core.rewrite.placeholder.SchemaPlaceholder;
import io.shardingjdbc.core.rewrite.placeholder.ShardingPlaceholder;
import io.shardingjdbc.core.rewrite.placeholder.TablePlaceholder;
import io.shardingjdbc.core.routing.SQLUnit;
import io.shardingjdbc.core.rule.ShardingRule;
import io.shardingjdbc.core.rule.TableRule;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
......@@ -41,10 +43,17 @@ public final class SQLBuilder {
private final List<Object> segments;
private final List<Object> parameters;
private StringBuilder currentSegment;
public SQLBuilder() {
this(Collections.emptyList());
}
public SQLBuilder(final List<Object> parameters) {
segments = new LinkedList<>();
this.parameters = parameters;
currentSegment = new StringBuilder();
segments.add(currentSegment);
}
......@@ -70,13 +79,13 @@ public final class SQLBuilder {
}
/**
* Convert to SQL string.
* Convert to SQL unit.
*
* @param logicAndActualTableMap logic and actual map
* @param shardingRule sharding rule
* @return SQL string
* @return SQL unit
*/
public String toSQL(final Map<String, String> logicAndActualTableMap, final ShardingRule shardingRule) {
public SQLUnit toSQL(final Map<String, String> logicAndActualTableMap, final ShardingRule shardingRule) {
StringBuilder result = new StringBuilder();
for (Object each : segments) {
if (!(each instanceof ShardingPlaceholder)) {
......@@ -107,6 +116,6 @@ public final class SQLBuilder {
result.append(each);
}
}
return result.toString();
return new SQLUnit(result.toString(), parameters);
}
}
......@@ -38,6 +38,7 @@ import io.shardingjdbc.core.parsing.parser.token.TableToken;
import io.shardingjdbc.core.rewrite.placeholder.IndexPlaceholder;
import io.shardingjdbc.core.rewrite.placeholder.SchemaPlaceholder;
import io.shardingjdbc.core.rewrite.placeholder.TablePlaceholder;
import io.shardingjdbc.core.routing.SQLUnit;
import io.shardingjdbc.core.routing.router.GeneratedKey;
import io.shardingjdbc.core.routing.type.TableUnit;
import io.shardingjdbc.core.routing.type.TableUnits;
......@@ -59,6 +60,7 @@ import java.util.Map;
* <p>Rewrite logic SQL to actual SQL, should rewrite table name and optimize something.</p>
*
* @author zhangliang
* @author maxiaoguang
*/
public final class SQLRewriteEngine {
......@@ -72,6 +74,8 @@ public final class SQLRewriteEngine {
private final SQLStatement sqlStatement;
private final List<Object> parameters;
private final GeneratedKey generatedKey;
/**
......@@ -83,11 +87,12 @@ public final class SQLRewriteEngine {
* @param sqlStatement SQL statement
* @param generatedKey generated key
*/
public SQLRewriteEngine(final ShardingRule shardingRule, final String originalSQL, final DatabaseType databaseType, final SQLStatement sqlStatement, final GeneratedKey generatedKey) {
public SQLRewriteEngine(final ShardingRule shardingRule, final String originalSQL, final DatabaseType databaseType, final SQLStatement sqlStatement, final List<Object> parameters, final GeneratedKey generatedKey) {
this.shardingRule = shardingRule;
this.originalSQL = originalSQL;
this.databaseType = databaseType;
this.sqlStatement = sqlStatement;
this.parameters = parameters;
this.generatedKey = generatedKey;
sqlTokens.addAll(sqlStatement.getSqlTokens());
}
......@@ -99,7 +104,7 @@ public final class SQLRewriteEngine {
* @return SQL builder
*/
public SQLBuilder rewrite(final boolean isRewriteLimit) {
SQLBuilder result = new SQLBuilder();
SQLBuilder result = new SQLBuilder(parameters);
if (sqlTokens.isEmpty()) {
result.appendLiterals(originalSQL);
return result;
......@@ -234,9 +239,9 @@ public final class SQLRewriteEngine {
*
* @param tableUnits route table units
* @param sqlBuilder SQL builder
* @return SQL string
* @return SQL unit
*/
public String generateSQL(final TableUnits tableUnits, final SQLBuilder sqlBuilder) {
public SQLUnit generateSQL(final TableUnits tableUnits, final SQLBuilder sqlBuilder) {
return sqlBuilder.toSQL(getTableTokens(tableUnits), shardingRule);
}
......@@ -245,9 +250,9 @@ public final class SQLRewriteEngine {
*
* @param tableUnit route table unit
* @param sqlBuilder SQL builder
* @return SQL string
* @return SQL unit
*/
public String generateSQL(final TableUnit tableUnit, final SQLBuilder sqlBuilder) {
public SQLUnit generateSQL(final TableUnit tableUnit, final SQLBuilder sqlBuilder) {
return sqlBuilder.toSQL(getTableTokens(tableUnit), shardingRule);
}
......@@ -256,9 +261,9 @@ public final class SQLRewriteEngine {
*
* @param cartesianTableReference cartesian table reference
* @param sqlBuilder SQL builder
* @return SQL string
* @return SQL unit
*/
public String generateSQL(final CartesianTableReference cartesianTableReference, final SQLBuilder sqlBuilder) {
public SQLUnit generateSQL(final CartesianTableReference cartesianTableReference, final SQLBuilder sqlBuilder) {
return sqlBuilder.toSQL(getTableTokens(cartesianTableReference), shardingRule);
}
......
......@@ -26,6 +26,7 @@ import lombok.ToString;
* SQL execution unit.
*
* @author gaohongtao
* @author maxiaoguang
*/
@RequiredArgsConstructor
@Getter
......@@ -35,5 +36,5 @@ public final class SQLExecutionUnit {
private final String dataSource;
private final String sql;
private final SQLUnit sqlUnit;
}
/*
* 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.routing;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
import lombok.ToString;
import java.util.List;
/**
* SQL unit.
*
* @author maxiaoguang
*/
@RequiredArgsConstructor
@Getter
@EqualsAndHashCode(of = { "sql" })
@ToString
public class SQLUnit {
private final String sql;
private final List<Object> parameters;
}
......@@ -21,6 +21,7 @@ import io.shardingjdbc.core.parsing.SQLJudgeEngine;
import io.shardingjdbc.core.parsing.parser.sql.SQLStatement;
import io.shardingjdbc.core.routing.SQLExecutionUnit;
import io.shardingjdbc.core.routing.SQLRouteResult;
import io.shardingjdbc.core.routing.SQLUnit;
import io.shardingjdbc.core.routing.strategy.hint.HintShardingStrategy;
import io.shardingjdbc.core.routing.type.RoutingResult;
import io.shardingjdbc.core.routing.type.TableUnit;
......@@ -35,6 +36,7 @@ import java.util.List;
* SQL router for hint database only.
*
* @author zhangiang
* @author maxiaoguang
*/
@RequiredArgsConstructor
public final class DatabaseHintSQLRouter implements SQLRouter {
......@@ -54,10 +56,10 @@ public final class DatabaseHintSQLRouter implements SQLRouter {
SQLRouteResult result = new SQLRouteResult(sqlStatement, null);
RoutingResult routingResult = new DatabaseHintRoutingEngine(shardingRule.getDataSourceNames(), (HintShardingStrategy) shardingRule.getDefaultDatabaseShardingStrategy()).route();
for (TableUnit each : routingResult.getTableUnits().getTableUnits()) {
result.getExecutionUnits().add(new SQLExecutionUnit(each.getDataSourceName(), logicSQL));
result.getExecutionUnits().add(new SQLExecutionUnit(each.getDataSourceName(), new SQLUnit(logicSQL, parameters)));
}
if (showSQL) {
SQLLogger.logSQL(logicSQL, sqlStatement, result.getExecutionUnits(), parameters);
SQLLogger.logSQL(logicSQL, sqlStatement, result.getExecutionUnits());
}
return result;
}
......
......@@ -21,6 +21,7 @@ import com.google.common.base.Optional;
import com.google.common.base.Preconditions;
import io.shardingjdbc.core.constant.DatabaseType;
import io.shardingjdbc.core.optimizer.OptimizeEngineFactory;
import io.shardingjdbc.core.optimizer.condition.ShardingConditions;
import io.shardingjdbc.core.parsing.SQLParsingEngine;
import io.shardingjdbc.core.parsing.parser.context.condition.Column;
import io.shardingjdbc.core.parsing.parser.dialect.mysql.statement.ShowDatabasesStatement;
......@@ -36,7 +37,6 @@ import io.shardingjdbc.core.rewrite.SQLBuilder;
import io.shardingjdbc.core.rewrite.SQLRewriteEngine;
import io.shardingjdbc.core.routing.SQLExecutionUnit;
import io.shardingjdbc.core.routing.SQLRouteResult;
import io.shardingjdbc.core.optimizer.condition.ShardingConditions;
import io.shardingjdbc.core.routing.type.RoutingEngine;
import io.shardingjdbc.core.routing.type.RoutingResult;
import io.shardingjdbc.core.routing.type.TableUnit;
......@@ -92,7 +92,7 @@ public final class ParsingSQLRouter implements SQLRouter {
processGeneratedKey(parameters, generatedKey, sqlStatement.getTables().getSingleTableName(), result);
}
RoutingResult routingResult = route(parameters, sqlStatement, generatedKey);
SQLRewriteEngine rewriteEngine = new SQLRewriteEngine(shardingRule, logicSQL, databaseType, sqlStatement, generatedKey);
SQLRewriteEngine rewriteEngine = new SQLRewriteEngine(shardingRule, logicSQL, databaseType, sqlStatement, parameters, generatedKey);
boolean isSingleRouting = routingResult.isSingleRouting();
if (sqlStatement instanceof SelectStatement && null != ((SelectStatement) sqlStatement).getLimit()) {
processLimit(parameters, (SelectStatement) sqlStatement, isSingleRouting);
......@@ -112,7 +112,7 @@ public final class ParsingSQLRouter implements SQLRouter {
}
}
if (showSQL) {
SQLLogger.logSQL(logicSQL, sqlStatement, result.getExecutionUnits(), parameters);
SQLLogger.logSQL(logicSQL, sqlStatement, result.getExecutionUnits());
}
return result;
}
......
......@@ -24,12 +24,12 @@ import lombok.NoArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import java.util.Collection;
import java.util.List;
/**
* SQL logger.
*
* @author zhangliang
* @author zhangliang
* @author maxiaoguang
*/
@Slf4j(topic = "Sharding-JDBC-SQL")
@NoArgsConstructor(access = AccessLevel.PRIVATE)
......@@ -41,16 +41,15 @@ public final class SQLLogger {
* @param logicSQL logic SQL
* @param sqlStatement SQL statement
* @param sqlExecutionUnits SQL execution units
* @param parameters parameters for SQL placeholder
*/
public static void logSQL(final String logicSQL, final SQLStatement sqlStatement, final Collection<SQLExecutionUnit> sqlExecutionUnits, final List<Object> parameters) {
public static void logSQL(final String logicSQL, final SQLStatement sqlStatement, final Collection<SQLExecutionUnit> sqlExecutionUnits) {
log("Logic SQL: {}", logicSQL);
log("SQLStatement: {}", sqlStatement);
for (SQLExecutionUnit each : sqlExecutionUnits) {
if (parameters.isEmpty()) {
log("Actual SQL: {} ::: {}", each.getDataSource(), each.getSql());
if (each.getSqlUnit().getParameters().isEmpty()) {
log("Actual SQL: {} ::: {}", each.getDataSource(), each.getSqlUnit().getSql());
} else {
log("Actual SQL: {} ::: {} ::: {}", each.getDataSource(), each.getSql(), parameters);
log("Actual SQL: {} ::: {} ::: {}", each.getDataSource(), each.getSqlUnit().getSql(), each.getSqlUnit().getParameters());
}
}
}
......
......@@ -45,7 +45,7 @@ public final class SQLBuilderTest {
sqlBuilder.appendLiterals(".id");
sqlBuilder.appendLiterals(" FROM ");
sqlBuilder.appendLiterals("table_x");
assertThat(sqlBuilder.toSQL(Collections.<String, String>emptyMap(), null), is("SELECT table_x.id FROM table_x"));
assertThat(sqlBuilder.toSQL(Collections.<String, String>emptyMap(), null).getSql(), is("SELECT table_x.id FROM table_x"));
}
@Test
......@@ -56,7 +56,7 @@ public final class SQLBuilderTest {
sqlBuilder.appendLiterals(".id");
sqlBuilder.appendLiterals(" FROM ");
sqlBuilder.appendPlaceholder(new TablePlaceholder("table_x"));
assertThat(sqlBuilder.toSQL(Collections.<String, String>emptyMap(), null), is("SELECT table_x.id FROM table_x"));
assertThat(sqlBuilder.toSQL(Collections.<String, String>emptyMap(), null).getSql(), is("SELECT table_x.id FROM table_x"));
}
@Test
......@@ -69,7 +69,7 @@ public final class SQLBuilderTest {
sqlBuilder.appendPlaceholder(new TablePlaceholder("table_x"));
Map<String, String> tableTokens = new HashMap<>(1, 1);
tableTokens.put("table_x", "table_x_1");
assertThat(sqlBuilder.toSQL(tableTokens, null), is("SELECT table_x_1.id FROM table_x_1"));
assertThat(sqlBuilder.toSQL(tableTokens, null).getSql(), is("SELECT table_x_1.id FROM table_x_1"));
}
@Test
......@@ -80,7 +80,7 @@ public final class SQLBuilderTest {
sqlBuilder.appendLiterals(" ON ");
sqlBuilder.appendPlaceholder(new TablePlaceholder("table_x"));
sqlBuilder.appendLiterals(" ('column')");
assertThat(sqlBuilder.toSQL(Collections.<String, String>emptyMap(), null), is("CREATE INDEX index_name ON table_x ('column')"));
assertThat(sqlBuilder.toSQL(Collections.<String, String>emptyMap(), null).getSql(), is("CREATE INDEX index_name ON table_x ('column')"));
}
@Test
......@@ -93,7 +93,7 @@ public final class SQLBuilderTest {
sqlBuilder.appendLiterals(" ('column')");
Map<String, String> tableTokens = new HashMap<>(1, 1);
tableTokens.put("table_x", "table_x_1");
assertThat(sqlBuilder.toSQL(tableTokens, null), is("CREATE INDEX index_name_table_x_1 ON table_x_1 ('column')"));
assertThat(sqlBuilder.toSQL(tableTokens, null).getSql(), is("CREATE INDEX index_name_table_x_1 ON table_x_1 ('column')"));
}
@Test(expected = ShardingJdbcException.class)
......@@ -117,7 +117,7 @@ public final class SQLBuilderTest {
sqlBuilder.appendPlaceholder(new SchemaPlaceholder("ds", "table_0"));
Map<String, String> tableTokens = new HashMap<>(1, 1);
tableTokens.put("table_0", "table_1");
assertThat(sqlBuilder.toSQL(tableTokens, createShardingRule()), is("SHOW CREATE TABLE table_1 ON ds0"));
assertThat(sqlBuilder.toSQL(tableTokens, createShardingRule()).getSql(), is("SHOW CREATE TABLE table_1 ON ds0"));
}
@Test
......
......@@ -87,7 +87,7 @@ public class DatabaseTest {
@Override
public String apply(final SQLExecutionUnit input) {
return input.getSql();
return input.getSqlUnit().getSql();
}
});
assertThat(originSql, is(actualSQLs.iterator().next()));
......@@ -109,7 +109,7 @@ public class DatabaseTest {
@Override
public String apply(final SQLExecutionUnit input) {
return input.getSql();
return input.getSqlUnit().getSql();
}
});
assertThat(originSql, is(actualSQLs.iterator().next()));
......
......@@ -207,9 +207,9 @@ public final class ExecutorEngine implements AutoCloseable {
private AbstractExecutionEvent getExecutionEvent(final SQLType sqlType, final BaseStatementUnit baseStatementUnit, final List<Object> parameters) {
AbstractExecutionEvent result;
if (SQLType.DQL == sqlType) {
result = new DQLExecutionEvent(baseStatementUnit.getSqlExecutionUnit().getDataSource(), baseStatementUnit.getSqlExecutionUnit().getSql(), parameters);
result = new DQLExecutionEvent(baseStatementUnit.getSqlExecutionUnit().getDataSource(), baseStatementUnit.getSqlExecutionUnit().getSqlUnit().getSql(), parameters);
} else {
result = new DMLExecutionEvent(baseStatementUnit.getSqlExecutionUnit().getDataSource(), baseStatementUnit.getSqlExecutionUnit().getSql(), parameters);
result = new DMLExecutionEvent(baseStatementUnit.getSqlExecutionUnit().getDataSource(), baseStatementUnit.getSqlExecutionUnit().getSqlUnit().getSql(), parameters);
}
return result;
}
......
......@@ -56,7 +56,7 @@ public final class StatementExecutor {
@Override
public ResultSet execute(final BaseStatementUnit baseStatementUnit) throws Exception {
return baseStatementUnit.getStatement().executeQuery(baseStatementUnit.getSqlExecutionUnit().getSql());
return baseStatementUnit.getStatement().executeQuery(baseStatementUnit.getSqlExecutionUnit().getSqlUnit().getSql());
}
});
}
......@@ -133,7 +133,7 @@ public final class StatementExecutor {
@Override
public Integer execute(final BaseStatementUnit baseStatementUnit) throws Exception {
return updater.executeUpdate(baseStatementUnit.getStatement(), baseStatementUnit.getSqlExecutionUnit().getSql());
return updater.executeUpdate(baseStatementUnit.getStatement(), baseStatementUnit.getSqlExecutionUnit().getSqlUnit().getSql());
}
});
return accumulate(results);
......@@ -219,7 +219,7 @@ public final class StatementExecutor {
@Override
public Boolean execute(final BaseStatementUnit baseStatementUnit) throws Exception {
return executor.execute(baseStatementUnit.getStatement(), baseStatementUnit.getSqlExecutionUnit().getSql());
return executor.execute(baseStatementUnit.getStatement(), baseStatementUnit.getSqlExecutionUnit().getSqlUnit().getSql());
}
});
if (null == result || result.isEmpty() || null == result.get(0)) {
......
......@@ -181,15 +181,15 @@ public final class ShardingPreparedStatement extends AbstractShardingPreparedSta
Collection<PreparedStatement> result = new LinkedList<>();
Collection<Connection> connections = getConnection().getConnectionsForDDL(sqlExecutionUnit.getDataSource());
for (Connection each : connections) {
result.add(each.prepareStatement(sqlExecutionUnit.getSql(), resultSetType, resultSetConcurrency, resultSetHoldability));
result.add(each.prepareStatement(sqlExecutionUnit.getSqlUnit().getSql(), resultSetType, resultSetConcurrency, resultSetHoldability));
}
return result;
}
private PreparedStatement generatePreparedStatement(final SQLExecutionUnit sqlExecutionUnit) throws SQLException {
Connection connection = getConnection().getConnection(sqlExecutionUnit.getDataSource(), routeResult.getSqlStatement().getType());
return returnGeneratedKeys ? connection.prepareStatement(sqlExecutionUnit.getSql(), Statement.RETURN_GENERATED_KEYS)
: connection.prepareStatement(sqlExecutionUnit.getSql(), resultSetType, resultSetConcurrency, resultSetHoldability);
return returnGeneratedKeys ? connection.prepareStatement(sqlExecutionUnit.getSqlUnit().getSql(), Statement.RETURN_GENERATED_KEYS)
: connection.prepareStatement(sqlExecutionUnit.getSqlUnit().getSql(), resultSetType, resultSetConcurrency, resultSetHoldability);
}
@Override
......
......@@ -25,6 +25,7 @@ import io.shardingjdbc.core.executor.ExecuteCallback;
import io.shardingjdbc.core.executor.ExecutorEngine;
import io.shardingjdbc.core.executor.type.statement.StatementUnit;
import io.shardingjdbc.core.routing.SQLExecutionUnit;
import io.shardingjdbc.core.routing.SQLUnit;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
......@@ -62,7 +63,7 @@ public final class ExecuteEventListenerTest {
public void assertSingleStatement() throws Exception {
Statement statement = mock(Statement.class);
when(statement.getConnection()).thenReturn(mock(Connection.class));
executorEngine.executeStatement(SQLType.DML, Collections.singleton(new StatementUnit(new SQLExecutionUnit("ds_0", "insert into ..."), statement)), new ExecuteCallback<Integer>() {
executorEngine.executeStatement(SQLType.DML, Collections.singleton(new StatementUnit(new SQLExecutionUnit("ds_0", new SQLUnit("insert into ...", Collections.emptyList())), statement)), new ExecuteCallback<Integer>() {
@Override
public Integer execute(final BaseStatementUnit baseStatementUnit) throws Exception {
return 0;
......@@ -76,10 +77,10 @@ public final class ExecuteEventListenerTest {
List<StatementUnit> statementUnitList = new ArrayList<>(2);
Statement stm1 = mock(Statement.class);
when(stm1.getConnection()).thenReturn(mock(Connection.class));
statementUnitList.add(new StatementUnit(new SQLExecutionUnit("ds_0", "insert into ..."), stm1));
statementUnitList.add(new StatementUnit(new SQLExecutionUnit("ds_0", new SQLUnit("insert into ...", Collections.emptyList())), stm1));
Statement stm2 = mock(Statement.class);
when(stm2.getConnection()).thenReturn(mock(Connection.class));
statementUnitList.add(new StatementUnit(new SQLExecutionUnit("ds_0", "insert into ..."), stm2));
statementUnitList.add(new StatementUnit(new SQLExecutionUnit("ds_0", new SQLUnit("insert into ...", Collections.emptyList())), stm2));
executorEngine.executeStatement(SQLType.DML, statementUnitList, new ExecuteCallback<Integer>() {
@Override
public Integer execute(final BaseStatementUnit baseStatementUnit) throws Exception {
......@@ -93,7 +94,7 @@ public final class ExecuteEventListenerTest {
public void assertSQLException() throws Exception {
Statement statement = mock(Statement.class);
when(statement.getConnection()).thenReturn(mock(Connection.class));
executorEngine.executeStatement(SQLType.DQL, Collections.singleton(new StatementUnit(new SQLExecutionUnit("ds_0", "select ..."), statement)), new ExecuteCallback<Integer>() {
executorEngine.executeStatement(SQLType.DQL, Collections.singleton(new StatementUnit(new SQLExecutionUnit("ds_0", new SQLUnit("select ...", Collections.emptyList())), statement)), new ExecuteCallback<Integer>() {
@Override
public Integer execute(final BaseStatementUnit baseStatementUnit) throws Exception {
throw new SQLException();
......
......@@ -84,12 +84,12 @@ public final class SQLExecuteBackendHandler implements BackendHandler {
private CommandResponsePackets execute(final SQLStatement sqlStatement, final SQLExecutionUnit sqlExecutionUnit) {
switch (sqlStatement.getType()) {
case DQL:
return executeQuery(ShardingRuleRegistry.getInstance().getDataSourceMap().get(sqlExecutionUnit.getDataSource()), sqlExecutionUnit.getSql());
return executeQuery(ShardingRuleRegistry.getInstance().getDataSourceMap().get(sqlExecutionUnit.getDataSource()), sqlExecutionUnit.getSqlUnit().getSql());
case DML:
case DDL:
return executeUpdate(ShardingRuleRegistry.getInstance().getDataSourceMap().get(sqlExecutionUnit.getDataSource()), sqlExecutionUnit.getSql(), sqlStatement);
return executeUpdate(ShardingRuleRegistry.getInstance().getDataSourceMap().get(sqlExecutionUnit.getDataSource()), sqlExecutionUnit.getSqlUnit().getSql(), sqlStatement);
default:
return executeCommon(ShardingRuleRegistry.getInstance().getDataSourceMap().get(sqlExecutionUnit.getDataSource()), sqlExecutionUnit.getSql());
return executeCommon(ShardingRuleRegistry.getInstance().getDataSourceMap().get(sqlExecutionUnit.getDataSource()), sqlExecutionUnit.getSqlUnit().getSql());
}
}
......
......@@ -106,12 +106,12 @@ public final class StatementExecuteBackendHandler implements BackendHandler {
private CommandResponsePackets execute(final SQLStatement sqlStatement, final SQLExecutionUnit sqlExecutionUnit) {
switch (sqlStatement.getType()) {
case DQL:
return executeQuery(ShardingRuleRegistry.getInstance().getDataSourceMap().get(sqlExecutionUnit.getDataSource()), sqlExecutionUnit.getSql());
return executeQuery(ShardingRuleRegistry.getInstance().getDataSourceMap().get(sqlExecutionUnit.getDataSource()), sqlExecutionUnit.getSqlUnit().getSql());
case DML:
case DDL:
return executeUpdate(ShardingRuleRegistry.getInstance().getDataSourceMap().get(sqlExecutionUnit.getDataSource()), sqlExecutionUnit.getSql(), sqlStatement);
return executeUpdate(ShardingRuleRegistry.getInstance().getDataSourceMap().get(sqlExecutionUnit.getDataSource()), sqlExecutionUnit.getSqlUnit().getSql(), sqlStatement);
default:
return executeCommon(ShardingRuleRegistry.getInstance().getDataSourceMap().get(sqlExecutionUnit.getDataSource()), sqlExecutionUnit.getSql());
return executeCommon(ShardingRuleRegistry.getInstance().getDataSourceMap().get(sqlExecutionUnit.getDataSource()), sqlExecutionUnit.getSqlUnit().getSql());
}
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册