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 f5b7cc4eb64 Rollback QualifiedSchema and QualifiedTable (#34680)
f5b7cc4eb64 is described below

commit f5b7cc4eb6434ce35c55cacb05f6a0b82f90c649
Author: Liang Zhang <zhangli...@apache.org>
AuthorDate: Sat Feb 15 19:18:43 2025 +0800

    Rollback QualifiedSchema and QualifiedTable (#34680)
    
    * Refactor QualifiedTable
    
    * Rollback QualifiedSchema and QualifiedTable
    
    * Rollback QualifiedSchema and QualifiedTable
---
 .../metadata/database/schema/QualifiedSchema.java  | 64 ----------------------
 .../metadata/database/schema/QualifiedTable.java   | 10 ++--
 .../database/schema/QualifiedSchemaTest.java       | 36 ------------
 .../database/schema/QualifiedTableTest.java        |  5 --
 .../schema/util/IndexMetaDataUtilsTest.java        |  2 +-
 .../checker/PipelineDataSourceCheckEngine.java     |  2 +-
 .../datasource/PipelineJobDataSourcePreparer.java  |  6 +-
 .../segment/PipelineSQLSegmentBuilder.java         |  2 +-
 .../MigrationDataConsistencyChecker.java           |  2 +-
 .../single/decider/SingleSQLFederationDecider.java |  4 +-
 .../single/route/engine/SingleRouteEngine.java     |  4 +-
 .../shardingsphere/single/rule/SingleRule.java     |  6 +-
 .../shardingsphere/single/rule/SingleRuleTest.java |  4 +-
 .../database/DatabaseMetaDataNodePathParser.java   | 19 ++++++-
 .../DatabaseMetaDataNodePathParserTest.java        | 23 ++++----
 .../database/metadata/MetaDataChangedHandler.java  | 19 +++----
 .../type/DatabaseMetaDataChangedListener.java      |  9 ++-
 .../test/e2e/data/pipeline/cases/cdc/CDCE2EIT.java |  2 +-
 18 files changed, 61 insertions(+), 158 deletions(-)

diff --git 
a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/QualifiedSchema.java
 
b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/QualifiedSchema.java
deleted file mode 100644
index 2f4c8893e97..00000000000
--- 
a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/QualifiedSchema.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.shardingsphere.infra.metadata.database.schema;
-
-import lombok.EqualsAndHashCode;
-import 
org.apache.shardingsphere.infra.metadata.identifier.ShardingSphereIdentifier;
-
-/**
- * Qualified schema.
- */
-@EqualsAndHashCode
-public final class QualifiedSchema {
-    
-    private final ShardingSphereIdentifier databaseName;
-    
-    private final ShardingSphereIdentifier schemaName;
-    
-    public QualifiedSchema(final String schemaName) {
-        this(null, schemaName);
-    }
-    
-    public QualifiedSchema(final String databaseName, final String schemaName) 
{
-        this.databaseName = new ShardingSphereIdentifier(databaseName);
-        this.schemaName = new ShardingSphereIdentifier(schemaName);
-    }
-    
-    /**
-     * Get database name.
-     *
-     * @return database name
-     */
-    public String getDatabaseName() {
-        return databaseName.getValue();
-    }
-    
-    /**
-     * Get schema name.
-     *
-     * @return schema name
-     */
-    public String getSchemaName() {
-        return schemaName.getValue();
-    }
-    
-    @Override
-    public String toString() {
-        return null == getDatabaseName() ? getSchemaName() : String.join(".", 
getDatabaseName(), getSchemaName());
-    }
-}
diff --git 
a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/QualifiedTable.java
 
b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/QualifiedTable.java
index 266bef509b4..9579c562a60 100644
--- 
a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/QualifiedTable.java
+++ 
b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/QualifiedTable.java
@@ -26,12 +26,12 @@ import 
org.apache.shardingsphere.infra.metadata.identifier.ShardingSphereIdentif
 @EqualsAndHashCode
 public final class QualifiedTable {
     
-    private final QualifiedSchema schema;
+    private final ShardingSphereIdentifier schemaName;
     
     private final ShardingSphereIdentifier tableName;
     
     public QualifiedTable(final String schemaName, final String tableName) {
-        this.schema = new QualifiedSchema(schemaName);
+        this.schemaName = new ShardingSphereIdentifier(schemaName);
         this.tableName = new ShardingSphereIdentifier(tableName);
     }
     
@@ -40,8 +40,8 @@ public final class QualifiedTable {
      *
      * @return schema name
      */
-    public String getSchema() {
-        return schema.getSchemaName();
+    public String getSchemaName() {
+        return schemaName.getValue();
     }
     
     /**
@@ -55,6 +55,6 @@ public final class QualifiedTable {
     
     @Override
     public String toString() {
-        return null == getSchema() ? tableName.getValue() : String.join(".", 
getSchema(), tableName.getValue());
+        return null == getSchemaName() ? getTableName() : String.join(".", 
getSchemaName(), getTableName());
     }
 }
diff --git 
a/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/database/schema/QualifiedSchemaTest.java
 
b/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/database/schema/QualifiedSchemaTest.java
deleted file mode 100644
index 02e63665587..00000000000
--- 
a/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/database/schema/QualifiedSchemaTest.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.shardingsphere.infra.metadata.database.schema;
-
-import org.junit.jupiter.api.Test;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.MatcherAssert.assertThat;
-
-class QualifiedSchemaTest {
-    
-    @Test
-    void assertToStringWithoutDatabase() {
-        assertThat(new QualifiedSchema("foo_schema").toString(), 
is("foo_schema"));
-    }
-    
-    @Test
-    void assertToString() {
-        assertThat(new QualifiedSchema("foo_db", "foo_schema").toString(), 
is("foo_db.foo_schema"));
-    }
-}
diff --git 
a/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/database/schema/QualifiedTableTest.java
 
b/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/database/schema/QualifiedTableTest.java
index 242498a03bc..c571969aa81 100644
--- 
a/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/database/schema/QualifiedTableTest.java
+++ 
b/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/database/schema/QualifiedTableTest.java
@@ -24,11 +24,6 @@ import static org.hamcrest.MatcherAssert.assertThat;
 
 class QualifiedTableTest {
     
-    @Test
-    void assertToStringWithoutSchema() {
-        assertThat(new QualifiedTable(null, "foo_tbl").toString(), 
is("foo_tbl"));
-    }
-    
     @Test
     void assertToString() {
         assertThat(new QualifiedTable("foo_schema", "foo_tbl").toString(), 
is("foo_schema.foo_tbl"));
diff --git 
a/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/database/schema/util/IndexMetaDataUtilsTest.java
 
b/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/database/schema/util/IndexMetaDataUtilsTest.java
index 116ff865a93..71d5a2c6cdb 100644
--- 
a/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/database/schema/util/IndexMetaDataUtilsTest.java
+++ 
b/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/database/schema/util/IndexMetaDataUtilsTest.java
@@ -79,7 +79,7 @@ class IndexMetaDataUtilsTest {
         IndexSegment indexSegment = new IndexSegment(0, 0, new 
IndexNameSegment(0, 0, new IdentifierValue("foo_idx")));
         Collection<QualifiedTable> actual = 
IndexMetaDataUtils.getTableNames(buildDatabase(), 
TypedSPILoader.getService(DatabaseType.class, "FIXTURE"), 
Collections.singleton(indexSegment));
         assertThat(actual.size(), is(1));
-        assertThat(actual.iterator().next().getSchema(), is("foo_db"));
+        assertThat(actual.iterator().next().getSchemaName(), is("foo_db"));
         assertThat(actual.iterator().next().getTableName(), is("foo_tbl"));
     }
     
diff --git 
a/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/checker/PipelineDataSourceCheckEngine.java
 
b/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/checker/PipelineDataSourceCheckEngine.java
index 2506c934ad8..7440198ea08 100644
--- 
a/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/checker/PipelineDataSourceCheckEngine.java
+++ 
b/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/checker/PipelineDataSourceCheckEngine.java
@@ -108,7 +108,7 @@ public final class PipelineDataSourceCheckEngine {
      * @throws SQLException if there's database operation failure
      */
     public boolean checkEmptyTable(final DataSource dataSource, final 
QualifiedTable qualifiedTable) throws SQLException {
-        String sql = 
sqlBuilder.buildCheckEmptyTableSQL(qualifiedTable.getSchema(), 
qualifiedTable.getTableName());
+        String sql = 
sqlBuilder.buildCheckEmptyTableSQL(qualifiedTable.getSchemaName(), 
qualifiedTable.getTableName());
         try (
                 Connection connection = dataSource.getConnection();
                 PreparedStatement preparedStatement = 
connection.prepareStatement(sql);
diff --git 
a/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/preparer/datasource/PipelineJobDataSourcePreparer.java
 
b/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/preparer/datasource/PipelineJobDataSourcePreparer.java
index 27bfb8b14a7..9d127680312 100644
--- 
a/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/preparer/datasource/PipelineJobDataSourcePreparer.java
+++ 
b/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/preparer/datasource/PipelineJobDataSourcePreparer.java
@@ -77,7 +77,7 @@ public final class PipelineJobDataSourcePreparer {
         PipelinePrepareSQLBuilder pipelineSQLBuilder = new 
PipelinePrepareSQLBuilder(targetDatabaseType);
         Collection<String> createdSchemaNames = new 
HashSet<>(param.getCreateTableConfigurations().size(), 1F);
         for (CreateTableConfiguration each : 
param.getCreateTableConfigurations()) {
-            String targetSchemaName = each.getTargetName().getSchema();
+            String targetSchemaName = each.getTargetName().getSchemaName();
             if (null == targetSchemaName || 
targetSchemaName.equalsIgnoreCase(defaultSchema) || 
createdSchemaNames.contains(targetSchemaName)) {
                 continue;
             }
@@ -132,7 +132,7 @@ public final class PipelineJobDataSourcePreparer {
     private List<String> getCreateTargetTableSQL(final 
CreateTableConfiguration createTableConfig, final PipelineDataSourceManager 
dataSourceManager) throws SQLException {
         DatabaseType databaseType = 
createTableConfig.getSourceDataSourceConfig().getDatabaseType();
         DataSource sourceDataSource = 
dataSourceManager.getDataSource(createTableConfig.getSourceDataSourceConfig());
-        String schemaName = createTableConfig.getSourceName().getSchema();
+        String schemaName = createTableConfig.getSourceName().getSchemaName();
         String sourceTableName = 
createTableConfig.getSourceName().getTableName();
         String targetTableName = 
createTableConfig.getTargetName().getTableName();
         return PipelineDDLGenerator.generateLogicDDL(databaseType, 
sourceDataSource, schemaName, sourceTableName, targetTableName);
@@ -140,7 +140,7 @@ public final class PipelineJobDataSourcePreparer {
     
     private Optional<String> decorateTargetTableSQL(final 
CreateTableConfiguration createTableConfig, final SQLParserEngine 
sqlParserEngine,
                                                     final 
ShardingSphereMetaData metaData, final String targetDatabaseName, final String 
sql) {
-        String schemaName = createTableConfig.getSourceName().getSchema();
+        String schemaName = createTableConfig.getSourceName().getSchemaName();
         String targetTableName = 
createTableConfig.getTargetName().getTableName();
         Optional<String> decoratedSQL = new 
PipelineDDLDecorator(metaData).decorate(databaseType, targetDatabaseName, 
schemaName, targetTableName, sqlParserEngine, sql);
         return decoratedSQL.map(String::trim).filter(trimmedSql -> 
!Strings.isNullOrEmpty(trimmedSql));
diff --git 
a/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/sqlbuilder/segment/PipelineSQLSegmentBuilder.java
 
b/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/sqlbuilder/segment/PipelineSQLSegmentBuilder.java
index 095bff3e23e..2327ffb7a34 100644
--- 
a/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/sqlbuilder/segment/PipelineSQLSegmentBuilder.java
+++ 
b/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/sqlbuilder/segment/PipelineSQLSegmentBuilder.java
@@ -67,6 +67,6 @@ public final class PipelineSQLSegmentBuilder {
      * @return qualified table name
      */
     public String getQualifiedTableName(final QualifiedTable qualifiedTable) {
-        return getQualifiedTableName(qualifiedTable.getSchema(), 
qualifiedTable.getTableName());
+        return getQualifiedTableName(qualifiedTable.getSchemaName(), 
qualifiedTable.getTableName());
     }
 }
diff --git 
a/kernel/data-pipeline/scenario/migration/src/main/java/org/apache/shardingsphere/data/pipeline/scenario/migration/check/consistency/MigrationDataConsistencyChecker.java
 
b/kernel/data-pipeline/scenario/migration/src/main/java/org/apache/shardingsphere/data/pipeline/scenario/migration/check/consistency/MigrationDataConsistencyChecker.java
index 4f424b06bdd..06c9a484ef1 100644
--- 
a/kernel/data-pipeline/scenario/migration/src/main/java/org/apache/shardingsphere/data/pipeline/scenario/migration/check/consistency/MigrationDataConsistencyChecker.java
+++ 
b/kernel/data-pipeline/scenario/migration/src/main/java/org/apache/shardingsphere/data/pipeline/scenario/migration/check/consistency/MigrationDataConsistencyChecker.java
@@ -133,7 +133,7 @@ public final class MigrationDataConsistencyChecker 
implements PipelineDataConsis
         ShardingSpherePreconditions.checkNotNull(tableMetaData,
                 () -> new 
PipelineTableDataConsistencyCheckLoadingFailedException(new 
QualifiedTable(dataNode.getSchemaName(), dataNode.getTableName())));
         List<String> columnNames = tableMetaData.getColumnNames();
-        List<PipelineColumnMetaData> uniqueKeys = 
PipelineTableMetaDataUtils.getUniqueKeyColumns(sourceTable.getSchema(), 
sourceTable.getTableName(), metaDataLoader);
+        List<PipelineColumnMetaData> uniqueKeys = 
PipelineTableMetaDataUtils.getUniqueKeyColumns(sourceTable.getSchemaName(), 
sourceTable.getTableName(), metaDataLoader);
         TableInventoryCheckParameter param = new TableInventoryCheckParameter(
                 jobConfig.getJobId(), sourceDataSource, targetDataSource, 
sourceTable, targetTable, columnNames, uniqueKeys, readRateLimitAlgorithm, 
progressContext);
         TableInventoryChecker tableInventoryChecker = 
tableChecker.buildTableInventoryChecker(param);
diff --git 
a/kernel/single/core/src/main/java/org/apache/shardingsphere/single/decider/SingleSQLFederationDecider.java
 
b/kernel/single/core/src/main/java/org/apache/shardingsphere/single/decider/SingleSQLFederationDecider.java
index a8c2610cb1d..e5e180db6e0 100644
--- 
a/kernel/single/core/src/main/java/org/apache/shardingsphere/single/decider/SingleSQLFederationDecider.java
+++ 
b/kernel/single/core/src/main/java/org/apache/shardingsphere/single/decider/SingleSQLFederationDecider.java
@@ -73,7 +73,7 @@ public final class SingleSQLFederationDecider implements 
SQLFederationDecider<Si
     
     private boolean containsView(final ShardingSphereDatabase database, final 
Collection<QualifiedTable> singleTables) {
         for (QualifiedTable each : singleTables) {
-            if 
(database.getSchema(each.getSchema()).containsView(each.getTableName())) {
+            if 
(database.getSchema(each.getSchemaName()).containsView(each.getTableName())) {
                 return true;
             }
         }
@@ -83,7 +83,7 @@ public final class SingleSQLFederationDecider implements 
SQLFederationDecider<Si
     private Collection<DataNode> getTableDataNodes(final SingleRule rule, 
final Collection<QualifiedTable> singleTables) {
         Collection<DataNode> result = new HashSet<>(singleTables.size(), 1F);
         for (QualifiedTable each : singleTables) {
-            
rule.getAttributes().getAttribute(MutableDataNodeRuleAttribute.class).findTableDataNode(each.getSchema(),
 each.getTableName()).ifPresent(result::add);
+            
rule.getAttributes().getAttribute(MutableDataNodeRuleAttribute.class).findTableDataNode(each.getSchemaName(),
 each.getTableName()).ifPresent(result::add);
         }
         return result;
     }
diff --git 
a/kernel/single/core/src/main/java/org/apache/shardingsphere/single/route/engine/SingleRouteEngine.java
 
b/kernel/single/core/src/main/java/org/apache/shardingsphere/single/route/engine/SingleRouteEngine.java
index a201ea2efc2..4223fbc364a 100644
--- 
a/kernel/single/core/src/main/java/org/apache/shardingsphere/single/route/engine/SingleRouteEngine.java
+++ 
b/kernel/single/core/src/main/java/org/apache/shardingsphere/single/route/engine/SingleRouteEngine.java
@@ -95,7 +95,7 @@ public final class SingleRouteEngine {
     private void routeDDLStatement(final RouteContext routeContext, final 
SingleRule rule) {
         if (sqlStatement instanceof CreateTableStatement) {
             QualifiedTable table = singleTables.iterator().next();
-            Optional<DataNode> dataNode = 
rule.getAttributes().getAttribute(MutableDataNodeRuleAttribute.class).findTableDataNode(table.getSchema(),
 table.getTableName());
+            Optional<DataNode> dataNode = 
rule.getAttributes().getAttribute(MutableDataNodeRuleAttribute.class).findTableDataNode(table.getSchemaName(),
 table.getTableName());
             boolean containsIfNotExists = ((CreateTableStatement) 
sqlStatement).isIfNotExists();
             if (dataNode.isPresent()) {
                 routeDDLStatementWithExistTable(routeContext, 
containsIfNotExists, dataNode.get(), table);
@@ -121,7 +121,7 @@ public final class SingleRouteEngine {
     private void fillRouteContext(final SingleRule singleRule, final 
RouteContext routeContext, final Collection<QualifiedTable> logicTables) {
         for (QualifiedTable each : logicTables) {
             String tableName = each.getTableName();
-            DataNode dataNode = 
singleRule.getAttributes().getAttribute(MutableDataNodeRuleAttribute.class).findTableDataNode(each.getSchema(),
 tableName)
+            DataNode dataNode = 
singleRule.getAttributes().getAttribute(MutableDataNodeRuleAttribute.class).findTableDataNode(each.getSchemaName(),
 tableName)
                     .orElseThrow(() -> new 
SingleTableNotFoundException(tableName));
             String dataSource = dataNode.getDataSourceName();
             routeContext.putRouteUnit(new RouteMapper(dataSource, dataSource), 
Collections.singletonList(new RouteMapper(tableName, tableName)));
diff --git 
a/kernel/single/core/src/main/java/org/apache/shardingsphere/single/rule/SingleRule.java
 
b/kernel/single/core/src/main/java/org/apache/shardingsphere/single/rule/SingleRule.java
index 4ae95eb3bf7..50211a03eb3 100644
--- 
a/kernel/single/core/src/main/java/org/apache/shardingsphere/single/rule/SingleRule.java
+++ 
b/kernel/single/core/src/main/java/org/apache/shardingsphere/single/rule/SingleRule.java
@@ -106,7 +106,7 @@ public final class SingleRule implements DatabaseRule {
             return false;
         }
         QualifiedTable sampleTable = singleTables.iterator().next();
-        Optional<DataNode> sampleDataNode = 
mutableDataNodeRuleAttribute.findTableDataNode(sampleTable.getSchema(), 
sampleTable.getTableName());
+        Optional<DataNode> sampleDataNode = 
mutableDataNodeRuleAttribute.findTableDataNode(sampleTable.getSchemaName(), 
sampleTable.getTableName());
         if (sampleDataNode.isPresent()) {
             for (DataNode each : dataNodes) {
                 if 
(!isSameComputeNode(sampleDataNode.get().getDataSourceName(), 
each.getDataSourceName())) {
@@ -124,7 +124,7 @@ public final class SingleRule implements DatabaseRule {
     private boolean isSingleTablesInSameComputeNode(final 
Collection<QualifiedTable> singleTables) {
         String sampleDataSourceName = null;
         for (QualifiedTable each : singleTables) {
-            Optional<DataNode> dataNode = 
mutableDataNodeRuleAttribute.findTableDataNode(each.getSchema(), 
each.getTableName());
+            Optional<DataNode> dataNode = 
mutableDataNodeRuleAttribute.findTableDataNode(each.getSchemaName(), 
each.getTableName());
             if (!dataNode.isPresent()) {
                 continue;
             }
@@ -158,7 +158,7 @@ public final class SingleRule implements DatabaseRule {
     
     private boolean containsDataNode(final QualifiedTable qualifiedTable, 
final Collection<DataNode> dataNodes) {
         for (DataNode each : dataNodes) {
-            if 
(qualifiedTable.getSchema().equalsIgnoreCase(each.getSchemaName())) {
+            if 
(qualifiedTable.getSchemaName().equalsIgnoreCase(each.getSchemaName())) {
                 return true;
             }
         }
diff --git 
a/kernel/single/core/src/test/java/org/apache/shardingsphere/single/rule/SingleRuleTest.java
 
b/kernel/single/core/src/test/java/org/apache/shardingsphere/single/rule/SingleRuleTest.java
index 2323eb5f87d..e27025edeb8 100644
--- 
a/kernel/single/core/src/test/java/org/apache/shardingsphere/single/rule/SingleRuleTest.java
+++ 
b/kernel/single/core/src/test/java/org/apache/shardingsphere/single/rule/SingleRuleTest.java
@@ -176,7 +176,7 @@ class SingleRuleTest {
         SingleRule singleRule = new SingleRule(ruleConfig, "foo_db", new 
H2DatabaseType(), dataSourceMap, 
Collections.singleton(mock(ShardingSphereRule.class, RETURNS_DEEP_STUBS)));
         Collection<QualifiedTable> tableNames = new LinkedList<>();
         tableNames.add(new QualifiedTable("foo_db", "employee"));
-        
assertThat(singleRule.getSingleTables(tableNames).iterator().next().getSchema(),
 is("foo_db"));
+        
assertThat(singleRule.getSingleTables(tableNames).iterator().next().getSchemaName(),
 is("foo_db"));
         
assertThat(singleRule.getSingleTables(tableNames).iterator().next().getTableName(),
 is("employee"));
     }
     
@@ -188,7 +188,7 @@ class SingleRuleTest {
         
singleRule.getAttributes().getAttribute(MutableDataNodeRuleAttribute.class).put(dataSourceName,
 "foo_db", tableName);
         Collection<QualifiedTable> tableNames = new LinkedList<>();
         tableNames.add(new QualifiedTable("foo_db", "teacher"));
-        
assertThat(singleRule.getSingleTables(tableNames).iterator().next().getSchema(),
 is("foo_db"));
+        
assertThat(singleRule.getSingleTables(tableNames).iterator().next().getSchemaName(),
 is("foo_db"));
         
assertThat(singleRule.getSingleTables(tableNames).iterator().next().getTableName(),
 is("teacher"));
         
assertTrue(singleRule.getAttributes().getAttribute(TableMapperRuleAttribute.class).getLogicTableNames().contains("employee"));
         
assertTrue(singleRule.getAttributes().getAttribute(TableMapperRuleAttribute.class).getLogicTableNames().contains("student"));
diff --git 
a/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/metadata/database/DatabaseMetaDataNodePathParser.java
 
b/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/metadata/database/DatabaseMetaDataNodePathParser.java
index 138d8de5225..5436cc9cf24 100644
--- 
a/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/metadata/database/DatabaseMetaDataNodePathParser.java
+++ 
b/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/metadata/database/DatabaseMetaDataNodePathParser.java
@@ -19,7 +19,6 @@ package 
org.apache.shardingsphere.mode.node.path.metadata.database;
 
 import lombok.AccessLevel;
 import lombok.NoArgsConstructor;
-import 
org.apache.shardingsphere.infra.metadata.database.schema.QualifiedSchema;
 import org.apache.shardingsphere.mode.node.path.NodePathPattern;
 
 import java.util.Optional;
@@ -32,6 +31,20 @@ import java.util.regex.Pattern;
 @NoArgsConstructor(access = AccessLevel.PRIVATE)
 public final class DatabaseMetaDataNodePathParser {
     
+    /**
+     * Find database name.
+     *
+     * @param path path
+     * @param containsChildPath whether contains child path
+     * @return found database name
+     */
+    public static Optional<String> findDatabaseName(final String path, final 
boolean containsChildPath) {
+        String endPattern = containsChildPath ? "?" : "$";
+        Pattern pattern = 
Pattern.compile(DatabaseMetaDataNodePathGenerator.getDatabasePath(NodePathPattern.IDENTIFIER)
 + endPattern, Pattern.CASE_INSENSITIVE);
+        Matcher matcher = pattern.matcher(path);
+        return matcher.find() ? Optional.of(matcher.group(1)) : 
Optional.empty();
+    }
+    
     /**
      * Find qualified schema.
      *
@@ -39,10 +52,10 @@ public final class DatabaseMetaDataNodePathParser {
      * @param containsChildPath whether contains child path
      * @return found qualified schema
      */
-    public static Optional<QualifiedSchema> findQualifiedSchema(final String 
path, final boolean containsChildPath) {
+    public static Optional<String> findSchemaName(final String path, final 
boolean containsChildPath) {
         String endPattern = containsChildPath ? "?" : "$";
         Pattern pattern = 
Pattern.compile(DatabaseMetaDataNodePathGenerator.getSchemaPath(NodePathPattern.IDENTIFIER,
 NodePathPattern.IDENTIFIER) + endPattern, Pattern.CASE_INSENSITIVE);
         Matcher matcher = pattern.matcher(path);
-        return matcher.find() ? Optional.of(new 
QualifiedSchema(matcher.group(1), matcher.group(2))) : Optional.empty();
+        return matcher.find() ? Optional.of(matcher.group(2)) : 
Optional.empty();
     }
 }
diff --git 
a/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/metadata/database/DatabaseMetaDataNodePathParserTest.java
 
b/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/metadata/database/DatabaseMetaDataNodePathParserTest.java
index 50c8f80ca6d..af72eafc170 100644
--- 
a/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/metadata/database/DatabaseMetaDataNodePathParserTest.java
+++ 
b/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/metadata/database/DatabaseMetaDataNodePathParserTest.java
@@ -17,7 +17,6 @@
 
 package org.apache.shardingsphere.mode.node.path.metadata.database;
 
-import 
org.apache.shardingsphere.infra.metadata.database.schema.QualifiedSchema;
 import org.junit.jupiter.api.Test;
 
 import java.util.Optional;
@@ -30,30 +29,28 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
 class DatabaseMetaDataNodePathParserTest {
     
     @Test
-    void assertFindQualifiedSchemaWithNotContainsChildPath() {
-        Optional<QualifiedSchema> actual = 
DatabaseMetaDataNodePathParser.findQualifiedSchema("/metadata/foo_db/schemas/foo_schema",
 false);
+    void assertFindSchemaNameWithNotContainsChildPath() {
+        Optional<String> actual = 
DatabaseMetaDataNodePathParser.findSchemaName("/metadata/foo_db/schemas/foo_schema",
 false);
         assertTrue(actual.isPresent());
-        assertThat(actual.get().getDatabaseName(), is("foo_db"));
-        assertThat(actual.get().getSchemaName(), is("foo_schema"));
+        assertThat(actual.get(), is("foo_schema"));
     }
     
     @Test
-    void assertNotFindQualifiedSchemaWithNotContainsChildPath() {
-        Optional<QualifiedSchema> actual = 
DatabaseMetaDataNodePathParser.findQualifiedSchema("/metadata/foo_db/schemas/foo_schema/tables",
 false);
+    void assertNotFindSchemaNameWithNotContainsChildPath() {
+        Optional<String> actual = 
DatabaseMetaDataNodePathParser.findSchemaName("/metadata/foo_db/schemas/foo_schema/tables",
 false);
         assertFalse(actual.isPresent());
     }
     
     @Test
-    void assertFindQualifiedSchemaWithContainsChildPath() {
-        Optional<QualifiedSchema> actual = 
DatabaseMetaDataNodePathParser.findQualifiedSchema("/metadata/foo_db/schemas/foo_schema/tables",
 true);
+    void assertFindSchemaNameWithContainsChildPath() {
+        Optional<String> actual = 
DatabaseMetaDataNodePathParser.findSchemaName("/metadata/foo_db/schemas/foo_schema/tables",
 true);
         assertTrue(actual.isPresent());
-        assertThat(actual.get().getDatabaseName(), is("foo_db"));
-        assertThat(actual.get().getSchemaName(), is("foo_schema"));
+        assertThat(actual.get(), is("foo_schema"));
     }
     
     @Test
-    void assertNotFindQualifiedSchemaWithContainsChildPath() {
-        Optional<QualifiedSchema> actual = 
DatabaseMetaDataNodePathParser.findQualifiedSchema("/xxx/foo_db/schemas/foo_schema/tables",
 true);
+    void assertNotFindSchemaNameWithContainsChildPath() {
+        Optional<String> actual = 
DatabaseMetaDataNodePathParser.findSchemaName("/xxx/foo_db/schemas/foo_schema/tables",
 true);
         assertFalse(actual.isPresent());
     }
 }
diff --git 
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/metadata/MetaDataChangedHandler.java
 
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/metadata/MetaDataChangedHandler.java
index 8b525e7395a..a08ebbc8946 100644
--- 
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/metadata/MetaDataChangedHandler.java
+++ 
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/metadata/MetaDataChangedHandler.java
@@ -17,7 +17,6 @@
 
 package 
org.apache.shardingsphere.mode.manager.cluster.dispatch.handler.database.metadata;
 
-import 
org.apache.shardingsphere.infra.metadata.database.schema.QualifiedSchema;
 import org.apache.shardingsphere.mode.event.DataChangedEvent;
 import org.apache.shardingsphere.mode.event.DataChangedEvent.Type;
 import org.apache.shardingsphere.mode.manager.ContextManager;
@@ -26,10 +25,10 @@ import 
org.apache.shardingsphere.mode.manager.cluster.dispatch.handler.database.
 import 
org.apache.shardingsphere.mode.manager.cluster.dispatch.handler.database.metadata.type.StorageUnitChangedHandler;
 import 
org.apache.shardingsphere.mode.manager.cluster.dispatch.handler.database.metadata.type.TableChangedHandler;
 import 
org.apache.shardingsphere.mode.manager.cluster.dispatch.handler.database.metadata.type.ViewChangedHandler;
-import 
org.apache.shardingsphere.mode.node.path.metadata.storage.DataSourceMetaDataNodePathParser;
 import 
org.apache.shardingsphere.mode.node.path.metadata.database.DatabaseMetaDataNodePathParser;
 import 
org.apache.shardingsphere.mode.node.path.metadata.database.TableMetaDataNodePathParser;
 import 
org.apache.shardingsphere.mode.node.path.metadata.database.ViewMetaDataNodePathParser;
+import 
org.apache.shardingsphere.mode.node.path.metadata.storage.DataSourceMetaDataNodePathParser;
 
 import java.util.Optional;
 
@@ -65,18 +64,18 @@ public final class MetaDataChangedHandler {
      */
     public boolean handle(final String databaseName, final DataChangedEvent 
event) {
         String eventKey = event.getKey();
-        Optional<QualifiedSchema> qualifiedSchema = 
DatabaseMetaDataNodePathParser.findQualifiedSchema(eventKey, false);
-        if (qualifiedSchema.isPresent()) {
-            handleSchemaChanged(databaseName, 
qualifiedSchema.get().getSchemaName(), event);
+        Optional<String> schemaName = 
DatabaseMetaDataNodePathParser.findSchemaName(eventKey, false);
+        if (schemaName.isPresent()) {
+            handleSchemaChanged(databaseName, schemaName.get(), event);
             return true;
         }
-        qualifiedSchema = 
DatabaseMetaDataNodePathParser.findQualifiedSchema(eventKey, true);
-        if (qualifiedSchema.isPresent() && isTableMetaDataChanged(eventKey)) {
-            handleTableChanged(databaseName, 
qualifiedSchema.get().getSchemaName(), event);
+        schemaName = DatabaseMetaDataNodePathParser.findSchemaName(eventKey, 
true);
+        if (schemaName.isPresent() && isTableMetaDataChanged(eventKey)) {
+            handleTableChanged(databaseName, schemaName.get(), event);
             return true;
         }
-        if (qualifiedSchema.isPresent() && isViewMetaDataChanged(eventKey)) {
-            handleViewChanged(databaseName, 
qualifiedSchema.get().getSchemaName(), event);
+        if (schemaName.isPresent() && isViewMetaDataChanged(eventKey)) {
+            handleViewChanged(databaseName, schemaName.get(), event);
             return true;
         }
         if (DataSourceMetaDataNodePathParser.isDataSourceRootPath(eventKey)) {
diff --git 
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/listener/type/DatabaseMetaDataChangedListener.java
 
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/listener/type/DatabaseMetaDataChangedListener.java
index 6033307bfb9..5f8979885ac 100644
--- 
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/listener/type/DatabaseMetaDataChangedListener.java
+++ 
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/listener/type/DatabaseMetaDataChangedListener.java
@@ -19,7 +19,6 @@ package 
org.apache.shardingsphere.mode.manager.cluster.dispatch.listener.type;
 
 import lombok.RequiredArgsConstructor;
 import 
org.apache.shardingsphere.infra.exception.core.external.sql.type.wrapper.SQLWrapperException;
-import 
org.apache.shardingsphere.infra.metadata.database.schema.QualifiedSchema;
 import 
org.apache.shardingsphere.infra.spi.type.ordered.cache.OrderedServicesCache;
 import org.apache.shardingsphere.mode.event.DataChangedEvent;
 import org.apache.shardingsphere.mode.manager.ContextManager;
@@ -41,16 +40,16 @@ public final class DatabaseMetaDataChangedListener 
implements DataChangedEventLi
     
     @Override
     public void onChange(final DataChangedEvent event) {
-        Optional<QualifiedSchema> qualifiedSchema = 
DatabaseMetaDataNodePathParser.findQualifiedSchema(event.getKey(), true);
-        if (!qualifiedSchema.isPresent()) {
+        Optional<String> databaseName = 
DatabaseMetaDataNodePathParser.findDatabaseName(event.getKey(), true);
+        if (!databaseName.isPresent()) {
             return;
         }
         OrderedServicesCache.clearCache();
-        if (new 
MetaDataChangedHandler(contextManager).handle(qualifiedSchema.get().getDatabaseName(),
 event)) {
+        if (new 
MetaDataChangedHandler(contextManager).handle(databaseName.get(), event)) {
             return;
         }
         try {
-            new 
RuleConfigurationChangedHandler(contextManager).handle(qualifiedSchema.get().getDatabaseName(),
 event);
+            new 
RuleConfigurationChangedHandler(contextManager).handle(databaseName.get(), 
event);
         } catch (final SQLException ex) {
             throw new SQLWrapperException(ex);
         }
diff --git 
a/test/e2e/operation/pipeline/src/test/java/org/apache/shardingsphere/test/e2e/data/pipeline/cases/cdc/CDCE2EIT.java
 
b/test/e2e/operation/pipeline/src/test/java/org/apache/shardingsphere/test/e2e/data/pipeline/cases/cdc/CDCE2EIT.java
index 9fff931f7f8..8297becec5e 100644
--- 
a/test/e2e/operation/pipeline/src/test/java/org/apache/shardingsphere/test/e2e/data/pipeline/cases/cdc/CDCE2EIT.java
+++ 
b/test/e2e/operation/pipeline/src/test/java/org/apache/shardingsphere/test/e2e/data/pipeline/cases/cdc/CDCE2EIT.java
@@ -188,7 +188,7 @@ class CDCE2EIT {
     
     private void assertDataMatched(final PipelineDataSource sourceDataSource, 
final PipelineDataSource targetDataSource, final QualifiedTable qualifiedTable) 
{
         StandardPipelineTableMetaDataLoader metaDataLoader = new 
StandardPipelineTableMetaDataLoader(targetDataSource);
-        PipelineTableMetaData tableMetaData = 
metaDataLoader.getTableMetaData(qualifiedTable.getSchema(), 
qualifiedTable.getTableName());
+        PipelineTableMetaData tableMetaData = 
metaDataLoader.getTableMetaData(qualifiedTable.getSchemaName(), 
qualifiedTable.getTableName());
         List<PipelineColumnMetaData> uniqueKeys = 
Collections.singletonList(tableMetaData.getColumnMetaData(tableMetaData.getPrimaryKeyColumns().get(0)));
         ConsistencyCheckJobItemProgressContext progressContext = new 
ConsistencyCheckJobItemProgressContext("", 0, 
sourceDataSource.getDatabaseType().getType());
         TableInventoryCheckParameter param = new 
TableInventoryCheckParameter("", sourceDataSource, targetDataSource, 
qualifiedTable, qualifiedTable,


Reply via email to