JIRA

  • Log In Access more options
    • Online Help
    • GreenHopper Help
    • Agile Answers
    • Use Agile By Default
    • Keyboard Shortcuts
    • About JIRA
    • JIRA Credits
    • What’s New
  • Dashboards Access more options (Alt+d)
  • Projects Access more options (Alt+p)
  • Issues Access more options (Alt+i)
  • Agile Access more options (Alt+g)
  • Create Issue
  • Mule
  • MULE-761

JdbcMessageDispatcher failure when performing a query with null parameters

  • Agile Board
  • More Actions
  • Views
    • XML
    • Word
    • Printable

Details

  • Type: Bug Bug
  • Status: Closed Closed
  • Priority: Major Major
  • Resolution: Fixed
  • Affects Version/s: None
  • Fix Version/s: 1.3.2
  • Component/s: Transport: JDBC
  • Labels:
    None
  • Environment:

    N/A

  • Log Output:
    Hide
     java.sql.SQLException: Invalid column type Query: INSERT INTO FPA.ESPECIES (rest of the query here)...

          at org.apache.commons.dbutils.QueryRunner.rethrow(QueryRunner.java:330)

          at org.apache.commons.dbutils.QueryRunner.update(QueryRunner.java:399)

          at org.mule.providers.jdbc.JdbcMessageDispatcher.doDispatch(JdbcMessageDispatcher.java:98)

          at com.lumina.integration.mule.providers.jdbc.JdbcMessageDispatcher.doSend(JdbcMessageDispatcher.java:61)

          at org.mule.providers.AbstractMessageDispatcher.send(AbstractMessageDispatcher.java:196)
    Show
     java.sql.SQLException: Invalid column type Query: INSERT INTO FPA.ESPECIES (rest of the query here)...       at org.apache.commons.dbutils.QueryRunner.rethrow(QueryRunner.java:330)       at org.apache.commons.dbutils.QueryRunner.update(QueryRunner.java:399)       at org.mule.providers.jdbc.JdbcMessageDispatcher.doDispatch(JdbcMessageDispatcher.java:98)       at com.lumina.integration.mule.providers.jdbc.JdbcMessageDispatcher.doSend(JdbcMessageDispatcher.java:61)       at org.mule.providers.AbstractMessageDispatcher.send(AbstractMessageDispatcher.java:196)
  • Similar Issues:
    None

Description

I'm trying to perform an insert on an Oracle Database. The problem I have is with null parameters to be passed to the statement.

The jdbc dispatcher performs a:

int nbRows = new QueryRunner().update(con, writeStmt, paramValues);

Looking at the QueryRunner code I can see that the update method invokes the fillStatement operation:

protected void fillStatement(PreparedStatement stmt, Object[] params) throws SQLException {

if (params == null) { return; }

for (int i = 0; i < params.length; i++) {

if (params[i] != null) { stmt.setObject(i + 1, params[i]); } else { stmt.setNull(i + 1, Types.OTHER); }

}

}

When a null value is found, the stmt.setNull(i + 1, Types.OTHER); is called and the following exception is thrown:

java.sql.SQLException: Invalid column type Query: INSERT INTO FPA.ESPECIES (rest of the query here)...

at org.apache.commons.dbutils.QueryRunner.rethrow(QueryRunner.java:330)

at org.apache.commons.dbutils.QueryRunner.update(QueryRunner.java:399)

at org.mule.providers.jdbc.JdbcMessageDispatcher.doDispatch(JdbcMessageDispatcher.java:98)

at com.lumina.integration.mule.providers.jdbc.JdbcMessageDispatcher.doSend(JdbcMessageDispatcher.java:61)

at org.mule.providers.AbstractMessageDispatcher.send(AbstractMessageDispatcher.java:196)

Apparently the error is because of the Types.OTHER sql type. I know that this is an issue involving Jakarta dbutils package but maybe someone has already got this problem and found a workaround to this.

At the Jakarta mailing list a workaround is mentioned by subclassing the QueryRunner class. In order to do that, I'll need to subclass the JDBC provider completely (the dispatcher and factory at least). Perhaps a custom QueryRunner could be injected to the JdbcMessageDispatcher in a future version.

Regards,

Juan Manuel

Issue Links

relates to

Improvement - An improvement or enhancement to an existing feature or task. MULE-491 Improve JdbcConnector to delegate calls to the ORM layer

  • Minor - Minor loss of function, or other problem where easy workaround is present.
  • Closed - The issue is considered finished, the resolution is correct. Issues which are not closed can be reopened.

Task - A task that needs to be done. MULE-1244 Upgrade to commons-dbutils-1.1

  • Minor - Minor loss of function, or other problem where easy workaround is present.
  • Closed - The issue is considered finished, the resolution is correct. Issues which are not closed can be reopened.

Activity

  • All
  • Comments
  • Work Log
  • History
  • Activity
  • Transitions
  • Commits
  • Source
  • Builds
No work has yet been logged on this issue.

People

  • Assignee:
    Alan Cassar
    Reporter:
    Juan Manuel Sanmarco
Vote (0)
Watch (0)

Dates

  • Created:
    12/Apr/06 10:37 AM
    Updated:
    23/Jan/07 04:42 AM
    Resolved:
    22/Nov/06 07:27 AM

Agile

  • View on Board
  • Atlassian JIRA (v5.0.7#734-sha1:8ad78a6)
  • Report a problem
  • Powered by a free Atlassian JIRA open source license for MuleForge. Try JIRA - bug tracking software for your team.