Daniel John Debrunner <[EMAIL PROTECTED]> writes:

> In DRDAConnThread.writeSQLCINRD() at line 4129 we have:
>
>     ResultSet rs = null;
>
>     ...
>
>     if (!stmt.needsToSendParamData)    <<< line 4129
>        rs = stmt.getResultSet();
>
>
> then later at line 4137 we access rs regardless of its setting:
>
>    ResultSetMetaData rsmeta = rs.getMetaData();
>
> this will lead to an NPE if stmt.needsToSendParamData was true.
>
> Any ideas on what is going on here? Should the test of
> needsToSendParamData be removed?

I think the test is there to ensure that we don't send the result set
until all out parameters (for callable statements) have been sent. The
only place writeSQLCINRD() is called, stmt.finishParams() is called
first, so needsToSendParamData is always false when writeSQLCINRD() is
called.

Since the intention seems to be that !needsToSendParamData is a
precondition for writeSQLCINRD(), I think it would be fine to replace
the test with an assert.

-- 
Knut Anders

Reply via email to