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

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


The following commit(s) were added to refs/heads/master by this push:
     new 17502a5  show devices bug
17502a5 is described below

commit 17502a5df46e1907a738ccac441afea4af435344
Author: JackieTien97 <[email protected]>
AuthorDate: Tue May 12 21:35:36 2020 +0800

    show devices bug
---
 .../java/org/apache/iotdb/rpc/IoTDBRpcDataSet.java |  6 ++-
 .../java/org/apache/iotdb/session/Session.java     |  2 +-
 .../org/apache/iotdb/session/SessionDataSet.java   | 11 +++--
 .../iotdb/session/IoTDBSessionIteratorIT.java      | 55 +++++++++++++++++++++-
 4 files changed, 68 insertions(+), 6 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 8a6047b..8525211 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
@@ -48,6 +48,7 @@ public class IoTDBRpcDataSet {
   public boolean isClosed = false;
   public TSIService.Iface client;
   public List<String> columnNameList; // no deduplication
+  public List<TSDataType> columnTypeList; // no deduplication
   public Map<String, Integer> columnOrdinalMap; // used because the server 
returns deduplicated columns
   public List<TSDataType> columnTypeDeduplicatedList; // deduplicated from 
columnTypeList
   public int fetchSize;
@@ -80,12 +81,13 @@ public class IoTDBRpcDataSet {
     this.queryId = queryId;
     this.client = client;
     this.fetchSize = fetchSize;
-    this.columnNameList = columnNameList;
     columnSize = columnNameList.size();
 
     this.columnNameList = new ArrayList<>();
+    this.columnTypeList = new ArrayList<>();
     if (!ignoreTimeStamp) {
       this.columnNameList.add(TIMESTAMP_STR);
+      this.columnTypeList.add(TSDataType.INT64);
     }
     // deduplicate and map
     this.columnOrdinalMap = new HashMap<>();
@@ -102,6 +104,7 @@ public class IoTDBRpcDataSet {
       for (int i = 0; i < columnNameList.size(); i++) {
         String name = columnNameList.get(i);
         this.columnNameList.add(name);
+        this.columnTypeList.add(TSDataType.valueOf(columnTypeList.get(i)));
         if (!columnOrdinalMap.containsKey(name)) {
           int index = columnNameIndex.get(name);
           columnOrdinalMap.put(name, index + START_INDEX);
@@ -114,6 +117,7 @@ public class IoTDBRpcDataSet {
       for (int i = 0; i < columnNameList.size(); i++) {
         String name = columnNameList.get(i);
         this.columnNameList.add(name);
+        this.columnTypeList.add(TSDataType.valueOf(columnTypeList.get(i)));
         if (!columnOrdinalMap.containsKey(name)) {
           columnOrdinalMap.put(name, index++);
           
columnTypeDeduplicatedList.add(TSDataType.valueOf(columnTypeList.get(i)));
diff --git a/session/src/main/java/org/apache/iotdb/session/Session.java 
b/session/src/main/java/org/apache/iotdb/session/Session.java
index 12a5f56..89f32b6 100644
--- a/session/src/main/java/org/apache/iotdb/session/Session.java
+++ b/session/src/main/java/org/apache/iotdb/session/Session.java
@@ -779,7 +779,7 @@ public class Session {
     }
     RpcUtils.verifySuccess(execResp.getStatus());
     return new SessionDataSet(sql, execResp.getColumns(), 
execResp.getDataTypeList(), execResp.columnNameIndexMap,
-        execResp.getQueryId(), client, sessionId, execResp.queryDataSet);
+        execResp.getQueryId(), client, sessionId, execResp.queryDataSet, 
execResp.isIgnoreTimeStamp());
   }
 
   /**
diff --git a/session/src/main/java/org/apache/iotdb/session/SessionDataSet.java 
b/session/src/main/java/org/apache/iotdb/session/SessionDataSet.java
index f649750..bc60c5b 100644
--- a/session/src/main/java/org/apache/iotdb/session/SessionDataSet.java
+++ b/session/src/main/java/org/apache/iotdb/session/SessionDataSet.java
@@ -43,9 +43,10 @@ public class SessionDataSet {
 
   public SessionDataSet(String sql, List<String> columnNameList, List<String> 
columnTypeList,
       Map<String, Integer> columnNameIndex,
-      long queryId, TSIService.Iface client, long sessionId, TSQueryDataSet 
queryDataSet) {
+      long queryId, TSIService.Iface client, long sessionId, TSQueryDataSet 
queryDataSet,
+      boolean ignoreTimeStamp) {
     this.ioTDBRpcDataSet = new IoTDBRpcDataSet(sql, columnNameList, 
columnTypeList,
-        columnNameIndex, false, queryId, client, sessionId, queryDataSet, 
1024);
+        columnNameIndex, ignoreTimeStamp, queryId, client, sessionId, 
queryDataSet, 1024);
   }
 
   public int getFetchSize() {
@@ -57,7 +58,11 @@ public class SessionDataSet {
   }
 
   public List<String> getColumnNames() {
-    return ioTDBRpcDataSet.columnNameList;
+    return new ArrayList<>(ioTDBRpcDataSet.columnNameList);
+  }
+
+  public List<TSDataType> getColumnTypes() {
+    return new ArrayList<>(ioTDBRpcDataSet.columnTypeList);
   }
 
 
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 8d3b3fd..64c9fad 100644
--- a/session/src/test/java/org/apache/iotdb/session/IoTDBSessionIteratorIT.java
+++ b/session/src/test/java/org/apache/iotdb/session/IoTDBSessionIteratorIT.java
@@ -54,7 +54,7 @@ public class IoTDBSessionIteratorIT {
   }
 
   @Test
-  public void test() {
+  public void test1() {
     String[] retArray = new String[]{
         "0,1,2.0,null",
         "1,1,2.0,null",
@@ -87,6 +87,59 @@ public class IoTDBSessionIteratorIT {
     }
   }
 
+  @Test
+  public void test2() {
+    String[] retArray = new String[]{
+        "9,root.sg1.d1.s1,1",
+        "9,root.sg1.d1.s2,2.0",
+        "9,root.sg1.d2.s1,4.0"
+    };
+
+    try {
+      SessionDataSet sessionDataSet = session.executeQueryStatement("select 
last * from root.sg1");
+      sessionDataSet.setFetchSize(1024);
+      DataIterator iterator = sessionDataSet.iterator();
+      int count = 0;
+      while (iterator.next()) {
+        String ans = String.format("%s,%s,%s", iterator.getLong(1), 
iterator.getString(2),
+            iterator.getString(3));
+        assertEquals(retArray[count], ans);
+        count++;
+      }
+      assertEquals(retArray.length, count);
+      sessionDataSet.closeOperationHandle();
+    } catch (Exception e) {
+      e.printStackTrace();
+      fail();
+    }
+  }
+
+  @Test
+  public void test3() {
+    String[] retArray = new String[]{
+        "root.sg1.d1",
+        "root.sg1.d2"
+    };
+
+    try {
+      SessionDataSet sessionDataSet = session.executeQueryStatement("show 
devices");
+      sessionDataSet.setFetchSize(1024);
+      assertEquals(1, sessionDataSet.getColumnNames().size());
+      DataIterator iterator = sessionDataSet.iterator();
+      int count = 0;
+      while (iterator.next()) {
+        String ans = iterator.getString(1);
+        assertEquals(retArray[count], ans);
+        count++;
+      }
+      assertEquals(retArray.length, count);
+      sessionDataSet.closeOperationHandle();
+    } catch (Exception e) {
+      e.printStackTrace();
+      fail();
+    }
+  }
+
   private void prepareData() throws IoTDBConnectionException, 
StatementExecutionException {
     session = new Session("127.0.0.1", 6667, "root", "root");
     session.open();

Reply via email to