[
https://issues.apache.org/jira/browse/OPENJPA-320?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Kevin Sutter closed OPENJPA-320.
--------------------------------
> Do not use System Tables (SYS*) with DB2
> ----------------------------------------
>
> Key: OPENJPA-320
> URL: https://issues.apache.org/jira/browse/OPENJPA-320
> Project: OpenJPA
> Issue Type: Bug
> Components: jdbc
> Affects Versions: 0.9.7
> Reporter: Kevin Sutter
> Assignee: Kevin Sutter
> Fix For: 1.0.0
>
>
> DB2's system tables (schemas beginning with SYS*) are causing problems with
> the JPA CTS bucket, if we're trying to use the SynchronizeMappings feature.
> From our dev mailing list
> (http://www.nabble.com/Null-schema-name-when-generating-tables--tf4280146.html):
> ======================================================
> We're running the CTS TCK against DB2 and we've hit a snag with the
> SynchronizeMappings feature (I know this is not a required aspect of the TCK,
> but that's what we have been using to create the tables for the testing).
> One of the tests in the TCK requires a table called DATATYPES. The problem
> is that DB2 has a system table by this name, so when OpenJPA attempts to look
> up any existing table information, we accidentally find the system table
> (SYSCAT) instead of the user's table (cts1). The following trace snippet
> shows the problem.
> 1000 JPATCK TRACE [main] openjpa.jdbc.Schema - Reading table information
> for schema name "null", table name "DATATYPES".
> 1000 JPATCK TRACE [main] openjpa.jdbc.JDBC - <t 16515324, conn 1314410072>
> [0 ms] rollback
> 1000 JPATCK TRACE [main] openjpa.jdbc.JDBC - <t 16515324, conn 1314410072>
> getColumns: null, null, DATATYPES, null
> 1500 JPATCK TRACE [main] openjpa.jdbc.Schema - Reading column information
> for table " SYSCAT.DATATYPES".
> Of course, this goes on thinking that we have found an appropriate DATATYPES
> table definition, but later when we attempt to alter it, we get an error:
> 1891 JPATCK TRACE [main] openjpa.jdbc.SQL - <t 16515324, conn 477240434>
> executing stmnt 854733554 ALTER TABLE DATATYPES ADD id INTEGER
> 1891 JPATCK TRACE [main] openjpa.jdbc.SQL - <t 16515324, conn 477240434>
> [0 ms] spent
> 1891 JPATCK TRACE [main] openjpa.jdbc.JDBC - <t 16515324, conn 477240434>
> [0 ms] close
> <openjpa-0.0.0-r420667:563705M nonfatal general error>
> org.apache.openjpa.persistence.PersistenceException: DB2 SQL error: SQLCODE:
> -204, SQLSTATE: 42704, SQLERRMC: CTS1.DATATYPES {stmnt 854733554 ALTER TABLE
> DATATYPES ADD id INTEGER} [code=-204, state=42704]
> ======================================================
> By examining and experimenting with OpenJPA, it looks like we have a
> mechanism already in place to skip over these type of system tables. By
> setting the variable systemSchemas with the names of these DB2-specific
> schema names, then we can bypass these tables and avoid the problem.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.