ShengJun Zheng created KYLIN-4853:
-------------------------------------
Summary: 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
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)