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 7755ffc  [IOTDB-912] Implement wasNull method in 
AbstractIoTDBJDBCResultSet (#1791)
7755ffc is described below

commit 7755ffc831b3d2129659648bb87baa5a8aa3023f
Author: Jack Tsai <[email protected]>
AuthorDate: Wed Oct 21 09:29:09 2020 +0800

    [IOTDB-912] Implement wasNull method in AbstractIoTDBJDBCResultSet (#1791)
---
 .../iotdb/jdbc/AbstractIoTDBJDBCResultSet.java     | 19 +++++++++---------
 .../iotdb/jdbc/IoTDBNonAlignJDBCResultSet.java     |  8 ++++++--
 .../java/org/apache/iotdb/rpc/IoTDBRpcDataSet.java | 23 +++++++++++++++++-----
 3 files changed, 34 insertions(+), 16 deletions(-)

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 28e63fd..99c300f 100644
--- a/jdbc/src/main/java/org/apache/iotdb/jdbc/AbstractIoTDBJDBCResultSet.java
+++ b/jdbc/src/main/java/org/apache/iotdb/jdbc/AbstractIoTDBJDBCResultSet.java
@@ -160,7 +160,12 @@ public abstract class AbstractIoTDBJDBCResultSet 
implements ResultSet {
 
   @Override
   public BigDecimal getBigDecimal(String columnName) throws SQLException {
-    return new BigDecimal(Objects.requireNonNull(getValueByName(columnName)));
+    String value = getValueByName(columnName);
+    if (value != null) {
+      return new BigDecimal(value);
+    } else {
+      return null;
+    }
   }
 
   @Override
@@ -480,16 +485,12 @@ public abstract class AbstractIoTDBJDBCResultSet 
implements ResultSet {
 
   @Override
   public short getShort(int columnIndex) throws SQLException {
-    try {
-      return getShort(ioTDBRpcDataSet.findColumnNameByIndex(columnIndex));
-    } catch (StatementExecutionException e) {
-      throw new SQLException(e.getMessage());
-    }
+    throw new SQLException(Constant.METHOD_NOT_SUPPORTED);
   }
 
   @Override
   public short getShort(String columnName) throws SQLException {
-    return 
Short.parseShort(Objects.requireNonNull(getValueByName(columnName)));
+    throw new SQLException(Constant.METHOD_NOT_SUPPORTED);
   }
 
   @Override
@@ -1099,8 +1100,8 @@ public abstract class AbstractIoTDBJDBCResultSet 
implements ResultSet {
   }
 
   @Override
-  public boolean wasNull() throws SQLException {
-    throw new SQLException(Constant.METHOD_NOT_SUPPORTED);
+  public boolean wasNull() {
+    return ioTDBRpcDataSet.lastReadWasNull;
   }
 
   abstract void checkRecord() throws SQLException;
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 3b3aaa3..dd0b513 100644
--- a/jdbc/src/main/java/org/apache/iotdb/jdbc/IoTDBNonAlignJDBCResultSet.java
+++ b/jdbc/src/main/java/org/apache/iotdb/jdbc/IoTDBNonAlignJDBCResultSet.java
@@ -89,16 +89,20 @@ public class IoTDBNonAlignJDBCResultSet extends 
AbstractIoTDBJDBCResultSet {
       String column = columnName.substring(TIMESTAMP_STR_LENGTH);
       int index = ioTDBRpcDataSet.columnOrdinalMap.get(column) - START_INDEX;
       if (times[index] != null) {
+        ioTDBRpcDataSet.lastReadWasNull = false;
         return BytesUtils.bytesToLong(times[index]);
       } else {
-        throw new SQLException(String.format(VALUE_IS_NULL, columnName));
+        ioTDBRpcDataSet.lastReadWasNull = true;
+        return 0;
       }
     }
     int index = ioTDBRpcDataSet.columnOrdinalMap.get(columnName) - START_INDEX;
     if (ioTDBRpcDataSet.values[index] != null) {
+      ioTDBRpcDataSet.lastReadWasNull = false;
       return BytesUtils.bytesToLong(ioTDBRpcDataSet.values[index]);
     } else {
-      throw new SQLException(String.format(VALUE_IS_NULL, columnName));
+      ioTDBRpcDataSet.lastReadWasNull = true;
+      return 0;
     }
   }
 
diff --git 
a/service-rpc/src/main/java/org/apache/iotdb/rpc/IoTDBRpcDataSet.java 
b/service-rpc/src/main/java/org/apache/iotdb/rpc/IoTDBRpcDataSet.java
index c4f495d..95b9128 100644
--- a/service-rpc/src/main/java/org/apache/iotdb/rpc/IoTDBRpcDataSet.java
+++ b/service-rpc/src/main/java/org/apache/iotdb/rpc/IoTDBRpcDataSet.java
@@ -54,6 +54,7 @@ public class IoTDBRpcDataSet {
   public int fetchSize;
   public boolean emptyResultSet = false;
   public boolean hasCachedRecord = false;
+  public boolean lastReadWasNull;
 
 
   public byte[][] values; // used to cache the current row record value
@@ -284,9 +285,11 @@ public class IoTDBRpcDataSet {
     checkRecord();
     int index = columnOrdinalMap.get(columnName) - START_INDEX;
     if (!isNull(index, rowsIndex - 1)) {
+      lastReadWasNull = false;
       return BytesUtils.bytesToBool(values[index]);
     } else {
-      throw new StatementExecutionException(String.format(VALUE_IS_NULL, 
columnName));
+      lastReadWasNull = true;
+      return false;
     }
   }
 
@@ -298,9 +301,11 @@ public class IoTDBRpcDataSet {
     checkRecord();
     int index = columnOrdinalMap.get(columnName) - START_INDEX;
     if (!isNull(index, rowsIndex - 1)) {
+      lastReadWasNull = false;
       return BytesUtils.bytesToDouble(values[index]);
     } else {
-      throw new StatementExecutionException(String.format(VALUE_IS_NULL, 
columnName));
+      lastReadWasNull = true;
+      return 0;
     }
   }
 
@@ -312,9 +317,11 @@ public class IoTDBRpcDataSet {
     checkRecord();
     int index = columnOrdinalMap.get(columnName) - START_INDEX;
     if (!isNull(index, rowsIndex - 1)) {
+      lastReadWasNull = false;
       return BytesUtils.bytesToFloat(values[index]);
     } else {
-      throw new StatementExecutionException(String.format(VALUE_IS_NULL, 
columnName));
+      lastReadWasNull = true;
+      return 0;
     }
   }
 
@@ -326,9 +333,11 @@ public class IoTDBRpcDataSet {
     checkRecord();
     int index = columnOrdinalMap.get(columnName) - START_INDEX;
     if (!isNull(index, rowsIndex - 1)) {
+      lastReadWasNull = false;
       return BytesUtils.bytesToInt(values[index]);
     } else {
-      throw new StatementExecutionException(String.format(VALUE_IS_NULL, 
columnName));
+      lastReadWasNull = true;
+      return 0;
     }
   }
 
@@ -343,9 +352,11 @@ public class IoTDBRpcDataSet {
     }
     int index = columnOrdinalMap.get(columnName) - START_INDEX;
     if (!isNull(index, rowsIndex - 1)) {
+      lastReadWasNull = false;
       return BytesUtils.bytesToLong(values[index]);
     } else {
-      throw new StatementExecutionException(String.format(VALUE_IS_NULL, 
columnName));
+      lastReadWasNull = true;
+      return 0;
     }
   }
 
@@ -384,8 +395,10 @@ public class IoTDBRpcDataSet {
     }
     int index = columnOrdinalMap.get(columnName) - START_INDEX;
     if (index < 0 || index >= values.length || isNull(index, rowsIndex - 1)) {
+      lastReadWasNull = true;
       return null;
     }
+    lastReadWasNull = false;
     return getString(index, columnTypeDeduplicatedList.get(index), values);
   }
 

Reply via email to