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