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

haonan pushed a commit to branch rc/1.3.1
in repository https://gitbox.apache.org/repos/asf/iotdb.git

commit 44ba2df40f2bd9bf15af8264e11750b3e5aa4bb8
Author: CritasWang <[email protected]>
AuthorDate: Mon Feb 5 14:53:30 2024 +0800

    feat(jdbc):getDouble add type check
---
 iotdb-client/jdbc/pom.xml                          |  4 +++
 .../apache/iotdb/jdbc/IoTDBDatabaseMetadata.java   | 36 +++++++++++++---------
 .../org/apache/iotdb/jdbc/IoTDBJDBCResultSet.java  |  9 ++++++
 3 files changed, 35 insertions(+), 14 deletions(-)

diff --git a/iotdb-client/jdbc/pom.xml b/iotdb-client/jdbc/pom.xml
index 81f9e96247f..4a5f4f23d00 100644
--- a/iotdb-client/jdbc/pom.xml
+++ b/iotdb-client/jdbc/pom.xml
@@ -64,6 +64,10 @@
             <groupId>org.apache.thrift</groupId>
             <artifactId>libthrift</artifactId>
         </dependency>
+        <dependency>
+            <groupId>org.apache.commons</groupId>
+            <artifactId>commons-lang3</artifactId>
+        </dependency>
         <dependency>
             <groupId>org.osgi</groupId>
             <artifactId>osgi.cmpn</artifactId>
diff --git 
a/iotdb-client/jdbc/src/main/java/org/apache/iotdb/jdbc/IoTDBDatabaseMetadata.java
 
b/iotdb-client/jdbc/src/main/java/org/apache/iotdb/jdbc/IoTDBDatabaseMetadata.java
index 1d77ab3d072..380b1c6459d 100644
--- 
a/iotdb-client/jdbc/src/main/java/org/apache/iotdb/jdbc/IoTDBDatabaseMetadata.java
+++ 
b/iotdb-client/jdbc/src/main/java/org/apache/iotdb/jdbc/IoTDBDatabaseMetadata.java
@@ -31,6 +31,7 @@ import 
org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
 import org.apache.iotdb.tsfile.read.common.block.column.TsBlockSerde;
 import org.apache.iotdb.tsfile.utils.Binary;
 
+import org.apache.commons.lang3.StringUtils;
 import org.apache.thrift.TException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -55,6 +56,8 @@ import java.util.TreeMap;
 
 public class IoTDBDatabaseMetadata implements DatabaseMetaData {
 
+  private static final org.slf4j.Logger logger =
+      org.slf4j.LoggerFactory.getLogger(IoTDBDatabaseMetadata.class);
   private IoTDBConnection connection;
   private IClientRPCService.Iface client;
   private static final Logger LOGGER = 
LoggerFactory.getLogger(IoTDBDatabaseMetadata.class);
@@ -2218,38 +2221,39 @@ public class IoTDBDatabaseMetadata implements 
DatabaseMetaData {
     Statement stmt = this.connection.createStatement();
 
     String sql = "SHOW TIMESERIES";
-    if (catalog != null && catalog.length() > 0) {
+    if (StringUtils.isNotEmpty(catalog)) {
       if (catalog.contains("%")) {
         catalog = catalog.replace("%", "*");
       }
       sql = sql + " " + catalog;
-    } else if (schemaPattern != null && schemaPattern.length() > 0) {
+    } else if (StringUtils.isNotEmpty(schemaPattern)) {
       if (schemaPattern.contains("%")) {
         schemaPattern = schemaPattern.replace("%", "*");
       }
       sql = sql + " " + schemaPattern;
     }
-    if (((catalog != null && catalog.length() > 0)
-            || schemaPattern != null && schemaPattern.length() > 0)
-        && tableNamePattern != null
-        && tableNamePattern.length() > 0) {
+    if ((StringUtils.isNotEmpty(catalog) || 
StringUtils.isNotEmpty(schemaPattern))
+        && StringUtils.isNotEmpty(tableNamePattern)) {
       if (tableNamePattern.contains("%")) {
         tableNamePattern = tableNamePattern.replace("%", "*");
       }
       sql = sql + "." + tableNamePattern;
     }
 
-    if (((catalog != null && catalog.length() > 0)
-            || schemaPattern != null && schemaPattern.length() > 0)
-        && tableNamePattern != null
-        && tableNamePattern.length() > 0
-        && columnNamePattern != null
-        && columnNamePattern.length() > 0) {
+    if ((StringUtils.isNotEmpty(catalog) || 
StringUtils.isNotEmpty(schemaPattern))
+        && StringUtils.isNotEmpty(tableNamePattern)
+        && StringUtils.isNotEmpty(columnNamePattern)) {
       if (columnNamePattern.contains("%")) {
         columnNamePattern = columnNamePattern.replace("%", "*");
       }
       sql = sql + "." + columnNamePattern;
     }
+
+    if (StringUtils.isEmpty(catalog)
+        && StringUtils.isEmpty(schemaPattern)
+        && StringUtils.isNotEmpty(tableNamePattern)) {
+      sql = sql + " " + tableNamePattern + ".*";
+    }
     ResultSet rs;
     try {
       rs = stmt.executeQuery(sql);
@@ -2489,7 +2493,7 @@ public class IoTDBDatabaseMetadata implements 
DatabaseMetaData {
       throws SQLException {
     Statement stmt = this.connection.createStatement();
 
-    String sql = "SHOW devices";
+    String sql = "SHOW DEVICES";
     String database = "";
     if (catalog != null && catalog.length() > 0) {
       if (catalog.contains("%")) {
@@ -2563,7 +2567,11 @@ public class IoTDBDatabaseMetadata implements 
DatabaseMetaData {
         if (i < 2) {
           valueInRow.add("");
         } else if (i == 2) {
-          valueInRow.add(res.substring(database.length() + 1));
+          int beginIndex = database.length() + 1;
+          if (StringUtils.isEmpty(database)) {
+            beginIndex = 0;
+          }
+          valueInRow.add(res.substring(beginIndex));
         } else if (i == 3) {
           valueInRow.add("TABLE");
         } else {
diff --git 
a/iotdb-client/jdbc/src/main/java/org/apache/iotdb/jdbc/IoTDBJDBCResultSet.java 
b/iotdb-client/jdbc/src/main/java/org/apache/iotdb/jdbc/IoTDBJDBCResultSet.java
index 61102f74f11..9db5621fe0a 100644
--- 
a/iotdb-client/jdbc/src/main/java/org/apache/iotdb/jdbc/IoTDBJDBCResultSet.java
+++ 
b/iotdb-client/jdbc/src/main/java/org/apache/iotdb/jdbc/IoTDBJDBCResultSet.java
@@ -377,6 +377,9 @@ public class IoTDBJDBCResultSet implements ResultSet {
   @Override
   public double getDouble(int columnIndex) throws SQLException {
     try {
+      if (ioTDBRpcDataSet.columnTypeList.get(columnIndex - 1).equals("FLOAT")) 
{
+        return ioTDBRpcDataSet.getFloat(columnIndex);
+      }
       return getDouble(ioTDBRpcDataSet.findColumnNameByIndex(columnIndex));
     } catch (StatementExecutionException e) {
       throw new SQLException(e.getMessage());
@@ -386,6 +389,12 @@ public class IoTDBJDBCResultSet implements ResultSet {
   @Override
   public double getDouble(String columnName) throws SQLException {
     try {
+      if (ioTDBRpcDataSet
+          .columnTypeList
+          .get(ioTDBRpcDataSet.columnNameList.indexOf(columnName))
+          .equals("FLOAT")) {
+        return ioTDBRpcDataSet.getFloat(columnName);
+      }
       return ioTDBRpcDataSet.getDouble(columnName);
     } catch (StatementExecutionException e) {
       throw new SQLException(e.getMessage());

Reply via email to