From 0cd17ea87128c4fe82a5b2cf5aa21375c13c8943 Mon Sep 17 00:00:00 2001 From: "Ma,Gang" Date: Fri, 31 Aug 2018 18:13:49 +0800 Subject: [PATCH] KYLIN-3522 PrepareStatement cache issue --- .../org/apache/kylin/metadata/filter/CompareTupleFilter.java | 11 +++++++++++ .../main/java/org/apache/kylin/query/relnode/OLAPContext.java | 2 +- 2 files changed, 12 insertions(+), 1 deletion(-) 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 2c75ec1..1c1c409 100644 --- 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 @@ -135,6 +135,17 @@ public class CompareTupleFilter extends TupleFilter implements IOptimizeableTupl this.firstCondValue = this.conditionValues.iterator().next(); } + public void clearPreviousVariableValues(String variable) { + Object previousValue = dynamicVariables.get(variable); + if (previousValue == null) { + return; + } + if (this.firstCondValue == previousValue) { + this.firstCondValue = null; + } + this.conditionValues.remove(previousValue); + } + @Override public TupleFilter copy() { return new CompareTupleFilter(this); diff --git a/query/src/main/java/org/apache/kylin/query/relnode/OLAPContext.java b/query/src/main/java/org/apache/kylin/query/relnode/OLAPContext.java index e43c257..e530b72 100644 --- a/query/src/main/java/org/apache/kylin/query/relnode/OLAPContext.java +++ b/query/src/main/java/org/apache/kylin/query/relnode/OLAPContext.java @@ -313,7 +313,7 @@ public class OLAPContext { String str = value.toString(); if (compFilter.getColumn().getType().isDateTimeFamily()) str = String.valueOf(DateFormat.stringToMillis(str)); - + compFilter.clearPreviousVariableValues(variable); compFilter.bindVariable(variable, str); } -- 2.6.4