diff --git a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/AbstractSQLRULBackendHandler.java b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/AbstractSQLRULBackendHandler.java deleted file mode 100644 index 676a175ddf815..0000000000000 --- a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/AbstractSQLRULBackendHandler.java +++ /dev/null @@ -1,83 +0,0 @@ -/* - * 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.proxy.backend.handler.distsql.rul; - -import org.apache.shardingsphere.distsql.parser.statement.rul.RULStatement; -import org.apache.shardingsphere.infra.merge.result.MergedResult; -import org.apache.shardingsphere.infra.merge.result.impl.local.LocalDataMergedResult; -import org.apache.shardingsphere.infra.merge.result.impl.local.LocalDataQueryResultRow; -import org.apache.shardingsphere.mode.manager.ContextManager; -import org.apache.shardingsphere.proxy.backend.context.ProxyContext; -import org.apache.shardingsphere.proxy.backend.response.data.QueryResponseCell; -import org.apache.shardingsphere.proxy.backend.response.data.QueryResponseRow; -import org.apache.shardingsphere.proxy.backend.response.header.ResponseHeader; -import org.apache.shardingsphere.proxy.backend.response.header.query.QueryHeader; -import org.apache.shardingsphere.proxy.backend.response.header.query.QueryResponseHeader; - -import java.sql.SQLException; -import java.sql.Types; -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; -import java.util.stream.Collectors; - -/** - * SQL RUL backend handler. - * TODO Remove this class when #25868 is done - * - * @param type of RUL statement - */ -public abstract class AbstractSQLRULBackendHandler extends RULBackendHandler { - - private List queryHeaders; - - private MergedResult mergedResult; - - @Override - public final ResponseHeader execute() throws SQLException { - queryHeaders = createQueryHeader(); - mergedResult = createMergedResult(); - return new QueryResponseHeader(queryHeaders); - } - - private List createQueryHeader() { - return getColumnNames().stream().map(each -> new QueryHeader("", "", each, each, Types.CHAR, "CHAR", 255, 0, false, false, false, false)).collect(Collectors.toList()); - } - - private MergedResult createMergedResult() throws SQLException { - return new LocalDataMergedResult(getRows(ProxyContext.getInstance().getContextManager())); - } - - @Override - public final boolean next() throws SQLException { - return null != mergedResult && mergedResult.next(); - } - - @Override - public final QueryResponseRow getRowData() throws SQLException { - List cells = new ArrayList<>(queryHeaders.size()); - for (int i = 0; i < queryHeaders.size(); i++) { - cells.add(new QueryResponseCell(queryHeaders.get(i).getColumnType(), mergedResult.getValue(i + 1, Object.class))); - } - return new QueryResponseRow(cells); - } - - protected abstract Collection getColumnNames(); - - protected abstract Collection getRows(ContextManager contextManager) throws SQLException; -} diff --git a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/RULBackendHandlerFactory.java b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/RULBackendHandlerFactory.java index 6558e3f378c86..8dcd621d60f28 100644 --- a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/RULBackendHandlerFactory.java +++ b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/RULBackendHandlerFactory.java @@ -19,31 +19,16 @@ import lombok.AccessLevel; import lombok.NoArgsConstructor; -import org.apache.shardingsphere.distsql.handler.rul.RULExecutor; import org.apache.shardingsphere.distsql.parser.statement.rul.RULStatement; -import org.apache.shardingsphere.distsql.parser.statement.rul.sql.PreviewStatement; -import org.apache.shardingsphere.infra.util.exception.ShardingSpherePreconditions; -import org.apache.shardingsphere.infra.util.exception.external.sql.type.generic.UnsupportedSQLOperationException; -import org.apache.shardingsphere.infra.util.spi.type.typed.TypedSPILoader; import org.apache.shardingsphere.proxy.backend.handler.ProxyBackendHandler; -import org.apache.shardingsphere.proxy.backend.handler.distsql.rul.sql.PreviewHandler; import org.apache.shardingsphere.proxy.backend.session.ConnectionSession; -import java.util.HashMap; -import java.util.Map; - /** * RUL backend handler factory. */ @NoArgsConstructor(access = AccessLevel.PRIVATE) public final class RULBackendHandlerFactory { - private static final Map, Class>> HANDLERS = new HashMap<>(); - - static { - HANDLERS.put(PreviewStatement.class, PreviewHandler.class); - } - /** * Create new instance of RUL backend handler. * @@ -52,26 +37,7 @@ public final class RULBackendHandlerFactory { * @return created instance */ public static ProxyBackendHandler newInstance(final RULStatement sqlStatement, final ConnectionSession connectionSession) { - if (TypedSPILoader.contains(RULExecutor.class, sqlStatement.getClass().getName())) { - RULBackendHandler result = new SQLRULBackendHandler<>(); - result.init(sqlStatement, connectionSession); - return result; - } - return createRULBackendHandler(sqlStatement, connectionSession); - } - - private static RULBackendHandler newInstance(final Class> clazz) { - try { - return clazz.getDeclaredConstructor().newInstance(); - } catch (final ReflectiveOperationException ignored) { - throw new UnsupportedSQLOperationException(String.format("Can not find public constructor for class `%s`", clazz.getName())); - } - } - - private static RULBackendHandler createRULBackendHandler(final RULStatement sqlStatement, final ConnectionSession connectionSession) { - Class> clazz = HANDLERS.get(sqlStatement.getClass()); - ShardingSpherePreconditions.checkState(null != clazz, () -> new UnsupportedSQLOperationException(String.format("Unsupported SQL statement : %s", sqlStatement.getClass().getName()))); - RULBackendHandler result = newInstance(clazz); + RULBackendHandler result = new SQLRULBackendHandler<>(); result.init(sqlStatement, connectionSession); return result; } diff --git a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/SQLRULBackendHandler.java b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/SQLRULBackendHandler.java index 9d463c7dfcb2f..f2ed8842571b1 100644 --- a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/SQLRULBackendHandler.java +++ b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/SQLRULBackendHandler.java @@ -49,7 +49,7 @@ public final class SQLRULBackendHandler extends RULBacke private MergedResult mergedResult; @Override - public ResponseHeader execute() { + public ResponseHeader execute() throws SQLException { RULExecutor executor = TypedSPILoader.getService(RULExecutor.class, getSqlStatement().getClass().getName()); queryHeaders = createQueryHeader(executor); mergedResult = createMergedResult(executor); @@ -60,7 +60,7 @@ private List createQueryHeader(final RULExecutor executor) { return executor.getColumnNames().stream().map(each -> new QueryHeader("", "", each, each, Types.CHAR, "CHAR", 255, 0, false, false, false, false)).collect(Collectors.toList()); } - private MergedResult createMergedResult(final RULExecutor executor) { + private MergedResult createMergedResult(final RULExecutor executor) throws SQLException { if (executor instanceof ConnectionSessionRequiredRULExecutor) { ShardingSphereMetaData metaData = ProxyContext.getInstance().getContextManager().getMetaDataContexts().getMetaData(); return new LocalDataMergedResult(((ConnectionSessionRequiredRULExecutor) executor).getRows(metaData, getConnectionSession(), getSqlStatement())); diff --git a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/executor/ConnectionSessionRequiredRULExecutor.java b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/executor/ConnectionSessionRequiredRULExecutor.java index 39037dc5ab633..5436b0f015513 100644 --- a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/executor/ConnectionSessionRequiredRULExecutor.java +++ b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/executor/ConnectionSessionRequiredRULExecutor.java @@ -23,6 +23,7 @@ import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData; import org.apache.shardingsphere.proxy.backend.session.ConnectionSession; +import java.sql.SQLException; import java.util.Collection; /** @@ -39,6 +40,7 @@ public interface ConnectionSessionRequiredRULExecutor ex * @param connectionSession connectionSession connection session * @param sqlStatement SQL statement * @return query result rows + * @throws SQLException SQL exception */ - Collection getRows(ShardingSphereMetaData metaData, ConnectionSession connectionSession, T sqlStatement); + Collection getRows(ShardingSphereMetaData metaData, ConnectionSession connectionSession, T sqlStatement) throws SQLException; } diff --git a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/sql/PreviewHandler.java b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/sql/PreviewExecutor.java similarity index 76% rename from proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/sql/PreviewHandler.java rename to proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/sql/PreviewExecutor.java index 83502bd909657..26b50950878bc 100644 --- a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/sql/PreviewHandler.java +++ b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/sql/PreviewExecutor.java @@ -45,18 +45,19 @@ import org.apache.shardingsphere.infra.executor.sql.prepare.driver.jdbc.JDBCDriverType; import org.apache.shardingsphere.infra.executor.sql.prepare.driver.jdbc.StatementOption; import org.apache.shardingsphere.infra.merge.result.impl.local.LocalDataQueryResultRow; +import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData; import org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase; import org.apache.shardingsphere.infra.metadata.database.rule.ShardingSphereRuleMetaData; import org.apache.shardingsphere.infra.session.query.QueryContext; import org.apache.shardingsphere.infra.util.exception.ShardingSpherePreconditions; -import org.apache.shardingsphere.mode.manager.ContextManager; import org.apache.shardingsphere.mode.metadata.MetaDataContexts; import org.apache.shardingsphere.parser.rule.SQLParserRule; import org.apache.shardingsphere.proxy.backend.connector.jdbc.statement.JDBCBackendStatement; import org.apache.shardingsphere.proxy.backend.context.BackendExecutorContext; import org.apache.shardingsphere.proxy.backend.context.ProxyContext; import org.apache.shardingsphere.proxy.backend.exception.RuleNotExistedException; -import org.apache.shardingsphere.proxy.backend.handler.distsql.rul.AbstractSQLRULBackendHandler; +import org.apache.shardingsphere.proxy.backend.handler.distsql.rul.executor.ConnectionSessionRequiredRULExecutor; +import org.apache.shardingsphere.proxy.backend.session.ConnectionSession; import org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement; import org.apache.shardingsphere.sql.parser.sql.dialect.statement.mysql.dml.MySQLInsertStatement; import org.apache.shardingsphere.sqlfederation.rule.SQLFederationRule; @@ -74,77 +75,73 @@ import java.util.stream.Collectors; /** - * Preview handler. + * Preview executor. */ -public final class PreviewHandler extends AbstractSQLRULBackendHandler { - - private static final String DATA_SOURCE_NAME = "data_source_name"; - - private static final String ACTUAL_SQL = "actual_sql"; +public final class PreviewExecutor implements ConnectionSessionRequiredRULExecutor { private final KernelProcessor kernelProcessor = new KernelProcessor(); @Override - protected Collection getColumnNames() { - return Arrays.asList(DATA_SOURCE_NAME, ACTUAL_SQL); + public Collection getColumnNames() { + return Arrays.asList("data_source_name", "actual_sql"); } @Override - protected Collection getRows(final ContextManager contextManager) throws SQLException { + public Collection getRows(final ShardingSphereMetaData metaData, final ConnectionSession connectionSession, final PreviewStatement sqlStatement) throws SQLException { MetaDataContexts metaDataContexts = ProxyContext.getInstance().getContextManager().getMetaDataContexts(); - String databaseName = getDatabaseName(); + String databaseName = getDatabaseName(connectionSession); String databaseType = DatabaseTypeEngine.getTrunkDatabaseTypeName(metaDataContexts.getMetaData().getDatabase(databaseName).getProtocolType()); ShardingSphereRuleMetaData globalRuleMetaData = metaDataContexts.getMetaData().getGlobalRuleMetaData(); SQLParserRule sqlParserRule = globalRuleMetaData.getSingleRule(SQLParserRule.class); - SQLStatement previewedStatement = sqlParserRule.getSQLParserEngine(databaseType).parse(getSqlStatement().getSql(), false); + SQLStatement previewedStatement = sqlParserRule.getSQLParserEngine(databaseType).parse(sqlStatement.getSql(), false); SQLStatementContext sqlStatementContext = SQLStatementContextFactory.newInstance(metaDataContexts.getMetaData(), previewedStatement, databaseName); - QueryContext queryContext = new QueryContext(sqlStatementContext, getSqlStatement().getSql(), Collections.emptyList()); - getConnectionSession().setQueryContext(queryContext); + QueryContext queryContext = new QueryContext(sqlStatementContext, sqlStatement.getSql(), Collections.emptyList()); + connectionSession.setQueryContext(queryContext); if (sqlStatementContext instanceof CursorAvailable && sqlStatementContext instanceof CursorDefinitionAware) { - setUpCursorDefinition(sqlStatementContext); + setUpCursorDefinition(sqlStatementContext, connectionSession); } - ShardingSphereDatabase database = ProxyContext.getInstance().getDatabase(getConnectionSession().getDatabaseName()); - ShardingSpherePreconditions.checkState(database.isComplete(), () -> new RuleNotExistedException(getConnectionSession().getDatabaseName())); + ShardingSphereDatabase database = ProxyContext.getInstance().getDatabase(connectionSession.getDatabaseName()); + ShardingSpherePreconditions.checkState(database.isComplete(), () -> new RuleNotExistedException(connectionSession.getDatabaseName())); ConfigurationProperties props = metaDataContexts.getMetaData().getProps(); - Collection executionUnits = isUseFederation(queryContext, database, metaDataContexts, props) - ? getFederationExecutionUnits(queryContext, databaseName, metaDataContexts) - : kernelProcessor.generateExecutionContext(queryContext, database, globalRuleMetaData, props, getConnectionSession().getConnectionContext()).getExecutionUnits(); + Collection executionUnits = isUseFederation(queryContext, database, metaDataContexts, props, connectionSession) + ? getFederationExecutionUnits(queryContext, databaseName, metaDataContexts, connectionSession) + : kernelProcessor.generateExecutionContext(queryContext, database, globalRuleMetaData, props, connectionSession.getConnectionContext()).getExecutionUnits(); return executionUnits.stream().map(this::buildRow).collect(Collectors.toList()); } - private void setUpCursorDefinition(final SQLStatementContext sqlStatementContext) { + private void setUpCursorDefinition(final SQLStatementContext sqlStatementContext, final ConnectionSession connectionSession) { if (!((CursorAvailable) sqlStatementContext).getCursorName().isPresent()) { return; } String cursorName = ((CursorAvailable) sqlStatementContext).getCursorName().get().getIdentifier().getValue().toLowerCase(); - CursorStatementContext cursorStatementContext = (CursorStatementContext) getConnectionSession().getConnectionContext().getCursorContext().getCursorDefinitions().get(cursorName); + CursorStatementContext cursorStatementContext = (CursorStatementContext) connectionSession.getConnectionContext().getCursorContext().getCursorDefinitions().get(cursorName); Preconditions.checkArgument(null != cursorStatementContext, "Cursor %s does not exist.", cursorName); ((CursorDefinitionAware) sqlStatementContext).setUpCursorDefinition(cursorStatementContext); } - private boolean isUseFederation(final QueryContext queryContext, final ShardingSphereDatabase database, final MetaDataContexts metaDataContexts, final ConfigurationProperties props) { + private boolean isUseFederation(final QueryContext queryContext, final ShardingSphereDatabase database, final MetaDataContexts metaDataContexts, final ConfigurationProperties props, + final ConnectionSession connectionSession) { SQLFederationDecideEngine engine = new SQLFederationDecideEngine(database.getRuleMetaData().getRules(), props); return engine.decide(queryContext.getSqlStatementContext(), queryContext.getParameters(), - metaDataContexts.getMetaData().getDatabase(getConnectionSession().getDatabaseName()), metaDataContexts.getMetaData().getGlobalRuleMetaData()); + metaDataContexts.getMetaData().getDatabase(connectionSession.getDatabaseName()), metaDataContexts.getMetaData().getGlobalRuleMetaData()); } private LocalDataQueryResultRow buildRow(final ExecutionUnit unit) { return new LocalDataQueryResultRow(unit.getDataSourceName(), unit.getSqlUnit().getSql()); } - private Collection getFederationExecutionUnits(final QueryContext queryContext, final String databaseName, final MetaDataContexts metaDataContexts) throws SQLException { + private Collection getFederationExecutionUnits(final QueryContext queryContext, final String databaseName, final MetaDataContexts metaDataContexts, + final ConnectionSession connectionSession) throws SQLException { SQLStatement sqlStatement = queryContext.getSqlStatementContext().getSqlStatement(); boolean isReturnGeneratedKeys = sqlStatement instanceof MySQLInsertStatement; - DriverExecutionPrepareEngine prepareEngine = createDriverExecutionPrepareEngine(isReturnGeneratedKeys, metaDataContexts); + DriverExecutionPrepareEngine prepareEngine = createDriverExecutionPrepareEngine(isReturnGeneratedKeys, metaDataContexts, connectionSession); SQLFederationExecutorContext context = new SQLFederationExecutorContext(true, queryContext, metaDataContexts.getMetaData()); - ShardingSphereDatabase database = metaDataContexts.getMetaData().getDatabase(getDatabaseName()); + ShardingSphereDatabase database = metaDataContexts.getMetaData().getDatabase(getDatabaseName(connectionSession)); String schemaName = queryContext.getSqlStatementContext().getTablesContext().getSchemaName().orElseGet(() -> DatabaseTypeEngine.getDefaultSchemaName(database.getProtocolType(), databaseName)); SQLFederationRule sqlFederationRule = metaDataContexts.getMetaData().getGlobalRuleMetaData().getSingleRule(SQLFederationRule.class); - SQLFederationExecutor sqlFederationExecutor = sqlFederationRule.getSQLFederationExecutor(databaseName, schemaName, - metaDataContexts.getMetaData(), metaDataContexts.getShardingSphereData(), - new JDBCExecutor(BackendExecutorContext.getInstance().getExecutorEngine(), getConnectionSession().getConnectionContext())); - sqlFederationExecutor.executeQuery(prepareEngine, createPreviewFederationCallback(database.getProtocolType(), database.getResourceMetaData().getStorageTypes(), sqlStatement), - context); + SQLFederationExecutor sqlFederationExecutor = sqlFederationRule.getSQLFederationExecutor(databaseName, schemaName, metaDataContexts.getMetaData(), metaDataContexts.getShardingSphereData(), + new JDBCExecutor(BackendExecutorContext.getInstance().getExecutorEngine(), connectionSession.getConnectionContext())); + sqlFederationExecutor.executeQuery(prepareEngine, createPreviewFederationCallback(database.getProtocolType(), database.getResourceMetaData().getStorageTypes(), sqlStatement), context); return context.getExecutionUnits(); } @@ -163,18 +160,24 @@ protected Optional getSaneResult(final SQLStatement sqlStatement, }; } - private DriverExecutionPrepareEngine createDriverExecutionPrepareEngine(final boolean isReturnGeneratedKeys, final MetaDataContexts metaDataContexts) { + private DriverExecutionPrepareEngine createDriverExecutionPrepareEngine(final boolean isReturnGeneratedKeys, final MetaDataContexts metaDataContexts, + final ConnectionSession connectionSession) { int maxConnectionsSizePerQuery = metaDataContexts.getMetaData().getProps().getValue(ConfigurationPropertyKey.MAX_CONNECTIONS_SIZE_PER_QUERY); - return new DriverExecutionPrepareEngine<>(JDBCDriverType.STATEMENT, maxConnectionsSizePerQuery, getConnectionSession().getDatabaseConnectionManager(), - (JDBCBackendStatement) getConnectionSession().getStatementManager(), new StatementOption(isReturnGeneratedKeys), - metaDataContexts.getMetaData().getDatabase(getDatabaseName()).getRuleMetaData().getRules(), - metaDataContexts.getMetaData().getDatabase(getDatabaseName()).getResourceMetaData().getStorageTypes()); + return new DriverExecutionPrepareEngine<>(JDBCDriverType.STATEMENT, maxConnectionsSizePerQuery, connectionSession.getDatabaseConnectionManager(), + (JDBCBackendStatement) connectionSession.getStatementManager(), new StatementOption(isReturnGeneratedKeys), + metaDataContexts.getMetaData().getDatabase(getDatabaseName(connectionSession)).getRuleMetaData().getRules(), + metaDataContexts.getMetaData().getDatabase(getDatabaseName(connectionSession)).getResourceMetaData().getStorageTypes()); } - private String getDatabaseName() { - String result = Strings.isNullOrEmpty(getConnectionSession().getDatabaseName()) ? getConnectionSession().getDefaultDatabaseName() : getConnectionSession().getDatabaseName(); + private String getDatabaseName(final ConnectionSession connectionSession) { + String result = Strings.isNullOrEmpty(connectionSession.getDatabaseName()) ? connectionSession.getDefaultDatabaseName() : connectionSession.getDatabaseName(); ShardingSpherePreconditions.checkState(!Strings.isNullOrEmpty(result), NoDatabaseSelectedException::new); ShardingSpherePreconditions.checkState(ProxyContext.getInstance().databaseExists(result), () -> new UnknownDatabaseException(result)); return result; } + + @Override + public String getType() { + return PreviewStatement.class.getName(); + } } diff --git a/proxy/backend/core/src/main/resources/META-INF/services/org.apache.shardingsphere.distsql.handler.rul.RULExecutor b/proxy/backend/core/src/main/resources/META-INF/services/org.apache.shardingsphere.distsql.handler.rul.RULExecutor index b2b6d23bb230a..94d41b0c7f8f0 100644 --- a/proxy/backend/core/src/main/resources/META-INF/services/org.apache.shardingsphere.distsql.handler.rul.RULExecutor +++ b/proxy/backend/core/src/main/resources/META-INF/services/org.apache.shardingsphere.distsql.handler.rul.RULExecutor @@ -17,3 +17,4 @@ org.apache.shardingsphere.proxy.backend.handler.distsql.rul.sql.FormatSQLExecutor org.apache.shardingsphere.proxy.backend.handler.distsql.rul.sql.ParseDistSQLExecutor +org.apache.shardingsphere.proxy.backend.handler.distsql.rul.sql.PreviewExecutor diff --git a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/ProxyBackendHandlerFactoryTest.java b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/ProxyBackendHandlerFactoryTest.java index 87e2bae59c435..fc4f42371ac59 100644 --- a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/ProxyBackendHandlerFactoryTest.java +++ b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/ProxyBackendHandlerFactoryTest.java @@ -39,7 +39,7 @@ import org.apache.shardingsphere.proxy.backend.handler.distsql.ral.QueryableRALBackendHandler; import org.apache.shardingsphere.proxy.backend.handler.distsql.ral.UpdatableRALBackendHandler; import org.apache.shardingsphere.proxy.backend.handler.distsql.rql.RQLBackendHandler; -import org.apache.shardingsphere.proxy.backend.handler.distsql.rul.sql.PreviewHandler; +import org.apache.shardingsphere.proxy.backend.handler.distsql.rul.SQLRULBackendHandler; import org.apache.shardingsphere.proxy.backend.handler.skip.SkipBackendHandler; import org.apache.shardingsphere.proxy.backend.handler.transaction.TransactionBackendHandler; import org.apache.shardingsphere.proxy.backend.session.ConnectionSession; @@ -249,6 +249,6 @@ void assertDistSQLRULStatementInTransaction() throws SQLException { when(connectionSession.getTransactionStatus().isInTransaction()).thenReturn(true); String sql = "PREVIEW INSERT INTO account VALUES(1, 1, 1)"; ProxyBackendHandler actual = ProxyBackendHandlerFactory.newInstance(databaseType, sql, connectionSession); - assertThat(actual, instanceOf(PreviewHandler.class)); + assertThat(actual, instanceOf(SQLRULBackendHandler.class)); } }