db-jdo-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Michael Bouschen <...@apache.org>
Subject Re: DN support for derby sequences
Date Sun, 11 Mar 2012 14:57:43 GMT
Hi Andy,

thanks for the hint.

Actually, prefixing the sequence name in the sequence definition
<sequence name="id_seq" 
datastore-sequence="DATASTOREIDENTITY8.DATASTORE_SEQ"/>
or specifying the schema to the package including the sequence
<package name="org.apache.jdo.tck.pc.shoppingcart" 
schema="DATASTOREIDENTITY8">
solves the problem.
I will use the schema definition on the package to fix this.

Chapter 18 XML Metadata of the spec defines that a schema declared at 
the jdo, orm, package, class or interface level, specifies the schema to 
be used as the default for tables contained therein. And if not 
specified the schema defaults to the PMF schema property (see end of 
page 221 and beginning of page 222 of the JDO 3.0 spec).

Do you see any issue, if the spec would define the same default for 
sequences? Then DataNucleus could take the PMF schema definition to 
prefix the sequence name the same way it currently does for all the 
table names.

Regards Michael

>> But the test cases fail, because it tries to create the sequence
>> included in the schema definition:
>>     Could not create new "sequence" DATASTORE_SEQ since autoCreate flags
>> do not allow it.
>>
>> Any idea why the existing sequence is not used? I double-checked the
>> schema and the mapping metadata, but cannot find anything.
> It is being used ... or at least trying to. Sadly when the statement
> VALUES NEXT VALUE FOR DATASTORE_SEQ
> is used to create a PreparedStatement, it throws an exception
>
> 07:43:42,677 (main) INFO  [DataNucleus.General] ->>  reserveBlock caught
> exception
> java.sql.SQLSyntaxErrorException: SEQUENCE 'DATASTORE_SEQ' does not exist.
>          at
> org.apache.derby.impl.jdbc.SQLExceptionFactory40.getSQLException(Unknown
> Source)
>          at org.apache.derby.impl.jdbc.Util.generateCsSQLException(Unknown
> Source)
>          at
> org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException(Unknown
> Source)
>          at
> org.apache.derby.impl.jdbc.TransactionResourceImpl.handleException(Unknown
> Source)
>          at org.apache.derby.impl.jdbc.EmbedConnection.handleException(Unknown
> Source)
>          at org.apache.derby.impl.jdbc.ConnectionChild.handleException(Unknown
> Source)
>          at org.apache.derby.impl.jdbc.EmbedPreparedStatement.<init>(Unknown
> Source)
>          at org.apache.derby.impl.jdbc.EmbedPreparedStatement20.<init>(Unknown
> Source)
>          at org.apache.derby.impl.jdbc.EmbedPreparedStatement30.<init>(Unknown
> Source)
>          at org.apache.derby.impl.jdbc.EmbedPreparedStatement40.<init>(Unknown
> Source)
>          at org.apache.derby.jdbc.Driver40.newEmbedPreparedStatement(Unknown
> Source)
>          at org.apache.derby.impl.jdbc.EmbedConnection.prepareStatement(Unknown
> Source)
>          at org.apache.derby.impl.jdbc.EmbedConnection.prepareStatement(Unknown
> Source)
>          at
> com.mchange.v2.c3p0.impl.NewProxyConnection.prepareStatement(NewProxyConnection.java:190)
>          at
> org.datanucleus.store.rdbms.SQLController.getStatementForQuery(SQLController.java:327)
>          at
> org.datanucleus.store.rdbms.SQLController.getStatementForQuery(SQLController.java:267)
>          at
> org.datanucleus.store.rdbms.valuegenerator.SequenceGenerator.reserveBlock(SequenceGenerator.java:135)
>          at
> org.datanucleus.store.valuegenerator.AbstractGenerator.reserveBlock(AbstractGenerator.java:305)
>          at
> org.datanucleus.store.rdbms.valuegenerator.AbstractRDBMSGenerator.obtainGenerationBlock(AbstractRDBMSGenerator.java:101)
>
>
> So the question is why does Derby not allow that statement. Maybe you need to
> prefix your schema name on the sequence name ?
>
>
>


-- 
*Michael Bouschen*
*Prokurist*

akquinet tech@spree GmbH
Bülowstr. 66, D-10783 Berlin

Fon:   +49 30 235 520-33
Fax:   +49 30 217 520-12
Email: michael.bouschen@akquinet.de
Web: www.akquinet.de <http://www.akquinet.de>

akquinet tech@spree GmbH, Berlin
Geschäftsführung: Martin Weber, Dr. Torsten Fink
Amtsgericht Berlin-Charlottenburg HRB 86780 B
USt.-Id. Nr.: DE 225 964 680

-- 
*Michael Bouschen*
*Prokurist*

akquinet tech@spree GmbH
Bülowstr. 66, D-10783 Berlin

Fon:   +49 30 235 520-33
Fax:   +49 30 217 520-12
Email: michael.bouschen@akquinet.de
Web: www.akquinet.de <http://www.akquinet.de>

akquinet tech@spree GmbH, Berlin
Geschäftsführung: Martin Weber, Dr. Torsten Fink
Amtsgericht Berlin-Charlottenburg HRB 86780 B
USt.-Id. Nr.: DE 225 964 680

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message