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 d8d941af3fd Add check logic for ShardingAlgorithm and KeyGenerator 
name not exists (#18834)
d8d941af3fd is described below

commit d8d941af3fdb882612a2ae82d74e22ab7a69a35f
Author: Zhengqiang Duan <duanzhengqi...@apache.org>
AuthorDate: Tue Jul 5 10:59:51 2022 +0800

    Add check logic for ShardingAlgorithm and KeyGenerator name not exists 
(#18834)
    
    * Add check logic for ShardingAlgorithm and KeyGenerator name not exists
    
    * fix integration test
    
    * correct some wrong sharding config
---
 .../AlgorithmProvidedShardingRuleBuilder.java      | 44 ++++++++++++++++++++++
 .../sharding/rule/builder/ShardingRuleBuilder.java | 43 +++++++++++++++++++++
 .../AlgorithmProvidedShardingRuleBuilderTest.java  | 37 ++++++++++++++++--
 .../rule/builder/ShardingRuleBuilderTest.java      | 37 ++++++++++++++++--
 .../sharding/configWithoutDataSourceWithProps.yaml |  4 +-
 .../config_sharding_sphere_jdbc_source.yaml        |  3 ++
 6 files changed, 159 insertions(+), 9 deletions(-)

diff --git 
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/rule/builder/AlgorithmProvidedShardingRuleBuilder.java
 
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/rule/builder/AlgorithmProvidedShardingRuleBuilder.java
index fdfc3b384bb..ff0ee13aa87 100644
--- 
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/rule/builder/AlgorithmProvidedShardingRuleBuilder.java
+++ 
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/rule/builder/AlgorithmProvidedShardingRuleBuilder.java
@@ -22,8 +22,15 @@ import 
org.apache.shardingsphere.infra.instance.InstanceContext;
 import org.apache.shardingsphere.infra.rule.ShardingSphereRule;
 import 
org.apache.shardingsphere.infra.rule.builder.database.DatabaseRuleBuilder;
 import 
org.apache.shardingsphere.sharding.algorithm.config.AlgorithmProvidedShardingRuleConfiguration;
+import 
org.apache.shardingsphere.sharding.api.config.rule.ShardingAutoTableRuleConfiguration;
+import 
org.apache.shardingsphere.sharding.api.config.rule.ShardingTableRuleConfiguration;
+import 
org.apache.shardingsphere.sharding.api.config.strategy.keygen.KeyGenerateStrategyConfiguration;
+import 
org.apache.shardingsphere.sharding.api.config.strategy.sharding.NoneShardingStrategyConfiguration;
+import 
org.apache.shardingsphere.sharding.api.config.strategy.sharding.ShardingStrategyConfiguration;
 import org.apache.shardingsphere.sharding.constant.ShardingOrder;
 import org.apache.shardingsphere.sharding.rule.ShardingRule;
+import org.apache.shardingsphere.sharding.spi.KeyGenerateAlgorithm;
+import org.apache.shardingsphere.sharding.spi.ShardingAlgorithm;
 
 import javax.sql.DataSource;
 import java.util.Collection;
@@ -38,9 +45,46 @@ public final class AlgorithmProvidedShardingRuleBuilder 
implements DatabaseRuleB
     public ShardingRule build(final AlgorithmProvidedShardingRuleConfiguration 
config, final String databaseName,
                               final Map<String, DataSource> dataSources, final 
Collection<ShardingSphereRule> builtRules, final InstanceContext 
instanceContext) {
         Preconditions.checkArgument(null != dataSources && 
!dataSources.isEmpty(), "Data sources cannot be empty.");
+        Preconditions.checkArgument(isValidRuleConfiguration(config), "Invalid 
sharding configuration in AlgorithmProvidedShardingRuleConfiguration.");
         return new ShardingRule(config, dataSources.keySet(), instanceContext);
     }
     
+    private boolean isValidRuleConfiguration(final 
AlgorithmProvidedShardingRuleConfiguration config) {
+        Map<String, KeyGenerateAlgorithm> keyGenerators = 
config.getKeyGenerators();
+        Map<String, ShardingAlgorithm> shardingAlgorithms = 
config.getShardingAlgorithms();
+        if 
(isInvalidKeyGenerateStrategy(config.getDefaultKeyGenerateStrategy(), 
keyGenerators)
+                || 
isInvalidShardingStrategy(config.getDefaultDatabaseShardingStrategy(), 
shardingAlgorithms)
+                || 
isInvalidShardingStrategy(config.getDefaultTableShardingStrategy(), 
shardingAlgorithms)) {
+            return false;
+        }
+        for (ShardingTableRuleConfiguration each : config.getTables()) {
+            if (isInvalidKeyGenerateStrategy(each.getKeyGenerateStrategy(), 
keyGenerators) || isInvalidShardingStrategy(each.getDatabaseShardingStrategy(), 
shardingAlgorithms)
+                    || 
isInvalidShardingStrategy(each.getTableShardingStrategy(), shardingAlgorithms)) 
{
+                return false;
+            }
+        }
+        for (ShardingAutoTableRuleConfiguration each : config.getAutoTables()) 
{
+            if (isInvalidKeyGenerateStrategy(each.getKeyGenerateStrategy(), 
keyGenerators) || isInvalidShardingStrategy(each.getShardingStrategy(), 
shardingAlgorithms)) {
+                return false;
+            }
+        }
+        return true;
+    }
+    
+    private boolean isInvalidKeyGenerateStrategy(final 
KeyGenerateStrategyConfiguration keyGenerateStrategy, final Map<String, 
KeyGenerateAlgorithm> keyGenerators) {
+        if (null == keyGenerateStrategy) {
+            return false;
+        }
+        return 
!keyGenerators.containsKey(keyGenerateStrategy.getKeyGeneratorName());
+    }
+    
+    private boolean isInvalidShardingStrategy(final 
ShardingStrategyConfiguration shardingStrategy, final Map<String, 
ShardingAlgorithm> shardingAlgorithms) {
+        if (null == shardingStrategy || shardingStrategy instanceof 
NoneShardingStrategyConfiguration) {
+            return false;
+        }
+        return 
!shardingAlgorithms.containsKey(shardingStrategy.getShardingAlgorithmName());
+    }
+    
     @Override
     public int getOrder() {
         return ShardingOrder.ALGORITHM_PROVIDER_ORDER;
diff --git 
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/rule/builder/ShardingRuleBuilder.java
 
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/rule/builder/ShardingRuleBuilder.java
index 6588bbf57ae..fccefda9c17 100644
--- 
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/rule/builder/ShardingRuleBuilder.java
+++ 
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/rule/builder/ShardingRuleBuilder.java
@@ -18,10 +18,16 @@
 package org.apache.shardingsphere.sharding.rule.builder;
 
 import com.google.common.base.Preconditions;
+import 
org.apache.shardingsphere.infra.config.algorithm.ShardingSphereAlgorithmConfiguration;
 import org.apache.shardingsphere.infra.instance.InstanceContext;
 import org.apache.shardingsphere.infra.rule.ShardingSphereRule;
 import 
org.apache.shardingsphere.infra.rule.builder.database.DatabaseRuleBuilder;
 import org.apache.shardingsphere.sharding.api.config.ShardingRuleConfiguration;
+import 
org.apache.shardingsphere.sharding.api.config.rule.ShardingAutoTableRuleConfiguration;
+import 
org.apache.shardingsphere.sharding.api.config.rule.ShardingTableRuleConfiguration;
+import 
org.apache.shardingsphere.sharding.api.config.strategy.keygen.KeyGenerateStrategyConfiguration;
+import 
org.apache.shardingsphere.sharding.api.config.strategy.sharding.NoneShardingStrategyConfiguration;
+import 
org.apache.shardingsphere.sharding.api.config.strategy.sharding.ShardingStrategyConfiguration;
 import org.apache.shardingsphere.sharding.constant.ShardingOrder;
 import org.apache.shardingsphere.sharding.rule.ShardingRule;
 
@@ -38,9 +44,46 @@ public final class ShardingRuleBuilder implements 
DatabaseRuleBuilder<ShardingRu
     public ShardingRule build(final ShardingRuleConfiguration config, final 
String databaseName,
                               final Map<String, DataSource> dataSources, final 
Collection<ShardingSphereRule> builtRules, final InstanceContext 
instanceContext) {
         Preconditions.checkArgument(null != dataSources && 
!dataSources.isEmpty(), "Data source names cannot be empty.");
+        Preconditions.checkArgument(isValidRuleConfiguration(config), "Invalid 
sharding configuration in ShardingRuleConfiguration.");
         return new ShardingRule(config, dataSources.keySet(), instanceContext);
     }
     
+    private boolean isValidRuleConfiguration(final ShardingRuleConfiguration 
config) {
+        Map<String, ShardingSphereAlgorithmConfiguration> keyGenerators = 
config.getKeyGenerators();
+        Map<String, ShardingSphereAlgorithmConfiguration> shardingAlgorithms = 
config.getShardingAlgorithms();
+        if 
(isInvalidKeyGenerateStrategy(config.getDefaultKeyGenerateStrategy(), 
keyGenerators)
+                || 
isInvalidShardingStrategy(config.getDefaultDatabaseShardingStrategy(), 
shardingAlgorithms)
+                || 
isInvalidShardingStrategy(config.getDefaultTableShardingStrategy(), 
shardingAlgorithms)) {
+            return false;
+        }
+        for (ShardingTableRuleConfiguration each : config.getTables()) {
+            if (isInvalidKeyGenerateStrategy(each.getKeyGenerateStrategy(), 
keyGenerators) || isInvalidShardingStrategy(each.getDatabaseShardingStrategy(), 
shardingAlgorithms)
+                    || 
isInvalidShardingStrategy(each.getTableShardingStrategy(), shardingAlgorithms)) 
{
+                return false;
+            }
+        }
+        for (ShardingAutoTableRuleConfiguration each : config.getAutoTables()) 
{
+            if (isInvalidKeyGenerateStrategy(each.getKeyGenerateStrategy(), 
keyGenerators) || isInvalidShardingStrategy(each.getShardingStrategy(), 
shardingAlgorithms)) {
+                return false;
+            }
+        }
+        return true;
+    }
+    
+    private boolean isInvalidKeyGenerateStrategy(final 
KeyGenerateStrategyConfiguration keyGenerateStrategy, final Map<String, 
ShardingSphereAlgorithmConfiguration> keyGenerators) {
+        if (null == keyGenerateStrategy) {
+            return false;
+        }
+        return 
!keyGenerators.containsKey(keyGenerateStrategy.getKeyGeneratorName());
+    }
+    
+    private boolean isInvalidShardingStrategy(final 
ShardingStrategyConfiguration shardingStrategy, final Map<String, 
ShardingSphereAlgorithmConfiguration> shardingAlgorithms) {
+        if (null == shardingStrategy || shardingStrategy instanceof 
NoneShardingStrategyConfiguration) {
+            return false;
+        }
+        return 
!shardingAlgorithms.containsKey(shardingStrategy.getShardingAlgorithmName());
+    }
+    
     @Override
     public int getOrder() {
         return ShardingOrder.ORDER;
diff --git 
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/rule/builder/AlgorithmProvidedShardingRuleBuilderTest.java
 
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/rule/builder/AlgorithmProvidedShardingRuleBuilderTest.java
index 3007659d9d7..4089e2bc1ff 100644
--- 
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/rule/builder/AlgorithmProvidedShardingRuleBuilderTest.java
+++ 
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/rule/builder/AlgorithmProvidedShardingRuleBuilderTest.java
@@ -21,7 +21,10 @@ import 
org.apache.shardingsphere.infra.instance.InstanceContext;
 import 
org.apache.shardingsphere.infra.rule.builder.database.DatabaseRuleBuilder;
 import 
org.apache.shardingsphere.infra.rule.builder.database.DatabaseRuleBuilderFactory;
 import 
org.apache.shardingsphere.sharding.algorithm.config.AlgorithmProvidedShardingRuleConfiguration;
+import 
org.apache.shardingsphere.sharding.api.config.strategy.keygen.KeyGenerateStrategyConfiguration;
+import 
org.apache.shardingsphere.sharding.api.config.strategy.sharding.StandardShardingStrategyConfiguration;
 import org.apache.shardingsphere.sharding.rule.ShardingRule;
+import org.apache.shardingsphere.sharding.spi.KeyGenerateAlgorithm;
 import org.junit.Before;
 import org.junit.Test;
 
@@ -49,19 +52,47 @@ public final class AlgorithmProvidedShardingRuleBuilderTest 
{
     @SuppressWarnings("unchecked")
     @Test
     public void assertBuild() {
-        assertThat(builder.build(ruleConfig, "test_schema",
+        assertThat(builder.build(ruleConfig, "sharding_db",
                 Collections.singletonMap("name", mock(DataSource.class, 
RETURNS_DEEP_STUBS)), Collections.emptyList(), mock(InstanceContext.class)), 
instanceOf(ShardingRule.class));
     }
     
     @SuppressWarnings("unchecked")
     @Test(expected = IllegalArgumentException.class)
     public void assertBuildWithNullDataSourceMap() {
-        assertThat(builder.build(ruleConfig, "test_schema", null, 
Collections.emptyList(), mock(InstanceContext.class)), 
instanceOf(ShardingRule.class));
+        assertThat(builder.build(ruleConfig, "sharding_db", null, 
Collections.emptyList(), mock(InstanceContext.class)), 
instanceOf(ShardingRule.class));
     }
     
     @SuppressWarnings("unchecked")
     @Test(expected = IllegalArgumentException.class)
     public void assertBuildWithEmptyDataSourceMap() {
-        assertThat(builder.build(ruleConfig, "test_schema", 
Collections.emptyMap(), Collections.emptyList(), mock(InstanceContext.class)), 
instanceOf(ShardingRule.class));
+        assertThat(builder.build(ruleConfig, "sharding_db", 
Collections.emptyMap(), Collections.emptyList(), mock(InstanceContext.class)), 
instanceOf(ShardingRule.class));
+    }
+    
+    @SuppressWarnings("unchecked")
+    @Test(expected = IllegalArgumentException.class)
+    public void assertBuildWithInvalidKeyGenerator() {
+        ruleConfig.setDefaultKeyGenerateStrategy(new 
KeyGenerateStrategyConfiguration("order_id", "snowflake"));
+        assertThat(builder.build(ruleConfig, "sharding_db", 
Collections.singletonMap("ds_0", mock(DataSource.class)), 
Collections.emptyList(), mock(InstanceContext.class)),
+                instanceOf(ShardingRule.class));
+    }
+    
+    @SuppressWarnings("unchecked")
+    @Test(expected = IllegalArgumentException.class)
+    public void assertBuildWithInvalidDatabaseShardingStrategy() {
+        ruleConfig.setDefaultKeyGenerateStrategy(new 
KeyGenerateStrategyConfiguration("order_id", "snowflake"));
+        ruleConfig.getKeyGenerators().put("snowflake", 
mock(KeyGenerateAlgorithm.class));
+        ruleConfig.setDefaultDatabaseShardingStrategy(new 
StandardShardingStrategyConfiguration("user_id", "database_inline"));
+        assertThat(builder.build(ruleConfig, "sharding_db", 
Collections.singletonMap("ds_0", mock(DataSource.class)), 
Collections.emptyList(), mock(InstanceContext.class)),
+                instanceOf(ShardingRule.class));
+    }
+    
+    @SuppressWarnings("unchecked")
+    @Test(expected = IllegalArgumentException.class)
+    public void assertBuildWithInvalidTableShardingStrategy() {
+        ruleConfig.setDefaultKeyGenerateStrategy(new 
KeyGenerateStrategyConfiguration("order_id", "snowflake"));
+        ruleConfig.getKeyGenerators().put("snowflake", 
mock(KeyGenerateAlgorithm.class));
+        ruleConfig.setDefaultTableShardingStrategy(new 
StandardShardingStrategyConfiguration("order_id", "t_order_inline"));
+        assertThat(builder.build(ruleConfig, "sharding_db", 
Collections.singletonMap("ds_0", mock(DataSource.class)), 
Collections.emptyList(), mock(InstanceContext.class)),
+                instanceOf(ShardingRule.class));
     }
 }
diff --git 
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/rule/builder/ShardingRuleBuilderTest.java
 
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/rule/builder/ShardingRuleBuilderTest.java
index 6b69772538d..910f303cb72 100644
--- 
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/rule/builder/ShardingRuleBuilderTest.java
+++ 
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/rule/builder/ShardingRuleBuilderTest.java
@@ -17,10 +17,13 @@
 
 package org.apache.shardingsphere.sharding.rule.builder;
 
+import 
org.apache.shardingsphere.infra.config.algorithm.ShardingSphereAlgorithmConfiguration;
 import org.apache.shardingsphere.infra.instance.InstanceContext;
 import 
org.apache.shardingsphere.infra.rule.builder.database.DatabaseRuleBuilder;
 import 
org.apache.shardingsphere.infra.rule.builder.database.DatabaseRuleBuilderFactory;
 import org.apache.shardingsphere.sharding.api.config.ShardingRuleConfiguration;
+import 
org.apache.shardingsphere.sharding.api.config.strategy.keygen.KeyGenerateStrategyConfiguration;
+import 
org.apache.shardingsphere.sharding.api.config.strategy.sharding.StandardShardingStrategyConfiguration;
 import org.apache.shardingsphere.sharding.rule.ShardingRule;
 import org.junit.Before;
 import org.junit.Test;
@@ -49,19 +52,47 @@ public final class ShardingRuleBuilderTest {
     @SuppressWarnings("unchecked")
     @Test
     public void assertBuild() {
-        assertThat(builder.build(ruleConfig, "test_schema",
+        assertThat(builder.build(ruleConfig, "sharding_db",
                 Collections.singletonMap("name", mock(DataSource.class, 
RETURNS_DEEP_STUBS)), Collections.emptyList(), mock(InstanceContext.class)), 
instanceOf(ShardingRule.class));
     }
     
     @SuppressWarnings("unchecked")
     @Test(expected = IllegalArgumentException.class)
     public void assertBuildWithNullDataSourceMap() {
-        assertThat(builder.build(ruleConfig, "test_schema", null, 
Collections.emptyList(), mock(InstanceContext.class)), 
instanceOf(ShardingRule.class));
+        assertThat(builder.build(ruleConfig, "sharding_db", null, 
Collections.emptyList(), mock(InstanceContext.class)), 
instanceOf(ShardingRule.class));
     }
     
     @SuppressWarnings("unchecked")
     @Test(expected = IllegalArgumentException.class)
     public void assertBuildWithEmptyDataSourceMap() {
-        assertThat(builder.build(ruleConfig, "test_schema", 
Collections.emptyMap(), Collections.emptyList(), mock(InstanceContext.class)), 
instanceOf(ShardingRule.class));
+        assertThat(builder.build(ruleConfig, "sharding_db", 
Collections.emptyMap(), Collections.emptyList(), mock(InstanceContext.class)), 
instanceOf(ShardingRule.class));
+    }
+    
+    @SuppressWarnings("unchecked")
+    @Test(expected = IllegalArgumentException.class)
+    public void assertBuildWithInvalidKeyGenerator() {
+        ruleConfig.setDefaultKeyGenerateStrategy(new 
KeyGenerateStrategyConfiguration("order_id", "snowflake"));
+        assertThat(builder.build(ruleConfig, "sharding_db", 
Collections.singletonMap("ds_0", mock(DataSource.class)), 
Collections.emptyList(), mock(InstanceContext.class)),
+                instanceOf(ShardingRule.class));
+    }
+    
+    @SuppressWarnings("unchecked")
+    @Test(expected = IllegalArgumentException.class)
+    public void assertBuildWithInvalidDatabaseShardingStrategy() {
+        ruleConfig.setDefaultKeyGenerateStrategy(new 
KeyGenerateStrategyConfiguration("order_id", "snowflake"));
+        ruleConfig.getKeyGenerators().put("snowflake", 
mock(ShardingSphereAlgorithmConfiguration.class));
+        ruleConfig.setDefaultDatabaseShardingStrategy(new 
StandardShardingStrategyConfiguration("user_id", "database_inline"));
+        assertThat(builder.build(ruleConfig, "sharding_db", 
Collections.singletonMap("ds_0", mock(DataSource.class)), 
Collections.emptyList(), mock(InstanceContext.class)),
+                instanceOf(ShardingRule.class));
+    }
+    
+    @SuppressWarnings("unchecked")
+    @Test(expected = IllegalArgumentException.class)
+    public void assertBuildWithInvalidTableShardingStrategy() {
+        ruleConfig.setDefaultKeyGenerateStrategy(new 
KeyGenerateStrategyConfiguration("order_id", "snowflake"));
+        ruleConfig.getKeyGenerators().put("snowflake", 
mock(ShardingSphereAlgorithmConfiguration.class));
+        ruleConfig.setDefaultTableShardingStrategy(new 
StandardShardingStrategyConfiguration("order_id", "t_order_inline"));
+        assertThat(builder.build(ruleConfig, "sharding_db", 
Collections.singletonMap("ds_0", mock(DataSource.class)), 
Collections.emptyList(), mock(InstanceContext.class)),
+                instanceOf(ShardingRule.class));
     }
 }
diff --git 
a/shardingsphere-test/shardingsphere-integration-driver-test/src/test/resources/yaml/integrate/sharding/configWithoutDataSourceWithProps.yaml
 
b/shardingsphere-test/shardingsphere-integration-driver-test/src/test/resources/yaml/integrate/sharding/configWithoutDataSourceWithProps.yaml
index a7ded4fdbd9..73440510fb2 100644
--- 
a/shardingsphere-test/shardingsphere-integration-driver-test/src/test/resources/yaml/integrate/sharding/configWithoutDataSourceWithProps.yaml
+++ 
b/shardingsphere-test/shardingsphere-integration-driver-test/src/test/resources/yaml/integrate/sharding/configWithoutDataSourceWithProps.yaml
@@ -61,9 +61,7 @@ rules:
   defaultDatabaseStrategy:
     none:
   defaultTableStrategy:
-    complex:
-      shardingColumns: id, order_id
-      shardingAlgorithmName: complex_sharding_fixture
+    none:
   
   shardingAlgorithms:
     standard_sharding_fixture:
diff --git 
a/shardingsphere-test/shardingsphere-pipeline-test/src/test/resources/config_sharding_sphere_jdbc_source.yaml
 
b/shardingsphere-test/shardingsphere-pipeline-test/src/test/resources/config_sharding_sphere_jdbc_source.yaml
index 116ab7bcbd9..96e05f6f2dc 100644
--- 
a/shardingsphere-test/shardingsphere-pipeline-test/src/test/resources/config_sharding_sphere_jdbc_source.yaml
+++ 
b/shardingsphere-test/shardingsphere-pipeline-test/src/test/resources/config_sharding_sphere_jdbc_source.yaml
@@ -49,6 +49,9 @@ rules:
       type: INLINE
       props:
         algorithm-expression: t_order
+  keyGenerators:
+    snowflake:
+      type: SNOWFLAKE
   scalingName: default_scaling
   scaling:
     default_scaling:

Reply via email to