db-jdo-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Craig Russell (JIRA)" <j...@apache.org>
Subject [jira] Commented: (JDO-143) ERROR 23503: INSERT on table 'COLLECTION_OF_SIMPLE_CLASS3' caused a violation of foreign key constraint
Date Sun, 25 Sep 2005 22:34:48 GMT
    [ http://issues.apache.org/jira/browse/JDO-143?page=comments#action_12330440 ] 

Craig Russell commented on JDO-143:
-----------------------------------

Hi Andy,

Thanks for this analysis, Andy.

This situation is not covered by the specification. So it's a test bug. Even if it were covered
by the specification, I'd expect it to say that an exception should be thrown.

The test case should not assign the same instance to both an embedded field and a non-embedded
field. So the bug should be reassigned to Michelle. And we should look at all of the other
collection test cases to make sure that this same situation isn't in the other tests. 

The spec does say it's ok to assign the same embedded instance to multiple fields, but as
far as I know there's no test case for this. 

You might consider adding a JPOX check to make sure that when persisting a PC instance that
is known to be embedded, then only embedded uses are permitted. Similarly, persisting a PC
instance that is known to be non-embedded, then only non-embedded uses are permitted. Its
the case of a PC instance being used as both embedded and non-embedded that's problematic,
and if possible it would be nice to throw a different exception.



> ERROR 23503: INSERT on table 'COLLECTION_OF_SIMPLE_CLASS3' caused a violation of foreign
key constraint
> -------------------------------------------------------------------------------------------------------
>
>          Key: JDO-143
>          URL: http://issues.apache.org/jira/browse/JDO-143
>      Project: JDO
>         Type: Bug
>   Components: tck20
>     Reporter: Michelle Caisse
>     Assignee: Erik Bengtson

>
>     [java] 1) test(org.apache.jdo.tck.models.fieldtypes.TestCollectionCollections)javax.jdo.JDODataStoreException:
Add request failed : INSERT INTO applicationidentity0.COLLECTION_OF_SIMPLE_CLASS3 (IDENTIFIER,ALLOW_DUPLICATES,SIMPCLSREF)
VALUES (?,?,?)
>     [java]      at org.jpox.store.rdbms.scostore.NormalSetStore.add(NormalSetStore.java:672)
>     [java]      at org.jpox.sco.SCOUtils.updateStoreWithCollection(SCOUtils.java:489)
>     [java]      at org.jpox.store.mapping.container.CollectionMapping.postUpdate(CollectionMapping.java:279)
>     [java]      at org.jpox.store.rdbms.request.UpdateRequest.execute(UpdateRequest.java:266)
>     [java]      at org.jpox.store.rdbms.table.ClassTable.update(ClassTable.java:1838)
>     [java]      at org.jpox.store.StoreManager.update(StoreManager.java:782)
>     [java]      at org.jpox.state.StateManagerImpl.flush(StateManagerImpl.java:4298)
>     [java]      at org.jpox.state.StateManagerImpl.runReachability(StateManagerImpl.java:3102)
>     [java]      at org.jpox.AbstractPersistenceManager.preCommit(AbstractPersistenceManager.java:3049)
>     [java]      at org.jpox.NonmanagedTransaction.commit(NonmanagedTransaction.java:419)
>     [java]      at org.apache.jdo.tck.models.fieldtypes.TestCollectionCollections.runTest(TestCollectionCollections.java:97)
>     [java]      at org.apache.jdo.tck.models.fieldtypes.TestCollectionCollections.test(TestCollectionCollections.java:69)
>     [java]      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>     [java]      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>     [java]      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>     [java]      at org.apache.jdo.tck.JDO_Test.runBare(JDO_Test.java:204)
>     [java]      at org.apache.jdo.tck.util.BatchTestRunner.start(BatchTestRunner.java:115)
>     [java]      at org.apache.jdo.tck.util.BatchTestRunner.main(BatchTestRunner.java:93)
>     [java] NestedThrowablesStackTrace:
>     [java] ERROR 23503: INSERT on table 'COLLECTION_OF_SIMPLE_CLASS3' caused a violation
of foreign key constraint SQL050921005031671' for key (1127341751473).  The statement has
been rolled back.
>     [java]      at org.apache.derby.iapi.error.StandardException.newException(Unknown
Source)
>     [java]      at org.apache.derby.impl.sql.execute.ForeignKeyRIChecker.doCheck(Unknown
Source)
>     [java]      at org.apache.derby.impl.sql.execute.GenericRIChecker.doCheck(Unknown
Source)
>     [java]      at org.apache.derby.impl.sql.execute.RISetChecker.doFKCheck(Unknown Source)
>     [java]      at org.apache.derby.impl.sql.execute.InsertResultSet.normalInsertCore(Unknown
Source)
>     [java]      at org.apache.derby.impl.sql.execute.InsertResultSet.open(Unknown Source)
>     [java]      at org.apache.derby.impl.sql.GenericPreparedStatement.execute(Unknown
Source)
>     [java]      at org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(Unknown
Source)
>     [java]      at org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeStatement(Unknown
Source)
>     [java]      at org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeUpdate(Unknown
Source)
>     [java]      at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.executeUpdate(NewProxyPreparedStatement.java:105)
>     [java]      at org.jpox.store.rdbms.scostore.BaseContainerStore.executeUpdate(BaseContainerStore.java:97)
>     [java]      at org.jpox.store.rdbms.scostore.NormalSetStore.add(NormalSetStore.java:654)
>     [java]      at org.jpox.sco.SCOUtils.updateStoreWithCollection(SCOUtils.java:489)
>     [java]      at org.jpox.store.mapping.container.CollectionMapping.postUpdate(CollectionMapping.java:279)
>     [java]      at org.jpox.store.rdbms.request.UpdateRequest.execute(UpdateRequest.java:266)
>     [java]      at org.jpox.store.rdbms.table.ClassTable.update(ClassTable.java:1838)
>     [java]      at org.jpox.store.StoreManager.update(StoreManager.java:782)
>     [java]      at org.jpox.state.StateManagerImpl.flush(StateManagerImpl.java:4298)
>     [java]      at org.jpox.state.StateManagerImpl.runReachability(StateManagerImpl.java:3102)
>     [java]      at org.jpox.AbstractPersistenceManager.preCommit(AbstractPersistenceManager.java:3049)
>     [java]      at org.jpox.NonmanagedTransaction.commit(NonmanagedTransaction.java:419)
>     [java]      at org.apache.jdo.tck.models.fieldtypes.TestCollectionCollections.runTest(TestCollectionCollections.java:97)
>     [java]      at org.apache.jdo.tck.models.fieldtypes.TestCollectionCollections.test(TestCollectionCollections.java:69)
>     [java]      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>     [java]      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>     [java]      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>     [java]      at org.apache.jdo.tck.JDO_Test.runBare(JDO_Test.java:204)
>     [java]      at org.apache.jdo.tck.util.BatchTestRunner.start(BatchTestRunner.java:115)
>     [java]      at org.apache.jdo.tck.util.BatchTestRunner.main(BatchTestRunner.java:93)
> Possibly due to a misordering of inserts required for this operation?

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira


Mime
View raw message