You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by xi...@apache.org on 2021/06/22 12:56:18 UTC

[iotdb] branch to0.11fixdelete created (now 4e26d30)

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

xiangweiwei pushed a change to branch to0.11fixdelete
in repository https://gitbox.apache.org/repos/asf/iotdb.git.


      at 4e26d30  @Alima777 Fix delete multi time interval bug

This branch includes the following new commits:

     new 4e26d30  @Alima777 Fix delete multi time interval bug

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


[iotdb] 01/01: @Alima777 Fix delete multi time interval bug

Posted by xi...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

xiangweiwei pushed a commit to branch to0.11fixdelete
in repository https://gitbox.apache.org/repos/asf/iotdb.git

commit 4e26d30584dbde01ffdff48f52bccbe140f7fcef
Author: Alima777 <wx...@gmail.com>
AuthorDate: Tue Jun 22 20:55:39 2021 +0800

    @Alima777
    Fix delete multi time interval bug
---
 .../java/org/apache/iotdb/db/utils/QueryUtils.java |  4 +-
 .../db/integration/IoTDBDeleteTimeseriesIT.java    | 53 +++++++++++++++++++++-
 2 files changed, 53 insertions(+), 4 deletions(-)

diff --git a/server/src/main/java/org/apache/iotdb/db/utils/QueryUtils.java b/server/src/main/java/org/apache/iotdb/db/utils/QueryUtils.java
index 6d38744..77ce850 100644
--- a/server/src/main/java/org/apache/iotdb/db/utils/QueryUtils.java
+++ b/server/src/main/java/org/apache/iotdb/db/utils/QueryUtils.java
@@ -60,10 +60,10 @@ public class QueryUtils {
           if (range.contains(metaData.getStartTime(), metaData.getEndTime())) {
             return true;
           } else {
-            if (range.overlaps(new TimeRange(metaData.getStartTime(), metaData.getEndTime()))) {
+            if (!metaData.isModified() &&
+                range.overlaps(new TimeRange(metaData.getStartTime(), metaData.getEndTime()))) {
               metaData.setModified(true);
             }
-            return false;
           }
         }
       }
diff --git a/server/src/test/java/org/apache/iotdb/db/integration/IoTDBDeleteTimeseriesIT.java b/server/src/test/java/org/apache/iotdb/db/integration/IoTDBDeleteTimeseriesIT.java
index 6b55775..c1629e8 100644
--- a/server/src/test/java/org/apache/iotdb/db/integration/IoTDBDeleteTimeseriesIT.java
+++ b/server/src/test/java/org/apache/iotdb/db/integration/IoTDBDeleteTimeseriesIT.java
@@ -33,6 +33,10 @@ import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
 
+import static org.apache.iotdb.db.constant.TestConstant.TIMESTAMP_STR;
+import static org.apache.iotdb.db.constant.TestConstant.count;
+import static org.junit.Assert.fail;
+
 public class IoTDBDeleteTimeseriesIT {
 
   private long memtableSizeThreshold;
@@ -40,6 +44,7 @@ public class IoTDBDeleteTimeseriesIT {
 
   @Before
   public void setUp() throws Exception {
+    Class.forName(Config.JDBC_DRIVER_NAME);
     EnvironmentUtils.closeStatMonitor();
     EnvironmentUtils.envSetUp();
     memtableSizeThreshold = IoTDBDescriptor.getInstance().getConfig().getMemtableSizeThreshold();
@@ -60,7 +65,6 @@ public class IoTDBDeleteTimeseriesIT {
 
   @Test
   public void deleteTimeseriesAndCreateDifferentTypeTest() throws Exception {
-    Class.forName(Config.JDBC_DRIVER_NAME);
     String[] retArray = new String[]{
         "1,1,",
         "2,1.1,"
@@ -122,7 +126,6 @@ public class IoTDBDeleteTimeseriesIT {
 
   @Test
   public void deleteTimeseriesAndCreateSameTypeTest() throws Exception {
-    Class.forName(Config.JDBC_DRIVER_NAME);
     String[] retArray = new String[]{
         "1,1,",
         "2,5,"
@@ -181,4 +184,50 @@ public class IoTDBDeleteTimeseriesIT {
       Assert.assertTrue(hasResult);
     }
   }
+
+  @Test
+  public void deleteTimeSeriesMultiIntervalTest() {
+    String[] retArray1 = new String[] {"0,0"};
+
+    int preAvgSeriesPointNumberThreshold =
+        IoTDBDescriptor.getInstance().getConfig().getAvgSeriesPointNumberThreshold();
+    try (Connection connection =
+        DriverManager.getConnection("jdbc:iotdb://127.0.0.1:6667/", "root", "root");
+        Statement statement = connection.createStatement()) {
+
+      IoTDBDescriptor.getInstance().getConfig().setAvgSeriesPointNumberThreshold(2);
+      String insertSql = "insert into root.sg.d1(time, s1) values(%d, %d)";
+      for (int i = 1; i <= 4; i++) {
+        statement.execute(String.format(insertSql, i, i));
+      }
+      statement.execute("flush");
+
+      statement.execute("delete from root.sg.d1.s1 where time >= 1 and time <= 2");
+      statement.execute("delete from root.sg.d1.s1 where time >= 3 and time <= 4");
+
+      boolean hasResultSet =
+          statement.execute("select count(s1) from root.sg.d1 where time >= 3 and time <= 4");
+
+      Assert.assertTrue(hasResultSet);
+      int cnt = 0;
+      try (ResultSet resultSet = statement.getResultSet()) {
+        while (resultSet.next()) {
+          String ans =
+              resultSet.getString(TIMESTAMP_STR)
+                  + ","
+                  + resultSet.getString(count("root.sg.d1.s1"));
+          Assert.assertEquals(retArray1[cnt], ans);
+          cnt++;
+        }
+        Assert.assertEquals(retArray1.length, cnt);
+      }
+    } catch (Exception e) {
+      e.printStackTrace();
+      fail(e.getMessage());
+    } finally {
+      IoTDBDescriptor.getInstance()
+          .getConfig()
+          .setAvgSeriesPointNumberThreshold(preAvgSeriesPointNumberThreshold);
+    }
+  }
 }