Hi Kevin, The failure depends on the order of tests being executed and this is probably why my previous test run did not fail at these two.
Most likely there is nothing unique in PostgreSQL's date handling, maybe it is just more sensitive to differences between date/time column variants. Dates should be mapped to DATE and timestamps to ABSTIME, at least our dictionary specifies them such. What's unfortunate in our tests is that we have multiple entities which map to tables with same names but different columns, RuntimeTest1 in this case. Probably most of us have been struggling with that inconvenience already. RuntimeTest1 in two tests in question is defined as you described. This results in mapping to DATE column. Some other RuntimeTest1 omit the annotation which forces mapping to ABSTIME column. Maybe this should also map to DATE but I found nothing specific to PostgreSQL here. Anyway, our mapping mechanism is not perfect with such subtle changes to table definitions and hence errors. Maybe some of the test should drop/create their tables but the only reliable solution is that we don't create tables with same names but different columns. Unless we want to test the mapping tool :) Cheers, Milosz > Hi Milosz, > It seems that PostgreSQL is having problems with TemporalType.DATE fields. > The two tests below are failing because the RuntimeTest1 entity definition > can't be persisted to the database. The field it's complaining about is > below... > > @Temporal(TemporalType.DATE) > private Date dateField; > > Any uniqueness with Date fields in PostgreSQL? > > Kevin > > On Sat, Jan 23, 2010 at 7:31 AM, Miłosz Tylenda <[email protected]> wrote: > > > Hi All. > > > > I re-ran the tests on PostgreSQL and the auto-increment failures vanished. > > > > What's new, it is something related to cache or date handling - I observed > > two new failures. Stack traces below. > > > > Regards, > > Milosz > > > > > > testQueryImplicitEvictions(org.apache.openjpa.persistence.datacache.TestSJVMCache) > > > > testQueryImplicitEvictions(org.apache.openjpa.persistence.datacache.TestDataCachePCDataGenerator) > > > > > > Tests run: 30, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 57.511 sec > > <<< FAILURE! > > testQueryImplicitEvictions(org.apache.openjpa.persistence.datacache.TestSJVMCache) > > Time elapsed: 1.441 sec <<< ERROR! > > <openjpa-2.0.0-SNAPSHOT-rsvn: This client is too old to work with working > > copy '/alt/eclipse322/workspace/open-jpa/openjpa-lib/..'; please get a newer > > Subversion client fatal store error> > > org.apache.openjpa.persistence.RollbackExc > > eption: The transaction has been rolled back. See the nested exceptions > > for details on the errors that occurred. > > at > > org.apache.openjpa.persistence.EntityManagerImpl.commit(EntityManagerImpl.java:568) > > at > > org.apache.openjpa.persistence.common.utils.AbstractTestCase.endTx(AbstractTestCase.java:278) > > at > > org.apache.openjpa.persistence.datacache.CacheTest.testQueryImplicitEvictions(CacheTest.java:1135) > > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > > at > > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) > > at > > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) > > at java.lang.reflect.Method.invoke(Method.java:597) > > at junit.framework.TestCase.runTest(TestCase.java:154) > > at > > org.apache.openjpa.persistence.test.AbstractPersistenceTestCase.runTest(AbstractPersistenceTestCase.java:514) > > at junit.framework.TestCase.runBare(TestCase.java:127) > > at > > org.apache.openjpa.persistence.test.AbstractPersistenceTestCase.runBare(AbstractPersistenceTestCase.java:501) > > at > > org.apache.openjpa.persistence.test.AbstractPersistenceTestCase.runBare(AbstractPersistenceTestCase.java:477) > > at junit.framework.TestResult$1.protect(TestResult.java:106) > > at junit.framework.TestResult.runProtected(TestResult.java:124) > > at junit.framework.TestResult.run(TestResult.java:109) > > at junit.framework.TestCase.run(TestCase.java:118) > > at > > org.apache.openjpa.persistence.test.AbstractPersistenceTestCase.run(AbstractPersistenceTestCase.java:177) > > at junit.framework.TestSuite.runTest(TestSuite.java:208) > > at junit.framework.TestSuite.run(TestSuite.java:203) > > at sun.reflect.GeneratedMethodAccessor54.invoke(Unknown Source) > > at > > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) > > at java.lang.reflect.Method.invoke(Method.java:597) > > at > > org.apache.maven.surefire.junit.JUnitTestSet.execute(JUnitTestSet.java:213) > > at > > org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.executeTestSet(AbstractDirectoryTestSuite.java:140) > > at > > org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.execute(AbstractDirectoryTestSuite.java:127) > > at org.apache.maven.surefire.Surefire.run(Surefire.java:177) > > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > > at > > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) > > at > > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) > > at java.lang.reflect.Method.invoke(Method.java:597) > > at > > org.apache.maven.surefire.booter.SurefireBooter.runSuitesInProcess(SurefireBooter.java:345) > > at > > org.apache.maven.surefire.booter.SurefireBooter.main(SurefireBooter.java:1009) > > Caused by: <openjpa-2.0.0-SNAPSHOT-rsvn: This client is too old to work > > with working copy '/alt/eclipse322/workspace/open-jpa/openjpa-lib/..'; > > please get a newer Subversion client fatal general error> > > org.apache.openjpa.persistenc > > e.PersistenceException: The transaction has been rolled back. See the > > nested exceptions for details on the errors that occurred. > > at > > org.apache.openjpa.kernel.BrokerImpl.newFlushException(BrokerImpl.java:2273) > > at org.apache.openjpa.kernel.BrokerImpl.flush(BrokerImpl.java:2115) > > at > > org.apache.openjpa.kernel.BrokerImpl.flushSafe(BrokerImpl.java:2013) > > at > > org.apache.openjpa.kernel.BrokerImpl.beforeCompletion(BrokerImpl.java:1931) > > at > > org.apache.openjpa.kernel.LocalManagedRuntime.commit(LocalManagedRuntime.java:81) > > at org.apache.openjpa.kernel.BrokerImpl.commit(BrokerImpl.java:1455) > > at > > org.apache.openjpa.kernel.DelegatingBroker.commit(DelegatingBroker.java:903) > > at > > org.apache.openjpa.persistence.EntityManagerImpl.commit(EntityManagerImpl.java:551) > > ... 31 more > > Caused by: <openjpa-2.0.0-SNAPSHOT-rsvn: This client is too old to work > > with working copy '/alt/eclipse322/workspace/open-jpa/openjpa-lib/..'; > > please get a newer Subversion client nonfatal general error> > > org.apache.openjpa.persist > > ence.PersistenceException: ERROR: column "datefield" is of type abstime but > > expression is of type date > > Hint: You will need to rewrite or cast the expression. > > Position: 146 {prepstmnt 33138943 INSERT INTO RuntimeTest1 (id, > > bigDecimalField, bigIntegerField, booleanField, booleanObjField, byteField, > > byteObjfield, charField, charObjField, dateField, doubleField, > > doubleObjField, floatFiel > > d, floatObjField, intField, intObjField, localeField, longField, > > longObjField, shortField, shortObjField, stringField, transString, DTYPE, > > SELFONEONE_ID, TRANSFIELD_ID) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, > > ?, ?, ?, ?, ?, > > ?, ?, ?, ?, ?, ?, ?, ?) [params=(long) 51, (null) null, (null) null, > > (boolean) false, (null) null, (byte) 0, (null) null, (int) 0, (null) null, > > (null) null, (double) 0.0, (null) null, (float) 0.0, (null) null, (int) 0, > > (null) nul > > l, (null) null, (long) 0, (null) null, (short) 0, (null) null, (null) null, > > (null) null, (String) dataRt1, (null) null, (null) null]} [code=0, > > state=42804] > > FailedObject: > > org.apache.openjpa.persistence.datacache.common.apps.runtimete...@9da711 > > at > > org.apache.openjpa.jdbc.sql.DBDictionary.narrow(DBDictionary.java:4831) > > at > > org.apache.openjpa.jdbc.sql.DBDictionary.newStoreException(DBDictionary.java:4784) > > at > > org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:137) > > at > > org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:78) > > at > > org.apache.openjpa.jdbc.kernel.PreparedStatementManagerImpl.flushAndUpdate(PreparedStatementManagerImpl.java:143) > > at > > org.apache.openjpa.jdbc.kernel.BatchingPreparedStatementManagerImpl.flushAndUpdate(BatchingPreparedStatementManagerImpl.java:80) > > at > > org.apache.openjpa.jdbc.kernel.PreparedStatementManagerImpl.flushInternal(PreparedStatementManagerImpl.java:99) > > at > > org.apache.openjpa.jdbc.kernel.PreparedStatementManagerImpl.flush(PreparedStatementManagerImpl.java:87) > > at > > org.apache.openjpa.jdbc.kernel.ConstraintUpdateManager.flush(ConstraintUpdateManager.java:550) > > at > > org.apache.openjpa.jdbc.kernel.ConstraintUpdateManager.flush(ConstraintUpdateManager.java:106) > > at > > org.apache.openjpa.jdbc.kernel.BatchingConstraintUpdateManager.flush(BatchingConstraintUpdateManager.java:59) > > at > > org.apache.openjpa.jdbc.kernel.AbstractUpdateManager.flush(AbstractUpdateManager.java:103) > > at > > org.apache.openjpa.jdbc.kernel.AbstractUpdateManager.flush(AbstractUpdateManager.java:76) > > at > > org.apache.openjpa.jdbc.kernel.JDBCStoreManager.flush(JDBCStoreManager.java:680) > > at > > org.apache.openjpa.kernel.DelegatingStoreManager.flush(DelegatingStoreManager.java:130) > > at > > org.apache.openjpa.datacache.DataCacheStoreManager.flush(DataCacheStoreManager.java:540) > > at > > org.apache.openjpa.kernel.DelegatingStoreManager.flush(DelegatingStoreManager.java:130) > > ... 38 more > > > > > > Tests run: 30, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 58.9 sec > > <<< FAILURE! > > testQueryImplicitEvictions(org.apache.openjpa.persistence.datacache.TestDataCachePCDataGenerator) > > Time elapsed: 1.739 sec <<< ERROR! > > <openjpa-2.0.0-SNAPSHOT-rsvn: This client is too old to work with working > > copy '/alt/eclipse322/workspace/open-jpa/openjpa-lib/..'; please get a newer > > Subversion client fatal store error> > > org.apache.openjpa.persistence.RollbackExc > > eption: The transaction has been rolled back. See the nested exceptions > > for details on the errors that occurred. > > at > > org.apache.openjpa.persistence.EntityManagerImpl.commit(EntityManagerImpl.java:568) > > at > > org.apache.openjpa.persistence.common.utils.AbstractTestCase.endTx(AbstractTestCase.java:278) > > at > > org.apache.openjpa.persistence.datacache.CacheTest.testQueryImplicitEvictions(CacheTest.java:1135) > > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > > at > > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) > > at > > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) > > at java.lang.reflect.Method.invoke(Method.java:597) > > at junit.framework.TestCase.runTest(TestCase.java:154) > > at > > org.apache.openjpa.persistence.test.AbstractPersistenceTestCase.runTest(AbstractPersistenceTestCase.java:514) > > at junit.framework.TestCase.runBare(TestCase.java:127) > > at > > org.apache.openjpa.persistence.test.AbstractPersistenceTestCase.runBare(AbstractPersistenceTestCase.java:501) > > at > > org.apache.openjpa.persistence.test.AbstractPersistenceTestCase.runBare(AbstractPersistenceTestCase.java:477) > > at junit.framework.TestResult$1.protect(TestResult.java:106) > > at junit.framework.TestResult.runProtected(TestResult.java:124) > > at junit.framework.TestResult.run(TestResult.java:109) > > at junit.framework.TestCase.run(TestCase.java:118) > > at > > org.apache.openjpa.persistence.test.AbstractPersistenceTestCase.run(AbstractPersistenceTestCase.java:177) > > at junit.framework.TestSuite.runTest(TestSuite.java:208) > > at junit.framework.TestSuite.run(TestSuite.java:203) > > at sun.reflect.GeneratedMethodAccessor54.invoke(Unknown Source) > > at > > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) > > at java.lang.reflect.Method.invoke(Method.java:597) > > at > > org.apache.maven.surefire.junit.JUnitTestSet.execute(JUnitTestSet.java:213) > > at > > org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.executeTestSet(AbstractDirectoryTestSuite.java:140) > > at > > org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.execute(AbstractDirectoryTestSuite.java:127) > > at org.apache.maven.surefire.Surefire.run(Surefire.java:177) > > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > > at > > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) > > at > > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) > > at java.lang.reflect.Method.invoke(Method.java:597) > > at > > org.apache.maven.surefire.booter.SurefireBooter.runSuitesInProcess(SurefireBooter.java:345) > > at > > org.apache.maven.surefire.booter.SurefireBooter.main(SurefireBooter.java:1009) > > Caused by: <openjpa-2.0.0-SNAPSHOT-rsvn: This client is too old to work > > with working copy '/alt/eclipse322/workspace/open-jpa/openjpa-lib/..'; > > please get a newer Subversion client fatal general error> > > org.apache.openjpa.persistenc > > e.PersistenceException: The transaction has been rolled back. See the > > nested exceptions for details on the errors that occurred. > > at > > org.apache.openjpa.kernel.BrokerImpl.newFlushException(BrokerImpl.java:2273) > > at org.apache.openjpa.kernel.BrokerImpl.flush(BrokerImpl.java:2115) > > at > > org.apache.openjpa.kernel.BrokerImpl.flushSafe(BrokerImpl.java:2013) > > at > > org.apache.openjpa.kernel.BrokerImpl.beforeCompletion(BrokerImpl.java:1931) > > at > > org.apache.openjpa.kernel.LocalManagedRuntime.commit(LocalManagedRuntime.java:81) > > at org.apache.openjpa.kernel.BrokerImpl.commit(BrokerImpl.java:1455) > > at > > org.apache.openjpa.kernel.DelegatingBroker.commit(DelegatingBroker.java:903) > > at > > org.apache.openjpa.persistence.EntityManagerImpl.commit(EntityManagerImpl.java:551) > > ... 31 more > > Caused by: <openjpa-2.0.0-SNAPSHOT-rsvn: This client is too old to work > > with working copy '/alt/eclipse322/workspace/open-jpa/openjpa-lib/..'; > > please get a newer Subversion client nonfatal general error> > > org.apache.openjpa.persist > > ence.PersistenceException: ERROR: column "datefield" is of type abstime but > > expression is of type date > > Hint: You will need to rewrite or cast the expression. > > Position: 146 {prepstmnt 7445208 INSERT INTO RuntimeTest1 (id, > > bigDecimalField, bigIntegerField, booleanField, booleanObjField, byteField, > > byteObjfield, charField, charObjField, dateField, doubleField, > > doubleObjField, floatField > > , floatObjField, intField, intObjField, localeField, longField, > > longObjField, shortField, shortObjField, stringField, transString, DTYPE, > > SELFONEONE_ID, TRANSFIELD_ID) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, > > ?, ?, ?, ?, ?, > > ?, ?, ?, ?, ?, ?, ?, ?) [params=(long) 51, (null) null, (null) null, > > (boolean) false, (null) null, (byte) 0, (null) null, (int) 0, (null) null, > > (null) null, (double) 0.0, (null) null, (float) 0.0, (null) null, (int) 0, > > (null) null > > , (null) null, (long) 0, (null) null, (short) 0, (null) null, (null) null, > > (null) null, (String) dataRt1, (null) null, (null) null]} [code=0, > > state=42804] > > FailedObject: > > org.apache.openjpa.persistence.datacache.common.apps.runtimete...@768bd0 > > at > > org.apache.openjpa.jdbc.sql.DBDictionary.narrow(DBDictionary.java:4831) > > at > > org.apache.openjpa.jdbc.sql.DBDictionary.newStoreException(DBDictionary.java:4784) > > at > > org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:137) > > at > > org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:78) > > at > > org.apache.openjpa.jdbc.kernel.PreparedStatementManagerImpl.flushAndUpdate(PreparedStatementManagerImpl.java:143) > > at > > org.apache.openjpa.jdbc.kernel.BatchingPreparedStatementManagerImpl.flushAndUpdate(BatchingPreparedStatementManagerImpl.java:80) > > at > > org.apache.openjpa.jdbc.kernel.PreparedStatementManagerImpl.flushInternal(PreparedStatementManagerImpl.java:99) > > at > > org.apache.openjpa.jdbc.kernel.PreparedStatementManagerImpl.flush(PreparedStatementManagerImpl.java:87) > > at > > org.apache.openjpa.jdbc.kernel.ConstraintUpdateManager.flush(ConstraintUpdateManager.java:550) > > at > > org.apache.openjpa.jdbc.kernel.ConstraintUpdateManager.flush(ConstraintUpdateManager.java:106) > > at > > org.apache.openjpa.jdbc.kernel.BatchingConstraintUpdateManager.flush(BatchingConstraintUpdateManager.java:59) > > at > > org.apache.openjpa.jdbc.kernel.AbstractUpdateManager.flush(AbstractUpdateManager.java:103) > > at > > org.apache.openjpa.jdbc.kernel.AbstractUpdateManager.flush(AbstractUpdateManager.java:76) > > at > > org.apache.openjpa.jdbc.kernel.JDBCStoreManager.flush(JDBCStoreManager.java:680) > > at > > org.apache.openjpa.kernel.DelegatingStoreManager.flush(DelegatingStoreManager.java:130) > > at > > org.apache.openjpa.datacache.DataCacheStoreManager.flush(DataCacheStoreManager.java:540) > > at > > org.apache.openjpa.kernel.DelegatingStoreManager.flush(DelegatingStoreManager.java:130) > > ... 38 more > > > > > > > > > > > Milosz, > > > > > > Thanks again for running the jUnits on PostgreSQL. It uncovered a nasty > > pest, particularly unfriendly to PostgreSQL. The problem is fixed and the > > changes are in trunk. rev. 902177. > > > > > > -Jeremy > > > > > > > > > On Tue, Jan 19, 2010 at 3:22 PM, Miłosz Tylenda <[email protected]> wrote: > > > > > > Hi All, > > > > > > Recently the test suite on PostgreSQL got a few new failures related to > > auto-increment columns, probably after introducing delimiter support. I have > > communicated the details to Jeremy. > > > > > > Also, OPENJPA-1289 seems to be resolved. > > > > > > Regards, > > > Milosz > > > > > > > > > > > > > I'd also like to see OPENJPA-1410 make it into the release. This bug > > > > prevents OpenJPA 2.0 from running in some environments. Donald and I > > have > > > > been looking into the problem and it is tagged as critical. > > > > > > > > -Jeremy > > > > > > > > On Tue, Jan 19, 2010 at 11:44 AM, Michael Dick < > > [email protected]>wrote: > > > > > > > > > There's also the issue of WriteBehind support (OPENJPA-1150). This > > work > > > > > never got to the point where I'd be really comfortable including it > > in > > > > > 2.0.0. 2.1.0 would be a better target though and I'm inclined to back > > out > > > > > the code for the upcoming release. > > > > > > > > > > -mike > > > > > > > > > > > > > > > On Tue, Jan 19, 2010 at 11:15 AM, Kevin Sutter <[email protected]> > > wrote: > > > > > > > > > > > Hi Donald, > > > > > > I'd like to get the default settings for the DataCache figured out > > before > > > > > > we > > > > > > cut a 2.0 release [1]. We've been running with this turned "on" > > for our > > > > > > performance benchmarks, so why not have this as our default? I'm > > running > > > > > > our JUnit bucket as we speak... > > > > > > > > > > > > Thanks, > > > > > > Kevin > > > > > > > > > > > > [1] https://issues.apache.org/jira/browse/OPENJPA-1469 > > > > > > > > > > > > On Mon, Jan 18, 2010 at 9:57 PM, Donald Woods <[email protected]> > > wrote: > > > > > > > > > > > > > We're in pretty good shape for a 2.0.0 release. > > > > > > > Trunk is passing the JPA 2.0 TCK. > > > > > > > We have the broadest/best junit results over Derby, DB2, Oracle, > > MySQL > > > > > > > and MS SQL as we have for any release. > > > > > > > > > > > > > > Now, we could either release a Milestone 4 release and continue > > to work > > > > > > > on docs, samples, performance and the backlog issues or we could > > go > > > > > > > ahead and plan on cutting a 2.0.0 branch later this week with > > plans to > > > > > > > continue improving the 2.0 codebase in maintenance releases at > > least > > > > > > > every quarter. > > > > > > > > > > > > > > If you have any critical issues that you feel need to be resolved > > > > > before > > > > > > > we release 2.0.0, please update the JIRA Fix Version to 2.0.0 and > > set > > > > > > > the Priority, along with replying to this discussion thread with > > the > > > > > > > details of the issues you would like considered. After a couple > > days > > > > > of > > > > > > > discussions, we'll revisit the open issues and decide on which > > route to > > > > > > > take. > > > > > > > > > > > > > > > > > > > > > Thanks, > > > > > > > Donald > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
