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 969dbf97178 Refactor ShowCreateTableMergedResult (#33716)
969dbf97178 is described below

commit 969dbf97178c14a37ab14faa42da3c9d62594a58
Author: Liang Zhang <[email protected]>
AuthorDate: Mon Nov 18 23:55:03 2024 +0800

    Refactor ShowCreateTableMergedResult (#33716)
    
    * Refactor LogicTablesMergedResult
    
    * Refactor ShowCreateTableMergedResult
    
    * Refactor ShowCreateTableMergedResult
    
    * Refactor ShowCreateTableMergedResult
---
 .../merge/dal/show/LogicTablesMergedResult.java    | 21 ++++-----
 .../dal/show/ShowCreateTableMergedResult.java      | 55 +++++++++++++---------
 .../dal/show/LogicTablesMergedResultTest.java      |  8 ++--
 .../dal/show/ShowCreateTableMergedResultTest.java  | 10 ++--
 .../merge/dal/show/ShowIndexMergedResultTest.java  |  6 +--
 .../dal/show/ShowTableStatusMergedResultTest.java  |  8 ++--
 6 files changed, 60 insertions(+), 48 deletions(-)

diff --git 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/merge/dal/show/LogicTablesMergedResult.java
 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/merge/dal/show/LogicTablesMergedResult.java
index 9a41cb6d094..16c5babe3f3 100644
--- 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/merge/dal/show/LogicTablesMergedResult.java
+++ 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/merge/dal/show/LogicTablesMergedResult.java
@@ -38,43 +38,42 @@ import java.util.Set;
  */
 public class LogicTablesMergedResult extends MemoryMergedResult<ShardingRule> {
     
-    public LogicTablesMergedResult(final ShardingRule shardingRule,
+    public LogicTablesMergedResult(final ShardingRule rule,
                                    final SQLStatementContext 
sqlStatementContext, final ShardingSphereSchema schema, final List<QueryResult> 
queryResults) throws SQLException {
-        super(shardingRule, schema, sqlStatementContext, queryResults);
+        super(rule, schema, sqlStatementContext, queryResults);
     }
     
     @Override
-    protected final List<MemoryQueryResultRow> init(final ShardingRule 
shardingRule, final ShardingSphereSchema schema,
+    protected final List<MemoryQueryResultRow> init(final ShardingRule rule, 
final ShardingSphereSchema schema,
                                                     final SQLStatementContext 
sqlStatementContext, final List<QueryResult> queryResults) throws SQLException {
         List<MemoryQueryResultRow> result = new LinkedList<>();
         Set<String> tableNames = new HashSet<>();
         for (QueryResult each : queryResults) {
             while (each.next()) {
-                createMemoryQueryResultRow(shardingRule, schema, each, 
tableNames).ifPresent(result::add);
+                createMemoryQueryResultRow(rule, schema, each, 
tableNames).ifPresent(result::add);
             }
         }
         return result;
     }
     
-    private Optional<MemoryQueryResultRow> createMemoryQueryResultRow(final 
ShardingRule shardingRule,
+    private Optional<MemoryQueryResultRow> createMemoryQueryResultRow(final 
ShardingRule rule,
                                                                       final 
ShardingSphereSchema schema, final QueryResult queryResult, final Set<String> 
tableNames) throws SQLException {
         MemoryQueryResultRow memoryResultSetRow = new 
MemoryQueryResultRow(queryResult);
         String actualTableName = memoryResultSetRow.getCell(1).toString();
-        Optional<ShardingTable> shardingTable = 
shardingRule.findShardingTableByActualTable(actualTableName);
+        Optional<ShardingTable> shardingTable = 
rule.findShardingTableByActualTable(actualTableName);
         if (shardingTable.isPresent() && 
tableNames.add(shardingTable.get().getLogicTable())) {
             String logicTableName = shardingTable.get().getLogicTable();
             memoryResultSetRow.setCell(1, logicTableName);
-            setCellValue(memoryResultSetRow, logicTableName, actualTableName, 
schema.getTable(logicTableName), shardingRule);
+            setCellValue(memoryResultSetRow, logicTableName, actualTableName, 
schema.getTable(logicTableName), rule);
             return Optional.of(memoryResultSetRow);
         }
-        if (shardingRule.getShardingTables().isEmpty() || 
tableNames.add(actualTableName)) {
-            setCellValue(memoryResultSetRow, actualTableName, actualTableName, 
schema.getTable(actualTableName), shardingRule);
+        if (rule.getShardingTables().isEmpty() || 
tableNames.add(actualTableName)) {
+            setCellValue(memoryResultSetRow, actualTableName, actualTableName, 
schema.getTable(actualTableName), rule);
             return Optional.of(memoryResultSetRow);
         }
         return Optional.empty();
     }
     
-    protected void setCellValue(final MemoryQueryResultRow memoryResultSetRow,
-                                final String logicTableName, final String 
actualTableName, final ShardingSphereTable table, final ShardingRule 
shardingRule) {
+    protected void setCellValue(final MemoryQueryResultRow memoryResultSetRow, 
final String logicTableName, final String actualTableName, final 
ShardingSphereTable table, final ShardingRule rule) {
     }
 }
diff --git 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/merge/dal/show/ShowCreateTableMergedResult.java
 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/merge/dal/show/ShowCreateTableMergedResult.java
index e7d8250644b..f8ab351d839 100644
--- 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/merge/dal/show/ShowCreateTableMergedResult.java
+++ 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/merge/dal/show/ShowCreateTableMergedResult.java
@@ -44,24 +44,53 @@ import java.util.stream.Collectors;
  */
 public final class ShowCreateTableMergedResult extends LogicTablesMergedResult 
{
     
-    public ShowCreateTableMergedResult(final ShardingRule shardingRule,
+    public ShowCreateTableMergedResult(final ShardingRule rule,
                                        final SQLStatementContext 
sqlStatementContext, final ShardingSphereSchema schema, final List<QueryResult> 
queryResults) throws SQLException {
-        super(shardingRule, sqlStatementContext, schema, queryResults);
+        super(rule, sqlStatementContext, schema, queryResults);
     }
     
     @Override
     protected void setCellValue(final MemoryQueryResultRow memoryResultSetRow, 
final String logicTableName, final String actualTableName,
-                                final ShardingSphereTable table, final 
ShardingRule shardingRule) {
+                                final ShardingSphereTable table, final 
ShardingRule rule) {
+        replaceTables(memoryResultSetRow, logicTableName, actualTableName);
+        replaceBindingTables(memoryResultSetRow, logicTableName, 
actualTableName, rule);
+        replaceIndexes(memoryResultSetRow, actualTableName, table);
+        replaceConstraints(memoryResultSetRow, actualTableName, table, rule);
+    }
+    
+    private void replaceTables(final MemoryQueryResultRow memoryResultSetRow, 
final String logicTableName, final String actualTableName) {
         memoryResultSetRow.setCell(2, 
memoryResultSetRow.getCell(2).toString().replaceFirst(actualTableName, 
logicTableName));
-        setViewCellValue(memoryResultSetRow, logicTableName, actualTableName, 
shardingRule);
+    }
+    
+    private void replaceBindingTables(final MemoryQueryResultRow 
memoryResultSetRow, final String logicTableName, final String actualTableName, 
final ShardingRule rule) {
+        Optional<ShardingTable> shardingTable = 
rule.findShardingTable(logicTableName);
+        Optional<BindingTableRule> bindingTableRule = 
rule.findBindingTableRule(logicTableName);
+        if (!shardingTable.isPresent() || !bindingTableRule.isPresent()) {
+            return;
+        }
+        Collection<DataNode> actualDataNodes = 
shardingTable.get().getActualDataNodes().stream().filter(each -> 
each.getTableName().equalsIgnoreCase(actualTableName)).collect(Collectors.toList());
+        Map<String, String> logicAndActualTablesFromBindingTables = new 
CaseInsensitiveMap<>();
+        for (DataNode each : actualDataNodes) {
+            logicAndActualTablesFromBindingTables
+                    
.putAll(rule.getLogicAndActualTablesFromBindingTable(each.getDataSourceName(), 
logicTableName, actualTableName, bindingTableRule.get().getAllLogicTables()));
+        }
+        for (Entry<String, String> entry : 
logicAndActualTablesFromBindingTables.entrySet()) {
+            memoryResultSetRow.setCell(2, 
memoryResultSetRow.getCell(2).toString().replaceFirst(entry.getValue(), 
entry.getKey()));
+        }
+    }
+    
+    private void replaceIndexes(final MemoryQueryResultRow memoryResultSetRow, 
final String actualTableName, final ShardingSphereTable table) {
         for (ShardingSphereIndex each : table.getIndexValues()) {
             String actualIndexName = 
IndexMetaDataUtils.getActualIndexName(each.getName(), actualTableName);
             memoryResultSetRow.setCell(2, 
memoryResultSetRow.getCell(2).toString().replace(actualIndexName, 
each.getName()));
         }
+    }
+    
+    private void replaceConstraints(final MemoryQueryResultRow 
memoryResultSetRow, final String actualTableName, final ShardingSphereTable 
table, final ShardingRule rule) {
         for (ShardingSphereConstraint each : table.getConstraintValues()) {
             String actualIndexName = 
IndexMetaDataUtils.getActualIndexName(each.getName(), actualTableName);
             memoryResultSetRow.setCell(2, 
memoryResultSetRow.getCell(2).toString().replace(actualIndexName, 
each.getName()));
-            Optional<ShardingTable> shardingTable = 
shardingRule.findShardingTable(each.getReferencedTableName());
+            Optional<ShardingTable> shardingTable = 
rule.findShardingTable(each.getReferencedTableName());
             if (!shardingTable.isPresent()) {
                 continue;
             }
@@ -70,20 +99,4 @@ public final class ShowCreateTableMergedResult extends 
LogicTablesMergedResult {
             }
         }
     }
-    
-    private void setViewCellValue(final MemoryQueryResultRow 
memoryResultSetRow, final String logicTableName, final String actualTableName, 
final ShardingRule shardingRule) {
-        Optional<ShardingTable> shardingTable = 
shardingRule.findShardingTable(logicTableName);
-        Optional<BindingTableRule> bindingTableRule = 
shardingRule.findBindingTableRule(logicTableName);
-        if (shardingTable.isPresent() && bindingTableRule.isPresent()) {
-            Collection<DataNode> actualDataNodes = 
shardingTable.get().getActualDataNodes().stream().filter(each -> 
each.getTableName().equalsIgnoreCase(actualTableName)).collect(Collectors.toList());
-            Map<String, String> logicAndActualTablesFromBindingTables = new 
CaseInsensitiveMap<>();
-            for (DataNode each : actualDataNodes) {
-                logicAndActualTablesFromBindingTables
-                        
.putAll(shardingRule.getLogicAndActualTablesFromBindingTable(each.getDataSourceName(),
 logicTableName, actualTableName, bindingTableRule.get().getAllLogicTables()));
-            }
-            for (Entry<String, String> entry : 
logicAndActualTablesFromBindingTables.entrySet()) {
-                memoryResultSetRow.setCell(2, 
memoryResultSetRow.getCell(2).toString().replaceFirst(entry.getValue(), 
entry.getKey()));
-            }
-        }
-    }
 }
diff --git 
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/merge/dal/show/LogicTablesMergedResultTest.java
 
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/merge/dal/show/LogicTablesMergedResultTest.java
index 1cd16542e89..cc62ededa2a 100644
--- 
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/merge/dal/show/LogicTablesMergedResultTest.java
+++ 
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/merge/dal/show/LogicTablesMergedResultTest.java
@@ -42,13 +42,13 @@ import static org.mockito.Mockito.when;
 
 class LogicTablesMergedResultTest {
     
-    private ShardingRule shardingRule;
+    private ShardingRule rule;
     
     private ShardingSphereSchema schema;
     
     @BeforeEach
     void setUp() {
-        shardingRule = createShardingRule();
+        rule = createShardingRule();
         schema = new ShardingSphereSchema(DefaultDatabase.LOGIC_NAME, 
Collections.singletonMap("table",
                 new ShardingSphereTable("table", Collections.emptyList(), 
Collections.emptyList(), Collections.emptyList())), Collections.emptyMap());
     }
@@ -61,12 +61,12 @@ class LogicTablesMergedResultTest {
     
     @Test
     void assertNextForEmptyQueryResult() throws SQLException {
-        assertFalse(new LogicTablesMergedResult(shardingRule, 
mock(SQLStatementContext.class), schema, Collections.emptyList()).next());
+        assertFalse(new LogicTablesMergedResult(rule, 
mock(SQLStatementContext.class), schema, Collections.emptyList()).next());
     }
     
     @Test
     void assertNextForActualTableNameInTableRule() throws SQLException {
-        assertTrue(new LogicTablesMergedResult(shardingRule, 
mock(SQLStatementContext.class), schema, 
Collections.singletonList(mockQueryResult("table_0"))).next());
+        assertTrue(new LogicTablesMergedResult(rule, 
mock(SQLStatementContext.class), schema, 
Collections.singletonList(mockQueryResult("table_0"))).next());
     }
     
     private QueryResult mockQueryResult(final String value) throws 
SQLException {
diff --git 
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/merge/dal/show/ShowCreateTableMergedResultTest.java
 
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/merge/dal/show/ShowCreateTableMergedResultTest.java
index 37c6088b2b0..be196f3555c 100644
--- 
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/merge/dal/show/ShowCreateTableMergedResultTest.java
+++ 
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/merge/dal/show/ShowCreateTableMergedResultTest.java
@@ -47,13 +47,13 @@ import static org.mockito.Mockito.when;
 
 class ShowCreateTableMergedResultTest {
     
-    private ShardingRule shardingRule;
+    private ShardingRule rule;
     
     private ShardingSphereSchema schema;
     
     @BeforeEach
     void setUp() {
-        shardingRule = buildShardingRule();
+        rule = buildShardingRule();
         schema = createSchema();
     }
     
@@ -74,17 +74,17 @@ class ShowCreateTableMergedResultTest {
     
     @Test
     void assertNextForEmptyQueryResult() throws SQLException {
-        assertFalse(new ShowCreateTableMergedResult(shardingRule, 
mock(SQLStatementContext.class), schema, Collections.emptyList()).next());
+        assertFalse(new ShowCreateTableMergedResult(rule, 
mock(SQLStatementContext.class), schema, Collections.emptyList()).next());
     }
     
     @Test
     void assertNextForTableRulePresent() throws SQLException {
-        assertTrue(new ShowCreateTableMergedResult(shardingRule, 
mock(SQLStatementContext.class), schema, 
Collections.singletonList(mockQueryResult())).next());
+        assertTrue(new ShowCreateTableMergedResult(rule, 
mock(SQLStatementContext.class), schema, 
Collections.singletonList(mockQueryResult())).next());
     }
     
     @Test
     void assertGetValueForTableRulePresent() throws SQLException {
-        ShowCreateTableMergedResult actual = new 
ShowCreateTableMergedResult(shardingRule, mock(SQLStatementContext.class), 
schema, Collections.singletonList(mockQueryResult()));
+        ShowCreateTableMergedResult actual = new 
ShowCreateTableMergedResult(rule, mock(SQLStatementContext.class), schema, 
Collections.singletonList(mockQueryResult()));
         assertTrue(actual.next());
         assertThat(actual.getValue(1, String.class), is("t_order"));
         assertThat(actual.getValue(2, String.class), is("CREATE TABLE 
`t_order` (\n"
diff --git 
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/merge/dal/show/ShowIndexMergedResultTest.java
 
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/merge/dal/show/ShowIndexMergedResultTest.java
index 14a02347da6..bcad1b9e345 100644
--- 
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/merge/dal/show/ShowIndexMergedResultTest.java
+++ 
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/merge/dal/show/ShowIndexMergedResultTest.java
@@ -39,19 +39,19 @@ import static org.mockito.Mockito.when;
 class ShowIndexMergedResultTest {
     
     @Mock
-    private ShardingRule shardingRule;
+    private ShardingRule rule;
     
     @Mock
     private ShardingSphereSchema schema;
     
     @Test
     void assertNextForEmptyQueryResult() throws SQLException {
-        assertFalse(new ShowIndexMergedResult(shardingRule, 
mock(SQLStatementContext.class), schema, Collections.emptyList()).next());
+        assertFalse(new ShowIndexMergedResult(rule, 
mock(SQLStatementContext.class), schema, Collections.emptyList()).next());
     }
     
     @Test
     void assertNextForTableRuleIsPresent() throws SQLException {
-        assertTrue(new ShowIndexMergedResult(shardingRule, 
mock(SQLStatementContext.class), schema, 
Collections.singletonList(mockQueryResult())).next());
+        assertTrue(new ShowIndexMergedResult(rule, 
mock(SQLStatementContext.class), schema, 
Collections.singletonList(mockQueryResult())).next());
     }
     
     private QueryResult mockQueryResult() throws SQLException {
diff --git 
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/merge/dal/show/ShowTableStatusMergedResultTest.java
 
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/merge/dal/show/ShowTableStatusMergedResultTest.java
index 499cfe0f320..db870b2adfc 100644
--- 
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/merge/dal/show/ShowTableStatusMergedResultTest.java
+++ 
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/merge/dal/show/ShowTableStatusMergedResultTest.java
@@ -50,14 +50,14 @@ import static org.mockito.Mockito.when;
 class ShowTableStatusMergedResultTest {
     
     @Mock
-    private ShardingRule shardingRule;
+    private ShardingRule rule;
     
     @Mock
     private ShardingSphereSchema schema;
     
     @BeforeEach
     void setUp() {
-        shardingRule = buildShardingRule();
+        rule = buildShardingRule();
         schema = new ShardingSphereSchema(DefaultDatabase.LOGIC_NAME, 
Collections.singletonMap("table",
                 new ShardingSphereTable("table", Collections.emptyList(), 
Collections.emptyList(), Collections.emptyList())), Collections.emptyMap());
     }
@@ -70,12 +70,12 @@ class ShowTableStatusMergedResultTest {
     
     @Test
     void assertNextForEmptyQueryResult() throws SQLException {
-        assertFalse(new ShowTableStatusMergedResult(shardingRule, 
mock(SQLStatementContext.class), schema, Collections.emptyList()).next());
+        assertFalse(new ShowTableStatusMergedResult(rule, 
mock(SQLStatementContext.class), schema, Collections.emptyList()).next());
     }
     
     @Test
     void assertNextForTableRuleIsPresent() throws SQLException {
-        MergedResult mergedResult = new 
ShowTableStatusMergedResult(shardingRule, mock(SQLStatementContext.class), 
schema, Collections.singletonList(mockQueryResult()));
+        MergedResult mergedResult = new ShowTableStatusMergedResult(rule, 
mock(SQLStatementContext.class), schema, 
Collections.singletonList(mockQueryResult()));
         assertTrue(mergedResult.next());
         assertFalse(mergedResult.next());
     }

Reply via email to