You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by qi...@apache.org on 2020/12/11 13:08:45 UTC

[iotdb] branch rel/0.11 updated (e72f404 -> 6e7a201)

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

qiaojialin pushed a change to branch rel/0.11
in repository https://gitbox.apache.org/repos/asf/iotdb.git.


    from e72f404  [To rel/0.11] Remove unnecessary dependency of com.clearspring.analytics:stream and fastutil (#2254)
     add 2a86d9a  [maven-release-plugin] prepare release release/0.11.1
     add 8806aa5  [maven-release-plugin] prepare for next development iteration
     add f046d8d  Merge remote-tracking branch 'origin/rel/0.11' into rel/0.11
     add 5a905fa  Merge remote-tracking branch 'origin/rel/0.11' into rel/0.11
     add 1303331  Merge remote-tracking branch 'origin/rel/0.11' into rel/0.11
     new caefe24  Merge remote-tracking branch 'origin/rel/0.11' into rel/0.11
     new 6e7a201  getObject should not return String for all data types (#2247)

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../java/org/apache/iotdb/rpc/IoTDBRpcDataSet.java |  43 ++++-
 .../iotdb/session/IoTDBSessionIteratorIT.java      | 178 +++++++++++++++++----
 2 files changed, 182 insertions(+), 39 deletions(-)


[iotdb] 02/02: getObject should not return String for all data types (#2247)

Posted by qi...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

qiaojialin pushed a commit to branch rel/0.11
in repository https://gitbox.apache.org/repos/asf/iotdb.git

commit 6e7a2013bb16f840a10b9ed4a7f654e93a9fa312
Author: Xiangwei Wei <34...@users.noreply.github.com>
AuthorDate: Fri Dec 11 21:06:48 2020 +0800

    getObject should not return String for all data types (#2247)
    
    (cherry picked from commit f2e741335667663c0a0445a9c06c64a8b92d0c00)
---
 .../java/org/apache/iotdb/rpc/IoTDBRpcDataSet.java |  43 ++++-
 .../iotdb/session/IoTDBSessionIteratorIT.java      | 178 +++++++++++++++++----
 2 files changed, 182 insertions(+), 39 deletions(-)

diff --git a/service-rpc/src/main/java/org/apache/iotdb/rpc/IoTDBRpcDataSet.java b/service-rpc/src/main/java/org/apache/iotdb/rpc/IoTDBRpcDataSet.java
index eb4aa77..9ecf45a 100644
--- a/service-rpc/src/main/java/org/apache/iotdb/rpc/IoTDBRpcDataSet.java
+++ b/service-rpc/src/main/java/org/apache/iotdb/rpc/IoTDBRpcDataSet.java
@@ -19,8 +19,8 @@
 
 package org.apache.iotdb.rpc;
 
-import java.io.UnsupportedEncodingException;
 import java.nio.ByteBuffer;
+import java.nio.charset.StandardCharsets;
 import java.sql.Timestamp;
 import java.util.ArrayList;
 import java.util.HashMap;
@@ -366,7 +366,7 @@ public class IoTDBRpcDataSet {
   }
 
   public Object getObject(String columnName) throws StatementExecutionException {
-    return getValueByName(columnName);
+    return getObjectByName(columnName);
   }
 
   public String getString(int columnIndex) throws StatementExecutionException {
@@ -416,11 +416,40 @@ public class IoTDBRpcDataSet {
       case DOUBLE:
         return String.valueOf(BytesUtils.bytesToDouble(values[index]));
       case TEXT:
-        try {
-          return new String(values[index], "UTF-8");
-        } catch (UnsupportedEncodingException e) {
-          return new String(values[index]);
-        }
+        return new String(values[index], StandardCharsets.UTF_8);
+      default:
+        return null;
+    }
+  }
+
+  public Object getObjectByName(String columnName) throws StatementExecutionException {
+    checkRecord();
+    if (columnName.equals(TIMESTAMP_STR)) {
+      return BytesUtils.bytesToLong(time);
+    }
+    int index = columnOrdinalMap.get(columnName) - START_INDEX;
+    if (index < 0 || index >= values.length || isNull(index, rowsIndex - 1)) {
+      lastReadWasNull = true;
+      return null;
+    }
+    lastReadWasNull = false;
+    return getObject(index, columnTypeDeduplicatedList.get(index), values);
+  }
+
+  public Object getObject(int index, TSDataType tsDataType, byte[][] values) {
+    switch (tsDataType) {
+      case BOOLEAN:
+        return BytesUtils.bytesToBool(values[index]);
+      case INT32:
+        return BytesUtils.bytesToInt(values[index]);
+      case INT64:
+        return BytesUtils.bytesToLong(values[index]);
+      case FLOAT:
+        return BytesUtils.bytesToFloat(values[index]);
+      case DOUBLE:
+        return BytesUtils.bytesToDouble(values[index]);
+      case TEXT:
+        return new String(values[index], StandardCharsets.UTF_8);
       default:
         return null;
     }
diff --git a/session/src/test/java/org/apache/iotdb/session/IoTDBSessionIteratorIT.java b/session/src/test/java/org/apache/iotdb/session/IoTDBSessionIteratorIT.java
index ed6a24b..439be74 100644
--- a/session/src/test/java/org/apache/iotdb/session/IoTDBSessionIteratorIT.java
+++ b/session/src/test/java/org/apache/iotdb/session/IoTDBSessionIteratorIT.java
@@ -19,6 +19,7 @@
 package org.apache.iotdb.session;
 
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
 import static org.junit.Assert.fail;
 
 import java.util.ArrayList;
@@ -53,30 +54,126 @@ public class IoTDBSessionIteratorIT {
     EnvironmentUtils.cleanEnv();
   }
 
+  /**
+   * Test getBoolean(), getInt(), getLong(), getFloat(), getDouble(), getString() by columnIndex
+   */
   @Test
-  public void test1() {
+  public void testGetValueByColumnIndex() {
     String[] retArray = new String[]{
-        "0,1,2.0,null",
-        "1,1,2.0,null",
-        "2,1,2.0,null",
-        "3,1,2.0,null",
-        "4,1,2.0,null",
-        "5,1,2.0,4.0",
-        "6,1,2.0,4.0",
-        "7,1,2.0,4.0",
-        "8,1,2.0,4.0",
-        "9,1,2.0,4.0",
+        "0,true,0,0,0.0,0.0,time0",
+        "1,false,1,10,1.5,2.5,time1",
+        "2,true,2,20,3.0,5.0,time2",
+        "3,false,3,30,4.5,7.5,time3",
+        "4,true,4,40,6.0,10.0,time4",
+        "5,false,5,50,7.5,12.5,time5",
+        "6,true,6,60,9.0,15.0,time6",
+        "7,false,7,70,10.5,17.5,time7",
+        "8,true,8,80,12.0,20.0,time8",
+        "9,false,9,90,13.5,22.5,time9",
     };
 
     try {
-      SessionDataSet sessionDataSet = session.executeQueryStatement("select * from root.sg1");
+      SessionDataSet sessionDataSet = session
+          .executeQueryStatement("select s1,s2,s3,s4,s5,s6 from root.sg1.d1");
       sessionDataSet.setFetchSize(1024);
       DataIterator iterator = sessionDataSet.iterator();
       int count = 0;
       while (iterator.next()) {
-        String ans = String.format("%s,%s,%s,%s", iterator.getLong(1), iterator.getInt("root.sg1.d1.s1"),
-            iterator.getFloat(3), iterator.getString("root.sg1.d2.s1"));
-        assertEquals(retArray[count], ans);
+        StringBuilder ans = new StringBuilder();
+        ans.append(iterator.getLong(1)).append(",").append(iterator.getBoolean(2)).append(",")
+            .append(iterator.getInt(3)).append(",").append(iterator.getLong(4)).append(",")
+            .append(iterator.getFloat(5)).append(",").append(iterator.getDouble(6)).append(",")
+            .append(iterator.getString(7));
+        assertEquals(retArray[count], ans.toString());
+        count++;
+      }
+      assertEquals(retArray.length, count);
+      sessionDataSet.closeOperationHandle();
+    } catch (Exception e) {
+      e.printStackTrace();
+      fail();
+    }
+  }
+
+  /**
+   * Test getBoolean(), getInt(), getLong(), getFloat(), getDouble(), getString() by columnName
+   */
+  @Test
+  public void testGetValueByColumnName() {
+    String[] retArray = new String[]{
+        "0,true,0,0,0.0,0.0,time0",
+        "1,false,1,10,1.5,2.5,time1",
+        "2,true,2,20,3.0,5.0,time2",
+        "3,false,3,30,4.5,7.5,time3",
+        "4,true,4,40,6.0,10.0,time4",
+        "5,false,5,50,7.5,12.5,time5",
+        "6,true,6,60,9.0,15.0,time6",
+        "7,false,7,70,10.5,17.5,time7",
+        "8,true,8,80,12.0,20.0,time8",
+        "9,false,9,90,13.5,22.5,time9",
+    };
+
+    try {
+      SessionDataSet sessionDataSet = session.executeQueryStatement("select * from root.sg1.d1");
+      sessionDataSet.setFetchSize(1024);
+      DataIterator iterator = sessionDataSet.iterator();
+      int count = 0;
+      while (iterator.next()) {
+        StringBuilder ans = new StringBuilder();
+        ans.append(iterator.getLong("Time")).append(",")
+            .append(iterator.getBoolean("root.sg1.d1.s1")).append(",")
+            .append(iterator.getInt("root.sg1.d1.s2")).append(",")
+            .append(iterator.getLong("root.sg1.d1.s3")).append(",")
+            .append(iterator.getFloat("root.sg1.d1.s4")).append(",")
+            .append(iterator.getDouble("root.sg1.d1.s5")).append(",")
+            .append(iterator.getString("root.sg1.d1.s6"));
+        assertEquals(retArray[count], ans.toString());
+        count++;
+      }
+      assertEquals(retArray.length, count);
+      sessionDataSet.closeOperationHandle();
+    } catch (Exception e) {
+      e.printStackTrace();
+      fail();
+    }
+  }
+
+  /**
+   * Test getObject() by columnIndex.
+   */
+  @Test
+  public void testGetObjectByColumnName() {
+    String[] retArray = new String[]{
+        "0,true,0,0,0.0,0.0,time0",
+        "1,false,1,10,1.5,2.5,time1",
+        "2,true,2,20,3.0,5.0,time2",
+        "3,false,3,30,4.5,7.5,time3",
+        "4,true,4,40,6.0,10.0,time4",
+        "5,false,5,50,7.5,12.5,time5",
+        "6,true,6,60,9.0,15.0,time6",
+        "7,false,7,70,10.5,17.5,time7",
+        "8,true,8,80,12.0,20.0,time8",
+        "9,false,9,90,13.5,22.5,time9",
+    };
+
+    try {
+      SessionDataSet sessionDataSet = session
+          .executeQueryStatement("select s1,s2,s3,s4,s5,s6 from root.sg1.d1");
+      sessionDataSet.setFetchSize(1024);
+      DataIterator iterator = sessionDataSet.iterator();
+      int count = 0;
+      while (iterator.next()) {
+        StringBuilder ans = new StringBuilder();
+        long time = (long) iterator.getObject(1);
+        boolean s1 = (boolean) iterator.getObject(2);
+        int s2 = (int) iterator.getObject(3);
+        long s3 = (long) iterator.getObject(4);
+        float s4 = (float) iterator.getObject(5);
+        double s5 = (double) iterator.getObject(6);
+        String s6 = (String) iterator.getObject(7);
+        ans.append(time).append(",").append(s1).append(",").append(s2).append(",").append(s3)
+            .append(",").append(s4).append(",").append(s5).append(",").append(s6);
+        assertEquals(retArray[count], ans.toString());
         count++;
       }
       assertEquals(retArray.length, count);
@@ -87,16 +184,21 @@ public class IoTDBSessionIteratorIT {
     }
   }
 
+
   @Test
-  public void test2() {
+  public void testLastQuery() {
     String[] retArray = new String[]{
-        "9,root.sg1.d1.s1,1",
-        "9,root.sg1.d1.s2,2.0",
-        "9,root.sg1.d2.s1,4.0"
+        "9,root.sg1.d1.s1,false",
+        "9,root.sg1.d1.s2,9",
+        "9,root.sg1.d1.s3,90",
+        "9,root.sg1.d1.s4,13.5",
+        "9,root.sg1.d1.s5,22.5",
+        "9,root.sg1.d1.s6,time9",
     };
 
     try {
-      SessionDataSet sessionDataSet = session.executeQueryStatement("select last * from root.sg1");
+      SessionDataSet sessionDataSet = session
+          .executeQueryStatement("select last s1,s2,s3,s4,s5,s6 from root.sg1.d1");
       sessionDataSet.setFetchSize(1024);
       DataIterator iterator = sessionDataSet.iterator();
       int count = 0;
@@ -115,7 +217,7 @@ public class IoTDBSessionIteratorIT {
   }
 
   @Test
-  public void test3() {
+  public void testShowDevices() {
     String[] retArray = new String[]{
         "root.sg1.d1",
         "root.sg1.d2"
@@ -145,24 +247,36 @@ public class IoTDBSessionIteratorIT {
     session.open();
 
     session.setStorageGroup("root.sg1");
-    session.createTimeseries("root.sg1.d1.s1", TSDataType.INT32, TSEncoding.RLE,
+    session.createTimeseries("root.sg1.d1.s1", TSDataType.BOOLEAN, TSEncoding.PLAIN,
+        CompressionType.SNAPPY);
+    session.createTimeseries("root.sg1.d1.s2", TSDataType.INT32, TSEncoding.PLAIN,
         CompressionType.SNAPPY);
-    session.createTimeseries("root.sg1.d1.s2", TSDataType.FLOAT, TSEncoding.RLE,
+    session.createTimeseries("root.sg1.d1.s3", TSDataType.INT64, TSEncoding.PLAIN,
         CompressionType.SNAPPY);
-    session.createTimeseries("root.sg1.d2.s1", TSDataType.DOUBLE, TSEncoding.RLE,
+    session.createTimeseries("root.sg1.d1.s4", TSDataType.FLOAT, TSEncoding.PLAIN,
+        CompressionType.SNAPPY);
+    session.createTimeseries("root.sg1.d1.s5", TSDataType.DOUBLE, TSEncoding.PLAIN,
+        CompressionType.SNAPPY);
+    session.createTimeseries("root.sg1.d1.s6", TSDataType.TEXT, TSEncoding.PLAIN,
+        CompressionType.SNAPPY);
+    session.createTimeseries("root.sg1.d2.s1", TSDataType.BOOLEAN, TSEncoding.PLAIN,
         CompressionType.SNAPPY);
     String deviceId = "root.sg1.d1";
     List<String> measurements = new ArrayList<>();
     List<TSDataType> types = new ArrayList<>();
-    measurements.add("s1");
-    measurements.add("s2");
-    types.add(TSDataType.INT32);
-    types.add(TSDataType.FLOAT);
+    for (int i = 1; i <= 6; i++) {
+      measurements.add("s" + i);
+      types.add(TSDataType.deserialize((short) (i - 1)));
+    }
 
     for (long time = 0; time < 10; time++) {
       List<Object> values = new ArrayList<>();
-      values.add(1);
-      values.add(2f);
+      values.add((time % 2) == 0);
+      values.add((int) time);
+      values.add(time * 10);
+      values.add(time * 1.5f);
+      values.add(time * 2.5);
+      values.add("time" + time);
       session.insertRecord(deviceId, time, measurements, types, values);
     }
 
@@ -170,11 +284,11 @@ public class IoTDBSessionIteratorIT {
     measurements = new ArrayList<>();
     types = new ArrayList<>();
     measurements.add("s1");
-    types.add(TSDataType.DOUBLE);
+    types.add(TSDataType.BOOLEAN);
 
     for (long time = 5; time < 10; time++) {
       List<Object> values = new ArrayList<>();
-      values.add(4d);
+      values.add((time % 2) == 0);
       session.insertRecord(deviceId, time, measurements, types, values);
     }
   }


[iotdb] 01/02: Merge remote-tracking branch 'origin/rel/0.11' into rel/0.11

Posted by qi...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

qiaojialin pushed a commit to branch rel/0.11
in repository https://gitbox.apache.org/repos/asf/iotdb.git

commit caefe24070b10daa4926039dc5c22f985fc982f6
Merge: 1303331 e72f404
Author: qiaojialin <64...@qq.com>
AuthorDate: Fri Dec 11 20:51:01 2020 +0800

    Merge remote-tracking branch 'origin/rel/0.11' into rel/0.11

 LICENSE-binary                                                      | 2 --
 grafana/pom.xml                                                     | 2 +-
 jdbc/pom.xml                                                        | 2 +-
 pom.xml                                                             | 6 +++---
 server/pom.xml                                                      | 5 -----
 .../test/java/org/apache/iotdb/db/integration/IOTDBInsertIT.java    | 4 ++--
 .../test/java/org/apache/iotdb/db/integration/IoTDBResultSetIT.java | 4 ++--
 spark-iotdb-connector/pom.xml                                       | 6 ------
 8 files changed, 9 insertions(+), 22 deletions(-)