Mathieu Boretti created CAMEL-7251:
--------------------------------------

             Summary: SqlProducer call twice the getResultSet on the 
PreparedStatement => This cause issue with HSQLDB (NPE)
                 Key: CAMEL-7251
                 URL: https://issues.apache.org/jira/browse/CAMEL-7251
             Project: Camel
          Issue Type: Bug
          Components: camel-sql
    Affects Versions: 2.12.3
            Reporter: Mathieu Boretti


The SqlProducer class use the following lines of code :

ResultSet rs = ps.getResultSet();
                        SqlOutputType outputType = 
getEndpoint().getOutputType();
                        log.trace("Got result list from query: {}, 
outputType={}", rs, outputType);
                        if (outputType == SqlOutputType.SelectList) {
                            List<Map<String, Object>> data = 
getEndpoint().queryForList(ps.getResultSet());
                           .................................
                        } else if (outputType == SqlOutputType.SelectOne) {
                            Object data = 
getEndpoint().queryForObject(ps.getResultSet());
                            .................................
                        } else {
                            throw new IllegalArgumentException("Invalid 
outputType=" + outputType);
                        }

The problem is that the ResultSet is retrieved at the start, and then only used 
for the log. Later, when the result set is required, a new call to getResultSet 
is done. It is an issue with HSQL DB (tested with version 2.3.0 and 2.3.2 of 
HSQL DB), which in this case return null for the second call.

As the ResultSet is already available in a variable "rs", I would recommand to 
use this variable to replace the two last call to ps.getResultSet().

Thanks



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)

Reply via email to