openjpa.jdbc.Schema property set causes wrong SQL queries when reading 
OPENJPA_SEQUENCE_TABLE
---------------------------------------------------------------------------------------------

                 Key: OPENJPA-493
                 URL: https://issues.apache.org/jira/browse/OPENJPA-493
             Project: OpenJPA
          Issue Type: Bug
          Components: jdbc
    Affects Versions: 1.0.1, 1.0.0
         Environment: Windows XP, Java 5.0 IBM.
            Reporter: Przemyslaw Koprowski


When openjpa.jdbc.Schema is defined inserting object into the database causes 
exception because of wrong SQL query generation.

In the sample openjpa.jdbc.Schema="KB", generates  SQL: SELECT SEQUENCE_VALUE 
FROM KB.KB.OPENJPA_SEQUENCE_TABLE WHERE ID = ? FOR UPDATE WITH RR.

This problem doesn't occur in version 0.9.7.

Trace:
<openjpa-1.0.1-r420667:592145 fatal store error> 
org.apache.openjpa.persistence.RollbackException: Attempt to update the 
sequence table "OPENJPA_SEQUENCE_TABLE" failed.  The sequence table is 
typically created when you run the mappingtool's refresh action on any 
datastore identity class. If you have not run the mappingtool but want to 
create the sequence table, run:
java org.apache.openjpa.jdbc.kernel.TableJDBCSeq -action add
        at 
org.apache.openjpa.persistence.EntityManagerImpl.commit(EntityManagerImpl.java:419)
        at TestCase.testL1ProductEasier(TestCase.java:30)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:615)
        at 
org.junit.internal.runners.TestMethodRunner.executeMethodBody(TestMethodRunner.java:99)
        at 
org.junit.internal.runners.TestMethodRunner.runUnprotected(TestMethodRunner.java:81)
        at 
org.junit.internal.runners.BeforeAndAfterRunner.runProtected(BeforeAndAfterRunner.java:34)
        at 
org.junit.internal.runners.TestMethodRunner.runMethod(TestMethodRunner.java:75)
        at 
org.junit.internal.runners.TestMethodRunner.run(TestMethodRunner.java:45)
        at 
org.junit.internal.runners.TestClassMethodsRunner.invokeTestMethod(TestClassMethodsRunner.java:66)
        at 
org.junit.internal.runners.TestClassMethodsRunner.run(TestClassMethodsRunner.java:35)
        at 
org.junit.internal.runners.TestClassRunner$1.runUnprotected(TestClassRunner.java:42)
        at 
org.junit.internal.runners.BeforeAndAfterRunner.runProtected(BeforeAndAfterRunner.java:34)
        at 
org.junit.internal.runners.TestClassRunner.run(TestClassRunner.java:52)
        at 
org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:38)
        at 
org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
        at 
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
        at 
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
        at 
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
        at 
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
Caused by: <openjpa-1.0.1-r420667:592145 nonfatal general error> 
org.apache.openjpa.persistence.PersistenceException: Attempt to update the 
sequence table "OPENJPA_SEQUENCE_TABLE" failed.  The sequence table is 
typically created when you run the mappingtool's refresh action on any 
datastore identity class. If you have not run the mappingtool but want to 
create the sequence table, run:
java org.apache.openjpa.jdbc.kernel.TableJDBCSeq -action add
        at 
org.apache.openjpa.jdbc.sql.DBDictionary.newStoreException(DBDictionary.java:3938)
        at 
org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:97)
        at 
org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:75)
        at 
org.apache.openjpa.jdbc.kernel.TableJDBCSeq.allocateSequence(TableJDBCSeq.java:371)
        at 
org.apache.openjpa.jdbc.kernel.TableJDBCSeq.nextInternal(TableJDBCSeq.java:266)
        at 
org.apache.openjpa.jdbc.kernel.AbstractJDBCSeq.next(AbstractJDBCSeq.java:60)
        at org.apache.openjpa.util.ImplHelper.generateValue(ImplHelper.java:160)
        at 
org.apache.openjpa.util.ImplHelper.generateFieldValue(ImplHelper.java:144)
        at 
org.apache.openjpa.jdbc.kernel.JDBCStoreManager.assignField(JDBCStoreManager.java:557)
        at 
org.apache.openjpa.util.ApplicationIds.assign(ApplicationIds.java:450)
        at 
org.apache.openjpa.util.ApplicationIds.assign(ApplicationIds.java:426)
        at 
org.apache.openjpa.jdbc.kernel.JDBCStoreManager.assignObjectId(JDBCStoreManager.java:541)
        at 
org.apache.openjpa.kernel.DelegatingStoreManager.assignObjectId(DelegatingStoreManager.java:134)
        at 
org.apache.openjpa.kernel.StateManagerImpl.assignObjectId(StateManagerImpl.java:501)
        at 
org.apache.openjpa.kernel.StateManagerImpl.preFlush(StateManagerImpl.java:2770)
        at org.apache.openjpa.kernel.PNewState.beforeFlush(PNewState.java:39)
        at 
org.apache.openjpa.kernel.StateManagerImpl.beforeFlush(StateManagerImpl.java:940)
        at org.apache.openjpa.kernel.BrokerImpl.flush(BrokerImpl.java:1892)
        at org.apache.openjpa.kernel.BrokerImpl.flushSafe(BrokerImpl.java:1852)
        at 
org.apache.openjpa.kernel.BrokerImpl.beforeCompletion(BrokerImpl.java:1770)
        at 
org.apache.openjpa.kernel.LocalManagedRuntime.commit(LocalManagedRuntime.java:81)
        at org.apache.openjpa.kernel.BrokerImpl.commit(BrokerImpl.java:1292)
        at 
org.apache.openjpa.kernel.DelegatingBroker.commit(DelegatingBroker.java:861)
        at 
org.apache.openjpa.persistence.EntityManagerImpl.commit(EntityManagerImpl.java:408)
        ... 21 more
Caused by: org.apache.openjpa.lib.jdbc.ReportingSQLException: Syntax error: 
Encountered "." at line 1, column 33. {SELECT SEQUENCE_VALUE FROM 
KB.KB.OPENJPA_SEQUENCE_TABLE WHERE ID = ? FOR UPDATE WITH RR} [code=20000, 
state=42X01]
        at 
org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator.wrap(LoggingConnectionDecorator.java:201)
        at 
org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator.access$000(LoggingConnectionDecorator.java:57)
        at 
org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator$LoggingConnection.prepareStatement(LoggingConnectionDecorator.java:228)
        at 
org.apache.openjpa.lib.jdbc.DelegatingConnection.prepareStatement(DelegatingConnection.java:163)
        at 
org.apache.openjpa.lib.jdbc.ConfiguringConnectionDecorator$ConfiguringConnection.prepareStatement(ConfiguringConnectionDecorator.java:140)
        at 
org.apache.openjpa.lib.jdbc.DelegatingConnection.prepareStatement(DelegatingConnection.java:152)
        at 
org.apache.openjpa.jdbc.sql.SQLBuffer.prepareStatement(SQLBuffer.java:475)
        at 
org.apache.openjpa.jdbc.sql.SQLBuffer.prepareStatement(SQLBuffer.java:455)
        at 
org.apache.openjpa.jdbc.sql.SQLBuffer.prepareStatement(SQLBuffer.java:444)
        at 
org.apache.openjpa.jdbc.kernel.TableJDBCSeq.getSequence(TableJDBCSeq.java:467)
        at 
org.apache.openjpa.jdbc.kernel.TableJDBCSeq.setSequence(TableJDBCSeq.java:511)
        at 
org.apache.openjpa.jdbc.kernel.TableJDBCSeq.allocateSequence(TableJDBCSeq.java:368)
        ... 41 more


-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to