You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kylin.apache.org by sh...@apache.org on 2018/09/04 10:39:52 UTC
[kylin] branch 2.5.x updated: KYLIN-3536 PrepareStatement cache
issue when there are new segments built
This is an automated email from the ASF dual-hosted git repository.
shaofengshi pushed a commit to branch 2.5.x
in repository https://gitbox.apache.org/repos/asf/kylin.git
The following commit(s) were added to refs/heads/2.5.x by this push:
new 250d42a KYLIN-3536 PrepareStatement cache issue when there are new segments built
250d42a is described below
commit 250d42a2e35ac41d91279a8286f3148a34cff7b2
Author: Ma,Gang <ga...@ebay.com>
AuthorDate: Tue Sep 4 17:39:56 2018 +0800
KYLIN-3536 PrepareStatement cache issue when there are new segments built
Signed-off-by: shaofengshi <sh...@apache.org>
---
.../org/apache/kylin/rest/service/QueryService.java | 21 ++++++++++++++++++++-
1 file changed, 20 insertions(+), 1 deletion(-)
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 16358e4..6b3b379 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
@@ -77,6 +77,7 @@ import org.apache.kylin.common.util.DBUtils;
import org.apache.kylin.common.util.JsonUtil;
import org.apache.kylin.common.util.Pair;
import org.apache.kylin.common.util.SetThreadName;
+import org.apache.kylin.cube.CubeInstance;
import org.apache.kylin.cube.CubeManager;
import org.apache.kylin.cube.cuboid.Cuboid;
import org.apache.kylin.metadata.badquery.BadQueryEntry;
@@ -92,6 +93,7 @@ import org.apache.kylin.metadata.querymeta.ColumnMetaWithType;
import org.apache.kylin.metadata.querymeta.SelectedColumnMeta;
import org.apache.kylin.metadata.querymeta.TableMeta;
import org.apache.kylin.metadata.querymeta.TableMetaWithType;
+import org.apache.kylin.metadata.realization.IRealization;
import org.apache.kylin.query.QueryConnection;
import org.apache.kylin.query.relnode.OLAPContext;
import org.apache.kylin.query.util.PushDownUtil;
@@ -112,6 +114,8 @@ import org.apache.kylin.rest.util.AclEvaluate;
import org.apache.kylin.rest.util.AclPermissionUtil;
import org.apache.kylin.rest.util.QueryRequestLimits;
import org.apache.kylin.rest.util.TableauInterceptor;
+import org.apache.kylin.storage.hybrid.HybridInstance;
+import org.apache.kylin.storage.hybrid.HybridManager;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@@ -590,7 +594,8 @@ public class QueryService extends BasicService {
borrowPrepareContext = false;
preparedContext = createPreparedContext(sqlRequest.getProject(), sqlRequest.getSql());
}
- for(OLAPContext olapContext : preparedContext.olapContexts) {
+ for (OLAPContext olapContext : preparedContext.olapContexts) {
+ resetRealizationInContext(olapContext);
OLAPContext.registerContext(olapContext);
}
} else {
@@ -611,6 +616,20 @@ public class QueryService extends BasicService {
}
}
+ private void resetRealizationInContext(OLAPContext olapContext) {
+ IRealization realization = olapContext.realization;
+ KylinConfig config = getConfig();
+ HybridInstance hybridInstance = HybridManager.getInstance(config).getHybridInstance(realization.getName());
+ if (hybridInstance != null) {
+ olapContext.realization = hybridInstance;
+ return;
+ }
+ CubeInstance cubeInstance = CubeManager.getInstance(config).getCube(realization.getName());
+ if (cubeInstance != null) {
+ olapContext.realization = cubeInstance;
+ }
+ }
+
protected List<TableMeta> getMetadata(CubeManager cubeMgr, String project) throws SQLException {
Connection conn = null;