Details

    • Type: Improvement Improvement
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 1.3.0, 2.0.0-M2
    • Component/s: sql
    • Labels:
      None
    • Environment:
      Firebird versions 1.5.5/Windows
       and 2.1.1/Linux, JayBird 2.1.6 JDBC driver

      Description

      The new dictionary makes OpenJPA more up-to-date with the recent Firebird enhancements.

      1. OPENJPA-983.patch
        25 kB
        Milosz Tylenda

        Issue Links

          Activity

          Donald Woods made changes -
          Status Resolved [ 5 ] Closed [ 6 ]
          Milosz Tylenda made changes -
          Status Open [ 1 ] Resolved [ 5 ]
          Fix Version/s 1.3.0 [ 12313326 ]
          Fix Version/s 2.0.0 [ 12313483 ]
          Resolution Fixed [ 1 ]
          Hide
          Milosz Tylenda added a comment -

          The patch applied to trunk and 1.3.x branch. The 1.3.x version needed a slight modification related to how we determine exception type (DBDictionary.narrow method).

          Show
          Milosz Tylenda added a comment - The patch applied to trunk and 1.3.x branch. The 1.3.x version needed a slight modification related to how we determine exception type (DBDictionary.narrow method).
          Milosz Tylenda made changes -
          Link This issue incorporates OPENJPA-775 [ OPENJPA-775 ]
          Milosz Tylenda made changes -
          Link This issue incorporates OPENJPA-776 [ OPENJPA-776 ]
          Milosz Tylenda made changes -
          Field Original Value New Value
          Attachment OPENJPA-983.patch [ 12402421 ]
          Hide
          Milosz Tylenda added a comment - - edited

          Some info and main features:

          1.I have focused on Firebird versions 1.5, 2.0 and 2.1. 2.1 is the latest version and 1.0 is no longer
          supported by Firebird developers. I tested the dictionary with Firebird versions 1.5.5/Windows
          and 2.1.1/Linux, JayBird 2.1.6 JDBC driver.

          2.With the new dictionary the number of failed tests drops down from over 400 to
          around 300. Still far from sliced bread but many errors come from using
          reserved words in table and column names.

          3.The dictionary no longer extends InterbaseDictionary, the databases now differ too
          much to benefit from extension.

          4.The Firebird documentation is available at their site [1]. The most useful docs in this context are
          Firebird 2.1 Release Notes, Firebird 2.0 Language Reference Update and
          InterBase 6.0 Language Reference.

          5.There are three properties users can set:

          • firebirdVersion to force Firebird version,
          • rangeSyntax to force the way queries involving range are handled (two syntaxes are possible),
          • indexedVarcharMaxSizeFB15 to control the VARCHAR size when it is an
            indexed column (version 1.5 has strong limits here).
            If not set, these properties will be set by auto-detection.

          6.When connected to Firebird 1.5, the dictionary assumes InterBase UDFs are available
          (can be made available by running the ib_udf.sql script). They are needed
          by some of JPQL functions.

          7.I couldn't make indexOf method (LOCATE in JPQL) work. There is no suitable
          function to use in versions 1.5 and 2.0. 2.1 has the POSITION function, which
          seemed promising, but OpenJPA modifies the parameters by adding some
          expressions (see JPQLExpressionBuilder) which Firebird does not accept here.

          [1] http://www.firebirdsql.org/index.php?op=doc

          Show
          Milosz Tylenda added a comment - - edited Some info and main features: 1.I have focused on Firebird versions 1.5, 2.0 and 2.1. 2.1 is the latest version and 1.0 is no longer supported by Firebird developers. I tested the dictionary with Firebird versions 1.5.5/Windows and 2.1.1/Linux, JayBird 2.1.6 JDBC driver. 2.With the new dictionary the number of failed tests drops down from over 400 to around 300. Still far from sliced bread but many errors come from using reserved words in table and column names. 3.The dictionary no longer extends InterbaseDictionary, the databases now differ too much to benefit from extension. 4.The Firebird documentation is available at their site [1] . The most useful docs in this context are Firebird 2.1 Release Notes, Firebird 2.0 Language Reference Update and InterBase 6.0 Language Reference. 5.There are three properties users can set: firebirdVersion to force Firebird version, rangeSyntax to force the way queries involving range are handled (two syntaxes are possible), indexedVarcharMaxSizeFB15 to control the VARCHAR size when it is an indexed column (version 1.5 has strong limits here). If not set, these properties will be set by auto-detection. 6.When connected to Firebird 1.5, the dictionary assumes InterBase UDFs are available (can be made available by running the ib_udf.sql script). They are needed by some of JPQL functions. 7.I couldn't make indexOf method (LOCATE in JPQL) work. There is no suitable function to use in versions 1.5 and 2.0. 2.1 has the POSITION function, which seemed promising, but OpenJPA modifies the parameters by adding some expressions (see JPQLExpressionBuilder) which Firebird does not accept here. [1] http://www.firebirdsql.org/index.php?op=doc
          Milosz Tylenda created issue -

            People

            • Assignee:
              Milosz Tylenda
              Reporter:
              Milosz Tylenda
            • Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:

                Development