asterixdb-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From ima...@apache.org
Subject [58/58] [abbrv] incubator-asterixdb git commit: Temporal update based on a merge from an old branch.
Date Fri, 24 Apr 2015 18:43:24 GMT
Temporal update based on a merge from an old branch.

Includes the following new functions: overlap-bins, get-overlapping-interval, get-interval-start-date, get-interval-start-datetime, get-interval-start-time, get-interval-end-date, get-interval-end-datetime, get-interval-end-time

Change-Id: Ie15ed39ae7de83ce71c63c4e7490f2ebf5911540
Reviewed-on: http://fulliautomatix.ics.uci.edu:8443/244
Tested-by: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
Reviewed-by: Ildar Absalyamov <ildar.absalyamov@gmail.com>


Project: http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/commit/4a9a7d99
Tree: http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/tree/4a9a7d99
Diff: http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/diff/4a9a7d99

Branch: refs/heads/master
Commit: 4a9a7d9981cea8a109d33d9d6f89645ceefd2041
Parents: 833774e
Author: Eldon Carman <ecarm002@ucr.edu>
Authored: Thu Apr 9 21:30:23 2015 -0700
Committer: Ian Maxon <imaxon@uci.edu>
Committed: Fri Apr 10 13:31:35 2015 -0700

----------------------------------------------------------------------
 .../asterix/optimizer/base/RuleCollections.java |   7 +
 .../TranslateIntervalExpressionRule.java        | 150 ++++++++
 asterix-app/data/temporal/simpletemp_30.json    |   4 +-
 .../ics/asterix/api/common/APIFramework.java    |   2 +
 .../string/replace22/replace22.3.query.aql      |  16 +-
 .../temporal/accessors/accessors.3.query.aql    |  53 ++-
 .../queries/temporal/agg_max/agg_max.1.ddl.aql  |  15 +
 .../temporal/agg_max/agg_max.2.update.aql       |   5 +
 .../temporal/agg_max/agg_max.3.query.aql        |   8 +
 .../queries/temporal/agg_min/agg_min.1.ddl.aql  |  15 +
 .../temporal/agg_min/agg_min.2.update.aql       |   5 +
 .../temporal/agg_min/agg_min.3.query.aql        |   8 +
 .../duration_functions.1.ddl.aql                |   8 +
 .../duration_functions.2.update.aql             |   0
 .../duration_functions.3.query.aql              |  16 +
 .../get_overlapping_interval.1.ddl.aql          |   0
 .../get_overlapping_interval.2.update.aql       |   0
 .../get_overlapping_interval.3.query.aql        |  11 +
 .../overlap_bins/overlap_bins.1.ddl.aql         |   4 +
 .../overlap_bins/overlap_bins.2.update.aql      |   4 +
 .../overlap_bins/overlap_bins.3.query.aql       |  11 +
 .../overlap_bins_gby_0.1.ddl.aql                |  17 +
 .../overlap_bins_gby_0.2.update.aql             |  17 +
 .../overlap_bins_gby_0.3.query.aql              |  15 +
 .../overlap_bins_gby_1.1.ddl.aql                |  17 +
 .../overlap_bins_gby_1.2.update.aql             |  17 +
 .../overlap_bins_gby_1.3.query.aql              |  22 ++
 .../overlap_bins_gby_3.1.ddl.aql                |  18 +
 .../overlap_bins_gby_3.2.update.aql             |  12 +
 .../overlap_bins_gby_3.3.query.aql              |  13 +
 .../results/string/replace22/replace22.1.adm    |   2 +-
 .../results/temporal/accessors/accessors.1.adm  |   3 +-
 .../results/temporal/agg_max/agg_max.1.adm      |   6 +
 .../results/temporal/agg_min/agg_min.1.adm      |   6 +
 .../duration_functions/duration_functions.1.adm |   2 +
 .../get_overlapping_interval.1.adm              |   2 +
 .../insert_from_ext_ds_2.1.adm                  |   6 +-
 .../temporal/overlap_bins/overlap_bins.1.adm    |   2 +
 .../overlap_bins_gby_0/overlap_bins_gby_0.1.adm |  24 ++
 .../overlap_bins_gby_1/overlap_bins_gby_1.1.adm |  12 +
 .../overlap_bins_gby_3/overlap_bins_gby_3.1.adm |  43 +++
 .../src/test/resources/runtimets/testsuite.xml  |  36 +-
 asterix-doc/src/site/markdown/aql/allens.md     | 136 ++++---
 asterix-doc/src/site/markdown/aql/functions.md  | 368 +++++++++++++------
 .../asterix/external/library/java/JObjects.java |   9 +-
 .../serde/AIntervalSerializerDeserializer.java  |  20 +-
 .../AqlSerializerDeserializerProvider.java      |   7 +-
 .../ics/asterix/om/base/AMutableInterval.java   |   7 +-
 .../temporal/DurationArithmeticOperations.java  |  10 +-
 .../om/functions/AsterixBuiltinFunctions.java   |  33 +-
 .../base/TypeComputerUtilities.java             |   2 +-
 .../impl/AIntervalTypeComputer.java             |  41 +++
 .../GetOverlappingInvervalTypeComputer.java     |  45 +++
 .../impl/NonTaggedMinMaxAggTypeComputer.java    |  15 +
 .../impl/OptionalABinaryTypeComputer.java       |   2 +-
 .../impl/OptionalABooleanTypeComputer.java      |   2 +-
 .../impl/OptionalACircleTypeComputer.java       |   2 +-
 .../impl/OptionalADateTimeTypeComputer.java     |   2 +-
 .../impl/OptionalADateTypeComputer.java         |   2 +-
 .../OptionalADayTimeDurationTypeComputer.java   |   2 +-
 .../impl/OptionalADoubleTypeComputer.java       |   2 +-
 .../impl/OptionalADurationTypeComputer.java     |   2 +-
 .../impl/OptionalAFloatTypeComputer.java        |   2 +-
 .../impl/OptionalAInt16TypeComputer.java        |   2 +-
 .../impl/OptionalAInt32TypeComputer.java        |   2 +-
 .../impl/OptionalAInt64TypeComputer.java        |   2 +-
 .../impl/OptionalAInt8TypeComputer.java         |   2 +-
 .../impl/OptionalAIntervalTypeComputer.java     |   2 +-
 .../impl/OptionalALineTypeComputer.java         |   2 +-
 .../impl/OptionalAPoint3DTypeComputer.java      |   2 +-
 .../impl/OptionalAPointTypeComputer.java        |   2 +-
 .../impl/OptionalAPolygonTypeComputer.java      |   2 +-
 .../impl/OptionalARectangleTypeComputer.java    |   2 +-
 .../impl/OptionalAStringTypeComputer.java       |   2 +-
 .../impl/OptionalATimeTypeComputer.java         |   2 +-
 .../OptionalAYearMonthDurationTypeComputer.java |   2 +-
 .../OrderedListOfAIntervalTypeComputer.java     |  39 ++
 .../accessors/CircleCenterAccessor.java         |   2 +-
 .../accessors/CircleRadiusAccessor.java         |   3 +-
 .../accessors/LineRectanglePolygonAccessor.java |   3 +-
 .../accessors/PointXCoordinateAccessor.java     |   3 +-
 .../accessors/PointYCoordinateAccessor.java     |   3 +-
 .../accessors/TemporalDayAccessor.java          |  23 +-
 .../accessors/TemporalHourAccessor.java         |  23 +-
 .../accessors/TemporalIntervalEndAccessor.java  |  20 +-
 .../TemporalIntervalEndDateAccessor.java        | 128 +++++++
 .../TemporalIntervalEndDatetimeAccessor.java    | 127 +++++++
 .../TemporalIntervalEndTimeAccessor.java        | 127 +++++++
 .../TemporalIntervalStartAccessor.java          |  20 +-
 .../TemporalIntervalStartDateAccessor.java      | 127 +++++++
 .../TemporalIntervalStartDatetimeAccessor.java  | 127 +++++++
 .../TemporalIntervalStartTimeAccessor.java      | 126 +++++++
 .../accessors/TemporalMillisecondAccessor.java  |  24 +-
 .../accessors/TemporalMinuteAccessor.java       |  24 +-
 .../accessors/TemporalMonthAccessor.java        |  24 +-
 .../accessors/TemporalSecondAccessor.java       |  24 +-
 .../accessors/TemporalYearAccessor.java         |  24 +-
 ...ervalStartFromDateConstructorDescriptor.java |  12 +
 ...lStartFromDateTimeConstructorDescriptor.java |  14 +
 ...ervalStartFromTimeConstructorDescriptor.java |  10 +-
 .../functions/AbstractQuadStringStringEval.java |  27 +-
 .../AbstractTripleStringStringEval.java         |  20 +-
 .../functions/StringReplaceDescriptor.java      |   3 +-
 .../DurationFromIntervalDescriptor.java         | 126 +++++++
 .../GetOverlappingIntervalDescriptor.java       | 143 +++++++
 .../functions/temporal/IntervalLogic.java       |   2 +-
 .../temporal/OverlapBinsDescriptor.java         | 338 +++++++++++++++++
 .../functions/temporal/OverlapDescriptor.java   |   2 +-
 .../runtime/formats/NonTaggedDataFormat.java    |  23 +-
 109 files changed, 2778 insertions(+), 334 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/4a9a7d99/asterix-algebra/src/main/java/edu/uci/ics/asterix/optimizer/base/RuleCollections.java
----------------------------------------------------------------------
diff --git a/asterix-algebra/src/main/java/edu/uci/ics/asterix/optimizer/base/RuleCollections.java b/asterix-algebra/src/main/java/edu/uci/ics/asterix/optimizer/base/RuleCollections.java
index ebc98fe..7e58a9c 100644
--- a/asterix-algebra/src/main/java/edu/uci/ics/asterix/optimizer/base/RuleCollections.java
+++ b/asterix-algebra/src/main/java/edu/uci/ics/asterix/optimizer/base/RuleCollections.java
@@ -65,6 +65,7 @@ import edu.uci.ics.asterix.optimizer.rules.UnnestToDataScanRule;
 import edu.uci.ics.asterix.optimizer.rules.am.IntroduceJoinAccessMethodRule;
 import edu.uci.ics.asterix.optimizer.rules.am.IntroduceLSMComponentFilterRule;
 import edu.uci.ics.asterix.optimizer.rules.am.IntroduceSelectAccessMethodRule;
+import edu.uci.ics.asterix.optimizer.rules.temporal.TranslateIntervalExpressionRule;
 import edu.uci.ics.hyracks.algebricks.core.rewriter.base.HeuristicOptimizer;
 import edu.uci.ics.hyracks.algebricks.core.rewriter.base.IAlgebraicRewriteRule;
 import edu.uci.ics.hyracks.algebricks.rewriter.rules.BreakSelectIntoConjunctsRule;
@@ -117,6 +118,12 @@ import edu.uci.ics.hyracks.algebricks.rewriter.rules.SubplanOutOfGroupRule;
 
 public final class RuleCollections {
 
+    public final static List<IAlgebraicRewriteRule> buildInitialTranslationRuleCollection() {
+        List<IAlgebraicRewriteRule> typeInfer = new LinkedList<IAlgebraicRewriteRule>();
+        typeInfer.add(new TranslateIntervalExpressionRule());
+        return typeInfer;
+    }
+
     public final static List<IAlgebraicRewriteRule> buildTypeInferenceRuleCollection() {
         List<IAlgebraicRewriteRule> typeInfer = new LinkedList<IAlgebraicRewriteRule>();
         typeInfer.add(new InlineUnnestFunctionRule());

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/4a9a7d99/asterix-algebra/src/main/java/edu/uci/ics/asterix/optimizer/rules/temporal/TranslateIntervalExpressionRule.java
----------------------------------------------------------------------
diff --git a/asterix-algebra/src/main/java/edu/uci/ics/asterix/optimizer/rules/temporal/TranslateIntervalExpressionRule.java b/asterix-algebra/src/main/java/edu/uci/ics/asterix/optimizer/rules/temporal/TranslateIntervalExpressionRule.java
new file mode 100644
index 0000000..9a01920
--- /dev/null
+++ b/asterix-algebra/src/main/java/edu/uci/ics/asterix/optimizer/rules/temporal/TranslateIntervalExpressionRule.java
@@ -0,0 +1,150 @@
+/*
+ * Copyright 2009-2013 by The Regents of the University of California
+ * Licensed 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 from
+ * 
+ *     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 edu.uci.ics.asterix.optimizer.rules.temporal;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.commons.lang3.mutable.Mutable;
+import org.apache.commons.lang3.mutable.MutableObject;
+
+import edu.uci.ics.asterix.aql.util.FunctionUtils;
+import edu.uci.ics.asterix.om.functions.AsterixBuiltinFunctions;
+import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
+import edu.uci.ics.hyracks.algebricks.core.algebra.base.ILogicalExpression;
+import edu.uci.ics.hyracks.algebricks.core.algebra.base.ILogicalOperator;
+import edu.uci.ics.hyracks.algebricks.core.algebra.base.IOptimizationContext;
+import edu.uci.ics.hyracks.algebricks.core.algebra.base.LogicalExpressionTag;
+import edu.uci.ics.hyracks.algebricks.core.algebra.base.LogicalOperatorTag;
+import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.AbstractFunctionCallExpression;
+import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.ScalarFunctionCallExpression;
+import edu.uci.ics.hyracks.algebricks.core.algebra.functions.AlgebricksBuiltinFunctions;
+import edu.uci.ics.hyracks.algebricks.core.algebra.functions.FunctionIdentifier;
+import edu.uci.ics.hyracks.algebricks.core.algebra.operators.logical.AbstractLogicalOperator;
+import edu.uci.ics.hyracks.algebricks.core.algebra.operators.logical.SelectOperator;
+import edu.uci.ics.hyracks.algebricks.core.rewriter.base.IAlgebraicRewriteRule;
+
+/**
+ * Finds interval conditional expressions and convert them to interval start and end conditional statements.
+ * The translation exposes the condition to the Algebricks optimizer.
+ */
+public class TranslateIntervalExpressionRule implements IAlgebraicRewriteRule {
+
+    @Override
+    public boolean rewritePre(Mutable<ILogicalOperator> opRef, IOptimizationContext context) throws AlgebricksException {
+        return false;
+    }
+
+    @Override
+    public boolean rewritePost(Mutable<ILogicalOperator> opRef, IOptimizationContext context)
+            throws AlgebricksException {
+        AbstractLogicalOperator op = (AbstractLogicalOperator) opRef.getValue();
+        if (op.getOperatorTag() != LogicalOperatorTag.SELECT) {
+            return false;
+        }
+        SelectOperator selectOp = (SelectOperator) op;
+
+        Mutable<ILogicalExpression> exprRef = selectOp.getCondition();
+        boolean modified = false;
+        ILogicalExpression expr = exprRef.getValue();
+        if (expr.getExpressionTag() != LogicalExpressionTag.FUNCTION_CALL) {
+            return false;
+        }
+        AbstractFunctionCallExpression funcExpr = (AbstractFunctionCallExpression) expr;
+        if (funcExpr.getArguments().size() != 2) {
+            return false;
+        }
+        ILogicalExpression interval1 = funcExpr.getArguments().get(0).getValue();
+        ILogicalExpression interval2 = funcExpr.getArguments().get(1).getValue();
+        if (funcExpr.getFunctionIdentifier().equals(AsterixBuiltinFunctions.INTERVAL_MEETS)) {
+            exprRef.setValue(getEqualExpr(getIntervalEndExpr(interval1), getIntervalStartExpr(interval2)));
+            modified = true;
+        } else if (funcExpr.getFunctionIdentifier().equals(AsterixBuiltinFunctions.INTERVAL_MET_BY)) {
+            exprRef.setValue(getEqualExpr(getIntervalStartExpr(interval1), getIntervalEndExpr(interval2)));
+            modified = true;
+        } else if (funcExpr.getFunctionIdentifier().equals(AsterixBuiltinFunctions.INTERVAL_STARTS)) {
+            ILogicalExpression startExpr = getEqualExpr(getIntervalStartExpr(interval1),
+                    getIntervalStartExpr(interval2));
+            ILogicalExpression endExpr = getLessThanOrEqualExpr(getIntervalEndExpr(interval1),
+                    getIntervalEndExpr(interval2));
+            exprRef.setValue(getAndExpr(startExpr, endExpr));
+            modified = true;
+        } else if (funcExpr.getFunctionIdentifier().equals(AsterixBuiltinFunctions.INTERVAL_STARTED_BY)) {
+            ILogicalExpression startExpr = getEqualExpr(getIntervalStartExpr(interval1),
+                    getIntervalStartExpr(interval2));
+            ILogicalExpression endExpr = getLessThanOrEqualExpr(getIntervalEndExpr(interval2),
+                    getIntervalEndExpr(interval1));
+            exprRef.setValue(getAndExpr(startExpr, endExpr));
+            modified = true;
+        } else if (funcExpr.getFunctionIdentifier().equals(AsterixBuiltinFunctions.INTERVAL_ENDS)) {
+            ILogicalExpression endExpr = getEqualExpr(getIntervalEndExpr(interval1), getIntervalEndExpr(interval2));
+            ILogicalExpression startExpr = getLessThanOrEqualExpr(getIntervalStartExpr(interval1),
+                    getIntervalStartExpr(interval2));
+            exprRef.setValue(getAndExpr(startExpr, endExpr));
+            modified = true;
+        } else if (funcExpr.getFunctionIdentifier().equals(AsterixBuiltinFunctions.INTERVAL_ENDED_BY)) {
+            ILogicalExpression endExpr = getEqualExpr(getIntervalEndExpr(interval1), getIntervalEndExpr(interval2));
+            ILogicalExpression startExpr = getLessThanOrEqualExpr(getIntervalStartExpr(interval2),
+                    getIntervalStartExpr(interval1));
+            exprRef.setValue(getAndExpr(startExpr, endExpr));
+            modified = true;
+        } else if (funcExpr.getFunctionInfo().equals(AsterixBuiltinFunctions.INTERVAL_BEFORE)) {
+            // Requires new strategy, no translation for this interval and the remaining listed.
+        } else if (funcExpr.getFunctionIdentifier().equals(AsterixBuiltinFunctions.INTERVAL_AFTER)) {
+        } else if (funcExpr.getFunctionIdentifier().equals(AsterixBuiltinFunctions.INTERVAL_OVERLAPS)) {
+        } else if (funcExpr.getFunctionIdentifier().equals(AsterixBuiltinFunctions.INTERVAL_OVERLAPPED_BY)) {
+        } else if (funcExpr.getFunctionIdentifier().equals(AsterixBuiltinFunctions.INTERVAL_OVERLAPPING)) {
+        } else if (funcExpr.getFunctionIdentifier().equals(AsterixBuiltinFunctions.INTERVAL_COVERS)) {
+        } else if (funcExpr.getFunctionIdentifier().equals(AsterixBuiltinFunctions.INTERVAL_COVERED_BY)) {
+        }
+
+        return modified;
+    }
+
+    private ILogicalExpression getAndExpr(ILogicalExpression arg1, ILogicalExpression arg2) {
+        return getScalarExpr(AlgebricksBuiltinFunctions.AND, arg1, arg2);
+    }
+
+    private ILogicalExpression getEqualExpr(ILogicalExpression arg1, ILogicalExpression arg2) {
+        return getScalarExpr(AlgebricksBuiltinFunctions.EQ, arg1, arg2);
+    }
+
+    private ILogicalExpression getLessThanOrEqualExpr(ILogicalExpression arg1, ILogicalExpression arg2) {
+        return getScalarExpr(AlgebricksBuiltinFunctions.LE, arg1, arg2);
+    }
+
+    private ILogicalExpression getIntervalStartExpr(ILogicalExpression interval) {
+        return getScalarExpr(AsterixBuiltinFunctions.ACCESSOR_TEMPORAL_INTERVAL_START, interval);
+    }
+
+    private ILogicalExpression getIntervalEndExpr(ILogicalExpression interval) {
+        return getScalarExpr(AsterixBuiltinFunctions.ACCESSOR_TEMPORAL_INTERVAL_END, interval);
+    }
+
+    private ILogicalExpression getScalarExpr(FunctionIdentifier func, ILogicalExpression interval) {
+        List<Mutable<ILogicalExpression>> intervalArg = new ArrayList<Mutable<ILogicalExpression>>();
+        intervalArg.add(new MutableObject<ILogicalExpression>(interval));
+        return new ScalarFunctionCallExpression(FunctionUtils.getFunctionInfo(func), intervalArg);
+    }
+
+    private ILogicalExpression getScalarExpr(FunctionIdentifier func, ILogicalExpression interval1,
+            ILogicalExpression interval2) {
+        List<Mutable<ILogicalExpression>> intervalArg = new ArrayList<Mutable<ILogicalExpression>>();
+        intervalArg.add(new MutableObject<ILogicalExpression>(interval1));
+        intervalArg.add(new MutableObject<ILogicalExpression>(interval2));
+        return new ScalarFunctionCallExpression(FunctionUtils.getFunctionInfo(func), intervalArg);
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/4a9a7d99/asterix-app/data/temporal/simpletemp_30.json
----------------------------------------------------------------------
diff --git a/asterix-app/data/temporal/simpletemp_30.json b/asterix-app/data/temporal/simpletemp_30.json
index f0a4582..dcc9d8c 100644
--- a/asterix-app/data/temporal/simpletemp_30.json
+++ b/asterix-app/data/temporal/simpletemp_30.json
@@ -1,3 +1,3 @@
 { "date": date("4619-11-23"), "time": time("14:29:36.786Z"), "datetime": datetime("2749-01-27T17:27:30.020Z"), "duration": duration("-P474133Y7M854630DT4H40M6.45S"), "year-month-duration": year-month-duration("P193989Y3M"), "day-time-duration": day-time-duration("P4477686DT4H49M31.87S"), "date-interval": interval-date("-9537-08-04, 9656-06-03"), "time-interval": interval-time("12:04:45.689Z, 12:41:59.002Z"), "datetime-interval": interval-datetime("-2640-10-11T17:32:15.675Z, 4104-02-01T05:59:11.902Z") }
-{ "date": date("-9971-09-24"), "time": time("11:38:17.154Z"), "datetime": datetime("1259-11-13T09:49:11.852Z"), "duration": duration("P473653Y9M4566143DT10H20M53.61S"), "year-month-duration": year-month-duration("P148233Y10M"), "day-time-duration": day-time-duration("-P7236357DT2H56M56.164S"), "date-interval": interval-date("-0255-09-06, 4925-05-03"), "time-interval": interval-time("23:10:45.169Z, 01:37:48.736Z"), "datetime-interval": interval-datetime("0534-12-08T08:20:31.487Z, 6778-02-16T22:40:21.653Z") }
-{ "date": date("7986-11-25"), "time": time("12:49:39.736Z"), "datetime": datetime("-8337-01-30T15:23:07.598Z"), "duration": duration("-P184484Y7M2241423DT10H42M49.500S"), "year-month-duration": year-month-duration("-P546031Y3M"), "day-time-duration": day-time-duration("P2623386DT10H32M31.983S"), "date-interval": interval-date("-4514-05-24, 3337-08-26"), "time-interval": interval-time("04:16:42.321Z, 02:22:56.816Z"), "datetime-interval": interval-datetime("2129-12-12T13:18:35.758Z, 8647-07-01T13:10:19.691Z") }
+{ "date": date("-9971-09-24"), "time": time("11:38:17.154Z"), "datetime": datetime("1259-11-13T09:49:11.852Z"), "duration": duration("P473653Y9M4566143DT10H20M53.61S"), "year-month-duration": year-month-duration("P148233Y10M"), "day-time-duration": day-time-duration("-P7236357DT2H56M56.164S"), "date-interval": interval-date("-0255-09-06, 4925-05-03"), "time-interval": interval-time("12:10:45.169Z, 15:37:48.736Z"), "datetime-interval": interval-datetime("0534-12-08T08:20:31.487Z, 6778-02-16T22:40:21.653Z") }
+{ "date": date("7986-11-25"), "time": time("12:49:39.736Z"), "datetime": datetime("-8337-01-30T15:23:07.598Z"), "duration": duration("-P184484Y7M2241423DT10H42M49.500S"), "year-month-duration": year-month-duration("-P546031Y3M"), "day-time-duration": day-time-duration("P2623386DT10H32M31.983S"), "date-interval": interval-date("-4514-05-24, 3337-08-26"), "time-interval": interval-time("04:16:42.321Z, 12:22:56.816Z"), "datetime-interval": interval-datetime("2129-12-12T13:18:35.758Z, 8647-07-01T13:10:19.691Z") }

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/4a9a7d99/asterix-app/src/main/java/edu/uci/ics/asterix/api/common/APIFramework.java
----------------------------------------------------------------------
diff --git a/asterix-app/src/main/java/edu/uci/ics/asterix/api/common/APIFramework.java b/asterix-app/src/main/java/edu/uci/ics/asterix/api/common/APIFramework.java
index 84a01da..51fef41 100644
--- a/asterix-app/src/main/java/edu/uci/ics/asterix/api/common/APIFramework.java
+++ b/asterix-app/src/main/java/edu/uci/ics/asterix/api/common/APIFramework.java
@@ -88,6 +88,8 @@ public class APIFramework {
         SequentialFixpointRuleController seqCtrlFullDfs = new SequentialFixpointRuleController(true);
         SequentialOnceRuleController seqOnceCtrl = new SequentialOnceRuleController(true);
         defaultLogicalRewrites.add(new Pair<AbstractRuleController, List<IAlgebraicRewriteRule>>(seqOnceCtrl,
+                RuleCollections.buildInitialTranslationRuleCollection()));
+        defaultLogicalRewrites.add(new Pair<AbstractRuleController, List<IAlgebraicRewriteRule>>(seqOnceCtrl,
                 RuleCollections.buildTypeInferenceRuleCollection()));
         defaultLogicalRewrites.add(new Pair<AbstractRuleController, List<IAlgebraicRewriteRule>>(seqOnceCtrl,
                 RuleCollections.buildAutogenerateIDRuleCollection()));

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/4a9a7d99/asterix-app/src/test/resources/runtimets/queries/string/replace22/replace22.3.query.aql
----------------------------------------------------------------------
diff --git a/asterix-app/src/test/resources/runtimets/queries/string/replace22/replace22.3.query.aql b/asterix-app/src/test/resources/runtimets/queries/string/replace22/replace22.3.query.aql
index df67481..fb000b4 100644
--- a/asterix-app/src/test/resources/runtimets/queries/string/replace22/replace22.3.query.aql
+++ b/asterix-app/src/test/resources/runtimets/queries/string/replace22/replace22.3.query.aql
@@ -1,11 +1,11 @@
 use dataverse test;
 
-let $c1 := replace("abracadabra","", null , null)
-let $c2 := replace("abracadabra","bra", "XXX" ,"")
-let $c3 := replace(null,"hello world", "XxXx" , "x")
-let $c4 := replace("abracadabra","bra", "XXX" ,null)
-let $c5 := replace("abracadabra",null, "XXX" ,null)
-let $c6 := replace("abracadabra","Bra", null ,"i")
-let $c7 := replace("abracadabra","Bra", "" ,"i")
-let $c8 := replace("abracadabra","", "XXX" ,"")
+let $c1 := replace("abracadabra", "", null, null)
+let $c2 := replace("abracadabra", "bra", "XXX", "")
+let $c3 := replace(null,"hello world", "XxXx", "x")
+let $c4 := replace("abracadabra", "bra", "XXX", null)
+let $c5 := replace("abracadabra", null, "XXX", null)
+let $c6 := replace("abracadabra", "Bra", null, "i")
+let $c7 := replace("abracadabra", "Bra", "", "i")
+let $c8 := replace("abracadabra", "", "XXX", "")
 return {"result1": $c1,"result2": $c2,"result3": $c3,"result4": $c4,"result5": $c5,"result6": $c6,"result7": $c7,"result8": $c8}

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/4a9a7d99/asterix-app/src/test/resources/runtimets/queries/temporal/accessors/accessors.3.query.aql
----------------------------------------------------------------------
diff --git a/asterix-app/src/test/resources/runtimets/queries/temporal/accessors/accessors.3.query.aql b/asterix-app/src/test/resources/runtimets/queries/temporal/accessors/accessors.3.query.aql
index 42cc4a6..da46b09 100644
--- a/asterix-app/src/test/resources/runtimets/queries/temporal/accessors/accessors.3.query.aql
+++ b/asterix-app/src/test/resources/runtimets/queries/temporal/accessors/accessors.3.query.aql
@@ -8,5 +8,56 @@ let $c5 := datetime("19371229T20030628")
 let $c6 := time("12:23:34.930+07:00")
 let $c7 := string("-0003-01-09T23:12:12.39-07:00")
 let $c8 := duration("P3Y73M632DT49H743M3948.94S")
+let $c9 := year-month-duration("P8Y12M")
+let $c10 := day-time-duration("P32DT49H743M3948.94S")
 
-return {"year1": get-year($c1), "year2": get-year($c2), "year3": get-year($c3), "year4": get-year($c4), "year5": get-year($c5), "year6": get-year($c7), "year7": get-year($c8), "year-null": get-year(null), "month1": get-month($c1), "month2": get-month($c2), "month3": get-month($c3), "month4": get-month($c4), "month5": get-month($c5), "month6": get-month($c8), "month-null": get-month(null), "day1": get-day($c1), "day2": get-day($c2), "day3": get-day($c3), "day4": get-day($c4), "day5": get-day($c5), "day6": get-day($c8), "day-null": get-day(null), "hour1": get-hour($c2), "hour2": get-hour($c5), "hour3": get-hour($c6), "hour4": get-hour($c8), "hour-null": get-hour(null), "min1": get-minute($c2), "min2": get-minute($c5), "min3": get-minute($c6), "min4": get-minute($c8), "min-null": get-minute(null), "second1": get-second($c2), "second2": get-second($c5), "second3": get-second($c6), "second4": get-second($c8), "second-null": get-second(null), "ms1": get-millisecond($c2), "ms2": get-millis
 econd($c5), "ms3": get-millisecond($c6), "ms4": get-millisecond($c8), "ms-null": get-millisecond(null) }
+return {
+  "year1": get-year($c1), 
+  "year2": get-year($c2), 
+  "year3": get-year($c3), 
+  "year4": get-year($c4), 
+  "year5": get-year($c5), 
+  "year6": get-year($c7), 
+  "year7": get-year($c8), 
+  "year8": get-year($c9), 
+  "year-null": get-year(null), 
+  "month1": get-month($c1), 
+  "month2": get-month($c2), 
+  "month3": get-month($c3), 
+  "month4": get-month($c4), 
+  "month5": get-month($c5), 
+  "month6": get-month($c8), 
+  "month7": get-month($c9), 
+  "month-null": get-month(null), 
+  "day1": get-day($c1), 
+  "day2": get-day($c2), 
+  "day3": get-day($c3), 
+  "day4": get-day($c4), 
+  "day5": get-day($c5), 
+  "day6": get-day($c8), 
+  "day7": get-day($c10), 
+  "day-null": get-day(null), 
+  "hour1": get-hour($c2), 
+  "hour2": get-hour($c5), 
+  "hour3": get-hour($c6), 
+  "hour4": get-hour($c8), 
+  "hour5": get-hour($c10), 
+  "hour-null": get-hour(null), 
+  "min1": get-minute($c2), 
+  "min2": get-minute($c5), 
+  "min3": get-minute($c6), 
+  "min4": get-minute($c8), 
+  "min5": get-minute($c10), 
+  "min-null": get-minute(null), 
+  "second1": get-second($c2), 
+  "second2": get-second($c5), 
+  "second3": get-second($c6), 
+  "second4": get-second($c8), 
+  "second5": get-second($c10), 
+  "second-null": get-second(null), 
+  "ms1": get-millisecond($c2), 
+  "ms2": get-millisecond($c5), 
+  "ms3": get-millisecond($c6), 
+  "ms4": get-millisecond($c8), 
+  "ms5": get-millisecond($c10), 
+  "ms-null": get-millisecond(null) }

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/4a9a7d99/asterix-app/src/test/resources/runtimets/queries/temporal/agg_max/agg_max.1.ddl.aql
----------------------------------------------------------------------
diff --git a/asterix-app/src/test/resources/runtimets/queries/temporal/agg_max/agg_max.1.ddl.aql b/asterix-app/src/test/resources/runtimets/queries/temporal/agg_max/agg_max.1.ddl.aql
new file mode 100644
index 0000000..6cc19a9
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/queries/temporal/agg_max/agg_max.1.ddl.aql
@@ -0,0 +1,15 @@
+drop dataverse test if exists;
+create dataverse test;
+use dataverse test;
+
+create type Schema as closed{
+  id: int32,
+  time: time,
+  date: date,
+  datetime: datetime,
+  dtduration: day-time-duration,
+  ymduration: year-month-duration
+}
+
+create dataset tsdata(Schema)
+primary key id;
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/4a9a7d99/asterix-app/src/test/resources/runtimets/queries/temporal/agg_max/agg_max.2.update.aql
----------------------------------------------------------------------
diff --git a/asterix-app/src/test/resources/runtimets/queries/temporal/agg_max/agg_max.2.update.aql b/asterix-app/src/test/resources/runtimets/queries/temporal/agg_max/agg_max.2.update.aql
new file mode 100644
index 0000000..bc0cf89
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/queries/temporal/agg_max/agg_max.2.update.aql
@@ -0,0 +1,5 @@
+use dataverse test;
+ 
+insert into dataset tsdata({"id": 1, "time": time("23:49:23.938"), "date": date("1904-01-06"), "datetime": datetime("2012-01-12T12:31:39"), "dtduration": day-time-duration("PT5M"), "ymduration": year-month-duration("P5M")}) 
+insert into dataset tsdata({"id": 2, "time": time("12:37:10"), "date": date("2194-07-06"), "datetime": datetime("2013-01-12T12:31:39"), "dtduration": day-time-duration("PT5.329S"), "ymduration": year-month-duration("P1Y")}) 
+insert into dataset tsdata({"id": 3, "time": time("09:28:10.9"), "date": date("-1904-01-06"), "datetime": datetime("2012-01-12T18:31:39"), "dtduration": day-time-duration("P3DT2S"), "ymduration": year-month-duration("P29M")}) 
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/4a9a7d99/asterix-app/src/test/resources/runtimets/queries/temporal/agg_max/agg_max.3.query.aql
----------------------------------------------------------------------
diff --git a/asterix-app/src/test/resources/runtimets/queries/temporal/agg_max/agg_max.3.query.aql b/asterix-app/src/test/resources/runtimets/queries/temporal/agg_max/agg_max.3.query.aql
new file mode 100644
index 0000000..9985349
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/queries/temporal/agg_max/agg_max.3.query.aql
@@ -0,0 +1,8 @@
+use dataverse test;
+
+let $m0 := max(for $i in dataset tsdata return $i.time)
+let $m1 := max(for $i in dataset tsdata return $i.date)
+let $m2 := max(for $i in dataset tsdata return $i.datetime)
+let $m3 := max(for $i in dataset tsdata return $i.dtduration)
+let $m4 := max(for $i in dataset tsdata return $i.ymduration)
+return {"m0": $m0, "m1": $m1, "m2": $m2, "m3": $m3, "m4": $m4}

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/4a9a7d99/asterix-app/src/test/resources/runtimets/queries/temporal/agg_min/agg_min.1.ddl.aql
----------------------------------------------------------------------
diff --git a/asterix-app/src/test/resources/runtimets/queries/temporal/agg_min/agg_min.1.ddl.aql b/asterix-app/src/test/resources/runtimets/queries/temporal/agg_min/agg_min.1.ddl.aql
new file mode 100644
index 0000000..6cc19a9
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/queries/temporal/agg_min/agg_min.1.ddl.aql
@@ -0,0 +1,15 @@
+drop dataverse test if exists;
+create dataverse test;
+use dataverse test;
+
+create type Schema as closed{
+  id: int32,
+  time: time,
+  date: date,
+  datetime: datetime,
+  dtduration: day-time-duration,
+  ymduration: year-month-duration
+}
+
+create dataset tsdata(Schema)
+primary key id;
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/4a9a7d99/asterix-app/src/test/resources/runtimets/queries/temporal/agg_min/agg_min.2.update.aql
----------------------------------------------------------------------
diff --git a/asterix-app/src/test/resources/runtimets/queries/temporal/agg_min/agg_min.2.update.aql b/asterix-app/src/test/resources/runtimets/queries/temporal/agg_min/agg_min.2.update.aql
new file mode 100644
index 0000000..bc0cf89
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/queries/temporal/agg_min/agg_min.2.update.aql
@@ -0,0 +1,5 @@
+use dataverse test;
+ 
+insert into dataset tsdata({"id": 1, "time": time("23:49:23.938"), "date": date("1904-01-06"), "datetime": datetime("2012-01-12T12:31:39"), "dtduration": day-time-duration("PT5M"), "ymduration": year-month-duration("P5M")}) 
+insert into dataset tsdata({"id": 2, "time": time("12:37:10"), "date": date("2194-07-06"), "datetime": datetime("2013-01-12T12:31:39"), "dtduration": day-time-duration("PT5.329S"), "ymduration": year-month-duration("P1Y")}) 
+insert into dataset tsdata({"id": 3, "time": time("09:28:10.9"), "date": date("-1904-01-06"), "datetime": datetime("2012-01-12T18:31:39"), "dtduration": day-time-duration("P3DT2S"), "ymduration": year-month-duration("P29M")}) 
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/4a9a7d99/asterix-app/src/test/resources/runtimets/queries/temporal/agg_min/agg_min.3.query.aql
----------------------------------------------------------------------
diff --git a/asterix-app/src/test/resources/runtimets/queries/temporal/agg_min/agg_min.3.query.aql b/asterix-app/src/test/resources/runtimets/queries/temporal/agg_min/agg_min.3.query.aql
new file mode 100644
index 0000000..91b2dba
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/queries/temporal/agg_min/agg_min.3.query.aql
@@ -0,0 +1,8 @@
+use dataverse test;
+
+let $m0 := min(for $i in dataset tsdata return $i.time)
+let $m1 := min(for $i in dataset tsdata return $i.date)
+let $m2 := min(for $i in dataset tsdata return $i.datetime)
+let $m3 := min(for $i in dataset tsdata return $i.dtduration)
+let $m4 := min(for $i in dataset tsdata return $i.ymduration)
+return {"m0": $m0, "m1": $m1, "m2": $m2, "m3": $m3, "m4": $m4}

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/4a9a7d99/asterix-app/src/test/resources/runtimets/queries/temporal/duration_functions/duration_functions.1.ddl.aql
----------------------------------------------------------------------
diff --git a/asterix-app/src/test/resources/runtimets/queries/temporal/duration_functions/duration_functions.1.ddl.aql b/asterix-app/src/test/resources/runtimets/queries/temporal/duration_functions/duration_functions.1.ddl.aql
new file mode 100644
index 0000000..5b52155
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/queries/temporal/duration_functions/duration_functions.1.ddl.aql
@@ -0,0 +1,8 @@
+/*
+ * Description      :   Check temporal functions for duration
+ * Expected Result  :   Success
+ * Date             :   08/22/2013
+ */
+
+drop dataverse test if exists;
+create dataverse test;
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/4a9a7d99/asterix-app/src/test/resources/runtimets/queries/temporal/duration_functions/duration_functions.2.update.aql
----------------------------------------------------------------------
diff --git a/asterix-app/src/test/resources/runtimets/queries/temporal/duration_functions/duration_functions.2.update.aql b/asterix-app/src/test/resources/runtimets/queries/temporal/duration_functions/duration_functions.2.update.aql
new file mode 100644
index 0000000..e69de29

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/4a9a7d99/asterix-app/src/test/resources/runtimets/queries/temporal/duration_functions/duration_functions.3.query.aql
----------------------------------------------------------------------
diff --git a/asterix-app/src/test/resources/runtimets/queries/temporal/duration_functions/duration_functions.3.query.aql b/asterix-app/src/test/resources/runtimets/queries/temporal/duration_functions/duration_functions.3.query.aql
new file mode 100644
index 0000000..9252213
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/queries/temporal/duration_functions/duration_functions.3.query.aql
@@ -0,0 +1,16 @@
+/*
+ * Description      :   Check temporal functions for duration
+ * Expected Result  :   Success
+ * Date             :   08/22/2013
+ */
+
+use dataverse test;
+
+let $itv1 := interval-from-date("2010-10-30", "2010-12-21")
+let $itv2 := interval-from-datetime("2012-06-26T01:01:01.111", "2012-07-27T02:02:02.222")
+let $itv3 := interval-from-time("12:32:38", "20:29:20")
+
+return { "dr1" : duration-from-interval($itv1),
+         "dr2" : duration-from-interval($itv2),
+         "dr3" : duration-from-interval($itv3),
+         "dr4" : duration-from-interval(null) }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/4a9a7d99/asterix-app/src/test/resources/runtimets/queries/temporal/get_overlapping_interval/get_overlapping_interval.1.ddl.aql
----------------------------------------------------------------------
diff --git a/asterix-app/src/test/resources/runtimets/queries/temporal/get_overlapping_interval/get_overlapping_interval.1.ddl.aql b/asterix-app/src/test/resources/runtimets/queries/temporal/get_overlapping_interval/get_overlapping_interval.1.ddl.aql
new file mode 100644
index 0000000..e69de29

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/4a9a7d99/asterix-app/src/test/resources/runtimets/queries/temporal/get_overlapping_interval/get_overlapping_interval.2.update.aql
----------------------------------------------------------------------
diff --git a/asterix-app/src/test/resources/runtimets/queries/temporal/get_overlapping_interval/get_overlapping_interval.2.update.aql b/asterix-app/src/test/resources/runtimets/queries/temporal/get_overlapping_interval/get_overlapping_interval.2.update.aql
new file mode 100644
index 0000000..e69de29

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/4a9a7d99/asterix-app/src/test/resources/runtimets/queries/temporal/get_overlapping_interval/get_overlapping_interval.3.query.aql
----------------------------------------------------------------------
diff --git a/asterix-app/src/test/resources/runtimets/queries/temporal/get_overlapping_interval/get_overlapping_interval.3.query.aql b/asterix-app/src/test/resources/runtimets/queries/temporal/get_overlapping_interval/get_overlapping_interval.3.query.aql
new file mode 100644
index 0000000..5167f2a
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/queries/temporal/get_overlapping_interval/get_overlapping_interval.3.query.aql
@@ -0,0 +1,11 @@
+/**
+ * get-overlapping-interval test case
+ * Expected result: success
+ **/
+
+{ "overlap1": get-overlapping-interval(interval-from-time(time("11:23:39"), time("18:27:19")), interval-from-time(time("12:23:39"), time("23:18:00"))), 
+  "overlap2": get-overlapping-interval(interval-from-time(time("12:23:39"), time("18:27:19")), interval-from-time(time("07:19:39"), time("09:18:00"))),
+  "overlap3": get-overlapping-interval(interval-from-date(date("1980-11-30"), date("1999-09-09")), interval-from-date(date("2013-01-01"), date("2014-01-01"))),
+  "overlap4": get-overlapping-interval(interval-from-date(date("1980-11-30"), date("2099-09-09")), interval-from-date(date("2013-01-01"), date("2014-01-01"))),
+  "overlap5": get-overlapping-interval(interval-from-datetime(datetime("1844-03-03T11:19:39"), datetime("2000-10-30T18:27:19")), interval-from-datetime(datetime("1989-03-04T12:23:39"), datetime("2009-10-10T23:18:00"))),
+  "overlap6": get-overlapping-interval(interval-from-datetime(datetime("1989-03-04T12:23:39"), datetime("2000-10-30T18:27:19")), interval-from-datetime(datetime("1844-03-03T11:19:39"), datetime("1888-10-10T23:18:00")))  }

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/4a9a7d99/asterix-app/src/test/resources/runtimets/queries/temporal/overlap_bins/overlap_bins.1.ddl.aql
----------------------------------------------------------------------
diff --git a/asterix-app/src/test/resources/runtimets/queries/temporal/overlap_bins/overlap_bins.1.ddl.aql b/asterix-app/src/test/resources/runtimets/queries/temporal/overlap_bins/overlap_bins.1.ddl.aql
new file mode 100644
index 0000000..fc82cbe
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/queries/temporal/overlap_bins/overlap_bins.1.ddl.aql
@@ -0,0 +1,4 @@
+/**
+ * overlap_bins test case: test the overlap_bins
+ * Expected result: success
+ **/
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/4a9a7d99/asterix-app/src/test/resources/runtimets/queries/temporal/overlap_bins/overlap_bins.2.update.aql
----------------------------------------------------------------------
diff --git a/asterix-app/src/test/resources/runtimets/queries/temporal/overlap_bins/overlap_bins.2.update.aql b/asterix-app/src/test/resources/runtimets/queries/temporal/overlap_bins/overlap_bins.2.update.aql
new file mode 100644
index 0000000..fc82cbe
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/queries/temporal/overlap_bins/overlap_bins.2.update.aql
@@ -0,0 +1,4 @@
+/**
+ * overlap_bins test case: test the overlap_bins
+ * Expected result: success
+ **/
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/4a9a7d99/asterix-app/src/test/resources/runtimets/queries/temporal/overlap_bins/overlap_bins.3.query.aql
----------------------------------------------------------------------
diff --git a/asterix-app/src/test/resources/runtimets/queries/temporal/overlap_bins/overlap_bins.3.query.aql b/asterix-app/src/test/resources/runtimets/queries/temporal/overlap_bins/overlap_bins.3.query.aql
new file mode 100644
index 0000000..ae9058f
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/queries/temporal/overlap_bins/overlap_bins.3.query.aql
@@ -0,0 +1,11 @@
+/**
+ * overlap_bins test case: test the overlap_bins
+ * Expected result: success
+ **/
+
+let $itv1 := interval-from-time(time("17:23:37"), time("18:30:21"))
+let $itv2 := interval-from-date(date("1984-03-17"), date("2013-08-22"))
+let $itv3 := interval-from-datetime(datetime("1800-01-01T23:59:48.938"), datetime("2015-07-26T13:28:30.218"))
+return { "timebins": overlap-bins($itv1, time("00:00:00"), day-time-duration("PT30M")),
+         "datebins": overlap-bins($itv2, date("1990-01-01"), year-month-duration("P20Y")),
+         "datetimebins": overlap-bins($itv3, datetime("1900-01-01T00:00:00.000"), year-month-duration("P100Y")) }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/4a9a7d99/asterix-app/src/test/resources/runtimets/queries/temporal/overlap_bins_gby_0/overlap_bins_gby_0.1.ddl.aql
----------------------------------------------------------------------
diff --git a/asterix-app/src/test/resources/runtimets/queries/temporal/overlap_bins_gby_0/overlap_bins_gby_0.1.ddl.aql b/asterix-app/src/test/resources/runtimets/queries/temporal/overlap_bins_gby_0/overlap_bins_gby_0.1.ddl.aql
new file mode 100644
index 0000000..652f81c
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/queries/temporal/overlap_bins_gby_0/overlap_bins_gby_0.1.ddl.aql
@@ -0,0 +1,17 @@
+/**
+ * Interval_bin_gby test case: test the group-by using interval-bin function
+ * Expected result: success
+ **/
+
+drop dataverse test if exists;
+create dataverse test;
+use dataverse test;
+
+create type Schema as closed{
+  id: int32,
+  time: time,
+  duration: day-time-duration
+}
+
+create dataset tsdata(Schema)
+primary key id;
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/4a9a7d99/asterix-app/src/test/resources/runtimets/queries/temporal/overlap_bins_gby_0/overlap_bins_gby_0.2.update.aql
----------------------------------------------------------------------
diff --git a/asterix-app/src/test/resources/runtimets/queries/temporal/overlap_bins_gby_0/overlap_bins_gby_0.2.update.aql b/asterix-app/src/test/resources/runtimets/queries/temporal/overlap_bins_gby_0/overlap_bins_gby_0.2.update.aql
new file mode 100644
index 0000000..4e9c1e4
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/queries/temporal/overlap_bins_gby_0/overlap_bins_gby_0.2.update.aql
@@ -0,0 +1,17 @@
+/**
+ * Interval_bin_gby test case: test the group-by using interval-bin function
+ * Expected result: success
+ **/
+use dataverse test;
+ 
+insert into dataset tsdata({"id": 1, "time": time("23:49:23.938"), "duration": day-time-duration("PT5M")}) 
+insert into dataset tsdata({"id": 2, "time": time("00:27:13.432"), "duration": day-time-duration("PT1H")}) 
+insert into dataset tsdata({"id": 3, "time": time("18:00:00"), "duration": day-time-duration("PT2H")}) 
+insert into dataset tsdata({"id": 4, "time": time("234933938"), "duration": day-time-duration("PT30S")}) 
+insert into dataset tsdata({"id": 5, "time": time("23:58:17.038"), "duration": day-time-duration("PT39.382S")}) 
+insert into dataset tsdata({"id": 6, "time": time("23:30:00"), "duration": day-time-duration("PT2M")}) 
+insert into dataset tsdata({"id": 7, "time": time("23:22:38"), "duration": day-time-duration("PT20M")}) 
+insert into dataset tsdata({"id": 8, "time": time("17:28:13.900"), "duration": day-time-duration("PT19S")}) 
+insert into dataset tsdata({"id": 9, "time": time("07:49:23.938"), "duration": day-time-duration("PT3H")}) 
+insert into dataset tsdata({"id": 10, "time": time("09:35:28.039"), "duration": day-time-duration("PT10H50M")}) 
+insert into dataset tsdata({"id": 11, "time": time("12:49:23.938"), "duration": day-time-duration("PT3H")}) 
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/4a9a7d99/asterix-app/src/test/resources/runtimets/queries/temporal/overlap_bins_gby_0/overlap_bins_gby_0.3.query.aql
----------------------------------------------------------------------
diff --git a/asterix-app/src/test/resources/runtimets/queries/temporal/overlap_bins_gby_0/overlap_bins_gby_0.3.query.aql b/asterix-app/src/test/resources/runtimets/queries/temporal/overlap_bins_gby_0/overlap_bins_gby_0.3.query.aql
new file mode 100644
index 0000000..42defd6
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/queries/temporal/overlap_bins_gby_0/overlap_bins_gby_0.3.query.aql
@@ -0,0 +1,15 @@
+/**
+ * Interval_bin_gby test case: test the group-by using interval-bin function
+ * Expected result: success
+ **/
+
+use dataverse test;
+
+for $i in dataset tsdata
+  order by $i.time
+  for $j in overlap-bins(interval-start-from-time($i.time, $i.duration), time("00:00:00"), day-time-duration("PT1H30M"))
+    group by $bin := $j with $i 
+    order by get-interval-start($bin)
+    for $x in $i
+      let $itv := interval-start-from-time($x.time, $x.duration)
+      return { "tbin": $bin, "interval": $itv, "overlap": get-overlapping-interval($bin, $itv) }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/4a9a7d99/asterix-app/src/test/resources/runtimets/queries/temporal/overlap_bins_gby_1/overlap_bins_gby_1.1.ddl.aql
----------------------------------------------------------------------
diff --git a/asterix-app/src/test/resources/runtimets/queries/temporal/overlap_bins_gby_1/overlap_bins_gby_1.1.ddl.aql b/asterix-app/src/test/resources/runtimets/queries/temporal/overlap_bins_gby_1/overlap_bins_gby_1.1.ddl.aql
new file mode 100644
index 0000000..652f81c
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/queries/temporal/overlap_bins_gby_1/overlap_bins_gby_1.1.ddl.aql
@@ -0,0 +1,17 @@
+/**
+ * Interval_bin_gby test case: test the group-by using interval-bin function
+ * Expected result: success
+ **/
+
+drop dataverse test if exists;
+create dataverse test;
+use dataverse test;
+
+create type Schema as closed{
+  id: int32,
+  time: time,
+  duration: day-time-duration
+}
+
+create dataset tsdata(Schema)
+primary key id;
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/4a9a7d99/asterix-app/src/test/resources/runtimets/queries/temporal/overlap_bins_gby_1/overlap_bins_gby_1.2.update.aql
----------------------------------------------------------------------
diff --git a/asterix-app/src/test/resources/runtimets/queries/temporal/overlap_bins_gby_1/overlap_bins_gby_1.2.update.aql b/asterix-app/src/test/resources/runtimets/queries/temporal/overlap_bins_gby_1/overlap_bins_gby_1.2.update.aql
new file mode 100644
index 0000000..4e9c1e4
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/queries/temporal/overlap_bins_gby_1/overlap_bins_gby_1.2.update.aql
@@ -0,0 +1,17 @@
+/**
+ * Interval_bin_gby test case: test the group-by using interval-bin function
+ * Expected result: success
+ **/
+use dataverse test;
+ 
+insert into dataset tsdata({"id": 1, "time": time("23:49:23.938"), "duration": day-time-duration("PT5M")}) 
+insert into dataset tsdata({"id": 2, "time": time("00:27:13.432"), "duration": day-time-duration("PT1H")}) 
+insert into dataset tsdata({"id": 3, "time": time("18:00:00"), "duration": day-time-duration("PT2H")}) 
+insert into dataset tsdata({"id": 4, "time": time("234933938"), "duration": day-time-duration("PT30S")}) 
+insert into dataset tsdata({"id": 5, "time": time("23:58:17.038"), "duration": day-time-duration("PT39.382S")}) 
+insert into dataset tsdata({"id": 6, "time": time("23:30:00"), "duration": day-time-duration("PT2M")}) 
+insert into dataset tsdata({"id": 7, "time": time("23:22:38"), "duration": day-time-duration("PT20M")}) 
+insert into dataset tsdata({"id": 8, "time": time("17:28:13.900"), "duration": day-time-duration("PT19S")}) 
+insert into dataset tsdata({"id": 9, "time": time("07:49:23.938"), "duration": day-time-duration("PT3H")}) 
+insert into dataset tsdata({"id": 10, "time": time("09:35:28.039"), "duration": day-time-duration("PT10H50M")}) 
+insert into dataset tsdata({"id": 11, "time": time("12:49:23.938"), "duration": day-time-duration("PT3H")}) 
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/4a9a7d99/asterix-app/src/test/resources/runtimets/queries/temporal/overlap_bins_gby_1/overlap_bins_gby_1.3.query.aql
----------------------------------------------------------------------
diff --git a/asterix-app/src/test/resources/runtimets/queries/temporal/overlap_bins_gby_1/overlap_bins_gby_1.3.query.aql b/asterix-app/src/test/resources/runtimets/queries/temporal/overlap_bins_gby_1/overlap_bins_gby_1.3.query.aql
new file mode 100644
index 0000000..797c351
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/queries/temporal/overlap_bins_gby_1/overlap_bins_gby_1.3.query.aql
@@ -0,0 +1,22 @@
+/**
+ * Interval_bin_gby test case: test the group-by using interval-bin function
+ * Expected result: success
+ **/
+
+use dataverse test;
+
+for $i2 in (
+  for $i1 in dataset tsdata
+  order by $i1.time
+  return { "interval": interval-start-from-time($i1.time, $i1.duration) })
+for $j in overlap-bins($i2.interval, time("00:00:00"), day-time-duration("PT1H30M"))
+group by $bin := $j with $i2
+order by get-interval-start($bin)
+return { 
+  "timebin": $bin, 
+  "count": count($i2), 
+  "total_ms": sum(
+    for $i3 in $i2 
+    return ms-from-day-time-duration(
+      duration-from-interval(
+        get-overlapping-interval($bin, $i3.interval)))) }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/4a9a7d99/asterix-app/src/test/resources/runtimets/queries/temporal/overlap_bins_gby_3/overlap_bins_gby_3.1.ddl.aql
----------------------------------------------------------------------
diff --git a/asterix-app/src/test/resources/runtimets/queries/temporal/overlap_bins_gby_3/overlap_bins_gby_3.1.ddl.aql b/asterix-app/src/test/resources/runtimets/queries/temporal/overlap_bins_gby_3/overlap_bins_gby_3.1.ddl.aql
new file mode 100644
index 0000000..c5fa968
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/queries/temporal/overlap_bins_gby_3/overlap_bins_gby_3.1.ddl.aql
@@ -0,0 +1,18 @@
+/**
+ * Interval_bin_gby test case: test the group-by using interval-bin function
+ * Expected result: success
+ **/
+
+drop dataverse multitask if exists;
+create dataverse multitask;
+use dataverse multitask;
+
+create type LogType as closed {
+        row_id: int32,
+        time: time,
+        duration: int32,
+        app: string
+};
+
+create dataset logs(LogType)
+primary key row_id;
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/4a9a7d99/asterix-app/src/test/resources/runtimets/queries/temporal/overlap_bins_gby_3/overlap_bins_gby_3.2.update.aql
----------------------------------------------------------------------
diff --git a/asterix-app/src/test/resources/runtimets/queries/temporal/overlap_bins_gby_3/overlap_bins_gby_3.2.update.aql b/asterix-app/src/test/resources/runtimets/queries/temporal/overlap_bins_gby_3/overlap_bins_gby_3.2.update.aql
new file mode 100644
index 0000000..82d1fe6
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/queries/temporal/overlap_bins_gby_3/overlap_bins_gby_3.2.update.aql
@@ -0,0 +1,12 @@
+use dataverse multitask;
+
+insert into dataset logs { "row_id": 1, "time": time("10:27:12"), "duration": 5, "app": "Facebook" }
+insert into dataset logs { "row_id": 2, "time": time("10:27:18"), "duration": 6, "app": "Email" }
+insert into dataset logs { "row_id": 3, "time": time("10:27:25"), "duration": 26, "app": "Facebook" }
+insert into dataset logs { "row_id": 4, "time": time("10:27:52"), "duration": 19, "app": "Email" }
+insert into dataset logs { "row_id": 5, "time": time("10:28:12"), "duration": 47, "app": "Facebook" }
+insert into dataset logs { "row_id": 6, "time": time("10:29:00"), "duration": 33, "app": "Email" }
+insert into dataset logs { "row_id": 7, "time": time("10:29:10"), "duration": 18, "app": "Facebook" }
+insert into dataset logs { "row_id": 8, "time": time("10:29:29"), "duration": 159, "app": "Facebook" }
+insert into dataset logs { "row_id": 9, "time": time("11:07:15"), "duration": 30, "app": "Email" }
+insert into dataset logs { "row_id": 10, "time": time("11:07:47"), "duration": 31, "app": "Email" }

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/4a9a7d99/asterix-app/src/test/resources/runtimets/queries/temporal/overlap_bins_gby_3/overlap_bins_gby_3.3.query.aql
----------------------------------------------------------------------
diff --git a/asterix-app/src/test/resources/runtimets/queries/temporal/overlap_bins_gby_3/overlap_bins_gby_3.3.query.aql b/asterix-app/src/test/resources/runtimets/queries/temporal/overlap_bins_gby_3/overlap_bins_gby_3.3.query.aql
new file mode 100644
index 0000000..0433b32
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/queries/temporal/overlap_bins_gby_3/overlap_bins_gby_3.3.query.aql
@@ -0,0 +1,13 @@
+use dataverse multitask;
+
+for $bin in overlap-bins(interval-from-time(min(for $i in dataset logs return $i.time), max(for $i in dataset logs return $i.time + duration-from-ms($i.duration * 1000))), time("00:00:00.000"), day-time-duration("PT1M"))
+order by get-interval-start($bin)
+return {
+  "timebin": $bin,
+  "subgroups":
+        for $i in dataset logs
+        where interval-covers($bin, interval-start-from-time($i.time, duration-from-ms($i.duration)))
+        group by $subgid := $i.app with $i
+        order by $subgid, count($i)
+        return { "subgid": $subgid, "item_count": count($i) }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/4a9a7d99/asterix-app/src/test/resources/runtimets/results/string/replace22/replace22.1.adm
----------------------------------------------------------------------
diff --git a/asterix-app/src/test/resources/runtimets/results/string/replace22/replace22.1.adm b/asterix-app/src/test/resources/runtimets/results/string/replace22/replace22.1.adm
index a0e11d5..09d79cf 100644
--- a/asterix-app/src/test/resources/runtimets/results/string/replace22/replace22.1.adm
+++ b/asterix-app/src/test/resources/runtimets/results/string/replace22/replace22.1.adm
@@ -1,2 +1,2 @@
-[ { "result1": "abracadabra", "result2": "aXXXcadaXXX", "result3": null, "result4": "aXXXcadaXXX", "result5": "XXXaXXXbXXXrXXXaXXXcXXXaXXXdXXXaXXXbXXXrXXXaXXX", "result6": "acada", "result7": "acada", "result8": "XXXaXXXbXXXrXXXaXXXcXXXaXXXdXXXaXXXbXXXrXXXaXXX" }
+[ { "result1": null, "result2": "aXXXcadaXXX", "result3": null, "result4": null, "result5": null, "result6": null, "result7": "acada", "result8": "XXXaXXXbXXXrXXXaXXXcXXXaXXXdXXXaXXXbXXXrXXXaXXX" }
  ]

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/4a9a7d99/asterix-app/src/test/resources/runtimets/results/temporal/accessors/accessors.1.adm
----------------------------------------------------------------------
diff --git a/asterix-app/src/test/resources/runtimets/results/temporal/accessors/accessors.1.adm b/asterix-app/src/test/resources/runtimets/results/temporal/accessors/accessors.1.adm
index 03a901e..33fb586 100644
--- a/asterix-app/src/test/resources/runtimets/results/temporal/accessors/accessors.1.adm
+++ b/asterix-app/src/test/resources/runtimets/results/temporal/accessors/accessors.1.adm
@@ -1,2 +1,3 @@
-[ { "year1": 2010, "year2": 1987, "year3": -1987, "year4": 928, "year5": 1937, "year6": -3, "year7": 9, "year-null": null, "month1": 10, "month2": 11, "month3": 11, "month4": 3, "month5": 12, "month6": 1, "month-null": null, "day1": 30, "day2": 19, "day3": 19, "day4": 29, "day5": 29, "day6": 634, "day-null": null, "hour1": 23, "hour2": 20, "hour3": 5, "hour4": 14, "hour-null": null, "min1": 49, "min2": 3, "min3": 23, "min4": 28, "min-null": null, "second1": 23, "second2": 6, "second3": 34, "second4": 48, "second-null": null, "ms1": 938, "ms2": 280, "ms3": 930, "ms4": 94, "ms-null": null }
+[ { "year1": 2010, "year2": 1987, "year3": -1987, "year4": 928, "year5": 1937, "year6": -3, "year7": 9, "year8": 9, "year-null": null, "month1": 10, "month2": 11, "month3": 11, "month4": 3, "month5": 12, "month6": 1, "month7": 0, "month-null": null, "day1": 30, "day2": 19, "day3": 19, "day4": 29, "day5": 29, "day6": 634, "day7": 34, "day-null": null, "hour1": 23, "hour2": 20, "hour3": 5, "hour4": 14, "hour5": 14, "hour-null": null, "min1": 49, "min2": 3, "min3": 23, "min4": 28, "min5": 28, "min-null": null, "second1": 23, "second2": 6, "second3": 34, "second4": 48, "second5": 48, "second-null": null, "ms1": 938, "ms2": 280, "ms3": 930, "ms4": 94, "ms5": 94, "ms-null": null }
  ]
+

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/4a9a7d99/asterix-app/src/test/resources/runtimets/results/temporal/agg_max/agg_max.1.adm
----------------------------------------------------------------------
diff --git a/asterix-app/src/test/resources/runtimets/results/temporal/agg_max/agg_max.1.adm b/asterix-app/src/test/resources/runtimets/results/temporal/agg_max/agg_max.1.adm
new file mode 100644
index 0000000..18ecc53
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/results/temporal/agg_max/agg_max.1.adm
@@ -0,0 +1,6 @@
+[ {"m0": time("23:49:23.938Z")
+, "m1": date("2194-07-06")
+, "m2": datetime("2013-01-12T12:31:39.000Z")
+, "m3": day-time-duration("P3DT2S")
+, "m4": year-month-duration("P2Y5M")}
+ ]
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/4a9a7d99/asterix-app/src/test/resources/runtimets/results/temporal/agg_min/agg_min.1.adm
----------------------------------------------------------------------
diff --git a/asterix-app/src/test/resources/runtimets/results/temporal/agg_min/agg_min.1.adm b/asterix-app/src/test/resources/runtimets/results/temporal/agg_min/agg_min.1.adm
new file mode 100644
index 0000000..2eccb41
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/results/temporal/agg_min/agg_min.1.adm
@@ -0,0 +1,6 @@
+[ {"m0": time("09:28:10.900Z")
+, "m1": date("-1904-01-06")
+, "m2": datetime("2012-01-12T12:31:39.000Z")
+, "m3": day-time-duration("PT5.329S")
+, "m4": year-month-duration("P5M")}
+ ]
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/4a9a7d99/asterix-app/src/test/resources/runtimets/results/temporal/duration_functions/duration_functions.1.adm
----------------------------------------------------------------------
diff --git a/asterix-app/src/test/resources/runtimets/results/temporal/duration_functions/duration_functions.1.adm b/asterix-app/src/test/resources/runtimets/results/temporal/duration_functions/duration_functions.1.adm
new file mode 100644
index 0000000..ab16741
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/results/temporal/duration_functions/duration_functions.1.adm
@@ -0,0 +1,2 @@
+[ { "dr1": day-time-duration("P52D"), "dr2": day-time-duration("P31DT1H1M1.111S"), "dr3": day-time-duration("PT7H56M42S"), "dr4": null }
+ ]
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/4a9a7d99/asterix-app/src/test/resources/runtimets/results/temporal/get_overlapping_interval/get_overlapping_interval.1.adm
----------------------------------------------------------------------
diff --git a/asterix-app/src/test/resources/runtimets/results/temporal/get_overlapping_interval/get_overlapping_interval.1.adm b/asterix-app/src/test/resources/runtimets/results/temporal/get_overlapping_interval/get_overlapping_interval.1.adm
new file mode 100644
index 0000000..175eccc
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/results/temporal/get_overlapping_interval/get_overlapping_interval.1.adm
@@ -0,0 +1,2 @@
+[ { "overlap1": interval-time("12:23:39.000Z, 18:27:19.000Z"), "overlap2": null, "overlap3": null, "overlap4": interval-date("2013-01-01, 2014-01-01"), "overlap5": interval-datetime("1989-03-04T12:23:39.000Z, 2000-10-30T18:27:19.000Z"), "overlap6": null }
+ ]
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/4a9a7d99/asterix-app/src/test/resources/runtimets/results/temporal/insert_from_ext_ds_2/insert_from_ext_ds_2.1.adm
----------------------------------------------------------------------
diff --git a/asterix-app/src/test/resources/runtimets/results/temporal/insert_from_ext_ds_2/insert_from_ext_ds_2.1.adm b/asterix-app/src/test/resources/runtimets/results/temporal/insert_from_ext_ds_2/insert_from_ext_ds_2.1.adm
index cd19c38..74a7fb0 100644
--- a/asterix-app/src/test/resources/runtimets/results/temporal/insert_from_ext_ds_2/insert_from_ext_ds_2.1.adm
+++ b/asterix-app/src/test/resources/runtimets/results/temporal/insert_from_ext_ds_2/insert_from_ext_ds_2.1.adm
@@ -1,4 +1,4 @@
-[ { "date": date("-9971-09-24"), "time": time("11:38:17.154Z"), "datetime": datetime("1259-11-13T09:49:11.852Z"), "duration": duration("P473653Y9M4566143DT10H20M53.61S"), "year-month-duration": year-month-duration("P148233Y10M"), "day-time-duration": day-time-duration("-P7236357DT2H56M56.164S"), "date-interval": interval-date("-0255-09-06, 4925-05-03"), "time-interval": interval-time("23:10:45.169Z, 01:37:48.736Z"), "datetime-interval": interval-datetime("0534-12-08T08:20:31.487Z, 6778-02-16T22:40:21.653Z") }
+[ { "date": date("-9971-09-24"), "time": time("11:38:17.154Z"), "datetime": datetime("1259-11-13T09:49:11.852Z"), "duration": duration("P473653Y9M4566143DT10H20M53.61S"), "year-month-duration": year-month-duration("P148233Y10M"), "day-time-duration": day-time-duration("-P7236357DT2H56M56.164S"), "date-interval": interval-date("-0255-09-06, 4925-05-03"), "time-interval": interval-time("12:10:45.169Z, 15:37:48.736Z"), "datetime-interval": interval-datetime("0534-12-08T08:20:31.487Z, 6778-02-16T22:40:21.653Z") }
 , { "date": date("4619-11-23"), "time": time("14:29:36.786Z"), "datetime": datetime("2749-01-27T17:27:30.020Z"), "duration": duration("-P474133Y7M854630DT4H40M6.45S"), "year-month-duration": year-month-duration("P193989Y3M"), "day-time-duration": day-time-duration("P4477686DT4H49M31.87S"), "date-interval": interval-date("-9537-08-04, 9656-06-03"), "time-interval": interval-time("12:04:45.689Z, 12:41:59.002Z"), "datetime-interval": interval-datetime("-2640-10-11T17:32:15.675Z, 4104-02-01T05:59:11.902Z") }
-, { "date": date("7986-11-25"), "time": time("12:49:39.736Z"), "datetime": datetime("-8337-01-30T15:23:07.598Z"), "duration": duration("-P184484Y7M2241423DT10H42M49.500S"), "year-month-duration": year-month-duration("-P546031Y3M"), "day-time-duration": day-time-duration("P2623386DT10H32M31.983S"), "date-interval": interval-date("-4514-05-24, 3337-08-26"), "time-interval": interval-time("04:16:42.321Z, 02:22:56.816Z"), "datetime-interval": interval-datetime("2129-12-12T13:18:35.758Z, 8647-07-01T13:10:19.691Z") }
- ]
+, { "date": date("7986-11-25"), "time": time("12:49:39.736Z"), "datetime": datetime("-8337-01-30T15:23:07.598Z"), "duration": duration("-P184484Y7M2241423DT10H42M49.500S"), "year-month-duration": year-month-duration("-P546031Y3M"), "day-time-duration": day-time-duration("P2623386DT10H32M31.983S"), "date-interval": interval-date("-4514-05-24, 3337-08-26"), "time-interval": interval-time("04:16:42.321Z, 12:22:56.816Z"), "datetime-interval": interval-datetime("2129-12-12T13:18:35.758Z, 8647-07-01T13:10:19.691Z") }
+ ]
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/4a9a7d99/asterix-app/src/test/resources/runtimets/results/temporal/overlap_bins/overlap_bins.1.adm
----------------------------------------------------------------------
diff --git a/asterix-app/src/test/resources/runtimets/results/temporal/overlap_bins/overlap_bins.1.adm b/asterix-app/src/test/resources/runtimets/results/temporal/overlap_bins/overlap_bins.1.adm
new file mode 100644
index 0000000..054fdae
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/results/temporal/overlap_bins/overlap_bins.1.adm
@@ -0,0 +1,2 @@
+[ { "timebins": [ interval-time("17:00:00.000Z, 17:30:00.000Z"), interval-time("17:30:00.000Z, 18:00:00.000Z"), interval-time("18:00:00.000Z, 18:30:00.000Z"), interval-time("18:30:00.000Z, 19:00:00.000Z") ], "datebins": [ interval-date("1970-01-01, 1990-01-01"), interval-date("1990-01-01, 2010-01-01"), interval-date("2010-01-01, 2030-01-01") ], "datetimebins": [ interval-datetime("1800-01-01T00:00:00.000Z, 1900-01-01T00:00:00.000Z"), interval-datetime("1900-01-01T00:00:00.000Z, 2000-01-01T00:00:00.000Z"), interval-datetime("2000-01-01T00:00:00.000Z, 2100-01-01T00:00:00.000Z") ] }
+ ]

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/4a9a7d99/asterix-app/src/test/resources/runtimets/results/temporal/overlap_bins_gby_0/overlap_bins_gby_0.1.adm
----------------------------------------------------------------------
diff --git a/asterix-app/src/test/resources/runtimets/results/temporal/overlap_bins_gby_0/overlap_bins_gby_0.1.adm b/asterix-app/src/test/resources/runtimets/results/temporal/overlap_bins_gby_0/overlap_bins_gby_0.1.adm
new file mode 100644
index 0000000..457e54d
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/results/temporal/overlap_bins_gby_0/overlap_bins_gby_0.1.adm
@@ -0,0 +1,24 @@
+[ { "tbin": interval-time("00:00:00.000Z, 01:30:00.000Z"), "interval": interval-time("00:27:13.432Z, 01:27:13.432Z"), "overlap": interval-time("00:27:13.432Z, 01:27:13.432Z") }
+, { "tbin": interval-time("07:30:00.000Z, 09:00:00.000Z"), "interval": interval-time("07:49:23.938Z, 10:49:23.938Z"), "overlap": interval-time("07:49:23.938Z, 09:00:00.000Z") }
+, { "tbin": interval-time("09:00:00.000Z, 10:30:00.000Z"), "interval": interval-time("07:49:23.938Z, 10:49:23.938Z"), "overlap": interval-time("09:00:00.000Z, 10:30:00.000Z") }
+, { "tbin": interval-time("09:00:00.000Z, 10:30:00.000Z"), "interval": interval-time("09:35:28.039Z, 20:25:28.039Z"), "overlap": interval-time("09:35:28.039Z, 10:30:00.000Z") }
+, { "tbin": interval-time("10:30:00.000Z, 12:00:00.000Z"), "interval": interval-time("07:49:23.938Z, 10:49:23.938Z"), "overlap": interval-time("10:30:00.000Z, 10:49:23.938Z") }
+, { "tbin": interval-time("10:30:00.000Z, 12:00:00.000Z"), "interval": interval-time("09:35:28.039Z, 20:25:28.039Z"), "overlap": interval-time("10:30:00.000Z, 12:00:00.000Z") }
+, { "tbin": interval-time("12:00:00.000Z, 13:30:00.000Z"), "interval": interval-time("09:35:28.039Z, 20:25:28.039Z"), "overlap": interval-time("12:00:00.000Z, 13:30:00.000Z") }
+, { "tbin": interval-time("12:00:00.000Z, 13:30:00.000Z"), "interval": interval-time("12:49:23.938Z, 15:49:23.938Z"), "overlap": interval-time("12:49:23.938Z, 13:30:00.000Z") }
+, { "tbin": interval-time("13:30:00.000Z, 15:00:00.000Z"), "interval": interval-time("09:35:28.039Z, 20:25:28.039Z"), "overlap": interval-time("13:30:00.000Z, 15:00:00.000Z") }
+, { "tbin": interval-time("13:30:00.000Z, 15:00:00.000Z"), "interval": interval-time("12:49:23.938Z, 15:49:23.938Z"), "overlap": interval-time("13:30:00.000Z, 15:00:00.000Z") }
+, { "tbin": interval-time("15:00:00.000Z, 16:30:00.000Z"), "interval": interval-time("09:35:28.039Z, 20:25:28.039Z"), "overlap": interval-time("15:00:00.000Z, 16:30:00.000Z") }
+, { "tbin": interval-time("15:00:00.000Z, 16:30:00.000Z"), "interval": interval-time("12:49:23.938Z, 15:49:23.938Z"), "overlap": interval-time("15:00:00.000Z, 15:49:23.938Z") }
+, { "tbin": interval-time("16:30:00.000Z, 18:00:00.000Z"), "interval": interval-time("09:35:28.039Z, 20:25:28.039Z"), "overlap": interval-time("16:30:00.000Z, 18:00:00.000Z") }
+, { "tbin": interval-time("16:30:00.000Z, 18:00:00.000Z"), "interval": interval-time("17:28:13.900Z, 17:28:32.900Z"), "overlap": interval-time("17:28:13.900Z, 17:28:32.900Z") }
+, { "tbin": interval-time("18:00:00.000Z, 19:30:00.000Z"), "interval": interval-time("09:35:28.039Z, 20:25:28.039Z"), "overlap": interval-time("18:00:00.000Z, 19:30:00.000Z") }
+, { "tbin": interval-time("18:00:00.000Z, 19:30:00.000Z"), "interval": interval-time("18:00:00.000Z, 20:00:00.000Z"), "overlap": interval-time("18:00:00.000Z, 19:30:00.000Z") }
+, { "tbin": interval-time("19:30:00.000Z, 21:00:00.000Z"), "interval": interval-time("09:35:28.039Z, 20:25:28.039Z"), "overlap": interval-time("19:30:00.000Z, 20:25:28.039Z") }
+, { "tbin": interval-time("19:30:00.000Z, 21:00:00.000Z"), "interval": interval-time("18:00:00.000Z, 20:00:00.000Z"), "overlap": interval-time("19:30:00.000Z, 20:00:00.000Z") }
+, { "tbin": interval-time("22:30:00.000Z, 00:00:00.000Z"), "interval": interval-time("23:22:38.000Z, 23:42:38.000Z"), "overlap": interval-time("23:22:38.000Z, 23:42:38.000Z") }
+, { "tbin": interval-time("22:30:00.000Z, 00:00:00.000Z"), "interval": interval-time("23:30:00.000Z, 23:32:00.000Z"), "overlap": interval-time("23:30:00.000Z, 23:32:00.000Z") }
+, { "tbin": interval-time("22:30:00.000Z, 00:00:00.000Z"), "interval": interval-time("23:49:23.938Z, 23:54:23.938Z"), "overlap": interval-time("23:49:23.938Z, 23:54:23.938Z") }
+, { "tbin": interval-time("22:30:00.000Z, 00:00:00.000Z"), "interval": interval-time("23:49:33.938Z, 23:50:03.938Z"), "overlap": interval-time("23:49:33.938Z, 23:50:03.938Z") }
+, { "tbin": interval-time("22:30:00.000Z, 00:00:00.000Z"), "interval": interval-time("23:58:17.038Z, 23:58:56.420Z"), "overlap": interval-time("23:58:17.038Z, 23:58:56.420Z") }
+ ]
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/4a9a7d99/asterix-app/src/test/resources/runtimets/results/temporal/overlap_bins_gby_1/overlap_bins_gby_1.1.adm
----------------------------------------------------------------------
diff --git a/asterix-app/src/test/resources/runtimets/results/temporal/overlap_bins_gby_1/overlap_bins_gby_1.1.adm b/asterix-app/src/test/resources/runtimets/results/temporal/overlap_bins_gby_1/overlap_bins_gby_1.1.adm
new file mode 100644
index 0000000..241859d
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/results/temporal/overlap_bins_gby_1/overlap_bins_gby_1.1.adm
@@ -0,0 +1,12 @@
+[ { "timebin": interval-time("00:00:00.000Z, 01:30:00.000Z"), "count": 1, "total_ms": 3600000 }
+, { "timebin": interval-time("07:30:00.000Z, 09:00:00.000Z"), "count": 1, "total_ms": 4236062 }
+, { "timebin": interval-time("09:00:00.000Z, 10:30:00.000Z"), "count": 2, "total_ms": 8671961 }
+, { "timebin": interval-time("10:30:00.000Z, 12:00:00.000Z"), "count": 2, "total_ms": 6563938 }
+, { "timebin": interval-time("12:00:00.000Z, 13:30:00.000Z"), "count": 2, "total_ms": 7836062 }
+, { "timebin": interval-time("13:30:00.000Z, 15:00:00.000Z"), "count": 2, "total_ms": 10800000 }
+, { "timebin": interval-time("15:00:00.000Z, 16:30:00.000Z"), "count": 2, "total_ms": 8363938 }
+, { "timebin": interval-time("16:30:00.000Z, 18:00:00.000Z"), "count": 2, "total_ms": 5419000 }
+, { "timebin": interval-time("18:00:00.000Z, 19:30:00.000Z"), "count": 2, "total_ms": 10800000 }
+, { "timebin": interval-time("19:30:00.000Z, 21:00:00.000Z"), "count": 2, "total_ms": 5128039 }
+, { "timebin": interval-time("22:30:00.000Z, 00:00:00.000Z"), "count": 5, "total_ms": 1689382 }
+ ]
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/4a9a7d99/asterix-app/src/test/resources/runtimets/results/temporal/overlap_bins_gby_3/overlap_bins_gby_3.1.adm
----------------------------------------------------------------------
diff --git a/asterix-app/src/test/resources/runtimets/results/temporal/overlap_bins_gby_3/overlap_bins_gby_3.1.adm b/asterix-app/src/test/resources/runtimets/results/temporal/overlap_bins_gby_3/overlap_bins_gby_3.1.adm
new file mode 100644
index 0000000..a972c4d
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/results/temporal/overlap_bins_gby_3/overlap_bins_gby_3.1.adm
@@ -0,0 +1,43 @@
+[ { "timebin": interval-time("10:27:00.000Z, 10:28:00.000Z"), "subgroups": [ { "subgid": null, "item_count": 0 }, { "subgid": "Email", "item_count": 2 }, { "subgid": "Facebook", "item_count": 2 } ] } 
+, { "timebin": interval-time("10:28:00.000Z, 10:29:00.000Z"), "subgroups": [ { "subgid": null, "item_count": 0 }, { "subgid": "Facebook", "item_count": 1 } ] }
+, { "timebin": interval-time("10:29:00.000Z, 10:30:00.000Z"), "subgroups": [ { "subgid": null, "item_count": 0 }, { "subgid": "Email", "item_count": 1 }, { "subgid": "Facebook", "item_count": 2 } ] }
+, { "timebin": interval-time("10:30:00.000Z, 10:31:00.000Z"), "subgroups": [ { "subgid": null, "item_count": 0 } ] }
+, { "timebin": interval-time("10:31:00.000Z, 10:32:00.000Z"), "subgroups": [ { "subgid": null, "item_count": 0 } ] }
+, { "timebin": interval-time("10:32:00.000Z, 10:33:00.000Z"), "subgroups": [ { "subgid": null, "item_count": 0 } ] }
+, { "timebin": interval-time("10:33:00.000Z, 10:34:00.000Z"), "subgroups": [ { "subgid": null, "item_count": 0 } ] }
+, { "timebin": interval-time("10:34:00.000Z, 10:35:00.000Z"), "subgroups": [ { "subgid": null, "item_count": 0 } ] }
+, { "timebin": interval-time("10:35:00.000Z, 10:36:00.000Z"), "subgroups": [ { "subgid": null, "item_count": 0 } ] }
+, { "timebin": interval-time("10:36:00.000Z, 10:37:00.000Z"), "subgroups": [ { "subgid": null, "item_count": 0 } ] }
+, { "timebin": interval-time("10:37:00.000Z, 10:38:00.000Z"), "subgroups": [ { "subgid": null, "item_count": 0 } ] }
+, { "timebin": interval-time("10:38:00.000Z, 10:39:00.000Z"), "subgroups": [ { "subgid": null, "item_count": 0 } ] }
+, { "timebin": interval-time("10:39:00.000Z, 10:40:00.000Z"), "subgroups": [ { "subgid": null, "item_count": 0 } ] }
+, { "timebin": interval-time("10:40:00.000Z, 10:41:00.000Z"), "subgroups": [ { "subgid": null, "item_count": 0 } ] }
+, { "timebin": interval-time("10:41:00.000Z, 10:42:00.000Z"), "subgroups": [ { "subgid": null, "item_count": 0 } ] }
+, { "timebin": interval-time("10:42:00.000Z, 10:43:00.000Z"), "subgroups": [ { "subgid": null, "item_count": 0 } ] }
+, { "timebin": interval-time("10:43:00.000Z, 10:44:00.000Z"), "subgroups": [ { "subgid": null, "item_count": 0 } ] }
+, { "timebin": interval-time("10:44:00.000Z, 10:45:00.000Z"), "subgroups": [ { "subgid": null, "item_count": 0 } ] }
+, { "timebin": interval-time("10:45:00.000Z, 10:46:00.000Z"), "subgroups": [ { "subgid": null, "item_count": 0 } ] }
+, { "timebin": interval-time("10:46:00.000Z, 10:47:00.000Z"), "subgroups": [ { "subgid": null, "item_count": 0 } ] }
+, { "timebin": interval-time("10:47:00.000Z, 10:48:00.000Z"), "subgroups": [ { "subgid": null, "item_count": 0 } ] }
+, { "timebin": interval-time("10:48:00.000Z, 10:49:00.000Z"), "subgroups": [ { "subgid": null, "item_count": 0 } ] }
+, { "timebin": interval-time("10:49:00.000Z, 10:50:00.000Z"), "subgroups": [ { "subgid": null, "item_count": 0 } ] }
+, { "timebin": interval-time("10:50:00.000Z, 10:51:00.000Z"), "subgroups": [ { "subgid": null, "item_count": 0 } ] }
+, { "timebin": interval-time("10:51:00.000Z, 10:52:00.000Z"), "subgroups": [ { "subgid": null, "item_count": 0 } ] }
+, { "timebin": interval-time("10:52:00.000Z, 10:53:00.000Z"), "subgroups": [ { "subgid": null, "item_count": 0 } ] }
+, { "timebin": interval-time("10:53:00.000Z, 10:54:00.000Z"), "subgroups": [ { "subgid": null, "item_count": 0 } ] }
+, { "timebin": interval-time("10:54:00.000Z, 10:55:00.000Z"), "subgroups": [ { "subgid": null, "item_count": 0 } ] }
+, { "timebin": interval-time("10:55:00.000Z, 10:56:00.000Z"), "subgroups": [ { "subgid": null, "item_count": 0 } ] }
+, { "timebin": interval-time("10:56:00.000Z, 10:57:00.000Z"), "subgroups": [ { "subgid": null, "item_count": 0 } ] }
+, { "timebin": interval-time("10:57:00.000Z, 10:58:00.000Z"), "subgroups": [ { "subgid": null, "item_count": 0 } ] }
+, { "timebin": interval-time("10:58:00.000Z, 10:59:00.000Z"), "subgroups": [ { "subgid": null, "item_count": 0 } ] }
+, { "timebin": interval-time("10:59:00.000Z, 11:00:00.000Z"), "subgroups": [ { "subgid": null, "item_count": 0 } ] }
+, { "timebin": interval-time("11:00:00.000Z, 11:01:00.000Z"), "subgroups": [ { "subgid": null, "item_count": 0 } ] }
+, { "timebin": interval-time("11:01:00.000Z, 11:02:00.000Z"), "subgroups": [ { "subgid": null, "item_count": 0 } ] }
+, { "timebin": interval-time("11:02:00.000Z, 11:03:00.000Z"), "subgroups": [ { "subgid": null, "item_count": 0 } ] }
+, { "timebin": interval-time("11:03:00.000Z, 11:04:00.000Z"), "subgroups": [ { "subgid": null, "item_count": 0 } ] }
+, { "timebin": interval-time("11:04:00.000Z, 11:05:00.000Z"), "subgroups": [ { "subgid": null, "item_count": 0 } ] }
+, { "timebin": interval-time("11:05:00.000Z, 11:06:00.000Z"), "subgroups": [ { "subgid": null, "item_count": 0 } ] }
+, { "timebin": interval-time("11:06:00.000Z, 11:07:00.000Z"), "subgroups": [ { "subgid": null, "item_count": 0 } ] }
+, { "timebin": interval-time("11:07:00.000Z, 11:08:00.000Z"), "subgroups": [ { "subgid": null, "item_count": 0 }, { "subgid": "Email", "item_count": 2 } ] }
+, { "timebin": interval-time("11:08:00.000Z, 11:09:00.000Z"), "subgroups": [ { "subgid": null, "item_count": 0 } ] }
+ ]
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/4a9a7d99/asterix-app/src/test/resources/runtimets/testsuite.xml
----------------------------------------------------------------------
diff --git a/asterix-app/src/test/resources/runtimets/testsuite.xml b/asterix-app/src/test/resources/runtimets/testsuite.xml
index a22eb35..b571514 100644
--- a/asterix-app/src/test/resources/runtimets/testsuite.xml
+++ b/asterix-app/src/test/resources/runtimets/testsuite.xml
@@ -6135,6 +6135,41 @@
     </test-group>
     <test-group name="temporal">
         <test-case FilePath="temporal">
+            <compilation-unit name="overlap_bins_gby_3">
+                <output-dir compare="Text">overlap_bins_gby_3</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="temporal">
+            <compilation-unit name="agg_01">
+                <output-dir compare="Text">agg_01</output-dir>
+            </compilation-unit>
+        </test-case>
+       <test-case FilePath="temporal">
+            <compilation-unit name="overlap_bins_gby_1">
+                <output-dir compare="Text">overlap_bins_gby_1</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="temporal">
+            <compilation-unit name="duration_functions">
+                <output-dir compare="Text">duration_functions</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="temporal">
+            <compilation-unit name="overlap_bins_gby_0">
+                <output-dir compare="Text">overlap_bins_gby_0</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="temporal">
+            <compilation-unit name="get_overlapping_interval">
+                <output-dir compare="Text">get_overlapping_interval</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="temporal">
+            <compilation-unit name="overlap_bins">
+                <output-dir compare="Text">overlap_bins</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="temporal">
             <compilation-unit name="parse_02">
                 <output-dir compare="Text">parse_02</output-dir>
             </compilation-unit>
@@ -6627,5 +6662,4 @@
             </compilation-unit>
         </test-case>
     </test-group>
-
 </test-suite>


Mime
View raw message