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/12/02 09:26:38 UTC
[2/2] kylin git commit: KYLIN-2245 slim ISegment a bit
KYLIN-2245 slim ISegment a bit
Project: http://git-wip-us.apache.org/repos/asf/kylin/repo
Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/0eebd7d8
Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/0eebd7d8
Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/0eebd7d8
Branch: refs/heads/master
Commit: 0eebd7d8ab10b6b2b4823d6a23eaa774ac36989e
Parents: 3ca5395
Author: Li Yang <li...@apache.org>
Authored: Fri Dec 2 17:23:16 2016 +0800
Committer: Li Yang <li...@apache.org>
Committed: Fri Dec 2 17:26:13 2016 +0800
----------------------------------------------------------------------
.../java/org/apache/kylin/cube/CubeSegment.java | 20 +++-----------------
.../apache/kylin/metadata/model/ISegment.java | 1 -
.../apache/kylin/metadata/model/Segments.java | 12 +++++++++++-
3 files changed, 14 insertions(+), 19 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/kylin/blob/0eebd7d8/core-cube/src/main/java/org/apache/kylin/cube/CubeSegment.java
----------------------------------------------------------------------
diff --git a/core-cube/src/main/java/org/apache/kylin/cube/CubeSegment.java b/core-cube/src/main/java/org/apache/kylin/cube/CubeSegment.java
index 1fc28eb..5339d81 100644
--- a/core-cube/src/main/java/org/apache/kylin/cube/CubeSegment.java
+++ b/core-cube/src/main/java/org/apache/kylin/cube/CubeSegment.java
@@ -38,6 +38,7 @@ import org.apache.kylin.metadata.model.DataModelDesc;
import org.apache.kylin.metadata.model.IBuildable;
import org.apache.kylin.metadata.model.ISegment;
import org.apache.kylin.metadata.model.SegmentStatusEnum;
+import org.apache.kylin.metadata.model.Segments;
import org.apache.kylin.metadata.model.TblColRef;
import org.apache.kylin.metadata.realization.IRealization;
@@ -350,29 +351,14 @@ public class CubeSegment implements Comparable<CubeSegment>, IBuildable, ISegmen
this.sourceOffsetEnd = sourceOffsetEnd;
}
- public boolean dateRangeOverlaps(CubeSegment seg) {
- return dateRangeStart < seg.dateRangeEnd && seg.dateRangeStart < dateRangeEnd;
- }
-
- public boolean dateRangeContains(CubeSegment seg) {
- return dateRangeStart <= seg.dateRangeStart && seg.dateRangeEnd <= dateRangeEnd;
- }
-
// date range is used in place of source offsets when offsets are missing
public boolean sourceOffsetOverlaps(CubeSegment seg) {
- if (isSourceOffsetsOn())
- return sourceOffsetStart < seg.sourceOffsetEnd && seg.sourceOffsetStart < sourceOffsetEnd;
- else
- return dateRangeOverlaps(seg);
+ return Segments.sourceOffsetOverlaps(this, seg);
}
// date range is used in place of source offsets when offsets are missing
- @Override
public boolean sourceOffsetContains(ISegment seg) {
- if (isSourceOffsetsOn())
- return sourceOffsetStart <= ((CubeSegment) seg).sourceOffsetStart && ((CubeSegment) seg).sourceOffsetEnd <= sourceOffsetEnd;
- else
- return dateRangeContains(((CubeSegment) seg));
+ return Segments.sourceOffsetContains(this, seg);
}
public void validate() {
http://git-wip-us.apache.org/repos/asf/kylin/blob/0eebd7d8/core-metadata/src/main/java/org/apache/kylin/metadata/model/ISegment.java
----------------------------------------------------------------------
diff --git a/core-metadata/src/main/java/org/apache/kylin/metadata/model/ISegment.java b/core-metadata/src/main/java/org/apache/kylin/metadata/model/ISegment.java
index e97f4f4..e3fcdcb 100644
--- a/core-metadata/src/main/java/org/apache/kylin/metadata/model/ISegment.java
+++ b/core-metadata/src/main/java/org/apache/kylin/metadata/model/ISegment.java
@@ -36,5 +36,4 @@ public interface ISegment{
public long getLastBuildTime();
- public boolean sourceOffsetContains(ISegment seg);
}
http://git-wip-us.apache.org/repos/asf/kylin/blob/0eebd7d8/core-metadata/src/main/java/org/apache/kylin/metadata/model/Segments.java
----------------------------------------------------------------------
diff --git a/core-metadata/src/main/java/org/apache/kylin/metadata/model/Segments.java b/core-metadata/src/main/java/org/apache/kylin/metadata/model/Segments.java
index 104c2af..f0a58cb 100644
--- a/core-metadata/src/main/java/org/apache/kylin/metadata/model/Segments.java
+++ b/core-metadata/src/main/java/org/apache/kylin/metadata/model/Segments.java
@@ -21,6 +21,16 @@ package org.apache.kylin.metadata.model;
import java.util.ArrayList;
public class Segments<T extends ISegment> extends ArrayList<T> {
+
+ private static final long serialVersionUID = 1L;
+
+ public static boolean sourceOffsetContains(ISegment a, ISegment b) {
+ return a.getSourceOffsetStart() <= b.getSourceOffsetStart() && b.getSourceOffsetEnd() <= a.getSourceOffsetEnd();
+ }
+
+ public static boolean sourceOffsetOverlaps(ISegment a, ISegment b) {
+ return a.getSourceOffsetStart() < b.getSourceOffsetEnd() && b.getSourceOffsetStart() < a.getSourceOffsetEnd();
+ }
public T getFirstSegment() {
if (this == null || this.size() == 0) {
@@ -121,7 +131,7 @@ public class Segments<T extends ISegment> extends ArrayList<T> {
if (seg == mergedSegment)
continue;
- if (mergedSegment.sourceOffsetContains(seg)) {
+ if (sourceOffsetContains(mergedSegment, seg)) {
// make sure no holes
if (result.size() > 0 && result.getLast().getSourceOffsetEnd() != seg.getSourceOffsetStart())
throw new IllegalStateException("Merging segments must not have holes between " + result.getLast() + " and " + seg);