Camel
  1. Camel
  2. CAMEL-7251

SqlProducer call twice the getResultSet on the PreparedStatement => This cause issue with HSQLDB (NPE)

    Details

    • Type: Bug Bug
    • Status: Resolved
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: 2.12.3
    • Fix Version/s: 2.12.4, 2.13.0
    • Component/s: camel-sql
    • Labels:
      None
    • Estimated Complexity:
      Unknown

      Description

      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

        Activity

        No work has yet been logged on this issue.

          People

          • Assignee:
            Willem Jiang
            Reporter:
            Mathieu Boretti
          • Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development