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 24eb6881d13 Refactor TableMetaDataNodePath (#34565)
24eb6881d13 is described below
commit 24eb6881d136beb805cc541b85be1a81cf2c93bb
Author: Liang Zhang <[email protected]>
AuthorDate: Thu Feb 6 01:20:24 2025 +0800
Refactor TableMetaDataNodePath (#34565)
* Refactor TableMetaDataNodePath
* Refactor TableMetaDataNodePath
---
.../node/path/metadata/TableMetaDataNodePath.java | 44 ++++++++++------------
.../path/metadata/TableMetaDataNodePathTest.java | 34 ++++++++---------
.../database/metadata/MetaDataChangedHandler.java | 2 +-
.../metadata/type/TableChangedHandler.java | 2 +-
4 files changed, 38 insertions(+), 44 deletions(-)
diff --git
a/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/metadata/TableMetaDataNodePath.java
b/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/metadata/TableMetaDataNodePath.java
index 86d5ca54858..57c82685521 100644
---
a/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/metadata/TableMetaDataNodePath.java
+++
b/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/metadata/TableMetaDataNodePath.java
@@ -30,19 +30,13 @@ import java.util.regex.Pattern;
@NoArgsConstructor(access = AccessLevel.PRIVATE)
public final class TableMetaDataNodePath {
- private static final String ROOT_NODE = "/metadata";
-
private static final String TABLES_NODE = "tables";
private static final String VERSIONS_NODE = "versions";
private static final String ACTIVE_VERSION_NODE = "active_version";
- private static final String TABLES_PATTERN =
"/([\\w\\-]+)/schemas/([\\w\\-]+)/tables";
-
- private static final String ACTIVE_VERSION_SUFFIX =
"/([\\w\\-]+)/active_version";
-
- private static final String TABLE_SUFFIX = "/([\\w\\-]+)$";
+ private static final String IDENTIFIER_PATTERN = "([\\w\\-]+)";
/**
* Get table root path.
@@ -105,46 +99,46 @@ public final class TableMetaDataNodePath {
}
/**
- * Get table name by active version path.
+ * Find table name.
*
* @param path path
- * @return table name
+ * @return found table name
*/
- public static Optional<String> getTableNameByActiveVersionPath(final
String path) {
- Pattern pattern = Pattern.compile(ROOT_NODE + TABLES_PATTERN +
ACTIVE_VERSION_SUFFIX, Pattern.CASE_INSENSITIVE);
+ public static Optional<String> findTableName(final String path) {
+ Pattern pattern = Pattern.compile(getTablePath(IDENTIFIER_PATTERN,
IDENTIFIER_PATTERN, IDENTIFIER_PATTERN) + "$", Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(path);
return matcher.find() ? Optional.of(matcher.group(3)) :
Optional.empty();
}
/**
- * Find table name.
+ * Is table path.
*
* @param path path
- * @return found table name
+ * @return true or false
*/
- public static Optional<String> findTableName(final String path) {
- Pattern pattern = Pattern.compile(ROOT_NODE + TABLES_PATTERN +
"/([\\w\\-]+)$", Pattern.CASE_INSENSITIVE);
- Matcher matcher = pattern.matcher(path);
- return matcher.find() ? Optional.of(matcher.group(3)) :
Optional.empty();
+ public static boolean isTablePath(final String path) {
+ return findTableName(path).isPresent();
}
/**
- * Is table active version path.
+ * Get table name by active version path.
*
* @param path path
- * @return true or false
+ * @return table name
*/
- public static boolean isTableActiveVersionPath(final String path) {
- return Pattern.compile(ROOT_NODE + TABLES_PATTERN +
ACTIVE_VERSION_SUFFIX, Pattern.CASE_INSENSITIVE).matcher(path).find();
+ public static Optional<String> findTableNameByActiveVersionPath(final
String path) {
+ Pattern pattern =
Pattern.compile(getTableActiveVersionPath(IDENTIFIER_PATTERN,
IDENTIFIER_PATTERN, IDENTIFIER_PATTERN), Pattern.CASE_INSENSITIVE);
+ Matcher matcher = pattern.matcher(path);
+ return matcher.find() ? Optional.of(matcher.group(3)) :
Optional.empty();
}
/**
- * Is table path.
+ * Is table active version path.
*
* @param path path
- * @return true or false
+ * @return is table active version path or not
*/
- public static boolean isTablePath(final String path) {
- return Pattern.compile(ROOT_NODE + TABLES_PATTERN + TABLE_SUFFIX,
Pattern.CASE_INSENSITIVE).matcher(path).find();
+ public static boolean isTableActiveVersionPath(final String path) {
+ return findTableNameByActiveVersionPath(path).isPresent();
}
}
diff --git
a/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/metadata/TableMetaDataNodePathTest.java
b/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/metadata/TableMetaDataNodePathTest.java
index 275e1873929..a0e1c61cd26 100644
---
a/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/metadata/TableMetaDataNodePathTest.java
+++
b/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/metadata/TableMetaDataNodePathTest.java
@@ -33,6 +33,11 @@ class TableMetaDataNodePathTest {
assertThat(TableMetaDataNodePath.getTableRootPath("foo_db",
"foo_schema"), is("/metadata/foo_db/schemas/foo_schema/tables"));
}
+ @Test
+ void assertGetTablePath() {
+ assertThat(TableMetaDataNodePath.getTablePath("foo_db", "foo_schema",
"foo_tbl"), is("/metadata/foo_db/schemas/foo_schema/tables/foo_tbl"));
+ }
+
@Test
void assertGetTableActiveVersionPath() {
assertThat(TableMetaDataNodePath.getTableActiveVersionPath("foo_db",
"foo_schema", "foo_tbl"),
is("/metadata/foo_db/schemas/foo_schema/tables/foo_tbl/active_version"));
@@ -49,41 +54,36 @@ class TableMetaDataNodePathTest {
}
@Test
- void assertGetTablePath() {
- assertThat(TableMetaDataNodePath.getTablePath("foo_db", "foo_schema",
"foo_tbl"), is("/metadata/foo_db/schemas/foo_schema/tables/foo_tbl"));
+ void assertFindTableName() {
+ Optional<String> actual =
TableMetaDataNodePath.findTableName("/metadata/foo_db/schemas/foo_schema/tables/foo_tbl");
+ assertTrue(actual.isPresent());
+ assertThat(actual.get(), is("foo_tbl"));
}
@Test
- void assertFindTableNameByActiveVersionPath() {
- Optional<String> actual =
TableMetaDataNodePath.getTableNameByActiveVersionPath("/metadata/foo_db/schemas/foo_schema/tables/foo_tbl/active_version");
- assertTrue(actual.isPresent());
- assertThat(actual.get(), is("foo_tbl"));
+ void assertFindTableNameIfNotFound() {
+
assertFalse(TableMetaDataNodePath.findTableName("/xxx/foo_db/schemas/foo_schema/tables/foo_tbl").isPresent());
}
@Test
- void assertFindTableNameByActiveVersionPathIfNotFound() {
-
assertFalse(TableMetaDataNodePath.getTableNameByActiveVersionPath("/xxx/foo_db/schemas/foo_schema/tables/foo_tbl/active_version").isPresent());
+ void assertIsTablePath() {
+
assertTrue(TableMetaDataNodePath.isTablePath("/metadata/foo_db/schemas/foo_schema/tables/foo_tbl"));
}
@Test
- void assertFindTableName() {
- Optional<String> actual =
TableMetaDataNodePath.findTableName("/metadata/foo_db/schemas/foo_schema/tables/foo_tbl");
+ void assertFindTableNameByActiveVersionPath() {
+ Optional<String> actual =
TableMetaDataNodePath.findTableNameByActiveVersionPath("/metadata/foo_db/schemas/foo_schema/tables/foo_tbl/active_version");
assertTrue(actual.isPresent());
assertThat(actual.get(), is("foo_tbl"));
}
@Test
- void assertFindTableNameIfNotFound() {
-
assertFalse(TableMetaDataNodePath.findTableName("/xxx/foo_db/schemas/foo_schema/tables/foo_tbl").isPresent());
+ void assertFindTableNameByActiveVersionPathIfNotFound() {
+
assertFalse(TableMetaDataNodePath.findTableNameByActiveVersionPath("/xxx/foo_db/schemas/foo_schema/tables/foo_tbl/active_version").isPresent());
}
@Test
void assertIsTableActiveVersionPath() {
assertTrue(TableMetaDataNodePath.isTableActiveVersionPath("/metadata/foo_db/schemas/foo_schema/tables/foo_tbl/active_version"));
}
-
- @Test
- void assertIsTablePath() {
-
assertTrue(TableMetaDataNodePath.isTablePath("/metadata/foo_db/schemas/foo_schema/tables/foo_tbl"));
- }
}
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 d71dacc76f4..c2309bd92fe 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
@@ -94,7 +94,7 @@ public final class MetaDataChangedHandler {
}
private boolean isTableMetaDataChanged(final String key) {
- return TableMetaDataNodePath.isTableActiveVersionPath(key) ||
TableMetaDataNodePath.isTablePath(key);
+ return TableMetaDataNodePath.isTablePath(key) ||
TableMetaDataNodePath.isTableActiveVersionPath(key);
}
private void handleTableChanged(final String databaseName, final String
schemaName, final DataChangedEvent event) {
diff --git
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/metadata/type/TableChangedHandler.java
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/metadata/type/TableChangedHandler.java
index a23cdb9c7e8..a3260f86697 100644
---
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/metadata/type/TableChangedHandler.java
+++
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/metadata/type/TableChangedHandler.java
@@ -46,7 +46,7 @@ public final class TableChangedHandler {
* @param event data changed event
*/
public void handleCreatedOrAltered(final String databaseName, final String
schemaName, final DataChangedEvent event) {
- String tableName =
TableMetaDataNodePath.getTableNameByActiveVersionPath(event.getKey()).orElseThrow(()
-> new IllegalStateException("Table name not found."));
+ String tableName =
TableMetaDataNodePath.findTableNameByActiveVersionPath(event.getKey()).orElseThrow(()
-> new IllegalStateException("Table name not found."));
ActiveVersionChecker.checkActiveVersion(contextManager, event);
ShardingSphereTable table =
contextManager.getPersistServiceFacade().getMetaDataPersistFacade().getDatabaseMetaDataFacade().getTable().load(databaseName,
schemaName, tableName);
contextManager.getMetaDataContextManager().getDatabaseMetaDataManager().alterTable(databaseName,
schemaName, table);