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

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

commit ee50dd61e4af05cd22146f188e7bc55c2a403e4b
Author: JackieTien97 <[email protected]>
AuthorDate: Sat May 9 09:51:15 2020 +0800

    group by fill non type bug
---
 .../main/java/org/apache/iotdb/SessionExample.java | 20 ++++----
 server/src/assembly/resources/conf/logback.xml     |  2 +-
 .../iotdb/db/qp/strategy/LogicalGenerator.java     |  2 +
 .../query/dataset/groupby/GroupByFillDataSet.java  |  3 +-
 .../iotdb/db/integration/IoTDBGroupByFillIT.java   | 60 ++++++++++++++++++----
 5 files changed, 66 insertions(+), 21 deletions(-)

diff --git a/example/session/src/main/java/org/apache/iotdb/SessionExample.java 
b/example/session/src/main/java/org/apache/iotdb/SessionExample.java
index 57d0a64..1bfca71 100644
--- a/example/session/src/main/java/org/apache/iotdb/SessionExample.java
+++ b/example/session/src/main/java/org/apache/iotdb/SessionExample.java
@@ -51,17 +51,17 @@ public class SessionExample {
       }
     }
 
-    createTimeseries();
-    createMultiTimeseries();
-    insertRecord();
-    insertTablet();
-    insertTablets();
-    insertRecords();
-    nonQuery();
+//    createTimeseries();
+//    createMultiTimeseries();
+//    insertRecord();
+//    insertTablet();
+//    insertTablets();
+//    insertRecords();
+//    nonQuery();
     query();
-    queryByIterator();
-    deleteData();
-    deleteTimeseries();
+//    queryByIterator();
+//    deleteData();
+//    deleteTimeseries();
     session.close();
   }
 
diff --git a/server/src/assembly/resources/conf/logback.xml 
b/server/src/assembly/resources/conf/logback.xml
index fc8a179..ac625a2 100644
--- a/server/src/assembly/resources/conf/logback.xml
+++ b/server/src/assembly/resources/conf/logback.xml
@@ -170,7 +170,7 @@
             <level>INFO</level>
         </filter>
     </appender>
-    <root level="info">
+    <root level="debug">
         <appender-ref ref="FILEDEBUG"/>
         <appender-ref ref="FILEWARN"/>
         <appender-ref ref="FILEERROR"/>
diff --git 
a/server/src/main/java/org/apache/iotdb/db/qp/strategy/LogicalGenerator.java 
b/server/src/main/java/org/apache/iotdb/db/qp/strategy/LogicalGenerator.java
index e3a7cee..293ce4e 100644
--- a/server/src/main/java/org/apache/iotdb/db/qp/strategy/LogicalGenerator.java
+++ b/server/src/main/java/org/apache/iotdb/db/qp/strategy/LogicalGenerator.java
@@ -696,6 +696,8 @@ public class LogicalGenerator extends SqlBaseBaseListener {
         parseTypeClause(typeClause, fillTypes);
       }
     }
+
+
     queryOp.setFill(true);
     queryOp.setFillTypes(fillTypes);
   }
diff --git 
a/server/src/main/java/org/apache/iotdb/db/query/dataset/groupby/GroupByFillDataSet.java
 
b/server/src/main/java/org/apache/iotdb/db/query/dataset/groupby/GroupByFillDataSet.java
index ee6f867..c751b14 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/query/dataset/groupby/GroupByFillDataSet.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/query/dataset/groupby/GroupByFillDataSet.java
@@ -105,7 +105,8 @@ public class GroupByFillDataSet extends QueryDataSet {
         // the previous value is not null and
         // (fill type is not previous until last or now time is before last 
time)
         if (previousValue[i] != null
-            && (!((PreviousFill) fillTypes.get(dataTypes.get(i))).isUntilLast()
+            && ((fillTypes.containsKey(dataTypes.get(i)) && !((PreviousFill) 
fillTypes
+            .get(dataTypes.get(i))).isUntilLast())
             || rowRecord.getTimestamp() <= lastTimeArray[i])) {
           rowRecord.getFields().set(i, Field.getField(previousValue[i], 
dataTypes.get(i)));
         }
diff --git 
a/server/src/test/java/org/apache/iotdb/db/integration/IoTDBGroupByFillIT.java 
b/server/src/test/java/org/apache/iotdb/db/integration/IoTDBGroupByFillIT.java
index 039dd56..68d6930 100644
--- 
a/server/src/test/java/org/apache/iotdb/db/integration/IoTDBGroupByFillIT.java
+++ 
b/server/src/test/java/org/apache/iotdb/db/integration/IoTDBGroupByFillIT.java
@@ -18,6 +18,16 @@
  */
 package org.apache.iotdb.db.integration;
 
+import static org.apache.iotdb.db.constant.TestConstant.TIMESTAMP_STR;
+import static org.apache.iotdb.db.constant.TestConstant.last_value;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.ResultSet;
+import java.sql.Statement;
 import org.apache.iotdb.db.conf.IoTDBDescriptor;
 import org.apache.iotdb.db.utils.EnvironmentUtils;
 import org.apache.iotdb.jdbc.Config;
@@ -26,15 +36,6 @@ import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 
-import java.sql.Connection;
-import java.sql.DriverManager;
-import java.sql.ResultSet;
-import java.sql.Statement;
-
-import static org.apache.iotdb.db.constant.TestConstant.TIMESTAMP_STR;
-import static org.apache.iotdb.db.constant.TestConstant.last_value;
-import static org.junit.Assert.*;
-
 public class IoTDBGroupByFillIT {
 
   private static String[] dataSet1 = new String[]{
@@ -445,6 +446,47 @@ public class IoTDBGroupByFillIT {
   }
 
   @Test
+  public void previousUntilLastTest5() {
+    String[] retArray = new String[] {
+        "17,25",
+        "22,25",
+        "27,26",
+        "32,29",
+        "37,40",
+        "42,null",
+        "47,null",
+    };
+
+    try (Connection connection = DriverManager.
+        getConnection("jdbc:iotdb://127.0.0.1:6667/", "root", "root");
+        Statement statement = connection.createStatement()) {
+      boolean hasResultSet = statement.execute(
+          "select last_value(temperature) from "
+              + "root.ln.wf01.wt01 "
+              + "GROUP BY ([17, 48), 5ms) FILL(float[previousUntilLast])");
+
+      assertTrue(hasResultSet);
+      int cnt;
+      try (ResultSet resultSet = statement.getResultSet()) {
+        cnt = 0;
+        while (resultSet.next()) {
+          String ans = resultSet.getString(TIMESTAMP_STR) + "," + resultSet
+              .getString(last_value("root.ln.wf01.wt01.temperature"));
+          assertEquals(retArray[cnt], ans);
+          cnt++;
+        }
+        assertEquals(retArray.length, cnt);
+      }
+
+    } catch (Exception e) {
+      e.printStackTrace();
+      fail(e.getMessage());
+    }
+
+  }
+
+
+  @Test
   public void leftORightCPreviousUntilLastTest() {
     String[] retArray = new String[] {
             "9,null",

Reply via email to