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 a5ff5552889 Add NodePathSearchCriteria (#34750)
a5ff5552889 is described below
commit a5ff555288982958abac2888b10396b33b5fb76d
Author: Liang Zhang <[email protected]>
AuthorDate: Sat Feb 22 23:56:12 2025 +0800
Add NodePathSearchCriteria (#34750)
* Add NodePathSearchCriteria
* Add NodePathSearchCriteria
* Add NodePathSearchCriteria
* Add NodePathSearchCriteria
* Add NodePathSearchCriteria
---
...taNodePath.java => NodePathSearchCriteria.java} | 21 +++++++------
.../mode/node/path/NodePathSearcher.java | 19 +++++-------
.../metadata/database/TableMetadataNodePath.java | 34 ++++++++++++++++++++++
.../metadata/database/ViewMetadataNodePath.java | 15 ++++++++++
.../database/TableMetadataNodePathTest.java | 34 ++++++++++------------
.../database/ViewMetadataNodePathTest.java | 12 +++-----
.../database/metadata/MetaDataChangedHandler.java | 22 +++++---------
.../metadata/type/TableChangedHandler.java | 6 ++--
.../database/metadata/type/ViewChangedHandler.java | 7 ++---
.../type/DatabaseMetaDataChangedListener.java | 3 +-
10 files changed, 100 insertions(+), 73 deletions(-)
diff --git
a/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/metadata/database/TableMetadataNodePath.java
b/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/NodePathSearchCriteria.java
similarity index 64%
copy from
mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/metadata/database/TableMetadataNodePath.java
copy to
mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/NodePathSearchCriteria.java
index b042ec8efee..3d52f3d5236 100644
---
a/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/metadata/database/TableMetadataNodePath.java
+++
b/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/NodePathSearchCriteria.java
@@ -15,24 +15,27 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.mode.node.path.metadata.database;
+package org.apache.shardingsphere.mode.node.path;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
-import org.apache.shardingsphere.mode.node.path.NodePath;
-import org.apache.shardingsphere.mode.node.path.NodePathEntity;
/**
- * Table metadata node path.
+ * Node path search criteria.
*/
-@NodePathEntity("/metadata/${databaseName}/schemas/${schemaName}/tables/${tableName}")
@RequiredArgsConstructor
@Getter
-public final class TableMetadataNodePath implements NodePath {
+public final class NodePathSearchCriteria {
- private final String databaseName;
+ private final NodePath nodePathExample;
- private final String schemaName;
+ private final boolean trimEmptyNode;
- private final String tableName;
+ private final boolean containsChildPath;
+
+ private final int searchSegmentIndex;
+
+ public NodePathSearchCriteria(final NodePath nodePathExample, final
boolean trimEmptyNode, final boolean containsChildPath) {
+ this(nodePathExample, trimEmptyNode, containsChildPath, 0);
+ }
}
diff --git
a/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/NodePathSearcher.java
b/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/NodePathSearcher.java
index e9191063e26..f1c14c6813c 100644
---
a/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/NodePathSearcher.java
+++
b/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/NodePathSearcher.java
@@ -35,28 +35,23 @@ public final class NodePathSearcher {
* Find node segment.
*
* @param path to be searched path
- * @param nodePathCriteria node path criteria
- * @param trimEmptyNode null variable should trim parent node if true
- * @param containsChildPath whether contains child path
- * @param searchSegmentIndex search segment index, start from 1
+ * @param criteria node path search criteria
* @return found node segment
*/
- public static Optional<String> find(final String path, final NodePath
nodePathCriteria, final boolean trimEmptyNode, final boolean containsChildPath,
final int searchSegmentIndex) {
- Matcher matcher = createPattern(nodePathCriteria, trimEmptyNode,
containsChildPath).matcher(path);
- return matcher.find() ? Optional.of(matcher.group(searchSegmentIndex))
: Optional.empty();
+ public static Optional<String> find(final String path, final
NodePathSearchCriteria criteria) {
+ Matcher matcher = createPattern(criteria.getNodePathExample(),
criteria.isTrimEmptyNode(), criteria.isContainsChildPath()).matcher(path);
+ return matcher.find() ?
Optional.of(matcher.group(criteria.getSearchSegmentIndex())) : Optional.empty();
}
/**
* Whether to matched path.
*
* @param path to be searched path
- * @param nodePathCriteria node path criteria
- * @param trimEmptyNode null variable should trim parent node if true
- * @param containsChildPath whether contains child path
+ * @param criteria node path search criteria
* @return is matched path or not
*/
- public static boolean isMatchedPath(final String path, final NodePath
nodePathCriteria, final boolean trimEmptyNode, final boolean containsChildPath)
{
- return createPattern(nodePathCriteria, trimEmptyNode,
containsChildPath).matcher(path).find();
+ public static boolean isMatchedPath(final String path, final
NodePathSearchCriteria criteria) {
+ return createPattern(criteria.getNodePathExample(),
criteria.isTrimEmptyNode(),
criteria.isContainsChildPath()).matcher(path).find();
}
private static Pattern createPattern(final NodePath nodePathCriteria,
final boolean trimEmptyNode, final boolean containsChildPath) {
diff --git
a/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/metadata/database/TableMetadataNodePath.java
b/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/metadata/database/TableMetadataNodePath.java
index b042ec8efee..5a2b88faf47 100644
---
a/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/metadata/database/TableMetadataNodePath.java
+++
b/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/metadata/database/TableMetadataNodePath.java
@@ -21,6 +21,8 @@ import lombok.Getter;
import lombok.RequiredArgsConstructor;
import org.apache.shardingsphere.mode.node.path.NodePath;
import org.apache.shardingsphere.mode.node.path.NodePathEntity;
+import org.apache.shardingsphere.mode.node.path.NodePathPattern;
+import org.apache.shardingsphere.mode.node.path.NodePathSearchCriteria;
/**
* Table metadata node path.
@@ -35,4 +37,36 @@ public final class TableMetadataNodePath implements NodePath
{
private final String schemaName;
private final String tableName;
+
+ public TableMetadataNodePath() {
+ this(NodePathPattern.IDENTIFIER, NodePathPattern.IDENTIFIER,
NodePathPattern.IDENTIFIER);
+ }
+
+ /**
+ * Create database search criteria.
+ *
+ * @return created database search criteria
+ */
+ public static NodePathSearchCriteria createDatabaseSearchCriteria() {
+ return new NodePathSearchCriteria(new
TableMetadataNodePath(NodePathPattern.IDENTIFIER, null, null), true, true, 1);
+ }
+
+ /**
+ * Create schema search criteria.
+ *
+ * @param containsChildPath contains child path
+ * @return created schema search criteria
+ */
+ public static NodePathSearchCriteria createSchemaSearchCriteria(final
boolean containsChildPath) {
+ return new NodePathSearchCriteria(new
TableMetadataNodePath(NodePathPattern.IDENTIFIER, NodePathPattern.IDENTIFIER,
null), true, containsChildPath, 2);
+ }
+
+ /**
+ * Create table search criteria.
+ *
+ * @return created table search criteria
+ */
+ public static NodePathSearchCriteria createTableSearchCriteria() {
+ return new NodePathSearchCriteria(new TableMetadataNodePath(), false,
false, 3);
+ }
}
diff --git
a/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/metadata/database/ViewMetadataNodePath.java
b/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/metadata/database/ViewMetadataNodePath.java
index 488b26fbb9c..da18461de8b 100644
---
a/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/metadata/database/ViewMetadataNodePath.java
+++
b/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/metadata/database/ViewMetadataNodePath.java
@@ -21,6 +21,8 @@ import lombok.Getter;
import lombok.RequiredArgsConstructor;
import org.apache.shardingsphere.mode.node.path.NodePath;
import org.apache.shardingsphere.mode.node.path.NodePathEntity;
+import org.apache.shardingsphere.mode.node.path.NodePathPattern;
+import org.apache.shardingsphere.mode.node.path.NodePathSearchCriteria;
/**
* View metadata node path.
@@ -35,4 +37,17 @@ public final class ViewMetadataNodePath implements NodePath {
private final String schemaName;
private final String viewName;
+
+ public ViewMetadataNodePath() {
+ this(NodePathPattern.IDENTIFIER, NodePathPattern.IDENTIFIER,
NodePathPattern.IDENTIFIER);
+ }
+
+ /**
+ * Create view search criteria.
+ *
+ * @return created view search criteria
+ */
+ public static NodePathSearchCriteria createViewSearchCriteria() {
+ return new NodePathSearchCriteria(new ViewMetadataNodePath(), false,
true, 3);
+ }
}
diff --git
a/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/metadata/database/TableMetadataNodePathTest.java
b/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/metadata/database/TableMetadataNodePathTest.java
index 6f07c1b675b..a5fee2e4465 100644
---
a/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/metadata/database/TableMetadataNodePathTest.java
+++
b/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/metadata/database/TableMetadataNodePathTest.java
@@ -19,7 +19,6 @@ package
org.apache.shardingsphere.mode.node.path.metadata.database;
import org.apache.shardingsphere.mode.node.path.NodePathGenerator;
import org.apache.shardingsphere.mode.node.path.NodePathSearcher;
-import org.apache.shardingsphere.mode.node.path.NodePathPattern;
import org.apache.shardingsphere.mode.node.path.version.VersionNodePath;
import org.junit.jupiter.api.Test;
@@ -49,26 +48,23 @@ class TableMetadataNodePathTest {
}
@Test
- void assertFind() {
-
assertThat(NodePathSearcher.find("/metadata/foo_db/schemas/foo_schema", new
TableMetadataNodePath(NodePathPattern.IDENTIFIER, null, null), true, true, 1),
is(Optional.of("foo_db")));
- assertFalse(NodePathSearcher.find("/xxx/foo_db/schemas/foo_schema",
new TableMetadataNodePath(NodePathPattern.IDENTIFIER, null, null), true, true,
1).isPresent());
-
assertThat(NodePathSearcher.find("/metadata/foo_db/schemas/foo_schema", new
TableMetadataNodePath(NodePathPattern.IDENTIFIER, NodePathPattern.IDENTIFIER,
null), true, false, 2),
- is(Optional.of("foo_schema")));
- assertFalse(
-
NodePathSearcher.find("/metadata/foo_db/schemas/foo_schema/tables", new
TableMetadataNodePath(NodePathPattern.IDENTIFIER, NodePathPattern.IDENTIFIER,
null), true, false, 2)
- .isPresent());
-
assertThat(NodePathSearcher.find("/metadata/foo_db/schemas/foo_schema/tables",
new TableMetadataNodePath(NodePathPattern.IDENTIFIER,
NodePathPattern.IDENTIFIER, null), true, true, 2),
- is(Optional.of("foo_schema")));
-
assertFalse(NodePathSearcher.find("/xxx/foo_db/schemas/foo_schema/tables", new
TableMetadataNodePath(NodePathPattern.IDENTIFIER, NodePathPattern.IDENTIFIER,
null), true, true, 2).isPresent());
-
assertThat(NodePathSearcher.find("/metadata/foo_db/schemas/foo_schema/tables/foo_tbl",
- new TableMetadataNodePath(NodePathPattern.IDENTIFIER,
NodePathPattern.IDENTIFIER, NodePathPattern.IDENTIFIER), false, false, 3),
is(Optional.of("foo_tbl")));
-
assertFalse(NodePathSearcher.find("/xxx/foo_db/schemas/foo_schema/tables/foo_tbl",
- new TableMetadataNodePath(NodePathPattern.IDENTIFIER,
NodePathPattern.IDENTIFIER, NodePathPattern.IDENTIFIER), false, false,
3).isPresent());
+ void assertCreateDatabaseSearchCriteria() {
+
assertThat(NodePathSearcher.find("/metadata/foo_db/schemas/foo_schema",
TableMetadataNodePath.createDatabaseSearchCriteria()),
is(Optional.of("foo_db")));
+ assertFalse(NodePathSearcher.find("/xxx/foo_db/schemas/foo_schema",
TableMetadataNodePath.createDatabaseSearchCriteria()).isPresent());
}
@Test
- void assertIsTablePath() {
-
assertTrue(NodePathSearcher.isMatchedPath("/metadata/foo_db/schemas/foo_schema/tables/foo_tbl",
- new TableMetadataNodePath(NodePathPattern.IDENTIFIER,
NodePathPattern.IDENTIFIER, NodePathPattern.IDENTIFIER), false, false));
+ void assertCreateSchemaSearchCriteria() {
+
assertThat(NodePathSearcher.find("/metadata/foo_db/schemas/foo_schema",
TableMetadataNodePath.createSchemaSearchCriteria(false)),
is(Optional.of("foo_schema")));
+
assertFalse(NodePathSearcher.find("/metadata/foo_db/schemas/foo_schema/tables",
TableMetadataNodePath.createSchemaSearchCriteria(false)).isPresent());
+
assertThat(NodePathSearcher.find("/metadata/foo_db/schemas/foo_schema/tables",
TableMetadataNodePath.createSchemaSearchCriteria(true)),
is(Optional.of("foo_schema")));
+
assertFalse(NodePathSearcher.find("/xxx/foo_db/schemas/foo_schema/tables",
TableMetadataNodePath.createSchemaSearchCriteria(true)).isPresent());
+ }
+
+ @Test
+ void assertCreateTableSearchCriteria() {
+
assertThat(NodePathSearcher.find("/metadata/foo_db/schemas/foo_schema/tables/foo_tbl",
TableMetadataNodePath.createTableSearchCriteria()),
is(Optional.of("foo_tbl")));
+
assertFalse(NodePathSearcher.find("/xxx/foo_db/schemas/foo_schema/tables/foo_tbl",
TableMetadataNodePath.createTableSearchCriteria()).isPresent());
+
assertTrue(NodePathSearcher.isMatchedPath("/metadata/foo_db/schemas/foo_schema/tables/foo_tbl",
TableMetadataNodePath.createTableSearchCriteria()));
}
}
diff --git
a/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/metadata/database/ViewMetadataNodePathTest.java
b/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/metadata/database/ViewMetadataNodePathTest.java
index 4320a1478c6..0d17c0b6b5a 100644
---
a/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/metadata/database/ViewMetadataNodePathTest.java
+++
b/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/metadata/database/ViewMetadataNodePathTest.java
@@ -19,7 +19,6 @@ package
org.apache.shardingsphere.mode.node.path.metadata.database;
import org.apache.shardingsphere.mode.node.path.NodePathGenerator;
import org.apache.shardingsphere.mode.node.path.NodePathSearcher;
-import org.apache.shardingsphere.mode.node.path.NodePathPattern;
import org.apache.shardingsphere.mode.node.path.version.VersionNodePath;
import org.junit.jupiter.api.Test;
@@ -49,16 +48,13 @@ class ViewMetadataNodePathTest {
}
@Test
- void assertFind() {
-
assertThat(NodePathSearcher.find("/metadata/foo_db/schemas/foo_schema/views/foo_view",
- new ViewMetadataNodePath(NodePathPattern.IDENTIFIER,
NodePathPattern.IDENTIFIER, NodePathPattern.IDENTIFIER), false, true, 3),
is(Optional.of("foo_view")));
-
assertFalse(NodePathSearcher.find("/xxx/foo_db/schemas/foo_schema/views/foo_view",
- new ViewMetadataNodePath(NodePathPattern.IDENTIFIER,
NodePathPattern.IDENTIFIER, NodePathPattern.IDENTIFIER), false, true,
3).isPresent());
+ void assertCreateViewSearchCriteria() {
+
assertThat(NodePathSearcher.find("/metadata/foo_db/schemas/foo_schema/views/foo_view",
ViewMetadataNodePath.createViewSearchCriteria()), is(Optional.of("foo_view")));
+
assertFalse(NodePathSearcher.find("/xxx/foo_db/schemas/foo_schema/views/foo_view",
ViewMetadataNodePath.createViewSearchCriteria()).isPresent());
}
@Test
void assertIsMatchedPath() {
-
assertTrue(NodePathSearcher.isMatchedPath("/metadata/foo_db/schemas/foo_schema/views/foo_view",
- new ViewMetadataNodePath(NodePathPattern.IDENTIFIER,
NodePathPattern.IDENTIFIER, NodePathPattern.IDENTIFIER), false, true));
+
assertTrue(NodePathSearcher.isMatchedPath("/metadata/foo_db/schemas/foo_schema/views/foo_view",
ViewMetadataNodePath.createViewSearchCriteria()));
}
}
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 fed7a711918..1c5a1bfc345 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
@@ -26,7 +26,6 @@ import
org.apache.shardingsphere.mode.manager.cluster.dispatch.handler.database.
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.NodePathSearcher;
-import org.apache.shardingsphere.mode.node.path.NodePathPattern;
import
org.apache.shardingsphere.mode.node.path.metadata.database.TableMetadataNodePath;
import
org.apache.shardingsphere.mode.node.path.metadata.database.ViewMetadataNodePath;
import
org.apache.shardingsphere.mode.node.path.metadata.storage.DataSourceNodePathParser;
@@ -67,12 +66,12 @@ public final class MetaDataChangedHandler {
*/
public boolean handle(final String databaseName, final DataChangedEvent
event) {
String eventKey = event.getKey();
- Optional<String> schemaName = NodePathSearcher.find(eventKey, new
TableMetadataNodePath(NodePathPattern.IDENTIFIER, NodePathPattern.IDENTIFIER,
null), true, false, 2);
+ Optional<String> schemaName = NodePathSearcher.find(eventKey,
TableMetadataNodePath.createSchemaSearchCriteria(false));
if (schemaName.isPresent()) {
handleSchemaChanged(databaseName, schemaName.get(), event);
return true;
}
- schemaName = NodePathSearcher.find(eventKey, new
TableMetadataNodePath(NodePathPattern.IDENTIFIER, NodePathPattern.IDENTIFIER,
null), true, true, 2);
+ schemaName = NodePathSearcher.find(eventKey,
TableMetadataNodePath.createSchemaSearchCriteria(true));
if (schemaName.isPresent() && isTableMetaDataChanged(eventKey)) {
handleTableChanged(databaseName, schemaName.get(), event);
return true;
@@ -97,31 +96,26 @@ public final class MetaDataChangedHandler {
}
private boolean isTableMetaDataChanged(final String key) {
- return NodePathSearcher.isMatchedPath(key, new
TableMetadataNodePath(NodePathPattern.IDENTIFIER, NodePathPattern.IDENTIFIER,
NodePathPattern.IDENTIFIER), false, false)
- || NodePathSearcher.getVersion(new
TableMetadataNodePath(NodePathPattern.IDENTIFIER, NodePathPattern.IDENTIFIER,
NodePathPattern.IDENTIFIER)).isActiveVersionPath(key);
+ return NodePathSearcher.isMatchedPath(key,
TableMetadataNodePath.createTableSearchCriteria()) ||
NodePathSearcher.getVersion(new
TableMetadataNodePath()).isActiveVersionPath(key);
}
private void handleTableChanged(final String databaseName, final String
schemaName, final DataChangedEvent event) {
- if ((Type.ADDED == event.getType() || Type.UPDATED == event.getType())
- && NodePathSearcher.getVersion(new
TableMetadataNodePath(NodePathPattern.IDENTIFIER, NodePathPattern.IDENTIFIER,
NodePathPattern.IDENTIFIER)).isActiveVersionPath(event.getKey())) {
+ if ((Type.ADDED == event.getType() || Type.UPDATED == event.getType())
&& NodePathSearcher.getVersion(new
TableMetadataNodePath()).isActiveVersionPath(event.getKey())) {
tableChangedHandler.handleCreatedOrAltered(databaseName,
schemaName, event);
- } else if (Type.DELETED == event.getType()
- && NodePathSearcher.isMatchedPath(event.getKey(), new
TableMetadataNodePath(NodePathPattern.IDENTIFIER, NodePathPattern.IDENTIFIER,
NodePathPattern.IDENTIFIER), false, false)) {
+ } else if (Type.DELETED == event.getType() &&
NodePathSearcher.isMatchedPath(event.getKey(),
TableMetadataNodePath.createTableSearchCriteria())) {
tableChangedHandler.handleDropped(databaseName, schemaName, event);
}
}
private boolean isViewMetaDataChanged(final String key) {
- return NodePathSearcher.getVersion(new
ViewMetadataNodePath(NodePathPattern.IDENTIFIER, NodePathPattern.IDENTIFIER,
NodePathPattern.IDENTIFIER)).isActiveVersionPath(key)
- || NodePathSearcher.isMatchedPath(key, new
ViewMetadataNodePath(NodePathPattern.IDENTIFIER, NodePathPattern.IDENTIFIER,
NodePathPattern.IDENTIFIER), false, true);
+ return NodePathSearcher.getVersion(new
ViewMetadataNodePath()).isActiveVersionPath(key) ||
NodePathSearcher.isMatchedPath(key,
ViewMetadataNodePath.createViewSearchCriteria());
}
private void handleViewChanged(final String databaseName, final String
schemaName, final DataChangedEvent event) {
if ((Type.ADDED == event.getType() || Type.UPDATED == event.getType())
- && NodePathSearcher.getVersion(new
ViewMetadataNodePath(NodePathPattern.IDENTIFIER, NodePathPattern.IDENTIFIER,
NodePathPattern.IDENTIFIER)).isActiveVersionPath(event.getKey())) {
+ && NodePathSearcher.getVersion(new
ViewMetadataNodePath()).isActiveVersionPath(event.getKey())) {
viewChangedHandler.handleCreatedOrAltered(databaseName,
schemaName, event);
- } else if (Type.DELETED == event.getType()
- && NodePathSearcher.isMatchedPath(event.getKey(), new
ViewMetadataNodePath(NodePathPattern.IDENTIFIER, NodePathPattern.IDENTIFIER,
NodePathPattern.IDENTIFIER), false, true)) {
+ } else if (Type.DELETED == event.getType() &&
NodePathSearcher.isMatchedPath(event.getKey(),
ViewMetadataNodePath.createViewSearchCriteria())) {
viewChangedHandler.handleDropped(databaseName, schemaName, 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 30713ef8a70..f8eb49c1678 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
@@ -23,7 +23,6 @@ import org.apache.shardingsphere.mode.manager.ContextManager;
import
org.apache.shardingsphere.mode.manager.cluster.dispatch.checker.ActiveVersionChecker;
import
org.apache.shardingsphere.mode.metadata.refresher.statistics.StatisticsRefreshEngine;
import org.apache.shardingsphere.mode.node.path.NodePathSearcher;
-import org.apache.shardingsphere.mode.node.path.NodePathPattern;
import
org.apache.shardingsphere.mode.node.path.metadata.database.TableMetadataNodePath;
/**
@@ -48,7 +47,7 @@ public final class TableChangedHandler {
* @param event data changed event
*/
public void handleCreatedOrAltered(final String databaseName, final String
schemaName, final DataChangedEvent event) {
- String tableName = NodePathSearcher.getVersion(new
TableMetadataNodePath(NodePathPattern.IDENTIFIER, NodePathPattern.IDENTIFIER,
NodePathPattern.IDENTIFIER))
+ String tableName = NodePathSearcher.getVersion(new
TableMetadataNodePath())
.findIdentifierByActiveVersionPath(event.getKey(),
3).orElseThrow(() -> new IllegalStateException("Table name not found."));
ActiveVersionChecker.checkActiveVersion(contextManager, event);
ShardingSphereTable table =
contextManager.getPersistServiceFacade().getMetaDataPersistFacade().getDatabaseMetaDataFacade().getTable().load(databaseName,
schemaName, tableName);
@@ -64,8 +63,7 @@ public final class TableChangedHandler {
* @param event data changed event
*/
public void handleDropped(final String databaseName, final String
schemaName, final DataChangedEvent event) {
- String tableName = NodePathSearcher.find(event.getKey(), new
TableMetadataNodePath(NodePathPattern.IDENTIFIER, NodePathPattern.IDENTIFIER,
NodePathPattern.IDENTIFIER), false, false, 3)
- .orElseThrow(() -> new IllegalStateException("Table name not
found."));
+ String tableName = NodePathSearcher.find(event.getKey(),
TableMetadataNodePath.createTableSearchCriteria()).orElseThrow(() -> new
IllegalStateException("Table name not found."));
contextManager.getMetaDataContextManager().getDatabaseMetaDataManager().dropTable(databaseName,
schemaName, tableName);
statisticsRefreshEngine.asyncRefresh();
}
diff --git
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/metadata/type/ViewChangedHandler.java
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/metadata/type/ViewChangedHandler.java
index c36210e0bb6..493c6dd58cf 100644
---
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/metadata/type/ViewChangedHandler.java
+++
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/metadata/type/ViewChangedHandler.java
@@ -23,7 +23,6 @@ import org.apache.shardingsphere.mode.manager.ContextManager;
import
org.apache.shardingsphere.mode.manager.cluster.dispatch.checker.ActiveVersionChecker;
import
org.apache.shardingsphere.mode.metadata.refresher.statistics.StatisticsRefreshEngine;
import org.apache.shardingsphere.mode.node.path.NodePathSearcher;
-import org.apache.shardingsphere.mode.node.path.NodePathPattern;
import
org.apache.shardingsphere.mode.node.path.metadata.database.ViewMetadataNodePath;
/**
@@ -48,8 +47,7 @@ public final class ViewChangedHandler {
* @param event data changed event
*/
public void handleCreatedOrAltered(final String databaseName, final String
schemaName, final DataChangedEvent event) {
- String viewName = NodePathSearcher.getVersion(
- new ViewMetadataNodePath(NodePathPattern.IDENTIFIER,
NodePathPattern.IDENTIFIER,
NodePathPattern.IDENTIFIER)).findIdentifierByActiveVersionPath(event.getKey(),
3)
+ String viewName = NodePathSearcher.getVersion(new
ViewMetadataNodePath()).findIdentifierByActiveVersionPath(event.getKey(), 3)
.orElseThrow(() -> new IllegalStateException("View name not
found."));
ActiveVersionChecker.checkActiveVersion(contextManager, event);
ShardingSphereView view =
contextManager.getPersistServiceFacade().getMetaDataPersistFacade().getDatabaseMetaDataFacade().getView().load(databaseName,
schemaName, viewName);
@@ -65,8 +63,7 @@ public final class ViewChangedHandler {
* @param event data changed event
*/
public void handleDropped(final String databaseName, final String
schemaName, final DataChangedEvent event) {
- String viewName = NodePathSearcher.find(event.getKey(), new
ViewMetadataNodePath(NodePathPattern.IDENTIFIER, NodePathPattern.IDENTIFIER,
NodePathPattern.IDENTIFIER), false, true, 3)
- .orElseThrow(() -> new IllegalStateException("View name not
found."));
+ String viewName = NodePathSearcher.find(event.getKey(),
ViewMetadataNodePath.createViewSearchCriteria()).orElseThrow(() -> new
IllegalStateException("View name not found."));
contextManager.getMetaDataContextManager().getDatabaseMetaDataManager().dropView(databaseName,
schemaName, viewName);
statisticsRefreshEngine.asyncRefresh();
}
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 1276458e0f0..843ea49bb3d 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
@@ -25,7 +25,6 @@ import org.apache.shardingsphere.mode.manager.ContextManager;
import
org.apache.shardingsphere.mode.manager.cluster.dispatch.handler.database.metadata.MetaDataChangedHandler;
import
org.apache.shardingsphere.mode.manager.cluster.dispatch.handler.database.rule.RuleConfigurationChangedHandler;
import org.apache.shardingsphere.mode.node.path.NodePathSearcher;
-import org.apache.shardingsphere.mode.node.path.NodePathPattern;
import
org.apache.shardingsphere.mode.node.path.metadata.database.TableMetadataNodePath;
import
org.apache.shardingsphere.mode.repository.cluster.listener.DataChangedEventListener;
@@ -42,7 +41,7 @@ public final class DatabaseMetaDataChangedListener implements
DataChangedEventLi
@Override
public void onChange(final DataChangedEvent event) {
- Optional<String> databaseName = NodePathSearcher.find(event.getKey(),
new TableMetadataNodePath(NodePathPattern.IDENTIFIER, null, null), true, true,
1);
+ Optional<String> databaseName = NodePathSearcher.find(event.getKey(),
TableMetadataNodePath.createDatabaseSearchCriteria());
if (!databaseName.isPresent()) {
return;
}