camel-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Willem Jiang (JIRA)" <>
Subject [jira] [Commented] (CAMEL-7803) DefaultJdbcPrepareStatementStrategy Iterator fails on null value inserts
Date Tue, 11 Nov 2014 01:29:33 GMT


Willem Jiang commented on CAMEL-7803:

As we are target Camel 2.14.1 release to the end of this year, I suggest you to use the Camel
2.13.3 if you are not using any new Camel components of 2.14.0.

> DefaultJdbcPrepareStatementStrategy Iterator fails on null value inserts
> ------------------------------------------------------------------------
>                 Key: CAMEL-7803
>                 URL:
>             Project: Camel
>          Issue Type: Bug
>          Components: camel-jdbc
>    Affects Versions: 2.13.2
>            Reporter: Nathan Wray
>            Assignee: Willem Jiang
>             Fix For: 2.12.5, 2.13.3, 2.14.1, 2.15.0
>         Attachments: 7803-patch.txt
> The iterator returned by createPopulateIterator in DefaultJdbcPrepareStatementStrategy
incorrectly uses a next value of "null" to identify when it has run out of parameters.  This
fails when the parameter map intentionally contains a name with a null value, which is the
case when some columns in an insert should be set to null.  The attached pull request adds
an explicit preFetch flag and relies on the done flag, avoiding the incorrect overloading
of (next==null) to indicate completion.
> The iterator reports "hasNext() == false" when it encounters a map value of null.  This
happens when using the map header JDBC_PARAMETERS = "CamelJdbcParameters" to insert null values
with a prepared statement.  The Iterator ends prematurely when it reaches a parameter name
with a null value.  
> For example, passing in a map where the 3rd parameter of 19 has a value of null causes
the following exception to be thrown:
> java.sql.SQLException: Number of parameters mismatch. Expected: 19, was:2
>         at org.apache.camel.component.jdbc.DefaultJdbcPrepareStatementStrategy.populateStatement(
>         at org.apache.camel.component.jdbc.JdbcProducer.doCreateAndExecuteSqlStatementWithHeaders(
>         at org.apache.camel.component.jdbc.JdbcProducer.createAndExecuteSqlStatement(
>         at org.apache.camel.component.jdbc.JdbcProducer.processingSqlBySettingAutoCommit(

This message was sent by Atlassian JIRA

View raw message