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 9d0ee5a8004 JDBC supports databaseName configuration and keep 
compatible with schemaName (#16790)
9d0ee5a8004 is described below

commit 9d0ee5a80041038b3b75ee6a35d1b1dd55fb313e
Author: Zhengqiang Duan <[email protected]>
AuthorDate: Wed Apr 13 18:42:30 2022 +0800

    JDBC supports databaseName configuration and keep compatible with 
schemaName (#16790)
---
 .../yaml/config/pojo/YamlRootConfiguration.java    | 12 ++++++++
 .../api/ShardingSphereDataSourceFactory.java       | 30 +++++++++----------
 .../yaml/YamlShardingSphereDataSourceFactory.java  |  6 ++--
 .../ShardingSpherePipelineDataSourceCreator.java   |  2 +-
 .../core/datasource/ShardingSphereDataSource.java  | 34 +++++++++++-----------
 .../datasource/ShardingSphereDataSourceTest.java   |  4 +--
 .../boot/ShardingSphereAutoConfiguration.java      | 12 ++++----
 .../additional-spring-configuration-metadata.json  |  4 +++
 .../parser/DataSourceBeanDefinitionParser.java     |  8 +++--
 .../namespace/tag/DataSourceBeanDefinitionTag.java |  2 ++
 .../resources/META-INF/namespace/datasource.xsd    |  1 +
 ...hemaNameSetter.java => DatabaseNameSetter.java} | 20 ++++++++-----
 ...SetterTest.java => DatabaseNameSetterTest.java} | 16 +++++++---
 .../scenario/rulealtered/RuleAlteredJobWorker.java |  4 +--
 ...rdingSpherePipelineDataSourceConfiguration.java |  2 +-
 15 files changed, 95 insertions(+), 62 deletions(-)

diff --git 
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/yaml/config/pojo/YamlRootConfiguration.java
 
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/yaml/config/pojo/YamlRootConfiguration.java
index 0667aa9d8e7..f36282161d9 100644
--- 
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/yaml/config/pojo/YamlRootConfiguration.java
+++ 
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/yaml/config/pojo/YamlRootConfiguration.java
@@ -17,6 +17,7 @@
 
 package org.apache.shardingsphere.infra.yaml.config.pojo;
 
+import com.google.common.base.Strings;
 import lombok.Getter;
 import lombok.Setter;
 import 
org.apache.shardingsphere.infra.yaml.config.pojo.mode.YamlModeConfiguration;
@@ -34,6 +35,8 @@ import java.util.Properties;
 @Setter
 public final class YamlRootConfiguration implements YamlConfiguration {
     
+    private String databaseName;
+    
     private String schemaName;
     
     private Map<String, Map<String, Object>> dataSources = new HashMap<>();
@@ -43,4 +46,13 @@ public final class YamlRootConfiguration implements 
YamlConfiguration {
     private YamlModeConfiguration mode;
     
     private Properties props = new Properties();
+    
+    /**
+     * Get database name.
+     * 
+     * @return database name
+     */
+    public String getDatabaseName() {
+        return Strings.isNullOrEmpty(databaseName) ? schemaName : databaseName;
+    }
 }
diff --git 
a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/api/ShardingSphereDataSourceFactory.java
 
b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/api/ShardingSphereDataSourceFactory.java
index ce9a8dd1da5..9faf0ba3cb2 100644
--- 
a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/api/ShardingSphereDataSourceFactory.java
+++ 
b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/api/ShardingSphereDataSourceFactory.java
@@ -41,13 +41,13 @@ public final class ShardingSphereDataSourceFactory {
     /**
      * Create ShardingSphere data source.
      *
-     * @param schemaName schema name
+     * @param databaseName database name
      * @param modeConfig mode configuration
      * @return ShardingSphere data source
      * @throws SQLException SQL exception
      */
-    public static DataSource createDataSource(final String schemaName, final 
ModeConfiguration modeConfig) throws SQLException {
-        return new ShardingSphereDataSource(Strings.isNullOrEmpty(schemaName) 
? DefaultSchema.LOGIC_NAME : schemaName, modeConfig);
+    public static DataSource createDataSource(final String databaseName, final 
ModeConfiguration modeConfig) throws SQLException {
+        return new 
ShardingSphereDataSource(Strings.isNullOrEmpty(databaseName) ? 
DefaultSchema.LOGIC_NAME : databaseName, modeConfig);
     }
     
     /**
@@ -64,7 +64,7 @@ public final class ShardingSphereDataSourceFactory {
     /**
      * Create ShardingSphere data source.
      *
-     * @param schemaName schema name
+     * @param databaseName database name
      * @param modeConfig mode configuration
      * @param dataSourceMap data source map
      * @param configs rule configurations
@@ -72,9 +72,9 @@ public final class ShardingSphereDataSourceFactory {
      * @return ShardingSphere data source
      * @throws SQLException SQL exception
      */
-    public static DataSource createDataSource(final String schemaName, final 
ModeConfiguration modeConfig, 
+    public static DataSource createDataSource(final String databaseName, final 
ModeConfiguration modeConfig, 
                                               final Map<String, DataSource> 
dataSourceMap, final Collection<RuleConfiguration> configs, final Properties 
props) throws SQLException {
-        return new ShardingSphereDataSource(Strings.isNullOrEmpty(schemaName) 
? DefaultSchema.LOGIC_NAME : schemaName, modeConfig, dataSourceMap, configs, 
props);
+        return new 
ShardingSphereDataSource(Strings.isNullOrEmpty(databaseName) ? 
DefaultSchema.LOGIC_NAME : databaseName, modeConfig, dataSourceMap, configs, 
props);
     }
     
     /**
@@ -95,7 +95,7 @@ public final class ShardingSphereDataSourceFactory {
     /**
      * Create ShardingSphere data source.
      *
-     * @param schemaName schema name
+     * @param databaseName database name
      * @param modeConfig mode configuration
      * @param dataSource data source
      * @param configs rule configurations
@@ -103,9 +103,9 @@ public final class ShardingSphereDataSourceFactory {
      * @return ShardingSphere data source
      * @throws SQLException SQL exception
      */
-    public static DataSource createDataSource(final String schemaName, final 
ModeConfiguration modeConfig, 
+    public static DataSource createDataSource(final String databaseName, final 
ModeConfiguration modeConfig, 
                                               final DataSource dataSource, 
final Collection<RuleConfiguration> configs, final Properties props) throws 
SQLException {
-        return createDataSource(schemaName, modeConfig, 
Collections.singletonMap(Strings.isNullOrEmpty(schemaName) ? 
DefaultSchema.LOGIC_NAME : schemaName, dataSource), configs, props);
+        return createDataSource(databaseName, modeConfig, 
Collections.singletonMap(Strings.isNullOrEmpty(databaseName) ? 
DefaultSchema.LOGIC_NAME : databaseName, dataSource), configs, props);
     }
     
     /**
@@ -126,16 +126,16 @@ public final class ShardingSphereDataSourceFactory {
     /**
      * Create ShardingSphere data source.
      *
-     * @param schemaName schema name
+     * @param databaseName database name
      * @param dataSourceMap data source map
      * @param configs rule configurations
      * @param props properties for data source
      * @return ShardingSphere data source
      * @throws SQLException SQL exception
      */
-    public static DataSource createDataSource(final String schemaName,
+    public static DataSource createDataSource(final String databaseName,
                                               final Map<String, DataSource> 
dataSourceMap, final Collection<RuleConfiguration> configs, final Properties 
props) throws SQLException {
-        return createDataSource(schemaName, null, dataSourceMap, configs, 
props);
+        return createDataSource(databaseName, null, dataSourceMap, configs, 
props);
     }
     
     /**
@@ -154,15 +154,15 @@ public final class ShardingSphereDataSourceFactory {
     /**
      * Create ShardingSphere data source.
      *
-     * @param schemaName schema name
+     * @param databaseName database name
      * @param dataSource data source
      * @param configs rule configurations
      * @param props properties for data source
      * @return ShardingSphere data source
      * @throws SQLException SQL exception
      */
-    public static DataSource createDataSource(final String schemaName, final 
DataSource dataSource, final Collection<RuleConfiguration> configs, final 
Properties props) throws SQLException {
-        return createDataSource(schemaName, null, dataSource, configs, props);
+    public static DataSource createDataSource(final String databaseName, final 
DataSource dataSource, final Collection<RuleConfiguration> configs, final 
Properties props) throws SQLException {
+        return createDataSource(databaseName, null, dataSource, configs, 
props);
     }
     
     /**
diff --git 
a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/api/yaml/YamlShardingSphereDataSourceFactory.java
 
b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/api/yaml/YamlShardingSphereDataSourceFactory.java
index 2d6b922f81f..0f43be1a995 100644
--- 
a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/api/yaml/YamlShardingSphereDataSourceFactory.java
+++ 
b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/api/yaml/YamlShardingSphereDataSourceFactory.java
@@ -22,8 +22,8 @@ import lombok.AccessLevel;
 import lombok.NoArgsConstructor;
 import org.apache.shardingsphere.driver.api.ShardingSphereDataSourceFactory;
 import org.apache.shardingsphere.infra.config.RuleConfiguration;
-import org.apache.shardingsphere.infra.database.DefaultSchema;
 import org.apache.shardingsphere.infra.config.mode.ModeConfiguration;
+import org.apache.shardingsphere.infra.database.DefaultSchema;
 import org.apache.shardingsphere.infra.yaml.config.pojo.YamlRootConfiguration;
 import 
org.apache.shardingsphere.infra.yaml.config.swapper.YamlDataSourceConfigurationSwapper;
 import 
org.apache.shardingsphere.infra.yaml.config.swapper.YamlRuleConfigurationSwapperEngine;
@@ -129,12 +129,12 @@ public final class YamlShardingSphereDataSourceFactory {
     private static DataSource createDataSource(final Map<String, DataSource> 
dataSourceMap, final YamlRootConfiguration rootConfig) throws SQLException {
         ModeConfiguration modeConfig = null == rootConfig.getMode() ? null : 
new ModeConfigurationYamlSwapper().swapToObject(rootConfig.getMode());
         Collection<RuleConfiguration> ruleConfigs = 
SWAPPER_ENGINE.swapToRuleConfigurations(rootConfig.getRules());
-        return 
ShardingSphereDataSourceFactory.createDataSource(rootConfig.getSchemaName(), 
modeConfig, dataSourceMap, ruleConfigs, rootConfig.getProps());
+        return 
ShardingSphereDataSourceFactory.createDataSource(rootConfig.getDatabaseName(), 
modeConfig, dataSourceMap, ruleConfigs, rootConfig.getProps());
     }
     
     private static DataSource createDataSource(final DataSource dataSource, 
final YamlRootConfiguration rootConfig) throws SQLException {
         Map<String, DataSource> dataSourceMap = new HashMap<>(1, 1);
-        dataSourceMap.put(Strings.isNullOrEmpty(rootConfig.getSchemaName()) ? 
DefaultSchema.LOGIC_NAME : rootConfig.getSchemaName(), dataSource);
+        dataSourceMap.put(Strings.isNullOrEmpty(rootConfig.getDatabaseName()) 
? DefaultSchema.LOGIC_NAME : rootConfig.getDatabaseName(), dataSource);
         return createDataSource(dataSourceMap, rootConfig);
     }
 }
diff --git 
a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/config/datasource/ShardingSpherePipelineDataSourceCreator.java
 
b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/config/datasource/ShardingSpherePipelineDataSourceCreator.java
index bd7b52d6002..0dc809ade2b 100644
--- 
a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/config/datasource/ShardingSpherePipelineDataSourceCreator.java
+++ 
b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/config/datasource/ShardingSpherePipelineDataSourceCreator.java
@@ -40,7 +40,7 @@ public final class ShardingSpherePipelineDataSourceCreator 
implements PipelineDa
         YamlRootConfiguration rootConfig = (YamlRootConfiguration) 
pipelineDataSourceConfig;
         ShardingRuleConfiguration shardingRuleConfig = 
ShardingRuleConfigurationConverter.findAndConvertShardingRuleConfiguration(rootConfig.getRules());
         enableRangeQueryForInline(shardingRuleConfig);
-        return 
ShardingSphereDataSourceFactory.createDataSource(rootConfig.getSchemaName(), 
new 
YamlDataSourceConfigurationSwapper().swapToDataSources(rootConfig.getDataSources()),
 
+        return 
ShardingSphereDataSourceFactory.createDataSource(rootConfig.getDatabaseName(), 
new 
YamlDataSourceConfigurationSwapper().swapToDataSources(rootConfig.getDataSources()),
 
                 Collections.singletonList(shardingRuleConfig), null);
     }
     
diff --git 
a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/datasource/ShardingSphereDataSource.java
 
b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/datasource/ShardingSphereDataSource.java
index 0d0b8080854..3bce804e894 100644
--- 
a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/datasource/ShardingSphereDataSource.java
+++ 
b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/datasource/ShardingSphereDataSource.java
@@ -48,33 +48,33 @@ import java.util.stream.Collectors;
 @Getter
 public final class ShardingSphereDataSource extends AbstractDataSourceAdapter 
implements AutoCloseable {
     
-    private final String schemaName;
+    private final String databaseName;
     
     private final ContextManager contextManager;
     
-    public ShardingSphereDataSource(final String schemaName, final 
ModeConfiguration modeConfig) throws SQLException {
-        this.schemaName = schemaName;
-        contextManager = createContextManager(schemaName, modeConfig, new 
HashMap<>(), new LinkedList<>(), new Properties());
+    public ShardingSphereDataSource(final String databaseName, final 
ModeConfiguration modeConfig) throws SQLException {
+        this.databaseName = databaseName;
+        contextManager = createContextManager(databaseName, modeConfig, new 
HashMap<>(), new LinkedList<>(), new Properties());
     }
     
-    public ShardingSphereDataSource(final String schemaName, final 
ModeConfiguration modeConfig, final Map<String, DataSource> dataSourceMap,
+    public ShardingSphereDataSource(final String databaseName, final 
ModeConfiguration modeConfig, final Map<String, DataSource> dataSourceMap,
                                     final Collection<RuleConfiguration> 
ruleConfigs, final Properties props) throws SQLException {
-        checkRuleConfiguration(schemaName, ruleConfigs);
-        this.schemaName = schemaName;
-        contextManager = createContextManager(schemaName, modeConfig, 
dataSourceMap, ruleConfigs, null == props ? new Properties() : props);
+        checkRuleConfiguration(databaseName, ruleConfigs);
+        this.databaseName = databaseName;
+        contextManager = createContextManager(databaseName, modeConfig, 
dataSourceMap, ruleConfigs, null == props ? new Properties() : props);
     }
     
     @SuppressWarnings("unchecked")
-    private void checkRuleConfiguration(final String schemaName, final 
Collection<RuleConfiguration> ruleConfigs) {
-        ruleConfigs.forEach(each -> 
RuleConfigurationCheckerFactory.newInstance(each).ifPresent(optional -> 
optional.check(schemaName, each)));
+    private void checkRuleConfiguration(final String databaseName, final 
Collection<RuleConfiguration> ruleConfigs) {
+        ruleConfigs.forEach(each -> 
RuleConfigurationCheckerFactory.newInstance(each).ifPresent(optional -> 
optional.check(databaseName, each)));
     }
     
-    private ContextManager createContextManager(final String schemaName, final 
ModeConfiguration modeConfig, final Map<String, DataSource> dataSourceMap,
+    private ContextManager createContextManager(final String databaseName, 
final ModeConfiguration modeConfig, final Map<String, DataSource> dataSourceMap,
                                                 final 
Collection<RuleConfiguration> ruleConfigs, final Properties props) throws 
SQLException {
         Collection<RuleConfiguration> globalRuleConfigs = 
ruleConfigs.stream().filter(each -> each instanceof 
GlobalRuleConfiguration).collect(Collectors.toList());
         ContextManagerBuilderParameter parameter = 
ContextManagerBuilderParameter.builder()
                 .modeConfig(modeConfig)
-                .databaseConfigs(Collections.singletonMap(schemaName, new 
DataSourceProvidedSchemaConfiguration(dataSourceMap, ruleConfigs)))
+                .databaseConfigs(Collections.singletonMap(databaseName, new 
DataSourceProvidedSchemaConfiguration(dataSourceMap, ruleConfigs)))
                 .globalRuleConfigs(globalRuleConfigs)
                 .props(props)
                 .instanceDefinition(new 
InstanceDefinition(InstanceType.JDBC)).build();
@@ -83,7 +83,7 @@ public final class ShardingSphereDataSource extends 
AbstractDataSourceAdapter im
     
     @Override
     public Connection getConnection() {
-        return DriverStateContext.getConnection(schemaName, contextManager);
+        return DriverStateContext.getConnection(databaseName, contextManager);
     }
     
     @Override
@@ -98,7 +98,7 @@ public final class ShardingSphereDataSource extends 
AbstractDataSourceAdapter im
      * @throws Exception exception
      */
     public void close(final Collection<String> dataSourceNames) throws 
Exception {
-        Map<String, DataSource> dataSourceMap = 
contextManager.getDataSourceMap(schemaName);
+        Map<String, DataSource> dataSourceMap = 
contextManager.getDataSourceMap(databaseName);
         for (String each : dataSourceNames) {
             close(dataSourceMap.get(each));
         }
@@ -113,18 +113,18 @@ public final class ShardingSphereDataSource extends 
AbstractDataSourceAdapter im
     
     @Override
     public void close() throws Exception {
-        close(contextManager.getDataSourceMap(schemaName).keySet());
+        close(contextManager.getDataSourceMap(databaseName).keySet());
     }
     
     @Override
     public int getLoginTimeout() throws SQLException {
-        Map<String, DataSource> dataSourceMap = 
contextManager.getDataSourceMap(schemaName);
+        Map<String, DataSource> dataSourceMap = 
contextManager.getDataSourceMap(databaseName);
         return dataSourceMap.isEmpty() ? 0 : 
dataSourceMap.values().iterator().next().getLoginTimeout();
     }
     
     @Override
     public void setLoginTimeout(final int seconds) throws SQLException {
-        for (DataSource each : 
contextManager.getDataSourceMap(schemaName).values()) {
+        for (DataSource each : 
contextManager.getDataSourceMap(databaseName).values()) {
             each.setLoginTimeout(seconds);
         }
     }
diff --git 
a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/test/java/org/apache/shardingsphere/driver/jdbc/core/datasource/ShardingSphereDataSourceTest.java
 
b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/test/java/org/apache/shardingsphere/driver/jdbc/core/datasource/ShardingSphereDataSourceTest.java
index 242876a5d9b..5a753a7e51d 100644
--- 
a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/test/java/org/apache/shardingsphere/driver/jdbc/core/datasource/ShardingSphereDataSourceTest.java
+++ 
b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/test/java/org/apache/shardingsphere/driver/jdbc/core/datasource/ShardingSphereDataSourceTest.java
@@ -53,7 +53,7 @@ public final class ShardingSphereDataSourceTest {
     @Test
     public void assertNewConstructorWithModeConfigurationOnly() throws 
SQLException {
         ShardingSphereDataSource actual = new 
ShardingSphereDataSource(DefaultSchema.LOGIC_NAME, null);
-        assertThat(actual.getSchemaName(), is(DefaultSchema.LOGIC_NAME));
+        assertThat(actual.getDatabaseName(), is(DefaultSchema.LOGIC_NAME));
         assertNotNull(actual.getContextManager());
         
assertTrue(actual.getContextManager().getMetaDataContexts().getMetaDataMap().containsKey(DefaultSchema.LOGIC_NAME));
         
assertTrue(actual.getContextManager().getTransactionContexts().getEngines().containsKey(DefaultSchema.LOGIC_NAME));
@@ -66,7 +66,7 @@ public final class ShardingSphereDataSourceTest {
         Connection connection = mock(Connection.class, RETURNS_DEEP_STUBS);
         
when(connection.getMetaData().getURL()).thenReturn("jdbc:mock://127.0.0.1/foo_ds");
         ShardingSphereDataSource actual = createShardingSphereDataSource(new 
MockedDataSource(connection));
-        assertThat(actual.getSchemaName(), is(DefaultSchema.LOGIC_NAME));
+        assertThat(actual.getDatabaseName(), is(DefaultSchema.LOGIC_NAME));
         assertNotNull(actual.getContextManager());
         
assertTrue(actual.getContextManager().getMetaDataContexts().getMetaDataMap().containsKey(DefaultSchema.LOGIC_NAME));
         
assertTrue(actual.getContextManager().getTransactionContexts().getEngines().containsKey(DefaultSchema.LOGIC_NAME));
diff --git 
a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-boot-starter/src/main/java/org/apache/shardingsphere/spring/boot/ShardingSphereAutoConfiguration.java
 
b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-boot-starter/src/main/java/org/apache/shardingsphere/spring/boot/ShardingSphereAutoConfiguration.java
index e94b0c3597a..c056007d0c3 100644
--- 
a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-boot-starter/src/main/java/org/apache/shardingsphere/spring/boot/ShardingSphereAutoConfiguration.java
+++ 
b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-boot-starter/src/main/java/org/apache/shardingsphere/spring/boot/ShardingSphereAutoConfiguration.java
@@ -25,7 +25,7 @@ import 
org.apache.shardingsphere.infra.yaml.config.swapper.mode.ModeConfiguratio
 import org.apache.shardingsphere.spring.boot.datasource.DataSourceMapSetter;
 import 
org.apache.shardingsphere.spring.boot.prop.SpringBootPropertiesConfiguration;
 import org.apache.shardingsphere.spring.boot.rule.LocalRulesCondition;
-import org.apache.shardingsphere.spring.boot.schema.SchemaNameSetter;
+import org.apache.shardingsphere.spring.boot.schema.DatabaseNameSetter;
 import org.apache.shardingsphere.spring.transaction.TransactionTypeScanner;
 import org.springframework.beans.factory.ObjectProvider;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -61,7 +61,7 @@ import java.util.Optional;
 @RequiredArgsConstructor
 public class ShardingSphereAutoConfiguration implements EnvironmentAware {
     
-    private String schemaName;
+    private String databaseName;
     
     private final SpringBootPropertiesConfiguration props;
     
@@ -90,7 +90,7 @@ public class ShardingSphereAutoConfiguration implements 
EnvironmentAware {
     @Autowired(required = false)
     public DataSource shardingSphereDataSource(final 
ObjectProvider<List<RuleConfiguration>> rules, final 
ObjectProvider<ModeConfiguration> modeConfig) throws SQLException {
         Collection<RuleConfiguration> ruleConfigs = 
Optional.ofNullable(rules.getIfAvailable()).orElse(Collections.emptyList());
-        return ShardingSphereDataSourceFactory.createDataSource(schemaName, 
modeConfig.getIfAvailable(), dataSourceMap, ruleConfigs, props.getProps());
+        return ShardingSphereDataSourceFactory.createDataSource(databaseName, 
modeConfig.getIfAvailable(), dataSourceMap, ruleConfigs, props.getProps());
     }
     
     /**
@@ -103,8 +103,8 @@ public class ShardingSphereAutoConfiguration implements 
EnvironmentAware {
     @Bean
     @ConditionalOnMissingBean(DataSource.class)
     public DataSource dataSource(final ModeConfiguration modeConfig) throws 
SQLException {
-        return !dataSourceMap.isEmpty() ? 
ShardingSphereDataSourceFactory.createDataSource(schemaName, modeConfig, 
dataSourceMap, Collections.emptyList(), props.getProps())
-                : ShardingSphereDataSourceFactory.createDataSource(schemaName, 
modeConfig);
+        return !dataSourceMap.isEmpty() ? 
ShardingSphereDataSourceFactory.createDataSource(databaseName, modeConfig, 
dataSourceMap, Collections.emptyList(), props.getProps())
+                : 
ShardingSphereDataSourceFactory.createDataSource(databaseName, modeConfig);
     }
     
     /**
@@ -120,6 +120,6 @@ public class ShardingSphereAutoConfiguration implements 
EnvironmentAware {
     @Override
     public final void setEnvironment(final Environment environment) {
         
dataSourceMap.putAll(DataSourceMapSetter.getDataSourceMap(environment));
-        schemaName = SchemaNameSetter.getSchemaName(environment);
+        databaseName = DatabaseNameSetter.getDatabaseName(environment);
     }
 }
diff --git 
a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-boot-starter/src/main/resources/META-INF/additional-spring-configuration-metadata.json
 
b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-boot-starter/src/main/resources/META-INF/additional-spring-configuration-metadata.json
index faf162ab878..41ab4f260ef 100644
--- 
a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-boot-starter/src/main/resources/META-INF/additional-spring-configuration-metadata.json
+++ 
b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-boot-starter/src/main/resources/META-INF/additional-spring-configuration-metadata.json
@@ -74,6 +74,10 @@
       "name": "spring.shardingsphere.datasource",
       "type": "java.util.Map<java.lang.String, java.util.Map<java.lang.String, 
java.lang.Object>>"
     },
+    {
+      "name": "spring.shardingsphere.database.name",
+      "type": 
"org.apache.shardingsphere.spring.boot.ShardingSphereAutoConfiguration"
+    },
     {
       "name": "spring.shardingsphere.schema.name",
       "type": 
"org.apache.shardingsphere.spring.boot.ShardingSphereAutoConfiguration"
diff --git 
a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-namespace/src/main/java/org/apache/shardingsphere/spring/namespace/parser/DataSourceBeanDefinitionParser.java
 
b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-namespace/src/main/java/org/apache/shardingsphere/spring/namespace/parser/DataSourceBeanDefinitionParser.java
index 73a34d6979a..f40a323d5b0 100644
--- 
a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-namespace/src/main/java/org/apache/shardingsphere/spring/namespace/parser/DataSourceBeanDefinitionParser.java
+++ 
b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-namespace/src/main/java/org/apache/shardingsphere/spring/namespace/parser/DataSourceBeanDefinitionParser.java
@@ -18,6 +18,7 @@
 package org.apache.shardingsphere.spring.namespace.parser;
 
 import com.google.common.base.Splitter;
+import com.google.common.base.Strings;
 import 
org.apache.shardingsphere.driver.jdbc.core.datasource.ShardingSphereDataSource;
 import org.apache.shardingsphere.infra.config.mode.ModeConfiguration;
 import 
org.apache.shardingsphere.spring.namespace.tag.DataSourceBeanDefinitionTag;
@@ -47,7 +48,7 @@ public final class DataSourceBeanDefinitionParser extends 
AbstractBeanDefinition
     @Override
     protected AbstractBeanDefinition parseInternal(final Element element, 
final ParserContext parserContext) {
         BeanDefinitionBuilder factory = 
BeanDefinitionBuilder.rootBeanDefinition(ShardingSphereDataSource.class);
-        factory.addConstructorArgValue(parseSchemaName(element));
+        factory.addConstructorArgValue(parseDatabaseName(element));
         factory.addConstructorArgValue(parseModeConfiguration(element));
         if 
(!StringUtils.isEmpty(element.getAttribute(DataSourceBeanDefinitionTag.DATA_SOURCE_NAMES_ATTRIBUTE)))
 {
             factory.addConstructorArgValue(parseDataSources(element));
@@ -58,8 +59,9 @@ public final class DataSourceBeanDefinitionParser extends 
AbstractBeanDefinition
         return factory.getBeanDefinition();
     }
     
-    private String parseSchemaName(final Element element) {
-        return 
element.getAttribute(DataSourceBeanDefinitionTag.SCHEMA_NAME_ATTRIBUTE);
+    private String parseDatabaseName(final Element element) {
+        String databaseName = 
element.getAttribute(DataSourceBeanDefinitionTag.DATABASE_NAME_ATTRIBUTE);
+        return Strings.isNullOrEmpty(databaseName) ? 
element.getAttribute(DataSourceBeanDefinitionTag.SCHEMA_NAME_ATTRIBUTE) : 
databaseName;
     }
     
     // TODO parse mode
diff --git 
a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-namespace/src/main/java/org/apache/shardingsphere/spring/namespace/tag/DataSourceBeanDefinitionTag.java
 
b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-namespace/src/main/java/org/apache/shardingsphere/spring/namespace/tag/DataSourceBeanDefinitionTag.java
index 1aab5311688..b31766f926c 100644
--- 
a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-namespace/src/main/java/org/apache/shardingsphere/spring/namespace/tag/DataSourceBeanDefinitionTag.java
+++ 
b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-namespace/src/main/java/org/apache/shardingsphere/spring/namespace/tag/DataSourceBeanDefinitionTag.java
@@ -28,6 +28,8 @@ public final class DataSourceBeanDefinitionTag {
     
     public static final String ROOT_TAG = "data-source";
     
+    public static final String DATABASE_NAME_ATTRIBUTE = "database-name";
+    
     public static final String SCHEMA_NAME_ATTRIBUTE = "schema-name";
     
     public static final String DATA_SOURCE_NAMES_ATTRIBUTE = 
"data-source-names";
diff --git 
a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-namespace/src/main/resources/META-INF/namespace/datasource.xsd
 
b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-namespace/src/main/resources/META-INF/namespace/datasource.xsd
index 80822804471..189316777c1 100644
--- 
a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-namespace/src/main/resources/META-INF/namespace/datasource.xsd
+++ 
b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-namespace/src/main/resources/META-INF/namespace/datasource.xsd
@@ -30,6 +30,7 @@
                 <xsd:element ref="mode" minOccurs="0" />
             </xsd:all>
             <xsd:attribute name="id" type="xsd:string" use="required" />
+            <xsd:attribute name="database-name" type="xsd:string" />
             <xsd:attribute name="schema-name" type="xsd:string" 
default="logic_db" />
             <xsd:attribute name="data-source-names" type="xsd:string"/>
             <xsd:attribute name="rule-refs" type="xsd:string"/>
diff --git 
a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-spring-infra/shardingsphere-jdbc-spring-boot-starter-infra/src/main/java/org/apache/shardingsphere/spring/boot/schema/SchemaNameSetter.java
 
b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-spring-infra/shardingsphere-jdbc-spring-boot-starter-infra/src/main/java/org/apache/shardingsphere/spring/boot/schema/DatabaseNameSetter.java
similarity index 67%
rename from 
shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-spring-infra/shardingsphere-jdbc-spring-boot-starter-infra/src/main/java/org/apache/shardingsphere/spring/boot/schema/SchemaNameSetter.java
rename to 
shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-spring-infra/shardingsphere-jdbc-spring-boot-starter-infra/src/main/java/org/apache/shardingsphere/spring/boot/schema/DatabaseNameSetter.java
index 819fcf89ba6..9dcedaf528c 100644
--- 
a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-spring-infra/shardingsphere-jdbc-spring-boot-starter-infra/src/main/java/org/apache/shardingsphere/spring/boot/schema/SchemaNameSetter.java
+++ 
b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-spring-infra/shardingsphere-jdbc-spring-boot-starter-infra/src/main/java/org/apache/shardingsphere/spring/boot/schema/DatabaseNameSetter.java
@@ -25,24 +25,28 @@ import org.springframework.core.env.Environment;
 import org.springframework.core.env.StandardEnvironment;
 
 /**
- * Schema name setter.
+ * Database name setter.
  */
 @NoArgsConstructor(access = AccessLevel.PRIVATE)
-public final class SchemaNameSetter {
+public final class DatabaseNameSetter {
     
-    private static final String PREFIX = "spring.shardingsphere.schema.";
+    private static final String DATABASE_NAME_KEY = 
"spring.shardingsphere.database.name";
     
-    private static final String SCHEMA_NAME = "name";
+    private static final String SCHEMA_NAME_KEY = 
"spring.shardingsphere.schema.name";
     
     /**
-     * Get schema name.
+     * Get database name.
      *
      * @param environment spring boot environment
      * @return schema name
      */
-    public static String getSchemaName(final Environment environment) {
+    public static String getDatabaseName(final Environment environment) {
         StandardEnvironment standardEnv = (StandardEnvironment) environment;
-        return Strings.isNullOrEmpty(standardEnv.getProperty(PREFIX + 
SCHEMA_NAME)) ? DefaultSchema.LOGIC_NAME
-                : standardEnv.getProperty(PREFIX + SCHEMA_NAME);
+        String databaseName = standardEnv.getProperty(DATABASE_NAME_KEY);
+        if (!Strings.isNullOrEmpty(databaseName)) {
+            return databaseName;
+        }
+        String schemaName = standardEnv.getProperty(SCHEMA_NAME_KEY);
+        return Strings.isNullOrEmpty(schemaName) ? DefaultSchema.LOGIC_NAME : 
schemaName;
     }
 }
diff --git 
a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-spring-infra/shardingsphere-jdbc-spring-boot-starter-infra/src/test/java/org/apache/shardingsphere/spring/boot/schema/SchemaNameSetterTest.java
 
b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-spring-infra/shardingsphere-jdbc-spring-boot-starter-infra/src/test/java/org/apache/shardingsphere/spring/boot/schema/DatabaseNameSetterTest.java
similarity index 67%
rename from 
shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-spring-infra/shardingsphere-jdbc-spring-boot-starter-infra/src/test/java/org/apache/shardingsphere/spring/boot/schema/SchemaNameSetterTest.java
rename to 
shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-spring-infra/shardingsphere-jdbc-spring-boot-starter-infra/src/test/java/org/apache/shardingsphere/spring/boot/schema/DatabaseNameSetterTest.java
index 1016696f815..fac68c207be 100644
--- 
a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-spring-infra/shardingsphere-jdbc-spring-boot-starter-infra/src/test/java/org/apache/shardingsphere/spring/boot/schema/SchemaNameSetterTest.java
+++ 
b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-spring-infra/shardingsphere-jdbc-spring-boot-starter-infra/src/test/java/org/apache/shardingsphere/spring/boot/schema/DatabaseNameSetterTest.java
@@ -24,15 +24,23 @@ import org.springframework.mock.env.MockEnvironment;
 import static org.hamcrest.CoreMatchers.is;
 import static org.junit.Assert.assertThat;
 
-public final class SchemaNameSetterTest {
+public final class DatabaseNameSetterTest {
     
     @Test
-    public void assertSchemaName() {
+    public void assertGetDatabaseNameWhenConfigDatabaseName() {
+        MockEnvironment mockEnvironment = new MockEnvironment();
+        mockEnvironment.setProperty("spring.shardingsphere.database.name", 
"jdbc_db");
+        StandardEnvironment standardEnvironment = new StandardEnvironment();
+        standardEnvironment.merge(mockEnvironment);
+        assertThat(DatabaseNameSetter.getDatabaseName(standardEnvironment), 
is("jdbc_db"));
+    }
+    
+    @Test
+    public void assertGetDatabaseNameWhenConfigSchemaName() {
         MockEnvironment mockEnvironment = new MockEnvironment();
         mockEnvironment.setProperty("spring.shardingsphere.schema.name", 
"jdbc_db");
         StandardEnvironment standardEnvironment = new StandardEnvironment();
         standardEnvironment.merge(mockEnvironment);
-        String schemaName = 
SchemaNameSetter.getSchemaName(standardEnvironment);
-        assertThat(schemaName, is("jdbc_db"));
+        assertThat(DatabaseNameSetter.getDatabaseName(standardEnvironment), 
is("jdbc_db"));
     }
 }
diff --git 
a/shardingsphere-kernel/shardingsphere-data-pipeline/shardingsphere-data-pipeline-core/src/main/java/org/apache/shardingsphere/data/pipeline/scenario/rulealtered/RuleAlteredJobWorker.java
 
b/shardingsphere-kernel/shardingsphere-data-pipeline/shardingsphere-data-pipeline-core/src/main/java/org/apache/shardingsphere/data/pipeline/scenario/rulealtered/RuleAlteredJobWorker.java
index 43e777ca587..e1c5a93fbd2 100644
--- 
a/shardingsphere-kernel/shardingsphere-data-pipeline/shardingsphere-data-pipeline-core/src/main/java/org/apache/shardingsphere/data/pipeline/scenario/rulealtered/RuleAlteredJobWorker.java
+++ 
b/shardingsphere-kernel/shardingsphere-data-pipeline/shardingsphere-data-pipeline-core/src/main/java/org/apache/shardingsphere/data/pipeline/scenario/rulealtered/RuleAlteredJobWorker.java
@@ -247,9 +247,9 @@ public final class RuleAlteredJobWorker {
     }
     
     @SuppressWarnings("unchecked")
-    private YamlRootConfiguration getYamlRootConfiguration(final String 
schemaName, final String dataSources, final String rules) {
+    private YamlRootConfiguration getYamlRootConfiguration(final String 
databaseName, final String dataSources, final String rules) {
         YamlRootConfiguration result = new YamlRootConfiguration();
-        result.setSchemaName(schemaName);
+        result.setDatabaseName(databaseName);
         Map<String, Map<String, Object>> yamlDataSources = 
YamlEngine.unmarshal(dataSources, Map.class);
         disableSSLForMySQL(yamlDataSources);
         result.setDataSources(yamlDataSources);
diff --git 
a/shardingsphere-kernel/shardingsphere-data-pipeline/shardingsphere-data-pipeline-spi/src/main/java/org/apache/shardingsphere/data/pipeline/api/datasource/config/impl/ShardingSpherePipelineDataSourceConfiguration.java
 
b/shardingsphere-kernel/shardingsphere-data-pipeline/shardingsphere-data-pipeline-spi/src/main/java/org/apache/shardingsphere/data/pipeline/api/datasource/config/impl/ShardingSpherePipelineDataSourceConfiguration.java
index 7fdfd9226e3..32cce38ac19 100644
--- 
a/shardingsphere-kernel/shardingsphere-data-pipeline/shardingsphere-data-pipeline-spi/src/main/java/org/apache/shardingsphere/data/pipeline/api/datasource/config/impl/ShardingSpherePipelineDataSourceConfiguration.java
+++ 
b/shardingsphere-kernel/shardingsphere-data-pipeline/shardingsphere-data-pipeline-spi/src/main/java/org/apache/shardingsphere/data/pipeline/api/datasource/config/impl/ShardingSpherePipelineDataSourceConfiguration.java
@@ -61,7 +61,7 @@ public final class 
ShardingSpherePipelineDataSourceConfiguration implements Pipe
     }
     
     public ShardingSpherePipelineDataSourceConfiguration(final 
YamlRootConfiguration rootConfig) {
-        YamlParameterConfiguration parameterConfig = new 
YamlParameterConfiguration(rootConfig.getSchemaName(), 
rootConfig.getDataSources(), rootConfig.getRules());
+        YamlParameterConfiguration parameterConfig = new 
YamlParameterConfiguration(rootConfig.getDatabaseName(), 
rootConfig.getDataSources(), rootConfig.getRules());
         this.parameter = YamlEngine.marshal(parameterConfig);
         this.rootConfig = rootConfig;
         Map<String, Object> props = 
rootConfig.getDataSources().values().iterator().next();

Reply via email to