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

panjuan 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 b18367e95e4 Fix sonar issues on Combine this loop with the one that 
starts (#25829)
b18367e95e4 is described below

commit b18367e95e4dc977d9d2ee506b1036f04c4104de
Author: Liang Zhang <[email protected]>
AuthorDate: Sun May 21 22:18:55 2023 +0800

    Fix sonar issues on Combine this loop with the one that starts (#25829)
---
 .../statement/dml/DeleteStatementContext.java       | 15 ++++++++++-----
 .../StandaloneContextManagerBuilderTest.java        |  2 +-
 .../connector/ProxyDatabaseConnectionManager.java   | 20 ++++++++++++--------
 .../asserts/segment/orderby/OrderByItemAssert.java  | 21 ++++++++++++++++-----
 4 files changed, 39 insertions(+), 19 deletions(-)

diff --git 
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/statement/dml/DeleteStatementContext.java
 
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/statement/dml/DeleteStatementContext.java
index 034fcd705af..92f05d3a6c7 100644
--- 
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/statement/dml/DeleteStatementContext.java
+++ 
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/statement/dml/DeleteStatementContext.java
@@ -60,13 +60,10 @@ public final class DeleteStatementContext extends 
CommonSQLStatementContext impl
     }
     
     private Collection<SimpleTableSegment> filterAliasDeleteTable(final 
Collection<SimpleTableSegment> tableSegments) {
-        Map<String, SimpleTableSegment> aliasTableSegmentMap = new 
HashMap<>(tableSegments.size(), 1f);
-        for (SimpleTableSegment each : tableSegments) {
-            each.getAlias().ifPresent(optional -> 
aliasTableSegmentMap.putIfAbsent(optional, each));
-        }
         Collection<SimpleTableSegment> result = new LinkedList<>();
+        Map<String, SimpleTableSegment> aliasAndTableSegmentMap = 
getAliasAndTableSegmentMap(tableSegments);
         for (SimpleTableSegment each : tableSegments) {
-            SimpleTableSegment aliasDeleteTable = 
aliasTableSegmentMap.get(each.getTableName().getIdentifier().getValue());
+            SimpleTableSegment aliasDeleteTable = 
aliasAndTableSegmentMap.get(each.getTableName().getIdentifier().getValue());
             if (null == aliasDeleteTable || aliasDeleteTable.equals(each)) {
                 result.add(each);
             }
@@ -74,6 +71,14 @@ public final class DeleteStatementContext extends 
CommonSQLStatementContext impl
         return result;
     }
     
+    private Map<String, SimpleTableSegment> getAliasAndTableSegmentMap(final 
Collection<SimpleTableSegment> tableSegments) {
+        Map<String, SimpleTableSegment> result = new 
HashMap<>(tableSegments.size(), 1);
+        for (SimpleTableSegment each : tableSegments) {
+            each.getAlias().ifPresent(optional -> result.putIfAbsent(optional, 
each));
+        }
+        return result;
+    }
+    
     @Override
     public DeleteStatement getSqlStatement() {
         return (DeleteStatement) super.getSqlStatement();
diff --git 
a/mode/type/standalone/core/src/test/java/org/apache/shardingsphere/mode/manager/standalone/StandaloneContextManagerBuilderTest.java
 
b/mode/type/standalone/core/src/test/java/org/apache/shardingsphere/mode/manager/standalone/StandaloneContextManagerBuilderTest.java
index 9345e5462d0..af0843a7d03 100644
--- 
a/mode/type/standalone/core/src/test/java/org/apache/shardingsphere/mode/manager/standalone/StandaloneContextManagerBuilderTest.java
+++ 
b/mode/type/standalone/core/src/test/java/org/apache/shardingsphere/mode/manager/standalone/StandaloneContextManagerBuilderTest.java
@@ -52,7 +52,7 @@ class StandaloneContextManagerBuilderTest {
             
assertNotNull(repository.getDirectly(GlobalNode.getGlobalRuleNode()));
             
assertNotNull(repository.getDirectly(DatabaseMetaDataNode.getMetaDataDataSourcePath("foo_db",
 "0")));
             
assertNotNull(repository.getDirectly(DatabaseMetaDataNode.getRulePath("foo_db", 
"0")));
-        } 
+        }
     }
     
     private ContextManagerBuilderParameter 
createContextManagerBuilderParameter() {
diff --git 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/connector/ProxyDatabaseConnectionManager.java
 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/connector/ProxyDatabaseConnectionManager.java
index 00e8103a2e4..551a54938d5 100644
--- 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/connector/ProxyDatabaseConnectionManager.java
+++ 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/connector/ProxyDatabaseConnectionManager.java
@@ -125,20 +125,25 @@ public final class ProxyDatabaseConnectionManager 
implements DatabaseConnectionM
         }
         String databaseType = 
connections.iterator().next().getMetaData().getDatabaseProductName();
         List<String> setSQLs = 
connectionSession.getRequiredSessionVariableRecorder().toSetSQLs(databaseType);
-        SQLException sqlException = null;
+        try {
+            executeSetSessionVariables(connections, setSQLs);
+        } catch (final SQLException ex) {
+            releaseConnection(connections, ex);
+            throw ex;
+        }
+    }
+    
+    private void executeSetSessionVariables(final List<Connection> 
connections, final List<String> setSQLs) throws SQLException {
         for (Connection each : connections) {
             try (Statement statement = each.createStatement()) {
                 for (String eachSetSQL : setSQLs) {
                     statement.execute(eachSetSQL);
                 }
-            } catch (final SQLException ex) {
-                sqlException = ex;
-                break;
             }
         }
-        if (null == sqlException) {
-            return;
-        }
+    }
+    
+    private void releaseConnection(final List<Connection> connections, final 
SQLException sqlException) {
         for (Connection each : connections) {
             try {
                 each.close();
@@ -146,7 +151,6 @@ public final class ProxyDatabaseConnectionManager 
implements DatabaseConnectionM
                 sqlException.setNextException(ex);
             }
         }
-        throw sqlException;
     }
     
     private void replayMethodsInvocation(final Connection target) throws 
SQLException {
diff --git 
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/segment/orderby/OrderByItemAssert.java
 
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/segment/orderby/OrderByItemAssert.java
index 923c8aeb801..a6c549c144f 100644
--- 
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/segment/orderby/OrderByItemAssert.java
+++ 
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/segment/orderby/OrderByItemAssert.java
@@ -53,11 +53,16 @@ public final class OrderByItemAssert {
      * @param assertContext assert context
      * @param actual actual order by segments
      * @param expected expected order by
-     * @param type type of assertion, should be Order by or Group by
+     * @param type type of assertion, should be order by or group by
      */
-    public static void assertIs(final SQLCaseAssertContext assertContext,
-                                final Collection<OrderByItemSegment> actual, 
final ExpectedOrderByClause expected, final String type) {
+    public static void assertIs(final SQLCaseAssertContext assertContext, 
final Collection<OrderByItemSegment> actual, final ExpectedOrderByClause 
expected, final String type) {
         assertThat(assertContext.getText(String.format("%s items size 
assertion error: ", type)), actual.size(), is(expected.getItemSize()));
+        assertColumnOrderByItems(assertContext, actual, expected, type);
+        assertIndexOrderByItems(assertContext, actual, expected, type);
+        assertExpressionOrderByItems(assertContext, actual, expected, type);
+    }
+    
+    private static void assertColumnOrderByItems(final SQLCaseAssertContext 
assertContext, final Collection<OrderByItemSegment> actual, final 
ExpectedOrderByClause expected, final String type) {
         int count = 0;
         for (OrderByItemSegment each : actual) {
             if (each instanceof ColumnOrderByItemSegment) {
@@ -66,7 +71,10 @@ public final class OrderByItemAssert {
                 count++;
             }
         }
-        count = 0;
+    }
+    
+    private static void assertIndexOrderByItems(final SQLCaseAssertContext 
assertContext, final Collection<OrderByItemSegment> actual, final 
ExpectedOrderByClause expected, final String type) {
+        int count = 0;
         for (OrderByItemSegment each : actual) {
             if (each instanceof IndexOrderByItemSegment) {
                 assertOrderInfo(assertContext, each, 
expected.getIndexItems().get(count), type);
@@ -74,7 +82,10 @@ public final class OrderByItemAssert {
                 count++;
             }
         }
-        count = 0;
+    }
+    
+    private static void assertExpressionOrderByItems(final 
SQLCaseAssertContext assertContext, final Collection<OrderByItemSegment> 
actual, final ExpectedOrderByClause expected, final String type) {
+        int count = 0;
         for (OrderByItemSegment each : actual) {
             if (each instanceof ExpressionOrderByItemSegment) {
                 assertOrderInfo(assertContext, each, 
expected.getExpressionItems().get(count), type);

Reply via email to