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

yx9o 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 0d95caf0da5 Fix sonar issues (#28560)
0d95caf0da5 is described below

commit 0d95caf0da5e702a064c8f7e600a4670990ca621
Author: Liang Zhang <[email protected]>
AuthorDate: Sun Sep 24 00:25:16 2023 +0800

    Fix sonar issues (#28560)
    
    * Refactor ShardingRule
    
    * Fix sonar issue on ShardingIndexReviser
    
    * Fix sonar issue on MySQLComStmtPrepareExecutor
    
    * For code format
---
 .../metadata/reviser/index/ShardingIndexReviser.java   | 13 ++++++-------
 .../shardingsphere/sharding/rule/ShardingRule.java     | 18 +++++++++---------
 .../binary/prepare/MySQLComStmtPrepareExecutor.java    |  7 +++----
 3 files changed, 18 insertions(+), 20 deletions(-)

diff --git 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/metadata/reviser/index/ShardingIndexReviser.java
 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/metadata/reviser/index/ShardingIndexReviser.java
index 00c6b9e86b3..676050cc7b1 100644
--- 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/metadata/reviser/index/ShardingIndexReviser.java
+++ 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/metadata/reviser/index/ShardingIndexReviser.java
@@ -19,7 +19,6 @@ package 
org.apache.shardingsphere.sharding.metadata.reviser.index;
 
 import lombok.RequiredArgsConstructor;
 import 
org.apache.shardingsphere.infra.database.core.metadata.data.model.IndexMetaData;
-import org.apache.shardingsphere.infra.datanode.DataNode;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.reviser.index.IndexReviser;
 import org.apache.shardingsphere.sharding.rule.ShardingRule;
 import org.apache.shardingsphere.sharding.rule.TableRule;
@@ -36,13 +35,13 @@ public final class ShardingIndexReviser implements 
IndexReviser<ShardingRule> {
     
     @Override
     public Optional<IndexMetaData> revise(final String tableName, final 
IndexMetaData originalMetaData, final ShardingRule rule) {
-        for (DataNode each : tableRule.getActualDataNodes()) {
-            IndexMetaData result = new 
IndexMetaData(getLogicIndex(originalMetaData.getName(), each.getTableName()));
-            result.getColumns().addAll(originalMetaData.getColumns());
-            result.setUnique(originalMetaData.isUnique());
-            return Optional.of(result);
+        if (tableRule.getActualDataNodes().isEmpty()) {
+            return Optional.empty();
         }
-        return Optional.empty();
+        IndexMetaData result = new 
IndexMetaData(getLogicIndex(originalMetaData.getName(), 
tableRule.getActualDataNodes().iterator().next().getTableName()));
+        result.getColumns().addAll(originalMetaData.getColumns());
+        result.setUnique(originalMetaData.isUnique());
+        return Optional.of(result);
     }
     
     private String getLogicIndex(final String actualIndexName, final String 
actualTableName) {
diff --git 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rule/ShardingRule.java
 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rule/ShardingRule.java
index cd35c79d082..2b38f3e591e 100644
--- 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rule/ShardingRule.java
+++ 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rule/ShardingRule.java
@@ -692,6 +692,15 @@ public final class ShardingRule implements DatabaseRule, 
DataNodeContainedRule,
                 .orElseGet(Collections::emptyMap);
     }
     
+    /**
+     * Is sharding cache enabled.
+     *
+     * @return is sharding cache enabled
+     */
+    public boolean isShardingCacheEnabled() {
+        return null != shardingCache;
+    }
+    
     @Override
     public Map<String, Collection<DataNode>> getAllDataNodes() {
         return shardingTableDataNodes;
@@ -784,13 +793,4 @@ public final class ShardingRule implements DatabaseRule, 
DataNodeContainedRule,
         BinaryOperationExpression binaryExpression = 
(BinaryOperationExpression) expression;
         return binaryExpression.getLeft() instanceof ColumnSegment && 
binaryExpression.getRight() instanceof ColumnSegment && 
"=".equals(binaryExpression.getOperator());
     }
-    
-    /**
-     * Is sharding cache enabled.
-     *
-     * @return is sharding cache enabled
-     */
-    public boolean isShardingCacheEnabled() {
-        return null != shardingCache;
-    }
 }
diff --git 
a/proxy/frontend/type/mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/binary/prepare/MySQLComStmtPrepareExecutor.java
 
b/proxy/frontend/type/mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/binary/prepare/MySQLComStmtPrepareExecutor.java
index 70ff9f74e08..1c6d7989936 100644
--- 
a/proxy/frontend/type/mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/binary/prepare/MySQLComStmtPrepareExecutor.java
+++ 
b/proxy/frontend/type/mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/binary/prepare/MySQLComStmtPrepareExecutor.java
@@ -56,7 +56,6 @@ import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.LinkedList;
-import java.util.List;
 import java.util.Map;
 import java.util.Optional;
 import java.util.concurrent.CopyOnWriteArrayList;
@@ -99,7 +98,7 @@ public final class MySQLComStmtPrepareExecutor implements 
CommandExecutor {
     
     private Collection<DatabasePacket> createPackets(final SQLStatementContext 
sqlStatementContext, final int statementId, final MySQLServerPreparedStatement 
serverPreparedStatement) {
         Collection<DatabasePacket> result = new LinkedList<>();
-        List<Projection> projections = getProjections(sqlStatementContext);
+        Collection<Projection> projections = 
getProjections(sqlStatementContext);
         int parameterCount = 
sqlStatementContext.getSqlStatement().getParameterCount();
         result.add(new MySQLComStmtPrepareOKPacket(statementId, 
projections.size(), parameterCount, 0));
         int characterSet = 
connectionSession.getAttributeMap().attr(MySQLConstants.MYSQL_CHARACTER_SET_ATTRIBUTE_KEY).get().getId();
@@ -108,14 +107,14 @@ public final class MySQLComStmtPrepareExecutor implements 
CommandExecutor {
             
result.addAll(createParameterColumnDefinition41Packets(sqlStatementContext, 
characterSet, serverPreparedStatement));
             result.add(new MySQLEofPacket(statusFlags));
         }
-        if (!projections.isEmpty()) {
+        if (!projections.isEmpty() && sqlStatementContext instanceof 
SelectStatementContext) {
             
result.addAll(createProjectionColumnDefinition41Packets((SelectStatementContext)
 sqlStatementContext, characterSet));
             result.add(new MySQLEofPacket(statusFlags));
         }
         return result;
     }
     
-    private List<Projection> getProjections(final SQLStatementContext 
sqlStatementContext) {
+    private Collection<Projection> getProjections(final SQLStatementContext 
sqlStatementContext) {
         return sqlStatementContext instanceof SelectStatementContext ? 
((SelectStatementContext) 
sqlStatementContext).getProjectionsContext().getExpandProjections() : 
Collections.emptyList();
     }
     

Reply via email to