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/accb417b
Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/accb417b
Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/accb417b

Branch: refs/heads/v2.0.0-release-hbase0.98
Commit: accb417b935d43714b19403fde32d02b1dee2267
Parents: fdda761
Author: Hongbin Ma <mahong...@apache.org>
Authored: Tue Apr 11 14:27:12 2017 +0800
Committer: Hongbin Ma <mahong...@apache.org>
Committed: Tue Apr 11 14:27:12 2017 +0800

----------------------------------------------------------------------
 .../kylin/query/relnode/OLAPFilterRel.java      | 28 +++++++++-----------
 1 file changed, 13 insertions(+), 15 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/kylin/blob/accb417b/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

Reply via email to