You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@asterixdb.apache.org by pr...@apache.org on 2016/10/17 19:55:12 UTC
[22/50] [abbrv] asterixdb git commit: snapshot for range state
transition
snapshot for range state transition
Project: http://git-wip-us.apache.org/repos/asf/asterixdb/repo
Commit: http://git-wip-us.apache.org/repos/asf/asterixdb/commit/2061a388
Tree: http://git-wip-us.apache.org/repos/asf/asterixdb/tree/2061a388
Diff: http://git-wip-us.apache.org/repos/asf/asterixdb/diff/2061a388
Branch: refs/heads/ecarm002/interval_join_merge
Commit: 2061a388632246cb0bc1d9ac056440d14a15db03
Parents: 5d02948
Author: Preston Carman <pr...@apache.org>
Authored: Wed Aug 10 17:56:43 2016 -0700
Committer: Preston Carman <pr...@apache.org>
Committed: Wed Aug 10 17:56:43 2016 -0700
----------------------------------------------------------------------
.../physical/AbstractIntervalJoinPOperator.java | 29 +++---
.../physical/IntervalIndexJoinPOperator.java | 14 ++-
.../physical/IntervalJoinPOperator.java | 63 -----------
.../IntervalLocalRangeOperatorDescriptor.java | 23 ++--
.../IntervalLocalRangeSplitterPOperator.java | 10 +-
.../IntervalPartitionJoinPOperator.java | 17 +--
.../rules/IntervalSplitPartitioningRule.java | 28 ++---
.../SweepIllegalNonfunctionalFunctions.java | 6 ++
.../subplan/InlineAllNtsInSubplanVisitor.java | 6 ++
...neLeftNtsInSubplanJoinFlatteningVisitor.java | 6 ++
.../SubplanSpecialFlatteningCheckVisitor.java | 6 ++
.../asterix/optimizer/rules/util/JoinUtils.java | 37 ++++---
.../IntervalJoinExpressionAnnotation.java | 22 ++--
.../asterix/lang/aql/util/RangeMapBuilder.java | 2 +-
.../lang/common/clause/OrderbyClause.java | 2 +-
.../AqlBinaryComparatorFactoryProvider.java | 2 +-
...tervalRangePartitionComputerFactoryTest.java | 8 +-
.../functions/temporal/IntervalLogic.java | 12 ++-
...tIntervalInverseMergeJoinCheckerFactory.java | 2 +-
...AbstractIntervalMergeJoinCheckerFactory.java | 2 +-
.../AfterIntervalMergeJoinCheckerFactory.java | 5 +-
.../BeforeIntervalMergeJoinCheckerFactory.java | 5 +-
...overedByIntervalMergeJoinCheckerFactory.java | 4 +-
.../CoversIntervalMergeJoinCheckerFactory.java | 4 +-
.../EndedByIntervalMergeJoinCheckerFactory.java | 5 +-
.../EndsIntervalMergeJoinCheckerFactory.java | 5 +-
.../joins/IIntervalMergeJoinCheckerFactory.java | 3 +-
.../MeetsIntervalMergeJoinCheckerFactory.java | 5 +-
.../MetByIntervalMergeJoinCheckerFactory.java | 5 +-
...lappedByIntervalMergeJoinCheckerFactory.java | 4 +-
...rlappingIntervalMergeJoinCheckerFactory.java | 11 +-
...OverlapsIntervalMergeJoinCheckerFactory.java | 4 +-
...tartedByIntervalMergeJoinCheckerFactory.java | 5 +-
.../StartsIntervalMergeJoinCheckerFactory.java | 5 +-
.../intervalindex/IntervalIndexJoiner.java | 2 +-
...IntervalPartitionJoinOperatorDescriptor.java | 17 +--
.../IntervalPartitionUtil.java | 2 +-
.../core/algebra/base/IOptimizationContext.java | 2 +-
.../core/algebra/base/IRangeContext.java | 27 +++++
.../operators/logical/RangeForwardOperator.java | 11 +-
...OperatorDeepCopyWithNewVariablesVisitor.java | 2 +-
.../visitors/OperatorDeepCopyVisitor.java | 2 +-
.../HashPartitionExchangePOperator.java | 2 +-
.../operators/physical/MergeJoinPOperator.java | 31 ++++--
.../physical/RangeForwardPOperator.java | 25 ++++-
.../RangePartitionExchangePOperator.java | 22 ++--
.../RangePartitionMergeExchangePOperator.java | 22 ++--
.../properties/OrderedPartitionedProperty.java | 26 +++--
.../core/algebra/properties/PropertiesUtil.java | 4 +-
.../base/AlgebricksOptimizationContext.java | 40 ++++---
.../data/IBinaryComparatorFactoryProvider.java | 2 +-
.../rules/EnforceStructuralPropertiesRule.java | 81 ++++++++++-----
.../rewriter/rules/InlineVariablesRule.java | 104 ++++++++++---------
...placeNtsWithSubplanInputOperatorVisitor.java | 6 ++
.../hyracks/api/dataflow/value/IRangeMap.java | 50 +++++++++
.../api/dataflow/value/IRangePartitionType.java | 41 ++++++++
.../ITupleRangePartitionComputerFactory.java | 2 +-
.../FieldRangePartitionComputerFactory.java | 18 ++--
.../common/data/partition/range/IRangeMap.java | 50 ---------
.../partition/range/IRangePartitionType.java | 41 --------
.../common/data/partition/range/RangeMap.java | 2 +
.../hyracks/dataflow/std/base/RangeId.java | 56 ++++++++++
...angePartitionMergingConnectorDescriptor.java | 12 ++-
...ToNRangePartitioningConnectorDescriptor.java | 11 +-
.../connectors/PartitionRangeDataWriter.java | 21 +++-
.../std/join/IMergeJoinCheckerFactory.java | 5 +-
.../std/join/MergeJoinOperatorDescriptor.java | 2 +-
.../join/NaturalMergeJoinCheckerFactory.java | 5 +-
.../misc/RangeForwardOperatorDescriptor.java | 24 ++---
.../sort/AbstractSorterOperatorDescriptor.java | 3 -
.../FieldRangePartitionComputerFactoryTest.java | 8 +-
71 files changed, 664 insertions(+), 484 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/2061a388/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/algebra/operators/physical/AbstractIntervalJoinPOperator.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/algebra/operators/physical/AbstractIntervalJoinPOperator.java b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/algebra/operators/physical/AbstractIntervalJoinPOperator.java
index ca50f1b..c400cdf 100644
--- a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/algebra/operators/physical/AbstractIntervalJoinPOperator.java
+++ b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/algebra/operators/physical/AbstractIntervalJoinPOperator.java
@@ -45,26 +45,31 @@ import org.apache.hyracks.algebricks.core.algebra.properties.StructuralPropertie
import org.apache.hyracks.algebricks.core.jobgen.impl.JobGenContext;
import org.apache.hyracks.algebricks.core.jobgen.impl.JobGenHelper;
import org.apache.hyracks.api.dataflow.IOperatorDescriptor;
+import org.apache.hyracks.api.dataflow.value.IRangeMap;
import org.apache.hyracks.api.dataflow.value.RecordDescriptor;
+import org.apache.hyracks.api.dataflow.value.IRangePartitionType.RangePartitioningType;
import org.apache.hyracks.api.job.IOperatorDescriptorRegistry;
-import org.apache.hyracks.dataflow.common.data.partition.range.IRangeMap;
-import org.apache.hyracks.dataflow.common.data.partition.range.IRangePartitionType.RangePartitioningType;
+import org.apache.hyracks.dataflow.std.base.RangeId;
public abstract class AbstractIntervalJoinPOperator extends AbstractJoinPOperator {
private final List<LogicalVariable> keysLeftBranch;
private final List<LogicalVariable> keysRightBranch;
private final IIntervalMergeJoinCheckerFactory mjcf;
- private final IRangeMap rangeMap;
+ private final RangeId leftRangeId;
+ private final RangeId rightRangeId;
+ private final IRangeMap rangeMapHint;
public AbstractIntervalJoinPOperator(JoinKind kind, JoinPartitioningType partitioningType,
List<LogicalVariable> sideLeftOfEqualities, List<LogicalVariable> sideRightOfEqualities,
- IIntervalMergeJoinCheckerFactory mjcf, IRangeMap rangeMap) {
+ IIntervalMergeJoinCheckerFactory mjcf, RangeId leftRangeId, RangeId rightRangeId, IRangeMap rangeMapHint) {
super(kind, partitioningType);
this.keysLeftBranch = sideLeftOfEqualities;
this.keysRightBranch = sideRightOfEqualities;
this.mjcf = mjcf;
- this.rangeMap = rangeMap;
+ this.leftRangeId = leftRangeId;
+ this.rightRangeId = rightRangeId;
+ this.rangeMapHint = rangeMapHint;
}
public List<LogicalVariable> getKeysLeftBranch() {
@@ -79,8 +84,8 @@ public abstract class AbstractIntervalJoinPOperator extends AbstractJoinPOperato
return mjcf;
}
- public IRangeMap getRangeMap() {
- return rangeMap;
+ public RangeId getRangeId() {
+ return leftRangeId;
}
@Override
@@ -106,7 +111,7 @@ public abstract class AbstractIntervalJoinPOperator extends AbstractJoinPOperato
for (LogicalVariable v : keysLeftBranch) {
order.add(new OrderColumn(v, mjcf.isOrderAsc() ? OrderKind.ASC : OrderKind.DESC));
}
- IPartitioningProperty pp = new OrderedPartitionedProperty(order, null, rangeMap, RangePartitioningType.PROJECT);
+ IPartitioningProperty pp = new OrderedPartitionedProperty(order, null, leftRangeId, RangePartitioningType.PROJECT, rangeMapHint);
List<ILocalStructuralProperty> propsLocal = new ArrayList<>();
propsLocal.add(new LocalOrderProperty(order));
deliveredProperties = new StructuralPropertiesVector(pp, propsLocal);
@@ -136,8 +141,8 @@ public abstract class AbstractIntervalJoinPOperator extends AbstractJoinPOperato
ispRight.add(new LocalOrderProperty(orderRight));
if (op.getExecutionMode() == AbstractLogicalOperator.ExecutionMode.PARTITIONED) {
- ppLeft = new OrderedPartitionedProperty(orderLeft, null, rangeMap, mjcf.getLeftPartitioningType());
- ppRight = new OrderedPartitionedProperty(orderRight, null, rangeMap, mjcf.getRightPartitioningType());
+ ppLeft = new OrderedPartitionedProperty(orderLeft, null, leftRangeId, mjcf.getLeftPartitioningType(), rangeMapHint);
+ ppRight = new OrderedPartitionedProperty(orderRight, null, rightRangeId, mjcf.getRightPartitioningType(), rangeMapHint);
}
pv[0] = new StructuralPropertiesVector(ppLeft, ispLeft);
@@ -158,7 +163,7 @@ public abstract class AbstractIntervalJoinPOperator extends AbstractJoinPOperato
context);
IOperatorDescriptor opDesc = getIntervalOperatorDescriptor(keysLeft, keysRight, spec, recordDescriptor, mjcf,
- rangeMap);
+ leftRangeId);
contributeOpDesc(builder, (AbstractLogicalOperator) op, opDesc);
ILogicalOperator src1 = op.getInputs().get(0).getValue();
@@ -169,6 +174,6 @@ public abstract class AbstractIntervalJoinPOperator extends AbstractJoinPOperato
abstract IOperatorDescriptor getIntervalOperatorDescriptor(int[] keysLeft, int[] keysRight,
IOperatorDescriptorRegistry spec, RecordDescriptor recordDescriptor, IIntervalMergeJoinCheckerFactory mjcf,
- IRangeMap rangeMap);
+ RangeId rangeId);
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/2061a388/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/algebra/operators/physical/IntervalIndexJoinPOperator.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/algebra/operators/physical/IntervalIndexJoinPOperator.java b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/algebra/operators/physical/IntervalIndexJoinPOperator.java
index 32a0f56..731b39e 100644
--- a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/algebra/operators/physical/IntervalIndexJoinPOperator.java
+++ b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/algebra/operators/physical/IntervalIndexJoinPOperator.java
@@ -26,9 +26,10 @@ import org.apache.asterix.runtime.operators.joins.intervalindex.IntervalIndexJoi
import org.apache.hyracks.algebricks.core.algebra.base.LogicalVariable;
import org.apache.hyracks.algebricks.core.algebra.operators.logical.AbstractBinaryJoinOperator.JoinKind;
import org.apache.hyracks.api.dataflow.IOperatorDescriptor;
+import org.apache.hyracks.api.dataflow.value.IRangeMap;
import org.apache.hyracks.api.dataflow.value.RecordDescriptor;
import org.apache.hyracks.api.job.IOperatorDescriptorRegistry;
-import org.apache.hyracks.dataflow.common.data.partition.range.IRangeMap;
+import org.apache.hyracks.dataflow.std.base.RangeId;
public class IntervalIndexJoinPOperator extends AbstractIntervalJoinPOperator {
@@ -38,14 +39,17 @@ public class IntervalIndexJoinPOperator extends AbstractIntervalJoinPOperator {
public IntervalIndexJoinPOperator(JoinKind kind, JoinPartitioningType partitioningType,
List<LogicalVariable> sideLeftOfEqualities, List<LogicalVariable> sideRightOfEqualities,
- int memSizeInFrames, IIntervalMergeJoinCheckerFactory mjcf, IRangeMap rangeMap) {
- super(kind, partitioningType, sideLeftOfEqualities, sideRightOfEqualities, mjcf, rangeMap);
+ int memSizeInFrames, IIntervalMergeJoinCheckerFactory mjcf, RangeId leftRangeId, RangeId rightRangeId,
+ IRangeMap rangeMapHint) {
+ super(kind, partitioningType, sideLeftOfEqualities, sideRightOfEqualities, mjcf, leftRangeId, rightRangeId,
+ rangeMapHint);
this.memSizeInFrames = memSizeInFrames;
LOGGER.fine("IntervalIndexJoinPOperator constructed with: JoinKind=" + kind + ", JoinPartitioningType="
+ partitioningType + ", List<LogicalVariable>=" + sideLeftOfEqualities + ", List<LogicalVariable>="
+ sideRightOfEqualities + ", int memSizeInFrames=" + memSizeInFrames
- + ", IMergeJoinCheckerFactory mjcf=" + mjcf + ", IRangeMap rangeMap=" + rangeMap + ".");
+ + ", IMergeJoinCheckerFactory mjcf=" + mjcf + ", RangeId leftRangeId=" + leftRangeId
+ + ", RangeId rightRangeId=" + rightRangeId + ".");
}
@Override
@@ -55,7 +59,7 @@ public class IntervalIndexJoinPOperator extends AbstractIntervalJoinPOperator {
@Override
IOperatorDescriptor getIntervalOperatorDescriptor(int[] keysLeft, int[] keysRight, IOperatorDescriptorRegistry spec,
- RecordDescriptor recordDescriptor, IIntervalMergeJoinCheckerFactory mjcf, IRangeMap rangeMap) {
+ RecordDescriptor recordDescriptor, IIntervalMergeJoinCheckerFactory mjcf, RangeId rangeId) {
return new IntervalIndexJoinOperatorDescriptor(spec, memSizeInFrames, keysLeft, keysRight, recordDescriptor,
mjcf);
}
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/2061a388/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/algebra/operators/physical/IntervalJoinPOperator.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/algebra/operators/physical/IntervalJoinPOperator.java b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/algebra/operators/physical/IntervalJoinPOperator.java
deleted file mode 100644
index 528822d..0000000
--- a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/algebra/operators/physical/IntervalJoinPOperator.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.asterix.algebra.operators.physical;
-
-import java.util.List;
-import java.util.logging.Logger;
-
-import org.apache.asterix.runtime.operators.joins.IIntervalMergeJoinCheckerFactory;
-import org.apache.asterix.runtime.operators.joins.intervalindex.IntervalIndexJoinOperatorDescriptor;
-import org.apache.hyracks.algebricks.core.algebra.base.LogicalVariable;
-import org.apache.hyracks.algebricks.core.algebra.operators.logical.AbstractBinaryJoinOperator.JoinKind;
-import org.apache.hyracks.api.dataflow.IOperatorDescriptor;
-import org.apache.hyracks.api.dataflow.value.RecordDescriptor;
-import org.apache.hyracks.api.job.IOperatorDescriptorRegistry;
-import org.apache.hyracks.dataflow.common.data.partition.range.IRangeMap;
-
-public class IntervalJoinPOperator extends AbstractIntervalJoinPOperator {
-
- private final int memSizeInFrames;
-
- private static final Logger LOGGER = Logger.getLogger(IntervalJoinPOperator.class.getName());
-
- public IntervalJoinPOperator(JoinKind kind, JoinPartitioningType partitioningType,
- List<LogicalVariable> sideLeftOfEqualities, List<LogicalVariable> sideRightOfEqualities,
- int memSizeInFrames, IIntervalMergeJoinCheckerFactory mjcf, IRangeMap rangeMap) {
- super(kind, partitioningType, sideLeftOfEqualities, sideRightOfEqualities, mjcf, rangeMap);
- this.memSizeInFrames = memSizeInFrames;
-
- LOGGER.fine("IntervalJoinPOperator constructed with: JoinKind=" + kind + ", JoinPartitioningType="
- + partitioningType + ", List<LogicalVariable>=" + sideLeftOfEqualities + ", List<LogicalVariable>="
- + sideRightOfEqualities + ", int memSizeInFrames=" + memSizeInFrames
- + ", IMergeJoinCheckerFactory mjcf=" + mjcf + ", IRangeMap rangeMap=" + rangeMap + ".");
- }
-
- @Override
- public String getIntervalJoin() {
- return "INTERVAL_JOIN";
- }
-
- @Override
- IOperatorDescriptor getIntervalOperatorDescriptor(int[] keysLeft, int[] keysRight, IOperatorDescriptorRegistry spec,
- RecordDescriptor recordDescriptor, IIntervalMergeJoinCheckerFactory mjcf, IRangeMap rangeMap) {
- return new IntervalIndexJoinOperatorDescriptor(spec, memSizeInFrames, keysLeft, keysRight, recordDescriptor,
- mjcf);
- }
-
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/2061a388/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/algebra/operators/physical/IntervalLocalRangeOperatorDescriptor.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/algebra/operators/physical/IntervalLocalRangeOperatorDescriptor.java b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/algebra/operators/physical/IntervalLocalRangeOperatorDescriptor.java
index ca44f78..584e30f 100644
--- a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/algebra/operators/physical/IntervalLocalRangeOperatorDescriptor.java
+++ b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/algebra/operators/physical/IntervalLocalRangeOperatorDescriptor.java
@@ -28,6 +28,7 @@ import org.apache.hyracks.api.dataflow.ActivityId;
import org.apache.hyracks.api.dataflow.IActivity;
import org.apache.hyracks.api.dataflow.IActivityGraphBuilder;
import org.apache.hyracks.api.dataflow.IOperatorNodePushable;
+import org.apache.hyracks.api.dataflow.value.IRangeMap;
import org.apache.hyracks.api.dataflow.value.IRecordDescriptorProvider;
import org.apache.hyracks.api.dataflow.value.RecordDescriptor;
import org.apache.hyracks.api.exceptions.HyracksDataException;
@@ -36,10 +37,11 @@ import org.apache.hyracks.data.std.primitive.LongPointable;
import org.apache.hyracks.dataflow.common.comm.io.FrameTupleAccessor;
import org.apache.hyracks.dataflow.common.comm.io.FrameTupleAppender;
import org.apache.hyracks.dataflow.common.comm.util.FrameUtils;
-import org.apache.hyracks.dataflow.common.data.partition.range.IRangeMap;
import org.apache.hyracks.dataflow.std.base.AbstractActivityNode;
import org.apache.hyracks.dataflow.std.base.AbstractOperatorDescriptor;
import org.apache.hyracks.dataflow.std.base.AbstractUnaryInputOperatorNodePushable;
+import org.apache.hyracks.dataflow.std.base.RangeId;
+import org.apache.hyracks.dataflow.std.misc.RangeForwardOperatorDescriptor.RangeForwardTaskState;
public class IntervalLocalRangeOperatorDescriptor extends AbstractOperatorDescriptor {
private static final long serialVersionUID = 1L;
@@ -52,16 +54,16 @@ public class IntervalLocalRangeOperatorDescriptor extends AbstractOperatorDescri
private static final int INPUT_ENDS = 1;
private final int key;
- private final IRangeMap rangeMap;
+ private final RangeId rangeId;
public IntervalLocalRangeOperatorDescriptor(IOperatorDescriptorRegistry spec, int[] keys,
- RecordDescriptor recordDescriptor, IRangeMap rangeMap) {
+ RecordDescriptor recordDescriptor, RangeId rangeId) {
super(spec, 1, OUTPUT_ARITY);
for (int i = 0; i < outputArity; i++) {
recordDescriptors[i] = recordDescriptor;
}
key = keys[0];
- this.rangeMap = rangeMap;
+ this.rangeId = rangeId;
}
@Override
@@ -92,8 +94,8 @@ public class IntervalLocalRangeOperatorDescriptor extends AbstractOperatorDescri
private final FrameTupleAppender[] resultAppender = new FrameTupleAppender[getOutputArity()];
private final RecordDescriptor rd = recordDescProvider.getInputRecordDescriptor(getActivityId(), 0);
private final FrameTupleAccessor accessor = new FrameTupleAccessor(rd);
- private final long nodeRangeStart = getPartitionBoundryStart();
- private final long nodeRangeEnd = getPartitionBoundryEnd();
+ private long nodeRangeStart;
+ private long nodeRangeEnd;
@Override
public void close() throws HyracksDataException {
@@ -152,6 +154,11 @@ public class IntervalLocalRangeOperatorDescriptor extends AbstractOperatorDescri
writers[i].open();
resultAppender[i] = new FrameTupleAppender(new VSizeFrame(ctx), true);
}
+ RangeForwardTaskState rangeState = (RangeForwardTaskState) ctx.getStateObject(rangeId);
+ IRangeMap rangeMap = rangeState.getRangeMap();
+ nodeRangeStart = getPartitionBoundryStart(rangeMap);
+ nodeRangeEnd = getPartitionBoundryEnd(rangeMap);
+
}
@Override
@@ -159,7 +166,7 @@ public class IntervalLocalRangeOperatorDescriptor extends AbstractOperatorDescri
writers[index] = writer;
}
- long getPartitionBoundryStart() {
+ long getPartitionBoundryStart(IRangeMap rangeMap) {
int fieldIndex = 0;
int slot = partition - 1;
long boundary = Long.MIN_VALUE;
@@ -177,7 +184,7 @@ public class IntervalLocalRangeOperatorDescriptor extends AbstractOperatorDescri
return boundary;
}
- long getPartitionBoundryEnd() {
+ long getPartitionBoundryEnd(IRangeMap rangeMap) {
int fieldIndex = 0;
int slot = partition;
long boundary = Long.MAX_VALUE;
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/2061a388/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/algebra/operators/physical/IntervalLocalRangeSplitterPOperator.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/algebra/operators/physical/IntervalLocalRangeSplitterPOperator.java b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/algebra/operators/physical/IntervalLocalRangeSplitterPOperator.java
index ced06aa..fe5c28b 100644
--- a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/algebra/operators/physical/IntervalLocalRangeSplitterPOperator.java
+++ b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/algebra/operators/physical/IntervalLocalRangeSplitterPOperator.java
@@ -39,16 +39,16 @@ import org.apache.hyracks.algebricks.core.jobgen.impl.JobGenHelper;
import org.apache.hyracks.api.dataflow.IOperatorDescriptor;
import org.apache.hyracks.api.dataflow.value.RecordDescriptor;
import org.apache.hyracks.api.job.IOperatorDescriptorRegistry;
-import org.apache.hyracks.dataflow.common.data.partition.range.IRangeMap;
+import org.apache.hyracks.dataflow.std.base.RangeId;
public class IntervalLocalRangeSplitterPOperator extends AbstractPhysicalOperator {
private List<LogicalVariable> intervalFields;
- private IRangeMap rangeMap;
+ private RangeId rangeId;
- public IntervalLocalRangeSplitterPOperator(List<LogicalVariable> intervalFields, IRangeMap rangeMap) {
+ public IntervalLocalRangeSplitterPOperator(List<LogicalVariable> intervalFields, RangeId rangeId) {
this.intervalFields = intervalFields;
- this.rangeMap = rangeMap;
+ this.rangeId = rangeId;
}
@Override
@@ -88,7 +88,7 @@ public class IntervalLocalRangeSplitterPOperator extends AbstractPhysicalOperato
int[] keys = JobGenHelper.variablesToFieldIndexes(intervalFields, inputSchemas[0]);
- IOperatorDescriptor opDesc = new IntervalLocalRangeOperatorDescriptor(spec, keys, recDescriptor, rangeMap);
+ IOperatorDescriptor opDesc = new IntervalLocalRangeOperatorDescriptor(spec, keys, recDescriptor, rangeId);
contributeOpDesc(builder, (AbstractLogicalOperator) op, opDesc);
ILogicalOperator src = op.getInputs().get(0).getValue();
builder.contributeGraphEdge(src, 0, op, 0);
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/2061a388/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/algebra/operators/physical/IntervalPartitionJoinPOperator.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/algebra/operators/physical/IntervalPartitionJoinPOperator.java b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/algebra/operators/physical/IntervalPartitionJoinPOperator.java
index 1eff2aa..ca9dd69 100644
--- a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/algebra/operators/physical/IntervalPartitionJoinPOperator.java
+++ b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/algebra/operators/physical/IntervalPartitionJoinPOperator.java
@@ -26,9 +26,10 @@ import org.apache.asterix.runtime.operators.joins.intervalpartition.IntervalPart
import org.apache.hyracks.algebricks.core.algebra.base.LogicalVariable;
import org.apache.hyracks.algebricks.core.algebra.operators.logical.AbstractBinaryJoinOperator.JoinKind;
import org.apache.hyracks.api.dataflow.IOperatorDescriptor;
+import org.apache.hyracks.api.dataflow.value.IRangeMap;
import org.apache.hyracks.api.dataflow.value.RecordDescriptor;
import org.apache.hyracks.api.job.IOperatorDescriptorRegistry;
-import org.apache.hyracks.dataflow.common.data.partition.range.IRangeMap;
+import org.apache.hyracks.dataflow.std.base.RangeId;
public class IntervalPartitionJoinPOperator extends AbstractIntervalJoinPOperator {
@@ -44,8 +45,10 @@ public class IntervalPartitionJoinPOperator extends AbstractIntervalJoinPOperato
public IntervalPartitionJoinPOperator(JoinKind kind, JoinPartitioningType partitioningType,
List<LogicalVariable> sideLeftOfEqualities, List<LogicalVariable> sideRightOfEqualities,
int memSizeInFrames, long buildTupleCount, long probeTupleCount, long buildMaxDuration,
- long probeMaxDuration, int avgTuplesInFrame, IIntervalMergeJoinCheckerFactory mjcf, IRangeMap rangeMap) {
- super(kind, partitioningType, sideLeftOfEqualities, sideRightOfEqualities, mjcf, rangeMap);
+ long probeMaxDuration, int avgTuplesInFrame, IIntervalMergeJoinCheckerFactory mjcf, RangeId leftRangeId,
+ RangeId rightRangeId, IRangeMap rangeMapHint) {
+ super(kind, partitioningType, sideLeftOfEqualities, sideRightOfEqualities, mjcf, leftRangeId, rightRangeId,
+ rangeMapHint);
this.memSizeInFrames = memSizeInFrames;
this.buildTupleCount = buildTupleCount;
this.probeTupleCount = probeTupleCount;
@@ -58,8 +61,8 @@ public class IntervalPartitionJoinPOperator extends AbstractIntervalJoinPOperato
+ sideRightOfEqualities + ", int memSizeInFrames=" + memSizeInFrames + ", int buildTupleCount="
+ buildTupleCount + ", int probeTupleCount=" + probeTupleCount + ", int buildMaxDuration="
+ buildMaxDuration + ", int probeMaxDuration=" + probeMaxDuration + ", int avgTuplesInFrame="
- + avgTuplesInFrame + ", IMergeJoinCheckerFactory mjcf=" + mjcf + ", IRangeMap rangeMap=" + rangeMap
- + ".");
+ + avgTuplesInFrame + ", IMergeJoinCheckerFactory mjcf=" + mjcf + ", RangeId leftRangeId=" + leftRangeId
+ + ", RangeId rightRangeId=" + rightRangeId + ".");
}
public long getProbeTupleCount() {
@@ -89,10 +92,10 @@ public class IntervalPartitionJoinPOperator extends AbstractIntervalJoinPOperato
@Override
IOperatorDescriptor getIntervalOperatorDescriptor(int[] keysLeft, int[] keysRight, IOperatorDescriptorRegistry spec,
- RecordDescriptor recordDescriptor, IIntervalMergeJoinCheckerFactory mjcf, IRangeMap rangeMap) {
+ RecordDescriptor recordDescriptor, IIntervalMergeJoinCheckerFactory mjcf, RangeId rangeId) {
return new IntervalPartitionJoinOperatorDescriptor(spec, memSizeInFrames, buildTupleCount, probeTupleCount,
buildMaxDuration, probeMaxDuration, avgTuplesInFrame, keysLeft, keysRight, recordDescriptor, mjcf,
- rangeMap);
+ rangeId);
}
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/2061a388/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/IntervalSplitPartitioningRule.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/IntervalSplitPartitioningRule.java b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/IntervalSplitPartitioningRule.java
index 9df5a50..eafc2bb 100644
--- a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/IntervalSplitPartitioningRule.java
+++ b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/IntervalSplitPartitioningRule.java
@@ -63,8 +63,8 @@ import org.apache.hyracks.algebricks.core.algebra.operators.physical.RangePartit
import org.apache.hyracks.algebricks.core.algebra.operators.physical.ReplicatePOperator;
import org.apache.hyracks.algebricks.core.algebra.operators.physical.UnionAllPOperator;
import org.apache.hyracks.algebricks.core.rewriter.base.IAlgebraicRewriteRule;
-import org.apache.hyracks.dataflow.common.data.partition.range.IRangeMap;
-import org.apache.hyracks.dataflow.common.data.partition.range.IRangePartitionType.RangePartitioningType;
+import org.apache.hyracks.api.dataflow.value.IRangePartitionType.RangePartitioningType;
+import org.apache.hyracks.dataflow.std.base.RangeId;
/**
* Before:
@@ -153,9 +153,9 @@ public class IntervalSplitPartitioningRule implements IAlgebraicRewriteRule {
Mutable<ILogicalOperator> leftRangeInput = leftSorter.getValue().getInputs().get(0);
Mutable<ILogicalOperator> rightRangeInput = rightSorter.getValue().getInputs().get(0);
- IRangeMap leftRangeMap = getRangeMapForBranch(leftRangeInput.getValue());
- IRangeMap rightRangeMap = getRangeMapForBranch(rightRangeInput.getValue());
- if (leftRangeMap == null || rightRangeMap == null) {
+ RangeId leftRangeId = getRangeMapForBranch(leftRangeInput.getValue());
+ RangeId rightRangeId = getRangeMapForBranch(rightRangeInput.getValue());
+ if (leftRangeId == null || rightRangeId == null) {
return false;
}
// TODO check physical join
@@ -166,9 +166,9 @@ public class IntervalSplitPartitioningRule implements IAlgebraicRewriteRule {
if (leftJoinKey == null || rightJoinKey == null) {
return false;
}
- ReplicateOperator leftIntervalSplit = getIntervalSplitOperator(leftSortKey, leftRangeMap, mode);
+ ReplicateOperator leftIntervalSplit = getIntervalSplitOperator(leftSortKey, leftRangeId, mode);
Mutable<ILogicalOperator> leftIntervalSplitRef = new MutableObject<>(leftIntervalSplit);
- ReplicateOperator rightIntervalSplit = getIntervalSplitOperator(rightSortKey, rightRangeMap, mode);
+ ReplicateOperator rightIntervalSplit = getIntervalSplitOperator(rightSortKey, rightRangeId, mode);
Mutable<ILogicalOperator> rightIntervalSplitRef = new MutableObject<>(rightIntervalSplit);
// Replicate operators
@@ -358,7 +358,7 @@ public class IntervalSplitPartitioningRule implements IAlgebraicRewriteRule {
return eo;
}
- private ReplicateOperator getIntervalSplitOperator(LogicalVariable key, IRangeMap rangeMap, ExecutionMode mode) {
+ private ReplicateOperator getIntervalSplitOperator(LogicalVariable key, RangeId rangeId, ExecutionMode mode) {
List<LogicalVariable> joinKeyLogicalVars = new ArrayList<>();
joinKeyLogicalVars.add(key);
//create the logical and physical operator
@@ -368,7 +368,7 @@ public class IntervalSplitPartitioningRule implements IAlgebraicRewriteRule {
}
ReplicateOperator splitOperator = new ReplicateOperator(flags.length, flags);
IntervalLocalRangeSplitterPOperator splitPOperator = new IntervalLocalRangeSplitterPOperator(joinKeyLogicalVars,
- rangeMap);
+ rangeId);
splitOperator.setPhysicalOperator(splitPOperator);
splitOperator.setExecutionMode(mode);
return splitOperator;
@@ -418,14 +418,14 @@ public class IntervalSplitPartitioningRule implements IAlgebraicRewriteRule {
MergeJoinPOperator mjpo = (MergeJoinPOperator) joinPo;
MergeJoinPOperator mjpoClone = new MergeJoinPOperator(mjpo.getKind(), mjpo.getPartitioningType(),
mjpo.getKeysLeftBranch(), mjpo.getKeysRightBranch(), memoryJoinSize,
- mjpo.getMergeJoinCheckerFactory(), mjpo.getRangeMap());
+ mjpo.getMergeJoinCheckerFactory(), mjpo.getRangeId(), null);
ijoClone.setPhysicalOperator(mjpoClone);
} else if (joinPo.getOperatorTag() == PhysicalOperatorTag.EXTENSION_OPERATOR) {
if (joinPo instanceof IntervalIndexJoinPOperator) {
IntervalIndexJoinPOperator iijpo = (IntervalIndexJoinPOperator) joinPo;
IntervalIndexJoinPOperator iijpoClone = new IntervalIndexJoinPOperator(iijpo.getKind(),
iijpo.getPartitioningType(), iijpo.getKeysLeftBranch(), iijpo.getKeysRightBranch(),
- memoryJoinSize, iijpo.getIntervalMergeJoinCheckerFactory(), iijpo.getRangeMap());
+ memoryJoinSize, iijpo.getIntervalMergeJoinCheckerFactory(), iijpo.getRangeId(), null);
ijoClone.setPhysicalOperator(iijpoClone);
} else if (joinPo instanceof IntervalPartitionJoinPOperator) {
IntervalPartitionJoinPOperator ipjpo = (IntervalPartitionJoinPOperator) joinPo;
@@ -433,7 +433,7 @@ public class IntervalSplitPartitioningRule implements IAlgebraicRewriteRule {
ipjpo.getPartitioningType(), ipjpo.getKeysLeftBranch(), ipjpo.getKeysRightBranch(),
memoryJoinSize, ipjpo.getBuildTupleCount(), ipjpo.getProbeTupleCount(),
ipjpo.getBuildMaxDuration(), ipjpo.getProbeMaxDuration(), ipjpo.getAvgTuplesInFrame(),
- ipjpo.getIntervalMergeJoinCheckerFactory(), ipjpo.getRangeMap());
+ ipjpo.getIntervalMergeJoinCheckerFactory(), ipjpo.getRangeId(), null);
ijoClone.setPhysicalOperator(iijpoClone);
} else {
return null;
@@ -471,7 +471,7 @@ public class IntervalSplitPartitioningRule implements IAlgebraicRewriteRule {
return false;
}
- private IRangeMap getRangeMapForBranch(ILogicalOperator op) {
+ private RangeId getRangeMapForBranch(ILogicalOperator op) {
if (op.getOperatorTag() != LogicalOperatorTag.EXCHANGE) {
return null;
}
@@ -484,7 +484,7 @@ public class IntervalSplitPartitioningRule implements IAlgebraicRewriteRule {
if (exchangeLeftPO.getRangeType() != RangePartitioningType.SPLIT) {
return null;
}
- return exchangeLeftPO.getRangeMap();
+ return exchangeLeftPO.getRangeId();
}
}
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/2061a388/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/SweepIllegalNonfunctionalFunctions.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/SweepIllegalNonfunctionalFunctions.java b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/SweepIllegalNonfunctionalFunctions.java
index e04be6f..c7d21f8 100644
--- a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/SweepIllegalNonfunctionalFunctions.java
+++ b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/SweepIllegalNonfunctionalFunctions.java
@@ -52,6 +52,7 @@ import org.apache.hyracks.algebricks.core.algebra.operators.logical.OrderOperato
import org.apache.hyracks.algebricks.core.algebra.operators.logical.LeftOuterUnnestOperator;
import org.apache.hyracks.algebricks.core.algebra.operators.logical.PartitioningSplitOperator;
import org.apache.hyracks.algebricks.core.algebra.operators.logical.ProjectOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.RangeForwardOperator;
import org.apache.hyracks.algebricks.core.algebra.operators.logical.ReplicateOperator;
import org.apache.hyracks.algebricks.core.algebra.operators.logical.RunningAggregateOperator;
import org.apache.hyracks.algebricks.core.algebra.operators.logical.ScriptOperator;
@@ -215,6 +216,11 @@ public class SweepIllegalNonfunctionalFunctions extends AbstractExtractExprRule
}
@Override
+ public Void visitRangeForwardOperator(RangeForwardOperator op, Void arg) throws AlgebricksException {
+ return null;
+ }
+
+ @Override
public Void visitScriptOperator(ScriptOperator op, Void arg) throws AlgebricksException {
return null;
}
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/2061a388/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/subplan/InlineAllNtsInSubplanVisitor.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/subplan/InlineAllNtsInSubplanVisitor.java b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/subplan/InlineAllNtsInSubplanVisitor.java
index b061066..8f54972 100644
--- a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/subplan/InlineAllNtsInSubplanVisitor.java
+++ b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/subplan/InlineAllNtsInSubplanVisitor.java
@@ -69,6 +69,7 @@ import org.apache.hyracks.algebricks.core.algebra.operators.logical.OrderOperato
import org.apache.hyracks.algebricks.core.algebra.operators.logical.OrderOperator.IOrder;
import org.apache.hyracks.algebricks.core.algebra.operators.logical.PartitioningSplitOperator;
import org.apache.hyracks.algebricks.core.algebra.operators.logical.ProjectOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.RangeForwardOperator;
import org.apache.hyracks.algebricks.core.algebra.operators.logical.ReplicateOperator;
import org.apache.hyracks.algebricks.core.algebra.operators.logical.RunningAggregateOperator;
import org.apache.hyracks.algebricks.core.algebra.operators.logical.ScriptOperator;
@@ -522,6 +523,11 @@ class InlineAllNtsInSubplanVisitor implements IQueryOperatorVisitor<ILogicalOper
}
@Override
+ public ILogicalOperator visitRangeForwardOperator(RangeForwardOperator op, Void arg) throws AlgebricksException {
+ return visitSingleInputOperator(op);
+ }
+
+ @Override
public ILogicalOperator visitScriptOperator(ScriptOperator op, Void arg) throws AlgebricksException {
throw new UnsupportedOperationException("Script operators in a subplan are not supported!");
}
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/2061a388/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/subplan/InlineLeftNtsInSubplanJoinFlatteningVisitor.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/subplan/InlineLeftNtsInSubplanJoinFlatteningVisitor.java b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/subplan/InlineLeftNtsInSubplanJoinFlatteningVisitor.java
index c7b927e..d5f8fe9 100644
--- a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/subplan/InlineLeftNtsInSubplanJoinFlatteningVisitor.java
+++ b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/subplan/InlineLeftNtsInSubplanJoinFlatteningVisitor.java
@@ -55,6 +55,7 @@ import org.apache.hyracks.algebricks.core.algebra.operators.logical.OrderOperato
import org.apache.hyracks.algebricks.core.algebra.operators.logical.OrderOperator.IOrder;
import org.apache.hyracks.algebricks.core.algebra.operators.logical.PartitioningSplitOperator;
import org.apache.hyracks.algebricks.core.algebra.operators.logical.ProjectOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.RangeForwardOperator;
import org.apache.hyracks.algebricks.core.algebra.operators.logical.ReplicateOperator;
import org.apache.hyracks.algebricks.core.algebra.operators.logical.RunningAggregateOperator;
import org.apache.hyracks.algebricks.core.algebra.operators.logical.ScriptOperator;
@@ -292,6 +293,11 @@ class InlineLeftNtsInSubplanJoinFlatteningVisitor implements IQueryOperatorVisit
}
@Override
+ public ILogicalOperator visitRangeForwardOperator(RangeForwardOperator op, Void arg) throws AlgebricksException {
+ return visitSingleInputOperator(op);
+ }
+
+ @Override
public ILogicalOperator visitScriptOperator(ScriptOperator op, Void arg) throws AlgebricksException {
throw new UnsupportedOperationException("Script operators in a subplan are not supported!");
}
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/2061a388/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/subplan/SubplanSpecialFlatteningCheckVisitor.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/subplan/SubplanSpecialFlatteningCheckVisitor.java b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/subplan/SubplanSpecialFlatteningCheckVisitor.java
index ef0f9da..e5c67cc 100644
--- a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/subplan/SubplanSpecialFlatteningCheckVisitor.java
+++ b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/subplan/SubplanSpecialFlatteningCheckVisitor.java
@@ -40,6 +40,7 @@ import org.apache.hyracks.algebricks.core.algebra.operators.logical.OrderOperato
import org.apache.hyracks.algebricks.core.algebra.operators.logical.LeftOuterUnnestOperator;
import org.apache.hyracks.algebricks.core.algebra.operators.logical.PartitioningSplitOperator;
import org.apache.hyracks.algebricks.core.algebra.operators.logical.ProjectOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.RangeForwardOperator;
import org.apache.hyracks.algebricks.core.algebra.operators.logical.ReplicateOperator;
import org.apache.hyracks.algebricks.core.algebra.operators.logical.RunningAggregateOperator;
import org.apache.hyracks.algebricks.core.algebra.operators.logical.ScriptOperator;
@@ -168,6 +169,11 @@ class SubplanSpecialFlatteningCheckVisitor implements IQueryOperatorVisitor<Bool
}
@Override
+ public Boolean visitRangeForwardOperator(RangeForwardOperator op, Void arg) throws AlgebricksException {
+ return visitInputs(op);
+ }
+
+ @Override
public Boolean visitScriptOperator(ScriptOperator op, Void arg) throws AlgebricksException {
return false;
}
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/2061a388/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/util/JoinUtils.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/util/JoinUtils.java b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/util/JoinUtils.java
index b991531..2707403 100644
--- a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/util/JoinUtils.java
+++ b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/util/JoinUtils.java
@@ -55,8 +55,9 @@ import org.apache.hyracks.algebricks.core.algebra.expressions.VariableReferenceE
import org.apache.hyracks.algebricks.core.algebra.functions.FunctionIdentifier;
import org.apache.hyracks.algebricks.core.algebra.operators.logical.AbstractBinaryJoinOperator;
import org.apache.hyracks.algebricks.core.algebra.operators.physical.AbstractJoinPOperator.JoinPartitioningType;
+import org.apache.hyracks.api.dataflow.value.IRangeMap;
import org.apache.hyracks.algebricks.core.algebra.operators.physical.MergeJoinPOperator;
-import org.apache.hyracks.dataflow.common.data.partition.range.IRangeMap;
+import org.apache.hyracks.dataflow.std.base.RangeId;
import org.apache.hyracks.dataflow.std.join.IMergeJoinCheckerFactory;
public class JoinUtils {
@@ -111,18 +112,18 @@ public class JoinUtils {
if (ijea.isMergeJoin()) {
// Sort Merge.
LOGGER.fine("Interval Join - Merge");
- setSortMergeIntervalJoinOp(op, fi, sideLeft, sideRight, ijea.getRangeMap(), context);
+ setSortMergeIntervalJoinOp(op, fi, sideLeft, sideRight, ijea, context);
} else if (ijea.isPartitionJoin()) {
// Overlapping Interval Partition.
LOGGER.fine("Interval Join - Cluster Parititioning");
- setIntervalPartitionJoinOp(op, fi, sideLeft, sideRight, ijea.getRangeMap(), ijea, context);
+ setIntervalPartitionJoinOp(op, fi, sideLeft, sideRight, ijea, context);
} else if (ijea.isSpatialJoin()) {
// Spatial Partition.
LOGGER.fine("Interval Join - Spatial Partitioning");
} else if (ijea.isIndexJoin()) {
// Endpoint Index.
LOGGER.fine("Interval Join - Endpoint Index");
- setIntervalIndexJoinOp(op, fi, sideLeft, sideRight, ijea.getRangeMap(), context);
+ setIntervalIndexJoinOp(op, fi, sideLeft, sideRight, ijea, context);
}
}
}
@@ -139,16 +140,17 @@ public class JoinUtils {
}
private static void setSortMergeIntervalJoinOp(AbstractBinaryJoinOperator op, FunctionIdentifier fi,
- List<LogicalVariable> sideLeft, List<LogicalVariable> sideRight, IRangeMap rangeMap,
+ List<LogicalVariable> sideLeft, List<LogicalVariable> sideRight, IntervalJoinExpressionAnnotation ijea,
IOptimizationContext context) {
- IMergeJoinCheckerFactory mjcf = getIntervalMergeJoinCheckerFactory(fi, rangeMap);
+ IMergeJoinCheckerFactory mjcf = getIntervalMergeJoinCheckerFactory(fi);
op.setPhysicalOperator(new MergeJoinPOperator(op.getJoinKind(), JoinPartitioningType.BROADCAST, sideLeft,
- sideRight, context.getPhysicalOptimizationConfig().getMaxFramesForJoin(), mjcf, rangeMap));
+ sideRight, context.getPhysicalOptimizationConfig().getMaxFramesForJoin(), mjcf, context.newRangeId(),
+ context.newRangeId(), ijea.getRangeMap()));
}
private static void setIntervalPartitionJoinOp(AbstractBinaryJoinOperator op, FunctionIdentifier fi,
- List<LogicalVariable> sideLeft, List<LogicalVariable> sideRight, IRangeMap rangeMap,
- IntervalJoinExpressionAnnotation ijea, IOptimizationContext context) {
+ List<LogicalVariable> sideLeft, List<LogicalVariable> sideRight, IntervalJoinExpressionAnnotation ijea,
+ IOptimizationContext context) {
long leftCount = ijea.getLeftRecordCount() > 0 ? ijea.getLeftRecordCount() : getCardinality(sideLeft, context);
long rightCount = ijea.getRightRecordCount() > 0 ? ijea.getRightRecordCount()
: getCardinality(sideRight, context);
@@ -159,18 +161,20 @@ public class JoinUtils {
int tuplesPerFrame = ijea.getTuplesPerFrame() > 0 ? ijea.getTuplesPerFrame()
: context.getPhysicalOptimizationConfig().getMaxRecordsPerFrame();
- IIntervalMergeJoinCheckerFactory mjcf = getIntervalMergeJoinCheckerFactory(fi, rangeMap);
+ IIntervalMergeJoinCheckerFactory mjcf = getIntervalMergeJoinCheckerFactory(fi);
op.setPhysicalOperator(new IntervalPartitionJoinPOperator(op.getJoinKind(), JoinPartitioningType.BROADCAST,
sideLeft, sideRight, context.getPhysicalOptimizationConfig().getMaxFramesForJoin(), leftCount,
- rightCount, leftMaxDuration, rightMaxDuration, tuplesPerFrame, mjcf, rangeMap));
+ rightCount, leftMaxDuration, rightMaxDuration, tuplesPerFrame, mjcf, context.newRangeId(),
+ context.newRangeId(), ijea.getRangeMap()));
}
private static void setIntervalIndexJoinOp(AbstractBinaryJoinOperator op, FunctionIdentifier fi,
- List<LogicalVariable> sideLeft, List<LogicalVariable> sideRight, IRangeMap rangeMap,
+ List<LogicalVariable> sideLeft, List<LogicalVariable> sideRight, IntervalJoinExpressionAnnotation ijea,
IOptimizationContext context) {
- IIntervalMergeJoinCheckerFactory mjcf = getIntervalMergeJoinCheckerFactory(fi, rangeMap);
+ IIntervalMergeJoinCheckerFactory mjcf = getIntervalMergeJoinCheckerFactory(fi);
op.setPhysicalOperator(new IntervalIndexJoinPOperator(op.getJoinKind(), JoinPartitioningType.BROADCAST,
- sideLeft, sideRight, context.getPhysicalOptimizationConfig().getMaxFramesForJoin(), mjcf, rangeMap));
+ sideLeft, sideRight, context.getPhysicalOptimizationConfig().getMaxFramesForJoin(), mjcf,
+ context.newRangeId(), context.newRangeId(), ijea.getRangeMap()));
}
private static int getMaxDuration(List<LogicalVariable> lv, IOptimizationContext context) {
@@ -226,9 +230,8 @@ public class JoinUtils {
}
}
- private static IIntervalMergeJoinCheckerFactory getIntervalMergeJoinCheckerFactory(FunctionIdentifier fi,
- IRangeMap rangeMap) {
- IIntervalMergeJoinCheckerFactory mjcf = new OverlappingIntervalMergeJoinCheckerFactory(rangeMap);
+ private static IIntervalMergeJoinCheckerFactory getIntervalMergeJoinCheckerFactory(FunctionIdentifier fi) {
+ IIntervalMergeJoinCheckerFactory mjcf = new OverlappingIntervalMergeJoinCheckerFactory();
if (fi.equals(AsterixBuiltinFunctions.INTERVAL_OVERLAPPED_BY)) {
mjcf = new OverlappedByIntervalMergeJoinCheckerFactory();
} else if (fi.equals(AsterixBuiltinFunctions.INTERVAL_OVERLAPS)) {
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/2061a388/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/annotations/IntervalJoinExpressionAnnotation.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/annotations/IntervalJoinExpressionAnnotation.java b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/annotations/IntervalJoinExpressionAnnotation.java
index 93f5990..e638de9 100644
--- a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/annotations/IntervalJoinExpressionAnnotation.java
+++ b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/annotations/IntervalJoinExpressionAnnotation.java
@@ -20,7 +20,7 @@ package org.apache.asterix.common.annotations;
import org.apache.hyracks.algebricks.core.algebra.expressions.AbstractExpressionAnnotation;
import org.apache.hyracks.algebricks.core.algebra.expressions.IExpressionAnnotation;
-import org.apache.hyracks.dataflow.common.data.partition.range.IRangeMap;
+import org.apache.hyracks.api.dataflow.value.IRangeMap;
public class IntervalJoinExpressionAnnotation extends AbstractExpressionAnnotation {
@@ -39,7 +39,6 @@ public class IntervalJoinExpressionAnnotation extends AbstractExpressionAnnotati
private long rightRecordCount = -1;
private int tuplesPerFrame = -1;
-
@Override
public IExpressionAnnotation copy() {
IntervalJoinExpressionAnnotation clone = new IntervalJoinExpressionAnnotation();
@@ -57,15 +56,16 @@ public class IntervalJoinExpressionAnnotation extends AbstractExpressionAnnotati
String hint = (String) object;
setJoinType(hint);
- hint = hint.substring(hint.indexOf(']', 0) + 2);
- String[] args = hint.split(" ");
-
- if (joinType.equals(PARTITION_HINT_STRING) && args.length == 5) {
- leftRecordCount = Long.valueOf(args[0]);
- rightRecordCount = Long.valueOf(args[1]);
- leftMaxDuration = Long.valueOf(args[2]);
- rightMaxDuration = Long.valueOf(args[3]);
- tuplesPerFrame = Integer.valueOf(args[4]);
+ if (joinType.equals(PARTITION_HINT_STRING)) {
+ hint = hint.substring(hint.indexOf(']', 0) + 1).trim();
+ String[] args = hint.split(" ");
+ if (args.length == 5) {
+ leftRecordCount = Long.valueOf(args[0]);
+ rightRecordCount = Long.valueOf(args[1]);
+ leftMaxDuration = Long.valueOf(args[2]);
+ rightMaxDuration = Long.valueOf(args[3]);
+ tuplesPerFrame = Integer.valueOf(args[4]);
+ }
}
}
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/2061a388/asterixdb/asterix-lang-aql/src/main/java/org/apache/asterix/lang/aql/util/RangeMapBuilder.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-lang-aql/src/main/java/org/apache/asterix/lang/aql/util/RangeMapBuilder.java b/asterixdb/asterix-lang-aql/src/main/java/org/apache/asterix/lang/aql/util/RangeMapBuilder.java
index 689546a..07fab74 100644
--- a/asterixdb/asterix-lang-aql/src/main/java/org/apache/asterix/lang/aql/util/RangeMapBuilder.java
+++ b/asterixdb/asterix-lang-aql/src/main/java/org/apache/asterix/lang/aql/util/RangeMapBuilder.java
@@ -49,10 +49,10 @@ import org.apache.asterix.om.types.BuiltinType;
import org.apache.hyracks.algebricks.common.exceptions.NotImplementedException;
import org.apache.hyracks.api.dataflow.value.IBinaryComparator;
import org.apache.hyracks.api.dataflow.value.IBinaryComparatorFactory;
+import org.apache.hyracks.api.dataflow.value.IRangeMap;
import org.apache.hyracks.api.dataflow.value.ISerializerDeserializer;
import org.apache.hyracks.api.exceptions.HyracksDataException;
import org.apache.hyracks.data.std.util.ArrayBackedValueStorage;
-import org.apache.hyracks.dataflow.common.data.partition.range.IRangeMap;
import org.apache.hyracks.dataflow.common.data.partition.range.RangeMap;
public abstract class RangeMapBuilder {
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/2061a388/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/clause/OrderbyClause.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/clause/OrderbyClause.java b/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/clause/OrderbyClause.java
index 8574c76..4c66441 100644
--- a/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/clause/OrderbyClause.java
+++ b/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/clause/OrderbyClause.java
@@ -25,7 +25,7 @@ import org.apache.asterix.lang.common.base.Clause;
import org.apache.asterix.lang.common.base.Expression;
import org.apache.asterix.lang.common.visitor.base.ILangVisitor;
import org.apache.commons.lang3.ObjectUtils;
-import org.apache.hyracks.dataflow.common.data.partition.range.IRangeMap;
+import org.apache.hyracks.api.dataflow.value.IRangeMap;
public class OrderbyClause implements Clause {
private List<Expression> orderbyList;
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/2061a388/asterixdb/asterix-om/src/main/java/org/apache/asterix/formats/nontagged/AqlBinaryComparatorFactoryProvider.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/formats/nontagged/AqlBinaryComparatorFactoryProvider.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/formats/nontagged/AqlBinaryComparatorFactoryProvider.java
index 65990ae..7a8aac7 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/formats/nontagged/AqlBinaryComparatorFactoryProvider.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/formats/nontagged/AqlBinaryComparatorFactoryProvider.java
@@ -45,6 +45,7 @@ import org.apache.hyracks.algebricks.data.IBinaryComparatorFactoryProvider;
import org.apache.hyracks.api.dataflow.value.IBinaryComparator;
import org.apache.hyracks.api.dataflow.value.IBinaryComparatorFactory;
import org.apache.hyracks.api.dataflow.value.IBinaryRangeComparatorFactory;
+import org.apache.hyracks.api.dataflow.value.IRangePartitionType.RangePartitioningType;
import org.apache.hyracks.api.exceptions.HyracksDataException;
import org.apache.hyracks.data.std.accessors.PointableBinaryComparatorFactory;
import org.apache.hyracks.data.std.primitive.ByteArrayPointable;
@@ -56,7 +57,6 @@ import org.apache.hyracks.data.std.primitive.LongPointable;
import org.apache.hyracks.data.std.primitive.RawUTF8StringPointable;
import org.apache.hyracks.data.std.primitive.ShortPointable;
import org.apache.hyracks.data.std.primitive.UTF8StringLowercasePointable;
-import org.apache.hyracks.dataflow.common.data.partition.range.IRangePartitionType.RangePartitioningType;
public class AqlBinaryComparatorFactoryProvider implements IBinaryComparatorFactoryProvider, Serializable {
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/2061a388/asterixdb/asterix-om/src/test/java/org/apache/asterix/dataflow/data/nontagged/comparators/rangeinterval/IntervalRangePartitionComputerFactoryTest.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-om/src/test/java/org/apache/asterix/dataflow/data/nontagged/comparators/rangeinterval/IntervalRangePartitionComputerFactoryTest.java b/asterixdb/asterix-om/src/test/java/org/apache/asterix/dataflow/data/nontagged/comparators/rangeinterval/IntervalRangePartitionComputerFactoryTest.java
index 6476015..2179634 100644
--- a/asterixdb/asterix-om/src/test/java/org/apache/asterix/dataflow/data/nontagged/comparators/rangeinterval/IntervalRangePartitionComputerFactoryTest.java
+++ b/asterixdb/asterix-om/src/test/java/org/apache/asterix/dataflow/data/nontagged/comparators/rangeinterval/IntervalRangePartitionComputerFactoryTest.java
@@ -33,18 +33,18 @@ import org.apache.hyracks.api.comm.IFrameTupleAccessor;
import org.apache.hyracks.api.comm.VSizeFrame;
import org.apache.hyracks.api.context.IHyracksTaskContext;
import org.apache.hyracks.api.dataflow.value.IBinaryRangeComparatorFactory;
+import org.apache.hyracks.api.dataflow.value.IRangeMap;
import org.apache.hyracks.api.dataflow.value.ISerializerDeserializer;
import org.apache.hyracks.api.dataflow.value.ITupleRangePartitionComputer;
import org.apache.hyracks.api.dataflow.value.ITupleRangePartitionComputerFactory;
import org.apache.hyracks.api.dataflow.value.RecordDescriptor;
+import org.apache.hyracks.api.dataflow.value.IRangePartitionType.RangePartitioningType;
import org.apache.hyracks.api.exceptions.HyracksDataException;
import org.apache.hyracks.api.storage.IGrowableIntArray;
import org.apache.hyracks.dataflow.common.comm.io.FrameFixedFieldTupleAppender;
import org.apache.hyracks.dataflow.common.comm.io.FrameTupleAccessor;
import org.apache.hyracks.dataflow.common.data.marshalling.Integer64SerializerDeserializer;
import org.apache.hyracks.dataflow.common.data.partition.range.FieldRangePartitionComputerFactory;
-import org.apache.hyracks.dataflow.common.data.partition.range.IRangeMap;
-import org.apache.hyracks.dataflow.common.data.partition.range.IRangePartitionType.RangePartitioningType;
import org.apache.hyracks.dataflow.common.data.partition.range.RangeMap;
import org.apache.hyracks.storage.common.arraylist.IntArrayList;
import org.apache.hyracks.test.support.TestUtils;
@@ -145,8 +145,8 @@ public class IntervalRangePartitionComputerFactoryTest extends TestCase {
IHyracksTaskContext ctx = TestUtils.create(FRAME_SIZE);
int[] rangeFields = new int[] { 0 };
ITupleRangePartitionComputerFactory frpcf = new FieldRangePartitionComputerFactory(rangeFields,
- comparatorFactories, rangeMap, rangeType);
- ITupleRangePartitionComputer partitioner = frpcf.createPartitioner();
+ comparatorFactories, rangeType);
+ ITupleRangePartitionComputer partitioner = frpcf.createPartitioner(rangeMap);
IFrameTupleAccessor accessor = new FrameTupleAccessor(RecordDesc);
ByteBuffer buffer = prepareData(ctx, intervals);
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/2061a388/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/temporal/IntervalLogic.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/temporal/IntervalLogic.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/temporal/IntervalLogic.java
index 23f0da3..43d4521 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/temporal/IntervalLogic.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/temporal/IntervalLogic.java
@@ -20,8 +20,12 @@ package org.apache.asterix.runtime.evaluators.functions.temporal;
import java.io.Serializable;
+import org.apache.asterix.dataflow.data.nontagged.printers.adm.AIntervalPrinterFactory;
+import org.apache.asterix.dataflow.data.nontagged.printers.adm.AObjectPrinterFactory;
import org.apache.asterix.om.pointables.nonvisitor.AIntervalPointable;
import org.apache.asterix.runtime.evaluators.comparisons.ComparisonHelper;
+import org.apache.asterix.runtime.operators.joins.intervalindex.TuplePrinterUtil;
+import org.apache.hyracks.algebricks.data.IPrinter;
import org.apache.hyracks.api.exceptions.HyracksDataException;
import org.apache.hyracks.data.std.api.IPointable;
import org.apache.hyracks.data.std.primitive.VoidPointable;
@@ -115,10 +119,10 @@ public class IntervalLogic implements Serializable {
ip1.getEnd(e1);
ip2.getStart(s2);
ip2.getEnd(e2);
- return (ch.compare(ip1.getTypeTag(), ip2.getTypeTag(), s1, s2) <= 0
- && ch.compare(ip1.getTypeTag(), ip2.getTypeTag(), e1, s2) > 0)
- || (ch.compare(ip1.getTypeTag(), ip2.getTypeTag(), e1, e2) >= 0
- && ch.compare(ip1.getTypeTag(), ip2.getTypeTag(), s1, e2) < 0);
+ return ch.compare(ip1.getTypeTag(), ip2.getTypeTag(), s1, e2) <= 0
+ && ch.compare(ip1.getTypeTag(), ip2.getTypeTag(), e1, s2) >= 0
+ && ch.compare(ip1.getTypeTag(), ip2.getTypeTag(), e1, s2) != 0
+ && ch.compare(ip1.getTypeTag(), ip2.getTypeTag(), s1, e2) != 0;
}
/**
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/2061a388/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/AbstractIntervalInverseMergeJoinCheckerFactory.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/AbstractIntervalInverseMergeJoinCheckerFactory.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/AbstractIntervalInverseMergeJoinCheckerFactory.java
index d1e6f0c..f8f94a1 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/AbstractIntervalInverseMergeJoinCheckerFactory.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/AbstractIntervalInverseMergeJoinCheckerFactory.java
@@ -18,7 +18,7 @@
*/
package org.apache.asterix.runtime.operators.joins;
-import org.apache.hyracks.dataflow.common.data.partition.range.IRangePartitionType.RangePartitioningType;
+import org.apache.hyracks.api.dataflow.value.IRangePartitionType.RangePartitioningType;
public abstract class AbstractIntervalInverseMergeJoinCheckerFactory extends AbstractIntervalMergeJoinCheckerFactory {
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/2061a388/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/AbstractIntervalMergeJoinCheckerFactory.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/AbstractIntervalMergeJoinCheckerFactory.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/AbstractIntervalMergeJoinCheckerFactory.java
index c0a0f10..95fc499 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/AbstractIntervalMergeJoinCheckerFactory.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/AbstractIntervalMergeJoinCheckerFactory.java
@@ -18,7 +18,7 @@
*/
package org.apache.asterix.runtime.operators.joins;
-import org.apache.hyracks.dataflow.common.data.partition.range.IRangePartitionType.RangePartitioningType;
+import org.apache.hyracks.api.dataflow.value.IRangePartitionType.RangePartitioningType;
public abstract class AbstractIntervalMergeJoinCheckerFactory implements IIntervalMergeJoinCheckerFactory {
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/2061a388/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/AfterIntervalMergeJoinCheckerFactory.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/AfterIntervalMergeJoinCheckerFactory.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/AfterIntervalMergeJoinCheckerFactory.java
index 33386ce..572241c 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/AfterIntervalMergeJoinCheckerFactory.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/AfterIntervalMergeJoinCheckerFactory.java
@@ -18,13 +18,14 @@
*/
package org.apache.asterix.runtime.operators.joins;
-import org.apache.hyracks.dataflow.common.data.partition.range.IRangePartitionType.RangePartitioningType;
+import org.apache.hyracks.api.dataflow.value.IRangeMap;
+import org.apache.hyracks.api.dataflow.value.IRangePartitionType.RangePartitioningType;
public class AfterIntervalMergeJoinCheckerFactory extends AbstractIntervalMergeJoinCheckerFactory {
private static final long serialVersionUID = 1L;
@Override
- public IIntervalMergeJoinChecker createMergeJoinChecker(int[] keys0, int[] keys1, int partition) {
+ public IIntervalMergeJoinChecker createMergeJoinChecker(int[] keys0, int[] keys1, int partition, IRangeMap rangeMap) {
return new AfterIntervalMergeJoinChecker(keys0, keys1);
}
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/2061a388/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/BeforeIntervalMergeJoinCheckerFactory.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/BeforeIntervalMergeJoinCheckerFactory.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/BeforeIntervalMergeJoinCheckerFactory.java
index 36d9885..ff5acf2 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/BeforeIntervalMergeJoinCheckerFactory.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/BeforeIntervalMergeJoinCheckerFactory.java
@@ -18,13 +18,14 @@
*/
package org.apache.asterix.runtime.operators.joins;
-import org.apache.hyracks.dataflow.common.data.partition.range.IRangePartitionType.RangePartitioningType;
+import org.apache.hyracks.api.dataflow.value.IRangeMap;
+import org.apache.hyracks.api.dataflow.value.IRangePartitionType.RangePartitioningType;
public class BeforeIntervalMergeJoinCheckerFactory extends AbstractIntervalMergeJoinCheckerFactory {
private static final long serialVersionUID = 1L;
@Override
- public IIntervalMergeJoinChecker createMergeJoinChecker(int[] keys0, int[] keys1, int partition) {
+ public IIntervalMergeJoinChecker createMergeJoinChecker(int[] keys0, int[] keys1, int partition, IRangeMap rangeMap) {
return new BeforeIntervalMergeJoinChecker(keys0, keys1);
}
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/2061a388/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/CoveredByIntervalMergeJoinCheckerFactory.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/CoveredByIntervalMergeJoinCheckerFactory.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/CoveredByIntervalMergeJoinCheckerFactory.java
index 4f20629..64b0c2a 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/CoveredByIntervalMergeJoinCheckerFactory.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/CoveredByIntervalMergeJoinCheckerFactory.java
@@ -18,11 +18,13 @@
*/
package org.apache.asterix.runtime.operators.joins;
+import org.apache.hyracks.api.dataflow.value.IRangeMap;
+
public class CoveredByIntervalMergeJoinCheckerFactory extends AbstractIntervalInverseMergeJoinCheckerFactory {
private static final long serialVersionUID = 1L;
@Override
- public IIntervalMergeJoinChecker createMergeJoinChecker(int[] keys0, int[] keys1, int partition) {
+ public IIntervalMergeJoinChecker createMergeJoinChecker(int[] keys0, int[] keys1, int partition, IRangeMap rangeMap) {
return new CoveredByIntervalMergeJoinChecker(keys0, keys1);
}
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/2061a388/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/CoversIntervalMergeJoinCheckerFactory.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/CoversIntervalMergeJoinCheckerFactory.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/CoversIntervalMergeJoinCheckerFactory.java
index a5125ee..dc50451 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/CoversIntervalMergeJoinCheckerFactory.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/CoversIntervalMergeJoinCheckerFactory.java
@@ -18,11 +18,13 @@
*/
package org.apache.asterix.runtime.operators.joins;
+import org.apache.hyracks.api.dataflow.value.IRangeMap;
+
public class CoversIntervalMergeJoinCheckerFactory extends AbstractIntervalMergeJoinCheckerFactory {
private static final long serialVersionUID = 1L;
@Override
- public IIntervalMergeJoinChecker createMergeJoinChecker(int[] keys0, int[] keys1, int partition) {
+ public IIntervalMergeJoinChecker createMergeJoinChecker(int[] keys0, int[] keys1, int partition, IRangeMap rangeMap) {
return new CoversIntervalMergeJoinChecker(keys0, keys1);
}
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/2061a388/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/EndedByIntervalMergeJoinCheckerFactory.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/EndedByIntervalMergeJoinCheckerFactory.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/EndedByIntervalMergeJoinCheckerFactory.java
index c18a670..68e2922 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/EndedByIntervalMergeJoinCheckerFactory.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/EndedByIntervalMergeJoinCheckerFactory.java
@@ -18,13 +18,14 @@
*/
package org.apache.asterix.runtime.operators.joins;
-import org.apache.hyracks.dataflow.common.data.partition.range.IRangePartitionType.RangePartitioningType;
+import org.apache.hyracks.api.dataflow.value.IRangeMap;
+import org.apache.hyracks.api.dataflow.value.IRangePartitionType.RangePartitioningType;
public class EndedByIntervalMergeJoinCheckerFactory extends AbstractIntervalInverseMergeJoinCheckerFactory {
private static final long serialVersionUID = 1L;
@Override
- public IIntervalMergeJoinChecker createMergeJoinChecker(int[] keys0, int[] keys1, int partition) {
+ public IIntervalMergeJoinChecker createMergeJoinChecker(int[] keys0, int[] keys1, int partition, IRangeMap rangeMap) {
return new EndedByIntervalMergeJoinChecker(keys0, keys1);
}
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/2061a388/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/EndsIntervalMergeJoinCheckerFactory.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/EndsIntervalMergeJoinCheckerFactory.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/EndsIntervalMergeJoinCheckerFactory.java
index ed5db30..e5b7be0 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/EndsIntervalMergeJoinCheckerFactory.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/EndsIntervalMergeJoinCheckerFactory.java
@@ -18,13 +18,14 @@
*/
package org.apache.asterix.runtime.operators.joins;
-import org.apache.hyracks.dataflow.common.data.partition.range.IRangePartitionType.RangePartitioningType;
+import org.apache.hyracks.api.dataflow.value.IRangeMap;
+import org.apache.hyracks.api.dataflow.value.IRangePartitionType.RangePartitioningType;
public class EndsIntervalMergeJoinCheckerFactory extends AbstractIntervalMergeJoinCheckerFactory {
private static final long serialVersionUID = 1L;
@Override
- public IIntervalMergeJoinChecker createMergeJoinChecker(int[] keys0, int[] keys1, int partition) {
+ public IIntervalMergeJoinChecker createMergeJoinChecker(int[] keys0, int[] keys1, int partition, IRangeMap rangeMap) {
return new EndsIntervalMergeJoinChecker(keys0, keys1);
}
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/2061a388/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/IIntervalMergeJoinCheckerFactory.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/IIntervalMergeJoinCheckerFactory.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/IIntervalMergeJoinCheckerFactory.java
index 3251571..e4ceeb1 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/IIntervalMergeJoinCheckerFactory.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/IIntervalMergeJoinCheckerFactory.java
@@ -20,13 +20,14 @@ package org.apache.asterix.runtime.operators.joins;
import java.io.Serializable;
+import org.apache.hyracks.api.dataflow.value.IRangeMap;
import org.apache.hyracks.api.exceptions.HyracksDataException;
import org.apache.hyracks.dataflow.std.join.IMergeJoinCheckerFactory;
public interface IIntervalMergeJoinCheckerFactory extends IMergeJoinCheckerFactory, Serializable {
@Override
- public IIntervalMergeJoinChecker createMergeJoinChecker(int[] keys0, int[] keys1, int partition)
+ public IIntervalMergeJoinChecker createMergeJoinChecker(int[] keys0, int[] keys1, int partition, IRangeMap rangeMap)
throws HyracksDataException;
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/2061a388/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/MeetsIntervalMergeJoinCheckerFactory.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/MeetsIntervalMergeJoinCheckerFactory.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/MeetsIntervalMergeJoinCheckerFactory.java
index 88bb39e..038f9ef 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/MeetsIntervalMergeJoinCheckerFactory.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/MeetsIntervalMergeJoinCheckerFactory.java
@@ -18,13 +18,14 @@
*/
package org.apache.asterix.runtime.operators.joins;
-import org.apache.hyracks.dataflow.common.data.partition.range.IRangePartitionType.RangePartitioningType;
+import org.apache.hyracks.api.dataflow.value.IRangeMap;
+import org.apache.hyracks.api.dataflow.value.IRangePartitionType.RangePartitioningType;
public class MeetsIntervalMergeJoinCheckerFactory extends AbstractIntervalMergeJoinCheckerFactory {
private static final long serialVersionUID = 1L;
@Override
- public IIntervalMergeJoinChecker createMergeJoinChecker(int[] keys0, int[] keys1, int partition) {
+ public IIntervalMergeJoinChecker createMergeJoinChecker(int[] keys0, int[] keys1, int partition, IRangeMap rangeMap) {
return new MeetsIntervalMergeJoinChecker(keys0, keys1);
}
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/2061a388/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/MetByIntervalMergeJoinCheckerFactory.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/MetByIntervalMergeJoinCheckerFactory.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/MetByIntervalMergeJoinCheckerFactory.java
index 122b62d..6c3fe32 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/MetByIntervalMergeJoinCheckerFactory.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/MetByIntervalMergeJoinCheckerFactory.java
@@ -18,13 +18,14 @@
*/
package org.apache.asterix.runtime.operators.joins;
-import org.apache.hyracks.dataflow.common.data.partition.range.IRangePartitionType.RangePartitioningType;
+import org.apache.hyracks.api.dataflow.value.IRangeMap;
+import org.apache.hyracks.api.dataflow.value.IRangePartitionType.RangePartitioningType;
public class MetByIntervalMergeJoinCheckerFactory extends AbstractIntervalInverseMergeJoinCheckerFactory {
private static final long serialVersionUID = 1L;
@Override
- public IIntervalMergeJoinChecker createMergeJoinChecker(int[] keys0, int[] keys1, int partition) {
+ public IIntervalMergeJoinChecker createMergeJoinChecker(int[] keys0, int[] keys1, int partition, IRangeMap rangeMap) {
return new MetByIntervalMergeJoinChecker(keys0, keys1);
}
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/2061a388/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/OverlappedByIntervalMergeJoinCheckerFactory.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/OverlappedByIntervalMergeJoinCheckerFactory.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/OverlappedByIntervalMergeJoinCheckerFactory.java
index a58d8f3..8031181 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/OverlappedByIntervalMergeJoinCheckerFactory.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/OverlappedByIntervalMergeJoinCheckerFactory.java
@@ -18,11 +18,13 @@
*/
package org.apache.asterix.runtime.operators.joins;
+import org.apache.hyracks.api.dataflow.value.IRangeMap;
+
public class OverlappedByIntervalMergeJoinCheckerFactory extends AbstractIntervalInverseMergeJoinCheckerFactory {
private static final long serialVersionUID = 1L;
@Override
- public IIntervalMergeJoinChecker createMergeJoinChecker(int[] keys0, int[] keys1, int partition) {
+ public IIntervalMergeJoinChecker createMergeJoinChecker(int[] keys0, int[] keys1, int partition, IRangeMap rangeMap) {
return new OverlappedByIntervalMergeJoinChecker(keys0, keys1);
}
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/2061a388/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/OverlappingIntervalMergeJoinCheckerFactory.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/OverlappingIntervalMergeJoinCheckerFactory.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/OverlappingIntervalMergeJoinCheckerFactory.java
index 9adcc90..195a85f 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/OverlappingIntervalMergeJoinCheckerFactory.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/OverlappingIntervalMergeJoinCheckerFactory.java
@@ -19,21 +19,16 @@
package org.apache.asterix.runtime.operators.joins;
import org.apache.asterix.om.types.ATypeTag;
+import org.apache.hyracks.api.dataflow.value.IRangeMap;
+import org.apache.hyracks.api.dataflow.value.IRangePartitionType.RangePartitioningType;
import org.apache.hyracks.api.exceptions.HyracksDataException;
import org.apache.hyracks.data.std.primitive.LongPointable;
-import org.apache.hyracks.dataflow.common.data.partition.range.IRangeMap;
-import org.apache.hyracks.dataflow.common.data.partition.range.IRangePartitionType.RangePartitioningType;
public class OverlappingIntervalMergeJoinCheckerFactory extends AbstractIntervalMergeJoinCheckerFactory {
private static final long serialVersionUID = 1L;
- private IRangeMap rangeMap;
-
- public OverlappingIntervalMergeJoinCheckerFactory(IRangeMap rangeMap) {
- this.rangeMap = rangeMap;
- }
@Override
- public IIntervalMergeJoinChecker createMergeJoinChecker(int[] keys0, int[] keys1, int partition)
+ public IIntervalMergeJoinChecker createMergeJoinChecker(int[] keys0, int[] keys1, int partition, IRangeMap rangeMap)
throws HyracksDataException {
int fieldIndex = 0;
if (ATypeTag.INT64.serialize() != rangeMap.getTag(0, 0)) {
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/2061a388/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/OverlapsIntervalMergeJoinCheckerFactory.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/OverlapsIntervalMergeJoinCheckerFactory.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/OverlapsIntervalMergeJoinCheckerFactory.java
index a290033..e3ecf2e 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/OverlapsIntervalMergeJoinCheckerFactory.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/OverlapsIntervalMergeJoinCheckerFactory.java
@@ -18,11 +18,13 @@
*/
package org.apache.asterix.runtime.operators.joins;
+import org.apache.hyracks.api.dataflow.value.IRangeMap;
+
public class OverlapsIntervalMergeJoinCheckerFactory extends AbstractIntervalMergeJoinCheckerFactory {
private static final long serialVersionUID = 1L;
@Override
- public IIntervalMergeJoinChecker createMergeJoinChecker(int[] keys0, int[] keys1, int partition) {
+ public IIntervalMergeJoinChecker createMergeJoinChecker(int[] keys0, int[] keys1, int partition, IRangeMap rangeMap) {
return new OverlapsIntervalMergeJoinChecker(keys0, keys1);
}
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/2061a388/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/StartedByIntervalMergeJoinCheckerFactory.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/StartedByIntervalMergeJoinCheckerFactory.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/StartedByIntervalMergeJoinCheckerFactory.java
index 63b717f..431aa8e 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/StartedByIntervalMergeJoinCheckerFactory.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/StartedByIntervalMergeJoinCheckerFactory.java
@@ -18,13 +18,14 @@
*/
package org.apache.asterix.runtime.operators.joins;
-import org.apache.hyracks.dataflow.common.data.partition.range.IRangePartitionType.RangePartitioningType;
+import org.apache.hyracks.api.dataflow.value.IRangeMap;
+import org.apache.hyracks.api.dataflow.value.IRangePartitionType.RangePartitioningType;
public class StartedByIntervalMergeJoinCheckerFactory extends AbstractIntervalInverseMergeJoinCheckerFactory {
private static final long serialVersionUID = 1L;
@Override
- public IIntervalMergeJoinChecker createMergeJoinChecker(int[] keys0, int[] keys1, int partition) {
+ public IIntervalMergeJoinChecker createMergeJoinChecker(int[] keys0, int[] keys1, int partition, IRangeMap rangeMap) {
return new StartedByIntervalMergeJoinChecker(keys0, keys1);
}
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/2061a388/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/StartsIntervalMergeJoinCheckerFactory.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/StartsIntervalMergeJoinCheckerFactory.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/StartsIntervalMergeJoinCheckerFactory.java
index bceaa32..a05615c 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/StartsIntervalMergeJoinCheckerFactory.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/StartsIntervalMergeJoinCheckerFactory.java
@@ -18,13 +18,14 @@
*/
package org.apache.asterix.runtime.operators.joins;
-import org.apache.hyracks.dataflow.common.data.partition.range.IRangePartitionType.RangePartitioningType;
+import org.apache.hyracks.api.dataflow.value.IRangeMap;
+import org.apache.hyracks.api.dataflow.value.IRangePartitionType.RangePartitioningType;
public class StartsIntervalMergeJoinCheckerFactory extends AbstractIntervalMergeJoinCheckerFactory {
private static final long serialVersionUID = 1L;
@Override
- public IIntervalMergeJoinChecker createMergeJoinChecker(int[] keys0, int[] keys1, int partition) {
+ public IIntervalMergeJoinChecker createMergeJoinChecker(int[] keys0, int[] keys1, int partition, IRangeMap rangeMap) {
return new StartsIntervalMergeJoinChecker(keys0, keys1);
}