diff --git a/jOOQ/src/main/java/org/jooq/tools/jdbc/DefaultPreparedStatement.java b/jOOQ/src/main/java/org/jooq/tools/jdbc/DefaultPreparedStatement.java index e6d14e5050..e6cc5c5604 100644 --- a/jOOQ/src/main/java/org/jooq/tools/jdbc/DefaultPreparedStatement.java +++ b/jOOQ/src/main/java/org/jooq/tools/jdbc/DefaultPreparedStatement.java @@ -91,7 +91,7 @@ public class DefaultPreparedStatement extends DefaultStatement implements Prepar @Override public ResultSet executeQuery() throws SQLException { - return new DefaultResultSet(getDelegatePreparedStatement().executeQuery(), this); + return wrap(getDelegatePreparedStatement().executeQuery()); } @Override diff --git a/jOOQ/src/main/java/org/jooq/tools/jdbc/DefaultStatement.java b/jOOQ/src/main/java/org/jooq/tools/jdbc/DefaultStatement.java index 7383be86d8..3d64e93ddc 100644 --- a/jOOQ/src/main/java/org/jooq/tools/jdbc/DefaultStatement.java +++ b/jOOQ/src/main/java/org/jooq/tools/jdbc/DefaultStatement.java @@ -71,6 +71,18 @@ public class DefaultStatement extends JDBC41Statement implements Statement { return delegate; } + // ------------------------------------------------------------------------ + // XXX Auxiliary methods + // ------------------------------------------------------------------------ + + protected ResultSet wrap(ResultSet wrapped) { + + // [#8993] Some JDBC drivers produce null ResultSets where they shouldn't. + // This method allows for passing along this null result value + // rather than wrapping it, leading to unrelated NPEs later. + return wrapped == null ? null : new DefaultResultSet(wrapped, this); + } + // ------------------------------------------------------------------------ // XXX Executing the statement // ------------------------------------------------------------------------ @@ -102,7 +114,7 @@ public class DefaultStatement extends JDBC41Statement implements Statement { @Override public ResultSet executeQuery(String sql) throws SQLException { - return new DefaultResultSet(getDelegateStatement().executeQuery(sql), this); + return wrap(getDelegateStatement().executeQuery(sql)); } @Override @@ -201,7 +213,7 @@ public class DefaultStatement extends JDBC41Statement implements Statement { @Override public ResultSet getResultSet() throws SQLException { - return new DefaultResultSet(getDelegateStatement().getResultSet(), this); + return wrap(getDelegateStatement().getResultSet()); } @Override @@ -266,7 +278,7 @@ public class DefaultStatement extends JDBC41Statement implements Statement { @Override public ResultSet getGeneratedKeys() throws SQLException { - return new DefaultResultSet(getDelegateStatement().getGeneratedKeys(), this); + return wrap(getDelegateStatement().getGeneratedKeys()); } @Override