This is an automated email from the ASF dual-hosted git repository.
xxyu pushed a commit to branch kylin-on-parquet-v2
in repository https://gitbox.apache.org/repos/asf/kylin.git
The following commit(s) were added to refs/heads/kylin-on-parquet-v2 by this
push:
new 44402d3 KYLIN-4853 QueryPreparedStatementCache invalid in Spark Query
Engine. (#1532)
44402d3 is described below
commit 44402d3c39cecff9a71dea2edc85bae72b8ab224
Author: zhengshengjun <[email protected]>
AuthorDate: Tue Jan 5 18:31:16 2021 +0800
KYLIN-4853 QueryPreparedStatementCache invalid in Spark Query Engine.
(#1532)
---
.../java/org/apache/kylin/rest/service/QueryService.java | 14 ++++++++++++++
1 file changed, 14 insertions(+)
diff --git
a/server-base/src/main/java/org/apache/kylin/rest/service/QueryService.java
b/server-base/src/main/java/org/apache/kylin/rest/service/QueryService.java
index 0801432..855174b 100644
--- a/server-base/src/main/java/org/apache/kylin/rest/service/QueryService.java
+++ b/server-base/src/main/java/org/apache/kylin/rest/service/QueryService.java
@@ -703,11 +703,23 @@ public class QueryService extends BasicService {
if (getConfig().isQueryPreparedStatementCacheEnable() &&
prepareSqlRequest.isEnableStatementCache()) {
try {
preparedContext =
preparedContextPool.borrowObject(preparedContextKey);
+
+ // preparedContext initialized by current thread, put
relNode and resultType into cache
+ if (preparedContext.olapRel == null) {
+ preparedContext.olapRel =
QueryContextFacade.current().getOlapRel();
+ preparedContext.resultType =
(QueryContextFacade.current().getResultType());
+ } else {
+ //set cached RelNode and ResultType into current
QueryContext
+
QueryContextFacade.current().setOlapRel(preparedContext.olapRel);
+
QueryContextFacade.current().setResultType(preparedContext.resultType);
+ }
+
borrowPrepareContext = true;
} catch (NoSuchElementException noElementException) {
borrowPrepareContext = false;
preparedContext =
createPreparedContext(sqlRequest.getProject(), sqlRequest.getSql());
}
+
for (OLAPContext olapContext :
preparedContext.olapContexts) {
resetRealizationInContext(olapContext);
OLAPContext.registerContext(olapContext);
@@ -1404,6 +1416,8 @@ public class QueryService extends BasicService {
private Connection conn;
private PreparedStatement preparedStatement;
private Collection<OLAPContext> olapContexts;
+ private Object olapRel;
+ private Object resultType;
public PreparedContext(Connection conn, PreparedStatement
preparedStatement,
Collection<OLAPContext> olapContexts) {