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 <liy...@apache.org> Authored: Mon Nov 28 18:30:26 2016 +0800 Committer: Li Yang <liy...@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;