KYLIN-1420 enhance and update test case Project: http://git-wip-us.apache.org/repos/asf/kylin/repo Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/c0f1e6e3 Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/c0f1e6e3 Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/c0f1e6e3
Branch: refs/heads/1.4-rc Commit: c0f1e6e3a5af4ff67e52d0189992ce5ab30300e1 Parents: 8880740 Author: shaofengshi <shaofeng...@apache.org> Authored: Mon Feb 15 18:06:18 2016 +0800 Committer: shaofengshi <shaofeng...@apache.org> Committed: Mon Feb 15 18:06:18 2016 +0800 ---------------------------------------------------------------------- .../kylin/gridtable/GTScanRangePlanner.java | 27 ++++++++------------ .../kylin/gridtable/DictGridTableTest.java | 2 +- 2 files changed, 11 insertions(+), 18 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/kylin/blob/c0f1e6e3/core-cube/src/main/java/org/apache/kylin/gridtable/GTScanRangePlanner.java ---------------------------------------------------------------------- diff --git a/core-cube/src/main/java/org/apache/kylin/gridtable/GTScanRangePlanner.java b/core-cube/src/main/java/org/apache/kylin/gridtable/GTScanRangePlanner.java index 7551e49..3fb4197 100644 --- a/core-cube/src/main/java/org/apache/kylin/gridtable/GTScanRangePlanner.java +++ b/core-cube/src/main/java/org/apache/kylin/gridtable/GTScanRangePlanner.java @@ -18,18 +18,9 @@ package org.apache.kylin.gridtable; -import java.util.ArrayList; -import java.util.BitSet; -import java.util.Collection; -import java.util.Collections; -import java.util.Comparator; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.Set; - +import com.google.common.collect.Lists; +import com.google.common.collect.Maps; +import com.google.common.collect.Sets; import org.apache.kylin.common.debug.BackdoorToggles; import org.apache.kylin.common.util.ByteArray; import org.apache.kylin.common.util.ImmutableBitSet; @@ -44,9 +35,7 @@ import org.apache.kylin.metadata.model.TblColRef; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import com.google.common.collect.Lists; -import com.google.common.collect.Maps; -import com.google.common.collect.Sets; +import java.util.*; public class GTScanRangePlanner { @@ -126,8 +115,10 @@ public class GTScanRangePlanner { for (ColumnRange range : andDimRanges) { if (partitionColRef != null && range.column.equals(partitionColRef)) { if (rangeStartEndComparator.comparator.compare(segmentStartAndEnd.getFirst(), range.end) <= 0 // - && rangeStartEndComparator.comparator.compare(range.begin, segmentStartAndEnd.getSecond()) <= 0) { - //segment range is [Closed,Open), but segmentStartAndEnd.getSecond() might be rounded, so use <=. + && (rangeStartEndComparator.comparator.compare(range.begin, segmentStartAndEnd.getSecond()) < 0 // + || rangeStartEndComparator.comparator.compare(range.begin, segmentStartAndEnd.getSecond()) == 0 // + && (range.op == FilterOperatorEnum.EQ || range.op == FilterOperatorEnum.LTE || range.op == FilterOperatorEnum.GTE || range.op == FilterOperatorEnum.IN))) { + //segment range is [Closed,Open), but segmentStartAndEnd.getSecond() might be rounded, so use <= when has equals in condition. } else { logger.debug("Pre-check partition col filter failed, partitionColRef {}, segment start {}, segment end {}, range begin {}, range end {}",// new Object[] { partitionColRef, makeReadable(segmentStartAndEnd.getFirst()), makeReadable(segmentStartAndEnd.getSecond()), makeReadable(range.begin), makeReadable(range.end) }); @@ -364,9 +355,11 @@ public class GTScanRangePlanner { private ByteArray begin = ByteArray.EMPTY; private ByteArray end = ByteArray.EMPTY; private Set<ByteArray> valueSet; + private FilterOperatorEnum op; public ColumnRange(TblColRef column, Set<ByteArray> values, FilterOperatorEnum op) { this.column = column; + this.op = op; switch (op) { case EQ: http://git-wip-us.apache.org/repos/asf/kylin/blob/c0f1e6e3/core-cube/src/test/java/org/apache/kylin/gridtable/DictGridTableTest.java ---------------------------------------------------------------------- diff --git a/core-cube/src/test/java/org/apache/kylin/gridtable/DictGridTableTest.java b/core-cube/src/test/java/org/apache/kylin/gridtable/DictGridTableTest.java index 9c05920..3f7d770 100644 --- a/core-cube/src/test/java/org/apache/kylin/gridtable/DictGridTableTest.java +++ b/core-cube/src/test/java/org/apache/kylin/gridtable/DictGridTableTest.java @@ -118,7 +118,7 @@ public class DictGridTableTest { { LogicalTupleFilter filter = and(timeComp4, ageComp1); List<GTScanRange> r = planner.planScanRanges(filter); - assertEquals(0, r.size()); + assertEquals(1, r.size()); } { LogicalTupleFilter filter = and(timeComp5, ageComp1);