diff --git a/RELEASE-NOTES.md b/RELEASE-NOTES.md index a9794f9b5c325..5a78591eefd4a 100644 --- a/RELEASE-NOTES.md +++ b/RELEASE-NOTES.md @@ -1,3 +1,9 @@ +## 1.5.3 + +### 缺陷修正 + +1. [ISSUE #349](https://github.com/dangdangdotcom/sharding-jdbc/issues/349) ResultSet.wasNull功能不正确 + ## 1.5.2 ### 里程碑 diff --git a/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/jdbc/core/resultset/ShardingResultSet.java b/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/jdbc/core/resultset/ShardingResultSet.java index 2ffdb94859eac..bf882ce19abe1 100644 --- a/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/jdbc/core/resultset/ShardingResultSet.java +++ b/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/jdbc/core/resultset/ShardingResultSet.java @@ -45,8 +45,6 @@ public final class ShardingResultSet extends AbstractResultSetAdapter { private final ResultSetMerger mergeResultSet; - private boolean wasNull; - public ShardingResultSet(final List resultSets, final ResultSetMerger mergeResultSet) { super(resultSets); this.mergeResultSet = mergeResultSet; @@ -59,370 +57,266 @@ public boolean next() throws SQLException { @Override public boolean wasNull() throws SQLException { - return wasNull; + return mergeResultSet.wasNull(); } @Override public boolean getBoolean(final int columnIndex) throws SQLException { - Object result = mergeResultSet.getValue(columnIndex, boolean.class); - wasNull = false; - return (boolean) ResultSetUtil.convertValue(result, boolean.class); + return (boolean) ResultSetUtil.convertValue(mergeResultSet.getValue(columnIndex, boolean.class), boolean.class); } @Override public boolean getBoolean(final String columnLabel) throws SQLException { - Object result = mergeResultSet.getValue(columnLabel, boolean.class); - wasNull = false; - return (boolean) ResultSetUtil.convertValue(result, boolean.class); + return (boolean) ResultSetUtil.convertValue(mergeResultSet.getValue(columnLabel, boolean.class), boolean.class); } @Override public byte getByte(final int columnIndex) throws SQLException { - Object result = mergeResultSet.getValue(columnIndex, byte.class); - wasNull = null == result; - return (byte) ResultSetUtil.convertValue(result, byte.class); + return (byte) ResultSetUtil.convertValue(mergeResultSet.getValue(columnIndex, byte.class), byte.class); } @Override public byte getByte(final String columnLabel) throws SQLException { - Object result = mergeResultSet.getValue(columnLabel, byte.class); - wasNull = null == result; - return (byte) ResultSetUtil.convertValue(result, byte.class); + return (byte) ResultSetUtil.convertValue(mergeResultSet.getValue(columnLabel, byte.class), byte.class); } @Override public short getShort(final int columnIndex) throws SQLException { - Object result = mergeResultSet.getValue(columnIndex, short.class); - wasNull = null == result; - return (short) ResultSetUtil.convertValue(result, short.class); + return (short) ResultSetUtil.convertValue(mergeResultSet.getValue(columnIndex, short.class), short.class); } @Override public short getShort(final String columnLabel) throws SQLException { - Object result = mergeResultSet.getValue(columnLabel, short.class); - wasNull = null == result; - return (short) ResultSetUtil.convertValue(result, short.class); + return (short) ResultSetUtil.convertValue(mergeResultSet.getValue(columnLabel, short.class), short.class); } @Override public int getInt(final int columnIndex) throws SQLException { - Object result = mergeResultSet.getValue(columnIndex, int.class); - wasNull = null == result; - return (int) ResultSetUtil.convertValue(result, int.class); + return (int) ResultSetUtil.convertValue(mergeResultSet.getValue(columnIndex, int.class), int.class); } @Override public int getInt(final String columnLabel) throws SQLException { - Object result = mergeResultSet.getValue(columnLabel, int.class); - wasNull = null == result; - return (int) ResultSetUtil.convertValue(result, int.class); + return (int) ResultSetUtil.convertValue(mergeResultSet.getValue(columnLabel, int.class), int.class); } @Override public long getLong(final int columnIndex) throws SQLException { - Object result = mergeResultSet.getValue(columnIndex, long.class); - wasNull = null == result; - return (long) ResultSetUtil.convertValue(result, long.class); + return (long) ResultSetUtil.convertValue(mergeResultSet.getValue(columnIndex, long.class), long.class); } @Override public long getLong(final String columnLabel) throws SQLException { - Object result = mergeResultSet.getValue(columnLabel, long.class); - wasNull = null == result; - return (long) ResultSetUtil.convertValue(result, long.class); + return (long) ResultSetUtil.convertValue(mergeResultSet.getValue(columnLabel, long.class), long.class); } @Override public float getFloat(final int columnIndex) throws SQLException { - Object result = mergeResultSet.getValue(columnIndex, float.class); - wasNull = null == result; - return (float) ResultSetUtil.convertValue(result, float.class); + return (float) ResultSetUtil.convertValue(mergeResultSet.getValue(columnIndex, float.class), float.class); } @Override public float getFloat(final String columnLabel) throws SQLException { - Object result = mergeResultSet.getValue(columnLabel, float.class); - wasNull = null == result; - return (float) ResultSetUtil.convertValue(result, float.class); + return (float) ResultSetUtil.convertValue(mergeResultSet.getValue(columnLabel, float.class), float.class); } @Override public double getDouble(final int columnIndex) throws SQLException { - Object result = mergeResultSet.getValue(columnIndex, double.class); - wasNull = null == result; - return (double) ResultSetUtil.convertValue(result, double.class); + return (double) ResultSetUtil.convertValue(mergeResultSet.getValue(columnIndex, double.class), double.class); } @Override public double getDouble(final String columnLabel) throws SQLException { - Object result = mergeResultSet.getValue(columnLabel, double.class); - wasNull = null == result; - return (double) ResultSetUtil.convertValue(result, double.class); + return (double) ResultSetUtil.convertValue(mergeResultSet.getValue(columnLabel, double.class), double.class); } @Override public String getString(final int columnIndex) throws SQLException { - Object result = mergeResultSet.getValue(columnIndex, String.class); - wasNull = null == result; - return (String) ResultSetUtil.convertValue(result, String.class); + return (String) ResultSetUtil.convertValue(mergeResultSet.getValue(columnIndex, String.class), String.class); } @Override public String getString(final String columnLabel) throws SQLException { - Object result = mergeResultSet.getValue(columnLabel, String.class); - wasNull = null == result; - return (String) ResultSetUtil.convertValue(result, String.class); + return (String) ResultSetUtil.convertValue(mergeResultSet.getValue(columnLabel, String.class), String.class); } @Override public BigDecimal getBigDecimal(final int columnIndex) throws SQLException { - Object result = mergeResultSet.getValue(columnIndex, BigDecimal.class); - wasNull = null == result; - return (BigDecimal) ResultSetUtil.convertValue(result, BigDecimal.class); + return (BigDecimal) ResultSetUtil.convertValue(mergeResultSet.getValue(columnIndex, BigDecimal.class), BigDecimal.class); } @Override public BigDecimal getBigDecimal(final String columnLabel) throws SQLException { - Object result = mergeResultSet.getValue(columnLabel, BigDecimal.class); - wasNull = null == result; - return (BigDecimal) ResultSetUtil.convertValue(result, BigDecimal.class); + return (BigDecimal) ResultSetUtil.convertValue(mergeResultSet.getValue(columnLabel, BigDecimal.class), BigDecimal.class); } @Override public BigDecimal getBigDecimal(final int columnIndex, final int scale) throws SQLException { - Object result = mergeResultSet.getValue(columnIndex, BigDecimal.class); - wasNull = null == result; - return (BigDecimal) ResultSetUtil.convertValue(result, BigDecimal.class); + return (BigDecimal) ResultSetUtil.convertValue(mergeResultSet.getValue(columnIndex, BigDecimal.class), BigDecimal.class); } @Override public BigDecimal getBigDecimal(final String columnLabel, final int scale) throws SQLException { - Object result = mergeResultSet.getValue(columnLabel, BigDecimal.class); - wasNull = null == result; - return (BigDecimal) ResultSetUtil.convertValue(result, BigDecimal.class); + return (BigDecimal) ResultSetUtil.convertValue(mergeResultSet.getValue(columnLabel, BigDecimal.class), BigDecimal.class); } @Override public byte[] getBytes(final int columnIndex) throws SQLException { - Object result = mergeResultSet.getValue(columnIndex, byte[].class); - wasNull = null == result; - return (byte[]) ResultSetUtil.convertValue(result, byte[].class); + return (byte[]) ResultSetUtil.convertValue(mergeResultSet.getValue(columnIndex, byte[].class), byte[].class); } @Override public byte[] getBytes(final String columnLabel) throws SQLException { - Object result = mergeResultSet.getValue(columnLabel, byte[].class); - wasNull = null == result; - return (byte[]) ResultSetUtil.convertValue(result, byte[].class); + return (byte[]) ResultSetUtil.convertValue(mergeResultSet.getValue(columnLabel, byte[].class), byte[].class); } @Override public Date getDate(final int columnIndex) throws SQLException { - Object result = mergeResultSet.getValue(columnIndex, Date.class); - wasNull = null == result; - return (Date) ResultSetUtil.convertValue(result, Date.class); + return (Date) ResultSetUtil.convertValue(mergeResultSet.getValue(columnIndex, Date.class), Date.class); } @Override public Date getDate(final String columnLabel) throws SQLException { - Object result = mergeResultSet.getValue(columnLabel, Date.class); - wasNull = null == result; - return (Date) ResultSetUtil.convertValue(result, Date.class); + return (Date) ResultSetUtil.convertValue(mergeResultSet.getValue(columnLabel, Date.class), Date.class); } @Override public Date getDate(final int columnIndex, final Calendar cal) throws SQLException { - Object result = mergeResultSet.getCalendarValue(columnIndex, Date.class, cal); - wasNull = null == result; - return (Date) ResultSetUtil.convertValue(result, Date.class); + return (Date) ResultSetUtil.convertValue(mergeResultSet.getCalendarValue(columnIndex, Date.class, cal), Date.class); } @Override public Date getDate(final String columnLabel, final Calendar cal) throws SQLException { - Object result = mergeResultSet.getCalendarValue(columnLabel, Date.class, cal); - wasNull = null == result; - return (Date) ResultSetUtil.convertValue(result, Date.class); + return (Date) ResultSetUtil.convertValue(mergeResultSet.getCalendarValue(columnLabel, Date.class, cal), Date.class); } @Override public Time getTime(final int columnIndex) throws SQLException { - Object result = mergeResultSet.getValue(columnIndex, Time.class); - wasNull = null == result; - return (Time) ResultSetUtil.convertValue(result, Time.class); + return (Time) ResultSetUtil.convertValue(mergeResultSet.getValue(columnIndex, Time.class), Time.class); } @Override public Time getTime(final String columnLabel) throws SQLException { - Object result = mergeResultSet.getValue(columnLabel, Time.class); - wasNull = null == result; - return (Time) ResultSetUtil.convertValue(result, Time.class); + return (Time) ResultSetUtil.convertValue(mergeResultSet.getValue(columnLabel, Time.class), Time.class); } @Override public Time getTime(final int columnIndex, final Calendar cal) throws SQLException { - Object result = mergeResultSet.getCalendarValue(columnIndex, Time.class, cal); - wasNull = null == result; - return (Time) ResultSetUtil.convertValue(result, Time.class); + return (Time) ResultSetUtil.convertValue(mergeResultSet.getCalendarValue(columnIndex, Time.class, cal), Time.class); } @Override public Time getTime(final String columnLabel, final Calendar cal) throws SQLException { - Object result = mergeResultSet.getCalendarValue(columnLabel, Time.class, cal); - wasNull = null == result; - return (Time) ResultSetUtil.convertValue(result, Time.class); + return (Time) ResultSetUtil.convertValue(mergeResultSet.getCalendarValue(columnLabel, Time.class, cal), Time.class); } @Override public Timestamp getTimestamp(final int columnIndex) throws SQLException { - Object result = mergeResultSet.getValue(columnIndex, Timestamp.class); - wasNull = null == result; - return (Timestamp) ResultSetUtil.convertValue(result, Timestamp.class); + return (Timestamp) ResultSetUtil.convertValue(mergeResultSet.getValue(columnIndex, Timestamp.class), Timestamp.class); } @Override public Timestamp getTimestamp(final String columnLabel) throws SQLException { - Object result = mergeResultSet.getValue(columnLabel, Timestamp.class); - wasNull = null == result; - return (Timestamp) ResultSetUtil.convertValue(result, Timestamp.class); + return (Timestamp) ResultSetUtil.convertValue(mergeResultSet.getValue(columnLabel, Timestamp.class), Timestamp.class); } @Override public Timestamp getTimestamp(final int columnIndex, final Calendar cal) throws SQLException { - Object result = mergeResultSet.getCalendarValue(columnIndex, Timestamp.class, cal); - wasNull = null == result; - return (Timestamp) ResultSetUtil.convertValue(result, Timestamp.class); + return (Timestamp) ResultSetUtil.convertValue(mergeResultSet.getCalendarValue(columnIndex, Timestamp.class, cal), Timestamp.class); } @Override public Timestamp getTimestamp(final String columnLabel, final Calendar cal) throws SQLException { - Object result = mergeResultSet.getCalendarValue(columnLabel, Timestamp.class, cal); - wasNull = null == result; - return (Timestamp) ResultSetUtil.convertValue(result, Timestamp.class); + return (Timestamp) ResultSetUtil.convertValue(mergeResultSet.getCalendarValue(columnLabel, Timestamp.class, cal), Timestamp.class); } @Override public InputStream getAsciiStream(final int columnIndex) throws SQLException { - InputStream result = mergeResultSet.getInputStream(columnIndex, "Ascii"); - wasNull = null == result; - return result; + return mergeResultSet.getInputStream(columnIndex, "Ascii"); } @Override public InputStream getAsciiStream(final String columnLabel) throws SQLException { - InputStream result = mergeResultSet.getInputStream(columnLabel, "Ascii"); - wasNull = null == result; - return result; + return mergeResultSet.getInputStream(columnLabel, "Ascii"); } @Override public InputStream getUnicodeStream(final int columnIndex) throws SQLException { - InputStream result = mergeResultSet.getInputStream(columnIndex, "Unicode"); - wasNull = null == result; - return result; + return mergeResultSet.getInputStream(columnIndex, "Unicode"); } @Override public InputStream getUnicodeStream(final String columnLabel) throws SQLException { - InputStream result = mergeResultSet.getInputStream(columnLabel, "Unicode"); - wasNull = null == result; - return result; + return mergeResultSet.getInputStream(columnLabel, "Unicode"); } @Override public InputStream getBinaryStream(final int columnIndex) throws SQLException { - InputStream result = mergeResultSet.getInputStream(columnIndex, "Binary"); - wasNull = null == result; - return result; + return mergeResultSet.getInputStream(columnIndex, "Binary"); } @Override public InputStream getBinaryStream(final String columnLabel) throws SQLException { - InputStream result = mergeResultSet.getInputStream(columnLabel, "Binary"); - wasNull = null == result; - return result; + return mergeResultSet.getInputStream(columnLabel, "Binary"); } @Override public Reader getCharacterStream(final int columnIndex) throws SQLException { - Object result = mergeResultSet.getValue(columnIndex, Reader.class); - wasNull = null == result; - return (Reader) result; + return (Reader) mergeResultSet.getValue(columnIndex, Reader.class); } @Override public Reader getCharacterStream(final String columnLabel) throws SQLException { - Object result = mergeResultSet.getValue(columnLabel, Reader.class); - wasNull = null == result; - return (Reader) result; + return (Reader) mergeResultSet.getValue(columnLabel, Reader.class); } @Override public Blob getBlob(final int columnIndex) throws SQLException { - Object result = mergeResultSet.getValue(columnIndex, Blob.class); - wasNull = null == result; - return (Blob) result; + return (Blob) mergeResultSet.getValue(columnIndex, Blob.class); } @Override public Blob getBlob(final String columnLabel) throws SQLException { - Object result = mergeResultSet.getValue(columnLabel, Blob.class); - wasNull = null == result; - return (Blob) result; + return (Blob) mergeResultSet.getValue(columnLabel, Blob.class); } @Override public Clob getClob(final int columnIndex) throws SQLException { - Object result = mergeResultSet.getValue(columnIndex, Clob.class); - wasNull = null == result; - return (Clob) result; + return (Clob) mergeResultSet.getValue(columnIndex, Clob.class); } @Override public Clob getClob(final String columnLabel) throws SQLException { - Object result = mergeResultSet.getValue(columnLabel, Clob.class); - wasNull = null == result; - return (Clob) result; + return (Clob) mergeResultSet.getValue(columnLabel, Clob.class); } @Override public URL getURL(final int columnIndex) throws SQLException { - Object result = mergeResultSet.getValue(columnIndex, URL.class); - wasNull = null == result; - return (URL) result; + return (URL) mergeResultSet.getValue(columnIndex, URL.class); } @Override public URL getURL(final String columnLabel) throws SQLException { - Object result = mergeResultSet.getValue(columnLabel, URL.class); - wasNull = null == result; - return (URL) result; + return (URL) mergeResultSet.getValue(columnLabel, URL.class); } @Override public SQLXML getSQLXML(final int columnIndex) throws SQLException { - Object result = mergeResultSet.getValue(columnIndex, SQLXML.class); - wasNull = null == result; - return (SQLXML) result; + return (SQLXML) mergeResultSet.getValue(columnIndex, SQLXML.class); } @Override public SQLXML getSQLXML(final String columnLabel) throws SQLException { - Object result = mergeResultSet.getValue(columnLabel, SQLXML.class); - wasNull = null == result; - return (SQLXML) result; + return (SQLXML) mergeResultSet.getValue(columnLabel, SQLXML.class); } @Override public Object getObject(final int columnIndex) throws SQLException { - Object result = mergeResultSet.getValue(columnIndex, Object.class); - wasNull = null == result; - return result; + return mergeResultSet.getValue(columnIndex, Object.class); } @Override public Object getObject(final String columnLabel) throws SQLException { - Object result = mergeResultSet.getValue(columnLabel, Object.class); - wasNull = null == result; - return result; + return mergeResultSet.getValue(columnLabel, Object.class); } } diff --git a/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/merger/ResultSetMerger.java b/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/merger/ResultSetMerger.java index 537541c0ca9f9..4d62a720f7ebc 100644 --- a/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/merger/ResultSetMerger.java +++ b/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/merger/ResultSetMerger.java @@ -97,4 +97,12 @@ public interface ResultSetMerger { * @throws SQLException SQL Exception */ InputStream getInputStream(final String columnLabel, final String type) throws SQLException; + + /** + * Adjust ResultSet is null or not. + * + * @return ResultSet is null or not + * @throws SQLException SQL Exception + */ + boolean wasNull() throws SQLException; } diff --git a/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/merger/common/AbstractDecoratorResultSetMerger.java b/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/merger/common/AbstractDecoratorResultSetMerger.java index b9bc105e036c1..d639c30567f2d 100644 --- a/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/merger/common/AbstractDecoratorResultSetMerger.java +++ b/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/merger/common/AbstractDecoratorResultSetMerger.java @@ -65,4 +65,9 @@ public InputStream getInputStream(final int columnIndex, final String type) thro public InputStream getInputStream(final String columnLabel, final String type) throws SQLException { return resultSetMerger.getInputStream(columnLabel, type); } + + @Override + public boolean wasNull() throws SQLException { + return resultSetMerger.wasNull(); + } } diff --git a/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/merger/common/AbstractMemoryResultSetMerger.java b/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/merger/common/AbstractMemoryResultSetMerger.java index b3a74bc8e975a..dbe879ae31cbf 100644 --- a/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/merger/common/AbstractMemoryResultSetMerger.java +++ b/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/merger/common/AbstractMemoryResultSetMerger.java @@ -44,12 +44,16 @@ public abstract class AbstractMemoryResultSetMerger implements ResultSetMerger { @Setter private MemoryResultSetRow currentResultSetRow; + private boolean wasNull; + @Override public Object getValue(final int columnIndex, final Class type) throws SQLException { if (Blob.class == type || Clob.class == type || Reader.class == type || InputStream.class == type || SQLXML.class == type) { throw new SQLFeatureNotSupportedException(); } - return currentResultSetRow.getCell(columnIndex); + Object result = currentResultSetRow.getCell(columnIndex); + wasNull = null == result; + return result; } @Override @@ -57,19 +61,25 @@ public Object getValue(final String columnLabel, final Class type) throws SQL if (Blob.class == type || Clob.class == type || Reader.class == type || InputStream.class == type || SQLXML.class == type) { throw new SQLFeatureNotSupportedException(); } - return currentResultSetRow.getCell(labelAndIndexMap.get(columnLabel)); + Object result = currentResultSetRow.getCell(labelAndIndexMap.get(columnLabel)); + wasNull = null == result; + return result; } @Override public Object getCalendarValue(final int columnIndex, final Class type, final Calendar calendar) throws SQLException { // TODO 时间相关取值未实现calendar模式 - return currentResultSetRow.getCell(columnIndex); + Object result = currentResultSetRow.getCell(columnIndex); + wasNull = null == result; + return result; } @Override public Object getCalendarValue(final String columnLabel, final Class type, final Calendar calendar) throws SQLException { // TODO 时间相关取值未实现calendar模式 - return currentResultSetRow.getCell(labelAndIndexMap.get(columnLabel)); + Object result = currentResultSetRow.getCell(labelAndIndexMap.get(columnLabel)); + wasNull = null == result; + return result; } @Override @@ -81,4 +91,9 @@ public InputStream getInputStream(final int columnIndex, final String type) thro public InputStream getInputStream(final String columnLabel, final String type) throws SQLException { throw new SQLFeatureNotSupportedException(); } + + @Override + public boolean wasNull() throws SQLException { + return wasNull; + } } diff --git a/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/merger/common/AbstractStreamResultSetMerger.java b/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/merger/common/AbstractStreamResultSetMerger.java index 03562fd042920..4e46bba009336 100644 --- a/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/merger/common/AbstractStreamResultSetMerger.java +++ b/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/merger/common/AbstractStreamResultSetMerger.java @@ -44,6 +44,8 @@ public abstract class AbstractStreamResultSetMerger implements ResultSetMerger { private ResultSet currentResultSet; + private boolean wasNull; + protected ResultSet getCurrentResultSet() throws SQLException { if (null == currentResultSet) { throw new SQLException("Current ResultSet is null, ResultSet perhaps end of next."); @@ -53,183 +55,232 @@ protected ResultSet getCurrentResultSet() throws SQLException { @Override public Object getValue(final int columnIndex, final Class type) throws SQLException { + Object result; if (Object.class == type) { - return getCurrentResultSet().getObject(columnIndex); - } - if (boolean.class == type) { - return getCurrentResultSet().getBoolean(columnIndex); - } - if (byte.class == type) { - return getCurrentResultSet().getByte(columnIndex); - } - if (short.class == type) { - return getCurrentResultSet().getShort(columnIndex); - } - if (int.class == type) { - return getCurrentResultSet().getInt(columnIndex); - } - if (long.class == type) { - return getCurrentResultSet().getLong(columnIndex); - } - if (float.class == type) { - return getCurrentResultSet().getFloat(columnIndex); - } - if (double.class == type) { - return getCurrentResultSet().getDouble(columnIndex); - } - if (String.class == type) { - return getCurrentResultSet().getString(columnIndex); - } - if (BigDecimal.class == type) { - return getCurrentResultSet().getBigDecimal(columnIndex); - } - if (byte[].class == type) { - return getCurrentResultSet().getBytes(columnIndex); - } - if (Date.class == type) { - return getCurrentResultSet().getDate(columnIndex); - } - if (Time.class == type) { - return getCurrentResultSet().getTime(columnIndex); - } - if (Timestamp.class == type) { - return getCurrentResultSet().getTimestamp(columnIndex); - } - if (URL.class == type) { - return getCurrentResultSet().getURL(columnIndex); - } - if (Blob.class == type) { - return getCurrentResultSet().getBlob(columnIndex); - } - if (Clob.class == type) { - return getCurrentResultSet().getClob(columnIndex); - } - if (SQLXML.class == type) { - return getCurrentResultSet().getSQLXML(columnIndex); - } - if (Reader.class == type) { - return getCurrentResultSet().getCharacterStream(columnIndex); - } - return getCurrentResultSet().getObject(columnIndex); + result = getCurrentResultSet().getObject(columnIndex); + wasNull = getCurrentResultSet().wasNull(); + return result; + } else if (boolean.class == type) { + result = getCurrentResultSet().getBoolean(columnIndex); + wasNull = getCurrentResultSet().wasNull(); + } else if (byte.class == type) { + result = getCurrentResultSet().getByte(columnIndex); + wasNull = getCurrentResultSet().wasNull(); + return result; + } else if (short.class == type) { + result = getCurrentResultSet().getShort(columnIndex); + wasNull = getCurrentResultSet().wasNull(); + return result; + } else if (int.class == type) { + result = getCurrentResultSet().getInt(columnIndex); + wasNull = getCurrentResultSet().wasNull(); + return result; + } else if (long.class == type) { + result = getCurrentResultSet().getLong(columnIndex); + wasNull = getCurrentResultSet().wasNull(); + return result; + } else if (float.class == type) { + result = getCurrentResultSet().getFloat(columnIndex); + wasNull = getCurrentResultSet().wasNull(); + return result; + } else if (double.class == type) { + result = getCurrentResultSet().getDouble(columnIndex); + wasNull = getCurrentResultSet().wasNull(); + return result; + } else if (String.class == type) { + result = getCurrentResultSet().getString(columnIndex); + wasNull = getCurrentResultSet().wasNull(); + return result; + } else if (BigDecimal.class == type) { + result = getCurrentResultSet().getBigDecimal(columnIndex); + wasNull = getCurrentResultSet().wasNull(); + return result; + } else if (byte[].class == type) { + result = getCurrentResultSet().getBytes(columnIndex); + wasNull = getCurrentResultSet().wasNull(); + return result; + } else if (Date.class == type) { + result = getCurrentResultSet().getDate(columnIndex); + wasNull = getCurrentResultSet().wasNull(); + return result; + } else if (Time.class == type) { + result = getCurrentResultSet().getTime(columnIndex); + wasNull = getCurrentResultSet().wasNull(); + return result; + } else if (Timestamp.class == type) { + result = getCurrentResultSet().getTimestamp(columnIndex); + wasNull = getCurrentResultSet().wasNull(); + return result; + } else if (URL.class == type) { + result = getCurrentResultSet().getURL(columnIndex); + wasNull = getCurrentResultSet().wasNull(); + return result; + } else if (Blob.class == type) { + result = getCurrentResultSet().getBlob(columnIndex); + wasNull = getCurrentResultSet().wasNull(); + return result; + } else if (Clob.class == type) { + result = getCurrentResultSet().getClob(columnIndex); + wasNull = getCurrentResultSet().wasNull(); + return result; + } else if (SQLXML.class == type) { + result = getCurrentResultSet().getSQLXML(columnIndex); + wasNull = getCurrentResultSet().wasNull(); + return result; + } else if (Reader.class == type) { + result = getCurrentResultSet().getCharacterStream(columnIndex); + wasNull = getCurrentResultSet().wasNull(); + return result; + } else { + result = getCurrentResultSet().getObject(columnIndex); + wasNull = getCurrentResultSet().wasNull(); + } + return result; } @Override public Object getValue(final String columnLabel, final Class type) throws SQLException { + Object result; if (Object.class == type) { - return getCurrentResultSet().getObject(columnLabel); - } - if (boolean.class == type) { - return getCurrentResultSet().getBoolean(columnLabel); - } - if (byte.class == type) { - return getCurrentResultSet().getByte(columnLabel); - } - if (short.class == type) { - return getCurrentResultSet().getShort(columnLabel); - } - if (int.class == type) { - return getCurrentResultSet().getInt(columnLabel); - } - if (long.class == type) { - return getCurrentResultSet().getLong(columnLabel); - } - if (float.class == type) { - return getCurrentResultSet().getFloat(columnLabel); - } - if (double.class == type) { - return getCurrentResultSet().getDouble(columnLabel); - } - if (String.class == type) { - return getCurrentResultSet().getString(columnLabel); - } - if (BigDecimal.class == type) { - return getCurrentResultSet().getBigDecimal(columnLabel); - } - if (byte[].class == type) { - return getCurrentResultSet().getBytes(columnLabel); - } - if (Date.class == type) { - return getCurrentResultSet().getDate(columnLabel); - } - if (Time.class == type) { - return getCurrentResultSet().getTime(columnLabel); - } - if (Timestamp.class == type) { - return getCurrentResultSet().getTimestamp(columnLabel); - } - if (URL.class == type) { - return getCurrentResultSet().getURL(columnLabel); - } - if (Blob.class == type) { - return getCurrentResultSet().getBlob(columnLabel); - } - if (Clob.class == type) { - return getCurrentResultSet().getClob(columnLabel); - } - if (SQLXML.class == type) { - return getCurrentResultSet().getSQLXML(columnLabel); - } - if (Reader.class == type) { - return getCurrentResultSet().getCharacterStream(columnLabel); - } - return getCurrentResultSet().getObject(columnLabel); + result = getCurrentResultSet().getObject(columnLabel); + wasNull = getCurrentResultSet().wasNull(); + } else if (boolean.class == type) { + result = getCurrentResultSet().getBoolean(columnLabel); + wasNull = getCurrentResultSet().wasNull(); + } else if (byte.class == type) { + result = getCurrentResultSet().getByte(columnLabel); + wasNull = getCurrentResultSet().wasNull(); + } else if (short.class == type) { + result = getCurrentResultSet().getShort(columnLabel); + wasNull = getCurrentResultSet().wasNull(); + } else if (int.class == type) { + result = getCurrentResultSet().getInt(columnLabel); + wasNull = getCurrentResultSet().wasNull(); + } else if (long.class == type) { + result = getCurrentResultSet().getLong(columnLabel); + wasNull = getCurrentResultSet().wasNull(); + } else if (float.class == type) { + result = getCurrentResultSet().getFloat(columnLabel); + wasNull = getCurrentResultSet().wasNull(); + } else if (double.class == type) { + result = getCurrentResultSet().getDouble(columnLabel); + wasNull = getCurrentResultSet().wasNull(); + } else if (String.class == type) { + result = getCurrentResultSet().getString(columnLabel); + wasNull = getCurrentResultSet().wasNull(); + } else if (BigDecimal.class == type) { + result = getCurrentResultSet().getBigDecimal(columnLabel); + wasNull = getCurrentResultSet().wasNull(); + } else if (byte[].class == type) { + result = getCurrentResultSet().getBytes(columnLabel); + wasNull = getCurrentResultSet().wasNull(); + } else if (Date.class == type) { + result = getCurrentResultSet().getDate(columnLabel); + wasNull = getCurrentResultSet().wasNull(); + } else if (Time.class == type) { + result = getCurrentResultSet().getTime(columnLabel); + wasNull = getCurrentResultSet().wasNull(); + } else if (Timestamp.class == type) { + result = getCurrentResultSet().getTimestamp(columnLabel); + wasNull = getCurrentResultSet().wasNull(); + } else if (URL.class == type) { + result = getCurrentResultSet().getURL(columnLabel); + wasNull = getCurrentResultSet().wasNull(); + } else if (Blob.class == type) { + result = getCurrentResultSet().getBlob(columnLabel); + wasNull = getCurrentResultSet().wasNull(); + } else if (Clob.class == type) { + result = getCurrentResultSet().getClob(columnLabel); + wasNull = getCurrentResultSet().wasNull(); + } else if (SQLXML.class == type) { + result = getCurrentResultSet().getSQLXML(columnLabel); + wasNull = getCurrentResultSet().wasNull(); + } else if (Reader.class == type) { + result = getCurrentResultSet().getCharacterStream(columnLabel); + wasNull = getCurrentResultSet().wasNull(); + } else { + result = getCurrentResultSet().getObject(columnLabel); + wasNull = getCurrentResultSet().wasNull(); + } + return result; } @Override public Object getCalendarValue(final int columnIndex, final Class type, final Calendar calendar) throws SQLException { + Object result; if (Date.class == type) { - return getCurrentResultSet().getDate(columnIndex, calendar); - } - if (Time.class == type) { - return getCurrentResultSet().getTime(columnIndex, calendar); - } - if (Timestamp.class == type) { - return getCurrentResultSet().getTimestamp(columnIndex, calendar); - } - throw new SQLException(String.format("Unsupported type: %s", type)); + result = getCurrentResultSet().getDate(columnIndex, calendar); + wasNull = getCurrentResultSet().wasNull(); + } else if (Time.class == type) { + result = getCurrentResultSet().getTime(columnIndex, calendar); + wasNull = getCurrentResultSet().wasNull(); + } else if (Timestamp.class == type) { + result = getCurrentResultSet().getTimestamp(columnIndex, calendar); + wasNull = getCurrentResultSet().wasNull(); + } else { + throw new SQLException(String.format("Unsupported type: %s", type)); + } + return result; } @Override public Object getCalendarValue(final String columnLabel, final Class type, final Calendar calendar) throws SQLException { + Object result; if (Date.class == type) { - return getCurrentResultSet().getDate(columnLabel, calendar); - } - if (Time.class == type) { - return getCurrentResultSet().getTime(columnLabel, calendar); - } - if (Timestamp.class == type) { - return getCurrentResultSet().getTimestamp(columnLabel, calendar); - } - throw new SQLException(String.format("Unsupported type: %s", type)); + result = getCurrentResultSet().getDate(columnLabel, calendar); + wasNull = getCurrentResultSet().wasNull(); + } else if (Time.class == type) { + result = getCurrentResultSet().getTime(columnLabel, calendar); + wasNull = getCurrentResultSet().wasNull(); + } else if (Timestamp.class == type) { + result = getCurrentResultSet().getTimestamp(columnLabel, calendar); + wasNull = getCurrentResultSet().wasNull(); + } else { + throw new SQLException(String.format("Unsupported type: %s", type)); + } + return result; } @SuppressWarnings("deprecation") @Override public InputStream getInputStream(final int columnIndex, final String type) throws SQLException { + InputStream result; if ("Ascii".equals(type)) { - return getCurrentResultSet().getAsciiStream(columnIndex); - } - if ("Unicode".equals(type)) { - return getCurrentResultSet().getUnicodeStream(columnIndex); - } - if ("Binary".equals(type)) { - return getCurrentResultSet().getBinaryStream(columnIndex); - } - throw new SQLException(String.format("Unsupported type: %s", type)); + result = getCurrentResultSet().getAsciiStream(columnIndex); + wasNull = getCurrentResultSet().wasNull(); + } else if ("Unicode".equals(type)) { + result = getCurrentResultSet().getUnicodeStream(columnIndex); + wasNull = getCurrentResultSet().wasNull(); + } else if ("Binary".equals(type)) { + result = getCurrentResultSet().getBinaryStream(columnIndex); + wasNull = getCurrentResultSet().wasNull(); + } else { + throw new SQLException(String.format("Unsupported type: %s", type)); + } + return result; } @SuppressWarnings("deprecation") @Override public InputStream getInputStream(final String columnLabel, final String type) throws SQLException { + InputStream result; if ("Ascii".equals(type)) { - return getCurrentResultSet().getAsciiStream(columnLabel); - } - if ("Unicode".equals(type)) { - return getCurrentResultSet().getUnicodeStream(columnLabel); - } - if ("Binary".equals(type)) { - return getCurrentResultSet().getBinaryStream(columnLabel); - } - throw new SQLException(String.format("Unsupported type: %s", type)); + result = getCurrentResultSet().getAsciiStream(columnLabel); + wasNull = getCurrentResultSet().wasNull(); + } else if ("Unicode".equals(type)) { + result = getCurrentResultSet().getUnicodeStream(columnLabel); + wasNull = getCurrentResultSet().wasNull(); + } else if ("Binary".equals(type)) { + result = getCurrentResultSet().getBinaryStream(columnLabel); + wasNull = getCurrentResultSet().wasNull(); + } else { + throw new SQLException(String.format("Unsupported type: %s", type)); + } + return result; + } + + @Override + public boolean wasNull() throws SQLException { + return wasNull; } }