Repository: kylin
Updated Branches:
  refs/heads/master 3f10b3a53 -> a2ecf18de


KYLIN-2213 UnsupportedOperationException when excute 'not like' query on cube v1

Signed-off-by: Li Yang <liy...@apache.org>


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

Branch: refs/heads/master
Commit: be7b5d1012e4ba0f8696ccbf9c0507706c07ad22
Parents: 3f10b3a
Author: zhengdong <zhe...@outlook.com>
Authored: Wed Nov 23 16:03:16 2016 +0800
Committer: Li Yang <liy...@apache.org>
Committed: Mon Nov 28 16:23:38 2016 +0800

----------------------------------------------------------------------
 .../apache/kylin/dict/BuiltInFunctionTransformer.java | 14 ++++++++++++--
 .../metadata/filter/BuiltInFunctionTupleFilter.java   | 11 +++++++++++
 2 files changed, 23 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/kylin/blob/be7b5d10/core-dictionary/src/main/java/org/apache/kylin/dict/BuiltInFunctionTransformer.java
----------------------------------------------------------------------
diff --git 
a/core-dictionary/src/main/java/org/apache/kylin/dict/BuiltInFunctionTransformer.java
 
b/core-dictionary/src/main/java/org/apache/kylin/dict/BuiltInFunctionTransformer.java
old mode 100644
new mode 100755
index 9707f8f..0f8e895
--- 
a/core-dictionary/src/main/java/org/apache/kylin/dict/BuiltInFunctionTransformer.java
+++ 
b/core-dictionary/src/main/java/org/apache/kylin/dict/BuiltInFunctionTransformer.java
@@ -89,7 +89,12 @@ public class BuiltInFunctionTransformer implements 
ITupleFilterTransformer {
         if (dict == null)
             return null;
 
-        CompareTupleFilter translated = new 
CompareTupleFilter(FilterOperatorEnum.IN);
+        CompareTupleFilter translated;
+        if (builtInFunctionTupleFilter.isReversed()) {
+            translated = new CompareTupleFilter(FilterOperatorEnum.NOTIN);
+        } else {
+            translated = new CompareTupleFilter(FilterOperatorEnum.IN);
+        }
         translated.addChild(new ColumnTupleFilter(columnRef));
 
         try {
@@ -121,7 +126,12 @@ public class BuiltInFunctionTransformer implements 
ITupleFilterTransformer {
         if (dict == null)
             return null;
 
-        CompareTupleFilter translated = new 
CompareTupleFilter(FilterOperatorEnum.IN);
+        CompareTupleFilter translated;
+        if (builtInFunctionTupleFilter.isReversed()) {
+            translated = new CompareTupleFilter(FilterOperatorEnum.NOTIN);
+        } else {
+            translated = new CompareTupleFilter(FilterOperatorEnum.IN);
+        }
         translated.addChild(new ColumnTupleFilter(columnRef));
 
         try {

http://git-wip-us.apache.org/repos/asf/kylin/blob/be7b5d10/core-metadata/src/main/java/org/apache/kylin/metadata/filter/BuiltInFunctionTupleFilter.java
----------------------------------------------------------------------
diff --git 
a/core-metadata/src/main/java/org/apache/kylin/metadata/filter/BuiltInFunctionTupleFilter.java
 
b/core-metadata/src/main/java/org/apache/kylin/metadata/filter/BuiltInFunctionTupleFilter.java
old mode 100644
new mode 100755
index 734b374..1e836b7
--- 
a/core-metadata/src/main/java/org/apache/kylin/metadata/filter/BuiltInFunctionTupleFilter.java
+++ 
b/core-metadata/src/main/java/org/apache/kylin/metadata/filter/BuiltInFunctionTupleFilter.java
@@ -47,6 +47,7 @@ public class BuiltInFunctionTupleFilter extends 
FunctionTupleFilter {
     protected Method method;
     protected List<Serializable> methodParams;
     protected boolean isValidFunc = false;
+    private boolean isReversed = false;
 
     public BuiltInFunctionTupleFilter(String name) {
         this(name, null);
@@ -99,6 +100,16 @@ public class BuiltInFunctionTupleFilter extends 
FunctionTupleFilter {
     }
 
     @Override
+    public TupleFilter reverse() {
+        isReversed = !isReversed;
+        return this;
+    }
+
+    public boolean isReversed() {
+        return isReversed;
+    }
+
+    @Override
     public void addChild(TupleFilter child) {
         if (child instanceof ColumnTupleFilter || child instanceof 
BuiltInFunctionTupleFilter) {
             columnContainerFilter = child;

Reply via email to