You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kylin.apache.org by li...@apache.org on 2016/11/28 10:30:35 UTC

kylin git commit: fix lookup table query

Repository: kylin
Updated Branches:
  refs/heads/KYLIN-1875 07322fafd -> fe477dc70


fix lookup table query


Project: http://git-wip-us.apache.org/repos/asf/kylin/repo
Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/fe477dc7
Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/fe477dc7
Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/fe477dc7

Branch: refs/heads/KYLIN-1875
Commit: fe477dc70d3e51d5065e741b55898651e2d51449
Parents: 07322fa
Author: Li Yang <li...@apache.org>
Authored: Mon Nov 28 18:30:26 2016 +0800
Committer: Li Yang <li...@apache.org>
Committed: Mon Nov 28 18:30:26 2016 +0800

----------------------------------------------------------------------
 .../kylin/query/routing/ModelChooser.java       | 26 +++++++++++++++-----
 1 file changed, 20 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/kylin/blob/fe477dc7/query/src/main/java/org/apache/kylin/query/routing/ModelChooser.java
----------------------------------------------------------------------
diff --git a/query/src/main/java/org/apache/kylin/query/routing/ModelChooser.java b/query/src/main/java/org/apache/kylin/query/routing/ModelChooser.java
index cc2522a..14e73ed 100644
--- a/query/src/main/java/org/apache/kylin/query/routing/ModelChooser.java
+++ b/query/src/main/java/org/apache/kylin/query/routing/ModelChooser.java
@@ -31,6 +31,7 @@ import org.apache.kylin.metadata.model.DataModelDesc;
 import org.apache.kylin.metadata.model.JoinDesc;
 import org.apache.kylin.metadata.model.JoinTableDesc;
 import org.apache.kylin.metadata.model.JoinsTree;
+import org.apache.kylin.metadata.model.TableRef;
 import org.apache.kylin.metadata.model.TblColRef;
 import org.apache.kylin.metadata.project.ProjectManager;
 import org.apache.kylin.metadata.realization.IRealization;
@@ -38,6 +39,7 @@ import org.apache.kylin.query.relnode.OLAPContext;
 import org.apache.kylin.query.relnode.OLAPTableScan;
 import org.apache.kylin.query.routing.rules.RemoveBlackoutRealizationsRule;
 
+import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.Maps;
 import com.google.common.collect.Sets;
 
@@ -73,14 +75,26 @@ public class ModelChooser {
         Map<String, String> result = Maps.newHashMap();
 
         for (OLAPContext ctx : contexts) {
-            if (ctx.joinsTree == null)
-                ctx.joinsTree = new JoinsTree(ctx.firstTableScan.getTableRef(), ctx.joins);
-            
-            Map<String, String> matchUp = ctx.joinsTree.matches(model.getJoinsTree(), result);
-            
+            TableRef firstTable = ctx.firstTableScan.getTableRef();
+
+            Map<String, String> matchUp = null;
+
+            // one lookup table
+            if (ctx.joins.isEmpty() && model.isLookupTable(firstTable.getTableIdentity())) {
+                String modelAlias = model.findFirstTable(firstTable.getTableIdentity()).getAlias();
+                matchUp = ImmutableMap.of(firstTable.getAlias(), modelAlias);
+            }
+            // normal big joins
+            else {
+                if (ctx.joinsTree == null) {
+                    ctx.joinsTree = new JoinsTree(firstTable, ctx.joins);
+                }
+                matchUp = ctx.joinsTree.matches(model.getJoinsTree(), result);
+            }
+
             if (matchUp == null)
                 return null;
-            
+
             result.putAll(matchUp);
         }
         return result;