This is an automated email from the ASF dual-hosted git repository.
haonan pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/iotdb.git
The following commit(s) were added to refs/heads/master by this push:
new 6511a88 [IOTDB-908] Implement ResultSetMetadata interface for JDBC
(#1768)
6511a88 is described below
commit 6511a88b0c0d47a55ad87008c7a7ed4a62d872a7
Author: Jack Tsai <[email protected]>
AuthorDate: Wed Oct 21 09:33:21 2020 +0800
[IOTDB-908] Implement ResultSetMetadata interface for JDBC (#1768)
---
.../org/apache/iotdb/jdbc/IoTDBResultMetadata.java | 46 ++++++++++++++++++++--
1 file changed, 42 insertions(+), 4 deletions(-)
diff --git a/jdbc/src/main/java/org/apache/iotdb/jdbc/IoTDBResultMetadata.java
b/jdbc/src/main/java/org/apache/iotdb/jdbc/IoTDBResultMetadata.java
index b890428..d4b83cc 100644
--- a/jdbc/src/main/java/org/apache/iotdb/jdbc/IoTDBResultMetadata.java
+++ b/jdbc/src/main/java/org/apache/iotdb/jdbc/IoTDBResultMetadata.java
@@ -54,8 +54,26 @@ public class IoTDBResultMetadata implements
ResultSetMetaData {
}
@Override
- public String getColumnClassName(int arg0) throws SQLException {
- throw new SQLException(Constant.METHOD_NOT_SUPPORTED);
+ public String getColumnClassName(int column) throws SQLException {
+ String columnTypeName = getColumnTypeName(column);
+ switch (columnTypeName) {
+ case "TIMESTAMP":
+ case "INT64":
+ return Long.class.getName();
+ case "BOOLEAN":
+ return Boolean.class.getName();
+ case "INT32":
+ return Integer.class.getName();
+ case "FLOAT":
+ return Float.class.getName();
+ case "DOUBLE":
+ return Double.class.getName();
+ case "TEXT":
+ return String.class.getName();
+ default:
+ break;
+ }
+ return null;
}
@Override
@@ -124,8 +142,28 @@ public class IoTDBResultMetadata implements
ResultSetMetaData {
}
@Override
- public String getColumnTypeName(int arg0) throws SQLException {
- throw new SQLException(Constant.METHOD_NOT_SUPPORTED);
+ public String getColumnTypeName(int column) throws SQLException {
+ checkColumnIndex(column);
+ if (column == 1 && !ignoreTimestamp) {
+ return "TIMESTAMP";
+ }
+ // BOOLEAN, INT32, INT64, FLOAT, DOUBLE, TEXT,
+ String columnType;
+ if (!ignoreTimestamp) {
+ columnType = columnTypeList.get(column - 2);
+ } else {
+ columnType = columnTypeList.get(column - 1);
+ }
+ String typeString = columnType.toUpperCase();
+ if (typeString.equals("BOOLEAN") ||
+ typeString.equals("INT32") ||
+ typeString.equals("INT64") ||
+ typeString.equals("FLOAT") ||
+ typeString.equals("DOUBLE") ||
+ typeString.equals("TEXT")) {
+ return typeString;
+ }
+ return null;
}
@Override