[ https://issues.apache.org/jira/browse/KYLIN-4853?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Xiaoxiang Yu resolved KYLIN-4853. --------------------------------- Fix Version/s: v4.0.0-beta Resolution: Fixed Merged > QueryPreparedStatementCache invalid in Spark Query Engine > --------------------------------------------------------- > > Key: KYLIN-4853 > URL: https://issues.apache.org/jira/browse/KYLIN-4853 > Project: Kylin > Issue Type: Bug > Reporter: ShengJun Zheng > Assignee: ShengJun Zheng > Priority: Blocker > Fix For: v4.0.0-beta > > > Prepare statement cache imported from KYLIN-3434 get invalid in SparkQuery > Engine. > In SparkQuery Engine, physical plan will be created directly from RelNode, > which was not cached, it will cause prepared statment query fail after first > successful query. > Error Stack like this: > {code:java} > ava.sql.SQLException: exception while executing query: > java.lang.NullPointerException > at org.apache.calcite.avatica.Helper.createException(Helper.java:56) > at org.apache.calcite.avatica.Helper.createException(Helper.java:41) > at > org.apache.calcite.avatica.AvaticaConnection.executeQueryInternal(AvaticaConnection.java:577) > at > org.apache.calcite.avatica.AvaticaPreparedStatement.executeQuery(AvaticaPreparedStatement.java:137) > at > org.apache.kylin.rest.service.QueryService.executePrepareRequest(QueryService.java:1032) > at > org.apache.kylin.rest.service.QueryService.queryWithSqlMassage(QueryService.java:718) > Caused by: java.lang.RuntimeException: java.lang.NullPointerException > at > org.apache.kylin.query.exec.SparkExec.collectToEnumerable(SparkExec.java:46) > at Baz.bind(Unknown Source) > at > org.apache.calcite.jdbc.CalcitePrepare$CalciteSignature.enumerable(CalcitePrepare.java:365) > at > org.apache.calcite.jdbc.CalciteConnectionImpl.enumerable(CalciteConnectionImpl.java:301) > at > org.apache.calcite.jdbc.CalciteMetaImpl._createIterable(CalciteMetaImpl.java:559) > at > org.apache.calcite.jdbc.CalciteMetaImpl.createIterable(CalciteMetaImpl.java:550) > at > org.apache.calcite.avatica.AvaticaResultSet.execute(AvaticaResultSet.java:182) > at > org.apache.calcite.jdbc.CalciteResultSet.execute(CalciteResultSet.java:67) > at > org.apache.calcite.jdbc.CalciteResultSet.execute(CalciteResultSet.java:44) > at > org.apache.calcite.avatica.AvaticaConnection.executeQueryInternal(AvaticaConnection.java:573) > ... 84 more > Caused by: java.lang.NullPointerException > at > org.apache.kylin.query.runtime.CalciteToSparkPlaner.visit(CalciteToSparkPlaner.scala:45) > at org.apache.calcite.rel.RelVisitor.go(RelVisitor.java:61) > at > org.apache.kylin.query.runtime.SparkEngine.toSparkPlan(SparkEngine.java:61) > at > org.apache.kylin.query.runtime.SparkEngine.compute(SparkEngine.java:49) > at > org.apache.kylin.query.exec.QueryEngineFactory.compute(QueryEngineFactory.java:47) > at > org.apache.kylin.query.exec.SparkExec.collectToEnumerable(SparkExec.java:43) > {code} > > I solved this by cache RelNode to avoid SQL be parsed, optimized, code gen > again. wonder if there is better way. thanks ~ > -- This message was sent by Atlassian Jira (v8.3.4#803005)