| Michael Bouschen (JIRA) 2006-04-24, 7:57 am |
| [ http://issues.apache.org/jira/browse/JDO-93?page=all ]
Michael Bouschen reopened JDO-93:
---------------------------------
> CompletenessTest fails when navigating a self-referencing relationship
> ----------------------------------------------------------------------
>
> Key: JDO-93
> URL: http://issues.apache.org/jira/browse/JDO-93
> Project: JDO
> Type: Bug
> Components: tck20
> Reporter: Michael Bouschen
> Assignee: Erik Bengtson
>
> Running the CompletenessTest results in a JDODataStoreException with a nested exception complaining about the generated SQL:
> ERROR 42X03: Column name 'APPLICATIONIDENTITY0.PERSONS.PERSONID' is in more than one table in the FROM list.
> The test traverses a graph of persistent objects and calls getProtege on a FullTimeEmployee instance. This navigates the protege<->mentor relationship specified in the superclass Employee. Please note, protege<->mentor is a self referencing relationship
from Employee to Employee.
> The error message reads as if the generated SQL misses to specify a table alias for the table in the JOIN clause.
> I use the following configuration stored in test/conf/onetest.conf:
> jdo.tck.description = Completeness test with standard mapping, basic testdata with no relationships.
> jdo.tck.classes = org.apache.jdo.tck.mapping.CompletenessTest
> jdo.tck.testdata = org.apache.jdo.tck.pc.company.companyNoRelationships.xml
> jdo.tck.standarddata =
> jdo.tck.mapping = 0
> This is the maven call:
> maven -o -Djdo.tck.cfglist=onetest.conf -Djdo.tck.identitytypes=applicationidentity runtck.jdori
> Here is the stacktrace:
> test(org.apache.jdo.tck.mapping.CompletenessTest)javax.jdo.JDODataStoreException: Fetch request failed: SELECT applicationidentity0.PERSONS.PERSONID FROM applicationidentity0.PERSONS LEFT OUTER JOIN applicationidentity0.PERSONS ON applicationidentity0.P
ERSONS.PERSONID = applicationidentity0.PERSONS.MENTOR WHERE (applicationidentity0.PERSONS.PERSONID = ?)
> at org.jpox.store.rdbms.request.FetchRequest.execute(FetchRequest.java:196)
> at org.jpox.store.rdbms.table.ClassTable.fetch(ClassTable.java:1771)
> at org.jpox.store.StoreManager.fetch(StoreManager.java:684)
> at org.jpox.state.StateManagerImpl.loadNonDFGFields(StateManagerImpl.java:1612)
> at org.jpox.state.StateManagerImpl.isLoaded(StateManagerImpl.java:1733)
> at org.apache.jdo.tck.pc.company.Employee.jdoGetprotege(Employee.java)
> at org.apache.jdo.tck.pc.company.Employee.deepCompareFields(Employee.java:455)
> at org.apache.jdo.tck.pc.company.FullTimeEmployee.deepCompareFields(FullTimeEmployee.java:119)
> at org.apache.jdo.tck.mapping.CompletenessTest.test(CompletenessTest.java:102)
> 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:203)
> at org.apache.jdo.tck.util.BatchTestRunner.start(BatchTestRunner.java:128)
> at org.apache.jdo.tck.util.BatchTestRunner.main(BatchTestRunner.java:106)
> NestedThrowablesStackTrace:
> ERROR 42X03: Column name 'APPLICATIONIDENTITY0.PERSONS.PERSONID' is in more than one table in the FROM list.
> at org.apache.derby.iapi.error.StandardException.newException(StandardException.java)
> at org.apache.derby.impl.sql.compile.JoinNode.getMatchingColumn(JoinNode.java)
> at org.apache.derby.impl.sql.compile.FromList.bindColumnReference(FromList.java)
> at org.apache.derby.impl.sql.compile.ColumnReference.bindExpression(ColumnReference.java)
> at org.apache.derby.impl.sql.compile.ResultColumn.bindExpression(ResultColumn.java)
> at org.apache.derby.impl.sql.compile.ResultColumnList.bindExpressions(ResultColumnList.java)
> at org.apache.derby.impl.sql.compile.SelectNode.bindExpressions(SelectNode.java)
> at org.apache.derby.impl.sql.compile.DMLStatementNode.bindExpressions(DMLStatementNode.java)
> at org.apache.derby.impl.sql.compile.DMLStatementNode.bind(DMLStatementNode.java)
> at org.apache.derby.impl.sql.compile.ReadCursorNode.bind(ReadCursorNode.java)
> at org.apache.derby.impl.sql.compile.CursorNode.bind(CursorNode.java)
> at org.apache.derby.impl.sql.GenericStatement.prepMinion(GenericStatement.java)
> at org.apache.derby.impl.sql.GenericStatement.prepare(GenericStatement.java)
> at org.apache.derby.impl.sql.conn.GenericLanguageConnectionContext. prepareInternalStatement(GenericLanguage
ConnectionContext.java)
> at org.apache.derby.impl.jdbc.EmbedPreparedStatement.<init>(EmbedPreparedStatement.java)
> at org.apache.derby.impl.jdbc.EmbedPreparedStatement20.<init>(EmbedPreparedStatement20.java)
> at org.apache.derby.impl.jdbc.EmbedPreparedStatement30.<init>(EmbedPreparedStatement30.java)
> at org.apache.derby.jdbc.Driver30.newEmbedPreparedStatement(Driver30.java)
> at org.apache.derby.impl.jdbc.EmbedConnection.prepareStatement(EmbedConnection.java)
> at org.apache.derby.impl.jdbc.EmbedConnection.prepareStatement(EmbedConnection.java)
> at com.mchange.v2.c3p0.impl.NewProxyConnection.prepareStatement(NewProxyConnection.java:303)
> at org.jpox.store.rdbms.request.FetchRequest.execute(FetchRequest.java:140)
> at org.jpox.store.rdbms.table.ClassTable.fetch(ClassTable.java:1771)
> at org.jpox.store.StoreManager.fetch(StoreManager.java:684)
> at org.jpox.state.StateManagerImpl.loadNonDFGFields(StateManagerImpl.java:1612)
> at org.jpox.state.StateManagerImpl.isLoaded(StateManagerImpl.java:1733)
> at org.apache.jdo.tck.pc.company.Employee.jdoGetprotege(Employee.java)
> at org.apache.jdo.tck.pc.company.Employee.deepCompareFields(Employee.java:455)
> at org.apache.jdo.tck.pc.company.FullTimeEmployee.deepCompareFields(FullTimeEmployee.java:119)
> at org.apache.jdo.tck.mapping.CompletenessTest.test(CompletenessTest.java:102)
> 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:203)
> at org.apache.jdo.tck.util.BatchTestRunner.start(BatchTestRunner.java:128)
> at org.apache.jdo.tck.util.BatchTestRunner.main(BatchTestRunner.java:106)
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://issues.apache.org/jira/secur...nistrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira
|