[ 
http://issues.apache.org/jira/browse/JDO-143?page=comments#action_12330525 ] 

Michelle Caisse commented on JDO-143:
-------------------------------------

Currently values for Collections of Collection types are obtained as a Vector 
with one  value for each different datatype represented in the fields of  the 
class.  Each field of the same data type is assigned the same instance from 
this Vector.  
org.apache.jdo.tck.models.fieldtypes.FirstSetOfTestValuesForCollection.java and 
...SecondSetOfTestValuesForCollection.java each contain  a vector field for 
each data type.

I propose removing these two classes from the repository, adding a static 
method to org.apache.jdo.tck.models.fieldtypes.TestUtil.java that takes the 
field data type and an integer specifying whether this is the first or second 
value as arguments, and returns a new Vector of new object instances on each 
invocation.  TestCollectionCollections.java must also be modified to use the 
static method to get test values.  Its checkValues() method must be modified to 
use a CollectionCollection type as the standard rather than using a 
FirstSetOfTestValuesForCollection or SecondSetOfTestValuesForCollection type as 
the standard.

If we decide to go ahead with this change, all the other Test*Collection.java 
files will have to be changed as described.  I would also address issues 
JDO-145 and JDO151- in the same checkin, because they involve the same set of 
files.


> 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: Michelle Caisse

>
>     [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

Reply via email to