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";
- }
}