[ http://issues.apache.org/jira/browse/JDO-375?page=all ]

Michael Bouschen updated JDO-375:
---------------------------------

    Attachment: JDO-375.patch

I found one issue with the cleanup code in the CompletenessTest: it retriveves 
the list of tearDownClasses from the reader that is used to create the 
transient graph for comparison. But this reader returns the PC classes and not 
the PC interfaces. The attached patch JDO-375.patch fixes this bug.

However, cleanup still does not work. The cleanup code uses the following 
pattern (as Criag mentioned in the other email):
  Query query = new Query();
  query.setClass(ICompany.class);
  query.setCandidates(pm.getExtent(ICompany.class, false));
  pm.deletePersistentAll((Collection)query.execute()); 
I added some debug messages and figured out that the query using the extent of 
a persistent interface does not return any instances.

> Company model tables are not fully cleaned up
> ---------------------------------------------
>
>          Key: JDO-375
>          URL: http://issues.apache.org/jira/browse/JDO-375
>      Project: JDO
>         Type: Bug

>   Components: tck20
>     Versions: JDO 2 rc1
>     Reporter: Erik Bengtson
>     Assignee: Michael Bouschen
>  Attachments: JDO-375.patch
>
> Tables from company model does not appear to be clean after run.
> I can't say if this is a JPOX or TCK issue, because I did not dig into the 
> issue.
> On second run, exceptions are like
> > 1)
> > test(org.apache.jdo.tck.api.persistencemanager.extent.GetExtentWithInstancesMadePersistentViaReachability)javax.jdo.JDODataStoreException:
> > Insert request failed: INSERT INTO applicationidentity0.COMPANIES
> > ("NAME",FOUNDEDDATE,ADDRID,CITY,COUNTRY,"STATE",STREET,ZIPCODE,ID,DISCRIMINATOR)
> > VALUES (?,?,?,?,?,?,?,?,?,?)
> >         at 
> > org.jpox.store.rdbms.request.InsertRequest.execute(InsertRequest.java:393)
> >         at 
> > org.jpox.store.rdbms.table.ClassTable.insert(ClassTable.java:2171)
> >         at org.jpox.store.StoreManager.insert(StoreManager.java:757)
> >         at
> > org.jpox.state.StateManagerImpl.internalMakePersistent(StateManagerImpl.java:3456)
> >         at 
> > org.jpox.state.StateManagerImpl.makePersistent(StateManagerImpl.java:3429)
> >         at
> > org.jpox.AbstractPersistenceManager.internalMakePersistent(AbstractPersistenceManager.java:1150)
> >         at
> > org.jpox.AbstractPersistenceManager.makePersistent(AbstractPersistenceManager.java:1205)
> >         at
> > org.apache.jdo.tck.api.persistencemanager.extent.GetExtentWithInstancesMadePersistentViaReachability.createObjects(GetExtentWithInstancesMadePersistentViaReachability.java:72)
> >         at
> > org.apache.jdo.tck.api.persistencemanager.extent.GetExtentWithInstancesMadePersistentViaReachability.test(GetExtentWithInstancesMadePersistentViaReachability.java:63)
> >         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> >         at
> > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> >         at
> > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> >         at org.apache.jdo.tck.JDO_Test.runBare(JDO_Test.java:237)
> >         at 
> > org.apache.jdo.tck.util.BatchTestRunner.doRun(BatchTestRunner.java:107)
> >         at 
> > org.apache.jdo.tck.util.BatchTestRunner.start(BatchTestRunner.java:147)
> >         at 
> > org.apache.jdo.tck.util.BatchTestRunner.main(BatchTestRunner.java:122)
> > NestedThrowablesStackTrace:
> > ERROR 23505: The statement was aborted because it would have caused a 
> > duplicate
> > key value in a unique or primary key constraint or unique index identified 
> > by
> > 'COMPS_PK' defined on 'COMPANIES'.
> >         at 
> > org.apache.derby.iapi.error.StandardException.newException(Unknown Source)
> >         at 
> > org.apache.derby.impl.sql.execute.IndexChanger.insertAndCheckDups(Unknown
> > Source)
> >         at org.apache.derby.impl.sql.execute.IndexChanger.doInsert(Unknown 
> > Source)
> >         at org.apache.derby.impl.sql.execute.IndexChanger.insert(Unknown 
> > Source)
> >         at org.apache.derby.impl.sql.execute.IndexSetChanger.insert(Unknown 
> > Source)
> >         at 
> > org.apache.derby.impl.sql.execute.RowChangerImpl.insertRow(Unknown Source)
> >         at 
> > org.apache.derby.impl.sql.execute.InsertResultSet.normalInsertCore(Unknown
> > Source)
> >         at org.apache.derby.impl.sql.execute.InsertResultSet.open(Unknown 
> > Source)
> >         at 
> > org.apache.derby.impl.sql.GenericPreparedStatement.execute(Unknown Source)
> >         at 
> > org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(Unknown Source)
> >         at 
> > org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeStatement(Unknown
> > Source)
> >         at 
> > org.apache.derby.impl.jdbc.EmbedPreparedStatement.execute(Unknown Source)
> >         at
> > com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.execute(NewProxyPreparedStatement.java:911)
> >         at
> > org.jpox.store.rdbms.ParamLoggingPreparedStatement.execute(ParamLoggingPreparedStatement.java:212)
> >         at 
> > org.jpox.store.rdbms.request.Request.executeUpdate(Request.java:88)
> >         at 
> > org.jpox.store.rdbms.request.InsertRequest.execute(InsertRequest.java:267)
> >         at 
> > org.jpox.store.rdbms.table.ClassTable.insert(ClassTable.java:2171)
> >         at org.jpox.store.StoreManager.insert(StoreManager.java:757)
> >         at
> > org.jpox.state.StateManagerImpl.internalMakePersistent(StateManagerImpl.java:3456)
> >         at 
> > org.jpox.state.StateManagerImpl.makePersistent(StateManagerImpl.java:3429)
> >         at
> > org.jpox.AbstractPersistenceManager.internalMakePersistent(AbstractPersistenceManager.java:1150)
> >         at
> > org.jpox.AbstractPersistenceManager.makePersistent(AbstractPersistenceManager.java:1205)
> >         at
> > org.apache.jdo.tck.api.persistencemanager.extent.GetExtentWithInstancesMadePersistentViaReachability.createObjects(GetExtentWithInstancesMadePersistentViaReachability.java:72)
> >         at
> > org.apache.jdo.tck.api.persistencemanager.extent.GetExtentWithInstancesMadePersistentViaReachability.test(GetExtentWithInstancesMadePersistentViaReachability.java:63)
> >         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> >         at
> > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> >         at
> > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> >         at org.apache.jdo.tck.JDO_Test.runBare(JDO_Test.java:237)
> >         at 
> > org.apache.jdo.tck.util.BatchTestRunner.doRun(BatchTestRunner.java:107)
> >         at 
> > org.apache.jdo.tck.util.BatchTestRunner.start(BatchTestRunner.java:147)
> >         at 
> > org.apache.jdo.tck.util.BatchTestRunner.main(BatchTestRunner.java:122)
> > 2)
> > test(org.apache.jdo.tck.api.persistencemanager.extent.GetExtentWithSubclasses)javax.jdo.JDODataStoreException:
> > Insert request failed: INSERT INTO applicationidentity0.PERSONS
> > (ADDRID,CITY,COUNTRY,"STATE",STREET,ZIPCODE,FIRSTNAME,BIRTHDATE,MIDDLENAME,LASTNAME,PERSONID,DISCRIMINATOR)
> > VALUES (?,?,?,?,?,?,?,?,?,?,?,?)
> >         at 
> > org.jpox.store.rdbms.request.InsertRequest.execute(InsertRequest.java:393)
> >         at 
> > org.jpox.store.rdbms.table.ClassTable.insert(ClassTable.java:2171)
> >         at org.jpox.store.StoreManager.insert(StoreManager.java:757)
> >         at
> > org.jpox.state.StateManagerImpl.internalMakePersistent(StateManagerImpl.java:3456)
> >         at 
> > org.jpox.state.StateManagerImpl.makePersistent(StateManagerImpl.java:3429)
> >         at
> > org.jpox.AbstractPersistenceManager.internalMakePersistent(AbstractPersistenceManager.java:1150)
> >         at
> > org.jpox.AbstractPersistenceManager.makePersistent(AbstractPersistenceManager.java:1205)
> >         at
> > org.apache.jdo.tck.api.persistencemanager.extent.GetExtentWithSubclasses.createObjects(GetExtentWithSubclasses.java:86)
> >         at
> > org.apache.jdo.tck.api.persistencemanager.extent.GetExtentWithSubclasses.test(GetExtentWithSubclasses.java:73)
> >         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> >         at
> > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> >         at
> > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> >         at org.apache.jdo.tck.JDO_Test.runBare(JDO_Test.java:237)
> >         at 
> > org.apache.jdo.tck.util.BatchTestRunner.doRun(BatchTestRunner.java:107)
> >         at 
> > org.apache.jdo.tck.util.BatchTestRunner.start(BatchTestRunner.java:147)
> >         at 
> > org.apache.jdo.tck.util.BatchTestRunner.main(BatchTestRunner.java:122)
> > NestedThrowablesStackTrace:
> > ERROR 23505: The statement was aborted because it would have caused a 
> > duplicate
> > key value in a unique or primary key constraint or unique index identified 
> > by
> > 'EMPS_PK' defined on 'PERSONS'.
> >         at 
> > org.apache.derby.iapi.error.StandardException.newException(Unknown Source)
> >         at 
> > org.apache.derby.impl.sql.execute.IndexChanger.insertAndCheckDups(Unknown
> > Source)
> >         at org.apache.derby.impl.sql.execute.IndexChanger.doInsert(Unknown 
> > Source)
> >         at org.apache.derby.impl.sql.execute.IndexChanger.insert(Unknown 
> > Source)
> >         at org.apache.derby.impl.sql.execute.IndexSetChanger.insert(Unknown 
> > Source)
> >         at 
> > org.apache.derby.impl.sql.execute.RowChangerImpl.insertRow(Unknown Source)
> >         at 
> > org.apache.derby.impl.sql.execute.InsertResultSet.normalInsertCore(Unknown
> > Source)
> >         at org.apache.derby.impl.sql.execute.InsertResultSet.open(Unknown 
> > Source)
> >         at 
> > org.apache.derby.impl.sql.GenericPreparedStatement.execute(Unknown Source)
> >         at 
> > org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(Unknown Source)
> >         at 
> > org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeStatement(Unknown
> > Source)
> >         at 
> > org.apache.derby.impl.jdbc.EmbedPreparedStatement.execute(Unknown Source)
> >         at
> > com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.execute(NewProxyPreparedStatement.java:911)
> >         at
> > org.jpox.store.rdbms.ParamLoggingPreparedStatement.execute(ParamLoggingPreparedStatement.java:212)
> >         at 
> > org.jpox.store.rdbms.request.Request.executeUpdate(Request.java:88)
> >         at 
> > org.jpox.store.rdbms.request.InsertRequest.execute(InsertRequest.java:267)
> >         at 
> > org.jpox.store.rdbms.table.ClassTable.insert(ClassTable.java:2171)
> >         at org.jpox.store.StoreManager.insert(StoreManager.java:757)
> >         at
> > org.jpox.state.StateManagerImpl.internalMakePersistent(StateManagerImpl.java:3456)
> >         at 
> > org.jpox.state.StateManagerImpl.makePersistent(StateManagerImpl.java:3429)
> >         at
> > org.jpox.AbstractPersistenceManager.internalMakePersistent(AbstractPersistenceManager.java:1150)
> >         at
> > org.jpox.AbstractPersistenceManager.makePersistent(AbstractPersistenceManager.java:1205)
> >         at
> > org.apache.jdo.tck.api.persistencemanager.extent.GetExtentWithSubclasses.createObjects(GetExtentWithSubclasses.java:86)
> >         at
> > org.apache.jdo.tck.api.persistencemanager.extent.GetExtentWithSubclasses.test(GetExtentWithSubclasses.java:73)
> >         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> >         at
> > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> >         at
> > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> >         at org.apache.jdo.tck.JDO_Test.runBare(JDO_Test.java:237)
> >         at 
> > org.apache.jdo.tck.util.BatchTestRunner.doRun(BatchTestRunner.java:107)
> >         at 
> > org.apache.jdo.tck.util.BatchTestRunner.start(BatchTestRunner.java:147)
> >         at 
> > org.apache.jdo.tck.util.BatchTestRunner.main(BatchTestRunner.java:122)
> > 3)
> > test(org.apache.jdo.tck.api.persistencemanager.lifecycle.MakePersistentAndInstancesNotReachable)javax.jdo.JDODataStoreException:
> > Insert request failed: INSERT INTO applicationidentity0.COMPANIES
> > ("NAME",FOUNDEDDATE,ADDRID,CITY,COUNTRY,"STATE",STREET,ZIPCODE,ID,DISCRIMINATOR)
> > VALUES (?,?,?,?,?,?,?,?,?,?)
> >         at 
> > org.jpox.store.rdbms.request.InsertRequest.execute(InsertRequest.java:393)
> >         at 
> > org.jpox.store.rdbms.table.ClassTable.insert(ClassTable.java:2171)
> >         at org.jpox.store.StoreManager.insert(StoreManager.java:757)
> >         at
> > org.jpox.state.StateManagerImpl.internalMakePersistent(StateManagerImpl.java:3456)
> >         at 
> > org.jpox.state.StateManagerImpl.makePersistent(StateManagerImpl.java:3429)
> >         at
> > org.jpox.AbstractPersistenceManager.internalMakePersistent(AbstractPersistenceManager.java:1150)
> >         at
> > org.jpox.AbstractPersistenceManager.makePersistent(AbstractPersistenceManager.java:1205)
> >         at
> > org.apache.jdo.tck.api.persistencemanager.lifecycle.MakePersistentAndInstancesNotReachable.createObjects(MakePersistentAndInstancesNotReachable.java:85)
> >         at
> > org.apache.jdo.tck.api.persistencemanager.lifecycle.MakePersistentAndInstancesNotReachable.test(MakePersistentAndInstancesNotReachable.java:69)
> >         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> >         at
> > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> >         at
> > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> >         at org.apache.jdo.tck.JDO_Test.runBare(JDO_Test.java:237)
> >         at 
> > org.apache.jdo.tck.util.BatchTestRunner.doRun(BatchTestRunner.java:107)
> >         at 
> > org.apache.jdo.tck.util.BatchTestRunner.start(BatchTestRunner.java:147)
> >         at 
> > org.apache.jdo.tck.util.BatchTestRunner.main(BatchTestRunner.java:122)
> > NestedThrowablesStackTrace:
> > ERROR 23505: The statement was aborted because it would have caused a 
> > duplicate
> > key value in a unique or primary key constraint or unique index identified 
> > by
> > 'COMPS_PK' defined on 'COMPANIES'.
> >         at 
> > org.apache.derby.iapi.error.StandardException.newException(Unknown Source)
> >         at 
> > org.apache.derby.impl.sql.execute.IndexChanger.insertAndCheckDups(Unknown
> > Source)
> >         at org.apache.derby.impl.sql.execute.IndexChanger.doInsert(Unknown 
> > Source)
> >         at org.apache.derby.impl.sql.execute.IndexChanger.insert(Unknown 
> > Source)
> >         at org.apache.derby.impl.sql.execute.IndexSetChanger.insert(Unknown 
> > Source)
> >         at 
> > org.apache.derby.impl.sql.execute.RowChangerImpl.insertRow(Unknown Source)
> >         at 
> > org.apache.derby.impl.sql.execute.InsertResultSet.normalInsertCore(Unknown
> > Source)
> >         at org.apache.derby.impl.sql.execute.InsertResultSet.open(Unknown 
> > Source)
> >         at 
> > org.apache.derby.impl.sql.GenericPreparedStatement.execute(Unknown Source)
> >         at 
> > org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(Unknown Source)
> >         at 
> > org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeStatement(Unknown
> > Source)
> >         at 
> > org.apache.derby.impl.jdbc.EmbedPreparedStatement.execute(Unknown Source)
> >         at
> > com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.execute(NewProxyPreparedStatement.java:911)
> >         at
> > org.jpox.store.rdbms.ParamLoggingPreparedStatement.execute(ParamLoggingPreparedStatement.java:212)
> >         at 
> > org.jpox.store.rdbms.request.Request.executeUpdate(Request.java:88)
> >         at 
> > org.jpox.store.rdbms.request.InsertRequest.execute(InsertRequest.java:267)
> >         at 
> > org.jpox.store.rdbms.table.ClassTable.insert(ClassTable.java:2171)
> >         at org.jpox.store.StoreManager.insert(StoreManager.java:757)
> >         at
> > org.jpox.state.StateManagerImpl.internalMakePersistent(StateManagerImpl.java:3456)
> >         at 
> > org.jpox.state.StateManagerImpl.makePersistent(StateManagerImpl.java:3429)
> >         at
> > org.jpox.AbstractPersistenceManager.internalMakePersistent(AbstractPersistenceManager.java:1150)
> >         at
> > org.jpox.AbstractPersistenceManager.makePersistent(AbstractPersistenceManager.java:1205)
> >         at
> > org.apache.jdo.tck.api.persistencemanager.lifecycle.MakePersistentAndInstancesNotReachable.createObjects(MakePersistentAndInstancesNotReachable.java:85)
> >         at
> > org.apache.jdo.tck.api.persistencemanager.lifecycle.MakePersistentAndInstancesNotReachable.test(MakePersistentAndInstancesNotReachable.java:69)
> >         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> >         at
> > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> >         at
> > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> >         at org.apache.jdo.tck.JDO_Test.runBare(JDO_Test.java:237)
> >         at 
> > org.apache.jdo.tck.util.BatchTestRunner.doRun(BatchTestRunner.java:107)
> >         at 
> > org.apache.jdo.tck.util.BatchTestRunner.start(BatchTestRunner.java:147)
> >         at 
> > org.apache.jdo.tck.util.BatchTestRunner.main(BatchTestRunner.java:122)
> > FAILURES!!!
> > Error summary:
> > 001 error:  SQL Exception: The statement was aborted because it would have
> > caused a duplicate key value in a unique or primary key constraint or unique
> > index identified by 'EMPS_PK' defined on 'PERSONS'.
> > 002 errors: SQL Exception: The statement was aborted because it would have
> > caused a duplicate key value in a unique or primary key constraint or unique
> > index identified by 'COMPS_PK' defined on 'COMPANIES'.
> > derby-app-pm-junit.txt:
> >     ** Tests run: 099, Time: 032 seconds. Failures: 0, Errors: 3
> > Excluded tests: [org.apache.jdo.tck.enhancement.FieldAccessModified,
> > org.apache.jdo.tck.enhancement.ImplementsPersistenceCapable]
> >   

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