camel-issues mailing list archives

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


Willem Jiang updated CAMEL-7803:
    Fix Version/s: 2.15.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