This is an automated email from the ASF dual-hosted git repository. haonan pushed a commit to branch getObject in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit 4de876fa366e8273ff61c8f1693ee08583a3c2e1 Author: HTHou <[email protected]> AuthorDate: Tue Mar 2 09:59:32 2021 +0800 getObject method in JDBC should return an Object --- .../iotdb/jdbc/AbstractIoTDBJDBCResultSet.java | 4 +++- .../org/apache/iotdb/jdbc/IoTDBJDBCResultSet.java | 9 +++++++++ .../iotdb/jdbc/IoTDBNonAlignJDBCResultSet.java | 22 ++++++++++++++++++++++ 3 files changed, 34 insertions(+), 1 deletion(-) diff --git a/jdbc/src/main/java/org/apache/iotdb/jdbc/AbstractIoTDBJDBCResultSet.java b/jdbc/src/main/java/org/apache/iotdb/jdbc/AbstractIoTDBJDBCResultSet.java index dacddff..36f74fd 100644 --- a/jdbc/src/main/java/org/apache/iotdb/jdbc/AbstractIoTDBJDBCResultSet.java +++ b/jdbc/src/main/java/org/apache/iotdb/jdbc/AbstractIoTDBJDBCResultSet.java @@ -443,7 +443,7 @@ public abstract class AbstractIoTDBJDBCResultSet implements ResultSet { @Override public Object getObject(String columnName) throws SQLException { - return getValueByName(columnName); + return getObjectByName(columnName); } @Override @@ -1121,4 +1121,6 @@ public abstract class AbstractIoTDBJDBCResultSet implements ResultSet { abstract void checkRecord() throws SQLException; abstract String getValueByName(String columnName) throws SQLException; + + abstract Object getObjectByName(String columnName) throws SQLException; } diff --git a/jdbc/src/main/java/org/apache/iotdb/jdbc/IoTDBJDBCResultSet.java b/jdbc/src/main/java/org/apache/iotdb/jdbc/IoTDBJDBCResultSet.java index 9d36394..9039a1c 100644 --- a/jdbc/src/main/java/org/apache/iotdb/jdbc/IoTDBJDBCResultSet.java +++ b/jdbc/src/main/java/org/apache/iotdb/jdbc/IoTDBJDBCResultSet.java @@ -104,6 +104,15 @@ public class IoTDBJDBCResultSet extends AbstractIoTDBJDBCResultSet { } } + @Override + protected Object getObjectByName(String columnName) throws SQLException { + try { + return ioTDBRpcDataSet.getObjectByName(columnName); + } catch (StatementExecutionException e) { + throw new SQLException(e.getMessage()); + } + } + public boolean isIgnoreTimeStamp() { return ioTDBRpcDataSet.ignoreTimeStamp; } diff --git a/jdbc/src/main/java/org/apache/iotdb/jdbc/IoTDBNonAlignJDBCResultSet.java b/jdbc/src/main/java/org/apache/iotdb/jdbc/IoTDBNonAlignJDBCResultSet.java index 1324733..c78644c 100644 --- a/jdbc/src/main/java/org/apache/iotdb/jdbc/IoTDBNonAlignJDBCResultSet.java +++ b/jdbc/src/main/java/org/apache/iotdb/jdbc/IoTDBNonAlignJDBCResultSet.java @@ -248,4 +248,26 @@ public class IoTDBNonAlignJDBCResultSet extends AbstractIoTDBJDBCResultSet { return ioTDBRpcDataSet.getString( index, ioTDBRpcDataSet.columnTypeDeduplicatedList.get(index), ioTDBRpcDataSet.values); } + + @Override + protected Object getObjectByName(String columnName) throws SQLException { + checkRecord(); + if (columnName.startsWith(TIMESTAMP_STR)) { + String column = columnName.substring(TIMESTAMP_STR_LENGTH); + int index = ioTDBRpcDataSet.columnOrdinalMap.get(column) - START_INDEX; + if (times[index] == null || times[index].length == 0) { + return null; + } + return BytesUtils.bytesToLong(times[index]); + } + int index = ioTDBRpcDataSet.columnOrdinalMap.get(columnName) - START_INDEX; + if (index < 0 + || index >= ioTDBRpcDataSet.values.length + || ioTDBRpcDataSet.values[index] == null + || ioTDBRpcDataSet.values[index].length < 1) { + return null; + } + return ioTDBRpcDataSet.getObject( + index, ioTDBRpcDataSet.columnTypeDeduplicatedList.get(index), ioTDBRpcDataSet.values); + } }
