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/09/03 12:46:25 UTC
[31/50] [abbrv] kylin git commit: minor
minor
Project: http://git-wip-us.apache.org/repos/asf/kylin/repo
Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/3cb0894c
Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/3cb0894c
Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/3cb0894c
Branch: refs/heads/1.5.x-CDH5.7
Commit: 3cb0894c4ff329d985513775c172ee47ed05ac67
Parents: a77fbc8
Author: Hongbin Ma <ma...@apache.org>
Authored: Wed Aug 31 14:36:26 2016 +0800
Committer: Hongbin Ma <ma...@apache.org>
Committed: Wed Aug 31 14:36:41 2016 +0800
----------------------------------------------------------------------
.../filter/EvaluatableLikeFunction.java | 26 +++++++++++++++++---
1 file changed, 22 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/kylin/blob/3cb0894c/core-metadata/src/main/java/org/apache/kylin/metadata/filter/EvaluatableLikeFunction.java
----------------------------------------------------------------------
diff --git a/core-metadata/src/main/java/org/apache/kylin/metadata/filter/EvaluatableLikeFunction.java b/core-metadata/src/main/java/org/apache/kylin/metadata/filter/EvaluatableLikeFunction.java
index 59961ac..28e544b 100644
--- a/core-metadata/src/main/java/org/apache/kylin/metadata/filter/EvaluatableLikeFunction.java
+++ b/core-metadata/src/main/java/org/apache/kylin/metadata/filter/EvaluatableLikeFunction.java
@@ -27,8 +27,13 @@ import org.apache.kylin.metadata.datatype.DataType;
import org.apache.kylin.metadata.datatype.StringSerializer;
import org.apache.kylin.metadata.tuple.IEvaluatableTuple;
+/**
+ * typically like will be handled by BuiltInFunctionTupleFilter rather than this
+ */
public class EvaluatableLikeFunction extends BuiltInFunctionTupleFilter {
+ private boolean patternExtracted;
+
public EvaluatableLikeFunction(String name) {
super(name, FilterOperatorEnum.LIKE);
}
@@ -86,11 +91,24 @@ public class EvaluatableLikeFunction extends BuiltInFunctionTupleFilter {
return (filter instanceof ConstantTupleFilter) || (filter instanceof DynamicTupleFilter);
}
+ @Override
+ public Object invokeFunction(Object input) throws InvocationTargetException, IllegalAccessException {
+ if (!patternExtracted) {
+ this.getLikePattern();
+ }
+ return super.invokeFunction(input);
+ }
+
+ //will replace the ByteArray pattern to String type
public String getLikePattern() {
- ByteArray byteArray = (ByteArray) methodParams.get(1);
- StringSerializer s = new StringSerializer(DataType.getType("string"));
- String pattern = s.deserialize(ByteBuffer.wrap(byteArray.array(), byteArray.offset(), byteArray.length()));
- return pattern;
+ if (!patternExtracted) {
+ ByteArray byteArray = (ByteArray) methodParams.get(1);
+ StringSerializer s = new StringSerializer(DataType.getType("string"));
+ String pattern = s.deserialize(ByteBuffer.wrap(byteArray.array(), byteArray.offset(), byteArray.length()));
+ methodParams.set(1, pattern);
+ patternExtracted = true;
+ }
+ return (String) methodParams.get(1);
}
}