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

Reply via email to