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 <[email protected]>
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,