You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by pa...@apache.org on 2022/05/08 05:30:45 UTC
[shardingsphere] branch master updated: Fix wrong route result when execute create schema statement in encrypt scenario (#17438)
This is an automated email from the ASF dual-hosted git repository.
panjuan pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git
The following commit(s) were added to refs/heads/master by this push:
new 266a85481c5 Fix wrong route result when execute create schema statement in encrypt scenario (#17438)
266a85481c5 is described below
commit 266a85481c5c122c0a0e2d72d4449ca2573c9c20
Author: Zhengqiang Duan <du...@apache.org>
AuthorDate: Sun May 8 13:30:38 2022 +0800
Fix wrong route result when execute create schema statement in encrypt scenario (#17438)
---
.../singletable/route/SingleTableSQLRouter.java | 54 +++++++++++---------
.../SingleTableDatabaseBroadcastRouteEngine.java | 38 +++++++++++++++
.../route/engine/SingleTableRouteEngine.java | 35 +++++++++++++
.../engine/SingleTableRouteEngineFactory.java | 57 ++++++++++++++++++++++
.../SingleTableStandardRouteEngine.java} | 14 +++---
.../SingleTableStandardRouteEngineTest.java} | 12 ++---
6 files changed, 174 insertions(+), 36 deletions(-)
diff --git a/shardingsphere-kernel/shardingsphere-single-table/shardingsphere-single-table-core/src/main/java/org/apache/shardingsphere/singletable/route/SingleTableSQLRouter.java b/shardingsphere-kernel/shardingsphere-single-table/shardingsphere-single-table-core/src/main/java/org/apache/shardingsphere/singletable/route/SingleTableSQLRouter.java
index 2591f37cb1a..1ecee6f2852 100644
--- a/shardingsphere-kernel/shardingsphere-single-table/shardingsphere-single-table-core/src/main/java/org/apache/shardingsphere/singletable/route/SingleTableSQLRouter.java
+++ b/shardingsphere-kernel/shardingsphere-single-table/shardingsphere-single-table-core/src/main/java/org/apache/shardingsphere/singletable/route/SingleTableSQLRouter.java
@@ -33,6 +33,7 @@ import org.apache.shardingsphere.infra.route.context.RouteContext;
import org.apache.shardingsphere.infra.route.context.RouteMapper;
import org.apache.shardingsphere.infra.route.context.RouteUnit;
import org.apache.shardingsphere.singletable.constant.SingleTableOrder;
+import org.apache.shardingsphere.singletable.route.engine.SingleTableRouteEngineFactory;
import org.apache.shardingsphere.singletable.rule.SingleTableRule;
import org.apache.shardingsphere.sql.parser.sql.common.segment.generic.table.SimpleTableSegment;
import org.apache.shardingsphere.sql.parser.sql.common.statement.ddl.CreateTableStatement;
@@ -48,37 +49,50 @@ public final class SingleTableSQLRouter implements SQLRouter<SingleTableRule> {
@Override
public RouteContext createRouteContext(final LogicSQL logicSQL, final ShardingSphereMetaData metaData, final SingleTableRule rule, final ConfigurationProperties props) {
- RouteContext result = new RouteContext();
if (1 == metaData.getResource().getDataSources().size()) {
- String logicDataSource = rule.getDataSourceNames().iterator().next();
- String actualDataSource = metaData.getResource().getDataSources().keySet().iterator().next();
- result.getRouteUnits().add(new RouteUnit(new RouteMapper(logicDataSource, actualDataSource), Collections.emptyList()));
- } else {
- route(logicSQL.getSqlStatementContext(), metaData, rule, props, result);
+ return createSingleDataSourceRouteContext(rule, metaData);
+ }
+ RouteContext result = new RouteContext();
+ SQLStatementContext<?> sqlStatementContext = logicSQL.getSqlStatementContext();
+ Collection<QualifiedTable> singleTableNames = getSingleTableNames(sqlStatementContext, metaData, rule, result);
+ if (!singleTableNames.isEmpty()) {
+ validateSameDataSource(sqlStatementContext, rule, props, singleTableNames, result);
}
+ SingleTableRouteEngineFactory.newInstance(singleTableNames, sqlStatementContext.getSqlStatement()).ifPresent(optional -> optional.route(result, rule));
return result;
}
- private void route(final SQLStatementContext<?> sqlStatementContext, final ShardingSphereMetaData metaData, final SingleTableRule rule,
- final ConfigurationProperties props, final RouteContext routeContext) {
+ @Override
+ public void decorateRouteContext(final RouteContext routeContext, final LogicSQL logicSQL, final ShardingSphereMetaData metaData,
+ final SingleTableRule rule, final ConfigurationProperties props) {
+ SQLStatementContext<?> sqlStatementContext = logicSQL.getSqlStatementContext();
Collection<QualifiedTable> singleTableNames = getSingleTableNames(sqlStatementContext, metaData, rule, routeContext);
if (singleTableNames.isEmpty()) {
return;
}
- validateSameDataSource(sqlStatementContext, rule, routeContext, props, singleTableNames);
- new SingleTableRouteEngine(singleTableNames, sqlStatementContext.getSqlStatement()).route(routeContext, rule);
+ validateSameDataSource(sqlStatementContext, rule, props, singleTableNames, routeContext);
+ SingleTableRouteEngineFactory.newInstance(singleTableNames, sqlStatementContext.getSqlStatement()).ifPresent(optional -> optional.route(routeContext, rule));
}
- private Collection<QualifiedTable> getSingleTableNames(final SQLStatementContext<?> sqlStatementContext, final ShardingSphereMetaData metaData,
- final SingleTableRule rule, final RouteContext routeContext) {
- Collection<QualifiedTable> result = getQualifiedTables(metaData, sqlStatementContext.getTablesContext().getTables(), sqlStatementContext.getDatabaseType());
+ private RouteContext createSingleDataSourceRouteContext(final SingleTableRule rule, final ShardingSphereMetaData metaData) {
+ String logicDataSource = rule.getDataSourceNames().iterator().next();
+ String actualDataSource = metaData.getResource().getDataSources().keySet().iterator().next();
+ RouteContext result = new RouteContext();
+ result.getRouteUnits().add(new RouteUnit(new RouteMapper(logicDataSource, actualDataSource), Collections.emptyList()));
+ return result;
+ }
+
+ private static Collection<QualifiedTable> getSingleTableNames(final SQLStatementContext<?> sqlStatementContext, final ShardingSphereMetaData metaData,
+ final SingleTableRule rule, final RouteContext routeContext) {
+ DatabaseType databaseType = sqlStatementContext.getDatabaseType();
+ Collection<QualifiedTable> result = getQualifiedTables(metaData, sqlStatementContext.getTablesContext().getTables(), databaseType);
if (result.isEmpty() && sqlStatementContext instanceof IndexAvailable) {
- result = IndexMetaDataUtil.getTableNamesFromMetaData(metaData, ((IndexAvailable) sqlStatementContext).getIndexes(), sqlStatementContext.getDatabaseType());
+ result = IndexMetaDataUtil.getTableNamesFromMetaData(metaData, ((IndexAvailable) sqlStatementContext).getIndexes(), databaseType);
}
return routeContext.getRouteUnits().isEmpty() && sqlStatementContext.getSqlStatement() instanceof CreateTableStatement ? result : rule.getSingleTableNames(result);
}
- private Collection<QualifiedTable> getQualifiedTables(final ShardingSphereMetaData metaData, final Collection<SimpleTableSegment> tableSegments, final DatabaseType databaseType) {
+ private static Collection<QualifiedTable> getQualifiedTables(final ShardingSphereMetaData metaData, final Collection<SimpleTableSegment> tableSegments, final DatabaseType databaseType) {
Collection<QualifiedTable> result = new LinkedList<>();
String schemaName = databaseType.getDefaultSchema(metaData.getDatabaseName());
for (SimpleTableSegment each : tableSegments) {
@@ -88,8 +102,8 @@ public final class SingleTableSQLRouter implements SQLRouter<SingleTableRule> {
return result;
}
- private void validateSameDataSource(final SQLStatementContext<?> sqlStatementContext, final SingleTableRule rule,
- final RouteContext routeContext, final ConfigurationProperties props, final Collection<QualifiedTable> singleTableNames) {
+ private static void validateSameDataSource(final SQLStatementContext<?> sqlStatementContext, final SingleTableRule rule,
+ final ConfigurationProperties props, final Collection<QualifiedTable> singleTableNames, final RouteContext routeContext) {
boolean sqlFederationEnabled = props.getValue(ConfigurationPropertyKey.SQL_FEDERATION_ENABLED);
boolean allTablesInSameDataSource = sqlFederationEnabled
? sqlStatementContext instanceof SelectStatementContext || rule.isSingleTablesInSameDataSource(singleTableNames)
@@ -97,12 +111,6 @@ public final class SingleTableSQLRouter implements SQLRouter<SingleTableRule> {
Preconditions.checkState(allTablesInSameDataSource, "All tables must be in the same datasource.");
}
- @Override
- public void decorateRouteContext(final RouteContext routeContext, final LogicSQL logicSQL, final ShardingSphereMetaData metaData,
- final SingleTableRule rule, final ConfigurationProperties props) {
- route(logicSQL.getSqlStatementContext(), metaData, rule, props, routeContext);
- }
-
@Override
public int getOrder() {
return SingleTableOrder.ORDER;
diff --git a/shardingsphere-kernel/shardingsphere-single-table/shardingsphere-single-table-core/src/main/java/org/apache/shardingsphere/singletable/route/engine/SingleTableDatabaseBroadcastRouteEngine.java b/shardingsphere-kernel/shardingsphere-single-table/shardingsphere-single-table-core/src/main/java/org/apache/shardingsphere/singletable/route/engine/SingleTableDatabaseBroadcastRouteEngine.java
new file mode 100644
index 00000000000..2f09f22bfc3
--- /dev/null
+++ b/shardingsphere-kernel/shardingsphere-single-table/shardingsphere-single-table-core/src/main/java/org/apache/shardingsphere/singletable/route/engine/SingleTableDatabaseBroadcastRouteEngine.java
@@ -0,0 +1,38 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ */
+
+package org.apache.shardingsphere.singletable.route.engine;
+
+import org.apache.shardingsphere.infra.route.context.RouteContext;
+import org.apache.shardingsphere.infra.route.context.RouteMapper;
+import org.apache.shardingsphere.infra.route.context.RouteUnit;
+import org.apache.shardingsphere.singletable.rule.SingleTableRule;
+
+import java.util.Collections;
+
+/**
+ * Single table databases broadcast route engine.
+ */
+public final class SingleTableDatabaseBroadcastRouteEngine implements SingleTableRouteEngine {
+
+ @Override
+ public void route(final RouteContext routeContext, final SingleTableRule singleTableRule) {
+ for (String each : singleTableRule.getDataSourceNames()) {
+ routeContext.getRouteUnits().add(new RouteUnit(new RouteMapper(each, each), Collections.emptyList()));
+ }
+ }
+}
diff --git a/shardingsphere-kernel/shardingsphere-single-table/shardingsphere-single-table-core/src/main/java/org/apache/shardingsphere/singletable/route/engine/SingleTableRouteEngine.java b/shardingsphere-kernel/shardingsphere-single-table/shardingsphere-single-table-core/src/main/java/org/apache/shardingsphere/singletable/route/engine/SingleTableRouteEngine.java
new file mode 100644
index 00000000000..e9293cd9379
--- /dev/null
+++ b/shardingsphere-kernel/shardingsphere-single-table/shardingsphere-single-table-core/src/main/java/org/apache/shardingsphere/singletable/route/engine/SingleTableRouteEngine.java
@@ -0,0 +1,35 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ */
+
+package org.apache.shardingsphere.singletable.route.engine;
+
+import org.apache.shardingsphere.infra.route.context.RouteContext;
+import org.apache.shardingsphere.singletable.rule.SingleTableRule;
+
+/**
+ * Single table route engine.
+ */
+public interface SingleTableRouteEngine {
+
+ /**
+ * Route.
+ *
+ * @param routeContext route context
+ * @param singleTableRule single table rule
+ */
+ void route(RouteContext routeContext, SingleTableRule singleTableRule);
+}
diff --git a/shardingsphere-kernel/shardingsphere-single-table/shardingsphere-single-table-core/src/main/java/org/apache/shardingsphere/singletable/route/engine/SingleTableRouteEngineFactory.java b/shardingsphere-kernel/shardingsphere-single-table/shardingsphere-single-table-core/src/main/java/org/apache/shardingsphere/singletable/route/engine/SingleTableRouteEngineFactory.java
new file mode 100644
index 00000000000..6b9b6342c76
--- /dev/null
+++ b/shardingsphere-kernel/shardingsphere-single-table/shardingsphere-single-table-core/src/main/java/org/apache/shardingsphere/singletable/route/engine/SingleTableRouteEngineFactory.java
@@ -0,0 +1,57 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ */
+
+package org.apache.shardingsphere.singletable.route.engine;
+
+import lombok.AccessLevel;
+import lombok.NoArgsConstructor;
+import org.apache.shardingsphere.infra.metadata.schema.QualifiedTable;
+import org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
+import org.apache.shardingsphere.sql.parser.sql.common.statement.ddl.AlterSchemaStatement;
+import org.apache.shardingsphere.sql.parser.sql.common.statement.ddl.CreateSchemaStatement;
+import org.apache.shardingsphere.sql.parser.sql.common.statement.ddl.DropSchemaStatement;
+
+import java.util.Collection;
+import java.util.Optional;
+
+/**
+ * Single table route engine factory.
+ */
+@NoArgsConstructor(access = AccessLevel.PRIVATE)
+public final class SingleTableRouteEngineFactory {
+
+ /**
+ * Create new instance of single table route engine.
+ *
+ * @param singleTableNames single table names
+ * @param sqlStatement sql statement
+ * @return new instance of single table route engine
+ */
+ public static Optional<SingleTableRouteEngine> newInstance(final Collection<QualifiedTable> singleTableNames, final SQLStatement sqlStatement) {
+ // TODO Consider to add route logic for more statements
+ if (!singleTableNames.isEmpty()) {
+ return Optional.of(new SingleTableStandardRouteEngine(singleTableNames, sqlStatement));
+ } else if (isSchemaDDLStatement(sqlStatement)) {
+ return Optional.of(new SingleTableDatabaseBroadcastRouteEngine());
+ }
+ return Optional.empty();
+ }
+
+ private static boolean isSchemaDDLStatement(final SQLStatement sqlStatement) {
+ return sqlStatement instanceof CreateSchemaStatement || sqlStatement instanceof AlterSchemaStatement || sqlStatement instanceof DropSchemaStatement;
+ }
+}
diff --git a/shardingsphere-kernel/shardingsphere-single-table/shardingsphere-single-table-core/src/main/java/org/apache/shardingsphere/singletable/route/SingleTableRouteEngine.java b/shardingsphere-kernel/shardingsphere-single-table/shardingsphere-single-table-core/src/main/java/org/apache/shardingsphere/singletable/route/engine/SingleTableStandardRouteEngine.java
similarity index 93%
rename from shardingsphere-kernel/shardingsphere-single-table/shardingsphere-single-table-core/src/main/java/org/apache/shardingsphere/singletable/route/SingleTableRouteEngine.java
rename to shardingsphere-kernel/shardingsphere-single-table/shardingsphere-single-table-core/src/main/java/org/apache/shardingsphere/singletable/route/engine/SingleTableStandardRouteEngine.java
index c9f2d77f1aa..c3afbc5cdfb 100644
--- a/shardingsphere-kernel/shardingsphere-single-table/shardingsphere-single-table-core/src/main/java/org/apache/shardingsphere/singletable/route/SingleTableRouteEngine.java
+++ b/shardingsphere-kernel/shardingsphere-single-table/shardingsphere-single-table-core/src/main/java/org/apache/shardingsphere/singletable/route/engine/SingleTableStandardRouteEngine.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.singletable.route;
+package org.apache.shardingsphere.singletable.route.engine;
import lombok.RequiredArgsConstructor;
import org.apache.shardingsphere.infra.datanode.DataNode;
@@ -42,10 +42,10 @@ import java.util.function.Function;
import java.util.stream.Collectors;
/**
- * Single table route engine.
+ * Single table standard route engine.
*/
@RequiredArgsConstructor
-public final class SingleTableRouteEngine {
+public final class SingleTableStandardRouteEngine implements SingleTableRouteEngine {
private final Collection<QualifiedTable> singleTableNames;
@@ -80,7 +80,7 @@ public final class SingleTableRouteEngine {
}
private void route0(final RouteContext routeContext, final SingleTableRule rule) {
- if (isDDLTableStatement() || rule.isAllTablesInSameDataSource(routeContext, singleTableNames)) {
+ if (isTableDDLStatement() || rule.isAllTablesInSameDataSource(routeContext, singleTableNames)) {
Collection<QualifiedTable> existSingleTables = rule.getSingleTableNames(singleTableNames);
if (!existSingleTables.isEmpty()) {
fillRouteContext(rule, routeContext, existSingleTables);
@@ -89,12 +89,12 @@ public final class SingleTableRouteEngine {
routeContext.getRouteUnits().add(routeUnit);
}
} else {
- decorateRouteContextForFederate(routeContext);
+ decorateFederationRouteContext(routeContext);
fillRouteContext(rule, routeContext, singleTableNames);
}
}
- private void decorateRouteContextForFederate(final RouteContext routeContext) {
+ private void decorateFederationRouteContext(final RouteContext routeContext) {
RouteContext newRouteContext = new RouteContext();
for (RouteUnit each : routeContext.getRouteUnits()) {
newRouteContext.putRouteUnit(each.getDataSourceMapper(), each.getTableMappers());
@@ -106,7 +106,7 @@ public final class SingleTableRouteEngine {
routeContext.getOriginalDataNodes().addAll(newRouteContext.getOriginalDataNodes());
}
- private boolean isDDLTableStatement() {
+ private boolean isTableDDLStatement() {
return sqlStatement instanceof CreateTableStatement || sqlStatement instanceof AlterTableStatement || sqlStatement instanceof DropTableStatement;
}
diff --git a/shardingsphere-kernel/shardingsphere-single-table/shardingsphere-single-table-core/src/test/java/org/apache/shardingsphere/singletable/route/SingleTableRouteEngineTest.java b/shardingsphere-kernel/shardingsphere-single-table/shardingsphere-single-table-core/src/test/java/org/apache/shardingsphere/singletable/route/engine/SingleTableStandardRouteEngineTest.java
similarity index 92%
rename from shardingsphere-kernel/shardingsphere-single-table/shardingsphere-single-table-core/src/test/java/org/apache/shardingsphere/singletable/route/SingleTableRouteEngineTest.java
rename to shardingsphere-kernel/shardingsphere-single-table/shardingsphere-single-table-core/src/test/java/org/apache/shardingsphere/singletable/route/engine/SingleTableStandardRouteEngineTest.java
index 8a922004916..4845f454400 100644
--- a/shardingsphere-kernel/shardingsphere-single-table/shardingsphere-single-table-core/src/test/java/org/apache/shardingsphere/singletable/route/SingleTableRouteEngineTest.java
+++ b/shardingsphere-kernel/shardingsphere-single-table/shardingsphere-single-table-core/src/test/java/org/apache/shardingsphere/singletable/route/engine/SingleTableStandardRouteEngineTest.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.singletable.route;
+package org.apache.shardingsphere.singletable.route.engine;
import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
import org.apache.shardingsphere.infra.database.DefaultSchema;
@@ -48,11 +48,11 @@ import static org.junit.Assert.assertTrue;
import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
import static org.mockito.Mockito.mock;
-public final class SingleTableRouteEngineTest {
+public final class SingleTableStandardRouteEngineTest {
@Test
public void assertRouteInSameDataSource() {
- SingleTableRouteEngine singleTableRouteEngine = new SingleTableRouteEngine(mockQualifiedTables(), null);
+ SingleTableStandardRouteEngine singleTableRouteEngine = new SingleTableStandardRouteEngine(mockQualifiedTables(), null);
SingleTableRule singleTableRule = new SingleTableRule(new SingleTableRuleConfiguration(), DefaultSchema.LOGIC_NAME, mock(DatabaseType.class),
createDataSourceMap(), Collections.emptyList(), new ConfigurationProperties(new Properties()));
singleTableRule.getSingleTableDataNodes().put("t_order", Collections.singletonList(mockDataNode("ds_0", "t_order")));
@@ -85,7 +85,7 @@ public final class SingleTableRouteEngineTest {
@Test
public void assertRouteInDifferentDataSource() {
- SingleTableRouteEngine singleTableRouteEngine = new SingleTableRouteEngine(mockQualifiedTables(), null);
+ SingleTableStandardRouteEngine singleTableRouteEngine = new SingleTableStandardRouteEngine(mockQualifiedTables(), null);
SingleTableRule singleTableRule = new SingleTableRule(new SingleTableRuleConfiguration(), DefaultSchema.LOGIC_NAME, mock(DatabaseType.class),
createDataSourceMap(), Collections.emptyList(), new ConfigurationProperties(new Properties()));
singleTableRule.getSingleTableDataNodes().put("t_order", Collections.singletonList(mockDataNode("ds_0", "t_order")));
@@ -109,7 +109,7 @@ public final class SingleTableRouteEngineTest {
@Test
public void assertRouteWithoutSingleTableRule() {
- SingleTableRouteEngine singleTableRouteEngine = new SingleTableRouteEngine(mockQualifiedTables(), new MySQLCreateTableStatement());
+ SingleTableStandardRouteEngine singleTableRouteEngine = new SingleTableStandardRouteEngine(mockQualifiedTables(), new MySQLCreateTableStatement());
SingleTableRule singleTableRule = new SingleTableRule(new SingleTableRuleConfiguration(), DefaultSchema.LOGIC_NAME, mock(DatabaseType.class),
createDataSourceMap(), Collections.emptyList(), new ConfigurationProperties(new Properties()));
RouteContext routeContext = new RouteContext();
@@ -125,7 +125,7 @@ public final class SingleTableRouteEngineTest {
@Test
public void assertRouteWithDefaultSingleTableRule() {
- SingleTableRouteEngine singleTableRouteEngine = new SingleTableRouteEngine(mockQualifiedTables(), new MySQLCreateTableStatement());
+ SingleTableStandardRouteEngine singleTableRouteEngine = new SingleTableStandardRouteEngine(mockQualifiedTables(), new MySQLCreateTableStatement());
SingleTableRule singleTableRule = new SingleTableRule(new SingleTableRuleConfiguration("ds_0"), DefaultSchema.LOGIC_NAME, mock(DatabaseType.class),
createDataSourceMap(), Collections.emptyList(), new ConfigurationProperties(new Properties()));
RouteContext routeContext = new RouteContext();