You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by qi...@apache.org on 2021/06/15 13:16:02 UTC

[iotdb] branch rel/0.12 updated: [To rel/0.12]TTL can be set to any path (#3389)

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

qiaojialin pushed a commit to branch rel/0.12
in repository https://gitbox.apache.org/repos/asf/iotdb.git


The following commit(s) were added to refs/heads/rel/0.12 by this push:
     new 2488ebb  [To rel/0.12]TTL can be set to any path (#3389)
2488ebb is described below

commit 2488ebbaa02d2397f4e215d269017afce8d1fe73
Author: ZhaoXin <x_...@163.com>
AuthorDate: Tue Jun 15 21:15:23 2021 +0800

    [To rel/0.12]TTL can be set to any path (#3389)
---
 .../org/apache/iotdb/db/qp/executor/PlanExecutor.java   |  8 ++++++--
 .../org/apache/iotdb/db/integration/IoTDBTtlIT.java     | 17 +++++++++++++++++
 2 files changed, 23 insertions(+), 2 deletions(-)

diff --git a/server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java b/server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java
index b07750f..073e718 100644
--- a/server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java
+++ b/server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java
@@ -1130,8 +1130,12 @@ public class PlanExecutor implements IPlanExecutor {
 
   private void operateTTL(SetTTLPlan plan) throws QueryProcessException {
     try {
-      IoTDB.metaManager.setTTL(plan.getStorageGroup(), plan.getDataTTL());
-      StorageEngine.getInstance().setTTL(plan.getStorageGroup(), plan.getDataTTL());
+      List<PartialPath> storageGroupPaths =
+          IoTDB.metaManager.getStorageGroupPaths(plan.getStorageGroup());
+      for (PartialPath storagePath : storageGroupPaths) {
+        IoTDB.metaManager.setTTL(storagePath, plan.getDataTTL());
+        StorageEngine.getInstance().setTTL(storagePath, plan.getDataTTL());
+      }
     } catch (MetadataException e) {
       throw new QueryProcessException(e);
     } catch (IOException e) {
diff --git a/server/src/test/java/org/apache/iotdb/db/integration/IoTDBTtlIT.java b/server/src/test/java/org/apache/iotdb/db/integration/IoTDBTtlIT.java
index 62f458e..3b5756e 100644
--- a/server/src/test/java/org/apache/iotdb/db/integration/IoTDBTtlIT.java
+++ b/server/src/test/java/org/apache/iotdb/db/integration/IoTDBTtlIT.java
@@ -210,4 +210,21 @@ public class IoTDBTtlIT {
       IoTDBDescriptor.getInstance().getConfig().setDefaultTTL(Long.MAX_VALUE);
     }
   }
+
+  @Test
+  public void testTTLOnAnyPath() throws SQLException {
+    try (IoTDBConnection connection =
+            (IoTDBConnection)
+                DriverManager.getConnection(
+                    Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root");
+        Statement statement = connection.createStatement()) {
+      statement.execute("SET STORAGE GROUP TO root.group1");
+      statement.execute("SET STORAGE GROUP TO root.group2.sgroup1");
+      statement.execute("SET TTL TO root.group2 10000");
+      String result = doQuery(statement, "SHOW ALL TTL");
+      assertTrue(
+          result.equals("root.group1,null\n" + "root.group2.sgroup1,10000\n")
+              || result.equals("root.group2.sgroup1 10000\n" + "root.group1,null\n"));
+    }
+  }
 }