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/12/08 01:46:47 UTC

kylin git commit: KYLIN-2254 allow 2 columns in a CompareTupleFilter

Repository: kylin
Updated Branches:
  refs/heads/KYLIN-2254 3e2d108e1 -> 8ba8aea6e


KYLIN-2254 allow 2 columns in a CompareTupleFilter


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

Branch: refs/heads/KYLIN-2254
Commit: 8ba8aea6e7e130d783edcc547bd09816cdfae233
Parents: 3e2d108
Author: Li Yang <li...@apache.org>
Authored: Thu Dec 8 09:46:38 2016 +0800
Committer: Li Yang <li...@apache.org>
Committed: Thu Dec 8 09:46:38 2016 +0800

----------------------------------------------------------------------
 .../metadata/filter/CompareTupleFilter.java     | 23 +++++++++++---------
 1 file changed, 13 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/kylin/blob/8ba8aea6/core-metadata/src/main/java/org/apache/kylin/metadata/filter/CompareTupleFilter.java
----------------------------------------------------------------------
diff --git a/core-metadata/src/main/java/org/apache/kylin/metadata/filter/CompareTupleFilter.java b/core-metadata/src/main/java/org/apache/kylin/metadata/filter/CompareTupleFilter.java
index f2af735..d567c89 100755
--- a/core-metadata/src/main/java/org/apache/kylin/metadata/filter/CompareTupleFilter.java
+++ b/core-metadata/src/main/java/org/apache/kylin/metadata/filter/CompareTupleFilter.java
@@ -37,6 +37,7 @@ public class CompareTupleFilter extends TupleFilter {
     // operand 1 is either a column or a function
     private TblColRef column;
     private FunctionTupleFilter function;
+    private TblColRef secondColumn;
 
     // operand 2 is constants
     private Set<Object> conditionValues;
@@ -73,15 +74,16 @@ public class CompareTupleFilter extends TupleFilter {
         if (child instanceof ColumnTupleFilter) {
             ColumnTupleFilter columnFilter = (ColumnTupleFilter) child;
             if (this.column != null) {
-                throw new IllegalStateException("Duplicate columns! old is " + column.getName() + " and new is " + columnFilter.getColumn().getName());
-            }
-            this.column = columnFilter.getColumn();
-            // if value is before column, we need to reverse the operator. e.g. "1 >= c1" => "c1 <= 1"
-            // children.size() > 1 means already added one conditionValue or dynamicVariable
-            if (this.children.size() > 1 && needSwapOperator()) {
-                this.operator = SWAP_OP_MAP.get(this.operator);
-                TupleFilter last = this.children.remove(this.children.size() - 1);
-                this.children.add(0, last);
+                this.secondColumn = columnFilter.getColumn();
+            } else {
+                this.column = columnFilter.getColumn();
+                // if value is before column, we need to reverse the operator. e.g. "1 >= c1" => "c1 <= 1"
+                // children.size() > 1 means already added one conditionValue or dynamicVariable
+                if (this.children.size() > 1 && needSwapOperator()) {
+                    this.operator = SWAP_OP_MAP.get(this.operator);
+                    TupleFilter last = this.children.remove(this.children.size() - 1);
+                    this.children.add(0, last);
+                }
             }
         } else if (child instanceof ConstantTupleFilter) {
             this.conditionValues.addAll(child.getValues());
@@ -212,7 +214,8 @@ public class CompareTupleFilter extends TupleFilter {
 
     @Override
     public boolean isEvaluable() {
-        return ((function != null && function.isEvaluable()) || column != null) && !conditionValues.isEmpty();
+        return (column != null || (function != null && function.isEvaluable())) //
+                && !conditionValues.isEmpty() && secondColumn == null;
     }
 
     @SuppressWarnings({ "unchecked", "rawtypes" })