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 <[email protected]> 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); + } + } }
