This is an automated email from the ASF dual-hosted git repository.

zyk pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/iotdb.git


The following commit(s) were added to refs/heads/master by this push:
     new 804fe050a07 [IOTDB-5899] Fix unexpected TemplateNotExistException when 
deactivating template (#9889)
804fe050a07 is described below

commit 804fe050a07efe5d2741884fc6a2217ec1d54d1c
Author: Marcos_Zyk <[email protected]>
AuthorDate: Fri May 19 17:44:19 2023 +0800

    [IOTDB-5899] Fix unexpected TemplateNotExistException when deactivating 
template (#9889)
---
 .../db/it/schema/IoTDBDeactivateTemplateIT.java    | 22 ++++++++++++++++++++++
 .../iotdb/db/metadata/mtree/ConfigMTree.java       |  8 +++++---
 2 files changed, 27 insertions(+), 3 deletions(-)

diff --git 
a/integration-test/src/test/java/org/apache/iotdb/db/it/schema/IoTDBDeactivateTemplateIT.java
 
b/integration-test/src/test/java/org/apache/iotdb/db/it/schema/IoTDBDeactivateTemplateIT.java
index f42afc83379..ddc48ab4f7e 100644
--- 
a/integration-test/src/test/java/org/apache/iotdb/db/it/schema/IoTDBDeactivateTemplateIT.java
+++ 
b/integration-test/src/test/java/org/apache/iotdb/db/it/schema/IoTDBDeactivateTemplateIT.java
@@ -274,4 +274,26 @@ public class IoTDBDeactivateTemplateIT extends 
AbstractSchemaIT {
       }
     }
   }
+
+  @Test
+  public void testPathNotSetAndUsingTemplate() throws Exception {
+    try (Connection connection = EnvFactory.getEnv().getConnection();
+        Statement statement = connection.createStatement()) {
+      statement.execute("create database root.db.factory0");
+      statement.execute("create database root.db.factory1");
+      statement.execute("create database root.db.factory2");
+
+      statement.execute("set schema template t1 to root.db.factory0");
+      statement.execute("set schema template t1 to root.db.factory1");
+
+      try {
+        statement.execute("deactivate schema template from root.db.**");
+      } catch (SQLException e) {
+        Assert.assertTrue(
+            e.getMessage()
+                .contains(
+                    "Target schema Template is not activated on any path 
matched by given path pattern"));
+      }
+    }
+  }
 }
diff --git 
a/server/src/main/java/org/apache/iotdb/db/metadata/mtree/ConfigMTree.java 
b/server/src/main/java/org/apache/iotdb/db/metadata/mtree/ConfigMTree.java
index 170d5127a75..1e5f3294eb0 100644
--- a/server/src/main/java/org/apache/iotdb/db/metadata/mtree/ConfigMTree.java
+++ b/server/src/main/java/org/apache/iotdb/db/metadata/mtree/ConfigMTree.java
@@ -549,9 +549,11 @@ public class ConfigMTree {
 
           @Override
           protected Void collectMNode(IConfigMNode node) {
-            result
-                .computeIfAbsent(node.getSchemaTemplateId(), k -> new 
HashSet<>())
-                .add(getPartialPathFromRootToNode(node));
+            if (node.getSchemaTemplateId() != NON_TEMPLATE && 
!node.isSchemaTemplatePreUnset()) {
+              result
+                  .computeIfAbsent(node.getSchemaTemplateId(), k -> new 
HashSet<>())
+                  .add(getPartialPathFromRootToNode(node));
+            }
             return null;
           }
 

Reply via email to