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 <prest...@apache.org>
Authored: Wed Aug 10 17:56:43 2016 -0700
Committer: Preston Carman <prest...@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);
     }
 

Reply via email to