OpenJPA
  1. OpenJPA
  2. OPENJPA-774

Executing native queries with Firebird

    Details

    • Type: Bug Bug
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: 1.1.0, 1.2.0, 1.3.0, 2.0.0-M2
    • Fix Version/s: 1.3.0, 2.0.0-beta3
    • Component/s: sql
    • Labels:
      None
    • Environment:
      Tomcat 5.5, OpenJPA 1.1.0, Firebird 2.1

      Description

      Native queries cannot be executed with Firebird database. The following exception occur:
      DEBUG - Log4JLogFactory$LogAdapter.trace(72) | Executing query: [insert into ANAGRAFICHE (COD_TITOLARE, NOME, CODICE_FISCALE, DATA_NASCITA) values (?, ?, ?, ?)] with parameters:

      {2=xz0FEdrz92sd, 0=43, 3=Tue Aug 30 00:00:00 UTC 1644, 1=B95JHSkDV}

      WARN - GeronimoConnectionEventListener.connectionErrorOccurred(88) | connectionErrorOccurred called with null
      org.firebirdsql.jdbc.FBSQLException: You cannot set value of an non-existing parameter.
      at org.firebirdsql.jdbc.FBProcedureCall$NullParam.setValue(FBProcedureCall.java:424)
      at org.firebirdsql.jdbc.AbstractCallableStatement.setLong(AbstractCallableStatement.java:1094)
      at org.tranql.connector.jdbc.PreparedStatementHandle.setLong(PreparedStatementHandle.java:247)
      at org.apache.ode.utils.LoggingStatementWrapper.setLong(LoggingStatementWrapper.java:495)
      at org.apache.openjpa.lib.jdbc.DelegatingCallableStatement.setLong(DelegatingCallableStatement.java:299)
      at org.apache.openjpa.jdbc.sql.DBDictionary.setLong(DBDictionary.java:998)
      at org.apache.openjpa.jdbc.sql.DBDictionary.setUnknown(DBDictionary.java:1283)
      at org.apache.openjpa.jdbc.sql.SQLBuffer.setParameters(SQLBuffer.java:568)
      at org.apache.openjpa.jdbc.kernel.SQLStoreQuery$SQLExecutor.executeUpdate(SQLStoreQuery.java:231)
      at org.apache.openjpa.kernel.QueryImpl.update(QueryImpl.java:1038)
      at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:808)
      at org.apache.openjpa.kernel.QueryImpl.updateAll(QueryImpl.java:883)
      at org.apache.openjpa.kernel.DelegatingQuery.updateAll(DelegatingQuery.java:573)
      at org.apache.openjpa.persistence.QueryImpl.executeUpdate(QueryImpl.java:319)

      Exception is thrown because for "insert" statement prepareCall is executed instead of prepareStatement. For other databases it is the same, but Firebird's FBProcedureCall is not the same as FBPreparedStatement. Patch for issue follows.

      1. OPENJPA-774.patch
        0.7 kB
        Alexey Ousov

        Issue Links

          Activity

          Alexey Ousov created issue -
          Alexey Ousov made changes -
          Field Original Value New Value
          Attachment OPENJPA-774.patch [ 12394214 ]
          Kevin Sutter made changes -
          Assignee Kevin Sutter [ kwsutter ]
          Kevin Sutter made changes -
          Affects Version/s 1.3.0 [ 12313326 ]
          Affects Version/s 2.0.0 [ 12313483 ]
          Milosz Tylenda made changes -
          Link This issue is related to OPENJPA-1197 [ OPENJPA-1197 ]
          Milosz Tylenda made changes -
          Fix Version/s 1.3.0 [ 12313326 ]
          Fix Version/s 2.0.0 [ 12314019 ]
          Kevin Sutter made changes -
          Fix Version/s 2.0.0-beta2 [ 12314802 ]
          Fix Version/s 2.0.0-beta [ 12314149 ]
          Kevin Sutter made changes -
          Status Open [ 1 ] Resolved [ 5 ]
          Resolution Fixed [ 1 ]
          Donald Woods made changes -
          Status Resolved [ 5 ] Closed [ 6 ]
          Donald Woods made changes -
          Fix Version/s 2.0.0-beta2 [ 12314802 ]
          Fix Version/s 2.0.0-beta3 [ 12314857 ]
          Fix Version/s 2.0.0 [ 12314019 ]
          Fix Version/s 2.0.0-beta [ 12314149 ]

            People

            • Assignee:
              Kevin Sutter
              Reporter:
              Alexey Ousov
            • Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:

                Development