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 9e2202b  fix groovy shell exception when use different case for 
shardingColumn (#14168)
9e2202b is described below

commit 9e2202bc845ce6535f4a373b6a97483a178daf48
Author: Zhengqiang Duan <[email protected]>
AuthorDate: Mon Dec 20 13:29:07 2021 +0800

    fix groovy shell exception when use different case for shardingColumn 
(#14168)
---
 .../impl/InsertClauseShardingConditionEngine.java  |  4 +--
 .../impl/WhereClauseShardingConditionEngine.java   | 21 ++++++++-----
 .../dml/ShardingDMLStatementValidator.java         |  2 +-
 .../dml/impl/ShardingInsertStatementValidator.java |  9 ------
 .../shardingsphere/sharding/rule/ShardingRule.java | 26 ++++++++++-------
 .../dml/ShardingInsertStatementValidatorTest.java  |  2 +-
 .../dml/ShardingUpdateStatementValidatorTest.java  |  3 +-
 .../sharding/rule/ShardingRuleTest.java            | 34 +++++++++++++++-------
 8 files changed, 58 insertions(+), 43 deletions(-)

diff --git 
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/route/engine/condition/engine/impl/InsertClauseShardingConditionEngine.java
 
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/route/engine/condition/engine/impl/InsertClauseShardingConditionEngine.java
index 6ff1819..1f88707 100644
--- 
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/route/engine/condition/engine/impl/InsertClauseShardingConditionEngine.java
+++ 
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/route/engine/condition/engine/impl/InsertClauseShardingConditionEngine.java
@@ -89,7 +89,7 @@ public final class InsertClauseShardingConditionEngine 
implements ShardingCondit
         DatetimeService datetimeService = 
RequiredSPIRegistry.getRegisteredService(DatetimeService.class);
         for (ExpressionSegment each : 
insertValueContext.getValueExpressions()) {
             String columnName = columnNames.next();
-            if (shardingRule.isShardingColumn(columnName, tableName)) {
+            if (shardingRule.findShardingColumn(columnName, 
tableName).isPresent()) {
                 if (each instanceof SimpleExpressionSegment) {
                     result.getValues().add(new 
ListShardingConditionValue<>(columnName, tableName, 
Collections.singletonList(getShardingValue((SimpleExpressionSegment) each, 
parameters))));
                 } else if (ExpressionConditionUtils.isNowExpression(each)) {
@@ -123,7 +123,7 @@ public final class InsertClauseShardingConditionEngine 
implements ShardingCondit
         String tableName = 
sqlStatementContext.getSqlStatement().getTable().getTableName().getIdentifier().getValue();
         if (generatedKey.isPresent() && generatedKey.get().isGenerated() && 
shardingRule.findTableRule(tableName).isPresent()) {
             
generatedKey.get().getGeneratedValues().addAll(generateKeys(tableName, 
sqlStatementContext.getValueListCount()));
-            if 
(shardingRule.isShardingColumn(generatedKey.get().getColumnName(), tableName)) {
+            if 
(shardingRule.findShardingColumn(generatedKey.get().getColumnName(), 
tableName).isPresent()) {
                 appendGeneratedKeyCondition(generatedKey.get(), tableName, 
shardingConditions);
             }
         }
diff --git 
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/route/engine/condition/engine/impl/WhereClauseShardingConditionEngine.java
 
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/route/engine/condition/engine/impl/WhereClauseShardingConditionEngine.java
index 2b928fd..6124830 100644
--- 
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/route/engine/condition/engine/impl/WhereClauseShardingConditionEngine.java
+++ 
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/route/engine/condition/engine/impl/WhereClauseShardingConditionEngine.java
@@ -96,16 +96,22 @@ public final class WhereClauseShardingConditionEngine 
implements ShardingConditi
     private Map<String, String> getColumnTableNames(final 
SQLStatementContext<?> sqlStatementContext, final Collection<AndPredicate> 
andPredicates) {
         Collection<ColumnProjection> result = new LinkedList<>();
         for (AndPredicate each : andPredicates) {
-            for (ExpressionSegment expressionSegment : each.getPredicates()) {
-                for (ColumnSegment columnSegment : 
ColumnExtractor.extract(expressionSegment)) {
-                    ColumnProjection columnProjection = 
buildColumnProjection(columnSegment);
-                    result.add(columnProjection);
-                }
+            for (ExpressionSegment expression : each.getPredicates()) {
+                result.addAll(createColumnProjections(expression));
             }
         }
         return sqlStatementContext.getTablesContext().findTableName(result, 
schema);
     }
     
+    private Collection<ColumnProjection> createColumnProjections(final 
ExpressionSegment expression) {
+        Collection<ColumnProjection> result = new LinkedList<>();
+        for (ColumnSegment each : ColumnExtractor.extract(expression)) {
+            ColumnProjection columnProjection = buildColumnProjection(each);
+            result.add(columnProjection);
+        }
+        return result;
+    }
+    
     private ColumnProjection buildColumnProjection(final ColumnSegment 
segment) {
         String owner = segment.getOwner().map(optional -> 
optional.getIdentifier().getValue()).orElse(null);
         return new ColumnProjection(owner, segment.getIdentifier().getValue(), 
null);
@@ -128,10 +134,11 @@ public final class WhereClauseShardingConditionEngine 
implements ShardingConditi
             for (ColumnSegment columnSegment : ColumnExtractor.extract(each)) {
                 ColumnProjection projection = 
buildColumnProjection(columnSegment);
                 Optional<String> tableName = 
Optional.ofNullable(columnTableNames.get(projection.getExpression()));
-                if (!tableName.isPresent() || 
!shardingRule.isShardingColumn(columnSegment.getIdentifier().getValue(), 
tableName.get())) {
+                Optional<String> shardingColumn = tableName.flatMap(optional 
-> shardingRule.findShardingColumn(columnSegment.getIdentifier().getValue(), 
optional));
+                if (!tableName.isPresent() || !shardingColumn.isPresent()) {
                     continue;
                 }
-                Column column = new Column(projection.getName(), 
tableName.get());
+                Column column = new Column(shardingColumn.get(), 
tableName.get());
                 Optional<ShardingConditionValue> shardingConditionValue = 
ConditionValueGeneratorFactory.generate(each, column, parameters);
                 if (!shardingConditionValue.isPresent()) {
                     continue;
diff --git 
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/route/engine/validator/dml/ShardingDMLStatementValidator.java
 
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/route/engine/validator/dml/ShardingDMLStatementValidator.java
index 228ccce..f4a65d8 100644
--- 
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/route/engine/validator/dml/ShardingDMLStatementValidator.java
+++ 
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/route/engine/validator/dml/ShardingDMLStatementValidator.java
@@ -121,7 +121,7 @@ public abstract class ShardingDMLStatementValidator<T 
extends SQLStatement> impl
         String tableName = 
sqlStatementContext.getTablesContext().getTableNames().iterator().next();
         for (AssignmentSegment each : assignments) {
             String shardingColumn = 
each.getColumns().get(0).getIdentifier().getValue();
-            if (shardingRule.isShardingColumn(shardingColumn, tableName)) {
+            if (shardingRule.findShardingColumn(shardingColumn, 
tableName).isPresent()) {
                 Optional<Object> assignmentValue = 
getShardingColumnAssignmentValue(each, parameters);
                 assignmentValue.ifPresent(optional -> values.add(new 
ListShardingConditionValue(shardingColumn, tableName, 
Collections.singletonList(optional))));
             }
diff --git 
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/route/engine/validator/dml/impl/ShardingInsertStatementValidator.java
 
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/route/engine/validator/dml/impl/ShardingInsertStatementValidator.java
index 6e11f78..ca36d7e 100644
--- 
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/route/engine/validator/dml/impl/ShardingInsertStatementValidator.java
+++ 
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/route/engine/validator/dml/impl/ShardingInsertStatementValidator.java
@@ -68,15 +68,6 @@ public final class ShardingInsertStatementValidator extends 
ShardingDMLStatement
         }
     }
     
-    private boolean isUpdateShardingKey(final ShardingRule shardingRule, final 
OnDuplicateKeyColumnsSegment onDuplicateKeyColumnsSegment, final String 
tableName) {
-        for (AssignmentSegment each : 
onDuplicateKeyColumnsSegment.getColumns()) {
-            if 
(shardingRule.isShardingColumn(each.getColumns().get(0).getIdentifier().getValue(),
 tableName)) {
-                return true;
-            }
-        }
-        return false;
-    }
-    
     private boolean isContainsKeyGenerateStrategy(final ShardingRule 
shardingRule, final String tableName) {
         return shardingRule.findGenerateKeyColumnName(tableName).isPresent();
     }
diff --git 
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/rule/ShardingRule.java
 
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/rule/ShardingRule.java
index 6f4770c..dcbe5fa 100644
--- 
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/rule/ShardingRule.java
+++ 
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/rule/ShardingRule.java
@@ -393,35 +393,39 @@ public final class ShardingRule implements SchemaRule, 
DataNodeContainedRule, Ta
     }
     
     /**
-     * Judge whether given logic table column is sharding column or not.
+     * Find sharding column.
      *
      * @param columnName column name
      * @param tableName table name
-     * @return whether given logic table column is sharding column or not
+     * @return sharding column
      */
-    public boolean isShardingColumn(final String columnName, final String 
tableName) {
-        return 
Optional.ofNullable(tableRules.get(tableName.toLowerCase())).filter(each -> 
isShardingColumn(each, columnName)).isPresent();
+    public Optional<String> findShardingColumn(final String columnName, final 
String tableName) {
+        return 
Optional.ofNullable(tableRules.get(tableName.toLowerCase())).flatMap(optional 
-> findShardingColumn(optional, columnName));
     }
     
-    private boolean isShardingColumn(final TableRule tableRule, final String 
columnName) {
-        return 
isShardingColumn(getDatabaseShardingStrategyConfiguration(tableRule), 
columnName) || 
isShardingColumn(getTableShardingStrategyConfiguration(tableRule), columnName);
+    private Optional<String> findShardingColumn(final TableRule tableRule, 
final String columnName) {
+        Optional<String> databaseShardingColumn = 
findShardingColumn(getDatabaseShardingStrategyConfiguration(tableRule), 
columnName);
+        if (databaseShardingColumn.isPresent()) {
+            return databaseShardingColumn;
+        }
+        return 
findShardingColumn(getTableShardingStrategyConfiguration(tableRule), 
columnName);
     }
     
-    private boolean isShardingColumn(final ShardingStrategyConfiguration 
shardingStrategyConfig, final String columnName) {
+    private Optional<String> findShardingColumn(final 
ShardingStrategyConfiguration shardingStrategyConfig, final String columnName) {
         if (shardingStrategyConfig instanceof 
StandardShardingStrategyConfiguration) {
             String shardingColumn = null == 
((StandardShardingStrategyConfiguration) 
shardingStrategyConfig).getShardingColumn()
                     ? defaultShardingColumn : 
((StandardShardingStrategyConfiguration) 
shardingStrategyConfig).getShardingColumn();
-            return shardingColumn.equalsIgnoreCase(columnName);
+            return shardingColumn.equalsIgnoreCase(columnName) ? 
Optional.of(shardingColumn) : Optional.empty();
         }
         if (shardingStrategyConfig instanceof 
ComplexShardingStrategyConfiguration) {
             List<String> shardingColumns = 
Splitter.on(",").trimResults().splitToList(((ComplexShardingStrategyConfiguration)
 shardingStrategyConfig).getShardingColumns());
             for (String each : shardingColumns) {
                 if (each.equalsIgnoreCase(columnName)) {
-                    return true;
+                    return Optional.of(each);
                 }
             }
         }
-        return false;
+        return Optional.empty();
     } 
     
     /**
@@ -606,7 +610,7 @@ public final class ShardingRule implements SchemaRule, 
DataNodeContainedRule, Ta
                     ? 
getDatabaseShardingStrategyConfiguration(leftTableRule.get()) : 
getTableShardingStrategyConfiguration(leftTableRule.get());
             ShardingStrategyConfiguration rightConfiguration = 
isDatabaseJoinCondition
                     ? 
getDatabaseShardingStrategyConfiguration(rightTableRule.get()) : 
getTableShardingStrategyConfiguration(rightTableRule.get());
-            if (isShardingColumn(leftConfiguration, leftColumn.getName()) && 
isShardingColumn(rightConfiguration, rightColumn.getName())) {
+            if (findShardingColumn(leftConfiguration, 
leftColumn.getName()).isPresent() && findShardingColumn(rightConfiguration, 
rightColumn.getName()).isPresent()) {
                 result.add(columnTableNames.get(leftColumn.getExpression()));
                 result.add(columnTableNames.get(rightColumn.getExpression()));
             }
diff --git 
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/route/engine/validator/dml/ShardingInsertStatementValidatorTest.java
 
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/route/engine/validator/dml/ShardingInsertStatementValidatorTest.java
index 89a4bd3..647cd3f 100644
--- 
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/route/engine/validator/dml/ShardingInsertStatementValidatorTest.java
+++ 
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/route/engine/validator/dml/ShardingInsertStatementValidatorTest.java
@@ -205,7 +205,7 @@ public final class ShardingInsertStatementValidatorTest {
         TableRule tableRule = mock(TableRule.class);
         
when(tableRule.getActualDatasourceNames()).thenReturn(Arrays.asList("ds_0", 
"ds_1"));
         
when(tableRule.getActualTableNames("ds_1")).thenReturn(Collections.singletonList("user"));
-        when(shardingRule.isShardingColumn("id", "user")).thenReturn(true);
+        when(shardingRule.findShardingColumn("id", 
"user")).thenReturn(Optional.of("id"));
         when(shardingRule.getTableRule("user")).thenReturn(tableRule);
         StandardShardingStrategyConfiguration databaseStrategyConfiguration = 
mock(StandardShardingStrategyConfiguration.class);
         
when(databaseStrategyConfiguration.getShardingColumn()).thenReturn("id");
diff --git 
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/route/engine/validator/dml/ShardingUpdateStatementValidatorTest.java
 
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/route/engine/validator/dml/ShardingUpdateStatementValidatorTest.java
index 67de0ac..7f8f576 100644
--- 
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/route/engine/validator/dml/ShardingUpdateStatementValidatorTest.java
+++ 
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/route/engine/validator/dml/ShardingUpdateStatementValidatorTest.java
@@ -55,6 +55,7 @@ import java.util.HashMap;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
+import java.util.Optional;
 import java.util.Properties;
 
 import static org.mockito.Mockito.mock;
@@ -116,7 +117,7 @@ public final class ShardingUpdateStatementValidatorTest {
         TableRule tableRule = mock(TableRule.class);
         
when(tableRule.getActualDatasourceNames()).thenReturn(Arrays.asList("ds_0", 
"ds_1"));
         
when(tableRule.getActualTableNames("ds_1")).thenReturn(Collections.singletonList("user"));
-        when(shardingRule.isShardingColumn("id", "user")).thenReturn(true);
+        when(shardingRule.findShardingColumn("id", 
"user")).thenReturn(Optional.of("id"));
         when(shardingRule.getTableRule("user")).thenReturn(tableRule);
         StandardShardingStrategyConfiguration databaseStrategyConfiguration = 
mock(StandardShardingStrategyConfiguration.class);
         
when(databaseStrategyConfiguration.getShardingColumn()).thenReturn("id");
diff --git 
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/rule/ShardingRuleTest.java
 
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/rule/ShardingRuleTest.java
index 7d12bcb..d19b369 100644
--- 
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/rule/ShardingRuleTest.java
+++ 
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/rule/ShardingRuleTest.java
@@ -50,6 +50,7 @@ import java.util.Collections;
 import java.util.HashMap;
 import java.util.LinkedHashSet;
 import java.util.Map;
+import java.util.Optional;
 import java.util.Properties;
 import java.util.TreeSet;
 
@@ -214,44 +215,53 @@ public final class ShardingRuleTest {
     }
     
     @Test
-    public void assertIsShardingColumnForDefaultDatabaseShardingStrategy() {
+    public void assertFindShardingColumnForDefaultDatabaseShardingStrategy() {
         ShardingRuleConfiguration shardingRuleConfig = new 
ShardingRuleConfiguration();
         
shardingRuleConfig.getTables().add(createTableRuleConfigWithAllStrategies());
         shardingRuleConfig.setDefaultDatabaseShardingStrategy(new 
StandardShardingStrategyConfiguration("column", "STANDARD_TEST"));
         shardingRuleConfig.getShardingAlgorithms().put("standard", new 
ShardingSphereAlgorithmConfiguration("STANDARD_TEST", new Properties()));
-        assertTrue(new ShardingRule(shardingRuleConfig, 
createDataSourceNames()).isShardingColumn("column", "LOGIC_TABLE"));
+        Optional<String> actual = new ShardingRule(shardingRuleConfig, 
createDataSourceNames()).findShardingColumn("column", "LOGIC_TABLE");
+        assertTrue(actual.isPresent());
+        assertThat(actual.get(), is("column"));
     }
     
     @Test
-    public void assertIsShardingColumnForDefaultTableShardingStrategy() {
+    public void assertFindShardingColumnForDefaultTableShardingStrategy() {
         ShardingRuleConfiguration shardingRuleConfig = new 
ShardingRuleConfiguration();
         
shardingRuleConfig.getTables().add(createTableRuleConfigWithAllStrategies());
         shardingRuleConfig.setDefaultTableShardingStrategy(new 
StandardShardingStrategyConfiguration("column", "STANDARD_TEST"));
         shardingRuleConfig.getShardingAlgorithms().put("standard", new 
ShardingSphereAlgorithmConfiguration("STANDARD_TEST", new Properties()));
-        assertTrue(new ShardingRule(shardingRuleConfig, 
createDataSourceNames()).isShardingColumn("column", "LOGIC_TABLE"));
+        Optional<String> actual = new ShardingRule(shardingRuleConfig, 
createDataSourceNames()).findShardingColumn("column", "LOGIC_TABLE");
+        assertTrue(actual.isPresent());
+        assertThat(actual.get(), is("column"));
     }
     
     @Test
-    public void assertIsShardingColumnForDatabaseShardingStrategy() {
+    public void assertFindShardingColumnForDatabaseShardingStrategy() {
         ShardingRuleConfiguration shardingRuleConfig = new 
ShardingRuleConfiguration();
         
shardingRuleConfig.getTables().add(createTableRuleConfigWithAllStrategies());
         shardingRuleConfig.getShardingAlgorithms().put("standard", new 
ShardingSphereAlgorithmConfiguration("STANDARD_TEST", new Properties()));
-        assertTrue(new ShardingRule(shardingRuleConfig, 
createDataSourceNames()).isShardingColumn("column", "logic_Table"));
+        Optional<String> actual = new ShardingRule(shardingRuleConfig, 
createDataSourceNames()).findShardingColumn("column", "logic_Table");
+        assertTrue(actual.isPresent());
+        assertThat(actual.get(), is("column"));
     }
     
     @Test
-    public void assertIsShardingColumnForTableShardingStrategy() {
+    public void assertFindShardingColumnForTableShardingStrategy() {
         ShardingRuleConfiguration shardingRuleConfig = new 
ShardingRuleConfiguration();
         
shardingRuleConfig.getTables().add(createTableRuleConfigWithTableStrategies());
         shardingRuleConfig.getShardingAlgorithms().put("standard", new 
ShardingSphereAlgorithmConfiguration("STANDARD_TEST", new Properties()));
-        assertTrue(new ShardingRule(shardingRuleConfig, 
createDataSourceNames()).isShardingColumn("column", "logic_Table"));
+        Optional<String> actual = new ShardingRule(shardingRuleConfig, 
createDataSourceNames()).findShardingColumn("column", "logic_Table");
+        assertTrue(actual.isPresent());
+        assertThat(actual.get(), is("column"));
     }
     
     @Test
     public void assertIsNotShardingColumn() {
         ShardingRuleConfiguration shardingRuleConfig = new 
ShardingRuleConfiguration();
         
shardingRuleConfig.getTables().add(createTableRuleConfigWithAllStrategies());
-        assertFalse(new ShardingRule(shardingRuleConfig, 
createDataSourceNames()).isShardingColumn("column", "other_Table"));
+        Optional<String> actual = new ShardingRule(shardingRuleConfig, 
createDataSourceNames()).findShardingColumn("column", "other_Table");
+        assertFalse(actual.isPresent());
     }
     
     @Test
@@ -413,10 +423,12 @@ public final class ShardingRuleTest {
     }
     
     @Test
-    public void assertIsShardingColumnForComplexShardingStrategy() {
+    public void assertFindShardingColumnForComplexShardingStrategy() {
         ShardingRuleConfiguration shardingRuleConfig = new 
ShardingRuleConfiguration();
         
shardingRuleConfig.getTables().add(createTableRuleConfigWithComplexStrategies());
-        assertTrue(new ShardingRule(shardingRuleConfig, 
createDataSourceNames()).isShardingColumn("column1", "LOGIC_TABLE"));
+        Optional<String> actual = new ShardingRule(shardingRuleConfig, 
createDataSourceNames()).findShardingColumn("column1", "LOGIC_TABLE");
+        assertTrue(actual.isPresent());
+        assertThat(actual.get(), is("COLUMN1"));
     }
     
     @Test

Reply via email to