Sybase queries that select columns from derived tables fail OOTB
----------------------------------------------------------------

                 Key: OPENJPA-587
                 URL: https://issues.apache.org/jira/browse/OPENJPA-587
             Project: OpenJPA
          Issue Type: Bug
          Components: jdbc
    Affects Versions: 1.1.0
         Environment: OpenJPA 1.1.0-SNAPSHOT
version id: openjpa-1.1.0-SNAPSHOT-r422266:650703
Apache svn revision: 422266:650703
            Reporter: Sandeep Shrivastava


Sybase SQL syntax requires that all derived tables have a correlation name. The 
DBDictionary default for requiresAliasForSubselect is false. Overriding it to 
true in the Sybase dictionary class fixes the problem OOTB else users have to 
override it in the configuration by default with Sybase.

This test simply persists a JDO entity (having embedded entities) and then 
tries to execute a query as follows:
    public void testQuery() {
        PersistenceManager pm = getPM();
        Query q = pm.newQuery(EmbeddedOwnerPC.class,
            'stringField == \'string1\' && embedded.intField == 1 '
                + '&& complexEmbedded.stringField == \'recurseEmbedString\' '
                + '&& complexEmbedded.ownerField.id1 == 3 '
                + '&& complexEmbedded.stringSet.contains (\'foo\') '
                + '&& complexEmbedded.embedded != null '
                // just to test not null
                +
                '&& complexEmbedded.embedded.stringField == 
\'embedString2\'');

        Collection results = (Collection) q.execute();


Exception is : 
[testlogic] [2008-03-28 12:15:57,426] BEGIN 
org.apache.cactus.ServletTestCase.testQuery
[testlogic] 
file:/D:/weblogic/dev/src/wls/qa/tests/functional/jdo/kodo/datacache/datacacheR1.test.xml#testdatacache
[testlogic] <openjpa-1.1.0-SNAPSHOT-r420667:634150 nonfatal store error> 
kodo.jdo.DataStoreException: The derived table expression is missing a 
correlation name. Check derived table syntax in the Reference Manual.
 
  
org.apache.cactus.ServletTestCase.testQuery
[testlogic] 
file:/D:/weblogic/dev/src/wls/qa/tests/functional/jdo/kodo/datacache/datacacheR1.test.xml#testdatacache
[testlogic] <openjpa-1.1.0-SNAPSHOT-r420667:634150 nonfatal store error> 
kodo.jdo.DataStoreException: The derived table expression is missing a 
correlation name. Check derived table syntax in the Reference Manual.

[testlogic]     at 
org.apache.openjpa.jdbc.sql.SQLExceptions.narrow(SQLExceptions.java:146)
[testlogic]     at 
org.apache.openjpa.jdbc.sql.DBDictionary.newStoreException(DBDictionary.java:4081)
[testlogic]     at 
org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:102)
[testlogic]     at 
org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:88)
[testlogic]     at 
org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:64)
[testlogic]     at 
org.apache.openjpa.jdbc.kernel.SelectResultObjectProvider.handleCheckedException(SelectResultObjectProvider.java:155)
[testlogic]     at 
org.apache.openjpa.datacache.QueryCacheStoreQuery$CachingResultObjectProvider.handleCheckedException(QueryCacheStoreQuery.java:639)
[testlogic]     at 
org.apache.openjpa.lib.rop.WindowResultList.size(WindowResultList.java:95)
[testlogic]     at 
org.apache.openjpa.kernel.DelegatingResultList.size(DelegatingResultList.java:136)
[testlogic]     at kodo.kernel.TestEmbedded.testQuery(TestEmbedded.java:296)
[testlogic]     at 
org.apache.cactus.internal.AbstractCactusTestCase.runBareServer(AbstractCactusTestCase.java:149)
[testlogic]     at 
org.apache.cactus.internal.server.AbstractWebTestCaller.doTest(AbstractWebTestCaller.java:119)
[testlogic]     at 
org.apache.cactus.internal.server.AbstractWebTestController.handleRequest_aroundBody0(AbstractWebTestController.java:93)
[testlogic]     at 
org.apache.cactus.internal.server.AbstractWebTestController.handleRequest_aroundBody1$advice(AbstractWebTestController.java:224)
[testlogic]     at 
org.apache.cactus.internal.server.AbstractWebTestController.handleRequest(AbstractWebTestController.java:1)
[testlogic]     at 
org.apache.cactus.server.ServletTestRedirector.doPost_aroundBody2(ServletTestRedirector.java:101)
[testlogic]     at 
org.apache.cactus.server.ServletTestRedirector.doPost_aroundBody3$advice(ServletTestRedirector.java:224)
[testlogic]     at 
org.apache.cactus.server.ServletTestRedirector.doPost(ServletTestRedirector.java:1)
[testlogic]     at 
org.apache.cactus.server.ServletTestRedirector.doGet_aroundBody0(ServletTestRedirector.java:72)
[testlogic]     at 
org.apache.cactus.server.ServletTestRedirector.doGet_aroundBody1$advice(ServletTestRedirector.java:224)
[testlogic]     at 
org.apache.cactus.server.ServletTestRedirector.doGet(ServletTestRedirector.java:1)
[testlogic]     at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
[testlogic]     at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to