未验证 提交 41a60b50 编写于 作者: H Haonan 提交者: GitHub

[IOTDB-4047] Fix query NPE after change device alignment (#7009)

上级 ea4bbfe7
......@@ -169,6 +169,70 @@ public class IoTDBDeleteTimeseriesIT {
}
}
@Test
public void deleteTimeseriesAndChangeDeviceAlignmentTest() throws Exception {
String[] retArray = new String[] {"1,1.0,2.0,"};
int cnt = 0;
try (Connection connection =
DriverManager.getConnection("jdbc:iotdb://127.0.0.1:6667/", "root", "root");
Statement statement = connection.createStatement()) {
statement.execute("INSERT INTO root.sg3.d1(timestamp,s1,s2) ALIGNED VALUES(1,1,2)");
statement.execute("SHOW DEVICES");
try (ResultSet resultSet = statement.getResultSet()) {
while (resultSet.next()) {
Assert.assertEquals("true", resultSet.getString("isAligned"));
}
}
cnt = 0;
statement.execute("DELETE timeseries root.sg3.d1.s1");
statement.execute("DELETE timeseries root.sg3.d1.s2");
statement.execute("INSERT INTO root.sg3.d1(timestamp,s1,s2) VALUES(1,1,2)");
statement.execute("SHOW DEVICES");
try (ResultSet resultSet = statement.getResultSet()) {
while (resultSet.next()) {
Assert.assertEquals("false", resultSet.getString("isAligned"));
}
}
boolean hasResult = statement.execute("SELECT * FROM root.sg3.d1");
Assert.assertTrue(hasResult);
try (ResultSet resultSet = statement.getResultSet()) {
ResultSetMetaData resultSetMetaData = resultSet.getMetaData();
while (resultSet.next()) {
StringBuilder builder = new StringBuilder();
for (int i = 1; i <= resultSetMetaData.getColumnCount(); i++) {
builder.append(resultSet.getString(i)).append(",");
}
Assert.assertEquals(retArray[cnt], builder.toString());
cnt++;
}
}
cnt = 0;
statement.execute("DELETE timeseries root.sg3.d1.s1");
statement.execute("DELETE timeseries root.sg3.d1.s2");
statement.execute("INSERT INTO root.sg3.d1(timestamp,s1,s2) ALIGNED VALUES(1,1,2)");
statement.execute("SHOW DEVICES");
try (ResultSet resultSet = statement.getResultSet()) {
while (resultSet.next()) {
Assert.assertEquals("true", resultSet.getString("isAligned"));
}
}
hasResult = statement.execute("SELECT * FROM root.sg3.d1");
Assert.assertTrue(hasResult);
try (ResultSet resultSet = statement.getResultSet()) {
ResultSetMetaData resultSetMetaData = resultSet.getMetaData();
while (resultSet.next()) {
StringBuilder builder = new StringBuilder();
for (int i = 1; i <= resultSetMetaData.getColumnCount(); i++) {
builder.append(resultSet.getString(i)).append(",");
}
Assert.assertEquals(retArray[cnt], builder.toString());
cnt++;
}
}
}
}
@Test
public void deleteTimeSeriesMultiIntervalTest() {
String[] retArray1 = new String[] {"0,0"};
......
......@@ -642,6 +642,9 @@ public abstract class AbstractMemTable implements IMemTable {
return;
}
totalPointsNum -= memChunkGroup.delete(originalPath, devicePath, startTimestamp, endTimestamp);
if (memChunkGroup.getMemChunkMap().isEmpty()) {
memTableMap.remove(getDeviceID(devicePath));
}
}
@Override
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册