Uploaded image for project: 'OpenJPA'
  1. OpenJPA
  2. OPENJPA-587

Sybase queries that select columns from derived tables fail OOTB

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 1.1.0
    • 1.1.0
    • jdbc
    • None
    • OpenJPA 1.1.0-SNAPSHOT
      version id: openjpa-1.1.0-SNAPSHOT-r422266:650703
      Apache svn revision: 422266:650703

    Description

      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)

      Attachments

        1. openjpa-1.1.0-SNAPSHOT-r422266-650703.patch
          0.6 kB
          Sandeep Shrivastava

        Activity

          People

            Unassigned Unassigned
            sandeeps@bea.com Sandeep Shrivastava
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Time Tracking

                Estimated:
                Original Estimate - 24h
                24h
                Remaining:
                Remaining Estimate - 24h
                24h
                Logged:
                Time Spent - Not Specified
                Not Specified