OpenJPA
  1. OpenJPA
  2. OPENJPA-735

Provide dictionary support for SolidDB

    Details

    • Type: Improvement Improvement
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: 1.3.0
    • Fix Version/s: 2.1.0
    • Component/s: jdbc
    • Labels:
      None

      Description

      SolidDB (http://www-01.ibm.com/software/data/soliddb/) is an in-memory relational database from IBM. Supposedly, it's JDBC compliant and, thus, shouldn't be a major effort to create a dictionary.

      Besides drumming up JPA support for existing SolidDB customers, this database may also prove fruitful from our own junit regression testing. Using an in-memory database may help speed up our junit bucket over the current usage of Derby.

        Activity

        Hide
        Fay Wang added a comment -

        The one remaining test case error is TestForeignKeyCountViolation due to bugs in SolidDB jdbc driver in the implementation of DatabaseMetaData.getImportedKey(). The TestTimeoutException is also disabled for SolidDB due to inconsistent/unpredictable exceptions (Communication link error because database file is locked, or Query timeout error) thrown from the server when the server can not obtain the lock.

        Show
        Fay Wang added a comment - The one remaining test case error is TestForeignKeyCountViolation due to bugs in SolidDB jdbc driver in the implementation of DatabaseMetaData.getImportedKey(). The TestTimeoutException is also disabled for SolidDB due to inconsistent/unpredictable exceptions (Communication link error because database file is locked, or Query timeout error) thrown from the server when the server can not obtain the lock.
        Hide
        Jeremy Bauer added a comment -

        I committed a simple fix under rev 986166 that allows for case insensitive delimited compares for DB's that do not support mixed case delimited identifiers. This prevents two equivalent column names from being added to the schema by the mapping tool - one from DB metadata, one from entity metadata. Tested with SolidDB, Derby, MySQL, PostgreSQL, Oracle, & MSSQL 2008 and it looks good (so far).

        Show
        Jeremy Bauer added a comment - I committed a simple fix under rev 986166 that allows for case insensitive delimited compares for DB's that do not support mixed case delimited identifiers. This prevents two equivalent column names from being added to the schema by the mapping tool - one from DB metadata, one from entity metadata. Tested with SolidDB, Derby, MySQL, PostgreSQL, Oracle, & MSSQL 2008 and it looks good (so far).
        Hide
        Jeremy Bauer added a comment -

        Yep. Looks like a bug. Please hold off on committing the patch. IIRC, The default delimitedCase for MySQL on Windows is SCHEMA_CASE_LOWER and that works OK. There may just be a simple bug in the normalizer logic preventing db's with SCHEMA_CASE_UPPER from working properly. I'd rather not introduce the dictionary into DBIdentifier unless absolutely necessary. I'll take a look and post what I find...

        Show
        Jeremy Bauer added a comment - Yep. Looks like a bug. Please hold off on committing the patch. IIRC, The default delimitedCase for MySQL on Windows is SCHEMA_CASE_LOWER and that works OK. There may just be a simple bug in the normalizer logic preventing db's with SCHEMA_CASE_UPPER from working properly. I'd rather not introduce the dictionary into DBIdentifier unless absolutely necessary. I'll take a look and post what I find...
        Hide
        Fay Wang added a comment -

        The test on SolidDB expose a bug in Delimiter identifier. For SolidDB, the delimitedCase is SCHEMA_CASE_UPPER. However, the static method DBIdentifier.toUpper(DBIdentifier) assumes the case is preserved and does not convert the column name to uppercase based on the back-end, resulting in extra column being added to the table.

        Show
        Fay Wang added a comment - The test on SolidDB expose a bug in Delimiter identifier. For SolidDB, the delimitedCase is SCHEMA_CASE_UPPER. However, the static method DBIdentifier.toUpper(DBIdentifier) assumes the case is preserved and does not convert the column name to uppercase based on the back-end, resulting in extra column being added to the table.

          People

          • Assignee:
            Fay Wang
            Reporter:
            Kevin Sutter
          • Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development