persistence@glassfish.java.net

Re: 2 failures of entity-persistence-tests on Derby

From: <CHRISTOPHER.DELAHUNT_at_ORACLE.COM>
Date: Mon, 12 Mar 2007 17:39:50 +0000 (GMT)

I checked in a fix for the PrimitiveArrayPKCachingJUnitTestCase test, so
that it will log a warning and not run the tests if it is run on a
non-oracle database.


--- Original Message ---
> Hi,
>
> I see the same two errors when running the entity-persistent-tests
> on derby.
>
> Regards Michael
>
> > Hello, Marina
> >
> > Of course I'm running on Derby Network Server. :-)
> >
> > Yes, it's strange the same exception is being thrown as the issue 1451
> > with 1451 fix.
> > Here is the root cause exception:
> >
> > oracle.toplink.essentials.exceptions.DatabaseException
> > Internal Exception: org.apache.derby.client.am.SqlException: Syntax
> > error: Encountered "NULL" at line 1, column 111.Error Code: -1
> > Call:INSERT INTO session.TL_CMP3_EMPLOYEE (EMP_ID, VERSION, ADDR_ID,
> > ROOM_NUM) SELECT t0.EMP_ID, (t0.VERSION + 1), NULL, t1.SALARY FROM
> > CMP3_EMPLOYEE t0, CMP3_SALARY t1 WHERE ((t0.F_NAME =
> > 'testUpdateUsingTempStorage') AND (t1.EMP_ID = t0.EMP_ID))
> > Query:UpdateAllQuery()
> > at
> > oracle.toplink.essentials.exceptions.DatabaseException.sqlException
> > (DatabaseException.java:295)
> > at
> > oracle.toplink.essentials.internal.databaseaccess.DatabaseAccessor.executeDirectNoSelect(DatabaseAccessor.java:639)
> > at
> > oracle.toplink.essentials.internal.databaseaccess.DatabaseAccessor.executeNoSelect
> > (DatabaseAccessor.java:688)
> > at
> > oracle.toplink.essentials.internal.databaseaccess.DatabaseAccessor.basicExecuteCall(DatabaseAccessor.java:477)
> > at
> > oracle.toplink.essentials.internal.databaseaccess.DatabaseAccessor.executeCall
> > (DatabaseAccessor.java:437)
> > at
> > oracle.toplink.essentials.internal.sessions.AbstractSession.executeCall(AbstractSession.java:675)
> > at
> > oracle.toplink.essentials.internal.sessions.IsolatedClientSession.executeCall
> > (IsolatedClientSession.java:135)
> > at
> > oracle.toplink.essentials.internal.queryframework.DatasourceCallQueryMechanism.executeCall(DatasourceCallQueryMechanism.java:213)
> > at
> > oracle.toplink.essentials.internal.queryframework.DatasourceCallQueryMechanism.updateAllUsingTempTables
> > (DatasourceCallQueryMechanism.java:749)
> > at
> > oracle.toplink.essentials.internal.queryframework.DatasourceCallQueryMechanism.updateAll(DatasourceCallQueryMechanism.java:711)
> > at
> > oracle.toplink.essentials.queryframework.UpdateAllQuery.executeDatabaseQuery
> > (UpdateAllQuery.java:165)
> > at
> > oracle.toplink.essentials.queryframework.DatabaseQuery.execute(DatabaseQuery.java:609)
> > at
> > oracle.toplink.essentials.queryframework.DatabaseQuery.executeInUnitOfWork(DatabaseQuery.java
> > :536)
> > at
> > oracle.toplink.essentials.queryframework.ModifyAllQuery.executeInUnitOfWork(ModifyAllQuery.java:153)
> > at
> > oracle.toplink.essentials.internal.sessions.UnitOfWorkImpl.internalExecuteQuery(UnitOfWorkImpl.java
> > :2219)
> > at
> > oracle.toplink.essentials.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:937)
> > at
> > oracle.toplink.essentials.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:909)
> >
> > at
> > oracle.toplink.essentials.internal.ejb.cmp3.base.EJBQueryImpl.executeUpdate(EJBQueryImpl.java:372)
> > at
> > oracle.toplink.essentials.testing.tests.cmp3.advanced.EntityManagerJUnitTestSuite.internalUpdateUsingTempStorage
> > (EntityManagerJUnitTestSuite.java:3204)
> > Caused by: org.apache.derby.client.am.SqlException: Syntax error:
> > Encountered "NULL" at line 1, column 111.
> > at org.apache.derby.client.am.Statement.completeSqlca (Unknown Source)
> > at
> > org.apache.derby.client.am.Statement.completeExecuteImmediate(Unknown
> > Source)
> > at
> > org.apache.derby.client.net.NetStatementReply.parseEXCSQLIMMreply(Unknown
> > Source)
> > at
> > org.apache.derby.client.net.NetStatementReply.readExecuteImmediate
> > (Unknown Source)
> > at
> > org.apache.derby.client.net.StatementReply.readExecuteImmediate(Unknown
> > Source)
> > at
> > org.apache.derby.client.net.NetStatement.readExecuteImmediate_(Unknown
> > Source)
> > at org.apache.derby.client.am.Statement.readExecuteImmediate
> > (Unknown Source)
> > at org.apache.derby.client.am.Statement.flowExecute(Unknown Source)
> > at org.apache.derby.client.am.Statement.executeUpdateX(Unknown Source)
> > at org.apache.derby.client.am.Statement.executeUpdate (Unknown Source)
> > at
> > oracle.toplink.essentials.internal.databaseaccess.DatabaseAccessor.executeDirectNoSelect(DatabaseAccessor.java:630)
> >
> >
> > On 3/11/07, * Marina Vatkina* <Marina.Vatkina_at_sun.com
> > <mailto:Marina.Vatkina_at_sun.com>> wrote:
> >
> > This is really strange as the issue 1451 was a fix for Derby.
> >
> > Wonseok, are you using an embedded or a server mode for Derby?
> >
> > thanks,
> > -marina
> >
> > Wonseok Kim wrote:
> > > Hi, Andrei and Chris
> > >
> > > On Derby I'm hitting 2 failures which seem to be derived from recent
> > > changes.
> > >
> > > Testcase: testUpdateUsingTempStorageWithParameter took 0.15 sec
> > > FAILED
> > > Exception thrown: class
> > > oracle.toplink.essentials.exceptions.DatabaseException
> > > junit.framework.AssertionFailedError: Exception thrown: class
> > > oracle.toplink.essentials.exceptions.DatabaseException
> > > at
> > >
> > oracle.toplink.essentials.testing.tests.cmp3.advanced.EntityManagerJUnitTestSuite.internalUpdateUsingTempStorage
> >
> > > (EntityManagerJUnitTestSuite.java:3213)
> > > at
> > >
> > oracle.toplink.essentials.testing.tests.cmp3.advanced.EntityManagerJUnitTestSuite.testUpdateUsingTempStorageWithParameter(EntityManagerJUnitTestSuite.java
> > :3159)
> > > at
> > junit.extensions.TestDecorator.basicRun(TestDecorator.java:22)
> > > at junit.extensions.TestSetup$1.protect(TestSetup.java:19)
> > > at junit.extensions.TestSetup.run(TestSetup.java:23)
> > >
> > > Testcase: unknown took 0 sec
> > > FAILED
> > > Warning, RAW type used for Primary keys only supported on Oracle
> > > junit.framework.AssertionFailedError: Warning, RAW type used for
> > Primary
> > > keys only supported on Oracle
> > > at
> > >
> > oracle.toplink.essentials.testing.tests.cmp3.datatypes.arraypks.PrimitiveArrayPKCachingJUnitTestCase$1.setUp
> > > (PrimitiveArrayPKCachingJUnitTestCase.java:46)
> > > at junit.extensions.TestSetup$1.protect (TestSetup.java:18)
> > > at junit.extensions.TestSetup.run(TestSetup.java:23)
> > >
> > > The first test was added with the fix of issue 1451 by Andrei.
> > Is this
> > > test expected to work on Derby?
> > >
> > > The second test appears to be intended only for Oracle, but
> > which was
> > > added to FullRegressionTestSuite like below. Shouldn't this test
> > skip in
> > > case of other database?
> > >
> > http://fisheye5.cenqua.com/changelog/glassfish/entity-persistence-tests?cs=MAIN:chris_delahunt:20070309151945
> > >
> > > Thanks,
> > > -Wonseok
> >
> >