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();