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

terrymanu 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 c973af5854a Remove unused referenced object names from MCP 
classification result (#39318)
c973af5854a is described below

commit c973af5854a4f0f398a3c7bb6be1797882e3bd59
Author: Liang Zhang <[email protected]>
AuthorDate: Mon Aug 3 09:58:24 2026 +0800

    Remove unused referenced object names from MCP classification result 
(#39318)
---
 .../tool/handler/execute/ClassificationResult.java | 12 ----------
 .../execute/ExplainSQLCandidateValidatorTest.java  |  2 +-
 .../handler/execute/MCPSQLExecutionFacadeTest.java |  2 +-
 .../handler/execute/MCPStatementAnalyzerTest.java  | 27 ++++++++++++----------
 4 files changed, 17 insertions(+), 26 deletions(-)

diff --git 
a/mcp/core/src/main/java/org/apache/shardingsphere/mcp/core/tool/handler/execute/ClassificationResult.java
 
b/mcp/core/src/main/java/org/apache/shardingsphere/mcp/core/tool/handler/execute/ClassificationResult.java
index a0d15bf389f..561db7dc5ee 100644
--- 
a/mcp/core/src/main/java/org/apache/shardingsphere/mcp/core/tool/handler/execute/ClassificationResult.java
+++ 
b/mcp/core/src/main/java/org/apache/shardingsphere/mcp/core/tool/handler/execute/ClassificationResult.java
@@ -22,7 +22,6 @@ import lombok.Getter;
 import 
org.apache.shardingsphere.mcp.support.database.capability.SupportedMCPStatement;
 
 import java.util.Collection;
-import java.util.LinkedHashSet;
 import java.util.Optional;
 
 /**
@@ -39,8 +38,6 @@ public final class ClassificationResult {
     
     private final String targetObjectName;
     
-    private final Collection<String> referencedObjectNames;
-    
     @Getter(AccessLevel.NONE)
     private final Collection<SQLStatementObjectName> referencedObjects;
     
@@ -54,20 +51,11 @@ public final class ClassificationResult {
         this.statementType = statementType;
         this.normalizedSql = normalizedSql;
         targetObjectName = referencedObjects.isEmpty() ? "" : 
referencedObjects.iterator().next().getObjectName();
-        referencedObjectNames = createReferencedObjectNames(referencedObjects);
         this.referencedObjects = referencedObjects;
         this.savepointName = savepointName;
         this.ruleDistSQL = ruleDistSQL;
     }
     
-    private Collection<String> createReferencedObjectNames(final 
Collection<SQLStatementObjectName> referencedObjects) {
-        Collection<String> result = new 
LinkedHashSet<>(referencedObjects.size(), 1F);
-        for (SQLStatementObjectName each : referencedObjects) {
-            result.add(each.getObjectName());
-        }
-        return result;
-    }
-    
     Collection<SQLStatementObjectName> getReferencedObjects() {
         return referencedObjects;
     }
diff --git 
a/mcp/core/src/test/java/org/apache/shardingsphere/mcp/core/tool/handler/execute/ExplainSQLCandidateValidatorTest.java
 
b/mcp/core/src/test/java/org/apache/shardingsphere/mcp/core/tool/handler/execute/ExplainSQLCandidateValidatorTest.java
index 5023d9b3f2b..bb6c0cf875f 100644
--- 
a/mcp/core/src/test/java/org/apache/shardingsphere/mcp/core/tool/handler/execute/ExplainSQLCandidateValidatorTest.java
+++ 
b/mcp/core/src/test/java/org/apache/shardingsphere/mcp/core/tool/handler/execute/ExplainSQLCandidateValidatorTest.java
@@ -46,7 +46,7 @@ class ExplainSQLCandidateValidatorTest {
         assertThat(actual.getStatementClass(), 
is(SupportedMCPStatement.EXPLAIN));
         assertThat(actual.getStatementType(), is("EXPLAIN"));
         assertThat(actual.getNormalizedSql(), is("EXPLAIN FORMAT=JSON SELECT * 
FROM logic_db.foo_orders"));
-        assertThat(actual.getReferencedObjectNames(), 
contains("logic_db.foo_orders"));
+        
assertThat(actual.getReferencedObjects().stream().map(SQLStatementObjectName::getObjectName).toList(),
 contains("logic_db.foo_orders"));
     }
     
     @Test
diff --git 
a/mcp/core/src/test/java/org/apache/shardingsphere/mcp/core/tool/handler/execute/MCPSQLExecutionFacadeTest.java
 
b/mcp/core/src/test/java/org/apache/shardingsphere/mcp/core/tool/handler/execute/MCPSQLExecutionFacadeTest.java
index 4b45acd9837..5bfbef12945 100644
--- 
a/mcp/core/src/test/java/org/apache/shardingsphere/mcp/core/tool/handler/execute/MCPSQLExecutionFacadeTest.java
+++ 
b/mcp/core/src/test/java/org/apache/shardingsphere/mcp/core/tool/handler/execute/MCPSQLExecutionFacadeTest.java
@@ -388,7 +388,7 @@ class MCPSQLExecutionFacadeTest {
         ArgumentCaptor<ClassificationResult> classificationCaptor = 
ArgumentCaptor.forClass(ClassificationResult.class);
         verify(statementExecutor).execute(eq(request), 
classificationCaptor.capture(), eq(capability));
         assertThat(classificationCaptor.getValue().getStatementClass(), 
is(SupportedMCPStatement.EXPLAIN));
-        assertThat(classificationCaptor.getValue().getReferencedObjectNames(), 
contains("orders"));
+        
assertThat(classificationCaptor.getValue().getReferencedObjects().stream().map(SQLStatementObjectName::getObjectName).toList(),
 contains("orders"));
         verifyNoInteractions(transactionExecutor);
     }
     
diff --git 
a/mcp/core/src/test/java/org/apache/shardingsphere/mcp/core/tool/handler/execute/MCPStatementAnalyzerTest.java
 
b/mcp/core/src/test/java/org/apache/shardingsphere/mcp/core/tool/handler/execute/MCPStatementAnalyzerTest.java
index 76842bb9220..cafec6749ed 100644
--- 
a/mcp/core/src/test/java/org/apache/shardingsphere/mcp/core/tool/handler/execute/MCPStatementAnalyzerTest.java
+++ 
b/mcp/core/src/test/java/org/apache/shardingsphere/mcp/core/tool/handler/execute/MCPStatementAnalyzerTest.java
@@ -30,7 +30,6 @@ import org.junit.jupiter.params.ParameterizedTest;
 import org.junit.jupiter.params.provider.Arguments;
 import org.junit.jupiter.params.provider.MethodSource;
 
-import java.util.ArrayList;
 import java.util.List;
 import java.util.stream.Stream;
 
@@ -87,75 +86,79 @@ class MCPStatementAnalyzerTest {
     void assertAnalyzeReferencedObjects() {
         ClassificationResult actual = analyzer.analyze(
                 "SELECT * FROM logic_db.orders JOIN other_db.order_items ON 
orders.order_id = order_items.order_id", createCapability("MySQL"));
-        assertThat(actual.getReferencedObjectNames(), 
contains("logic_db.orders", "other_db.order_items"));
+        assertThat(getObjectNames(actual), contains("logic_db.orders", 
"other_db.order_items"));
     }
     
     @ParameterizedTest(name = "{0}")
     @MethodSource("referencedObjectCases")
     void assertAnalyzeExactReferencedObjects(final String name, final String 
databaseType, final String sql, final List<String> expected) {
-        assertThat(new ArrayList<>(analyzer.analyze(sql, 
createCapability(databaseType)).getReferencedObjectNames()), is(expected));
+        assertThat(getObjectNames(analyzer.analyze(sql, 
createCapability(databaseType))), is(expected));
     }
     
     @Test
     void assertAnalyzeCommonTableExpressionReferences() {
         ClassificationResult actual = analyzer.analyze(
                 "WITH order_result AS (SELECT * FROM other_db.orders) SELECT * 
FROM order_result", createCapability("PostgreSQL"));
-        assertThat(actual.getReferencedObjectNames(), 
contains("other_db.orders"));
+        assertThat(getObjectNames(actual), contains("other_db.orders"));
     }
     
     @Test
     void assertAnalyzeDMLReferences() {
         ClassificationResult actual = analyzer.analyze(
                 "UPDATE logic_db.orders SET status = 'DONE' FROM 
other_db.order_items", createCapability("PostgreSQL"));
-        assertThat(actual.getReferencedObjectNames(), 
contains("logic_db.orders", "other_db.order_items"));
+        assertThat(getObjectNames(actual), contains("logic_db.orders", 
"other_db.order_items"));
     }
     
     @Test
     void assertAnalyzeAlterViewReferences() {
         ClassificationResult actual = analyzer.analyze(
                 "ALTER VIEW logic_db.active_orders AS SELECT * FROM 
other_db.orders", createCapability("MySQL"));
-        assertThat(actual.getReferencedObjectNames(), 
contains("logic_db.active_orders", "other_db.orders"));
+        assertThat(getObjectNames(actual), contains("logic_db.active_orders", 
"other_db.orders"));
     }
     
     @Test
     void assertAnalyzeSameNamedDMLReferences() {
         ClassificationResult actual = analyzer.analyze(
                 "UPDATE orders SET status = source.status FROM other_db.orders 
source", createCapability("PostgreSQL"));
-        assertThat(actual.getReferencedObjectNames(), contains("orders", 
"other_db.orders"));
+        assertThat(getObjectNames(actual), contains("orders", 
"other_db.orders"));
         assertThat(actual.getTargetObjectName().orElse(""), is("orders"));
     }
     
     @Test
     void assertAnalyzeQuotedTableQueryIdentifier() {
         ClassificationResult actual = analyzer.analyze("CREATE TABLE 
order_archive AS TABLE `other.db.orders`", createCapability("MySQL"));
-        assertThat(actual.getReferencedObjectNames(), 
contains("order_archive", "other.db.orders"));
+        assertThat(getObjectNames(actual), contains("order_archive", 
"other.db.orders"));
         assertFalse(actual.getReferencedObjects().stream().filter(each -> 
"other.db.orders".equals(each.getObjectName())).findFirst().orElseThrow().isQualified());
     }
     
     @Test
     void assertAnalyzeDCLReference() {
         ClassificationResult actual = analyzer.analyze("GRANT SELECT ON 
other_db.orders TO PUBLIC", createCapability("MySQL"));
-        assertThat(actual.getReferencedObjectNames(), 
contains("other_db.orders"));
+        assertThat(getObjectNames(actual), contains("other_db.orders"));
     }
     
     @Test
     void assertAnalyzeGlobalDCLReference() {
         ClassificationResult actual = analyzer.analyze("GRANT SELECT ON *.* TO 
PUBLIC", createCapability("MySQL"));
-        assertThat(actual.getReferencedObjectNames(), contains("*.*"));
+        assertThat(getObjectNames(actual), contains("*.*"));
     }
     
     @ParameterizedTest(name = "{0}")
     @MethodSource("dclNamespaceCases")
     void assertAnalyzeDCLNamespaceReference(final String name, final String 
sql) {
         ClassificationResult actual = analyzer.analyze(sql, 
createCapability("PostgreSQL"));
-        assertThat(actual.getReferencedObjectNames(), contains("other_db"));
+        assertThat(getObjectNames(actual), contains("other_db"));
         
assertTrue(actual.getReferencedObjects().iterator().next().isNamespaceTarget());
     }
     
     @Test
     void assertAnalyzeQualifiedFunctionReference() {
         ClassificationResult actual = analyzer.analyze("SELECT 
other_db.foo_refresh_orders()", createCapability("MySQL"));
-        assertThat(actual.getReferencedObjectNames(), 
contains("other_db.foo_refresh_orders"));
+        assertThat(getObjectNames(actual), 
contains("other_db.foo_refresh_orders"));
+    }
+    
+    private List<String> getObjectNames(final ClassificationResult 
classificationResult) {
+        return 
classificationResult.getReferencedObjects().stream().map(SQLStatementObjectName::getObjectName).toList();
     }
     
     @Test

Reply via email to