You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@kylin.apache.org by "Shaofeng SHI (JIRA)" <ji...@apache.org> on 2016/07/28 06:48:21 UTC

[jira] [Closed] (KYLIN-1762) Query threw NPE with 3 or more join conditions

     [ https://issues.apache.org/jira/browse/KYLIN-1762?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Shaofeng SHI closed KYLIN-1762.
-------------------------------

Resolved in release 1.5.3 (2-16-07-28)

> Query threw NPE with 3 or more join conditions
> ----------------------------------------------
>
>                 Key: KYLIN-1762
>                 URL: https://issues.apache.org/jira/browse/KYLIN-1762
>             Project: Kylin
>          Issue Type: Bug
>          Components: Query Engine
>    Affects Versions: v1.5.2
>            Reporter: Yerui Sun
>            Assignee: Yerui Sun
>             Fix For: v1.5.3
>
>         Attachments: KYLIN-1762.patch
>
>
> Here's a example to re-produce the error with kylin sample data:
> {code}
> select t1.leaf_categ_id, max_price, min_price, sum_price
> from
> (select leaf_categ_id, sum(price) as sum_price from kylin_sales group by leaf_categ_id) t1
> join
> (select leaf_categ_id, max(price) as max_price from kylin_sales group by leaf_categ_id) t2
> on t1.leaf_categ_id = t2.leaf_categ_id
> join
> (select leaf_categ_id, min(price) as min_price from kylin_sales group by leaf_categ_id) t3
> on t1.leaf_categ_id = t3.leaf_categ_id
> order by t1.leaf_categ_id
> {code}
> And here's the error stack:
> {code}
> Caused by: java.lang.NullPointerException: null
> 	at org.apache.kylin.query.relnode.OLAPProjectRel.implementOLAP(OLAPProjectRel.java:104)
> 	at org.apache.kylin.query.relnode.OLAPRel$OLAPImplementor.visitChild(OLAPRel.java:81)
> 	at org.apache.kylin.query.relnode.OLAPSortRel.implementOLAP(OLAPSortRel.java:68)
> 	at org.apache.kylin.query.relnode.OLAPRel$OLAPImplementor.visitChild(OLAPRel.java:81)
> 	at org.apache.kylin.query.relnode.OLAPToEnumerableConverter.implement(OLAPToEnumerableConverter.java:69)
> 	at org.apache.calcite.adapter.enumerable.EnumerableRelImplementor.visitChild(EnumerableRelImplementor.java:97)
> 	at org.apache.calcite.adapter.enumerable.EnumerableSort.implement(EnumerableSort.java:70)
> 	at org.apache.calcite.adapter.enumerable.EnumerableRelImplementor.implementRoot(EnumerableRelImplementor.java:102)
> 	at org.apache.calcite.adapter.enumerable.EnumerableInterpretable.toBindable(EnumerableInterpretable.java:92)
> 	at org.apache.calcite.prepare.CalcitePrepareImpl$CalcitePreparingStmt.implement(CalcitePrepareImpl.java:1171)
> 	at org.apache.calcite.prepare.Prepare.prepareSql(Prepare.java:297)
> 	at org.apache.calcite.prepare.Prepare.prepareSql(Prepare.java:196)
> 	at org.apache.calcite.prepare.CalcitePrepareImpl.prepare2_(CalcitePrepareImpl.java:721)
> 	at org.apache.calcite.prepare.CalcitePrepareImpl.prepare_(CalcitePrepareImpl.java:588)
> 	at org.apache.calcite.prepare.CalcitePrepareImpl.prepareSql(CalcitePrepareImpl.java:558)
> 	at org.apache.calcite.jdbc.CalciteConnectionImpl.parseQuery(CalciteConnectionImpl.java:214)
> 	at org.apache.calcite.jdbc.CalciteMetaImpl.prepareAndExecute(CalciteMetaImpl.java:573)
> 	at org.apache.calcite.avatica.AvaticaConnection.prepareAndExecuteInternal(AvaticaConnection.java:571)
> 	at org.apache.calcite.avatica.AvaticaStatement.executeInternal(AvaticaStatement.java:135)
> 	at org.apache.calcite.avatica.AvaticaStatement.executeQuery(AvaticaStatement.java:186)
> {code}
> In OLAPJoinRel.implementOLAP, context only be allocated by root join node, and be deleted in all join node, including child join node. In another word, the count of context allocating and deleting is mismatch. That made the parent node of join got an empty context, and threw NPE.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)