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

jackietien pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/iotdb.git


The following commit(s) were added to refs/heads/master by this push:
     new 8907772  [IOTDB-1348] Last plan not work in cluster mode (#3118)
8907772 is described below

commit 890777248cf5ecd68d467e097efef7e881048228
Author: Irvine <[email protected]>
AuthorDate: Fri May 7 18:44:07 2021 +0800

    [IOTDB-1348] Last plan not work in cluster mode (#3118)
    
    * [IOTDB-1153] Last plan not work in cluster mode
---
 .../query/last/ClusterLastQueryExecutor.java       |  1 +
 .../java/org/apache/iotdb/db/sql/ClusterIT.java    | 23 ++++++++++++++++++++++
 .../java/org/apache/iotdb/db/sql/SingleNodeIT.java | 23 ++++++++++++++++++++++
 3 files changed, 47 insertions(+)

diff --git 
a/cluster/src/main/java/org/apache/iotdb/cluster/query/last/ClusterLastQueryExecutor.java
 
b/cluster/src/main/java/org/apache/iotdb/cluster/query/last/ClusterLastQueryExecutor.java
index 8ebb31d..d5ec324 100644
--- 
a/cluster/src/main/java/org/apache/iotdb/cluster/query/last/ClusterLastQueryExecutor.java
+++ 
b/cluster/src/main/java/org/apache/iotdb/cluster/query/last/ClusterLastQueryExecutor.java
@@ -127,6 +127,7 @@ public class ClusterLastQueryExecutor extends 
LastQueryExecutor {
         List<Pair<Boolean, TimeValuePair>> timeValuePairs = groupFuture.get();
         for (int i = 0; i < timeValuePairs.size(); i++) {
           if (timeValuePairs.get(i) != null
+              && timeValuePairs.get(i).right != null
               && timeValuePairs.get(i).right.getTimestamp() > 
results.get(i).right.getTimestamp()) {
             results.get(i).right = timeValuePairs.get(i).right;
           }
diff --git a/testcontainer/src/test/java/org/apache/iotdb/db/sql/ClusterIT.java 
b/testcontainer/src/test/java/org/apache/iotdb/db/sql/ClusterIT.java
index 207cb8c..79b1292 100644
--- a/testcontainer/src/test/java/org/apache/iotdb/db/sql/ClusterIT.java
+++ b/testcontainer/src/test/java/org/apache/iotdb/db/sql/ClusterIT.java
@@ -119,4 +119,27 @@ public class ClusterIT {
     Assert.assertEquals(35.71, avg, 0.1);
     resultSet.close();
   }
+
+  @Test
+  public void testLast() throws SQLException {
+
+    String[] timeSeriesArray = {"root.ln.wf01.wt01.temperature WITH 
DATATYPE=DOUBLE, ENCODING=RLE"};
+    String[] initDataArray = {
+      "INSERT INTO root.ln.wf01.wt01(timestamp, temperature) values(100, 
10.0)",
+      "INSERT INTO root.ln.wf01.wt01(timestamp, temperature) values(200, 
20.0)",
+      "INSERT INTO root.ln.wf01.wt01(timestamp, temperature) values(150, 15.0)"
+    };
+
+    for (String timeSeries : timeSeriesArray) {
+      statement.execute(String.format("create timeseries %s ", timeSeries));
+    }
+    for (String initData : initDataArray) {
+      statement.execute(initData);
+    }
+    ResultSet resultSet = statement.executeQuery("select last * from 
root.ln.wf01.wt01;");
+    Assert.assertTrue(resultSet.next());
+    double last = Double.parseDouble(resultSet.getString(3));
+    Assert.assertEquals(20.0, last, 0.1);
+    resultSet.close();
+  }
 }
diff --git 
a/testcontainer/src/test/java/org/apache/iotdb/db/sql/SingleNodeIT.java 
b/testcontainer/src/test/java/org/apache/iotdb/db/sql/SingleNodeIT.java
index 0ec5ae7..9a3ba1b 100644
--- a/testcontainer/src/test/java/org/apache/iotdb/db/sql/SingleNodeIT.java
+++ b/testcontainer/src/test/java/org/apache/iotdb/db/sql/SingleNodeIT.java
@@ -119,4 +119,27 @@ public class SingleNodeIT {
     Assert.assertEquals(35.71, avg, 0.1);
     resultSet.close();
   }
+
+  @Test
+  public void testLast() throws SQLException {
+
+    String[] timeSeriesArray = {"root.ln.wf01.wt01.temperature WITH 
DATATYPE=DOUBLE, ENCODING=RLE"};
+    String[] initDataArray = {
+      "INSERT INTO root.ln.wf01.wt01(timestamp, temperature) values(100, 
10.0)",
+      "INSERT INTO root.ln.wf01.wt01(timestamp, temperature) values(200, 
20.0)",
+      "INSERT INTO root.ln.wf01.wt01(timestamp, temperature) values(150, 15.0)"
+    };
+
+    for (String timeSeries : timeSeriesArray) {
+      statement.execute(String.format("create timeseries %s ", timeSeries));
+    }
+    for (String initData : initDataArray) {
+      statement.execute(initData);
+    }
+    ResultSet resultSet = statement.executeQuery("select last * from 
root.ln.wf01.wt01;");
+    Assert.assertTrue(resultSet.next());
+    double last = Double.parseDouble(resultSet.getString(3));
+    Assert.assertEquals(20.0, last, 0.1);
+    resultSet.close();
+  }
 }

Reply via email to