You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by su...@apache.org on 2019/07/23 11:39:40 UTC
[incubator-iotdb] branch remove_fetch_datatype_in_query created
(now 38df76d)
This is an automated email from the ASF dual-hosted git repository.
suyue pushed a change to branch remove_fetch_datatype_in_query
in repository https://gitbox.apache.org/repos/asf/incubator-iotdb.git.
at 38df76d return data type in TSExecuteStatementResp
This branch includes the following new commits:
new 38df76d return data type in TSExecuteStatementResp
The 1 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.
[incubator-iotdb] 01/01: return data type in TSExecuteStatementResp
Posted by su...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
suyue pushed a commit to branch remove_fetch_datatype_in_query
in repository https://gitbox.apache.org/repos/asf/incubator-iotdb.git
commit 38df76de97d3bf36a76b4f8e189936655273a227
Author: suyue <23...@qq.com>
AuthorDate: Tue Jul 23 19:39:13 2019 +0800
return data type in TSExecuteStatementResp
---
.../org/apache/iotdb/db/service/TSServiceImpl.java | 20 +++++++++-----
.../java/org/apache/iotdb/jdbc/IoTDBStatement.java | 31 ++--------------------
service-rpc/src/main/thrift/rpc.thrift | 3 +++
3 files changed, 18 insertions(+), 36 deletions(-)
diff --git a/iotdb/src/main/java/org/apache/iotdb/db/service/TSServiceImpl.java b/iotdb/src/main/java/org/apache/iotdb/db/service/TSServiceImpl.java
index 4aa0a9e..1c8b14a 100644
--- a/iotdb/src/main/java/org/apache/iotdb/db/service/TSServiceImpl.java
+++ b/iotdb/src/main/java/org/apache/iotdb/db/service/TSServiceImpl.java
@@ -549,13 +549,12 @@ public class TSServiceImpl implements TSIService.Iface, ServerContext {
resp = executeAuthQuery(plan, columns);
}
+ resp.setColumns(columns);
+ resp.setDataTypeList(queryColumnsType(columns));
resp.setOperationType(plan.getOperatorType().toString());
TSHandleIdentifier operationId = new TSHandleIdentifier(
- ByteBuffer.wrap(username.get().getBytes()),
- ByteBuffer.wrap("PASS".getBytes()));
- TSOperationHandle operationHandle;
- resp.setColumns(columns);
- operationHandle = new TSOperationHandle(operationId, true);
+ ByteBuffer.wrap(username.get().getBytes()), ByteBuffer.wrap("PASS".getBytes()));
+ TSOperationHandle operationHandle = new TSOperationHandle(operationId, true);
resp.setOperationHandle(operationHandle);
recordANewQuery(statement, plan);
return resp;
@@ -567,6 +566,14 @@ public class TSServiceImpl implements TSIService.Iface, ServerContext {
}
}
+ private List<String> queryColumnsType(List<String> columns) throws PathErrorException {
+ List<String> columnTypes = new ArrayList<>();
+ for (String column : columns) {
+ columnTypes.add(getSeriesType(column).toString());
+ }
+ return columnTypes;
+ }
+
private TSExecuteStatementResp executeAuthQuery(PhysicalPlan plan, List<String> columns) {
TSExecuteStatementResp resp = getTSExecuteStatementResp(TS_StatusCode.SUCCESS_STATUS, "");
resp.setIgnoreTimeStamp(true);
@@ -600,8 +607,7 @@ public class TSServiceImpl implements TSIService.Iface, ServerContext {
private TSExecuteStatementResp executeDataQuery(PhysicalPlan plan, List<String> columns)
throws AuthException, TException {
- List<Path> paths;
- paths = plan.getPaths();
+ List<Path> paths = plan.getPaths();
// check seriesPath exists
if (paths.isEmpty()) {
diff --git a/jdbc/src/main/java/org/apache/iotdb/jdbc/IoTDBStatement.java b/jdbc/src/main/java/org/apache/iotdb/jdbc/IoTDBStatement.java
index ade9f51..704bc5f 100644
--- a/jdbc/src/main/java/org/apache/iotdb/jdbc/IoTDBStatement.java
+++ b/jdbc/src/main/java/org/apache/iotdb/jdbc/IoTDBStatement.java
@@ -38,8 +38,6 @@ import org.apache.iotdb.service.rpc.thrift.TSExecuteBatchStatementReq;
import org.apache.iotdb.service.rpc.thrift.TSExecuteBatchStatementResp;
import org.apache.iotdb.service.rpc.thrift.TSExecuteStatementReq;
import org.apache.iotdb.service.rpc.thrift.TSExecuteStatementResp;
-import org.apache.iotdb.service.rpc.thrift.TSFetchMetadataReq;
-import org.apache.iotdb.service.rpc.thrift.TSFetchMetadataResp;
import org.apache.iotdb.service.rpc.thrift.TSIService;
import org.apache.iotdb.service.rpc.thrift.TSOperationHandle;
import org.apache.iotdb.service.rpc.thrift.TS_SessionHandle;
@@ -253,7 +251,7 @@ public class IoTDBStatement implements Statement {
IoTDBQueryResultSet resSet = new IoTDBQueryResultSet(this,
execResp.getColumns(), client,
operationHandle, sql, execResp.getOperationType(),
- getColumnsType(execResp.getColumns()), queryId.getAndIncrement());
+ execResp.getDataTypeList(), queryId.getAndIncrement());
resSet.setIgnoreTimeStamp(execResp.ignoreTimeStamp);
this.resultSet = resSet;
return true;
@@ -350,7 +348,7 @@ public class IoTDBStatement implements Statement {
operationHandle = execResp.getOperationHandle();
Utils.verifySuccess(execResp.getStatus());
IoTDBQueryResultSet resSet = new IoTDBQueryResultSet(this, execResp.getColumns(), client,
- operationHandle, sql, execResp.getOperationType(), getColumnsType(execResp.getColumns()),
+ operationHandle, sql, execResp.getOperationType(), execResp.getDataTypeList(),
queryId.getAndIncrement());
resSet.setIgnoreTimeStamp(execResp.ignoreTimeStamp);
this.resultSet = resSet;
@@ -566,31 +564,6 @@ public class IoTDBStatement implements Statement {
this.sessionHandle = connection.sessionHandle;
}
- private List<String> getColumnsType(List<String> columns) throws SQLException {
- List<String> columnTypes = new ArrayList<>();
- for (String column : columns) {
- columnTypes.add(getColumnType(column));
- }
- return columnTypes;
- }
-
- private String getColumnType(String columnName) throws SQLException {
- TSFetchMetadataReq req;
-
- req = new TSFetchMetadataReq(Constant.GLOBAL_COLUMN_REQ);
- req.setColumnPath(columnName);
-
- TSFetchMetadataResp resp;
- try {
- resp = client.fetchMetadata(req);
- Utils.verifySuccess(resp.getStatus());
- return resp.getDataType();
- } catch (TException | IoTDBSQLException e) {
- throw new SQLException(
- String.format("Cannot get column %s data type", columnName), e);
- }
- }
-
void requestStmtId() throws SQLException {
try {
this.stmtId = client.requestStatementId();
diff --git a/service-rpc/src/main/thrift/rpc.thrift b/service-rpc/src/main/thrift/rpc.thrift
index e64c659..6511e4e 100644
--- a/service-rpc/src/main/thrift/rpc.thrift
+++ b/service-rpc/src/main/thrift/rpc.thrift
@@ -74,6 +74,9 @@ struct TSExecuteStatementResp {
3: optional list<string> columns
4: optional string operationType
5: optional bool ignoreTimeStamp
+
+ // Data type list of columns in select statement of SQL
+ 6: optional list<string> dataTypeList
}
enum TSProtocolVersion {