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 f0e6450c6d4 Refactor MySQLShowTablesExecutor (#36863)
f0e6450c6d4 is described below

commit f0e6450c6d455604fe675200a5f2a739bce8b313
Author: Liang Zhang <[email protected]>
AuthorDate: Mon Oct 13 00:12:51 2025 +0800

    Refactor MySQLShowTablesExecutor (#36863)
---
 .../handler/admin/MySQLAdminExecutorCreator.java   |  2 +-
 .../show/MySQLShowFunctionStatusExecutor.java      |  8 +++----
 .../show/MySQLShowProcedureStatusExecutor.java     |  8 +++----
 .../executor/show/MySQLShowTablesExecutor.java     | 21 +++++++---------
 .../executor/show/MySQLShowTablesExecutorTest.java | 28 ++++++++++------------
 5 files changed, 31 insertions(+), 36 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 af564a584e2..98901bceaf3 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
@@ -63,7 +63,7 @@ public final class MySQLAdminExecutorCreator implements 
DatabaseAdminExecutorCre
             return Optional.of(new 
MySQLShowDatabasesExecutor((MySQLShowDatabasesStatement) sqlStatement));
         }
         if (sqlStatement instanceof MySQLShowTablesStatement) {
-            return Optional.of(new 
MySQLShowTablesExecutor((MySQLShowTablesStatement) sqlStatement, 
sqlStatementContext.getSqlStatement().getDatabaseType()));
+            return Optional.of(new 
MySQLShowTablesExecutor((MySQLShowTablesStatement) sqlStatement));
         }
         if (sqlStatement instanceof MySQLShowCreateDatabaseStatement) {
             return Optional.of(new 
MySQLShowCreateDatabaseExecutor((MySQLShowCreateDatabaseStatement) 
sqlStatement));
diff --git 
a/proxy/backend/dialect/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/show/MySQLShowFunctionStatusExecutor.java
 
b/proxy/backend/dialect/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/show/MySQLShowFunctionStatusExecutor.java
index 15a1f217c21..74a1ab733a0 100644
--- 
a/proxy/backend/dialect/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/show/MySQLShowFunctionStatusExecutor.java
+++ 
b/proxy/backend/dialect/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/show/MySQLShowFunctionStatusExecutor.java
@@ -55,10 +55,6 @@ public final class MySQLShowFunctionStatusExecutor 
implements DatabaseAdminQuery
         mergedResult = new TransparentMergedResult(getQueryResult());
     }
     
-    private QueryResult getQueryResult() {
-        return new RawMemoryQueryResult(queryResultMetaData, 
Collections.emptyList());
-    }
-    
     private QueryResultMetaData createQueryResultMetaData() {
         List<RawQueryResultColumnMetaData> columns = new ArrayList<>(11);
         columns.add(new RawQueryResultColumnMetaData("", "Db", "Db", 
Types.VARCHAR, "VARCHAR", 255, 0));
@@ -74,4 +70,8 @@ public final class MySQLShowFunctionStatusExecutor implements 
DatabaseAdminQuery
         columns.add(new RawQueryResultColumnMetaData("", "Database_Collation", 
"Database_Collation", Types.VARCHAR, "VARCHAR", 20, 0));
         return new RawQueryResultMetaData(columns);
     }
+    
+    private QueryResult getQueryResult() {
+        return new RawMemoryQueryResult(queryResultMetaData, 
Collections.emptyList());
+    }
 }
diff --git 
a/proxy/backend/dialect/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/show/MySQLShowProcedureStatusExecutor.java
 
b/proxy/backend/dialect/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/show/MySQLShowProcedureStatusExecutor.java
index a223ed1f8e4..9a5e53febeb 100644
--- 
a/proxy/backend/dialect/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/show/MySQLShowProcedureStatusExecutor.java
+++ 
b/proxy/backend/dialect/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/show/MySQLShowProcedureStatusExecutor.java
@@ -55,10 +55,6 @@ public final class MySQLShowProcedureStatusExecutor 
implements DatabaseAdminQuer
         mergedResult = new TransparentMergedResult(getQueryResult());
     }
     
-    private QueryResult getQueryResult() {
-        return new RawMemoryQueryResult(queryResultMetaData, 
Collections.emptyList());
-    }
-    
     private QueryResultMetaData createQueryResultMetaData() {
         List<RawQueryResultColumnMetaData> columns = new ArrayList<>(11);
         columns.add(new RawQueryResultColumnMetaData("", "Db", "Db", 
Types.VARCHAR, "VARCHAR", 255, 0));
@@ -74,4 +70,8 @@ public final class MySQLShowProcedureStatusExecutor 
implements DatabaseAdminQuer
         columns.add(new RawQueryResultColumnMetaData("", "Database_Collation", 
"Database_Collation", Types.VARCHAR, "VARCHAR", 20, 0));
         return new RawQueryResultMetaData(columns);
     }
+    
+    private QueryResult getQueryResult() {
+        return new RawMemoryQueryResult(queryResultMetaData, 
Collections.emptyList());
+    }
 }
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 8170d1e645e..e38f1b7b496 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
@@ -20,7 +20,6 @@ package 
org.apache.shardingsphere.proxy.backend.mysql.handler.admin.executor.sho
 import lombok.Getter;
 import lombok.RequiredArgsConstructor;
 import 
org.apache.shardingsphere.database.connector.core.metadata.database.system.SystemDatabase;
-import org.apache.shardingsphere.database.connector.core.type.DatabaseType;
 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;
@@ -40,11 +39,11 @@ import 
org.apache.shardingsphere.proxy.backend.session.ConnectionSession;
 import 
org.apache.shardingsphere.sql.parser.statement.mysql.dal.show.table.MySQLShowTablesStatement;
 
 import java.sql.Types;
+import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.Comparator;
-import java.util.LinkedList;
 import java.util.List;
 import java.util.Optional;
 import java.util.regex.Pattern;
@@ -58,8 +57,6 @@ public final class MySQLShowTablesExecutor implements 
DatabaseAdminQueryExecutor
     
     private final MySQLShowTablesStatement sqlStatement;
     
-    private final DatabaseType databaseType;
-    
     @Getter
     private QueryResultMetaData queryResultMetaData;
     
@@ -74,7 +71,7 @@ public final class MySQLShowTablesExecutor implements 
DatabaseAdminQueryExecutor
     }
     
     private QueryResultMetaData createQueryResultMetaData(final String 
databaseName) {
-        List<RawQueryResultColumnMetaData> columnNames = new LinkedList<>();
+        List<RawQueryResultColumnMetaData> columnNames = new ArrayList<>(2);
         String tableColumnName = String.format("Tables_in_%s", databaseName);
         columnNames.add(new RawQueryResultColumnMetaData("", tableColumnName, 
tableColumnName, Types.VARCHAR, "VARCHAR", 255, 0));
         if (sqlStatement.isContainsFull()) {
@@ -84,7 +81,7 @@ public final class MySQLShowTablesExecutor implements 
DatabaseAdminQueryExecutor
     }
     
     private QueryResult getQueryResult(final String databaseName, final 
ShardingSphereMetaData metaData) {
-        SystemDatabase systemDatabase = new SystemDatabase(databaseType);
+        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()
@@ -93,12 +90,6 @@ public final class MySQLShowTablesExecutor implements 
DatabaseAdminQueryExecutor
         return new RawMemoryQueryResult(queryResultMetaData, rows);
     }
     
-    private MemoryQueryResultDataRow getRow(final ShardingSphereTable table) {
-        return sqlStatement.isContainsFull()
-                ? new MemoryQueryResultDataRow(Arrays.asList(table.getName(), 
table.getType()))
-                : new 
MemoryQueryResultDataRow(Collections.singletonList(table.getName()));
-    }
-    
     private Collection<ShardingSphereTable> getTables(final 
ShardingSphereDatabase database) {
         if (null == database.getSchema(database.getName())) {
             return Collections.emptyList();
@@ -120,4 +111,10 @@ public final class MySQLShowTablesExecutor implements 
DatabaseAdminQueryExecutor
         Optional<String> regex = 
sqlStatement.getFilter().get().getLike().map(optional -> 
RegexUtils.convertLikePatternToRegex(optional.getPattern()));
         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()));
+    }
 }
diff --git 
a/proxy/backend/dialect/mysql/src/test/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/show/MySQLShowTablesExecutorTest.java
 
b/proxy/backend/dialect/mysql/src/test/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/show/MySQLShowTablesExecutorTest.java
index da532cc7265..41d4aded6f0 100644
--- 
a/proxy/backend/dialect/mysql/src/test/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/show/MySQLShowTablesExecutorTest.java
+++ 
b/proxy/backend/dialect/mysql/src/test/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/show/MySQLShowTablesExecutorTest.java
@@ -67,7 +67,7 @@ class MySQLShowTablesExecutorTest {
     
     @Test
     void assertShowTablesExecutorWithoutFilter() throws SQLException {
-        MySQLShowTablesExecutor executor = new MySQLShowTablesExecutor(new 
MySQLShowTablesStatement(databaseType, null, null, false), databaseType);
+        MySQLShowTablesExecutor executor = new MySQLShowTablesExecutor(new 
MySQLShowTablesStatement(databaseType, null, null, false));
         executor.execute(mockConnectionSession(), 
mockMetaData(mockDatabases()));
         assertThat(executor.getQueryResultMetaData().getColumnCount(), is(1));
         executor.getMergedResult().next();
@@ -83,9 +83,8 @@ class MySQLShowTablesExecutorTest {
     
     @Test
     void assertShowTablesExecutorWithFull() throws SQLException {
-        MySQLShowTablesStatement showTablesStatement = 
mock(MySQLShowTablesStatement.class);
-        when(showTablesStatement.isContainsFull()).thenReturn(true);
-        MySQLShowTablesExecutor executor = new 
MySQLShowTablesExecutor(showTablesStatement, databaseType);
+        MySQLShowTablesStatement sqlStatement = new 
MySQLShowTablesStatement(databaseType, null, mock(), true);
+        MySQLShowTablesExecutor executor = new 
MySQLShowTablesExecutor(sqlStatement);
         executor.execute(mockConnectionSession(), 
mockMetaData(mockDatabases()));
         assertThat(executor.getQueryResultMetaData().getColumnCount(), is(2));
     }
@@ -94,8 +93,8 @@ class MySQLShowTablesExecutorTest {
     void assertShowTablesExecutorWithLikeFilter() throws SQLException {
         ShowFilterSegment showFilterSegment = mock(ShowFilterSegment.class);
         when(showFilterSegment.getLike()).thenReturn(Optional.of(new 
ShowLikeSegment(0, 10, "t_account%")));
-        MySQLShowTablesStatement showTablesStatement = new 
MySQLShowTablesStatement(databaseType, null, showFilterSegment, false);
-        MySQLShowTablesExecutor executor = new 
MySQLShowTablesExecutor(showTablesStatement, databaseType);
+        MySQLShowTablesStatement sqlStatement = new 
MySQLShowTablesStatement(databaseType, null, showFilterSegment, false);
+        MySQLShowTablesExecutor executor = new 
MySQLShowTablesExecutor(sqlStatement);
         executor.execute(mockConnectionSession(), 
mockMetaData(mockDatabases()));
         assertThat(executor.getQueryResultMetaData().getColumnCount(), is(1));
         executor.getMergedResult().next();
@@ -111,8 +110,8 @@ class MySQLShowTablesExecutorTest {
     void assertShowTablesExecutorWithSpecificTable() throws SQLException {
         ShowFilterSegment showFilterSegment = mock(ShowFilterSegment.class);
         when(showFilterSegment.getLike()).thenReturn(Optional.of(new 
ShowLikeSegment(0, 10, "t_account")));
-        MySQLShowTablesStatement showTablesStatement = new 
MySQLShowTablesStatement(databaseType, null, showFilterSegment, false);
-        MySQLShowTablesExecutor executor = new 
MySQLShowTablesExecutor(showTablesStatement, databaseType);
+        MySQLShowTablesStatement sqlStatement = new 
MySQLShowTablesStatement(databaseType, null, showFilterSegment, false);
+        MySQLShowTablesExecutor executor = new 
MySQLShowTablesExecutor(sqlStatement);
         executor.execute(mockConnectionSession(), 
mockMetaData(mockDatabases()));
         assertThat(executor.getQueryResultMetaData().getColumnCount(), is(1));
         executor.getMergedResult().next();
@@ -124,8 +123,8 @@ class MySQLShowTablesExecutorTest {
     void assertShowTablesExecutorWithUpperCase() throws SQLException {
         ShowFilterSegment showFilterSegment = mock(ShowFilterSegment.class);
         when(showFilterSegment.getLike()).thenReturn(Optional.of(new 
ShowLikeSegment(0, 10, "T_TEST")));
-        MySQLShowTablesStatement showTablesStatement = new 
MySQLShowTablesStatement(databaseType, null, showFilterSegment, false);
-        MySQLShowTablesExecutor executor = new 
MySQLShowTablesExecutor(showTablesStatement, databaseType);
+        MySQLShowTablesStatement sqlStatement = new 
MySQLShowTablesStatement(databaseType, null, showFilterSegment, false);
+        MySQLShowTablesExecutor executor = new 
MySQLShowTablesExecutor(sqlStatement);
         executor.execute(mockConnectionSession(), 
mockMetaData(mockDatabases()));
         assertThat(executor.getQueryResultMetaData().getColumnCount(), is(1));
         executor.getMergedResult().next();
@@ -137,8 +136,8 @@ class MySQLShowTablesExecutorTest {
     void assertShowTablesExecutorWithLowerCase() throws SQLException {
         ShowFilterSegment showFilterSegment = mock(ShowFilterSegment.class);
         when(showFilterSegment.getLike()).thenReturn(Optional.of(new 
ShowLikeSegment(0, 10, "t_test")));
-        MySQLShowTablesStatement showTablesStatement = new 
MySQLShowTablesStatement(databaseType, null, showFilterSegment, false);
-        MySQLShowTablesExecutor executor = new 
MySQLShowTablesExecutor(showTablesStatement, databaseType);
+        MySQLShowTablesStatement sqlStatement = new 
MySQLShowTablesStatement(databaseType, null, showFilterSegment, false);
+        MySQLShowTablesExecutor executor = new 
MySQLShowTablesExecutor(sqlStatement);
         executor.execute(mockConnectionSession(), 
mockMetaData(mockDatabases()));
         assertThat(executor.getQueryResultMetaData().getColumnCount(), is(1));
         executor.getMergedResult().next();
@@ -148,9 +147,8 @@ class MySQLShowTablesExecutorTest {
     
     @Test
     void assertShowTableFromUncompletedDatabase() throws SQLException {
-        MySQLShowTablesStatement showTablesStatement = new 
MySQLShowTablesStatement(
-                databaseType, new FromDatabaseSegment(0, new 
DatabaseSegment(0, 0, new IdentifierValue("uncompleted"))), null, false);
-        MySQLShowTablesExecutor executor = new 
MySQLShowTablesExecutor(showTablesStatement, databaseType);
+        MySQLShowTablesStatement sqlStatement = new 
MySQLShowTablesStatement(databaseType, new FromDatabaseSegment(0, new 
DatabaseSegment(0, 0, new IdentifierValue("uncompleted"))), null, false);
+        MySQLShowTablesExecutor executor = new 
MySQLShowTablesExecutor(sqlStatement);
         executor.execute(mockConnectionSession(), 
mockMetaData(mockDatabases()));
         QueryResultMetaData actualMetaData = executor.getQueryResultMetaData();
         assertThat(actualMetaData.getColumnCount(), is(1));

Reply via email to