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/23 01:08:27 UTC
[iotdb] branch rel/0.11 updated: [ISSUE-3436] [To rel/0.11] Fix
Bug: delete timeseries with multiple time interval (#3438)
This is an automated email from the ASF dual-hosted git repository.
xiangweiwei pushed a commit to branch rel/0.11
in repository https://gitbox.apache.org/repos/asf/iotdb.git
The following commit(s) were added to refs/heads/rel/0.11 by this push:
new 1160d0e [ISSUE-3436] [To rel/0.11] Fix Bug: delete timeseries with multiple time interval (#3438)
1160d0e is described below
commit 1160d0e175f2a855a9cda2b0f7fe9e64ecaeb056
Author: Xiangwei Wei <34...@users.noreply.github.com>
AuthorDate: Wed Jun 23 09:08:07 2021 +0800
[ISSUE-3436] [To rel/0.11] Fix Bug: delete timeseries with multiple time interval (#3438)
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);
+ }
+ }
}