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 0a6b51e6803 Fix sonar issue on WhereClauseShardingConditionEngine 
(#34143)
0a6b51e6803 is described below

commit 0a6b51e68039fe811ea906d3096f73a43d467a15
Author: Liang Zhang <[email protected]>
AuthorDate: Tue Dec 24 22:17:28 2024 +0800

    Fix sonar issue on WhereClauseShardingConditionEngine (#34143)
---
 .../checker/ShardingRouteCacheableChecker.java     | 22 ++++++++++----------
 .../InsertClauseShardingConditionEngine.java       |  2 +-
 .../condition/engine/ShardingConditionEngine.java  |  2 +-
 .../engine/WhereClauseShardingConditionEngine.java | 17 ++-------------
 .../WhereClauseShardingConditionEngineTest.java    | 24 +++++++---------------
 5 files changed, 22 insertions(+), 45 deletions(-)

diff --git 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/cache/checker/ShardingRouteCacheableChecker.java
 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/cache/checker/ShardingRouteCacheableChecker.java
index 9a308d3d1d2..67b6160b7dd 100644
--- 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/cache/checker/ShardingRouteCacheableChecker.java
+++ 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/cache/checker/ShardingRouteCacheableChecker.java
@@ -86,13 +86,13 @@ public final class ShardingRouteCacheableChecker {
         SQLStatementContext sqlStatementContext = key.getSqlStatementContext();
         ShardingRouteCacheableCheckResult result;
         if (sqlStatementContext instanceof SelectStatementContext) {
-            result = checkSelectCacheable((SelectStatementContext) 
sqlStatementContext, key.getParameters(), key.getDatabase());
+            result = checkSelectCacheable((SelectStatementContext) 
sqlStatementContext, key.getParameters());
         } else if (sqlStatementContext instanceof UpdateStatementContext) {
-            result = checkUpdateCacheable((UpdateStatementContext) 
sqlStatementContext, key.getParameters(), key.getDatabase());
+            result = checkUpdateCacheable((UpdateStatementContext) 
sqlStatementContext, key.getParameters());
         } else if (sqlStatementContext instanceof InsertStatementContext) {
             result = checkInsertCacheable((InsertStatementContext) 
sqlStatementContext, key.getParameters(), key.getDatabase());
         } else if (sqlStatementContext instanceof DeleteStatementContext) {
-            result = checkDeleteCacheable((DeleteStatementContext) 
sqlStatementContext, key.getParameters(), key.getDatabase());
+            result = checkDeleteCacheable((DeleteStatementContext) 
sqlStatementContext, key.getParameters());
         } else {
             result = new ShardingRouteCacheableCheckResult(false, 
Collections.emptyList());
         }
@@ -100,7 +100,7 @@ public final class ShardingRouteCacheableChecker {
         return result;
     }
     
-    private ShardingRouteCacheableCheckResult checkSelectCacheable(final 
SelectStatementContext statementContext, final List<Object> params, final 
ShardingSphereDatabase database) {
+    private ShardingRouteCacheableCheckResult checkSelectCacheable(final 
SelectStatementContext statementContext, final List<Object> params) {
         Collection<String> tableNames = new 
HashSet<>(statementContext.getTablesContext().getTableNames());
         if (!shardingRule.isAllShardingTables(tableNames)) {
             return new ShardingRouteCacheableCheckResult(false, 
Collections.emptyList());
@@ -108,12 +108,12 @@ public final class ShardingRouteCacheableChecker {
         if (1 != tableNames.size() && 
!shardingRule.isAllBindingTables(tableNames) || 
containsNonCacheableShardingAlgorithm(tableNames)) {
             return new ShardingRouteCacheableCheckResult(false, 
Collections.emptyList());
         }
-        List<ShardingCondition> shardingConditions = new 
WhereClauseShardingConditionEngine(database, shardingRule, 
timestampServiceRule).createShardingConditions(statementContext, params);
+        List<ShardingCondition> shardingConditions = new 
WhereClauseShardingConditionEngine(shardingRule, 
timestampServiceRule).createShardingConditions(statementContext, params);
         return checkShardingConditionsCacheable(shardingConditions);
     }
     
-    private ShardingRouteCacheableCheckResult checkUpdateCacheable(final 
UpdateStatementContext statementContext, final List<Object> params, final 
ShardingSphereDatabase database) {
-        return checkUpdateOrDeleteCacheable(statementContext, params, 
database);
+    private ShardingRouteCacheableCheckResult checkUpdateCacheable(final 
UpdateStatementContext statementContext, final List<Object> params) {
+        return checkUpdateOrDeleteCacheable(statementContext, params);
     }
     
     private ShardingRouteCacheableCheckResult checkInsertCacheable(final 
InsertStatementContext statementContext, final List<Object> params, final 
ShardingSphereDatabase database) {
@@ -140,11 +140,11 @@ public final class ShardingRouteCacheableChecker {
         return checkShardingConditionsCacheable(shardingConditions);
     }
     
-    private ShardingRouteCacheableCheckResult checkDeleteCacheable(final 
DeleteStatementContext statementContext, final List<Object> params, final 
ShardingSphereDatabase database) {
-        return checkUpdateOrDeleteCacheable(statementContext, params, 
database);
+    private ShardingRouteCacheableCheckResult checkDeleteCacheable(final 
DeleteStatementContext statementContext, final List<Object> params) {
+        return checkUpdateOrDeleteCacheable(statementContext, params);
     }
     
-    private ShardingRouteCacheableCheckResult 
checkUpdateOrDeleteCacheable(final SQLStatementContext sqlStatementContext, 
final List<Object> params, final ShardingSphereDatabase database) {
+    private ShardingRouteCacheableCheckResult 
checkUpdateOrDeleteCacheable(final SQLStatementContext sqlStatementContext, 
final List<Object> params) {
         Collection<String> tableNames = ((TableAvailable) 
sqlStatementContext).getTablesContext().getTableNames();
         if (1 != tableNames.size()) {
             return new ShardingRouteCacheableCheckResult(false, 
Collections.emptyList());
@@ -153,7 +153,7 @@ public final class ShardingRouteCacheableChecker {
         if (!isShardingTable || 
containsNonCacheableShardingAlgorithm(tableNames)) {
             return new ShardingRouteCacheableCheckResult(false, 
Collections.emptyList());
         }
-        List<ShardingCondition> shardingConditions = new 
WhereClauseShardingConditionEngine(database, shardingRule, 
timestampServiceRule).createShardingConditions(sqlStatementContext, params);
+        List<ShardingCondition> shardingConditions = new 
WhereClauseShardingConditionEngine(shardingRule, 
timestampServiceRule).createShardingConditions(sqlStatementContext, params);
         return checkShardingConditionsCacheable(shardingConditions);
     }
     
diff --git 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/route/engine/condition/engine/InsertClauseShardingConditionEngine.java
 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/route/engine/condition/engine/InsertClauseShardingConditionEngine.java
index 15c7cd56153..7bee81e16c7 100644
--- 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/route/engine/condition/engine/InsertClauseShardingConditionEngine.java
+++ 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/route/engine/condition/engine/InsertClauseShardingConditionEngine.java
@@ -164,7 +164,7 @@ public final class InsertClauseShardingConditionEngine {
     
     private List<ShardingCondition> 
createShardingConditionsWithInsertSelect(final InsertStatementContext 
sqlStatementContext, final List<Object> params) {
         SelectStatementContext selectStatementContext = 
sqlStatementContext.getInsertSelectContext().getSelectStatementContext();
-        return new LinkedList<>(new 
WhereClauseShardingConditionEngine(database, rule, 
timestampServiceRule).createShardingConditions(selectStatementContext, params));
+        return new LinkedList<>(new WhereClauseShardingConditionEngine(rule, 
timestampServiceRule).createShardingConditions(selectStatementContext, params));
     }
     
     private void appendGeneratedKeyConditions(final InsertStatementContext 
sqlStatementContext, final List<ShardingCondition> shardingConditions) {
diff --git 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/route/engine/condition/engine/ShardingConditionEngine.java
 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/route/engine/condition/engine/ShardingConditionEngine.java
index 72eff8f587e..512c94de926 100644
--- 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/route/engine/condition/engine/ShardingConditionEngine.java
+++ 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/route/engine/condition/engine/ShardingConditionEngine.java
@@ -51,6 +51,6 @@ public final class ShardingConditionEngine {
         TimestampServiceRule timestampServiceRule = 
globalRuleMetaData.getSingleRule(TimestampServiceRule.class);
         return sqlStatementContext instanceof InsertStatementContext
                 ? new InsertClauseShardingConditionEngine(database, 
shardingRule, 
timestampServiceRule).createShardingConditions((InsertStatementContext) 
sqlStatementContext, params)
-                : new WhereClauseShardingConditionEngine(database, 
shardingRule, 
timestampServiceRule).createShardingConditions(sqlStatementContext, params);
+                : new WhereClauseShardingConditionEngine(shardingRule, 
timestampServiceRule).createShardingConditions(sqlStatementContext, params);
     }
 }
diff --git 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/route/engine/condition/engine/WhereClauseShardingConditionEngine.java
 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/route/engine/condition/engine/WhereClauseShardingConditionEngine.java
index 8a9eb3f0aec..d558597ea3e 100644
--- 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/route/engine/condition/engine/WhereClauseShardingConditionEngine.java
+++ 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/route/engine/condition/engine/WhereClauseShardingConditionEngine.java
@@ -21,11 +21,7 @@ import com.google.common.collect.Range;
 import lombok.RequiredArgsConstructor;
 import 
org.apache.shardingsphere.infra.binder.context.extractor.SQLStatementContextExtractor;
 import 
org.apache.shardingsphere.infra.binder.context.statement.SQLStatementContext;
-import org.apache.shardingsphere.infra.binder.context.type.TableAvailable;
 import org.apache.shardingsphere.infra.binder.context.type.WhereAvailable;
-import org.apache.shardingsphere.infra.database.core.type.DatabaseTypeRegistry;
-import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
-import 
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
 import 
org.apache.shardingsphere.sharding.exception.data.ShardingValueDataTypeException;
 import 
org.apache.shardingsphere.sharding.route.engine.condition.AlwaysFalseShardingCondition;
 import org.apache.shardingsphere.sharding.route.engine.condition.Column;
@@ -63,9 +59,7 @@ import java.util.Set;
 @RequiredArgsConstructor
 public final class WhereClauseShardingConditionEngine {
     
-    private final ShardingSphereDatabase database;
-    
-    private final ShardingRule shardingRule;
+    private final ShardingRule rule;
     
     private final TimestampServiceRule timestampServiceRule;
     
@@ -103,19 +97,12 @@ public final class WhereClauseShardingConditionEngine {
         return result;
     }
     
-    private ShardingSphereSchema getSchema(final SQLStatementContext 
sqlStatementContext, final ShardingSphereDatabase database) {
-        String defaultSchemaName = new 
DatabaseTypeRegistry(sqlStatementContext.getDatabaseType()).getDefaultSchemaName(database.getName());
-        return sqlStatementContext instanceof TableAvailable
-                ? ((TableAvailable) 
sqlStatementContext).getTablesContext().getSchemaName().map(database::getSchema).orElseGet(()
 -> database.getSchema(defaultSchemaName))
-                : database.getSchema(defaultSchemaName);
-    }
-    
     private Map<Column, Collection<ShardingConditionValue>> 
createShardingConditionValueMap(final Collection<ExpressionSegment> predicates, 
final List<Object> params) {
         Map<Column, Collection<ShardingConditionValue>> result = new 
HashMap<>(predicates.size(), 1F);
         for (ExpressionSegment each : predicates) {
             for (ColumnSegment columnSegment : ColumnExtractor.extract(each)) {
                 String tableName = 
columnSegment.getColumnBoundInfo().getOriginalTable().getValue();
-                Optional<String> shardingColumn = 
shardingRule.findShardingColumn(columnSegment.getColumnBoundInfo().getOriginalColumn().getValue(),
 tableName);
+                Optional<String> shardingColumn = 
rule.findShardingColumn(columnSegment.getColumnBoundInfo().getOriginalColumn().getValue(),
 tableName);
                 if (!shardingColumn.isPresent()) {
                     continue;
                 }
diff --git 
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/route/engine/condition/engine/WhereClauseShardingConditionEngineTest.java
 
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/route/engine/condition/engine/WhereClauseShardingConditionEngineTest.java
index d85bba0435e..ba8b39a7c12 100644
--- 
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/route/engine/condition/engine/WhereClauseShardingConditionEngineTest.java
+++ 
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/route/engine/condition/engine/WhereClauseShardingConditionEngineTest.java
@@ -17,12 +17,7 @@
 
 package org.apache.shardingsphere.sharding.route.engine.condition.engine;
 
-import 
org.apache.shardingsphere.infra.binder.context.segment.table.TablesContext;
 import 
org.apache.shardingsphere.infra.binder.context.statement.dml.SelectStatementContext;
-import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
-import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
-import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
-import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
 import 
org.apache.shardingsphere.sharding.route.engine.condition.ShardingCondition;
 import 
org.apache.shardingsphere.sharding.route.engine.condition.value.ListShardingConditionValue;
 import 
org.apache.shardingsphere.sharding.route.engine.condition.value.RangeShardingConditionValue;
@@ -45,11 +40,10 @@ import org.mockito.junit.jupiter.MockitoExtension;
 import java.util.Collections;
 import java.util.List;
 import java.util.Optional;
-import java.util.Properties;
 
+import static org.hamcrest.CoreMatchers.instanceOf;
 import static org.hamcrest.CoreMatchers.is;
 import static org.hamcrest.MatcherAssert.assertThat;
-import static org.junit.jupiter.api.Assertions.assertTrue;
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
@@ -60,7 +54,7 @@ class WhereClauseShardingConditionEngineTest {
     private WhereClauseShardingConditionEngine shardingConditionEngine;
     
     @Mock
-    private ShardingRule shardingRule;
+    private ShardingRule rule;
     
     @Mock
     private SelectStatementContext sqlStatementContext;
@@ -68,13 +62,9 @@ class WhereClauseShardingConditionEngineTest {
     @Mock
     private WhereSegment whereSegment;
     
-    @Mock
-    private TablesContext tablesContext;
-    
     @BeforeEach
     void setUp() {
-        shardingConditionEngine = new 
WhereClauseShardingConditionEngine(ShardingSphereDatabase.create("test_db",
-                TypedSPILoader.getService(DatabaseType.class, "FIXTURE"), new 
ConfigurationProperties(new Properties())), shardingRule, 
mock(TimestampServiceRule.class));
+        shardingConditionEngine = new WhereClauseShardingConditionEngine(rule, 
mock(TimestampServiceRule.class));
         
when(sqlStatementContext.getWhereSegments()).thenReturn(Collections.singleton(whereSegment));
     }
     
@@ -87,10 +77,10 @@ class WhereClauseShardingConditionEngineTest {
         ExpressionSegment andSegment = new LiteralExpressionSegment(0, 0, and);
         BetweenExpression betweenExpression = new BetweenExpression(0, 0, 
left, betweenSegment, andSegment, false);
         when(whereSegment.getExpr()).thenReturn(betweenExpression);
-        when(shardingRule.findShardingColumn(any(), 
any())).thenReturn(Optional.of("foo_sharding_col"));
+        when(rule.findShardingColumn(any(), 
any())).thenReturn(Optional.of("foo_sharding_col"));
         List<ShardingCondition> actual = 
shardingConditionEngine.createShardingConditions(sqlStatementContext, 
Collections.emptyList());
         assertThat(actual.get(0).getStartIndex(), is(0));
-        assertTrue(actual.get(0).getValues().get(0) instanceof 
RangeShardingConditionValue);
+        assertThat(actual.get(0).getValues().get(0), 
instanceOf(RangeShardingConditionValue.class));
     }
     
     @Test
@@ -101,9 +91,9 @@ class WhereClauseShardingConditionEngineTest {
         right.getItems().add(literalExpressionSegment);
         InExpression inExpression = new InExpression(0, 0, left, right, false);
         when(whereSegment.getExpr()).thenReturn(inExpression);
-        when(shardingRule.findShardingColumn(any(), 
any())).thenReturn(Optional.of("foo_sharding_col"));
+        when(rule.findShardingColumn(any(), 
any())).thenReturn(Optional.of("foo_sharding_col"));
         List<ShardingCondition> actual = 
shardingConditionEngine.createShardingConditions(sqlStatementContext, 
Collections.emptyList());
         assertThat(actual.get(0).getStartIndex(), is(0));
-        assertTrue(actual.get(0).getValues().get(0) instanceof 
ListShardingConditionValue);
+        assertThat(actual.get(0).getValues().get(0), 
instanceOf(ListShardingConditionValue.class));
     }
 }

Reply via email to