This is an automated email from the ASF dual-hosted git repository.

zhangliang 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 b249abc7cac Add MySQLShowAdminExecutorFactory (#36876)
b249abc7cac is described below

commit b249abc7cac1c89dee7929b424da29dcbee5803b
Author: Liang Zhang <[email protected]>
AuthorDate: Tue Oct 14 11:25:21 2025 +0800

    Add MySQLShowAdminExecutorFactory (#36876)
    
    * Refactor MySQLShowProcessListExecutor
    
    * Refactor MySQLShowProcessListExecutor and MySQLShowTablesExecutor
    
    * Add MySQLShowAdminExecutorFactory
---
 .../handler/admin/MySQLAdminExecutorCreator.java   | 35 +++------------
 .../executor/MySQLSetVariableAdminExecutor.java    | 12 ++---
 .../show/MySQLShowProcessListExecutor.java         | 52 ++++++++--------------
 .../executor/show/MySQLShowTablesExecutor.java     | 22 ++++-----
 .../MySQLShowAdminExecutorFactory.java}            | 47 ++++++-------------
 5 files changed, 51 insertions(+), 117 deletions(-)

diff --git 
a/proxy/backend/dialect/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/MySQLAdminExecutorCreator.java
 
b/proxy/backend/dialect/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/MySQLAdminExecutorCreator.java
index 508b0f4f3a3..f9d90dee190 100644
--- 
a/proxy/backend/dialect/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/MySQLAdminExecutorCreator.java
+++ 
b/proxy/backend/dialect/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/MySQLAdminExecutorCreator.java
@@ -23,24 +23,13 @@ import 
org.apache.shardingsphere.proxy.backend.handler.admin.executor.DatabaseAd
 import 
org.apache.shardingsphere.proxy.backend.handler.admin.executor.DatabaseAdminExecutorCreator;
 import 
org.apache.shardingsphere.proxy.backend.mysql.handler.admin.executor.MySQLKillProcessExecutor;
 import 
org.apache.shardingsphere.proxy.backend.mysql.handler.admin.executor.MySQLSetVariableAdminExecutor;
-import 
org.apache.shardingsphere.proxy.backend.mysql.handler.admin.executor.show.MySQLShowCreateDatabaseExecutor;
-import 
org.apache.shardingsphere.proxy.backend.mysql.handler.admin.executor.show.MySQLShowDatabasesExecutor;
-import 
org.apache.shardingsphere.proxy.backend.mysql.handler.admin.executor.show.MySQLShowFunctionStatusExecutor;
-import 
org.apache.shardingsphere.proxy.backend.mysql.handler.admin.executor.show.MySQLShowProcedureStatusExecutor;
-import 
org.apache.shardingsphere.proxy.backend.mysql.handler.admin.executor.show.MySQLShowProcessListExecutor;
-import 
org.apache.shardingsphere.proxy.backend.mysql.handler.admin.executor.show.MySQLShowTablesExecutor;
 import 
org.apache.shardingsphere.proxy.backend.mysql.handler.admin.executor.MySQLUseDatabaseExecutor;
 import 
org.apache.shardingsphere.proxy.backend.mysql.handler.admin.factory.MySQLSelectAdminExecutorFactory;
+import 
org.apache.shardingsphere.proxy.backend.mysql.handler.admin.factory.MySQLShowAdminExecutorFactory;
 import 
org.apache.shardingsphere.sql.parser.statement.core.statement.SQLStatement;
 import 
org.apache.shardingsphere.sql.parser.statement.core.statement.type.dal.SetStatement;
 import 
org.apache.shardingsphere.sql.parser.statement.mysql.dal.MySQLKillStatement;
 import 
org.apache.shardingsphere.sql.parser.statement.mysql.dal.MySQLUseStatement;
-import 
org.apache.shardingsphere.sql.parser.statement.mysql.dal.show.database.MySQLShowCreateDatabaseStatement;
-import 
org.apache.shardingsphere.sql.parser.statement.mysql.dal.show.database.MySQLShowDatabasesStatement;
-import 
org.apache.shardingsphere.sql.parser.statement.mysql.dal.show.function.MySQLShowFunctionStatusStatement;
-import 
org.apache.shardingsphere.sql.parser.statement.mysql.dal.show.procedure.MySQLShowProcedureStatusStatement;
-import 
org.apache.shardingsphere.sql.parser.statement.mysql.dal.show.process.MySQLShowProcessListStatement;
-import 
org.apache.shardingsphere.sql.parser.statement.mysql.dal.show.table.MySQLShowTablesStatement;
 
 import java.util.List;
 import java.util.Optional;
@@ -56,27 +45,13 @@ public final class MySQLAdminExecutorCreator implements 
DatabaseAdminExecutorCre
             return 
MySQLSelectAdminExecutorFactory.newInstance((SelectStatementContext) 
sqlStatementContext, sql, databaseName, parameters);
         }
         SQLStatement sqlStatement = sqlStatementContext.getSqlStatement();
+        Optional<DatabaseAdminExecutor> showExecutor = 
MySQLShowAdminExecutorFactory.newInstance(sqlStatement);
+        if (showExecutor.isPresent()) {
+            return showExecutor;
+        }
         if (sqlStatement instanceof MySQLUseStatement) {
             return Optional.of(new 
MySQLUseDatabaseExecutor((MySQLUseStatement) sqlStatement));
         }
-        if (sqlStatement instanceof MySQLShowDatabasesStatement) {
-            return Optional.of(new 
MySQLShowDatabasesExecutor((MySQLShowDatabasesStatement) sqlStatement));
-        }
-        if (sqlStatement instanceof MySQLShowTablesStatement) {
-            return Optional.of(new 
MySQLShowTablesExecutor((MySQLShowTablesStatement) sqlStatement));
-        }
-        if (sqlStatement instanceof MySQLShowCreateDatabaseStatement) {
-            return Optional.of(new 
MySQLShowCreateDatabaseExecutor((MySQLShowCreateDatabaseStatement) 
sqlStatement));
-        }
-        if (sqlStatement instanceof MySQLShowFunctionStatusStatement) {
-            return Optional.of(new 
MySQLShowFunctionStatusExecutor((MySQLShowFunctionStatusStatement) 
sqlStatement));
-        }
-        if (sqlStatement instanceof MySQLShowProcedureStatusStatement) {
-            return Optional.of(new 
MySQLShowProcedureStatusExecutor((MySQLShowProcedureStatusStatement) 
sqlStatement));
-        }
-        if (sqlStatement instanceof MySQLShowProcessListStatement) {
-            return Optional.of(new 
MySQLShowProcessListExecutor((MySQLShowProcessListStatement) sqlStatement));
-        }
         if (sqlStatement instanceof MySQLKillStatement) {
             return Optional.of(new 
MySQLKillProcessExecutor((MySQLKillStatement) sqlStatement));
         }
diff --git 
a/proxy/backend/dialect/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/MySQLSetVariableAdminExecutor.java
 
b/proxy/backend/dialect/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/MySQLSetVariableAdminExecutor.java
index aac1e6015fd..9f1c1db082f 100644
--- 
a/proxy/backend/dialect/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/MySQLSetVariableAdminExecutor.java
+++ 
b/proxy/backend/dialect/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/MySQLSetVariableAdminExecutor.java
@@ -50,20 +50,20 @@ import java.util.stream.Collectors;
 @RequiredArgsConstructor
 public final class MySQLSetVariableAdminExecutor implements 
DatabaseAdminExecutor {
     
-    private final SetStatement setStatement;
+    private final SetStatement sqlStatement;
     
     @Override
     public void execute(final ConnectionSession connectionSession, final 
ShardingSphereMetaData metaData) throws SQLException {
         Map<String, String> sessionVariables = extractSessionVariables();
         validateSessionVariables(sessionVariables.keySet());
-        CharsetSetExecutor charsetSetExecutor = new 
CharsetSetExecutor(setStatement.getDatabaseType(), connectionSession);
+        CharsetSetExecutor charsetSetExecutor = new 
CharsetSetExecutor(sqlStatement.getDatabaseType(), connectionSession);
         sessionVariables.forEach(charsetSetExecutor::set);
-        new SessionVariableRecordExecutor(setStatement.getDatabaseType(), 
connectionSession).recordVariable(sessionVariables);
+        new SessionVariableRecordExecutor(sqlStatement.getDatabaseType(), 
connectionSession).recordVariable(sessionVariables);
         executeSetGlobalVariablesIfPresent(connectionSession, metaData);
     }
     
     private Map<String, String> extractSessionVariables() {
-        return setStatement.getVariableAssigns().stream().filter(each -> 
!"global".equalsIgnoreCase(each.getVariable().getScope().orElse("")))
+        return sqlStatement.getVariableAssigns().stream().filter(each -> 
!"global".equalsIgnoreCase(each.getVariable().getScope().orElse("")))
                 .collect(Collectors.toMap(each -> 
each.getVariable().getVariable(), VariableAssignSegment::getAssignValue));
     }
     
@@ -85,7 +85,7 @@ public final class MySQLSetVariableAdminExecutor implements 
DatabaseAdminExecuto
         }
         String sql = "SET " + concatenatedGlobalVariables;
         SQLParserRule sqlParserRule = 
metaData.getGlobalRuleMetaData().getSingleRule(SQLParserRule.class);
-        SQLStatement sqlStatement = 
sqlParserRule.getSQLParserEngine(setStatement.getDatabaseType()).parse(sql, 
false);
+        SQLStatement sqlStatement = 
sqlParserRule.getSQLParserEngine(this.sqlStatement.getDatabaseType()).parse(sql,
 false);
         SQLStatementContext sqlStatementContext = new SQLBindEngine(metaData,
                 connectionSession.getCurrentDatabaseName(), new 
HintValueContext()).bind(sqlStatement);
         DatabaseProxyBackendHandler databaseProxyBackendHandler = 
DatabaseProxyConnectorFactory.newInstance(
@@ -99,7 +99,7 @@ public final class MySQLSetVariableAdminExecutor implements 
DatabaseAdminExecuto
     }
     
     private Map<String, String> extractGlobalVariables() {
-        return setStatement.getVariableAssigns().stream().filter(each -> 
"global".equalsIgnoreCase(each.getVariable().getScope().orElse("")))
+        return sqlStatement.getVariableAssigns().stream().filter(each -> 
"global".equalsIgnoreCase(each.getVariable().getScope().orElse("")))
                 .collect(Collectors.toMap(each -> 
each.getVariable().getVariable(), VariableAssignSegment::getAssignValue, 
(oldValue, newValue) -> newValue, LinkedHashMap::new));
     }
 }
diff --git 
a/proxy/backend/dialect/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/show/MySQLShowProcessListExecutor.java
 
b/proxy/backend/dialect/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/show/MySQLShowProcessListExecutor.java
index e23b77a423b..6eaf96ce447 100644
--- 
a/proxy/backend/dialect/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/show/MySQLShowProcessListExecutor.java
+++ 
b/proxy/backend/dialect/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/show/MySQLShowProcessListExecutor.java
@@ -19,15 +19,13 @@ package 
org.apache.shardingsphere.proxy.backend.mysql.handler.admin.executor.sho
 
 import lombok.Getter;
 import lombok.RequiredArgsConstructor;
-import 
org.apache.shardingsphere.infra.executor.sql.execute.result.query.QueryResult;
 import 
org.apache.shardingsphere.infra.executor.sql.execute.result.query.QueryResultMetaData;
 import 
org.apache.shardingsphere.infra.executor.sql.execute.result.query.impl.raw.metadata.RawQueryResultColumnMetaData;
 import 
org.apache.shardingsphere.infra.executor.sql.execute.result.query.impl.raw.metadata.RawQueryResultMetaData;
-import 
org.apache.shardingsphere.infra.executor.sql.execute.result.query.impl.raw.type.RawMemoryQueryResult;
-import 
org.apache.shardingsphere.infra.executor.sql.execute.result.query.type.memory.row.MemoryQueryResultDataRow;
 import org.apache.shardingsphere.infra.executor.sql.process.Process;
 import org.apache.shardingsphere.infra.merge.result.MergedResult;
-import 
org.apache.shardingsphere.infra.merge.result.impl.transparent.TransparentMergedResult;
+import 
org.apache.shardingsphere.infra.merge.result.impl.local.LocalDataMergedResult;
+import 
org.apache.shardingsphere.infra.merge.result.impl.local.LocalDataQueryResultRow;
 import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
 import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
 import 
org.apache.shardingsphere.proxy.backend.handler.admin.executor.DatabaseAdminQueryExecutor;
@@ -37,7 +35,6 @@ import 
org.apache.shardingsphere.sql.parser.statement.mysql.dal.show.process.MyS
 import java.sql.Types;
 import java.util.ArrayList;
 import java.util.Collection;
-import java.util.Collections;
 import java.util.List;
 import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
@@ -50,41 +47,16 @@ public final class MySQLShowProcessListExecutor implements 
DatabaseAdminQueryExe
     
     private final MySQLShowProcessListStatement sqlStatement;
     
-    @Getter
-    private QueryResultMetaData queryResultMetaData;
-    
     @Getter
     private MergedResult mergedResult;
     
     @Override
     public void execute(final ConnectionSession connectionSession, final 
ShardingSphereMetaData metaData) {
-        queryResultMetaData = createQueryResultMetaData();
-        mergedResult = new TransparentMergedResult(getQueryResult());
-    }
-    
-    private QueryResultMetaData createQueryResultMetaData() {
-        List<RawQueryResultColumnMetaData> columns = new ArrayList<>(8);
-        columns.add(new RawQueryResultColumnMetaData("", "Id", "Id", 
Types.VARCHAR, "VARCHAR", 20, 0));
-        columns.add(new RawQueryResultColumnMetaData("", "User", "User", 
Types.VARCHAR, "VARCHAR", 20, 0));
-        columns.add(new RawQueryResultColumnMetaData("", "Host", "Host", 
Types.VARCHAR, "VARCHAR", 64, 0));
-        columns.add(new RawQueryResultColumnMetaData("", "db", "db", 
Types.VARCHAR, "VARCHAR", 64, 0));
-        columns.add(new RawQueryResultColumnMetaData("", "Command", "Command", 
Types.VARCHAR, "VARCHAR", 64, 0));
-        columns.add(new RawQueryResultColumnMetaData("", "Time", "Time", 
Types.VARCHAR, "VARCHAR", 10, 0));
-        columns.add(new RawQueryResultColumnMetaData("", "State", "State", 
Types.VARCHAR, "VARCHAR", 64, 0));
-        columns.add(new RawQueryResultColumnMetaData("", "Info", "Info", 
Types.VARCHAR, "VARCHAR", 120, 0));
-        return new RawQueryResultMetaData(columns);
-    }
-    
-    private QueryResult getQueryResult() {
         Collection<Process> processes = 
ProxyContext.getInstance().getContextManager().getPersistServiceFacade().getModeFacade().getProcessService().getProcessList();
-        if (processes.isEmpty()) {
-            return new RawMemoryQueryResult(queryResultMetaData, 
Collections.emptyList());
-        }
-        List<MemoryQueryResultDataRow> rows = 
processes.stream().map(this::getMemoryQueryResultDataRow).collect(Collectors.toList());
-        return new RawMemoryQueryResult(queryResultMetaData, rows);
+        mergedResult = new 
LocalDataMergedResult(processes.stream().map(this::getQueryResultRow).collect(Collectors.toList()));
     }
     
-    private MemoryQueryResultDataRow getMemoryQueryResultDataRow(final Process 
process) {
+    private LocalDataQueryResultRow getQueryResultRow(final Process process) {
         List<Object> rowValues = new ArrayList<>(8);
         rowValues.add(process.getId());
         rowValues.add(process.getUsername());
@@ -105,6 +77,20 @@ public final class MySQLShowProcessListExecutor implements 
DatabaseAdminQueryExe
             sql = sql.substring(0, 100);
         }
         rowValues.add(null != sql ? sql : "");
-        return new MemoryQueryResultDataRow(rowValues);
+        return new LocalDataQueryResultRow(rowValues.toArray());
+    }
+    
+    @Override
+    public QueryResultMetaData getQueryResultMetaData() {
+        List<RawQueryResultColumnMetaData> columns = new ArrayList<>(8);
+        columns.add(new RawQueryResultColumnMetaData("", "Id", "Id", 
Types.VARCHAR, "VARCHAR", 20, 0));
+        columns.add(new RawQueryResultColumnMetaData("", "User", "User", 
Types.VARCHAR, "VARCHAR", 20, 0));
+        columns.add(new RawQueryResultColumnMetaData("", "Host", "Host", 
Types.VARCHAR, "VARCHAR", 64, 0));
+        columns.add(new RawQueryResultColumnMetaData("", "db", "db", 
Types.VARCHAR, "VARCHAR", 64, 0));
+        columns.add(new RawQueryResultColumnMetaData("", "Command", "Command", 
Types.VARCHAR, "VARCHAR", 64, 0));
+        columns.add(new RawQueryResultColumnMetaData("", "Time", "Time", 
Types.VARCHAR, "VARCHAR", 10, 0));
+        columns.add(new RawQueryResultColumnMetaData("", "State", "State", 
Types.VARCHAR, "VARCHAR", 64, 0));
+        columns.add(new RawQueryResultColumnMetaData("", "Info", "Info", 
Types.VARCHAR, "VARCHAR", 120, 0));
+        return new RawQueryResultMetaData(columns);
     }
 }
diff --git 
a/proxy/backend/dialect/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/show/MySQLShowTablesExecutor.java
 
b/proxy/backend/dialect/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/show/MySQLShowTablesExecutor.java
index 2a2aff3e825..4202199f664 100644
--- 
a/proxy/backend/dialect/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/show/MySQLShowTablesExecutor.java
+++ 
b/proxy/backend/dialect/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/show/MySQLShowTablesExecutor.java
@@ -22,14 +22,12 @@ import lombok.RequiredArgsConstructor;
 import 
org.apache.shardingsphere.database.connector.core.metadata.database.system.SystemDatabase;
 import 
org.apache.shardingsphere.database.exception.core.exception.syntax.database.UnknownDatabaseException;
 import org.apache.shardingsphere.infra.exception.ShardingSpherePreconditions;
-import 
org.apache.shardingsphere.infra.executor.sql.execute.result.query.QueryResult;
 import 
org.apache.shardingsphere.infra.executor.sql.execute.result.query.QueryResultMetaData;
 import 
org.apache.shardingsphere.infra.executor.sql.execute.result.query.impl.raw.metadata.RawQueryResultColumnMetaData;
 import 
org.apache.shardingsphere.infra.executor.sql.execute.result.query.impl.raw.metadata.RawQueryResultMetaData;
-import 
org.apache.shardingsphere.infra.executor.sql.execute.result.query.impl.raw.type.RawMemoryQueryResult;
-import 
org.apache.shardingsphere.infra.executor.sql.execute.result.query.type.memory.row.MemoryQueryResultDataRow;
 import org.apache.shardingsphere.infra.merge.result.MergedResult;
-import 
org.apache.shardingsphere.infra.merge.result.impl.transparent.TransparentMergedResult;
+import 
org.apache.shardingsphere.infra.merge.result.impl.local.LocalDataMergedResult;
+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.schema.model.ShardingSphereTable;
@@ -40,7 +38,6 @@ import 
org.apache.shardingsphere.sql.parser.statement.mysql.dal.show.table.MySQL
 
 import java.sql.Types;
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.Comparator;
@@ -67,7 +64,7 @@ public final class MySQLShowTablesExecutor implements 
DatabaseAdminQueryExecutor
     public void execute(final ConnectionSession connectionSession, final 
ShardingSphereMetaData metaData) {
         String databaseName = sqlStatement.getFromDatabase().map(optional -> 
optional.getDatabase().getIdentifier().getValue()).orElseGet(connectionSession::getUsedDatabaseName);
         queryResultMetaData = createQueryResultMetaData(databaseName);
-        mergedResult = new 
TransparentMergedResult(getQueryResult(databaseName, metaData));
+        mergedResult = new 
LocalDataMergedResult(getQueryResultRows(databaseName, metaData));
     }
     
     private QueryResultMetaData createQueryResultMetaData(final String 
databaseName) {
@@ -80,14 +77,13 @@ public final class MySQLShowTablesExecutor implements 
DatabaseAdminQueryExecutor
         return new RawQueryResultMetaData(columnNames);
     }
     
-    private QueryResult getQueryResult(final String databaseName, final 
ShardingSphereMetaData metaData) {
+    private Collection<LocalDataQueryResultRow> getQueryResultRows(final 
String databaseName, final ShardingSphereMetaData metaData) {
         SystemDatabase systemDatabase = new 
SystemDatabase(sqlStatement.getDatabaseType());
         
ShardingSpherePreconditions.checkState(metaData.containsDatabase(databaseName), 
() -> new UnknownDatabaseException(databaseName));
         ShardingSphereDatabase database = metaData.getDatabase(databaseName);
-        List<MemoryQueryResultDataRow> rows = 
systemDatabase.getSystemSchemas().contains(databaseName) || 
database.isComplete()
-                ? 
getTables(database).stream().map(this::getRow).collect(Collectors.toList())
+        return systemDatabase.getSystemSchemas().contains(databaseName) || 
database.isComplete()
+                ? 
getTables(database).stream().map(this::getQueryResultRow).collect(Collectors.toList())
                 : Collections.emptyList();
-        return new RawMemoryQueryResult(queryResultMetaData, rows);
     }
     
     private Collection<ShardingSphereTable> getTables(final 
ShardingSphereDatabase database) {
@@ -112,9 +108,7 @@ public final class MySQLShowTablesExecutor implements 
DatabaseAdminQueryExecutor
         return regex.map(optional -> Pattern.compile(optional, 
Pattern.CASE_INSENSITIVE));
     }
     
-    private MemoryQueryResultDataRow getRow(final ShardingSphereTable table) {
-        return sqlStatement.isContainsFull()
-                ? new MemoryQueryResultDataRow(Arrays.asList(table.getName(), 
table.getType()))
-                : new 
MemoryQueryResultDataRow(Collections.singletonList(table.getName()));
+    private LocalDataQueryResultRow getQueryResultRow(final 
ShardingSphereTable table) {
+        return sqlStatement.isContainsFull() ? new 
LocalDataQueryResultRow(table.getName(), table.getType()) : new 
LocalDataQueryResultRow(table.getName());
     }
 }
diff --git 
a/proxy/backend/dialect/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/MySQLAdminExecutorCreator.java
 
b/proxy/backend/dialect/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/factory/MySQLShowAdminExecutorFactory.java
similarity index 62%
copy from 
proxy/backend/dialect/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/MySQLAdminExecutorCreator.java
copy to 
proxy/backend/dialect/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/factory/MySQLShowAdminExecutorFactory.java
index 508b0f4f3a3..6865ae5b3a6 100644
--- 
a/proxy/backend/dialect/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/MySQLAdminExecutorCreator.java
+++ 
b/proxy/backend/dialect/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/factory/MySQLShowAdminExecutorFactory.java
@@ -15,26 +15,18 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.proxy.backend.mysql.handler.admin;
+package org.apache.shardingsphere.proxy.backend.mysql.handler.admin.factory;
 
-import 
org.apache.shardingsphere.infra.binder.context.statement.SQLStatementContext;
-import 
org.apache.shardingsphere.infra.binder.context.statement.type.dml.SelectStatementContext;
+import lombok.AccessLevel;
+import lombok.NoArgsConstructor;
 import 
org.apache.shardingsphere.proxy.backend.handler.admin.executor.DatabaseAdminExecutor;
-import 
org.apache.shardingsphere.proxy.backend.handler.admin.executor.DatabaseAdminExecutorCreator;
-import 
org.apache.shardingsphere.proxy.backend.mysql.handler.admin.executor.MySQLKillProcessExecutor;
-import 
org.apache.shardingsphere.proxy.backend.mysql.handler.admin.executor.MySQLSetVariableAdminExecutor;
 import 
org.apache.shardingsphere.proxy.backend.mysql.handler.admin.executor.show.MySQLShowCreateDatabaseExecutor;
 import 
org.apache.shardingsphere.proxy.backend.mysql.handler.admin.executor.show.MySQLShowDatabasesExecutor;
 import 
org.apache.shardingsphere.proxy.backend.mysql.handler.admin.executor.show.MySQLShowFunctionStatusExecutor;
 import 
org.apache.shardingsphere.proxy.backend.mysql.handler.admin.executor.show.MySQLShowProcedureStatusExecutor;
 import 
org.apache.shardingsphere.proxy.backend.mysql.handler.admin.executor.show.MySQLShowProcessListExecutor;
 import 
org.apache.shardingsphere.proxy.backend.mysql.handler.admin.executor.show.MySQLShowTablesExecutor;
-import 
org.apache.shardingsphere.proxy.backend.mysql.handler.admin.executor.MySQLUseDatabaseExecutor;
-import 
org.apache.shardingsphere.proxy.backend.mysql.handler.admin.factory.MySQLSelectAdminExecutorFactory;
 import 
org.apache.shardingsphere.sql.parser.statement.core.statement.SQLStatement;
-import 
org.apache.shardingsphere.sql.parser.statement.core.statement.type.dal.SetStatement;
-import 
org.apache.shardingsphere.sql.parser.statement.mysql.dal.MySQLKillStatement;
-import 
org.apache.shardingsphere.sql.parser.statement.mysql.dal.MySQLUseStatement;
 import 
org.apache.shardingsphere.sql.parser.statement.mysql.dal.show.database.MySQLShowCreateDatabaseStatement;
 import 
org.apache.shardingsphere.sql.parser.statement.mysql.dal.show.database.MySQLShowDatabasesStatement;
 import 
org.apache.shardingsphere.sql.parser.statement.mysql.dal.show.function.MySQLShowFunctionStatusStatement;
@@ -42,23 +34,21 @@ import 
org.apache.shardingsphere.sql.parser.statement.mysql.dal.show.procedure.M
 import 
org.apache.shardingsphere.sql.parser.statement.mysql.dal.show.process.MySQLShowProcessListStatement;
 import 
org.apache.shardingsphere.sql.parser.statement.mysql.dal.show.table.MySQLShowTablesStatement;
 
-import java.util.List;
 import java.util.Optional;
 
 /**
- * Database admin executor creator for MySQL.
+ * Show admin executor factory for MySQL.
  */
-public final class MySQLAdminExecutorCreator implements 
DatabaseAdminExecutorCreator {
+@NoArgsConstructor(access = AccessLevel.PRIVATE)
+public final class MySQLShowAdminExecutorFactory {
     
-    @Override
-    public Optional<DatabaseAdminExecutor> create(final SQLStatementContext 
sqlStatementContext, final String sql, final String databaseName, final 
List<Object> parameters) {
-        if (sqlStatementContext instanceof SelectStatementContext) {
-            return 
MySQLSelectAdminExecutorFactory.newInstance((SelectStatementContext) 
sqlStatementContext, sql, databaseName, parameters);
-        }
-        SQLStatement sqlStatement = sqlStatementContext.getSqlStatement();
-        if (sqlStatement instanceof MySQLUseStatement) {
-            return Optional.of(new 
MySQLUseDatabaseExecutor((MySQLUseStatement) sqlStatement));
-        }
+    /**
+     * New instance of show admin executor for MySQL.
+     *
+     * @param sqlStatement SQL statement
+     * @return created instance
+     */
+    public static Optional<DatabaseAdminExecutor> newInstance(final 
SQLStatement sqlStatement) {
         if (sqlStatement instanceof MySQLShowDatabasesStatement) {
             return Optional.of(new 
MySQLShowDatabasesExecutor((MySQLShowDatabasesStatement) sqlStatement));
         }
@@ -77,17 +67,6 @@ public final class MySQLAdminExecutorCreator implements 
DatabaseAdminExecutorCre
         if (sqlStatement instanceof MySQLShowProcessListStatement) {
             return Optional.of(new 
MySQLShowProcessListExecutor((MySQLShowProcessListStatement) sqlStatement));
         }
-        if (sqlStatement instanceof MySQLKillStatement) {
-            return Optional.of(new 
MySQLKillProcessExecutor((MySQLKillStatement) sqlStatement));
-        }
-        if (sqlStatement instanceof SetStatement) {
-            return Optional.of(new 
MySQLSetVariableAdminExecutor((SetStatement) sqlStatement));
-        }
         return Optional.empty();
     }
-    
-    @Override
-    public String getDatabaseType() {
-        return "MySQL";
-    }
 }

Reply via email to