Internal Error: Overflow Exception trying to bind NaN And java.lang.NullPointerException When Using NaN in JDBC 11.2 (Doc ID 1477336.1)

Last updated on MARCH 08, 2017

Applies to:

JDBC - Version 11.2.0.3.0 and later
Information in this document applies to any platform.

Symptoms

When invoking java.sql.PreparedStatement#addBatch() method using Oracle JDBC driver 11.2.0.3 and having one of its parameters set to Nan using PreparedStatement.setObject(i, (Object) Double.NaN, java.sql.Types.DOUBLE), the setObject() method throws SQLException:

Internal Error: Overflow Exception trying to bind NaN [java.sql.BatchUpdateException]

This then leaves the connection in a strange state, such that subsequent use causes the NullPointerException.

Here is an example code with which the same errors can be reproduced:

 
And this is the error produced:

java.sql.SQLException: Internal Error: Overflow Exception trying to bind NaN
at oracle.jdbc.driver.DoubleBinder.bind(OraclePreparedStatement.java:17068)
at oracle.jdbc.driver.OraclePreparedStatement.setupBindBuffers(OraclePreparedStatement.java:3137)
at oracle.jdbc.driver.OraclePreparedStatement.processCompletedBindRow(OraclePreparedStatement.java:2355)
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3571)
at oracle.jdbc.driver.OraclePreparedStatement.execute(OraclePreparedStatement.java:3677)
at oracle.jdbc.driver.OraclePreparedStatementWrapper.execute(OraclePreparedStatementWrapper.java:1374)
at testcase.TestOracleNan.makeTest(TestOracleNan.java:40)
at testcase.TestOracleNan.main(TestOracleNan.java:14)
java.lang.NullPointerException
at oracle.jdbc.driver.OraclePreparedStatement.processCompletedBindRow(OraclePreparedStatement.java:1885)
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3571)
at oracle.jdbc.driver.OraclePreparedStatement.execute(OraclePreparedStatement.java:3677)
at oracle.jdbc.driver.OraclePreparedStatementWrapper.execute(OraclePreparedStatementWrapper.java:1374)
at testcase.TestOracleNan.makeTest(TestOracleNan.java:50)
at testcase.TestOracleNan.main(TestOracleNan.java:14)


Cause

Sign In with your My Oracle Support account

Don't have a My Oracle Support account? Click to get started

My Oracle Support provides customers with access to over a
Million Knowledge Articles and hundreds of Community platforms