KYLIN-2539 move FilterOptimizeTransformer to OLAPFilterRel
Project: http://git-wip-us.apache.org/repos/asf/kylin/repo Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/794ef4d4 Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/794ef4d4 Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/794ef4d4 Branch: refs/heads/master-hbase0.98 Commit: 794ef4d4375d03f490b0d1c5da7b5ce1a9dac75e Parents: bd3b844 Author: Hongbin Ma <mahong...@apache.org> Authored: Tue Apr 11 13:49:12 2017 +0800 Committer: Hongbin Ma <mahong...@apache.org> Committed: Tue Apr 11 13:49:17 2017 +0800 ---------------------------------------------------------------------- .../test_case_data/sandbox/kylin.properties | 2 +- .../apache/kylin/query/ITKylinQueryTest.java | 4 +-- .../kylin/query/relnode/OLAPFilterRel.java | 28 +++++++++----------- 3 files changed, 16 insertions(+), 18 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/kylin/blob/794ef4d4/examples/test_case_data/sandbox/kylin.properties ---------------------------------------------------------------------- diff --git a/examples/test_case_data/sandbox/kylin.properties b/examples/test_case_data/sandbox/kylin.properties index 684b4dd..2a8f617 100644 --- a/examples/test_case_data/sandbox/kylin.properties +++ b/examples/test_case_data/sandbox/kylin.properties @@ -39,7 +39,7 @@ kylin.source.hive.client=cli ### STORAGE ### # The metadata store in hbase -kylin.metadata.url=kylin_metadata@hbase +kylin.metadata.url=kylin_ci_instance@hbase # The storage for final cube file in hbase http://git-wip-us.apache.org/repos/asf/kylin/blob/794ef4d4/kylin-it/src/test/java/org/apache/kylin/query/ITKylinQueryTest.java ---------------------------------------------------------------------- diff --git a/kylin-it/src/test/java/org/apache/kylin/query/ITKylinQueryTest.java b/kylin-it/src/test/java/org/apache/kylin/query/ITKylinQueryTest.java index cdaa10b..271b8ff 100644 --- a/kylin-it/src/test/java/org/apache/kylin/query/ITKylinQueryTest.java +++ b/kylin-it/src/test/java/org/apache/kylin/query/ITKylinQueryTest.java @@ -134,11 +134,11 @@ public class ITKylinQueryTest extends KylinTestBase { @Test public void testSingleRunQuery() throws Exception { - String queryFileName = getQueryFolderPrefix() + "src/test/resources/query/sql_verifyCount/query03.sql"; + String queryFileName = getQueryFolderPrefix() + "src/test/resources/query/temp/query00.sql"; File sqlFile = new File(queryFileName); if (sqlFile.exists()) { - //runSQL(sqlFile, true, true); + runSQL(sqlFile, true, true); runSQL(sqlFile, true, false); } } http://git-wip-us.apache.org/repos/asf/kylin/blob/794ef4d4/query/src/main/java/org/apache/kylin/query/relnode/OLAPFilterRel.java ---------------------------------------------------------------------- diff --git a/query/src/main/java/org/apache/kylin/query/relnode/OLAPFilterRel.java b/query/src/main/java/org/apache/kylin/query/relnode/OLAPFilterRel.java index 3fba1ee..0ee9204 100755 --- a/query/src/main/java/org/apache/kylin/query/relnode/OLAPFilterRel.java +++ b/query/src/main/java/org/apache/kylin/query/relnode/OLAPFilterRel.java @@ -20,7 +20,6 @@ package org.apache.kylin.query.relnode; import java.util.GregorianCalendar; import java.util.HashMap; -import java.util.HashSet; import java.util.LinkedList; import java.util.List; import java.util.Map; @@ -70,6 +69,7 @@ import org.apache.kylin.metadata.model.TblColRef; import com.google.common.base.Preconditions; import com.google.common.collect.Lists; +import com.google.common.collect.Sets; /** */ @@ -78,13 +78,10 @@ public class OLAPFilterRel extends Filter implements OLAPRel { private static class TupleFilterVisitor extends RexVisitorImpl<TupleFilter> { private final ColumnRowType inputRowType; - private final OLAPContext context; - private final Set<TblColRef> columnsInFilter = new HashSet<>(); - public TupleFilterVisitor(ColumnRowType inputRowType, OLAPContext context) { + public TupleFilterVisitor(ColumnRowType inputRowType) { super(true); this.inputRowType = inputRowType; - this.context = context; } @Override @@ -229,10 +226,6 @@ public class OLAPFilterRel extends Filter implements OLAPRel { @Override public TupleFilter visitInputRef(RexInputRef inputRef) { TblColRef column = inputRowType.getColumnByIndex(inputRef.getIndex()); - if (!column.isInnerColumn()) { - context.allColumns.add(column); - columnsInFilter.add(column); - } ColumnTupleFilter filter = new ColumnTupleFilter(column); return filter; } @@ -322,15 +315,20 @@ public class OLAPFilterRel extends Filter implements OLAPRel { return; } - TupleFilterVisitor visitor = new TupleFilterVisitor(this.columnRowType, context); + TupleFilterVisitor visitor = new TupleFilterVisitor(this.columnRowType); TupleFilter filter = this.condition.accept(visitor); - - context.filter = TupleFilter.and(context.filter, filter); - // optimize the filter, the optimization has to be segment-irrelevant - new FilterOptimizeTransformer().transform(context.filter); + new FilterOptimizeTransformer().transform(filter); + Set<TblColRef> filterColumns = Sets.newHashSet(); + TupleFilter.collectColumns(filter, filterColumns); + for (TblColRef tblColRef : filterColumns) { + if (!tblColRef.isInnerColumn()) { + context.allColumns.add(tblColRef); + context.filterColumns.add(tblColRef); + } + } - context.filterColumns.addAll(visitor.columnsInFilter); + context.filter = TupleFilter.and(context.filter, filter); } @Override