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;