Uploaded image for project: 'Cayenne'
  1. Cayenne
  2. CAY-1172

in ROP inheritance fails on select query

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Not A Problem
    • 3.0M5
    • None
    • ROP
    • None
    • cayenne build from svn on 20th Jan'08, ROP, derby, os x

    Description

      When performing a query for "ArticleProduct" class on remote client the following exception is thrown:

      [java] 21 Jan 2009 17:45:40,643 [btpool0-2 ] INFO org.apache.cayenne.access.QueryLogger :473 - — will run 1 query.
      [java] 21 Jan 2009 17:45:40,643 [btpool0-2 ] INFO org.apache.cayenne.access.QueryLogger :427 - — transaction started.
      [java] 21 Jan 2009 17:45:40,644 [btpool0-2 ] INFO org.apache.cayenne.access.QueryLogger :357 - SELECT t0.id FROM Product t0 WHERE (t0.isDeleted IS NULL) OR (t0.isDeleted = ?) OR (t0.type = ?) OR (t0.type = ?) OR (t0.type = ?) ORDER BY t0.name [bind: 1->isDeleted:0, 2->type:1, 3->type:2, 4->type:3]
      [java] 21 Jan 2009 17:45:40,654 [btpool0-2 ] INFO org.apache.cayenne.access.QueryLogger :401 - === returned 3 rows. - took 14 ms.
      [java] 21 Jan 2009 17:45:40,654 [btpool0-2 ] INFO org.apache.cayenne.access.QueryLogger :434 - +++ transaction committed.
      [java] 21 Jan 2009 17:45:40,655 [btpool0-2 ] INFO org.apache.cayenne.access.QueryLogger :473 - — will run 1 query.
      [java] 21 Jan 2009 17:45:40,657 [btpool0-2 ] INFO org.apache.cayenne.access.QueryLogger :427 - — transaction started.
      [java] 21 Jan 2009 17:45:40,666 [btpool0-2 ] INFO org.apache.cayenne.access.QueryLogger :357 - SELECT t0.id, t0.modifiedOn, t0.type, t0.notes, t0.isDeleted, t0.isWebVisible, t0.willowId, t0.incomeAccountId, t0.description, t0.taxId, t0.isOnSale, t0.priceExTax, t0.createdOn, t0.name, t0.SKU, t0.weight, t0.expiryDays, t0.expiryType, t0.value, t0.liabilityAccountId FROM Product t0 WHERE ((t0.id = ?) OR (t0.id = ?) OR (t0.id = ?)) AND ((t0.isDeleted IS NULL) OR (t0.isDeleted = ?) OR (t0.type = ?) OR (t0.type = ?) OR (t0.type = ?)) [bind: 1->id:240, 2->id:220, 3->id:200, 4->isDeleted:0, 5->type:1, 6->type:2, 7->type:3] - prepared in 9 ms.
      [java] 21 Jan 2009 17:45:40,703 [btpool0-2 ] INFO org.apache.cayenne.access.QueryLogger :453 - *** error.
      [java] java.lang.NullPointerException
      [java] at org.apache.cayenne.exp.parser.SimpleNode.evaluateChild(SimpleNode.java:315)
      [java] at org.apache.cayenne.exp.parser.ASTEqual.evaluateNode(ASTEqual.java:61)
      [java] at org.apache.cayenne.exp.parser.SimpleNode.evaluate(SimpleNode.java:327)
      [java] at org.apache.cayenne.exp.parser.SimpleNode.evaluateChild(SimpleNode.java:315)
      [java] at org.apache.cayenne.exp.parser.ASTOr.evaluateNode(ASTOr.java:69)
      [java] at org.apache.cayenne.exp.parser.SimpleNode.evaluate(SimpleNode.java:327)
      [java] at org.apache.cayenne.exp.Expression.match(Expression.java:367)
      [java] at org.apache.cayenne.map.EntityInheritanceTree.entityMatchingRow(EntityInheritanceTree.java:92)
      [java] at org.apache.cayenne.access.jdbc.DataRowPostProcessor.getOverrides(DataRowPostProcessor.java:147)
      [java] at org.apache.cayenne.access.jdbc.DataRowPostProcessor.postprocessRow(DataRowPostProcessor.java:128)
      [java] at org.apache.cayenne.access.jdbc.InheritanceAwareRowReader.postprocessRow(InheritanceAwareRowReader.java:45)
      [java] at org.apache.cayenne.access.jdbc.FullRowReader.readRow(FullRowReader.java:54)
      [java] at org.apache.cayenne.access.jdbc.FullRowReader.readRow(FullRowReader.java:31)
      [java] at org.apache.cayenne.access.jdbc.JDBCResultIterator.nextRow(JDBCResultIterator.java:194)
      [java] at org.apache.cayenne.access.jdbc.JDBCResultIterator.allRows(JDBCResultIterator.java:171)
      [java] at org.apache.cayenne.access.jdbc.SelectAction.performAction(SelectAction.java:155)
      [java] at org.apache.cayenne.access.DataNodeQueryAction.runQuery(DataNodeQueryAction.java:87)
      [java] at org.apache.cayenne.access.DataNode.performQueries(DataNode.java:236)
      [java] at org.apache.cayenne.access.DataDomainQueryAction.runQuery(DataDomainQueryAction.java:422)
      [java] at org.apache.cayenne.access.DataDomainQueryAction.access$000(DataDomainQueryAction.java:66)
      [java] at org.apache.cayenne.access.DataDomainQueryAction$2.transform(DataDomainQueryAction.java:395)
      [java] at org.apache.cayenne.access.DataDomain.runInTransaction(DataDomain.java:846)
      [java] at org.apache.cayenne.access.DataDomainQueryAction.runQueryInTransaction(DataDomainQueryAction.java:392)
      [java] at org.apache.cayenne.access.DataDomainQueryAction.execute(DataDomainQueryAction.java:118)
      [java] at org.apache.cayenne.access.DataDomain.onQuery(DataDomain.java:739)
      [java] at org.apache.cayenne.util.ObjectContextQueryAction.runQuery(ObjectContextQueryAction.java:316)
      [java] at org.apache.cayenne.util.ObjectContextQueryAction.execute(ObjectContextQueryAction.java:95)
      [java] at org.apache.cayenne.access.DataContext.onQuery(DataContext.java:1267)
      [java] at org.apache.cayenne.access.DataContext.performQuery(DataContext.java:1256)
      [java] 21/01/2009 17:45:40 com.caucho.hessian.server.HessianSkeleton invoke
      [java] WARNING: org.apache.cayenne.CayenneRuntimeException: [v.3.0-SNAPSHOT ${project.build.date} ${project.build.time}] Exception processing message org.apache.cayenne.remote.QueryMessage of type Query
      [java] at org.apache.cayenne.access.IncrementalFaultList.resolveInterval(IncrementalFaultList.java:295)
      [java] at org.apache.cayenne.access.IncrementalFaultList.get(IncrementalFaultList.java:550)
      [java] at org.apache.cayenne.access.IncrementalFaultList$1.next(IncrementalFaultList.java:467)
      [java] at org.apache.cayenne.access.ClientServerChannelQueryAction.toClientObjects(ClientServerChannelQueryAction.java:187)
      [java] at org.apache.cayenne.access.ClientServerChannelQueryAction.interceptObjectConversion(ClientServerChannelQueryAction.java:162)
      [java] at org.apache.cayenne.access.ClientServerChannelQueryAction.execute(ClientServerChannelQueryAction.java:69)
      [java] at org.apache.cayenne.access.ClientServerChannel.onQuery(ClientServerChannel.java:81)
      [java] at org.apache.cayenne.remote.service.DispatchHelper.dispatch(DispatchHelper.java:39)
      [java] at org.apache.cayenne.remote.service.BaseRemoteService.processMessage(BaseRemoteService.java:152)
      [java] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      [java] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
      [java] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      [java] at java.lang.reflect.Method.invoke(Method.java:585)
      [java] at com.caucho.hessian.server.HessianSkeleton.invoke(HessianSkeleton.java:180)
      [java] at com.caucho.hessian.server.HessianSkeleton.invoke(HessianSkeleton.java:109)
      [java] at com.caucho.hessian.server.HessianServlet.service(HessianServlet.java:396)
      [java] at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487)
      [java] at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1097)
      [java] at ish.oncourse.server.SecurityFilter.doFilter(SecurityFilter.java:103)
      [java] at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1088)
      [java] at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:360)
      [java] at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
      [java] at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
      [java] at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:729)
      [java] at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:206)
      [java] at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
      [java] at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
      [java] at org.mortbay.jetty.Server.handle(Server.java:324)
      [java] at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505)
      [java] at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:843)
      [java] at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:729)
      [java] at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:205)
      [java] at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380)
      [java] at org.mortbay.jetty.bio.SocketConnector$Connection.run(SocketConnector.java:228)
      [java] at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:488)

      the model is defined as follows:

      <obj-entity name="ArticleProduct" superEntityName="Product" className="ish.oncourse.server.cayenne.ArticleProduct" clientClassName="ish.oncourse.cayenne.ArticleProduct">
      <qualifier><![CDATA[type = 1]]></qualifier>
      <obj-attribute name="weight" type="java.lang.Double" db-attribute-path="weight"/>
      </obj-entity>
      <obj-entity name="Product" abstract="true" className="ish.oncourse.server.cayenne.Product" clientClassName="ish.oncourse.cayenne.Product" dbEntityName="Product" superClassName="ish.oncourse.server.cayenne.glue.CayenneDataObject" clientSuperClassName="ish.oncourse.cayenne.glue.PersistentObject">
      <qualifier><![CDATA[(isDeleted = null) or (isDeleted = 0)]]></qualifier>
      <obj-attribute name="createdOn" type="java.util.Date" db-attribute-path="createdOn"/>
      <obj-attribute name="description" type="java.lang.String" db-attribute-path="description"/>
      <obj-attribute name="isDeleted" type="java.lang.Boolean" db-attribute-path="isDeleted"/>
      <obj-attribute name="isOnSale" type="java.lang.Boolean" db-attribute-path="isOnSale"/>
      <obj-attribute name="isWebVisible" type="java.lang.Boolean" db-attribute-path="isWebVisible"/>
      <obj-attribute name="modifiedOn" type="java.util.Date" db-attribute-path="modifiedOn"/>
      <obj-attribute name="name" type="java.lang.String" db-attribute-path="name"/>
      <obj-attribute name="notes" type="java.lang.String" db-attribute-path="notes"/>
      <obj-attribute name="priceExTax" type="ish.math.Money" db-attribute-path="priceExTax"/>
      <obj-attribute name="sku" type="java.lang.String" db-attribute-path="SKU"/>
      <obj-attribute name="type" type="ish.oncourse.cayenne.ProductType" db-attribute-path="type"/>
      <obj-attribute name="willowId" type="java.lang.Long" db-attribute-path="willowId"/>
      </obj-entity>

      Attachments

        Activity

          People

            Unassigned Unassigned
            marcin Marcin Skladaniec
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: