You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@openjpa.apache.org by Michael Szalay <mi...@basis06.ch> on 2012/12/11 14:25:07 UTC

Cubrid DB Dictionary?

Hi all

has anyone managed to use OpenJPA with the Cubrid database?
I tried it using the default Db Dictionary but I get the following error

Caused by: org.apache.openjpa.lib.jdbc.ReportingSQLException: Syntax: syntax error, unexpected $end, expecting OF  {SELECT SEQUENCE_VALUE FROM OPENJPA_SEQUENCE_TABLE WHERE ID = ? FOR UPDATE} [code=-493, state=null]
        at org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator.wrap(LoggingConnectionDecorator.java:219)
        at org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator.wrap(LoggingConnectionDecorator.java:199)
        at org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator.access$000(LoggingConnectionDecorator.java:59)
        at org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator$LoggingConnection.prepareStatement(LoggingConnectionDecorator.java:251)
        at org.apache.openjpa.lib.jdbc.DelegatingConnection.prepareStatement(DelegatingConnection.java:133)
        at org.apache.openjpa.lib.jdbc.ConfiguringConnectionDecorator$ConfiguringConnection.prepareStatement(ConfiguringConnectionDecorator.java:140)
        at org.apache.openjpa.lib.jdbc.DelegatingConnection.prepareStatement(DelegatingConnection.java:122)
        at org.apache.openjpa.jdbc.sql.SQLBuffer.prepareStatement(SQLBuffer.java:449)
        at org.apache.openjpa.jdbc.sql.SQLBuffer.prepareStatement(SQLBuffer.java:429)
        at org.apache.openjpa.jdbc.sql.SQLBuffer.prepareStatement(SQLBuffer.java:418)
        at org.apache.openjpa.jdbc.kernel.TableJDBCSeq.prepareStatement(TableJDBCSeq.java:807)
        at org.apache.openjpa.jdbc.kernel.TableJDBCSeq.getSequence(TableJDBCSeq.java:546)
        at org.apache.openjpa.jdbc.kernel.TableJDBCSeq.setSequence(TableJDBCSeq.java:588)
        at org.apache.openjpa.jdbc.kernel.TableJDBCSeq$AllocateSequenceRunnable.run(TableJDBCSeq.java:893)
        at org.apache.openjpa.ee.AbstractManagedRuntime.doNonTransactionalWork(AbstractManagedRuntime.java:89)
        at org.apache.openjpa.ee.AutomaticManagedRuntime.doNonTransactionalWork(AutomaticManagedRuntime.java:315)
        at org.apache.openjpa.jdbc.kernel.TableJDBCSeq.allocateSequence(TableJDBCSeq.java:445)
        at org.apache.openjpa.jdbc.kernel.TableJDBCSeq.nextInternal(TableJDBCSeq.java:300)
        at org.apache.openjpa.jdbc.kernel.AbstractJDBCSeq.next(AbstractJDBCSeq.java:60)
        ... 83 more
NestedThrowables:
cubrid.jdbc.driver.CUBRIDException: Syntax: syntax error, unexpected $end, expecting OF 
        at cubrid.jdbc.driver.CUBRIDConnection.createCUBRIDException(CUBRIDConnection.java:829)
        at cubrid.jdbc.driver.CUBRIDConnection.prepare(CUBRIDConnection.java:583)
        at cubrid.jdbc.driver.CUBRIDConnection.prepare(CUBRIDConnection.java:714)
        at cubrid.jdbc.driver.CUBRIDConnection.prepareStatement(CUBRIDConnection.java:394)
        at org.apache.openjpa.lib.jdbc.DelegatingConnection.prepareStatement(DelegatingConnection.java:135)
        at org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator$LoggingConnection.prepareStatement(LoggingConnectionDecorator.java:248)
        at org.apache.openjpa.lib.jdbc.DelegatingConnection.prepareStatement(DelegatingConnection.java:133)
        at org.apache.openjpa.lib.jdbc.ConfiguringConnectionDecorator$ConfiguringConnection.prepareStatement(ConfiguringConnectionDecorator.java:140)
        at org.apache.openjpa.lib.jdbc.DelegatingConnection.prepareStatement(DelegatingConnection.java:122)
        at org.apache.openjpa.jdbc.sql.SQLBuffer.prepareStatement(SQLBuffer.java:449)
        at org.apache.openjpa.jdbc.sql.SQLBuffer.prepareStatement(SQLBuffer.java:429)
        at org.apache.openjpa.jdbc.sql.SQLBuffer.prepareStatement(SQLBuffer.java:418)
        at org.apache.openjpa.jdbc.kernel.TableJDBCSeq.prepareStatement(TableJDBCSeq.java:807)
        at org.apache.openjpa.jdbc.kernel.TableJDBCSeq.getSequence(TableJDBCSeq.java:546)
        at org.apache.openjpa.jdbc.kernel.TableJDBCSeq.setSequence(TableJDBCSeq.java:588)
        at org.apache.openjpa.jdbc.kernel.TableJDBCSeq$AllocateSequenceRunnable.run(TableJDBCSeq.java:893)
        at org.apache.openjpa.ee.AbstractManagedRuntime.doNonTransactionalWork(AbstractManagedRuntime.java:89)
        at org.apache.openjpa.ee.AutomaticManagedRuntime.doNonTransactionalWork(AutomaticManagedRuntime.java:315)
        at org.apache.openjpa.jdbc.kernel.TableJDBCSeq.allocateSequence(TableJDBCSeq.java:445)
        at org.apache.openjpa.jdbc.kernel.TableJDBCSeq.nextInternal(TableJDBCSeq.java:300)
        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:778)
        at org.apache.openjpa.util.ApplicationIds.assign(ApplicationIds.java:493)
        at org.apache.openjpa.util.ApplicationIds.assign(ApplicationIds.java:469)
        at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.assignObjectId(JDBCStoreManager.java:762)
        at org.apache.openjpa.kernel.DelegatingStoreManager.assignObjectId(DelegatingStoreManager.java:135)
        at org.apache.openjpa.kernel.StateManagerImpl.assignObjectId(StateManagerImpl.java:600)
        at org.apache.openjpa.kernel.StateManagerImpl.preFlush(StateManagerImpl.java:3023)
        at org.apache.openjpa.kernel.PNewState.beforeFlush(PNewState.java:44)
        at org.apache.openjpa.kernel.StateManagerImpl.beforeFlush(StateManagerImpl.java:1042)
        at org.apache.openjpa.kernel.BrokerImpl.flush(BrokerImpl.java:2114)
        at org.apache.openjpa.kernel.BrokerImpl.flushSafe(BrokerImpl.java:2074)
        at org.apache.openjpa.kernel.BrokerImpl.beforeCompletion(BrokerImpl.java:1992)
        at org.apache.geronimo.transaction.manager.TransactionImpl.beforeCompletion(TransactionImpl.java:520)
        at org.apache.geronimo.transaction.manager.TransactionImpl.beforeCompletion(TransactionImpl.java:504)
        at org.apache.geronimo.transaction.manager.TransactionImpl.beforePrepare(TransactionImpl.java:407)
        at org.apache.geronimo.transaction.manager.TransactionImpl.commit(TransactionImpl.java:255)
        at org.apache.geronimo.transaction.manager.TransactionManagerImpl.commit(TransactionManagerImpl.java:252)

Anyone has a hint?

Regards Michael

Re: Cubrid DB Dictionary?

Posted by Kevin Sutter <kw...@gmail.com>.
If Cubrid doesn't support the "for update" clause, that's kind of limiting
from a locking viewpoint.  If you want to try to make more progress, you
could try using this command to tell the database dictionary that the "for
update" is not supported:

<property name="openjpa.jdbc.DBDictionary"
value="SupportsSelectForUpdate=false"/>

Eventually, if you are interested, you could define your own
"CubridDictionary" with the appropriate default settings and submit that
back to OpenJPA as a new dictionary...

Thanks,
Kevin

On Thu, Dec 20, 2012 at 2:11 AM, Michael Szalay
<mi...@basis06.ch>wrote:

> I tried without generating the schema, but with an existing database
> schema I wrote by hand.
> I did not configure anything openjpa-specific in persistence.xml, so the
> default DBDictionary is used
> (I see this in the log).
>
> I tested the same application with MySQL, that works.
>
> It seems that its just the "SELECT SEQUENCE_VALUE FROM
> OPENJPA_SEQUENCE_TABLE WHERE ID = ? FOR UPDATE"
> is the problem, as the "select for update" construct is not supported in
> cubrid.
>
> Regards Michael
>
> ----- Ursprüngliche Mail -----
> Von: "Kevin Sutter" <kw...@gmail.com>
> An: users@openjpa.apache.org
> Gesendet: Mittwoch, 19. Dezember 2012 16:48:09
> Betreff: Re: Cubrid DB Dictionary?
>
> Hi Michael,
> From what I know, Cubrid is supposed to be SQL-92 compatible and should
> work (for the most part) with the default DBDictionary.  Looking through
> their documentation, they claim to provide some additional features that
> may cause some hiccups with any JPA implementation (connection pooling,
> object id generation, etc).  But, the basic support should be very similar.
>
> What configuration are you running with in your persistence.xml?
>
> What kind of testcase(s) are you attempting?  Are you pre-defining your
> tables, or are you letting OpenJPA generate them?  Do these testcases work
> with other "supported" open-source databases like MySQL or Postgres?
>
> On the surface, supporting cubrid doesn't seem out of the question.  But, I
> don't know much about it.
>
> Kevin
>
> On Tue, Dec 11, 2012 at 7:25 AM, Michael Szalay
> <mi...@basis06.ch>wrote:
>
> > Hi all
> >
> > has anyone managed to use OpenJPA with the Cubrid database?
> > I tried it using the default Db Dictionary but I get the following error
> >
> > Caused by: org.apache.openjpa.lib.jdbc.ReportingSQLException: Syntax:
> > syntax error, unexpected $end, expecting OF  {SELECT SEQUENCE_VALUE FROM
> > OPENJPA_SEQUENCE_TABLE WHERE ID = ? FOR UPDATE} [code=-493, state=null]
> >         at
> >
> org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator.wrap(LoggingConnectionDecorator.java:219)
> >         at
> >
> org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator.wrap(LoggingConnectionDecorator.java:199)
> >         at
> >
> org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator.access$000(LoggingConnectionDecorator.java:59)
> >         at
> >
> org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator$LoggingConnection.prepareStatement(LoggingConnectionDecorator.java:251)
> >         at
> >
> org.apache.openjpa.lib.jdbc.DelegatingConnection.prepareStatement(DelegatingConnection.java:133)
> >         at
> >
> org.apache.openjpa.lib.jdbc.ConfiguringConnectionDecorator$ConfiguringConnection.prepareStatement(ConfiguringConnectionDecorator.java:140)
> >         at
> >
> org.apache.openjpa.lib.jdbc.DelegatingConnection.prepareStatement(DelegatingConnection.java:122)
> >         at
> >
> org.apache.openjpa.jdbc.sql.SQLBuffer.prepareStatement(SQLBuffer.java:449)
> >         at
> >
> org.apache.openjpa.jdbc.sql.SQLBuffer.prepareStatement(SQLBuffer.java:429)
> >         at
> >
> org.apache.openjpa.jdbc.sql.SQLBuffer.prepareStatement(SQLBuffer.java:418)
> >         at
> >
> org.apache.openjpa.jdbc.kernel.TableJDBCSeq.prepareStatement(TableJDBCSeq.java:807)
> >         at
> >
> org.apache.openjpa.jdbc.kernel.TableJDBCSeq.getSequence(TableJDBCSeq.java:546)
> >         at
> >
> org.apache.openjpa.jdbc.kernel.TableJDBCSeq.setSequence(TableJDBCSeq.java:588)
> >         at
> >
> org.apache.openjpa.jdbc.kernel.TableJDBCSeq$AllocateSequenceRunnable.run(TableJDBCSeq.java:893)
> >         at
> >
> org.apache.openjpa.ee.AbstractManagedRuntime.doNonTransactionalWork(AbstractManagedRuntime.java:89)
> >         at
> >
> org.apache.openjpa.ee.AutomaticManagedRuntime.doNonTransactionalWork(AutomaticManagedRuntime.java:315)
> >         at
> >
> org.apache.openjpa.jdbc.kernel.TableJDBCSeq.allocateSequence(TableJDBCSeq.java:445)
> >         at
> >
> org.apache.openjpa.jdbc.kernel.TableJDBCSeq.nextInternal(TableJDBCSeq.java:300)
> >         at
> >
> org.apache.openjpa.jdbc.kernel.AbstractJDBCSeq.next(AbstractJDBCSeq.java:60)
> >         ... 83 more
> > NestedThrowables:
> > cubrid.jdbc.driver.CUBRIDException: Syntax: syntax error, unexpected
> $end,
> > expecting OF
> >         at
> >
> cubrid.jdbc.driver.CUBRIDConnection.createCUBRIDException(CUBRIDConnection.java:829)
> >         at
> > cubrid.jdbc.driver.CUBRIDConnection.prepare(CUBRIDConnection.java:583)
> >         at
> > cubrid.jdbc.driver.CUBRIDConnection.prepare(CUBRIDConnection.java:714)
> >         at
> >
> cubrid.jdbc.driver.CUBRIDConnection.prepareStatement(CUBRIDConnection.java:394)
> >         at
> >
> org.apache.openjpa.lib.jdbc.DelegatingConnection.prepareStatement(DelegatingConnection.java:135)
> >         at
> >
> org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator$LoggingConnection.prepareStatement(LoggingConnectionDecorator.java:248)
> >         at
> >
> org.apache.openjpa.lib.jdbc.DelegatingConnection.prepareStatement(DelegatingConnection.java:133)
> >         at
> >
> org.apache.openjpa.lib.jdbc.ConfiguringConnectionDecorator$ConfiguringConnection.prepareStatement(ConfiguringConnectionDecorator.java:140)
> >         at
> >
> org.apache.openjpa.lib.jdbc.DelegatingConnection.prepareStatement(DelegatingConnection.java:122)
> >         at
> >
> org.apache.openjpa.jdbc.sql.SQLBuffer.prepareStatement(SQLBuffer.java:449)
> >         at
> >
> org.apache.openjpa.jdbc.sql.SQLBuffer.prepareStatement(SQLBuffer.java:429)
> >         at
> >
> org.apache.openjpa.jdbc.sql.SQLBuffer.prepareStatement(SQLBuffer.java:418)
> >         at
> >
> org.apache.openjpa.jdbc.kernel.TableJDBCSeq.prepareStatement(TableJDBCSeq.java:807)
> >         at
> >
> org.apache.openjpa.jdbc.kernel.TableJDBCSeq.getSequence(TableJDBCSeq.java:546)
> >         at
> >
> org.apache.openjpa.jdbc.kernel.TableJDBCSeq.setSequence(TableJDBCSeq.java:588)
> >         at
> >
> org.apache.openjpa.jdbc.kernel.TableJDBCSeq$AllocateSequenceRunnable.run(TableJDBCSeq.java:893)
> >         at
> >
> org.apache.openjpa.ee.AbstractManagedRuntime.doNonTransactionalWork(AbstractManagedRuntime.java:89)
> >         at
> >
> org.apache.openjpa.ee.AutomaticManagedRuntime.doNonTransactionalWork(AutomaticManagedRuntime.java:315)
> >         at
> >
> org.apache.openjpa.jdbc.kernel.TableJDBCSeq.allocateSequence(TableJDBCSeq.java:445)
> >         at
> >
> org.apache.openjpa.jdbc.kernel.TableJDBCSeq.nextInternal(TableJDBCSeq.java:300)
> >         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:778)
> >         at
> > org.apache.openjpa.util.ApplicationIds.assign(ApplicationIds.java:493)
> >         at
> > org.apache.openjpa.util.ApplicationIds.assign(ApplicationIds.java:469)
> >         at
> >
> org.apache.openjpa.jdbc.kernel.JDBCStoreManager.assignObjectId(JDBCStoreManager.java:762)
> >         at
> >
> org.apache.openjpa.kernel.DelegatingStoreManager.assignObjectId(DelegatingStoreManager.java:135)
> >         at
> >
> org.apache.openjpa.kernel.StateManagerImpl.assignObjectId(StateManagerImpl.java:600)
> >         at
> >
> org.apache.openjpa.kernel.StateManagerImpl.preFlush(StateManagerImpl.java:3023)
> >         at
> > org.apache.openjpa.kernel.PNewState.beforeFlush(PNewState.java:44)
> >         at
> >
> org.apache.openjpa.kernel.StateManagerImpl.beforeFlush(StateManagerImpl.java:1042)
> >         at
> org.apache.openjpa.kernel.BrokerImpl.flush(BrokerImpl.java:2114)
> >         at
> > org.apache.openjpa.kernel.BrokerImpl.flushSafe(BrokerImpl.java:2074)
> >         at
> >
> org.apache.openjpa.kernel.BrokerImpl.beforeCompletion(BrokerImpl.java:1992)
> >         at
> >
> org.apache.geronimo.transaction.manager.TransactionImpl.beforeCompletion(TransactionImpl.java:520)
> >         at
> >
> org.apache.geronimo.transaction.manager.TransactionImpl.beforeCompletion(TransactionImpl.java:504)
> >         at
> >
> org.apache.geronimo.transaction.manager.TransactionImpl.beforePrepare(TransactionImpl.java:407)
> >         at
> >
> org.apache.geronimo.transaction.manager.TransactionImpl.commit(TransactionImpl.java:255)
> >         at
> >
> org.apache.geronimo.transaction.manager.TransactionManagerImpl.commit(TransactionManagerImpl.java:252)
> >
> > Anyone has a hint?
> >
> > Regards Michael
> >
>

Re: Cubrid DB Dictionary?

Posted by Michael Szalay <mi...@basis06.ch>.
I tried without generating the schema, but with an existing database schema I wrote by hand.
I did not configure anything openjpa-specific in persistence.xml, so the default DBDictionary is used
(I see this in the log).

I tested the same application with MySQL, that works.

It seems that its just the "SELECT SEQUENCE_VALUE FROM OPENJPA_SEQUENCE_TABLE WHERE ID = ? FOR UPDATE"
is the problem, as the "select for update" construct is not supported in cubrid.

Regards Michael

----- Ursprüngliche Mail -----
Von: "Kevin Sutter" <kw...@gmail.com>
An: users@openjpa.apache.org
Gesendet: Mittwoch, 19. Dezember 2012 16:48:09
Betreff: Re: Cubrid DB Dictionary?

Hi Michael,
>From what I know, Cubrid is supposed to be SQL-92 compatible and should
work (for the most part) with the default DBDictionary.  Looking through
their documentation, they claim to provide some additional features that
may cause some hiccups with any JPA implementation (connection pooling,
object id generation, etc).  But, the basic support should be very similar.

What configuration are you running with in your persistence.xml?

What kind of testcase(s) are you attempting?  Are you pre-defining your
tables, or are you letting OpenJPA generate them?  Do these testcases work
with other "supported" open-source databases like MySQL or Postgres?

On the surface, supporting cubrid doesn't seem out of the question.  But, I
don't know much about it.

Kevin

On Tue, Dec 11, 2012 at 7:25 AM, Michael Szalay
<mi...@basis06.ch>wrote:

> Hi all
>
> has anyone managed to use OpenJPA with the Cubrid database?
> I tried it using the default Db Dictionary but I get the following error
>
> Caused by: org.apache.openjpa.lib.jdbc.ReportingSQLException: Syntax:
> syntax error, unexpected $end, expecting OF  {SELECT SEQUENCE_VALUE FROM
> OPENJPA_SEQUENCE_TABLE WHERE ID = ? FOR UPDATE} [code=-493, state=null]
>         at
> org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator.wrap(LoggingConnectionDecorator.java:219)
>         at
> org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator.wrap(LoggingConnectionDecorator.java:199)
>         at
> org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator.access$000(LoggingConnectionDecorator.java:59)
>         at
> org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator$LoggingConnection.prepareStatement(LoggingConnectionDecorator.java:251)
>         at
> org.apache.openjpa.lib.jdbc.DelegatingConnection.prepareStatement(DelegatingConnection.java:133)
>         at
> org.apache.openjpa.lib.jdbc.ConfiguringConnectionDecorator$ConfiguringConnection.prepareStatement(ConfiguringConnectionDecorator.java:140)
>         at
> org.apache.openjpa.lib.jdbc.DelegatingConnection.prepareStatement(DelegatingConnection.java:122)
>         at
> org.apache.openjpa.jdbc.sql.SQLBuffer.prepareStatement(SQLBuffer.java:449)
>         at
> org.apache.openjpa.jdbc.sql.SQLBuffer.prepareStatement(SQLBuffer.java:429)
>         at
> org.apache.openjpa.jdbc.sql.SQLBuffer.prepareStatement(SQLBuffer.java:418)
>         at
> org.apache.openjpa.jdbc.kernel.TableJDBCSeq.prepareStatement(TableJDBCSeq.java:807)
>         at
> org.apache.openjpa.jdbc.kernel.TableJDBCSeq.getSequence(TableJDBCSeq.java:546)
>         at
> org.apache.openjpa.jdbc.kernel.TableJDBCSeq.setSequence(TableJDBCSeq.java:588)
>         at
> org.apache.openjpa.jdbc.kernel.TableJDBCSeq$AllocateSequenceRunnable.run(TableJDBCSeq.java:893)
>         at
> org.apache.openjpa.ee.AbstractManagedRuntime.doNonTransactionalWork(AbstractManagedRuntime.java:89)
>         at
> org.apache.openjpa.ee.AutomaticManagedRuntime.doNonTransactionalWork(AutomaticManagedRuntime.java:315)
>         at
> org.apache.openjpa.jdbc.kernel.TableJDBCSeq.allocateSequence(TableJDBCSeq.java:445)
>         at
> org.apache.openjpa.jdbc.kernel.TableJDBCSeq.nextInternal(TableJDBCSeq.java:300)
>         at
> org.apache.openjpa.jdbc.kernel.AbstractJDBCSeq.next(AbstractJDBCSeq.java:60)
>         ... 83 more
> NestedThrowables:
> cubrid.jdbc.driver.CUBRIDException: Syntax: syntax error, unexpected $end,
> expecting OF
>         at
> cubrid.jdbc.driver.CUBRIDConnection.createCUBRIDException(CUBRIDConnection.java:829)
>         at
> cubrid.jdbc.driver.CUBRIDConnection.prepare(CUBRIDConnection.java:583)
>         at
> cubrid.jdbc.driver.CUBRIDConnection.prepare(CUBRIDConnection.java:714)
>         at
> cubrid.jdbc.driver.CUBRIDConnection.prepareStatement(CUBRIDConnection.java:394)
>         at
> org.apache.openjpa.lib.jdbc.DelegatingConnection.prepareStatement(DelegatingConnection.java:135)
>         at
> org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator$LoggingConnection.prepareStatement(LoggingConnectionDecorator.java:248)
>         at
> org.apache.openjpa.lib.jdbc.DelegatingConnection.prepareStatement(DelegatingConnection.java:133)
>         at
> org.apache.openjpa.lib.jdbc.ConfiguringConnectionDecorator$ConfiguringConnection.prepareStatement(ConfiguringConnectionDecorator.java:140)
>         at
> org.apache.openjpa.lib.jdbc.DelegatingConnection.prepareStatement(DelegatingConnection.java:122)
>         at
> org.apache.openjpa.jdbc.sql.SQLBuffer.prepareStatement(SQLBuffer.java:449)
>         at
> org.apache.openjpa.jdbc.sql.SQLBuffer.prepareStatement(SQLBuffer.java:429)
>         at
> org.apache.openjpa.jdbc.sql.SQLBuffer.prepareStatement(SQLBuffer.java:418)
>         at
> org.apache.openjpa.jdbc.kernel.TableJDBCSeq.prepareStatement(TableJDBCSeq.java:807)
>         at
> org.apache.openjpa.jdbc.kernel.TableJDBCSeq.getSequence(TableJDBCSeq.java:546)
>         at
> org.apache.openjpa.jdbc.kernel.TableJDBCSeq.setSequence(TableJDBCSeq.java:588)
>         at
> org.apache.openjpa.jdbc.kernel.TableJDBCSeq$AllocateSequenceRunnable.run(TableJDBCSeq.java:893)
>         at
> org.apache.openjpa.ee.AbstractManagedRuntime.doNonTransactionalWork(AbstractManagedRuntime.java:89)
>         at
> org.apache.openjpa.ee.AutomaticManagedRuntime.doNonTransactionalWork(AutomaticManagedRuntime.java:315)
>         at
> org.apache.openjpa.jdbc.kernel.TableJDBCSeq.allocateSequence(TableJDBCSeq.java:445)
>         at
> org.apache.openjpa.jdbc.kernel.TableJDBCSeq.nextInternal(TableJDBCSeq.java:300)
>         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:778)
>         at
> org.apache.openjpa.util.ApplicationIds.assign(ApplicationIds.java:493)
>         at
> org.apache.openjpa.util.ApplicationIds.assign(ApplicationIds.java:469)
>         at
> org.apache.openjpa.jdbc.kernel.JDBCStoreManager.assignObjectId(JDBCStoreManager.java:762)
>         at
> org.apache.openjpa.kernel.DelegatingStoreManager.assignObjectId(DelegatingStoreManager.java:135)
>         at
> org.apache.openjpa.kernel.StateManagerImpl.assignObjectId(StateManagerImpl.java:600)
>         at
> org.apache.openjpa.kernel.StateManagerImpl.preFlush(StateManagerImpl.java:3023)
>         at
> org.apache.openjpa.kernel.PNewState.beforeFlush(PNewState.java:44)
>         at
> org.apache.openjpa.kernel.StateManagerImpl.beforeFlush(StateManagerImpl.java:1042)
>         at org.apache.openjpa.kernel.BrokerImpl.flush(BrokerImpl.java:2114)
>         at
> org.apache.openjpa.kernel.BrokerImpl.flushSafe(BrokerImpl.java:2074)
>         at
> org.apache.openjpa.kernel.BrokerImpl.beforeCompletion(BrokerImpl.java:1992)
>         at
> org.apache.geronimo.transaction.manager.TransactionImpl.beforeCompletion(TransactionImpl.java:520)
>         at
> org.apache.geronimo.transaction.manager.TransactionImpl.beforeCompletion(TransactionImpl.java:504)
>         at
> org.apache.geronimo.transaction.manager.TransactionImpl.beforePrepare(TransactionImpl.java:407)
>         at
> org.apache.geronimo.transaction.manager.TransactionImpl.commit(TransactionImpl.java:255)
>         at
> org.apache.geronimo.transaction.manager.TransactionManagerImpl.commit(TransactionManagerImpl.java:252)
>
> Anyone has a hint?
>
> Regards Michael
>

Re: Cubrid DB Dictionary?

Posted by Kevin Sutter <kw...@gmail.com>.
Hi Michael,
>From what I know, Cubrid is supposed to be SQL-92 compatible and should
work (for the most part) with the default DBDictionary.  Looking through
their documentation, they claim to provide some additional features that
may cause some hiccups with any JPA implementation (connection pooling,
object id generation, etc).  But, the basic support should be very similar.

What configuration are you running with in your persistence.xml?

What kind of testcase(s) are you attempting?  Are you pre-defining your
tables, or are you letting OpenJPA generate them?  Do these testcases work
with other "supported" open-source databases like MySQL or Postgres?

On the surface, supporting cubrid doesn't seem out of the question.  But, I
don't know much about it.

Kevin

On Tue, Dec 11, 2012 at 7:25 AM, Michael Szalay
<mi...@basis06.ch>wrote:

> Hi all
>
> has anyone managed to use OpenJPA with the Cubrid database?
> I tried it using the default Db Dictionary but I get the following error
>
> Caused by: org.apache.openjpa.lib.jdbc.ReportingSQLException: Syntax:
> syntax error, unexpected $end, expecting OF  {SELECT SEQUENCE_VALUE FROM
> OPENJPA_SEQUENCE_TABLE WHERE ID = ? FOR UPDATE} [code=-493, state=null]
>         at
> org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator.wrap(LoggingConnectionDecorator.java:219)
>         at
> org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator.wrap(LoggingConnectionDecorator.java:199)
>         at
> org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator.access$000(LoggingConnectionDecorator.java:59)
>         at
> org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator$LoggingConnection.prepareStatement(LoggingConnectionDecorator.java:251)
>         at
> org.apache.openjpa.lib.jdbc.DelegatingConnection.prepareStatement(DelegatingConnection.java:133)
>         at
> org.apache.openjpa.lib.jdbc.ConfiguringConnectionDecorator$ConfiguringConnection.prepareStatement(ConfiguringConnectionDecorator.java:140)
>         at
> org.apache.openjpa.lib.jdbc.DelegatingConnection.prepareStatement(DelegatingConnection.java:122)
>         at
> org.apache.openjpa.jdbc.sql.SQLBuffer.prepareStatement(SQLBuffer.java:449)
>         at
> org.apache.openjpa.jdbc.sql.SQLBuffer.prepareStatement(SQLBuffer.java:429)
>         at
> org.apache.openjpa.jdbc.sql.SQLBuffer.prepareStatement(SQLBuffer.java:418)
>         at
> org.apache.openjpa.jdbc.kernel.TableJDBCSeq.prepareStatement(TableJDBCSeq.java:807)
>         at
> org.apache.openjpa.jdbc.kernel.TableJDBCSeq.getSequence(TableJDBCSeq.java:546)
>         at
> org.apache.openjpa.jdbc.kernel.TableJDBCSeq.setSequence(TableJDBCSeq.java:588)
>         at
> org.apache.openjpa.jdbc.kernel.TableJDBCSeq$AllocateSequenceRunnable.run(TableJDBCSeq.java:893)
>         at
> org.apache.openjpa.ee.AbstractManagedRuntime.doNonTransactionalWork(AbstractManagedRuntime.java:89)
>         at
> org.apache.openjpa.ee.AutomaticManagedRuntime.doNonTransactionalWork(AutomaticManagedRuntime.java:315)
>         at
> org.apache.openjpa.jdbc.kernel.TableJDBCSeq.allocateSequence(TableJDBCSeq.java:445)
>         at
> org.apache.openjpa.jdbc.kernel.TableJDBCSeq.nextInternal(TableJDBCSeq.java:300)
>         at
> org.apache.openjpa.jdbc.kernel.AbstractJDBCSeq.next(AbstractJDBCSeq.java:60)
>         ... 83 more
> NestedThrowables:
> cubrid.jdbc.driver.CUBRIDException: Syntax: syntax error, unexpected $end,
> expecting OF
>         at
> cubrid.jdbc.driver.CUBRIDConnection.createCUBRIDException(CUBRIDConnection.java:829)
>         at
> cubrid.jdbc.driver.CUBRIDConnection.prepare(CUBRIDConnection.java:583)
>         at
> cubrid.jdbc.driver.CUBRIDConnection.prepare(CUBRIDConnection.java:714)
>         at
> cubrid.jdbc.driver.CUBRIDConnection.prepareStatement(CUBRIDConnection.java:394)
>         at
> org.apache.openjpa.lib.jdbc.DelegatingConnection.prepareStatement(DelegatingConnection.java:135)
>         at
> org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator$LoggingConnection.prepareStatement(LoggingConnectionDecorator.java:248)
>         at
> org.apache.openjpa.lib.jdbc.DelegatingConnection.prepareStatement(DelegatingConnection.java:133)
>         at
> org.apache.openjpa.lib.jdbc.ConfiguringConnectionDecorator$ConfiguringConnection.prepareStatement(ConfiguringConnectionDecorator.java:140)
>         at
> org.apache.openjpa.lib.jdbc.DelegatingConnection.prepareStatement(DelegatingConnection.java:122)
>         at
> org.apache.openjpa.jdbc.sql.SQLBuffer.prepareStatement(SQLBuffer.java:449)
>         at
> org.apache.openjpa.jdbc.sql.SQLBuffer.prepareStatement(SQLBuffer.java:429)
>         at
> org.apache.openjpa.jdbc.sql.SQLBuffer.prepareStatement(SQLBuffer.java:418)
>         at
> org.apache.openjpa.jdbc.kernel.TableJDBCSeq.prepareStatement(TableJDBCSeq.java:807)
>         at
> org.apache.openjpa.jdbc.kernel.TableJDBCSeq.getSequence(TableJDBCSeq.java:546)
>         at
> org.apache.openjpa.jdbc.kernel.TableJDBCSeq.setSequence(TableJDBCSeq.java:588)
>         at
> org.apache.openjpa.jdbc.kernel.TableJDBCSeq$AllocateSequenceRunnable.run(TableJDBCSeq.java:893)
>         at
> org.apache.openjpa.ee.AbstractManagedRuntime.doNonTransactionalWork(AbstractManagedRuntime.java:89)
>         at
> org.apache.openjpa.ee.AutomaticManagedRuntime.doNonTransactionalWork(AutomaticManagedRuntime.java:315)
>         at
> org.apache.openjpa.jdbc.kernel.TableJDBCSeq.allocateSequence(TableJDBCSeq.java:445)
>         at
> org.apache.openjpa.jdbc.kernel.TableJDBCSeq.nextInternal(TableJDBCSeq.java:300)
>         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:778)
>         at
> org.apache.openjpa.util.ApplicationIds.assign(ApplicationIds.java:493)
>         at
> org.apache.openjpa.util.ApplicationIds.assign(ApplicationIds.java:469)
>         at
> org.apache.openjpa.jdbc.kernel.JDBCStoreManager.assignObjectId(JDBCStoreManager.java:762)
>         at
> org.apache.openjpa.kernel.DelegatingStoreManager.assignObjectId(DelegatingStoreManager.java:135)
>         at
> org.apache.openjpa.kernel.StateManagerImpl.assignObjectId(StateManagerImpl.java:600)
>         at
> org.apache.openjpa.kernel.StateManagerImpl.preFlush(StateManagerImpl.java:3023)
>         at
> org.apache.openjpa.kernel.PNewState.beforeFlush(PNewState.java:44)
>         at
> org.apache.openjpa.kernel.StateManagerImpl.beforeFlush(StateManagerImpl.java:1042)
>         at org.apache.openjpa.kernel.BrokerImpl.flush(BrokerImpl.java:2114)
>         at
> org.apache.openjpa.kernel.BrokerImpl.flushSafe(BrokerImpl.java:2074)
>         at
> org.apache.openjpa.kernel.BrokerImpl.beforeCompletion(BrokerImpl.java:1992)
>         at
> org.apache.geronimo.transaction.manager.TransactionImpl.beforeCompletion(TransactionImpl.java:520)
>         at
> org.apache.geronimo.transaction.manager.TransactionImpl.beforeCompletion(TransactionImpl.java:504)
>         at
> org.apache.geronimo.transaction.manager.TransactionImpl.beforePrepare(TransactionImpl.java:407)
>         at
> org.apache.geronimo.transaction.manager.TransactionImpl.commit(TransactionImpl.java:255)
>         at
> org.apache.geronimo.transaction.manager.TransactionManagerImpl.commit(TransactionManagerImpl.java:252)
>
> Anyone has a hint?
>
> Regards Michael
>