You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@asterixdb.apache.org by pr...@apache.org on 2016/02/03 17:34:10 UTC

[1/4] incubator-asterixdb git commit: ASTERIXDB-1281 - Interval format update to AQL and ADM

Repository: incubator-asterixdb
Updated Branches:
  refs/heads/master 9dcba3c9f -> d434b50f8


http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/d434b50f/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/constructors/AIntervalFromTimeConstructorDescriptor.java
----------------------------------------------------------------------
diff --git a/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/constructors/AIntervalFromTimeConstructorDescriptor.java b/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/constructors/AIntervalFromTimeConstructorDescriptor.java
deleted file mode 100644
index 25bc7df..0000000
--- a/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/constructors/AIntervalFromTimeConstructorDescriptor.java
+++ /dev/null
@@ -1,165 +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.runtime.evaluators.constructors;
-
-import java.io.DataOutput;
-import java.io.IOException;
-
-import org.apache.asterix.dataflow.data.nontagged.serde.ATimeSerializerDeserializer;
-import org.apache.asterix.formats.nontagged.AqlSerializerDeserializerProvider;
-import org.apache.asterix.om.base.AInterval;
-import org.apache.asterix.om.base.AMutableInterval;
-import org.apache.asterix.om.base.ANull;
-import org.apache.asterix.om.base.temporal.ATimeParserFactory;
-import org.apache.asterix.om.base.temporal.GregorianCalendarSystem;
-import org.apache.asterix.om.functions.AsterixBuiltinFunctions;
-import org.apache.asterix.om.functions.IFunctionDescriptor;
-import org.apache.asterix.om.functions.IFunctionDescriptorFactory;
-import org.apache.asterix.om.types.ATypeTag;
-import org.apache.asterix.om.types.BuiltinType;
-import org.apache.asterix.om.types.EnumDeserializer;
-import org.apache.asterix.runtime.evaluators.base.AbstractScalarFunctionDynamicDescriptor;
-import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
-import org.apache.hyracks.algebricks.core.algebra.functions.FunctionIdentifier;
-import org.apache.hyracks.algebricks.runtime.base.ICopyEvaluator;
-import org.apache.hyracks.algebricks.runtime.base.ICopyEvaluatorFactory;
-import org.apache.hyracks.api.dataflow.value.ISerializerDeserializer;
-import org.apache.hyracks.data.std.api.IDataOutputProvider;
-import org.apache.hyracks.data.std.primitive.UTF8StringPointable;
-import org.apache.hyracks.data.std.util.ArrayBackedValueStorage;
-import org.apache.hyracks.dataflow.common.data.accessors.IFrameTupleReference;
-
-public class AIntervalFromTimeConstructorDescriptor extends AbstractScalarFunctionDynamicDescriptor {
-    private static final long serialVersionUID = 1L;
-    public final static FunctionIdentifier FID = AsterixBuiltinFunctions.INTERVAL_CONSTRUCTOR_TIME;
-    public static final IFunctionDescriptorFactory FACTORY = new IFunctionDescriptorFactory() {
-        @Override
-        public IFunctionDescriptor createFunctionDescriptor() {
-            return new AIntervalFromTimeConstructorDescriptor();
-        }
-    };
-
-    @Override
-    public ICopyEvaluatorFactory createEvaluatorFactory(final ICopyEvaluatorFactory[] args) {
-        return new ICopyEvaluatorFactory() {
-            private static final long serialVersionUID = 1L;
-
-            @Override
-            public ICopyEvaluator createEvaluator(final IDataOutputProvider output) throws AlgebricksException {
-                return new ICopyEvaluator() {
-
-                    private DataOutput out = output.getDataOutput();
-
-                    private ArrayBackedValueStorage argOut0 = new ArrayBackedValueStorage();
-                    private ArrayBackedValueStorage argOut1 = new ArrayBackedValueStorage();
-                    private ICopyEvaluator eval0 = args[0].createEvaluator(argOut0);
-                    private ICopyEvaluator eval1 = args[1].createEvaluator(argOut1);
-                    private String errorMessage = "This can not be an instance of interval (from Date)";
-                    //TODO: Where to move and fix these?
-                    private AMutableInterval aInterval = new AMutableInterval(0L, 0L, (byte) 0);
-                    @SuppressWarnings("unchecked")
-                    private ISerializerDeserializer<AInterval> intervalSerde = AqlSerializerDeserializerProvider.INSTANCE
-                            .getSerializerDeserializer(BuiltinType.AINTERVAL);
-                    @SuppressWarnings("unchecked")
-                    private ISerializerDeserializer<ANull> nullSerde = AqlSerializerDeserializerProvider.INSTANCE
-                            .getSerializerDeserializer(BuiltinType.ANULL);
-                    private final UTF8StringPointable utf8Ptr = new UTF8StringPointable();
-
-                    @Override
-                    public void evaluate(IFrameTupleReference tuple) throws AlgebricksException {
-
-                        argOut0.reset();
-                        argOut1.reset();
-                        eval0.evaluate(tuple);
-                        eval1.evaluate(tuple);
-
-                        try {
-
-                            if (argOut0.getByteArray()[0] == ATypeTag.SERIALIZED_NULL_TYPE_TAG
-                                    || argOut1.getByteArray()[0] == ATypeTag.SERIALIZED_NULL_TYPE_TAG) {
-                                nullSerde.serialize(ANull.NULL, out);
-                                return;
-                            }
-
-                            long intervalStart = 0, intervalEnd = 0;
-
-                            if (argOut0.getByteArray()[0] == ATypeTag.SERIALIZED_TIME_TYPE_TAG) {
-                                intervalStart = ATimeSerializerDeserializer.getChronon(argOut0.getByteArray(), 1);
-                            } else if (argOut0.getByteArray()[0] == ATypeTag.SERIALIZED_STRING_TYPE_TAG) {
-                                utf8Ptr.set(argOut0.getByteArray(), 1, argOut0.getLength() - 1);
-                                // start date
-                                int stringLength = utf8Ptr.getUTF8Length();
-
-                                intervalStart = ATimeParserFactory.parseTimePart(utf8Ptr.getByteArray(),
-                                        utf8Ptr.getCharStartOffset(), stringLength);
-                            } else {
-                                throw new AlgebricksException(FID.getName()
-                                        + ": expects NULL/STRING/TIME for the first argument, but got "
-                                        + EnumDeserializer.ATYPETAGDESERIALIZER.deserialize(argOut0.getByteArray()[0]));
-                            }
-
-                            if (intervalStart < 0) {
-                                intervalStart += GregorianCalendarSystem.CHRONON_OF_DAY;
-                            }
-
-                            if (argOut1.getByteArray()[0] == ATypeTag.SERIALIZED_TIME_TYPE_TAG) {
-                                intervalEnd = ATimeSerializerDeserializer.getChronon(argOut1.getByteArray(), 1);
-                            } else if (argOut1.getByteArray()[0] == ATypeTag.SERIALIZED_STRING_TYPE_TAG) {
-                                utf8Ptr.set(argOut1.getByteArray(), 1, argOut1.getLength() - 1);
-                                // start date
-                                int stringLength = utf8Ptr.getUTF8Length();
-
-                                intervalEnd = ATimeParserFactory.parseTimePart(argOut1.getByteArray(),
-                                        utf8Ptr.getCharStartOffset(), stringLength);
-
-                            } else {
-                                throw new AlgebricksException(FID.getName()
-                                        + ": expects NULL/STRING/TIME for the second argument, but got "
-                                        + EnumDeserializer.ATYPETAGDESERIALIZER.deserialize(argOut1.getByteArray()[0]));
-                            }
-
-                            if (intervalEnd < 0) {
-                                intervalEnd += GregorianCalendarSystem.CHRONON_OF_DAY;
-                            }
-
-                            if (intervalEnd < intervalStart) {
-                                throw new AlgebricksException(
-                                        FID.getName() + ": interval end must not be less than the interval start.");
-                            }
-
-                            aInterval.setValue(intervalStart, intervalEnd, ATypeTag.SERIALIZED_TIME_TYPE_TAG);
-                            intervalSerde.serialize(aInterval, out);
-
-                        } catch (IOException e1) {
-                            throw new AlgebricksException(errorMessage);
-                        } catch (Exception e2) {
-                            throw new AlgebricksException(e2);
-                        }
-                    }
-                };
-            }
-        };
-    }
-
-    @Override
-    public FunctionIdentifier getIdentifier() {
-        return FID;
-    }
-
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/d434b50f/asterix-runtime/src/main/java/org/apache/asterix/runtime/formats/NonTaggedDataFormat.java
----------------------------------------------------------------------
diff --git a/asterix-runtime/src/main/java/org/apache/asterix/runtime/formats/NonTaggedDataFormat.java b/asterix-runtime/src/main/java/org/apache/asterix/runtime/formats/NonTaggedDataFormat.java
index 715bba7..27dadfc 100644
--- a/asterix-runtime/src/main/java/org/apache/asterix/runtime/formats/NonTaggedDataFormat.java
+++ b/asterix-runtime/src/main/java/org/apache/asterix/runtime/formats/NonTaggedDataFormat.java
@@ -150,9 +150,7 @@ import org.apache.asterix.runtime.evaluators.constructors.AInt16ConstructorDescr
 import org.apache.asterix.runtime.evaluators.constructors.AInt32ConstructorDescriptor;
 import org.apache.asterix.runtime.evaluators.constructors.AInt64ConstructorDescriptor;
 import org.apache.asterix.runtime.evaluators.constructors.AInt8ConstructorDescriptor;
-import org.apache.asterix.runtime.evaluators.constructors.AIntervalFromDateConstructorDescriptor;
-import org.apache.asterix.runtime.evaluators.constructors.AIntervalFromDateTimeConstructorDescriptor;
-import org.apache.asterix.runtime.evaluators.constructors.AIntervalFromTimeConstructorDescriptor;
+import org.apache.asterix.runtime.evaluators.constructors.AIntervalConstructorDescriptor;
 import org.apache.asterix.runtime.evaluators.constructors.AIntervalStartFromDateConstructorDescriptor;
 import org.apache.asterix.runtime.evaluators.constructors.AIntervalStartFromDateTimeConstructorDescriptor;
 import org.apache.asterix.runtime.evaluators.constructors.AIntervalStartFromTimeConstructorDescriptor;
@@ -605,9 +603,7 @@ public class NonTaggedDataFormat implements IDataFormat {
         temp.add(DurationFromIntervalDescriptor.FACTORY);
 
         // Interval constructor
-        temp.add(AIntervalFromDateConstructorDescriptor.FACTORY);
-        temp.add(AIntervalFromTimeConstructorDescriptor.FACTORY);
-        temp.add(AIntervalFromDateTimeConstructorDescriptor.FACTORY);
+        temp.add(AIntervalConstructorDescriptor.FACTORY);
         temp.add(AIntervalStartFromDateConstructorDescriptor.FACTORY);
         temp.add(AIntervalStartFromDateTimeConstructorDescriptor.FACTORY);
         temp.add(AIntervalStartFromTimeConstructorDescriptor.FACTORY);
@@ -866,8 +862,9 @@ public class NonTaggedDataFormat implements IDataFormat {
 
         functionTypeInferers.put(AsterixBuiltinFunctions.DEEP_EQUAL, new FunctionTypeInferer() {
 
-            @Override public void infer(ILogicalExpression expr, IFunctionDescriptor fd,
-                    IVariableTypeEnvironment context) throws AlgebricksException {
+            @Override
+            public void infer(ILogicalExpression expr, IFunctionDescriptor fd, IVariableTypeEnvironment context)
+                    throws AlgebricksException {
                 AbstractFunctionCallExpression f = (AbstractFunctionCallExpression) expr;
                 IAType type0 = (IAType) context.getType(f.getArguments().get(0).getValue());
                 IAType type1 = (IAType) context.getType(f.getArguments().get(1).getValue());
@@ -877,8 +874,9 @@ public class NonTaggedDataFormat implements IDataFormat {
 
         functionTypeInferers.put(AsterixBuiltinFunctions.ADD_FIELDS, new FunctionTypeInferer() {
 
-            @Override public void infer(ILogicalExpression expr, IFunctionDescriptor fd,
-                    IVariableTypeEnvironment context) throws AlgebricksException {
+            @Override
+            public void infer(ILogicalExpression expr, IFunctionDescriptor fd, IVariableTypeEnvironment context)
+                    throws AlgebricksException {
                 AbstractFunctionCallExpression f = (AbstractFunctionCallExpression) expr;
                 IAType outType = (IAType) context.getType(expr);
                 IAType type0 = (IAType) context.getType(f.getArguments().get(0).getValue());
@@ -896,8 +894,9 @@ public class NonTaggedDataFormat implements IDataFormat {
 
         functionTypeInferers.put(AsterixBuiltinFunctions.REMOVE_FIELDS, new FunctionTypeInferer() {
 
-            @Override public void infer(ILogicalExpression expr, IFunctionDescriptor fd,
-                    IVariableTypeEnvironment context) throws AlgebricksException {
+            @Override
+            public void infer(ILogicalExpression expr, IFunctionDescriptor fd, IVariableTypeEnvironment context)
+                    throws AlgebricksException {
                 AbstractFunctionCallExpression f = (AbstractFunctionCallExpression) expr;
                 IAType outType = (IAType) context.getType(expr);
                 IAType type0 = (IAType) context.getType(f.getArguments().get(0).getValue());


[4/4] incubator-asterixdb git commit: ASTERIXDB-1281 - Interval format update to AQL and ADM

Posted by pr...@apache.org.
ASTERIXDB-1281 - Interval format update to AQL and ADM

The new interval format takes a more generic approach to representing intervals.
Here is an example for a date interval:

interval(date("2012-01-01”), date(”2013-04-01”))

Note that the interval type is defined by the arguments to the interval expression.
Currently only date, time, and datetime types are supported for intervals. The new
format is used for ADM and AQL.

In addition to the format change, the internal byte structure of an interval has been
updated. The format looks like the following:

byte tag, T start, T end (where T is a date, time or datetime type)

Note how the tag has been moved to the front. Also with the new sturcture, an
interval is variable length, not fixed length as before.

Change-Id: I009c71b7a445d141e228ba15d56d0b6cf3c8a3f5
Reviewed-on: https://asterix-gerrit.ics.uci.edu/602
Tested-by: Jenkins <je...@fulliautomatix.ics.uci.edu>
Reviewed-by: Till Westmann <ti...@apache.org>


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

Branch: refs/heads/master
Commit: d434b50f8881cd32b5e95e93a7a856f8bff8509e
Parents: 9dcba3c
Author: Preston Carman <pr...@apache.org>
Authored: Tue Feb 2 20:36:22 2016 -0800
Committer: Preston Carman <pr...@apache.org>
Committed: Wed Feb 3 08:28:18 2016 -0800

----------------------------------------------------------------------
 asterix-app/data/temporal/simpletemp_30.json    |   6 +-
 asterix-app/data/temporal/temporalData.json     |   6 +-
 .../interval_order/interval_order.3.query.aql   |  14 +-
 .../interval_order/interval_order.4.query.aql   |  14 +-
 .../issue363_equality.3.query.aql               |  26 +-
 .../issue363_inequality_interval.3.query.aql    |   6 +-
 .../constructor/interval/interval.3.query.aql   |  29 +-
 .../accessors_interval.3.query.aql              |   6 +-
 .../duration_functions.3.query.aql              |   6 +-
 .../get_overlapping_interval.3.query.aql        |  12 +-
 .../interval_functions.3.query.aql              |  28 +-
 .../overlap_bins/overlap_bins.3.query.aql       |   6 +-
 .../overlap_bins_gby_3.3.query.aql              |   2 +-
 .../issue363_equality.3.query.sqlpp             |  19 +-
 .../issue363_inequality_interval.3.query.sqlpp  |   5 +-
 .../constructor/interval/interval.3.query.sqlpp |  28 +-
 .../accessors_interval.3.query.sqlpp            |   7 +-
 .../duration_functions.3.query.sqlpp            |   4 +-
 .../get_overlapping_interval.3.query.sqlpp      |   7 +-
 .../interval_functions.3.query.sqlpp            |  28 +-
 .../overlap_bins/overlap_bins.3.query.sqlpp     |   5 +-
 .../overlap_bins_gby_3.3.query.sqlpp            |   2 +-
 .../interval_order/interval_order.3.adm         |  14 +-
 .../interval_order/interval_order.4.adm         |  14 +-
 .../results/constructor/interval/interval.1.adm |   2 +-
 .../get_overlapping_interval.1.adm              |   2 +-
 .../insert_from_ext_ds/insert_from_ext_ds.1.adm |   6 +-
 .../insert_from_ext_ds_2.1.adm                  |   6 +-
 .../temporal/interval_bin/interval_bin.1.adm    |   2 +-
 .../interval_bin_gby_0/interval_bin_gby_0.1.adm |   8 +-
 .../interval_bin_gby_1/interval_bin_gby_1.1.adm |  16 +-
 .../temporal/overlap_bins/overlap_bins.1.adm    |   2 +-
 .../overlap_bins_gby_0/overlap_bins_gby_0.1.adm |  46 ++--
 .../overlap_bins_gby_1/overlap_bins_gby_1.1.adm |  22 +-
 .../overlap_bins_gby_3/overlap_bins_gby_3.1.adm |  84 +++---
 .../issue363_equality/issue363_equality.3.ast   |   8 +-
 .../issue363_inequality_interval.3.ast          |  16 +-
 .../constructor/interval/interval.3.ast         | 274 +++++++------------
 .../accessors_interval/accessors_interval.3.ast |  38 ++-
 .../duration_functions/duration_functions.3.ast |  32 ++-
 .../get_overlapping_interval.3.ast              |  26 +-
 .../interval_functions/interval_functions.3.ast | 142 +++++++---
 .../temporal/overlap_bins/overlap_bins.3.ast    |   6 +-
 .../overlap_bins_gby_3/overlap_bins_gby_3.3.ast |   2 +-
 .../src/test/resources/runtimets/testsuite.xml  |   5 -
 .../resources/runtimets/testsuite_sqlpp.xml     |   7 +-
 .../runtimets/testsuite_sqlpp_parser.xml        |   7 +-
 asterix-doc/src/site/markdown/aql/allens.md     | 100 +++----
 asterix-doc/src/site/markdown/aql/datamodel.md  |   8 +-
 asterix-doc/src/site/markdown/aql/functions.md  | 105 ++-----
 .../asterix/external/parser/ADMDataParser.java  | 149 +++++++---
 .../external/parser/AbstractDataParser.java     | 104 +------
 .../src/main/resources/adm.grammar              |   4 +-
 .../operator/file/ADMDataParserTest.java        |  72 ++---
 ...tervalAscPartialBinaryComparatorFactory.java |  19 +-
 ...ervalDescPartialBinaryComparatorFactory.java |  19 +-
 .../printers/adm/AIntervalPrinter.java          |  49 ++--
 .../printers/json/clean/AIntervalPrinter.java   |  47 ++--
 .../json/lossless/AIntervalPrinter.java         |  47 ++--
 .../serde/AIntervalSerializerDeserializer.java  |  96 +++++--
 .../AOrderedListSerializerDeserializer.java     |  32 +--
 .../AUnorderedListSerializerDeserializer.java   |  32 +--
 .../om/functions/AsterixBuiltinFunctions.java   |  12 +-
 .../om/pointables/AListVisitablePointable.java  |  16 +-
 .../printer/json/clean/APrintVisitor.java       |   5 +
 .../printer/json/lossless/APrintVisitor.java    |   5 +
 .../asterix/om/util/NonTaggedFormatUtil.java    |  24 +-
 .../AIntervalConstructorDescriptor.java         | 154 +++++++++++
 .../AIntervalFromDateConstructorDescriptor.java | 154 -----------
 ...tervalFromDateTimeConstructorDescriptor.java | 181 ------------
 .../AIntervalFromTimeConstructorDescriptor.java | 165 -----------
 .../runtime/formats/NonTaggedDataFormat.java    |  23 +-
 72 files changed, 1152 insertions(+), 1523 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/d434b50f/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 dcc9d8c..fe3406a 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("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") }
+{ "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"), date("9656-06-03")), "time-interval": interval(time("12:04:45.689Z"), time("12:41:59.002Z")), "datetime-interval": interval(datetime("-2640-10-11T17:32:15.675Z"), datetime("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"), date("4925-05-03")), "time-interval": interval(time("12:10:45.169Z"), time("15:37:48.736Z")), "datetime-interval": interval(datetime("0534-12-08T08:20:31.487Z"), datetime("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"), date("3337-08-26")), "time-interval": interval(time("04:16:42.321Z"), time("12:22:56.816Z")), "datetime-interval": interval(datetime("2129-12-12T13:18:35.758Z"), datetime("8647-07-01T13:10:19.691Z")) }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/d434b50f/asterix-app/data/temporal/temporalData.json
----------------------------------------------------------------------
diff --git a/asterix-app/data/temporal/temporalData.json b/asterix-app/data/temporal/temporalData.json
index bedf2c7..6d662f9 100644
--- a/asterix-app/data/temporal/temporalData.json
+++ b/asterix-app/data/temporal/temporalData.json
@@ -1,4 +1,4 @@
-{"id": "001", "dateField": date("-2012-12-12"), "dateFieldPlus": date("0990-01-01"), "timeField": time("23:49:12.39Z"), "timeFieldPlus": time("03:23:12.2"), "datetimeField": datetime("2012-12-12T00:00:00.001"), "datetimeFieldPlus": datetime("-00130810T221015398"), "durationField": duration("P20Y19DT3H74M23.34S"), "durationFieldPlus": duration("-P2MT4M300.68S"), "intervalField": interval-datetime("2012-12-12T00:00:00.001,20130810T221015398") }
-{"id": "002", "timeField": time("12:12:12.219+08:00"), "timeField2": time("13:13:13.321-08:00"), "datetimeField": datetime("19201220T232918478-1200"), "intervalField": interval-time("12:29:30+08:00, 235959999-0800") }
-{"id": "003", "durationField": duration("-P27Y48DT2400H"), "datetimeField": datetime("-0290-03-23T00:59:48.999+07:00"), "intervalField": interval-date("-2012-03-17, 2013-04-01"), "intervalPlus": interval-time("19:23:32.328Z,23:20:20") }
+{"id": "001", "dateField": date("-2012-12-12"), "dateFieldPlus": date("0990-01-01"), "timeField": time("23:49:12.39Z"), "timeFieldPlus": time("03:23:12.2"), "datetimeField": datetime("2012-12-12T00:00:00.001"), "datetimeFieldPlus": datetime("-00130810T221015398"), "durationField": duration("P20Y19DT3H74M23.34S"), "durationFieldPlus": duration("-P2MT4M300.68S"), "intervalField": interval(datetime("2012-12-12T00:00:00.001"),datetime("20130810T221015398")) }
+{"id": "002", "timeField": time("12:12:12.219+08:00"), "timeField2": time("13:13:13.321-08:00"), "datetimeField": datetime("19201220T232918478-1200"), "intervalField": interval(time("12:29:30+08:00"), time("235959999-0800")) }
+{"id": "003", "durationField": duration("-P27Y48DT2400H"), "datetimeField": datetime("-0290-03-23T00:59:48.999+07:00"), "intervalField": interval(date("-2012-03-17"), date("2013-04-01")), "intervalPlus": interval(time("19:23:32.328Z"), time("23:20:20")) }
 {"id": "003", "dayTimeDurationField": day-time-duration("-P48DT2400H"), "yearMonthDurationField": year-month-duration("P27Y50M") }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/d434b50f/asterix-app/src/test/resources/runtimets/queries/comparison/interval_order/interval_order.3.query.aql
----------------------------------------------------------------------
diff --git a/asterix-app/src/test/resources/runtimets/queries/comparison/interval_order/interval_order.3.query.aql b/asterix-app/src/test/resources/runtimets/queries/comparison/interval_order/interval_order.3.query.aql
index 8ccca18..23b820c 100644
--- a/asterix-app/src/test/resources/runtimets/queries/comparison/interval_order/interval_order.3.query.aql
+++ b/asterix-app/src/test/resources/runtimets/queries/comparison/interval_order/interval_order.3.query.aql
@@ -18,13 +18,13 @@
  */
 use dataverse test;
 
-let $id1 := interval-from-date("2002-01-01", "2003-01-01")
-let $id2 := interval-from-date("2006-01-01", "2010-01-01")
-let $id3 := interval-from-date("2001-01-01", "2010-01-01")
-let $id4 := interval-from-date("2003-01-01", "2008-01-01")
-let $id5 := interval-from-date("2002-01-01", "2010-01-01")
-let $id6 := interval-from-date("2004-01-01", "2009-01-01")
-let $id7 := interval-from-date("2003-01-01", "2008-01-01")
+let $id1 := interval(date("2002-01-01"), date("2003-01-01"))
+let $id2 := interval(date("2006-01-01"), date("2010-01-01"))
+let $id3 := interval(date("2001-01-01"), date("2010-01-01"))
+let $id4 := interval(date("2003-01-01"), date("2008-01-01"))
+let $id5 := interval(date("2002-01-01"), date("2010-01-01"))
+let $id6 := interval(date("2004-01-01"), date("2009-01-01"))
+let $id7 := interval(date("2003-01-01"), date("2008-01-01"))
 
 for $id in [$id1, $id2, $id3, $id4, $id5, $id6, $id7]
 order by $id

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/d434b50f/asterix-app/src/test/resources/runtimets/queries/comparison/interval_order/interval_order.4.query.aql
----------------------------------------------------------------------
diff --git a/asterix-app/src/test/resources/runtimets/queries/comparison/interval_order/interval_order.4.query.aql b/asterix-app/src/test/resources/runtimets/queries/comparison/interval_order/interval_order.4.query.aql
index e0d9410..b16313e 100644
--- a/asterix-app/src/test/resources/runtimets/queries/comparison/interval_order/interval_order.4.query.aql
+++ b/asterix-app/src/test/resources/runtimets/queries/comparison/interval_order/interval_order.4.query.aql
@@ -18,13 +18,13 @@
  */
 use dataverse test;
 
-let $id1 := interval-from-date("2002-01-01", "2003-01-01")
-let $id2 := interval-from-date("2006-01-01", "2010-01-01")
-let $id3 := interval-from-date("2001-01-01", "2010-01-01")
-let $id4 := interval-from-date("2003-01-01", "2008-01-01")
-let $id5 := interval-from-date("2002-01-01", "2010-01-01")
-let $id6 := interval-from-date("2004-01-01", "2009-01-01")
-let $id7 := interval-from-date("2003-01-01", "2008-01-01")
+let $id1 := interval(date("2002-01-01"), date("2003-01-01"))
+let $id2 := interval(date("2006-01-01"), date("2010-01-01"))
+let $id3 := interval(date("2001-01-01"), date("2010-01-01"))
+let $id4 := interval(date("2003-01-01"), date("2008-01-01"))
+let $id5 := interval(date("2002-01-01"), date("2010-01-01"))
+let $id6 := interval(date("2004-01-01"), date("2009-01-01"))
+let $id7 := interval(date("2003-01-01"), date("2008-01-01"))
 
 for $id in [$id1, $id2, $id3, $id4, $id5, $id6, $id7]
 order by $id desc

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/d434b50f/asterix-app/src/test/resources/runtimets/queries/comparison/issue363_equality/issue363_equality.3.query.aql
----------------------------------------------------------------------
diff --git a/asterix-app/src/test/resources/runtimets/queries/comparison/issue363_equality/issue363_equality.3.query.aql b/asterix-app/src/test/resources/runtimets/queries/comparison/issue363_equality/issue363_equality.3.query.aql
index 037ce47..b6564eb 100644
--- a/asterix-app/src/test/resources/runtimets/queries/comparison/issue363_equality/issue363_equality.3.query.aql
+++ b/asterix-app/src/test/resources/runtimets/queries/comparison/issue363_equality/issue363_equality.3.query.aql
@@ -31,7 +31,7 @@ let $v5 := line("10.1234,11.1e-1 +10.2E-2,-11.22")
 let $v6 := polygon("-1.0,+10.5e2 -02.15E+50,2.5 -1.0,+3.3e3 -2.50E+05,20.15 +3.5e+2,03.6 -4.60E-3,+4.75 -2,+1.0e2 -2.00E+5,20.10 30.5,03.25 -4.33E-3,+4.75")
 let $v7 := circle("0.1234,-1.00e-10 +10.5E-2")
 let $v8 := rectangle("0.1234,-1.00e-10 5.5487,0.48765")
-let $v9 := interval-from-datetime(datetime("-1987-11-19T02:43:57.938+08:00"), datetime("19991112T124935948-0700"))
+let $v9 := interval(datetime("-1987-11-19T02:43:57.938+08:00"), datetime("19991112T124935948-0700"))
 let $dv1 := duration("P3Y6M3DT9H5M2.348S")
 let $dv2 := year-month-duration("P3Y6M")
 let $dv3 := day-time-duration("P3DT9H5M2.348S")
@@ -40,7 +40,7 @@ let $dv5 := line("10.1234,11.1e-1 +10.2E-2,-11.22")
 let $dv6 := polygon("-1.0,+10.5e2 -02.15E+50,2.5 -1.0,+3.3e3 -2.50E+05,20.15 +3.5e+2,03.6 -4.60E-3,+4.75 -2,+1.0e2 -2.00E+5,20.10 30.5,03.25 -4.33E-3,+4.75")
 let $dv7 := circle("0.1234,-1.00e-10 +10.5E-2")
 let $dv8 := rectangle("0.1234,-1.00e-10 5.5487,0.48765")
-let $dv9 := interval-from-datetime(datetime("-1987-11-19T02:43:57.938+08:00"), datetime("19991112T124935948-0700"))
+let $dv9 := interval(datetime("-1987-11-19T02:43:57.938+08:00"), datetime("19991112T124935948-0700"))
 let $ndv1 := duration("P4Y6M3DT9H5M2.348S")
 let $ndv2 := year-month-duration("P3Y7M")
 let $ndv3 := day-time-duration("P3DT1H5M2.348S")
@@ -49,22 +49,22 @@ let $ndv5 := line("10.5678,11.1e-1 +10.2E-2,-11.22")
 let $ndv6 := polygon("-1.0,+10.5e2 -02.19E+50,2.5 -1.0,+3.3e3 -2.50E+05,20.15 +3.5e+2,03.6 -4.60E-3,+4.75 -2,+1.0e2 -2.00E+5,20.10 30.5,03.25 -4.33E-3,+4.75")
 let $ndv7 := circle("0.5678,-1.00e-10 +10.5E-2")
 let $ndv8 := rectangle("0.5678,-1.00e-10 5.5487,0.48765")
-let $ndv9 := interval-from-datetime(datetime("-1983-11-19T02:43:57.938+08:00"), datetime("19991112T124935948-0700"))
+let $ndv9 := interval(datetime("-1983-11-19T02:43:57.938+08:00"), datetime("19991112T124935948-0700"))
 
-return { "duration":  $v1 = $dv1, 
-"year-month-duration":  $v2 = $dv2, 
-"day-time-duration":  $v3 = $dv3, 
-"point": $v4 = $dv4, 
-"line": $v5 = $dv5, 
+return { "duration":  $v1 = $dv1,
+"year-month-duration":  $v2 = $dv2,
+"day-time-duration":  $v3 = $dv3,
+"point": $v4 = $dv4,
+"line": $v5 = $dv5,
 "polygon": $v6 = $dv6,
 "circle": $v7 = $dv7,
 "rectangle": $v8 = $dv8,
 "interval": $v9 = $dv9,
-"duration2":  $v1 != $ndv1, 
-"year-month-duration2": $v2 != $ndv2, 
-"day-time-duration2":  $v3 != $ndv3, 
-"point2": $v4 != $ndv4, 
-"line2": $v5 != $ndv5, 
+"duration2":  $v1 != $ndv1,
+"year-month-duration2": $v2 != $ndv2,
+"day-time-duration2":  $v3 != $ndv3,
+"point2": $v4 != $ndv4,
+"line2": $v5 != $ndv5,
 "polygon2": $v6 != $ndv6,
 "circle2": $v7 != $ndv7,
 "rectangle2": $v8 != $ndv8,

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/d434b50f/asterix-app/src/test/resources/runtimets/queries/comparison/issue363_inequality_interval/issue363_inequality_interval.3.query.aql
----------------------------------------------------------------------
diff --git a/asterix-app/src/test/resources/runtimets/queries/comparison/issue363_inequality_interval/issue363_inequality_interval.3.query.aql b/asterix-app/src/test/resources/runtimets/queries/comparison/issue363_inequality_interval/issue363_inequality_interval.3.query.aql
index bf20a2f..9d1a868 100644
--- a/asterix-app/src/test/resources/runtimets/queries/comparison/issue363_inequality_interval/issue363_inequality_interval.3.query.aql
+++ b/asterix-app/src/test/resources/runtimets/queries/comparison/issue363_inequality_interval/issue363_inequality_interval.3.query.aql
@@ -22,8 +22,8 @@
  * Date         : 9 May 2013
  * Issue        : 363
  */
- 
-let $v1 := interval-from-datetime(datetime("-1987-11-19T02:43:57.938+08:00"), datetime("19991112T124935948-0700"))
-let $dv1 := interval-from-datetime(datetime("-1983-11-19T02:43:57.938+08:00"), datetime("19991112T124935948-0700"))
+
+let $v1 := interval(datetime("-1987-11-19T02:43:57.938+08:00"), datetime("19991112T124935948-0700"))
+let $dv1 := interval(datetime("-1983-11-19T02:43:57.938+08:00"), datetime("19991112T124935948-0700"))
 
 return { "interval0":  $v1 > $dv1, "interval1": $dv1 < $v1, "interval2":  $v1 >= $dv1, "interval3": $dv1 <= $v1 }

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/d434b50f/asterix-app/src/test/resources/runtimets/queries/constructor/interval/interval.3.query.aql
----------------------------------------------------------------------
diff --git a/asterix-app/src/test/resources/runtimets/queries/constructor/interval/interval.3.query.aql b/asterix-app/src/test/resources/runtimets/queries/constructor/interval/interval.3.query.aql
index 2e1b6f6..b5eb998 100644
--- a/asterix-app/src/test/resources/runtimets/queries/constructor/interval/interval.3.query.aql
+++ b/asterix-app/src/test/resources/runtimets/queries/constructor/interval/interval.3.query.aql
@@ -19,24 +19,6 @@
 
 use dataverse test;
 
-let $itv11 := interval-from-date(date("2010-10-30"), date("2012-10-21"))
-let $itv12 := interval-from-date("2010-10-30", date("2012-10-21"))
-let $itv13 := interval-from-date(date("2010-10-30"), "2012-10-21")
-let $itv14 := interval-from-date("2010-10-30", "2012-10-21")
-let $itv15 := interval-from-date(null, "2012-10-21")
-let $itv16 := interval-from-date("2010-10-30", null)
-let $itv21 := interval-from-time(time("03:04:05.678-11:00"), time("232425267+0200"))
-let $itv22 := interval-from-time("03:04:05.678-11:00", time("232425267+0200"))
-let $itv23 := interval-from-time(time("03:04:05.678-11:00"), "232425267+0200")
-let $itv24 := interval-from-time("03:04:05.678-11:00", "232425267+0200")
-let $itv25 := interval-from-time(null, time("232425267+0200"))
-let $itv26 := interval-from-time(time("03:04:05.678-11:00"), null)
-let $itv31 := interval-from-datetime(datetime("-1987-11-19T02:43:57.938+08:00"), datetime("19991112T124935948-0700"))
-let $itv32 := interval-from-datetime("-1987-11-19T02:43:57.938+08:00", datetime("19991112T124935948-0700"))
-let $itv33 := interval-from-datetime(datetime("-1987-11-19T02:43:57.938+08:00"), "19991112T124935948-0700")
-let $itv34 := interval-from-datetime("-1987-11-19T02:43:57.938+08:00", "19991112T124935948-0700")
-let $itv35 := interval-from-datetime(null, datetime("19991112T124935948-0700"))
-let $itv36 := interval-from-datetime(datetime("-1987-11-19T02:43:57.938+08:00"), null)
 let $itv41 := interval-start-from-date(date("0001-12-27"), duration("P3Y394DT48H398.483S"))
 let $itv42 := interval-start-from-date("0001-12-27", duration("P3Y394DT48H398.483S"))
 let $itv43 := interval-start-from-date(date("0001-12-27"), "P3Y394DT48H398.483S")
@@ -55,6 +37,15 @@ let $itv63 := interval-start-from-datetime(datetime("-2043-11-19T15:32:39.293"),
 let $itv64 := interval-start-from-datetime("-2043-11-19T15:32:39.293", "P439Y3M20DT20H39M58.949S")
 let $itv65 := interval-start-from-datetime(null, duration("P439Y3M20DT20H39M58.949S"))
 let $itv66 := interval-start-from-datetime(datetime("-2043-11-19T15:32:39.293"), null)
+let $itv71 := interval(date("2010-10-30"), date("2012-10-21"))
+let $itv72 := interval(null, date("2012-10-21"))
+let $itv73 := interval(date("2010-10-30"), null)
+let $itv74 := interval(time("03:04:05.678-11:00"), time("232425267+0200"))
+let $itv75 := interval(null, time("232425267+0200"))
+let $itv76 := interval(time("03:04:05.678-11:00"), null)
+let $itv77 := interval(datetime("-1987-11-19T02:43:57.938+08:00"), datetime("19991112T124935948-0700"))
+let $itv78 := interval(null, datetime("19991112T124935948-0700"))
+let $itv79 := interval(datetime("-1987-11-19T02:43:57.938+08:00"), null)
 
-return {"interval11": $itv11, "interval12": $itv12, "interval13": $itv13, "interval14": $itv14, "interval15": $itv15, "interval16": $itv16, "interval21": $itv21, "interval22": $itv22, "interval23": $itv23, "interval24": $itv24, "interval25": $itv25, "interval26": $itv26, "interval31": $itv31, "interval32": $itv32, "interval33": $itv33, "interval34": $itv34, "interval35": $itv35, "interval36": $itv36, "interval41": $itv41, "interval42": $itv42, "interval43": $itv43, "interval44": $itv44, "interval45": $itv45, "interval46": $itv46, "interval51": $itv51, "interval52": $itv52, "interval53": $itv53, "interval54": $itv54, "interval55": $itv55, "interval56": $itv56, "interval61": $itv61, "interval62": $itv62, "interval63": $itv63, "interval64": $itv64, "interval65": $itv65, "interval66": $itv66}
+return {"interval41": $itv41, "interval42": $itv42, "interval43": $itv43, "interval44": $itv44, "interval45": $itv45, "interval46": $itv46, "interval51": $itv51, "interval52": $itv52, "interval53": $itv53, "interval54": $itv54, "interval55": $itv55, "interval56": $itv56, "interval61": $itv61, "interval62": $itv62, "interval63": $itv63, "interval64": $itv64, "interval65": $itv65, "interval66": $itv66, "interval71": $itv71, "interval72": $itv72, "interval73": $itv73, "interval74": $itv74, "interval75": $itv75, "interval76": $itv76, "interval77": $itv77, "interval78": $itv78, "interval79": $itv79}
 

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/d434b50f/asterix-app/src/test/resources/runtimets/queries/temporal/accessors_interval/accessors_interval.3.query.aql
----------------------------------------------------------------------
diff --git a/asterix-app/src/test/resources/runtimets/queries/temporal/accessors_interval/accessors_interval.3.query.aql b/asterix-app/src/test/resources/runtimets/queries/temporal/accessors_interval/accessors_interval.3.query.aql
index 78e97d9..7f9101e 100644
--- a/asterix-app/src/test/resources/runtimets/queries/temporal/accessors_interval/accessors_interval.3.query.aql
+++ b/asterix-app/src/test/resources/runtimets/queries/temporal/accessors_interval/accessors_interval.3.query.aql
@@ -18,8 +18,8 @@
  */
 use dataverse test;
 
-let $interval1 := interval-from-date(date("2010-10-30"), "2013-04-01")
-let $interval2 := interval-from-time("08:09:10.234Z", time("203040567+0800"))
-let $interval3 := interval-from-datetime("2009-09-01T00:00:00.000+08:00", datetime-from-date-time(date("2013-04-04"), time("00:00:00.000+08:00")))
+let $interval1 := interval(date("2010-10-30"), date("2013-04-01"))
+let $interval2 := interval(time("08:09:10.234Z"), time("203040567+0800"))
+let $interval3 := interval(datetime("2009-09-01T00:00:00.000+08:00"), datetime-from-date-time(date("2013-04-04"), time("00:00:00.000+08:00")))
 
 return {"start1": get-interval-start($interval1), "end1": get-interval-end($interval1), "start2": get-interval-start($interval2), "end2": get-interval-end($interval2), "start3": get-interval-start($interval3), "end3": get-interval-end($interval3) }

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/d434b50f/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
index 9b51407..e080b49 100644
--- 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
@@ -24,9 +24,9 @@
 
 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")
+let $itv1 := interval(date("2010-10-30"), date("2010-12-21"))
+let $itv2 := interval(datetime("2012-06-26T01:01:01.111"), datetime("2012-07-27T02:02:02.222"))
+let $itv3 := interval(time("12:32:38"), time("20:29:20"))
 
 return { "dr1" : duration-from-interval($itv1),
          "dr2" : duration-from-interval($itv2),

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/d434b50f/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
index bc410ca..57afc1d 100644
--- 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
@@ -21,9 +21,9 @@
  * 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")))  }
+{ "overlap1": get-overlapping-interval(interval(time("11:23:39"), time("18:27:19")), interval(time("12:23:39"), time("23:18:00"))),
+  "overlap2": get-overlapping-interval(interval(time("12:23:39"), time("18:27:19")), interval(time("07:19:39"), time("09:18:00"))),
+  "overlap3": get-overlapping-interval(interval(date("1980-11-30"), date("1999-09-09")), interval(date("2013-01-01"), date("2014-01-01"))),
+  "overlap4": get-overlapping-interval(interval(date("1980-11-30"), date("2099-09-09")), interval(date("2013-01-01"), date("2014-01-01"))),
+  "overlap5": get-overlapping-interval(interval(datetime("1844-03-03T11:19:39"), datetime("2000-10-30T18:27:19")), interval(datetime("1989-03-04T12:23:39"), datetime("2009-10-10T23:18:00"))),
+  "overlap6": get-overlapping-interval(interval(datetime("1989-03-04T12:23:39"), datetime("2000-10-30T18:27:19")), interval(datetime("1844-03-03T11:19:39"), datetime("1888-10-10T23:18:00")))  }

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/d434b50f/asterix-app/src/test/resources/runtimets/queries/temporal/interval_functions/interval_functions.3.query.aql
----------------------------------------------------------------------
diff --git a/asterix-app/src/test/resources/runtimets/queries/temporal/interval_functions/interval_functions.3.query.aql b/asterix-app/src/test/resources/runtimets/queries/temporal/interval_functions/interval_functions.3.query.aql
index d986a1e..62ed6a9 100644
--- a/asterix-app/src/test/resources/runtimets/queries/temporal/interval_functions/interval_functions.3.query.aql
+++ b/asterix-app/src/test/resources/runtimets/queries/temporal/interval_functions/interval_functions.3.query.aql
@@ -18,25 +18,25 @@
  */
 use dataverse test;
 
-let $itv1 := interval-from-date("2010-10-30", "2010-12-21")
-let $itv2 := interval-from-date("2011-10-30", "2012-10-21")
-let $itv3 := interval-from-date("2010-12-21", "2013-01-01")
+let $itv1 := interval(date("2010-10-30"), date("2010-12-21"))
+let $itv2 := interval(date("2011-10-30"), date("2012-10-21"))
+let $itv3 := interval(date("2010-12-21"), date("2013-01-01"))
 let $blnBefore1 := interval-before($itv1, $itv2)
 let $blnAfter1 := interval-after($itv2, $itv1)
 let $blnBefore2 := interval-before($itv1, $itv3)
 let $blnAfter2 := interval-after($itv3, $itv1)
 
-let $itv4 := interval-from-datetime("2012-06-26T01:01:01.111", "2012-07-27T02:02:02.222")
-let $itv5 := interval-from-datetime("20120727T020202222", "2013-08-08T03:03:03.333")
-let $itv6 := interval-from-datetime("19000707T020202222", "2013-08-07T03:03:03.333")
+let $itv4 := interval(datetime("2012-06-26T01:01:01.111"), datetime("2012-07-27T02:02:02.222"))
+let $itv5 := interval(datetime("20120727T020202222"), datetime("2013-08-08T03:03:03.333"))
+let $itv6 := interval(datetime("19000707T020202222"), datetime("2013-08-07T03:03:03.333"))
 let $blnMeet1 := interval-meets($itv4, $itv5)
 let $blnMetBy1 := interval-met-by($itv5, $itv4)
 let $blnMeet2 := interval-meets($itv6, $itv4)
 let $blnMetBy2 := interval-met-by($itv6, $itv4)
 
-let $itv7 := interval-from-time("12:32:38", "20:29:20")
-let $itv8 := interval-from-time("17:48:19", "22:19:49")
-let $itv9 := interval-from-time("01:32:49", "17:48:19")
+let $itv7 := interval(time("12:32:38"), time("20:29:20"))
+let $itv8 := interval(time("17:48:19"), time("22:19:49"))
+let $itv9 := interval(time("01:32:49"), time("17:48:19"))
 let $blnOverlaps1 := interval-overlaps($itv7, $itv8)
 let $blnOverlapped1 := interval-overlapped-by($itv8, $itv7)
 let $blnOverlaps2 := interval-overlaps($itv9, $itv8)
@@ -44,21 +44,21 @@ let $blnOverlapped2 := interval-overlapped-by($itv8, $itv9)
 let $blnOverlap1 := interval-overlapping($itv9, $itv7)
 let $blnOverlap2 := interval-overlapping($itv9, $itv8)
 
-let $itv10 := interval-from-date("2010-10-30", "2010-11-30")
+let $itv10 := interval(date("2010-10-30"), date("2010-11-30"))
 let $blnStarts1 := interval-starts($itv10, $itv1)
 let $blnStarts2 := interval-starts($itv10, $itv2)
 let $blnStartedBy1 := interval-started-by($itv1, $itv10)
 let $blnStartedBy2 := interval-started-by($itv10, $itv2)
 
-let $itv10 := interval-from-datetime("19000707T020202222", "2013-08-07T03:03:03.333")
-let $itv11 := interval-from-datetime("19990707T020202222", "2013-08-07T03:03:03.333")
-let $itv12 := interval-from-datetime("-19990707T020202222", "2013-08-07T03:03:03.333")
+let $itv10 := interval(datetime("19000707T020202222"), datetime("2013-08-07T03:03:03.333"))
+let $itv11 := interval(datetime("19990707T020202222"), datetime("2013-08-07T03:03:03.333"))
+let $itv12 := interval(datetime("-19990707T020202222"), datetime("2013-08-07T03:03:03.333"))
 let $blnCovers1 := interval-covers($itv10, $itv11)
 let $blnCovers2 := interval-covers($itv10, $itv12)
 let $blnCoveredBy1 := interval-covered-by($itv11, $itv10)
 let $blnCoveredBy2 := interval-covered-by($itv12, $itv10)
 
-let $itv11 := interval-from-time("19:00:00.009", "20:29:20.000")
+let $itv11 := interval(time("19:00:00.009"), time("20:29:20.000"))
 let $blnEnds1 := interval-ends($itv11, $itv7)
 let $blnEnds2 := interval-ends($itv11, $itv8)
 let $blnEndedBy1 := interval-ended-by($itv7, $itv11)

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/d434b50f/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
index 6b2c252..8011ad6 100644
--- 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
@@ -21,9 +21,9 @@
  * 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"))
+let $itv1 := interval(time("17:23:37"), time("18:30:21"))
+let $itv2 := interval(date("1984-03-17"), date("2013-08-22"))
+let $itv3 := interval(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")) }

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/d434b50f/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
index 41c2781..1661d68 100644
--- 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
@@ -18,7 +18,7 @@
  */
 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"))
+for $bin in overlap-bins(interval(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,

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/d434b50f/asterix-app/src/test/resources/runtimets/queries_sqlpp/comparison/issue363_equality/issue363_equality.3.query.sqlpp
----------------------------------------------------------------------
diff --git a/asterix-app/src/test/resources/runtimets/queries_sqlpp/comparison/issue363_equality/issue363_equality.3.query.sqlpp b/asterix-app/src/test/resources/runtimets/queries_sqlpp/comparison/issue363_equality/issue363_equality.3.query.sqlpp
index da2e983..315b435 100644
--- a/asterix-app/src/test/resources/runtimets/queries_sqlpp/comparison/issue363_equality/issue363_equality.3.query.sqlpp
+++ b/asterix-app/src/test/resources/runtimets/queries_sqlpp/comparison/issue363_equality/issue363_equality.3.query.sqlpp
@@ -23,4 +23,21 @@
  * Issue        : 363
  */
 
-{'duration':(duration('P3Y6M3DT9H5M2.348S') = duration('P3Y6M3DT9H5M2.348S')),'year-month-duration':("year-month-duration"('P3Y6M') = "year-month-duration"('P3Y6M')),'day-time-duration':("day-time-duration"('P3DT9H5M2.348S') = "day-time-duration"('P3DT9H5M2.348S')),'point':(point('47.44,80.65') = point('47.44,80.65')),'line':(line('10.1234,11.1e-1 +10.2E-2,-11.22') = line('10.1234,11.1e-1 +10.2E-2,-11.22')),'polygon':(polygon('-1.0,+10.5e2 -02.15E+50,2.5 -1.0,+3.3e3 -2.50E+05,20.15 +3.5e+2,03.6 -4.60E-3,+4.75 -2,+1.0e2 -2.00E+5,20.10 30.5,03.25 -4.33E-3,+4.75') = polygon('-1.0,+10.5e2 -02.15E+50,2.5 -1.0,+3.3e3 -2.50E+05,20.15 +3.5e+2,03.6 -4.60E-3,+4.75 -2,+1.0e2 -2.00E+5,20.10 30.5,03.25 -4.33E-3,+4.75')),'circle':(circle('0.1234,-1.00e-10 +10.5E-2') = circle('0.1234,-1.00e-10 +10.5E-2')),'rectangle':(rectangle('0.1234,-1.00e-10 5.5487,0.48765') = rectangle('0.1234,-1.00e-10 5.5487,0.48765')),'interval':("interval-from-datetime"(datetime('-1987-11-19T02:43:57.938+08:00'),datetime(
 '19991112T124935948-0700')) = "interval-from-datetime"(datetime('-1987-11-19T02:43:57.938+08:00'),datetime('19991112T124935948-0700'))),'duration2':(duration('P3Y6M3DT9H5M2.348S') != duration('P4Y6M3DT9H5M2.348S')),'year-month-duration2':("year-month-duration"('P3Y6M') != "year-month-duration"('P3Y7M')),'day-time-duration2':("day-time-duration"('P3DT9H5M2.348S') != "day-time-duration"('P3DT1H5M2.348S')),'point2':(point('47.44,80.65') != point('47.4444,80.65')),'line2':(line('10.1234,11.1e-1 +10.2E-2,-11.22') != line('10.5678,11.1e-1 +10.2E-2,-11.22')),'polygon2':(polygon('-1.0,+10.5e2 -02.15E+50,2.5 -1.0,+3.3e3 -2.50E+05,20.15 +3.5e+2,03.6 -4.60E-3,+4.75 -2,+1.0e2 -2.00E+5,20.10 30.5,03.25 -4.33E-3,+4.75') != polygon('-1.0,+10.5e2 -02.19E+50,2.5 -1.0,+3.3e3 -2.50E+05,20.15 +3.5e+2,03.6 -4.60E-3,+4.75 -2,+1.0e2 -2.00E+5,20.10 30.5,03.25 -4.33E-3,+4.75')),'circle2':(circle('0.1234,-1.00e-10 +10.5E-2') != circle('0.5678,-1.00e-10 +10.5E-2')),'rectangle2':(rectangle('0.1234,-1.00e-10 5.
 5487,0.48765') != rectangle('0.5678,-1.00e-10 5.5487,0.48765')),'interval2':("interval-from-datetime"(datetime('-1987-11-19T02:43:57.938+08:00'),datetime('19991112T124935948-0700')) != "interval-from-datetime"(datetime('-1983-11-19T02:43:57.938+08:00'),datetime('19991112T124935948-0700')))};
+{ 'duration':(duration('P3Y6M3DT9H5M2.348S') = duration('P3Y6M3DT9H5M2.348S')),
+  'year-month-duration':("year-month-duration"('P3Y6M') = "year-month-duration"('P3Y6M')),
+  'day-time-duration':("day-time-duration"('P3DT9H5M2.348S') = "day-time-duration"('P3DT9H5M2.348S')),
+  'point':(point('47.44,80.65') = point('47.44,80.65')),
+  'line':(line('10.1234,11.1e-1 +10.2E-2,-11.22') = line('10.1234,11.1e-1 +10.2E-2,-11.22')),
+  'polygon':(polygon('-1.0,+10.5e2 -02.15E+50,2.5 -1.0,+3.3e3 -2.50E+05,20.15 +3.5e+2,03.6 -4.60E-3,+4.75 -2,+1.0e2 -2.00E+5,20.10 30.5,03.25 -4.33E-3,+4.75') = polygon('-1.0,+10.5e2 -02.15E+50,2.5 -1.0,+3.3e3 -2.50E+05,20.15 +3.5e+2,03.6 -4.60E-3,+4.75 -2,+1.0e2 -2.00E+5,20.10 30.5,03.25 -4.33E-3,+4.75')),
+  'circle':(circle('0.1234,-1.00e-10 +10.5E-2') = circle('0.1234,-1.00e-10 +10.5E-2')),
+  'rectangle':(rectangle('0.1234,-1.00e-10 5.5487,0.48765') = rectangle('0.1234,-1.00e-10 5.5487,0.48765')),
+  'interval':(interval(datetime('-1987-11-19T02:43:57.938+08:00'),datetime('19991112T124935948-0700')) = interval(datetime('-1987-11-19T02:43:57.938+08:00'),datetime('19991112T124935948-0700'))),
+  'duration2':(duration('P3Y6M3DT9H5M2.348S') != duration('P4Y6M3DT9H5M2.348S')),
+  'year-month-duration2':("year-month-duration"('P3Y6M') != "year-month-duration"('P3Y7M')),
+  'day-time-duration2':("day-time-duration"('P3DT9H5M2.348S') != "day-time-duration"('P3DT1H5M2.348S')),
+  'point2':(point('47.44,80.65') != point('47.4444,80.65')),
+  'line2':(line('10.1234,11.1e-1 +10.2E-2,-11.22') != line('10.5678,11.1e-1 +10.2E-2,-11.22')),
+  'polygon2':(polygon('-1.0,+10.5e2 -02.15E+50,2.5 -1.0,+3.3e3 -2.50E+05,20.15 +3.5e+2,03.6 -4.60E-3,+4.75 -2,+1.0e2 -2.00E+5,20.10 30.5,03.25 -4.33E-3,+4.75') != polygon('-1.0,+10.5e2 -02.19E+50,2.5 -1.0,+3.3e3 -2.50E+05,20.15 +3.5e+2,03.6 -4.60E-3,+4.75 -2,+1.0e2 -2.00E+5,20.10 30.5,03.25 -4.33E-3,+4.75')),
+  'circle2':(circle('0.1234,-1.00e-10 +10.5E-2') != circle('0.5678,-1.00e-10 +10.5E-2')),
+  'rectangle2':(rectangle('0.1234,-1.00e-10 5.5487,0.48765') != rectangle('0.5678,-1.00e-10 5.5487,0.48765')),
+  'interval2':(interval(datetime('-1987-11-19T02:43:57.938+08:00'),datetime('19991112T124935948-0700')) != interval(datetime('-1983-11-19T02:43:57.938+08:00'),datetime('19991112T124935948-0700')))};

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/d434b50f/asterix-app/src/test/resources/runtimets/queries_sqlpp/comparison/issue363_inequality_interval/issue363_inequality_interval.3.query.sqlpp
----------------------------------------------------------------------
diff --git a/asterix-app/src/test/resources/runtimets/queries_sqlpp/comparison/issue363_inequality_interval/issue363_inequality_interval.3.query.sqlpp b/asterix-app/src/test/resources/runtimets/queries_sqlpp/comparison/issue363_inequality_interval/issue363_inequality_interval.3.query.sqlpp
index c72d273..f379db3 100644
--- a/asterix-app/src/test/resources/runtimets/queries_sqlpp/comparison/issue363_inequality_interval/issue363_inequality_interval.3.query.sqlpp
+++ b/asterix-app/src/test/resources/runtimets/queries_sqlpp/comparison/issue363_inequality_interval/issue363_inequality_interval.3.query.sqlpp
@@ -23,4 +23,7 @@
  * Issue        : 363
  */
 
-{'interval0':("interval-from-datetime"(datetime('-1987-11-19T02:43:57.938+08:00'),datetime('19991112T124935948-0700')) > "interval-from-datetime"(datetime('-1983-11-19T02:43:57.938+08:00'),datetime('19991112T124935948-0700'))),'interval1':("interval-from-datetime"(datetime('-1983-11-19T02:43:57.938+08:00'),datetime('19991112T124935948-0700')) < "interval-from-datetime"(datetime('-1987-11-19T02:43:57.938+08:00'),datetime('19991112T124935948-0700'))),'interval2':("interval-from-datetime"(datetime('-1987-11-19T02:43:57.938+08:00'),datetime('19991112T124935948-0700')) >= "interval-from-datetime"(datetime('-1983-11-19T02:43:57.938+08:00'),datetime('19991112T124935948-0700'))),'interval3':("interval-from-datetime"(datetime('-1983-11-19T02:43:57.938+08:00'),datetime('19991112T124935948-0700')) <= "interval-from-datetime"(datetime('-1987-11-19T02:43:57.938+08:00'),datetime('19991112T124935948-0700')))};
+{ 'interval0':(interval(datetime('-1987-11-19T02:43:57.938+08:00'),datetime('19991112T124935948-0700')) > interval(datetime('-1983-11-19T02:43:57.938+08:00'),datetime('19991112T124935948-0700'))),
+  'interval1':(interval(datetime('-1983-11-19T02:43:57.938+08:00'),datetime('19991112T124935948-0700')) < interval(datetime('-1987-11-19T02:43:57.938+08:00'),datetime('19991112T124935948-0700'))),
+  'interval2':(interval(datetime('-1987-11-19T02:43:57.938+08:00'),datetime('19991112T124935948-0700')) >= interval(datetime('-1983-11-19T02:43:57.938+08:00'),datetime('19991112T124935948-0700'))),
+  'interval3':(interval(datetime('-1983-11-19T02:43:57.938+08:00'),datetime('19991112T124935948-0700')) <= interval(datetime('-1987-11-19T02:43:57.938+08:00'),datetime('19991112T124935948-0700')))};

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/d434b50f/asterix-app/src/test/resources/runtimets/queries_sqlpp/constructor/interval/interval.3.query.sqlpp
----------------------------------------------------------------------
diff --git a/asterix-app/src/test/resources/runtimets/queries_sqlpp/constructor/interval/interval.3.query.sqlpp b/asterix-app/src/test/resources/runtimets/queries_sqlpp/constructor/interval/interval.3.query.sqlpp
index 83ffa9b..4ce9ff0 100644
--- a/asterix-app/src/test/resources/runtimets/queries_sqlpp/constructor/interval/interval.3.query.sqlpp
+++ b/asterix-app/src/test/resources/runtimets/queries_sqlpp/constructor/interval/interval.3.query.sqlpp
@@ -20,4 +20,30 @@
 use test;
 
 
-{'interval11':test."interval-from-date"(test.date('2010-10-30'),test.date('2012-10-21')),'interval12':test."interval-from-date"('2010-10-30',test.date('2012-10-21')),'interval13':test."interval-from-date"(test.date('2010-10-30'),'2012-10-21'),'interval14':test."interval-from-date"('2010-10-30','2012-10-21'),'interval15':test."interval-from-date"(null,'2012-10-21'),'interval16':test."interval-from-date"('2010-10-30',null),'interval21':test."interval-from-time"(test.time('03:04:05.678-11:00'),test.time('232425267+0200')),'interval22':test."interval-from-time"('03:04:05.678-11:00',test.time('232425267+0200')),'interval23':test."interval-from-time"(test.time('03:04:05.678-11:00'),'232425267+0200'),'interval24':test."interval-from-time"('03:04:05.678-11:00','232425267+0200'),'interval25':test."interval-from-time"(null,test.time('232425267+0200')),'interval26':test."interval-from-time"(test.time('03:04:05.678-11:00'),null),'interval31':test."interval-from-datetime"(test.datetime('-1987-11
 -19T02:43:57.938+08:00'),test.datetime('19991112T124935948-0700')),'interval32':test."interval-from-datetime"('-1987-11-19T02:43:57.938+08:00',test.datetime('19991112T124935948-0700')),'interval33':test."interval-from-datetime"(test.datetime('-1987-11-19T02:43:57.938+08:00'),'19991112T124935948-0700'),'interval34':test."interval-from-datetime"('-1987-11-19T02:43:57.938+08:00','19991112T124935948-0700'),'interval35':test."interval-from-datetime"(null,test.datetime('19991112T124935948-0700')),'interval36':test."interval-from-datetime"(test.datetime('-1987-11-19T02:43:57.938+08:00'),null),'interval41':test."interval-start-from-date"(test.date('0001-12-27'),test.duration('P3Y394DT48H398.483S')),'interval42':test."interval-start-from-date"('0001-12-27',test.duration('P3Y394DT48H398.483S')),'interval43':test."interval-start-from-date"(test.date('0001-12-27'),'P3Y394DT48H398.483S'),'interval44':test."interval-start-from-date"('0001-12-27','P3Y394DT48H398.483S'),'interval45':test."interval-
 start-from-date"(null,test.duration('P3Y394DT48H398.483S')),'interval46':test."interval-start-from-date"(test.date('0001-12-27'),null),'interval51':test."interval-start-from-time"(test.time('20:03:20.948'),test.duration('P60DT48M389.938S')),'interval52':test."interval-start-from-time"('20:03:20.948',test.duration('P60DT48M389.938S')),'interval53':test."interval-start-from-time"(test.time('20:03:20.948'),'P60DT48M389.938S'),'interval54':test."interval-start-from-time"('20:03:20.948','P60DT48M389.938S'),'interval55':test."interval-start-from-time"(null,test.duration('P60DT48M389.938S')),'interval56':test."interval-start-from-time"(test.time('20:03:20.948'),null),'interval61':test."interval-start-from-datetime"(test.datetime('-2043-11-19T15:32:39.293'),test.duration('P439Y3M20DT20H39M58.949S')),'interval62':test."interval-start-from-datetime"('-2043-11-19T15:32:39.293',test.duration('P439Y3M20DT20H39M58.949S')),'interval63':test."interval-start-from-datetime"(test.datetime('-2043-11-19
 T15:32:39.293'),'P439Y3M20DT20H39M58.949S'),'interval64':test."interval-start-from-datetime"('-2043-11-19T15:32:39.293','P439Y3M20DT20H39M58.949S'),'interval65':test."interval-start-from-datetime"(null,test.duration('P439Y3M20DT20H39M58.949S')),'interval66':test."interval-start-from-datetime"(test.datetime('-2043-11-19T15:32:39.293'),null)};
+{ 'interval41':test."interval-start-from-date"(test.date('0001-12-27'),test.duration('P3Y394DT48H398.483S')),
+  'interval42':test."interval-start-from-date"('0001-12-27',test.duration('P3Y394DT48H398.483S')),
+  'interval43':test."interval-start-from-date"(test.date('0001-12-27'),'P3Y394DT48H398.483S'),
+  'interval44':test."interval-start-from-date"('0001-12-27','P3Y394DT48H398.483S'),
+  'interval45':test."interval-start-from-date"(null,test.duration('P3Y394DT48H398.483S')),
+  'interval46':test."interval-start-from-date"(test.date('0001-12-27'),null),
+  'interval51':test."interval-start-from-time"(test.time('20:03:20.948'),test.duration('P60DT48M389.938S')),
+  'interval52':test."interval-start-from-time"('20:03:20.948',test.duration('P60DT48M389.938S')),
+  'interval53':test."interval-start-from-time"(test.time('20:03:20.948'),'P60DT48M389.938S'),
+  'interval54':test."interval-start-from-time"('20:03:20.948','P60DT48M389.938S'),
+  'interval55':test."interval-start-from-time"(null,test.duration('P60DT48M389.938S')),
+  'interval56':test."interval-start-from-time"(test.time('20:03:20.948'),null),
+  'interval61':test."interval-start-from-datetime"(test.datetime('-2043-11-19T15:32:39.293'),test.duration('P439Y3M20DT20H39M58.949S')),
+  'interval62':test."interval-start-from-datetime"('-2043-11-19T15:32:39.293',test.duration('P439Y3M20DT20H39M58.949S')),
+  'interval63':test."interval-start-from-datetime"(test.datetime('-2043-11-19T15:32:39.293'),'P439Y3M20DT20H39M58.949S'),
+  'interval64':test."interval-start-from-datetime"('-2043-11-19T15:32:39.293','P439Y3M20DT20H39M58.949S'),
+  'interval65':test."interval-start-from-datetime"(null,test.duration('P439Y3M20DT20H39M58.949S')),
+  'interval66':test."interval-start-from-datetime"(test.datetime('-2043-11-19T15:32:39.293'),null),
+  'interval71':test.interval(test.date('2010-10-30'),test.date('2012-10-21')),
+  'interval72':test.interval(null,test.date('2012-10-21')),
+  'interval73':test.interval(test.date('2010-10-30'),null),
+  'interval74':test.interval(test.time('03:04:05.678-11:00'),test.time('232425267+0200')),
+  'interval75':test.interval(null,test.time('232425267+0200')),
+  'interval76':test.interval(test.time('03:04:05.678-11:00'),null),
+  'interval77':test.interval(test.datetime('-1987-11-19T02:43:57.938+08:00'),test.datetime('19991112T124935948-0700')),
+  'interval78':test.interval(null,test.datetime('19991112T124935948-0700')),
+  'interval79':test.interval(test.datetime('-1987-11-19T02:43:57.938+08:00'),null)};

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/d434b50f/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/accessors_interval/accessors_interval.3.query.sqlpp
----------------------------------------------------------------------
diff --git a/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/accessors_interval/accessors_interval.3.query.sqlpp b/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/accessors_interval/accessors_interval.3.query.sqlpp
index 4f30c74..5a8cc6a 100644
--- a/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/accessors_interval/accessors_interval.3.query.sqlpp
+++ b/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/accessors_interval/accessors_interval.3.query.sqlpp
@@ -20,4 +20,9 @@
 use test;
 
 
-{'start1':test."get-interval-start"(test."interval-from-date"(test.date('2010-10-30'),'2013-04-01')),'end1':test."get-interval-end"(test."interval-from-date"(test.date('2010-10-30'),'2013-04-01')),'start2':test."get-interval-start"(test."interval-from-time"('08:09:10.234Z',test.time('203040567+0800'))),'end2':test."get-interval-end"(test."interval-from-time"('08:09:10.234Z',test.time('203040567+0800'))),'start3':test."get-interval-start"(test."interval-from-datetime"('2009-09-01T00:00:00.000+08:00',test."datetime-from-date-time"(test.date('2013-04-04'),test.time('00:00:00.000+08:00')))),'end3':test."get-interval-end"(test."interval-from-datetime"('2009-09-01T00:00:00.000+08:00',test."datetime-from-date-time"(test.date('2013-04-04'),test.time('00:00:00.000+08:00'))))};
+{ 'start1':test."get-interval-start"(test.interval(test.date('2010-10-30'),test.date('2013-04-01'))),
+  'end1':test."get-interval-end"(test.interval(test.date('2010-10-30'),test.date('2013-04-01'))),
+  'start2':test."get-interval-start"(test.interval(test.time('08:09:10.234Z'),test.time('203040567+0800'))),
+  'end2':test."get-interval-end"(test.interval(test.time('08:09:10.234Z'),test.time('203040567+0800'))),
+  'start3':test."get-interval-start"(test.interval(test.datetime('2009-09-01T00:00:00.000+08:00'),test."datetime-from-date-time"(test.date('2013-04-04'),test.time('00:00:00.000+08:00')))),
+  'end3':test."get-interval-end"(test.interval(test.datetime('2009-09-01T00:00:00.000+08:00'),test."datetime-from-date-time"(test.date('2013-04-04'),test.time('00:00:00.000+08:00'))))};

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/d434b50f/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/duration_functions/duration_functions.3.query.sqlpp
----------------------------------------------------------------------
diff --git a/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/duration_functions/duration_functions.3.query.sqlpp b/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/duration_functions/duration_functions.3.query.sqlpp
index 01a35b6..7f49e94 100644
--- a/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/duration_functions/duration_functions.3.query.sqlpp
+++ b/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/duration_functions/duration_functions.3.query.sqlpp
@@ -25,4 +25,6 @@
 use test;
 
 
-{'dr1':test."duration-from-interval"(test."interval-from-date"('2010-10-30','2010-12-21')),'dr2':test."duration-from-interval"(test."interval-from-datetime"('2012-06-26T01:01:01.111','2012-07-27T02:02:02.222')),'dr3':test."duration-from-interval"(test."interval-from-time"('12:32:38','20:29:20')),'dr4':test."duration-from-interval"(null)};
+{ 'dr1':test."duration-from-interval"(test.interval(date('2010-10-30'),date('2010-12-21'))),
+  'dr2':test."duration-from-interval"(test.interval(datetime('2012-06-26T01:01:01.111'),datetime('2012-07-27T02:02:02.222'))),
+  'dr3':test."duration-from-interval"(test.interval(time('12:32:38'),time('20:29:20'))),'dr4':test."duration-from-interval"(null)};

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/d434b50f/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/get_overlapping_interval/get_overlapping_interval.3.query.sqlpp
----------------------------------------------------------------------
diff --git a/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/get_overlapping_interval/get_overlapping_interval.3.query.sqlpp b/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/get_overlapping_interval/get_overlapping_interval.3.query.sqlpp
index d27952e..940be8c 100644
--- a/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/get_overlapping_interval/get_overlapping_interval.3.query.sqlpp
+++ b/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/get_overlapping_interval/get_overlapping_interval.3.query.sqlpp
@@ -21,4 +21,9 @@
  * Expected result: success
  **/
 
-select element {'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')))};
+select element {'overlap1':"get-overlapping-interval"(interval(time('11:23:39'),time('18:27:19')),interval(time('12:23:39'),time('23:18:00'))),
+  'overlap2':"get-overlapping-interval"(interval(time('12:23:39'),time('18:27:19')),interval(time('07:19:39'),time('09:18:00'))),
+  'overlap3':"get-overlapping-interval"(interval(date('1980-11-30'),date('1999-09-09')),interval(date('2013-01-01'),date('2014-01-01'))),
+  'overlap4':"get-overlapping-interval"(interval(date('1980-11-30'),date('2099-09-09')),interval(date('2013-01-01'),date('2014-01-01'))),
+  'overlap5':"get-overlapping-interval"(interval(datetime('1844-03-03T11:19:39'),datetime('2000-10-30T18:27:19')),interval(datetime('1989-03-04T12:23:39'),datetime('2009-10-10T23:18:00'))),
+  'overlap6':"get-overlapping-interval"(interval(datetime('1989-03-04T12:23:39'),datetime('2000-10-30T18:27:19')),interval(datetime('1844-03-03T11:19:39'),datetime('1888-10-10T23:18:00')))};

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/d434b50f/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_functions/interval_functions.3.query.sqlpp
----------------------------------------------------------------------
diff --git a/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_functions/interval_functions.3.query.sqlpp b/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_functions/interval_functions.3.query.sqlpp
index bf5fd67..d7c278d 100644
--- a/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_functions/interval_functions.3.query.sqlpp
+++ b/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_functions/interval_functions.3.query.sqlpp
@@ -19,25 +19,25 @@
 
 use test;
 
-let itv1 = "interval-from-date"('2010-10-30', '2010-12-21')
-,itv2 = "interval-from-date"('2011-10-30', '2012-10-21')
-, itv3 = "interval-from-date"('2010-12-21', '2013-01-01')
+let itv1 = interval(date('2010-10-30'), date('2010-12-21'))
+, itv2 = interval(date('2011-10-30'), date('2012-10-21'))
+, itv3 = interval(date('2010-12-21'), date('2013-01-01'))
 , blnBefore1 = "interval-before"(itv1, itv2)
 , blnAfter1 = "interval-after"(itv2, itv1)
 , blnBefore2 = "interval-before"(itv1, itv3)
 , blnAfter2 = "interval-after"(itv3, itv1)
 
-, itv4 = "interval-from-datetime"('2012-06-26T01:01:01.111', '2012-07-27T02:02:02.222')
-, itv5 = "interval-from-datetime"('20120727T020202222', '2013-08-08T03:03:03.333')
-, itv6 = "interval-from-datetime"('19000707T020202222', '2013-08-07T03:03:03.333')
+, itv4 = interval(datetime('2012-06-26T01:01:01.111'), datetime('2012-07-27T02:02:02.222'))
+, itv5 = interval(datetime('20120727T020202222'), datetime('2013-08-08T03:03:03.333'))
+, itv6 = interval(datetime('19000707T020202222'), datetime('2013-08-07T03:03:03.333'))
 , blnMeet1 = "interval-meets"(itv4, itv5)
 , blnMetBy1 = "interval-met-by"(itv5, itv4)
 , blnMeet2 = "interval-meets"(itv6, itv4)
 , blnMetBy2 = "interval-met-by"(itv6, itv4)
 
-, itv7 = "interval-from-time"('12:32:38', '20:29:20')
-, itv8 = "interval-from-time"('17:48:19', '22:19:49')
-, itv9 = "interval-from-time"('01:32:49', '17:48:19')
+, itv7 = interval(time('12:32:38'), time('20:29:20'))
+, itv8 = interval(time('17:48:19'), time('22:19:49'))
+, itv9 = interval(time('01:32:49'), time('17:48:19'))
 , blnOverlaps1 = "interval-overlaps"(itv7, itv8)
 , blnOverlapped1 = "interval-overlapped-by"(itv8, itv7)
 , blnOverlaps2 = "interval-overlaps"(itv9, itv8)
@@ -45,21 +45,21 @@ let itv1 = "interval-from-date"('2010-10-30', '2010-12-21')
 , blnOverlap1 = "interval-overlapping"(itv9, itv7)
 , blnOverlap2 = "interval-overlapping"(itv9, itv8)
 
-, itv10 = "interval-from-date"('2010-10-30', '2010-11-30')
+, itv10 = interval(date('2010-10-30'), date('2010-11-30'))
 , blnStarts1 = "interval-starts"(itv10, itv1)
 , blnStarts2 = "interval-starts"(itv10, itv2)
 , blnStartedBy1 = "interval-started-by"(itv1, itv10)
 , blnStartedBy2 = "interval-started-by"(itv10, itv2)
 
-, itv10 = "interval-from-datetime"('19000707T020202222', '2013-08-07T03:03:03.333')
-, itv11 = "interval-from-datetime"('19990707T020202222', '2013-08-07T03:03:03.333')
-, itv12 = "interval-from-datetime"('-19990707T020202222', '2013-08-07T03:03:03.333')
+, itv10 = interval(datetime('19000707T020202222'), datetime('2013-08-07T03:03:03.333'))
+, itv11 = interval(datetime('19990707T020202222'), datetime('2013-08-07T03:03:03.333'))
+, itv12 = interval(datetime('-19990707T020202222'), datetime('2013-08-07T03:03:03.333'))
 , blnCovers1 = "interval-covers"(itv10, itv11)
 , blnCovers2 = "interval-covers"(itv10, itv12)
 , blnCoveredBy1 = "interval-covered-by"(itv11, itv10)
 , blnCoveredBy2 = "interval-covered-by"(itv12, itv10)
 
-, itv11 = "interval-from-time"('19:00:00.009', '20:29:20.000')
+, itv11 = interval(time('19:00:00.009'), time('20:29:20.000'))
 , blnEnds1 = "interval-ends"(itv11, itv7)
 , blnEnds2 = "interval-ends"(itv11, itv8)
 , blnEndedBy1 = "interval-ended-by"(itv7, itv11)

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/d434b50f/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/overlap_bins/overlap_bins.3.query.sqlpp
----------------------------------------------------------------------
diff --git a/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/overlap_bins/overlap_bins.3.query.sqlpp b/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/overlap_bins/overlap_bins.3.query.sqlpp
index fa484e0..8f4b04b 100644
--- a/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/overlap_bins/overlap_bins.3.query.sqlpp
+++ b/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/overlap_bins/overlap_bins.3.query.sqlpp
@@ -21,4 +21,7 @@
  * Expected result: success
  **/
 
-{'timebins':"overlap-bins"("interval-from-time"(time('17:23:37'),time('18:30:21')),time('00:00:00'),"day-time-duration"('PT30M')),'datebins':"overlap-bins"("interval-from-date"(date('1984-03-17'),date('2013-08-22')),date('1990-01-01'),"year-month-duration"('P20Y')),'datetimebins':"overlap-bins"("interval-from-datetime"(datetime('1800-01-01T23:59:48.938'),datetime('2015-07-26T13:28:30.218')),datetime('1900-01-01T00:00:00.000'),"year-month-duration"('P100Y'))};
+{ 'timebins':"overlap-bins"(interval(time('17:23:37'),time('18:30:21')),time('00:00:00'),"day-time-duration"('PT30M')),
+  'datebins':"overlap-bins"(interval(date('1984-03-17'),date('2013-08-22')),date('1990-01-01'),"year-month-duration"('P20Y')),
+  'datetimebins':"overlap-bins"(interval(datetime('1800-01-01T23:59:48.938'),datetime('2015-07-26T13:28:30.218')),datetime('1900-01-01T00:00:00.000'),
+  "year-month-duration"('P100Y'))};

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/d434b50f/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/overlap_bins_gby_3/overlap_bins_gby_3.3.query.sqlpp
----------------------------------------------------------------------
diff --git a/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/overlap_bins_gby_3/overlap_bins_gby_3.3.query.sqlpp b/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/overlap_bins_gby_3/overlap_bins_gby_3.3.query.sqlpp
index cfce69e..c996e7d 100644
--- a/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/overlap_bins_gby_3/overlap_bins_gby_3.3.query.sqlpp
+++ b/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/overlap_bins_gby_3/overlap_bins_gby_3.3.query.sqlpp
@@ -27,7 +27,7 @@ select element {'timebin':bin,'subgroups':(
         group by i.app as subgid
         order by subgid,multitask.count(i)
     )}
-from  multitask."overlap-bins"(multitask."interval-from-time"(multitask.min((
+from  multitask."overlap-bins"(multitask.interval(multitask.min((
     select element i.time
     from  logs as i
 )),multitask.max((

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/d434b50f/asterix-app/src/test/resources/runtimets/results/comparison/interval_order/interval_order.3.adm
----------------------------------------------------------------------
diff --git a/asterix-app/src/test/resources/runtimets/results/comparison/interval_order/interval_order.3.adm b/asterix-app/src/test/resources/runtimets/results/comparison/interval_order/interval_order.3.adm
index 35b6077..c55c2fc 100644
--- a/asterix-app/src/test/resources/runtimets/results/comparison/interval_order/interval_order.3.adm
+++ b/asterix-app/src/test/resources/runtimets/results/comparison/interval_order/interval_order.3.adm
@@ -1,7 +1,7 @@
-interval-date("2001-01-01, 2010-01-01")
-interval-date("2002-01-01, 2003-01-01")
-interval-date("2002-01-01, 2010-01-01")
-interval-date("2003-01-01, 2008-01-01")
-interval-date("2003-01-01, 2008-01-01")
-interval-date("2004-01-01, 2009-01-01")
-interval-date("2006-01-01, 2010-01-01")
\ No newline at end of file
+interval(date("2001-01-01"), date("2010-01-01"))
+interval(date("2002-01-01"), date("2003-01-01"))
+interval(date("2002-01-01"), date("2010-01-01"))
+interval(date("2003-01-01"), date("2008-01-01"))
+interval(date("2003-01-01"), date("2008-01-01"))
+interval(date("2004-01-01"), date("2009-01-01"))
+interval(date("2006-01-01"), date("2010-01-01"))
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/d434b50f/asterix-app/src/test/resources/runtimets/results/comparison/interval_order/interval_order.4.adm
----------------------------------------------------------------------
diff --git a/asterix-app/src/test/resources/runtimets/results/comparison/interval_order/interval_order.4.adm b/asterix-app/src/test/resources/runtimets/results/comparison/interval_order/interval_order.4.adm
index b8b3d7a..0ce3141 100644
--- a/asterix-app/src/test/resources/runtimets/results/comparison/interval_order/interval_order.4.adm
+++ b/asterix-app/src/test/resources/runtimets/results/comparison/interval_order/interval_order.4.adm
@@ -1,7 +1,7 @@
-interval-date("2006-01-01, 2010-01-01")
-interval-date("2002-01-01, 2010-01-01")
-interval-date("2001-01-01, 2010-01-01")
-interval-date("2004-01-01, 2009-01-01")
-interval-date("2003-01-01, 2008-01-01")
-interval-date("2003-01-01, 2008-01-01")
-interval-date("2002-01-01, 2003-01-01")
\ No newline at end of file
+interval(date("2006-01-01"), date("2010-01-01"))
+interval(date("2002-01-01"), date("2010-01-01"))
+interval(date("2001-01-01"), date("2010-01-01"))
+interval(date("2004-01-01"), date("2009-01-01"))
+interval(date("2003-01-01"), date("2008-01-01"))
+interval(date("2003-01-01"), date("2008-01-01"))
+interval(date("2002-01-01"), date("2003-01-01"))
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/d434b50f/asterix-app/src/test/resources/runtimets/results/constructor/interval/interval.1.adm
----------------------------------------------------------------------
diff --git a/asterix-app/src/test/resources/runtimets/results/constructor/interval/interval.1.adm b/asterix-app/src/test/resources/runtimets/results/constructor/interval/interval.1.adm
index d6c9c9b..bc00add 100644
--- a/asterix-app/src/test/resources/runtimets/results/constructor/interval/interval.1.adm
+++ b/asterix-app/src/test/resources/runtimets/results/constructor/interval/interval.1.adm
@@ -1 +1 @@
-{ "interval11": interval-date("2010-10-30, 2012-10-21"), "interval12": interval-date("2010-10-30, 2012-10-21"), "interval13": interval-date("2010-10-30, 2012-10-21"), "interval14": interval-date("2010-10-30, 2012-10-21"), "interval15": null, "interval16": null, "interval21": interval-time("14:04:05.678Z, 21:24:25.267Z"), "interval22": interval-time("14:04:05.678Z, 21:24:25.267Z"), "interval23": interval-time("14:04:05.678Z, 21:24:25.267Z"), "interval24": interval-time("14:04:05.678Z, 21:24:25.267Z"), "interval25": null, "interval26": null, "interval31": interval-datetime("-1987-11-18T18:43:57.938Z, 1999-11-12T19:49:35.948Z"), "interval32": interval-datetime("-1987-11-18T18:43:57.938Z, 1999-11-12T19:49:35.948Z"), "interval33": interval-datetime("-1987-11-18T18:43:57.938Z, 1999-11-12T19:49:35.948Z"), "interval34": interval-datetime("-1987-11-18T18:43:57.938Z, 1999-11-12T19:49:35.948Z"), "interval35": null, "interval36": null, "interval41": interval-date("0001-12-27, 0006-01-27"), "int
 erval42": interval-date("0001-12-27, 0006-01-27"), "interval43": interval-date("0001-12-27, 0006-01-27"), "interval44": interval-date("0001-12-27, 0006-01-27"), "interval45": null, "interval46": null, "interval51": interval-time("20:03:20.948Z, 20:57:50.886Z"), "interval52": interval-time("20:03:20.948Z, 20:57:50.886Z"), "interval53": interval-time("20:03:20.948Z, 20:57:50.886Z"), "interval54": interval-time("20:03:20.948Z, 20:57:50.886Z"), "interval55": null, "interval56": null, "interval61": interval-datetime("-2043-11-19T15:32:39.293Z, -1603-03-12T12:12:38.242Z"), "interval62": interval-datetime("-2043-11-19T15:32:39.293Z, -1603-03-12T12:12:38.242Z"), "interval63": interval-datetime("-2043-11-19T15:32:39.293Z, -1603-03-12T12:12:38.242Z"), "interval64": interval-datetime("-2043-11-19T15:32:39.293Z, -1603-03-12T12:12:38.242Z"), "interval65": null, "interval66": null }
+{ "interval41": interval(date("0001-12-27"), date("0006-01-27")), "interval42": interval(date("0001-12-27"), date("0006-01-27")), "interval43": interval(date("0001-12-27"), date("0006-01-27")), "interval44": interval(date("0001-12-27"), date("0006-01-27")), "interval45": null, "interval46": null, "interval51": interval(time("20:03:20.948Z"), time("20:57:50.886Z")), "interval52": interval(time("20:03:20.948Z"), time("20:57:50.886Z")), "interval53": interval(time("20:03:20.948Z"), time("20:57:50.886Z")), "interval54": interval(time("20:03:20.948Z"), time("20:57:50.886Z")), "interval55": null, "interval56": null, "interval61": interval(datetime("-2043-11-19T15:32:39.293Z"), datetime("-1603-03-12T12:12:38.242Z")), "interval62": interval(datetime("-2043-11-19T15:32:39.293Z"), datetime("-1603-03-12T12:12:38.242Z")), "interval63": interval(datetime("-2043-11-19T15:32:39.293Z"), datetime("-1603-03-12T12:12:38.242Z")), "interval64": interval(datetime("-2043-11-19T15:32:39.293Z"), datetime("-
 1603-03-12T12:12:38.242Z")), "interval65": null, "interval66": null, "interval71": interval(date("2010-10-30"), date("2012-10-21")), "interval72": null, "interval73": null, "interval74": interval(time("14:04:05.678Z"), time("21:24:25.267Z")), "interval75": null, "interval76": null, "interval77": interval(datetime("-1987-11-18T18:43:57.938Z"), datetime("1999-11-12T19:49:35.948Z")), "interval78": null, "interval79": null }

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/d434b50f/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
index 4c3ce59..a6a2c22 100644
--- 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
@@ -1 +1 @@
-{ "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 }
+{ "overlap1": interval(time("12:23:39.000Z"), time("18:27:19.000Z")), "overlap2": null, "overlap3": null, "overlap4": interval(date("2013-01-01"), date("2014-01-01")), "overlap5": interval(datetime("1989-03-04T12:23:39.000Z"), datetime("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/d434b50f/asterix-app/src/test/resources/runtimets/results/temporal/insert_from_ext_ds/insert_from_ext_ds.1.adm
----------------------------------------------------------------------
diff --git a/asterix-app/src/test/resources/runtimets/results/temporal/insert_from_ext_ds/insert_from_ext_ds.1.adm b/asterix-app/src/test/resources/runtimets/results/temporal/insert_from_ext_ds/insert_from_ext_ds.1.adm
index 61de6de..5eb8905 100644
--- a/asterix-app/src/test/resources/runtimets/results/temporal/insert_from_ext_ds/insert_from_ext_ds.1.adm
+++ b/asterix-app/src/test/resources/runtimets/results/temporal/insert_from_ext_ds/insert_from_ext_ds.1.adm
@@ -1,4 +1,4 @@
-{ "date": date("-2012-12-12"), "time": time("23:49:12.390Z"), "datetime": datetime("2012-12-12T00:00:00.001Z"), "duration": duration("P20Y19DT4H14M23.34S"), "interval": interval-datetime("2012-12-12T00:00:00.001Z, 2013-08-10T22:10:15.398Z"), "ymduration": null, "dtduration": null }
-{ "date": null, "time": time("04:12:12.219Z"), "datetime": datetime("1920-12-21T11:29:18.478Z"), "duration": null, "interval": interval-time("04:29:30.000Z, 07:59:59.999Z"), "ymduration": null, "dtduration": null }
-{ "date": null, "time": null, "datetime": datetime("-0290-03-22T17:59:48.999Z"), "duration": duration("-P27Y148D"), "interval": interval-date("-2012-03-17, 2013-04-01"), "ymduration": null, "dtduration": null }
+{ "date": date("-2012-12-12"), "time": time("23:49:12.390Z"), "datetime": datetime("2012-12-12T00:00:00.001Z"), "duration": duration("P20Y19DT4H14M23.34S"), "interval": interval(datetime("2012-12-12T00:00:00.001Z"), datetime("2013-08-10T22:10:15.398Z")), "ymduration": null, "dtduration": null }
+{ "date": null, "time": time("04:12:12.219Z"), "datetime": datetime("1920-12-21T11:29:18.478Z"), "duration": null, "interval": interval(time("04:29:30.000Z"), time("07:59:59.999Z")), "ymduration": null, "dtduration": null }
+{ "date": null, "time": null, "datetime": datetime("-0290-03-22T17:59:48.999Z"), "duration": duration("-P27Y148D"), "interval": interval(date("-2012-03-17"), date("2013-04-01")), "ymduration": null, "dtduration": null }
 { "date": null, "time": null, "datetime": null, "duration": null, "interval": null, "ymduration": year-month-duration("P31Y2M"), "dtduration": day-time-duration("-P148D") }

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/d434b50f/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 2c485e2..2b03194 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,3 +1,3 @@
-{ "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, 12: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"), date("4925-05-03")), "time-interval": interval(time("12:10:45.169Z"), time("15:37:48.736Z")), "datetime-interval": interval(datetime("0534-12-08T08:20:31.487Z"), datetime("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"), date("9656-06-03")), "time-interval": interval(time("12:04:45.689Z"), time("12:41:59.002Z")), "datetime-interval": interval(datetime("-2640-10-11T17:32:15.675Z"), datetime("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"), date("3337-08-26")), "time-interval": interval(time("04:16:42.321Z"), time("12:22:56.816Z")), "datetime-interval": interval(datetime("2129-12-12T13:18:35.758Z"), datetime("8647-07-01T13:10:19.691Z")) }

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/d434b50f/asterix-app/src/test/resources/runtimets/results/temporal/interval_bin/interval_bin.1.adm
----------------------------------------------------------------------
diff --git a/asterix-app/src/test/resources/runtimets/results/temporal/interval_bin/interval_bin.1.adm b/asterix-app/src/test/resources/runtimets/results/temporal/interval_bin/interval_bin.1.adm
index 46fbfa5..8c95d98 100644
--- a/asterix-app/src/test/resources/runtimets/results/temporal/interval_bin/interval_bin.1.adm
+++ b/asterix-app/src/test/resources/runtimets/results/temporal/interval_bin/interval_bin.1.adm
@@ -1 +1 @@
-{ "bin1": interval-date("2010-01-01, 2011-01-01"), "bin2": interval-date("2010-01-01, 2011-01-01"), "bin3": interval-datetime("-1987-07-01T00:00:00.000Z, -1986-01-01T00:00:00.000Z"), "bin4": interval-datetime("-1987-11-19T12:00:00.000Z, -1987-11-20T00:00:00.000Z"), "bin5": interval-time("04:00:00.000Z, 06:00:00.000Z"), "bin6": null, "bin7": null, "bin8": null }
+{ "bin1": interval(date("2010-01-01"), date("2011-01-01")), "bin2": interval(date("2010-01-01"), date("2011-01-01")), "bin3": interval(datetime("-1987-07-01T00:00:00.000Z"), datetime("-1986-01-01T00:00:00.000Z")), "bin4": interval(datetime("-1987-11-19T12:00:00.000Z"), datetime("-1987-11-20T00:00:00.000Z")), "bin5": interval(time("04:00:00.000Z"), time("06:00:00.000Z")), "bin6": null, "bin7": null, "bin8": null }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/d434b50f/asterix-app/src/test/resources/runtimets/results/temporal/interval_bin_gby_0/interval_bin_gby_0.1.adm
----------------------------------------------------------------------
diff --git a/asterix-app/src/test/resources/runtimets/results/temporal/interval_bin_gby_0/interval_bin_gby_0.1.adm b/asterix-app/src/test/resources/runtimets/results/temporal/interval_bin_gby_0/interval_bin_gby_0.1.adm
index 7902191..aa0f939 100644
--- a/asterix-app/src/test/resources/runtimets/results/temporal/interval_bin_gby_0/interval_bin_gby_0.1.adm
+++ b/asterix-app/src/test/resources/runtimets/results/temporal/interval_bin_gby_0/interval_bin_gby_0.1.adm
@@ -1,4 +1,4 @@
-{ "tbin": interval-datetime("-1990-01-01T00:00:00.000Z, -1970-01-01T00:00:00.000Z"), "count": 4 }
-{ "tbin": interval-datetime("-0990-01-01T00:00:00.000Z, -0970-01-01T00:00:00.000Z"), "count": 1 }
-{ "tbin": interval-datetime("1970-01-01T00:00:00.000Z, 1990-01-01T00:00:00.000Z"), "count": 5 }
-{ "tbin": interval-datetime("2010-01-01T00:00:00.000Z, 2030-01-01T00:00:00.000Z"), "count": 2 }
+{ "tbin": interval(datetime("-1990-01-01T00:00:00.000Z"), datetime("-1970-01-01T00:00:00.000Z")), "count": 4 }
+{ "tbin": interval(datetime("-0990-01-01T00:00:00.000Z"), datetime("-0970-01-01T00:00:00.000Z")), "count": 1 }
+{ "tbin": interval(datetime("1970-01-01T00:00:00.000Z"), datetime("1990-01-01T00:00:00.000Z")), "count": 5 }
+{ "tbin": interval(datetime("2010-01-01T00:00:00.000Z"), datetime("2030-01-01T00:00:00.000Z")), "count": 2 }

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/d434b50f/asterix-app/src/test/resources/runtimets/results/temporal/interval_bin_gby_1/interval_bin_gby_1.1.adm
----------------------------------------------------------------------
diff --git a/asterix-app/src/test/resources/runtimets/results/temporal/interval_bin_gby_1/interval_bin_gby_1.1.adm b/asterix-app/src/test/resources/runtimets/results/temporal/interval_bin_gby_1/interval_bin_gby_1.1.adm
index 3ff3ce0..37fb65f 100644
--- a/asterix-app/src/test/resources/runtimets/results/temporal/interval_bin_gby_1/interval_bin_gby_1.1.adm
+++ b/asterix-app/src/test/resources/runtimets/results/temporal/interval_bin_gby_1/interval_bin_gby_1.1.adm
@@ -1,8 +1,8 @@
-{ "tbin": interval-time("00:20:00.000Z, 00:30:00.000Z"), "count": 1 }
-{ "tbin": interval-time("09:30:00.000Z, 09:40:00.000Z"), "count": 1 }
-{ "tbin": interval-time("17:20:00.000Z, 17:30:00.000Z"), "count": 1 }
-{ "tbin": interval-time("18:00:00.000Z, 18:10:00.000Z"), "count": 1 }
-{ "tbin": interval-time("23:20:00.000Z, 23:30:00.000Z"), "count": 1 }
-{ "tbin": interval-time("23:30:00.000Z, 23:40:00.000Z"), "count": 1 }
-{ "tbin": interval-time("23:40:00.000Z, 23:50:00.000Z"), "count": 5 }
-{ "tbin": interval-time("23:50:00.000Z, 00:00:00.000Z"), "count": 1 }
+{ "tbin": interval(time("00:20:00.000Z"), time("00:30:00.000Z")), "count": 1 }
+{ "tbin": interval(time("09:30:00.000Z"), time("09:40:00.000Z")), "count": 1 }
+{ "tbin": interval(time("17:20:00.000Z"), time("17:30:00.000Z")), "count": 1 }
+{ "tbin": interval(time("18:00:00.000Z"), time("18:10:00.000Z")), "count": 1 }
+{ "tbin": interval(time("23:20:00.000Z"), time("23:30:00.000Z")), "count": 1 }
+{ "tbin": interval(time("23:30:00.000Z"), time("23:40:00.000Z")), "count": 1 }
+{ "tbin": interval(time("23:40:00.000Z"), time("23:50:00.000Z")), "count": 5 }
+{ "tbin": interval(time("23:50:00.000Z"), time("00:00:00.000Z")), "count": 1 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/d434b50f/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
index 88f2be1..a17ee5e 100644
--- 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
@@ -1 +1 @@
-{ "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") ] }
+{ "timebins": [ interval(time("17:00:00.000Z"), time("17:30:00.000Z")), interval(time("17:30:00.000Z"), time("18:00:00.000Z")), interval(time("18:00:00.000Z"), time("18:30:00.000Z")), interval(time("18:30:00.000Z"), time("19:00:00.000Z")) ], "datebins": [ interval(date("1970-01-01"), date("1990-01-01")), interval(date("1990-01-01"), date("2010-01-01")), interval(date("2010-01-01"), date("2030-01-01")) ], "datetimebins": [ interval(datetime("1800-01-01T00:00:00.000Z"), datetime("1900-01-01T00:00:00.000Z")), interval(datetime("1900-01-01T00:00:00.000Z"), datetime("2000-01-01T00:00:00.000Z")), interval(datetime("2000-01-01T00:00:00.000Z"), datetime("2100-01-01T00:00:00.000Z")) ] }
\ No newline at end of file


[3/4] incubator-asterixdb git commit: ASTERIXDB-1281 - Interval format update to AQL and ADM

Posted by pr...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/d434b50f/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
index 5402cb5..551e054 100644
--- 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
@@ -1,23 +1,23 @@
-{ "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") }
+{ "tbin": interval(time("00:00:00.000Z"), time("01:30:00.000Z")), "interval": interval(time("00:27:13.432Z"), time("01:27:13.432Z")), "overlap": interval(time("00:27:13.432Z"), time("01:27:13.432Z")) }
+{ "tbin": interval(time("07:30:00.000Z"), time("09:00:00.000Z")), "interval": interval(time("07:49:23.938Z"), time("10:49:23.938Z")), "overlap": interval(time("07:49:23.938Z"), time("09:00:00.000Z")) }
+{ "tbin": interval(time("09:00:00.000Z"), time("10:30:00.000Z")), "interval": interval(time("07:49:23.938Z"), time("10:49:23.938Z")), "overlap": interval(time("09:00:00.000Z"), time("10:30:00.000Z")) }
+{ "tbin": interval(time("09:00:00.000Z"), time("10:30:00.000Z")), "interval": interval(time("09:35:28.039Z"), time("20:25:28.039Z")), "overlap": interval(time("09:35:28.039Z"), time("10:30:00.000Z")) }
+{ "tbin": interval(time("10:30:00.000Z"), time("12:00:00.000Z")), "interval": interval(time("07:49:23.938Z"), time("10:49:23.938Z")), "overlap": interval(time("10:30:00.000Z"), time("10:49:23.938Z")) }
+{ "tbin": interval(time("10:30:00.000Z"), time("12:00:00.000Z")), "interval": interval(time("09:35:28.039Z"), time("20:25:28.039Z")), "overlap": interval(time("10:30:00.000Z"), time("12:00:00.000Z")) }
+{ "tbin": interval(time("12:00:00.000Z"), time("13:30:00.000Z")), "interval": interval(time("09:35:28.039Z"), time("20:25:28.039Z")), "overlap": interval(time("12:00:00.000Z"), time("13:30:00.000Z")) }
+{ "tbin": interval(time("12:00:00.000Z"), time("13:30:00.000Z")), "interval": interval(time("12:49:23.938Z"), time("15:49:23.938Z")), "overlap": interval(time("12:49:23.938Z"), time("13:30:00.000Z")) }
+{ "tbin": interval(time("13:30:00.000Z"), time("15:00:00.000Z")), "interval": interval(time("09:35:28.039Z"), time("20:25:28.039Z")), "overlap": interval(time("13:30:00.000Z"), time("15:00:00.000Z")) }
+{ "tbin": interval(time("13:30:00.000Z"), time("15:00:00.000Z")), "interval": interval(time("12:49:23.938Z"), time("15:49:23.938Z")), "overlap": interval(time("13:30:00.000Z"), time("15:00:00.000Z")) }
+{ "tbin": interval(time("15:00:00.000Z"), time("16:30:00.000Z")), "interval": interval(time("09:35:28.039Z"), time("20:25:28.039Z")), "overlap": interval(time("15:00:00.000Z"), time("16:30:00.000Z")) }
+{ "tbin": interval(time("15:00:00.000Z"), time("16:30:00.000Z")), "interval": interval(time("12:49:23.938Z"), time("15:49:23.938Z")), "overlap": interval(time("15:00:00.000Z"), time("15:49:23.938Z")) }
+{ "tbin": interval(time("16:30:00.000Z"), time("18:00:00.000Z")), "interval": interval(time("09:35:28.039Z"), time("20:25:28.039Z")), "overlap": interval(time("16:30:00.000Z"), time("18:00:00.000Z")) }
+{ "tbin": interval(time("16:30:00.000Z"), time("18:00:00.000Z")), "interval": interval(time("17:28:13.900Z"), time("17:28:32.900Z")), "overlap": interval(time("17:28:13.900Z"), time("17:28:32.900Z")) }
+{ "tbin": interval(time("18:00:00.000Z"), time("19:30:00.000Z")), "interval": interval(time("09:35:28.039Z"), time("20:25:28.039Z")), "overlap": interval(time("18:00:00.000Z"), time("19:30:00.000Z")) }
+{ "tbin": interval(time("18:00:00.000Z"), time("19:30:00.000Z")), "interval": interval(time("18:00:00.000Z"), time("20:00:00.000Z")), "overlap": interval(time("18:00:00.000Z"), time("19:30:00.000Z")) }
+{ "tbin": interval(time("19:30:00.000Z"), time("21:00:00.000Z")), "interval": interval(time("09:35:28.039Z"), time("20:25:28.039Z")), "overlap": interval(time("19:30:00.000Z"), time("20:25:28.039Z")) }
+{ "tbin": interval(time("19:30:00.000Z"), time("21:00:00.000Z")), "interval": interval(time("18:00:00.000Z"), time("20:00:00.000Z")), "overlap": interval(time("19:30:00.000Z"), time("20:00:00.000Z")) }
+{ "tbin": interval(time("22:30:00.000Z"), time("00:00:00.000Z")), "interval": interval(time("23:22:38.000Z"), time("23:42:38.000Z")), "overlap": interval(time("23:22:38.000Z"), time("23:42:38.000Z")) }
+{ "tbin": interval(time("22:30:00.000Z"), time("00:00:00.000Z")), "interval": interval(time("23:30:00.000Z"), time("23:32:00.000Z")), "overlap": interval(time("23:30:00.000Z"), time("23:32:00.000Z")) }
+{ "tbin": interval(time("22:30:00.000Z"), time("00:00:00.000Z")), "interval": interval(time("23:49:23.938Z"), time("23:54:23.938Z")), "overlap": interval(time("23:49:23.938Z"), time("23:54:23.938Z")) }
+{ "tbin": interval(time("22:30:00.000Z"), time("00:00:00.000Z")), "interval": interval(time("23:49:33.938Z"), time("23:50:03.938Z")), "overlap": interval(time("23:49:33.938Z"), time("23:50:03.938Z")) }
+{ "tbin": interval(time("22:30:00.000Z"), time("00:00:00.000Z")), "interval": interval(time("23:58:17.038Z"), time("23:58:56.420Z")), "overlap": interval(time("23:58:17.038Z"), time("23:58:56.420Z")) }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/d434b50f/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
index 9de6522..bd05dab 100644
--- 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
@@ -1,11 +1,11 @@
-{ "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 }
+{ "timebin": interval(time("00:00:00.000Z"), time("01:30:00.000Z")), "count": 1, "total_ms": 3600000 }
+{ "timebin": interval(time("07:30:00.000Z"), time("09:00:00.000Z")), "count": 1, "total_ms": 4236062 }
+{ "timebin": interval(time("09:00:00.000Z"), time("10:30:00.000Z")), "count": 2, "total_ms": 8671961 }
+{ "timebin": interval(time("10:30:00.000Z"), time("12:00:00.000Z")), "count": 2, "total_ms": 6563938 }
+{ "timebin": interval(time("12:00:00.000Z"), time("13:30:00.000Z")), "count": 2, "total_ms": 7836062 }
+{ "timebin": interval(time("13:30:00.000Z"), time("15:00:00.000Z")), "count": 2, "total_ms": 10800000 }
+{ "timebin": interval(time("15:00:00.000Z"), time("16:30:00.000Z")), "count": 2, "total_ms": 8363938 }
+{ "timebin": interval(time("16:30:00.000Z"), time("18:00:00.000Z")), "count": 2, "total_ms": 5419000 }
+{ "timebin": interval(time("18:00:00.000Z"), time("19:30:00.000Z")), "count": 2, "total_ms": 10800000 }
+{ "timebin": interval(time("19:30:00.000Z"), time("21:00:00.000Z")), "count": 2, "total_ms": 5128039 }
+{ "timebin": interval(time("22:30:00.000Z"), time("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/d434b50f/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
index c1ffd9b..28fa184 100644
--- 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
@@ -1,42 +1,42 @@
-{ "timebin": interval-time("10:27:00.000Z, 10:28:00.000Z"), "subgroups": [ { "subgid": "Email", "item_count": 2 }, { "subgid": "Facebook", "item_count": 2 } ] }
-{ "timebin": interval-time("10:28:00.000Z, 10:29:00.000Z"), "subgroups": [ { "subgid": "Facebook", "item_count": 1 } ] }
-{ "timebin": interval-time("10:29:00.000Z, 10:30:00.000Z"), "subgroups": [ { "subgid": "Email", "item_count": 1 }, { "subgid": "Facebook", "item_count": 2 } ] }
-{ "timebin": interval-time("10:30:00.000Z, 10:31:00.000Z"), "subgroups": [  ] }
-{ "timebin": interval-time("10:31:00.000Z, 10:32:00.000Z"), "subgroups": [  ] }
-{ "timebin": interval-time("10:32:00.000Z, 10:33:00.000Z"), "subgroups": [  ] }
-{ "timebin": interval-time("10:33:00.000Z, 10:34:00.000Z"), "subgroups": [  ] }
-{ "timebin": interval-time("10:34:00.000Z, 10:35:00.000Z"), "subgroups": [  ] }
-{ "timebin": interval-time("10:35:00.000Z, 10:36:00.000Z"), "subgroups": [  ] }
-{ "timebin": interval-time("10:36:00.000Z, 10:37:00.000Z"), "subgroups": [  ] }
-{ "timebin": interval-time("10:37:00.000Z, 10:38:00.000Z"), "subgroups": [  ] }
-{ "timebin": interval-time("10:38:00.000Z, 10:39:00.000Z"), "subgroups": [  ] }
-{ "timebin": interval-time("10:39:00.000Z, 10:40:00.000Z"), "subgroups": [  ] }
-{ "timebin": interval-time("10:40:00.000Z, 10:41:00.000Z"), "subgroups": [  ] }
-{ "timebin": interval-time("10:41:00.000Z, 10:42:00.000Z"), "subgroups": [  ] }
-{ "timebin": interval-time("10:42:00.000Z, 10:43:00.000Z"), "subgroups": [  ] }
-{ "timebin": interval-time("10:43:00.000Z, 10:44:00.000Z"), "subgroups": [  ] }
-{ "timebin": interval-time("10:44:00.000Z, 10:45:00.000Z"), "subgroups": [  ] }
-{ "timebin": interval-time("10:45:00.000Z, 10:46:00.000Z"), "subgroups": [  ] }
-{ "timebin": interval-time("10:46:00.000Z, 10:47:00.000Z"), "subgroups": [  ] }
-{ "timebin": interval-time("10:47:00.000Z, 10:48:00.000Z"), "subgroups": [  ] }
-{ "timebin": interval-time("10:48:00.000Z, 10:49:00.000Z"), "subgroups": [  ] }
-{ "timebin": interval-time("10:49:00.000Z, 10:50:00.000Z"), "subgroups": [  ] }
-{ "timebin": interval-time("10:50:00.000Z, 10:51:00.000Z"), "subgroups": [  ] }
-{ "timebin": interval-time("10:51:00.000Z, 10:52:00.000Z"), "subgroups": [  ] }
-{ "timebin": interval-time("10:52:00.000Z, 10:53:00.000Z"), "subgroups": [  ] }
-{ "timebin": interval-time("10:53:00.000Z, 10:54:00.000Z"), "subgroups": [  ] }
-{ "timebin": interval-time("10:54:00.000Z, 10:55:00.000Z"), "subgroups": [  ] }
-{ "timebin": interval-time("10:55:00.000Z, 10:56:00.000Z"), "subgroups": [  ] }
-{ "timebin": interval-time("10:56:00.000Z, 10:57:00.000Z"), "subgroups": [  ] }
-{ "timebin": interval-time("10:57:00.000Z, 10:58:00.000Z"), "subgroups": [  ] }
-{ "timebin": interval-time("10:58:00.000Z, 10:59:00.000Z"), "subgroups": [  ] }
-{ "timebin": interval-time("10:59:00.000Z, 11:00:00.000Z"), "subgroups": [  ] }
-{ "timebin": interval-time("11:00:00.000Z, 11:01:00.000Z"), "subgroups": [  ] }
-{ "timebin": interval-time("11:01:00.000Z, 11:02:00.000Z"), "subgroups": [  ] }
-{ "timebin": interval-time("11:02:00.000Z, 11:03:00.000Z"), "subgroups": [  ] }
-{ "timebin": interval-time("11:03:00.000Z, 11:04:00.000Z"), "subgroups": [  ] }
-{ "timebin": interval-time("11:04:00.000Z, 11:05:00.000Z"), "subgroups": [  ] }
-{ "timebin": interval-time("11:05:00.000Z, 11:06:00.000Z"), "subgroups": [  ] }
-{ "timebin": interval-time("11:06:00.000Z, 11:07:00.000Z"), "subgroups": [  ] }
-{ "timebin": interval-time("11:07:00.000Z, 11:08:00.000Z"), "subgroups": [ { "subgid": "Email", "item_count": 2 } ] }
-{ "timebin": interval-time("11:08:00.000Z, 11:09:00.000Z"), "subgroups": [  ] }
+{ "timebin": interval(time("10:27:00.000Z"), time("10:28:00.000Z")), "subgroups": [ { "subgid": "Email", "item_count": 2 }, { "subgid": "Facebook", "item_count": 2 } ] }
+{ "timebin": interval(time("10:28:00.000Z"), time("10:29:00.000Z")), "subgroups": [ { "subgid": "Facebook", "item_count": 1 } ] }
+{ "timebin": interval(time("10:29:00.000Z"), time("10:30:00.000Z")), "subgroups": [ { "subgid": "Email", "item_count": 1 }, { "subgid": "Facebook", "item_count": 2 } ] }
+{ "timebin": interval(time("10:30:00.000Z"), time("10:31:00.000Z")), "subgroups": [  ] }
+{ "timebin": interval(time("10:31:00.000Z"), time("10:32:00.000Z")), "subgroups": [  ] }
+{ "timebin": interval(time("10:32:00.000Z"), time("10:33:00.000Z")), "subgroups": [  ] }
+{ "timebin": interval(time("10:33:00.000Z"), time("10:34:00.000Z")), "subgroups": [  ] }
+{ "timebin": interval(time("10:34:00.000Z"), time("10:35:00.000Z")), "subgroups": [  ] }
+{ "timebin": interval(time("10:35:00.000Z"), time("10:36:00.000Z")), "subgroups": [  ] }
+{ "timebin": interval(time("10:36:00.000Z"), time("10:37:00.000Z")), "subgroups": [  ] }
+{ "timebin": interval(time("10:37:00.000Z"), time("10:38:00.000Z")), "subgroups": [  ] }
+{ "timebin": interval(time("10:38:00.000Z"), time("10:39:00.000Z")), "subgroups": [  ] }
+{ "timebin": interval(time("10:39:00.000Z"), time("10:40:00.000Z")), "subgroups": [  ] }
+{ "timebin": interval(time("10:40:00.000Z"), time("10:41:00.000Z")), "subgroups": [  ] }
+{ "timebin": interval(time("10:41:00.000Z"), time("10:42:00.000Z")), "subgroups": [  ] }
+{ "timebin": interval(time("10:42:00.000Z"), time("10:43:00.000Z")), "subgroups": [  ] }
+{ "timebin": interval(time("10:43:00.000Z"), time("10:44:00.000Z")), "subgroups": [  ] }
+{ "timebin": interval(time("10:44:00.000Z"), time("10:45:00.000Z")), "subgroups": [  ] }
+{ "timebin": interval(time("10:45:00.000Z"), time("10:46:00.000Z")), "subgroups": [  ] }
+{ "timebin": interval(time("10:46:00.000Z"), time("10:47:00.000Z")), "subgroups": [  ] }
+{ "timebin": interval(time("10:47:00.000Z"), time("10:48:00.000Z")), "subgroups": [  ] }
+{ "timebin": interval(time("10:48:00.000Z"), time("10:49:00.000Z")), "subgroups": [  ] }
+{ "timebin": interval(time("10:49:00.000Z"), time("10:50:00.000Z")), "subgroups": [  ] }
+{ "timebin": interval(time("10:50:00.000Z"), time("10:51:00.000Z")), "subgroups": [  ] }
+{ "timebin": interval(time("10:51:00.000Z"), time("10:52:00.000Z")), "subgroups": [  ] }
+{ "timebin": interval(time("10:52:00.000Z"), time("10:53:00.000Z")), "subgroups": [  ] }
+{ "timebin": interval(time("10:53:00.000Z"), time("10:54:00.000Z")), "subgroups": [  ] }
+{ "timebin": interval(time("10:54:00.000Z"), time("10:55:00.000Z")), "subgroups": [  ] }
+{ "timebin": interval(time("10:55:00.000Z"), time("10:56:00.000Z")), "subgroups": [  ] }
+{ "timebin": interval(time("10:56:00.000Z"), time("10:57:00.000Z")), "subgroups": [  ] }
+{ "timebin": interval(time("10:57:00.000Z"), time("10:58:00.000Z")), "subgroups": [  ] }
+{ "timebin": interval(time("10:58:00.000Z"), time("10:59:00.000Z")), "subgroups": [  ] }
+{ "timebin": interval(time("10:59:00.000Z"), time("11:00:00.000Z")), "subgroups": [  ] }
+{ "timebin": interval(time("11:00:00.000Z"), time("11:01:00.000Z")), "subgroups": [  ] }
+{ "timebin": interval(time("11:01:00.000Z"), time("11:02:00.000Z")), "subgroups": [  ] }
+{ "timebin": interval(time("11:02:00.000Z"), time("11:03:00.000Z")), "subgroups": [  ] }
+{ "timebin": interval(time("11:03:00.000Z"), time("11:04:00.000Z")), "subgroups": [  ] }
+{ "timebin": interval(time("11:04:00.000Z"), time("11:05:00.000Z")), "subgroups": [  ] }
+{ "timebin": interval(time("11:05:00.000Z"), time("11:06:00.000Z")), "subgroups": [  ] }
+{ "timebin": interval(time("11:06:00.000Z"), time("11:07:00.000Z")), "subgroups": [  ] }
+{ "timebin": interval(time("11:07:00.000Z"), time("11:08:00.000Z")), "subgroups": [ { "subgid": "Email", "item_count": 2 } ] }
+{ "timebin": interval(time("11:08:00.000Z"), time("11:09:00.000Z")), "subgroups": [  ] }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/d434b50f/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/issue363_equality/issue363_equality.3.ast
----------------------------------------------------------------------
diff --git a/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/issue363_equality/issue363_equality.3.ast b/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/issue363_equality/issue363_equality.3.ast
index a25e02e..5bf9603 100644
--- a/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/issue363_equality/issue363_equality.3.ast
+++ b/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/issue363_equality/issue363_equality.3.ast
@@ -108,7 +108,7 @@ RecordConstructor [
     LiteralExpr [STRING] [interval]
     :
     OperatorExpr [
-      FunctionCall null.interval-from-datetime@2[
+      FunctionCall null.interval@2[
         FunctionCall null.datetime@1[
           LiteralExpr [STRING] [-1987-11-19T02:43:57.938+08:00]
         ]
@@ -117,7 +117,7 @@ RecordConstructor [
         ]
       ]
       =
-      FunctionCall null.interval-from-datetime@2[
+      FunctionCall null.interval@2[
         FunctionCall null.datetime@1[
           LiteralExpr [STRING] [-1987-11-19T02:43:57.938+08:00]
         ]
@@ -235,7 +235,7 @@ RecordConstructor [
     LiteralExpr [STRING] [interval2]
     :
     OperatorExpr [
-      FunctionCall null.interval-from-datetime@2[
+      FunctionCall null.interval@2[
         FunctionCall null.datetime@1[
           LiteralExpr [STRING] [-1987-11-19T02:43:57.938+08:00]
         ]
@@ -244,7 +244,7 @@ RecordConstructor [
         ]
       ]
       !=
-      FunctionCall null.interval-from-datetime@2[
+      FunctionCall null.interval@2[
         FunctionCall null.datetime@1[
           LiteralExpr [STRING] [-1983-11-19T02:43:57.938+08:00]
         ]

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/d434b50f/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/issue363_inequality_interval/issue363_inequality_interval.3.ast
----------------------------------------------------------------------
diff --git a/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/issue363_inequality_interval/issue363_inequality_interval.3.ast b/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/issue363_inequality_interval/issue363_inequality_interval.3.ast
index 498aa79..e59b50f 100644
--- a/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/issue363_inequality_interval/issue363_inequality_interval.3.ast
+++ b/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/issue363_inequality_interval/issue363_inequality_interval.3.ast
@@ -4,7 +4,7 @@ RecordConstructor [
     LiteralExpr [STRING] [interval0]
     :
     OperatorExpr [
-      FunctionCall null.interval-from-datetime@2[
+      FunctionCall null.interval@2[
         FunctionCall null.datetime@1[
           LiteralExpr [STRING] [-1987-11-19T02:43:57.938+08:00]
         ]
@@ -13,7 +13,7 @@ RecordConstructor [
         ]
       ]
       >
-      FunctionCall null.interval-from-datetime@2[
+      FunctionCall null.interval@2[
         FunctionCall null.datetime@1[
           LiteralExpr [STRING] [-1983-11-19T02:43:57.938+08:00]
         ]
@@ -27,7 +27,7 @@ RecordConstructor [
     LiteralExpr [STRING] [interval1]
     :
     OperatorExpr [
-      FunctionCall null.interval-from-datetime@2[
+      FunctionCall null.interval@2[
         FunctionCall null.datetime@1[
           LiteralExpr [STRING] [-1983-11-19T02:43:57.938+08:00]
         ]
@@ -36,7 +36,7 @@ RecordConstructor [
         ]
       ]
       <
-      FunctionCall null.interval-from-datetime@2[
+      FunctionCall null.interval@2[
         FunctionCall null.datetime@1[
           LiteralExpr [STRING] [-1987-11-19T02:43:57.938+08:00]
         ]
@@ -50,7 +50,7 @@ RecordConstructor [
     LiteralExpr [STRING] [interval2]
     :
     OperatorExpr [
-      FunctionCall null.interval-from-datetime@2[
+      FunctionCall null.interval@2[
         FunctionCall null.datetime@1[
           LiteralExpr [STRING] [-1987-11-19T02:43:57.938+08:00]
         ]
@@ -59,7 +59,7 @@ RecordConstructor [
         ]
       ]
       >=
-      FunctionCall null.interval-from-datetime@2[
+      FunctionCall null.interval@2[
         FunctionCall null.datetime@1[
           LiteralExpr [STRING] [-1983-11-19T02:43:57.938+08:00]
         ]
@@ -73,7 +73,7 @@ RecordConstructor [
     LiteralExpr [STRING] [interval3]
     :
     OperatorExpr [
-      FunctionCall null.interval-from-datetime@2[
+      FunctionCall null.interval@2[
         FunctionCall null.datetime@1[
           LiteralExpr [STRING] [-1983-11-19T02:43:57.938+08:00]
         ]
@@ -82,7 +82,7 @@ RecordConstructor [
         ]
       ]
       <=
-      FunctionCall null.interval-from-datetime@2[
+      FunctionCall null.interval@2[
         FunctionCall null.datetime@1[
           LiteralExpr [STRING] [-1987-11-19T02:43:57.938+08:00]
         ]

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/d434b50f/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/constructor/interval/interval.3.ast
----------------------------------------------------------------------
diff --git a/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/constructor/interval/interval.3.ast b/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/constructor/interval/interval.3.ast
index fd0e9c5..0382c4f 100644
--- a/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/constructor/interval/interval.3.ast
+++ b/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/constructor/interval/interval.3.ast
@@ -2,182 +2,6 @@ DataverseUse test
 Query:
 RecordConstructor [
   (
-    LiteralExpr [STRING] [interval11]
-    :
-    FunctionCall test.interval-from-date@2[
-      FunctionCall test.date@1[
-        LiteralExpr [STRING] [2010-10-30]
-      ]
-      FunctionCall test.date@1[
-        LiteralExpr [STRING] [2012-10-21]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [interval12]
-    :
-    FunctionCall test.interval-from-date@2[
-      LiteralExpr [STRING] [2010-10-30]
-      FunctionCall test.date@1[
-        LiteralExpr [STRING] [2012-10-21]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [interval13]
-    :
-    FunctionCall test.interval-from-date@2[
-      FunctionCall test.date@1[
-        LiteralExpr [STRING] [2010-10-30]
-      ]
-      LiteralExpr [STRING] [2012-10-21]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [interval14]
-    :
-    FunctionCall test.interval-from-date@2[
-      LiteralExpr [STRING] [2010-10-30]
-      LiteralExpr [STRING] [2012-10-21]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [interval15]
-    :
-    FunctionCall test.interval-from-date@2[
-      LiteralExpr [NULL]
-      LiteralExpr [STRING] [2012-10-21]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [interval16]
-    :
-    FunctionCall test.interval-from-date@2[
-      LiteralExpr [STRING] [2010-10-30]
-      LiteralExpr [NULL]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [interval21]
-    :
-    FunctionCall test.interval-from-time@2[
-      FunctionCall test.time@1[
-        LiteralExpr [STRING] [03:04:05.678-11:00]
-      ]
-      FunctionCall test.time@1[
-        LiteralExpr [STRING] [232425267+0200]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [interval22]
-    :
-    FunctionCall test.interval-from-time@2[
-      LiteralExpr [STRING] [03:04:05.678-11:00]
-      FunctionCall test.time@1[
-        LiteralExpr [STRING] [232425267+0200]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [interval23]
-    :
-    FunctionCall test.interval-from-time@2[
-      FunctionCall test.time@1[
-        LiteralExpr [STRING] [03:04:05.678-11:00]
-      ]
-      LiteralExpr [STRING] [232425267+0200]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [interval24]
-    :
-    FunctionCall test.interval-from-time@2[
-      LiteralExpr [STRING] [03:04:05.678-11:00]
-      LiteralExpr [STRING] [232425267+0200]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [interval25]
-    :
-    FunctionCall test.interval-from-time@2[
-      LiteralExpr [NULL]
-      FunctionCall test.time@1[
-        LiteralExpr [STRING] [232425267+0200]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [interval26]
-    :
-    FunctionCall test.interval-from-time@2[
-      FunctionCall test.time@1[
-        LiteralExpr [STRING] [03:04:05.678-11:00]
-      ]
-      LiteralExpr [NULL]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [interval31]
-    :
-    FunctionCall test.interval-from-datetime@2[
-      FunctionCall test.datetime@1[
-        LiteralExpr [STRING] [-1987-11-19T02:43:57.938+08:00]
-      ]
-      FunctionCall test.datetime@1[
-        LiteralExpr [STRING] [19991112T124935948-0700]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [interval32]
-    :
-    FunctionCall test.interval-from-datetime@2[
-      LiteralExpr [STRING] [-1987-11-19T02:43:57.938+08:00]
-      FunctionCall test.datetime@1[
-        LiteralExpr [STRING] [19991112T124935948-0700]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [interval33]
-    :
-    FunctionCall test.interval-from-datetime@2[
-      FunctionCall test.datetime@1[
-        LiteralExpr [STRING] [-1987-11-19T02:43:57.938+08:00]
-      ]
-      LiteralExpr [STRING] [19991112T124935948-0700]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [interval34]
-    :
-    FunctionCall test.interval-from-datetime@2[
-      LiteralExpr [STRING] [-1987-11-19T02:43:57.938+08:00]
-      LiteralExpr [STRING] [19991112T124935948-0700]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [interval35]
-    :
-    FunctionCall test.interval-from-datetime@2[
-      LiteralExpr [NULL]
-      FunctionCall test.datetime@1[
-        LiteralExpr [STRING] [19991112T124935948-0700]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [interval36]
-    :
-    FunctionCall test.interval-from-datetime@2[
-      FunctionCall test.datetime@1[
-        LiteralExpr [STRING] [-1987-11-19T02:43:57.938+08:00]
-      ]
-      LiteralExpr [NULL]
-    ]
-  )
-  (
     LiteralExpr [STRING] [interval41]
     :
     FunctionCall test.interval-start-from-date@2[
@@ -357,4 +181,100 @@ RecordConstructor [
       LiteralExpr [NULL]
     ]
   )
-]
+  (
+    LiteralExpr [STRING] [interval71]
+    :
+    FunctionCall test.interval@2[
+      FunctionCall test.date@1[
+        LiteralExpr [STRING] [2010-10-30]
+      ]
+      FunctionCall test.date@1[
+        LiteralExpr [STRING] [2012-10-21]
+      ]
+    ]
+  )
+  (
+    LiteralExpr [STRING] [interval72]
+    :
+    FunctionCall test.interval@2[
+      LiteralExpr [NULL]
+      FunctionCall test.date@1[
+        LiteralExpr [STRING] [2012-10-21]
+      ]
+    ]
+  )
+  (
+    LiteralExpr [STRING] [interval73]
+    :
+    FunctionCall test.interval@2[
+      FunctionCall test.date@1[
+        LiteralExpr [STRING] [2010-10-30]
+      ]
+      LiteralExpr [NULL]
+    ]
+  )
+  (
+    LiteralExpr [STRING] [interval74]
+    :
+    FunctionCall test.interval@2[
+      FunctionCall test.time@1[
+        LiteralExpr [STRING] [03:04:05.678-11:00]
+      ]
+      FunctionCall test.time@1[
+        LiteralExpr [STRING] [232425267+0200]
+      ]
+    ]
+  )
+  (
+    LiteralExpr [STRING] [interval75]
+    :
+    FunctionCall test.interval@2[
+      LiteralExpr [NULL]
+      FunctionCall test.time@1[
+        LiteralExpr [STRING] [232425267+0200]
+      ]
+    ]
+  )
+  (
+    LiteralExpr [STRING] [interval76]
+    :
+    FunctionCall test.interval@2[
+      FunctionCall test.time@1[
+        LiteralExpr [STRING] [03:04:05.678-11:00]
+      ]
+      LiteralExpr [NULL]
+    ]
+  )
+  (
+    LiteralExpr [STRING] [interval77]
+    :
+    FunctionCall test.interval@2[
+      FunctionCall test.datetime@1[
+        LiteralExpr [STRING] [-1987-11-19T02:43:57.938+08:00]
+      ]
+      FunctionCall test.datetime@1[
+        LiteralExpr [STRING] [19991112T124935948-0700]
+      ]
+    ]
+  )
+  (
+    LiteralExpr [STRING] [interval78]
+    :
+    FunctionCall test.interval@2[
+      LiteralExpr [NULL]
+      FunctionCall test.datetime@1[
+        LiteralExpr [STRING] [19991112T124935948-0700]
+      ]
+    ]
+  )
+  (
+    LiteralExpr [STRING] [interval79]
+    :
+    FunctionCall test.interval@2[
+      FunctionCall test.datetime@1[
+        LiteralExpr [STRING] [-1987-11-19T02:43:57.938+08:00]
+      ]
+      LiteralExpr [NULL]
+    ]
+  )
+]
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/d434b50f/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/accessors_interval/accessors_interval.3.ast
----------------------------------------------------------------------
diff --git a/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/accessors_interval/accessors_interval.3.ast b/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/accessors_interval/accessors_interval.3.ast
index da3708c..f3014f0 100644
--- a/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/accessors_interval/accessors_interval.3.ast
+++ b/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/accessors_interval/accessors_interval.3.ast
@@ -5,11 +5,13 @@ RecordConstructor [
     LiteralExpr [STRING] [start1]
     :
     FunctionCall test.get-interval-start@1[
-      FunctionCall test.interval-from-date@2[
+      FunctionCall test.interval@2[
         FunctionCall test.date@1[
           LiteralExpr [STRING] [2010-10-30]
         ]
-        LiteralExpr [STRING] [2013-04-01]
+        FunctionCall test.date@1[
+          LiteralExpr [STRING] [2013-04-01]
+        ]
       ]
     ]
   )
@@ -17,11 +19,13 @@ RecordConstructor [
     LiteralExpr [STRING] [end1]
     :
     FunctionCall test.get-interval-end@1[
-      FunctionCall test.interval-from-date@2[
+      FunctionCall test.interval@2[
         FunctionCall test.date@1[
           LiteralExpr [STRING] [2010-10-30]
         ]
-        LiteralExpr [STRING] [2013-04-01]
+        FunctionCall test.date@1[
+          LiteralExpr [STRING] [2013-04-01]
+        ]
       ]
     ]
   )
@@ -29,8 +33,10 @@ RecordConstructor [
     LiteralExpr [STRING] [start2]
     :
     FunctionCall test.get-interval-start@1[
-      FunctionCall test.interval-from-time@2[
-        LiteralExpr [STRING] [08:09:10.234Z]
+      FunctionCall test.interval@2[
+        FunctionCall test.time@1[
+          LiteralExpr [STRING] [08:09:10.234Z]
+        ]
         FunctionCall test.time@1[
           LiteralExpr [STRING] [203040567+0800]
         ]
@@ -41,8 +47,10 @@ RecordConstructor [
     LiteralExpr [STRING] [end2]
     :
     FunctionCall test.get-interval-end@1[
-      FunctionCall test.interval-from-time@2[
-        LiteralExpr [STRING] [08:09:10.234Z]
+      FunctionCall test.interval@2[
+        FunctionCall test.time@1[
+          LiteralExpr [STRING] [08:09:10.234Z]
+        ]
         FunctionCall test.time@1[
           LiteralExpr [STRING] [203040567+0800]
         ]
@@ -53,8 +61,10 @@ RecordConstructor [
     LiteralExpr [STRING] [start3]
     :
     FunctionCall test.get-interval-start@1[
-      FunctionCall test.interval-from-datetime@2[
-        LiteralExpr [STRING] [2009-09-01T00:00:00.000+08:00]
+      FunctionCall test.interval@2[
+        FunctionCall test.datetime@1[
+          LiteralExpr [STRING] [2009-09-01T00:00:00.000+08:00]
+        ]
         FunctionCall test.datetime-from-date-time@2[
           FunctionCall test.date@1[
             LiteralExpr [STRING] [2013-04-04]
@@ -70,8 +80,10 @@ RecordConstructor [
     LiteralExpr [STRING] [end3]
     :
     FunctionCall test.get-interval-end@1[
-      FunctionCall test.interval-from-datetime@2[
-        LiteralExpr [STRING] [2009-09-01T00:00:00.000+08:00]
+      FunctionCall test.interval@2[
+        FunctionCall test.datetime@1[
+          LiteralExpr [STRING] [2009-09-01T00:00:00.000+08:00]
+        ]
         FunctionCall test.datetime-from-date-time@2[
           FunctionCall test.date@1[
             LiteralExpr [STRING] [2013-04-04]
@@ -83,4 +95,4 @@ RecordConstructor [
       ]
     ]
   )
-]
+]
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/d434b50f/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/duration_functions/duration_functions.3.ast
----------------------------------------------------------------------
diff --git a/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/duration_functions/duration_functions.3.ast b/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/duration_functions/duration_functions.3.ast
index 0ab1988..6d2d197 100644
--- a/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/duration_functions/duration_functions.3.ast
+++ b/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/duration_functions/duration_functions.3.ast
@@ -5,9 +5,13 @@ RecordConstructor [
     LiteralExpr [STRING] [dr1]
     :
     FunctionCall test.duration-from-interval@1[
-      FunctionCall test.interval-from-date@2[
-        LiteralExpr [STRING] [2010-10-30]
-        LiteralExpr [STRING] [2010-12-21]
+      FunctionCall test.interval@2[
+        FunctionCall test.date@1[
+          LiteralExpr [STRING] [2010-10-30]
+        ]
+        FunctionCall test.date@1[
+          LiteralExpr [STRING] [2010-12-21]
+        ]
       ]
     ]
   )
@@ -15,9 +19,13 @@ RecordConstructor [
     LiteralExpr [STRING] [dr2]
     :
     FunctionCall test.duration-from-interval@1[
-      FunctionCall test.interval-from-datetime@2[
-        LiteralExpr [STRING] [2012-06-26T01:01:01.111]
-        LiteralExpr [STRING] [2012-07-27T02:02:02.222]
+      FunctionCall test.interval@2[
+        FunctionCall test.datetime@1[
+          LiteralExpr [STRING] [2012-06-26T01:01:01.111]
+        ]
+        FunctionCall test.datetime@1[
+          LiteralExpr [STRING] [2012-07-27T02:02:02.222]
+        ]
       ]
     ]
   )
@@ -25,9 +33,13 @@ RecordConstructor [
     LiteralExpr [STRING] [dr3]
     :
     FunctionCall test.duration-from-interval@1[
-      FunctionCall test.interval-from-time@2[
-        LiteralExpr [STRING] [12:32:38]
-        LiteralExpr [STRING] [20:29:20]
+      FunctionCall test.interval@2[
+        FunctionCall test.time@1[
+          LiteralExpr [STRING] [12:32:38]
+        ]
+        FunctionCall test.time@1[
+          LiteralExpr [STRING] [20:29:20]
+        ]
       ]
     ]
   )
@@ -38,4 +50,4 @@ RecordConstructor [
       LiteralExpr [NULL]
     ]
   )
-]
+]
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/d434b50f/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/get_overlapping_interval/get_overlapping_interval.3.ast
----------------------------------------------------------------------
diff --git a/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/get_overlapping_interval/get_overlapping_interval.3.ast b/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/get_overlapping_interval/get_overlapping_interval.3.ast
index 72400ac..8fb6da7 100644
--- a/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/get_overlapping_interval/get_overlapping_interval.3.ast
+++ b/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/get_overlapping_interval/get_overlapping_interval.3.ast
@@ -5,7 +5,7 @@ RecordConstructor [
     LiteralExpr [STRING] [overlap1]
     :
     FunctionCall null.get-overlapping-interval@2[
-      FunctionCall null.interval-from-time@2[
+      FunctionCall null.interval@2[
         FunctionCall null.time@1[
           LiteralExpr [STRING] [11:23:39]
         ]
@@ -13,7 +13,7 @@ RecordConstructor [
           LiteralExpr [STRING] [18:27:19]
         ]
       ]
-      FunctionCall null.interval-from-time@2[
+      FunctionCall null.interval@2[
         FunctionCall null.time@1[
           LiteralExpr [STRING] [12:23:39]
         ]
@@ -27,7 +27,7 @@ RecordConstructor [
     LiteralExpr [STRING] [overlap2]
     :
     FunctionCall null.get-overlapping-interval@2[
-      FunctionCall null.interval-from-time@2[
+      FunctionCall null.interval@2[
         FunctionCall null.time@1[
           LiteralExpr [STRING] [12:23:39]
         ]
@@ -35,7 +35,7 @@ RecordConstructor [
           LiteralExpr [STRING] [18:27:19]
         ]
       ]
-      FunctionCall null.interval-from-time@2[
+      FunctionCall null.interval@2[
         FunctionCall null.time@1[
           LiteralExpr [STRING] [07:19:39]
         ]
@@ -49,7 +49,7 @@ RecordConstructor [
     LiteralExpr [STRING] [overlap3]
     :
     FunctionCall null.get-overlapping-interval@2[
-      FunctionCall null.interval-from-date@2[
+      FunctionCall null.interval@2[
         FunctionCall null.date@1[
           LiteralExpr [STRING] [1980-11-30]
         ]
@@ -57,7 +57,7 @@ RecordConstructor [
           LiteralExpr [STRING] [1999-09-09]
         ]
       ]
-      FunctionCall null.interval-from-date@2[
+      FunctionCall null.interval@2[
         FunctionCall null.date@1[
           LiteralExpr [STRING] [2013-01-01]
         ]
@@ -71,7 +71,7 @@ RecordConstructor [
     LiteralExpr [STRING] [overlap4]
     :
     FunctionCall null.get-overlapping-interval@2[
-      FunctionCall null.interval-from-date@2[
+      FunctionCall null.interval@2[
         FunctionCall null.date@1[
           LiteralExpr [STRING] [1980-11-30]
         ]
@@ -79,7 +79,7 @@ RecordConstructor [
           LiteralExpr [STRING] [2099-09-09]
         ]
       ]
-      FunctionCall null.interval-from-date@2[
+      FunctionCall null.interval@2[
         FunctionCall null.date@1[
           LiteralExpr [STRING] [2013-01-01]
         ]
@@ -93,7 +93,7 @@ RecordConstructor [
     LiteralExpr [STRING] [overlap5]
     :
     FunctionCall null.get-overlapping-interval@2[
-      FunctionCall null.interval-from-datetime@2[
+      FunctionCall null.interval@2[
         FunctionCall null.datetime@1[
           LiteralExpr [STRING] [1844-03-03T11:19:39]
         ]
@@ -101,7 +101,7 @@ RecordConstructor [
           LiteralExpr [STRING] [2000-10-30T18:27:19]
         ]
       ]
-      FunctionCall null.interval-from-datetime@2[
+      FunctionCall null.interval@2[
         FunctionCall null.datetime@1[
           LiteralExpr [STRING] [1989-03-04T12:23:39]
         ]
@@ -115,7 +115,7 @@ RecordConstructor [
     LiteralExpr [STRING] [overlap6]
     :
     FunctionCall null.get-overlapping-interval@2[
-      FunctionCall null.interval-from-datetime@2[
+      FunctionCall null.interval@2[
         FunctionCall null.datetime@1[
           LiteralExpr [STRING] [1989-03-04T12:23:39]
         ]
@@ -123,7 +123,7 @@ RecordConstructor [
           LiteralExpr [STRING] [2000-10-30T18:27:19]
         ]
       ]
-      FunctionCall null.interval-from-datetime@2[
+      FunctionCall null.interval@2[
         FunctionCall null.datetime@1[
           LiteralExpr [STRING] [1844-03-03T11:19:39]
         ]
@@ -134,4 +134,4 @@ RecordConstructor [
     ]
   )
 ]
-]
+]
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/d434b50f/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/interval_functions/interval_functions.3.ast
----------------------------------------------------------------------
diff --git a/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/interval_functions/interval_functions.3.ast b/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/interval_functions/interval_functions.3.ast
index e85501d..f4e11c6 100644
--- a/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/interval_functions/interval_functions.3.ast
+++ b/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/interval_functions/interval_functions.3.ast
@@ -2,21 +2,33 @@ DataverseUse test
 Query:
 LetVariable [ Name=itv1 ]
   :=
-  FunctionCall test.interval-from-date@2[
-    LiteralExpr [STRING] [2010-10-30]
-    LiteralExpr [STRING] [2010-12-21]
+  FunctionCall test.interval@2[
+    FunctionCall test.date@1[
+      LiteralExpr [STRING] [2010-10-30]
+    ]
+    FunctionCall test.date@1[
+      LiteralExpr [STRING] [2010-12-21]
+    ]
   ]
 LetVariable [ Name=itv2 ]
   :=
-  FunctionCall test.interval-from-date@2[
-    LiteralExpr [STRING] [2011-10-30]
-    LiteralExpr [STRING] [2012-10-21]
+  FunctionCall test.interval@2[
+    FunctionCall test.date@1[
+      LiteralExpr [STRING] [2011-10-30]
+    ]
+    FunctionCall test.date@1[
+      LiteralExpr [STRING] [2012-10-21]
+    ]
   ]
 LetVariable [ Name=itv3 ]
   :=
-  FunctionCall test.interval-from-date@2[
-    LiteralExpr [STRING] [2010-12-21]
-    LiteralExpr [STRING] [2013-01-01]
+  FunctionCall test.interval@2[
+    FunctionCall test.date@1[
+      LiteralExpr [STRING] [2010-12-21]
+    ]
+    FunctionCall test.date@1[
+      LiteralExpr [STRING] [2013-01-01]
+    ]
   ]
 LetVariable [ Name=blnBefore1 ]
   :=
@@ -44,21 +56,33 @@ LetVariable [ Name=blnAfter2 ]
   ]
 LetVariable [ Name=itv4 ]
   :=
-  FunctionCall test.interval-from-datetime@2[
-    LiteralExpr [STRING] [2012-06-26T01:01:01.111]
-    LiteralExpr [STRING] [2012-07-27T02:02:02.222]
+  FunctionCall test.interval@2[
+    FunctionCall test.datetime@1[
+      LiteralExpr [STRING] [2012-06-26T01:01:01.111]
+    ]
+    FunctionCall test.datetime@1[
+      LiteralExpr [STRING] [2012-07-27T02:02:02.222]
+    ]
   ]
 LetVariable [ Name=itv5 ]
   :=
-  FunctionCall test.interval-from-datetime@2[
-    LiteralExpr [STRING] [20120727T020202222]
-    LiteralExpr [STRING] [2013-08-08T03:03:03.333]
+  FunctionCall test.interval@2[
+    FunctionCall test.datetime@1[
+      LiteralExpr [STRING] [20120727T020202222]
+    ]
+    FunctionCall test.datetime@1[
+      LiteralExpr [STRING] [2013-08-08T03:03:03.333]
+    ]
   ]
 LetVariable [ Name=itv6 ]
   :=
-  FunctionCall test.interval-from-datetime@2[
-    LiteralExpr [STRING] [19000707T020202222]
-    LiteralExpr [STRING] [2013-08-07T03:03:03.333]
+  FunctionCall test.interval@2[
+    FunctionCall test.datetime@1[
+      LiteralExpr [STRING] [19000707T020202222]
+    ]
+    FunctionCall test.datetime@1[
+      LiteralExpr [STRING] [2013-08-07T03:03:03.333]
+    ]
   ]
 LetVariable [ Name=blnMeet1 ]
   :=
@@ -86,21 +110,33 @@ LetVariable [ Name=blnMetBy2 ]
   ]
 LetVariable [ Name=itv7 ]
   :=
-  FunctionCall test.interval-from-time@2[
-    LiteralExpr [STRING] [12:32:38]
-    LiteralExpr [STRING] [20:29:20]
+  FunctionCall test.interval@2[
+    FunctionCall test.time@1[
+      LiteralExpr [STRING] [12:32:38]
+    ]
+    FunctionCall test.time@1[
+      LiteralExpr [STRING] [20:29:20]
+    ]
   ]
 LetVariable [ Name=itv8 ]
   :=
-  FunctionCall test.interval-from-time@2[
-    LiteralExpr [STRING] [17:48:19]
-    LiteralExpr [STRING] [22:19:49]
+  FunctionCall test.interval@2[
+    FunctionCall test.time@1[
+      LiteralExpr [STRING] [17:48:19]
+    ]
+    FunctionCall test.time@1[
+      LiteralExpr [STRING] [22:19:49]
+    ]
   ]
 LetVariable [ Name=itv9 ]
   :=
-  FunctionCall test.interval-from-time@2[
-    LiteralExpr [STRING] [01:32:49]
-    LiteralExpr [STRING] [17:48:19]
+  FunctionCall test.interval@2[
+    FunctionCall test.time@1[
+      LiteralExpr [STRING] [01:32:49]
+    ]
+    FunctionCall test.time@1[
+      LiteralExpr [STRING] [17:48:19]
+    ]
   ]
 LetVariable [ Name=blnOverlaps1 ]
   :=
@@ -140,9 +176,13 @@ LetVariable [ Name=blnOverlap2 ]
   ]
 LetVariable [ Name=itv10 ]
   :=
-  FunctionCall test.interval-from-date@2[
-    LiteralExpr [STRING] [2010-10-30]
-    LiteralExpr [STRING] [2010-11-30]
+  FunctionCall test.interval@2[
+    FunctionCall test.date@1[
+      LiteralExpr [STRING] [2010-10-30]
+    ]
+    FunctionCall test.date@1[
+      LiteralExpr [STRING] [2010-11-30]
+    ]
   ]
 LetVariable [ Name=blnStarts1 ]
   :=
@@ -170,21 +210,33 @@ LetVariable [ Name=blnStartedBy2 ]
   ]
 LetVariable [ Name=itv10 ]
   :=
-  FunctionCall test.interval-from-datetime@2[
-    LiteralExpr [STRING] [19000707T020202222]
-    LiteralExpr [STRING] [2013-08-07T03:03:03.333]
+  FunctionCall test.interval@2[
+    FunctionCall test.datetime@1[
+      LiteralExpr [STRING] [19000707T020202222]
+    ]
+    FunctionCall test.datetime@1[
+      LiteralExpr [STRING] [2013-08-07T03:03:03.333]
+    ]
   ]
 LetVariable [ Name=itv11 ]
   :=
-  FunctionCall test.interval-from-datetime@2[
-    LiteralExpr [STRING] [19990707T020202222]
-    LiteralExpr [STRING] [2013-08-07T03:03:03.333]
+  FunctionCall test.interval@2[
+    FunctionCall test.datetime@1[
+      LiteralExpr [STRING] [19990707T020202222]
+    ]
+    FunctionCall test.datetime@1[
+      LiteralExpr [STRING] [2013-08-07T03:03:03.333]
+    ]
   ]
 LetVariable [ Name=itv12 ]
   :=
-  FunctionCall test.interval-from-datetime@2[
-    LiteralExpr [STRING] [-19990707T020202222]
-    LiteralExpr [STRING] [2013-08-07T03:03:03.333]
+  FunctionCall test.interval@2[
+    FunctionCall test.datetime@1[
+      LiteralExpr [STRING] [-19990707T020202222]
+    ]
+    FunctionCall test.datetime@1[
+      LiteralExpr [STRING] [2013-08-07T03:03:03.333]
+    ]
   ]
 LetVariable [ Name=blnCovers1 ]
   :=
@@ -212,9 +264,13 @@ LetVariable [ Name=blnCoveredBy2 ]
   ]
 LetVariable [ Name=itv11 ]
   :=
-  FunctionCall test.interval-from-time@2[
-    LiteralExpr [STRING] [19:00:00.009]
-    LiteralExpr [STRING] [20:29:20.000]
+  FunctionCall test.interval@2[
+    FunctionCall test.time@1[
+      LiteralExpr [STRING] [19:00:00.009]
+    ]
+    FunctionCall test.time@1[
+      LiteralExpr [STRING] [20:29:20.000]
+    ]
   ]
 LetVariable [ Name=blnEnds1 ]
   :=
@@ -406,4 +462,4 @@ RecordConstructor [
     Variable [ Name=null3 ]
   )
 ]
-]
+]
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/d434b50f/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/overlap_bins/overlap_bins.3.ast
----------------------------------------------------------------------
diff --git a/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/overlap_bins/overlap_bins.3.ast b/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/overlap_bins/overlap_bins.3.ast
index 6d2e508..962d9ff 100644
--- a/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/overlap_bins/overlap_bins.3.ast
+++ b/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/overlap_bins/overlap_bins.3.ast
@@ -4,7 +4,7 @@ RecordConstructor [
     LiteralExpr [STRING] [timebins]
     :
     FunctionCall null.overlap-bins@3[
-      FunctionCall null.interval-from-time@2[
+      FunctionCall null.interval@2[
         FunctionCall null.time@1[
           LiteralExpr [STRING] [17:23:37]
         ]
@@ -24,7 +24,7 @@ RecordConstructor [
     LiteralExpr [STRING] [datebins]
     :
     FunctionCall null.overlap-bins@3[
-      FunctionCall null.interval-from-date@2[
+      FunctionCall null.interval@2[
         FunctionCall null.date@1[
           LiteralExpr [STRING] [1984-03-17]
         ]
@@ -44,7 +44,7 @@ RecordConstructor [
     LiteralExpr [STRING] [datetimebins]
     :
     FunctionCall null.overlap-bins@3[
-      FunctionCall null.interval-from-datetime@2[
+      FunctionCall null.interval@2[
         FunctionCall null.datetime@1[
           LiteralExpr [STRING] [1800-01-01T23:59:48.938]
         ]

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/d434b50f/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/overlap_bins_gby_3/overlap_bins_gby_3.3.ast
----------------------------------------------------------------------
diff --git a/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/overlap_bins_gby_3/overlap_bins_gby_3.3.ast b/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/overlap_bins_gby_3/overlap_bins_gby_3.3.ast
index 5197186..645c82c 100644
--- a/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/overlap_bins_gby_3/overlap_bins_gby_3.3.ast
+++ b/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/overlap_bins_gby_3/overlap_bins_gby_3.3.ast
@@ -73,7 +73,7 @@ RecordConstructor [
 ]
 ]
 FROM [  FunctionCall multitask.overlap-bins@3[
-    FunctionCall multitask.interval-from-time@2[
+    FunctionCall multitask.interval@2[
       FunctionCall multitask.min@1[
         (
           SELECT ELEMENT [

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/d434b50f/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 d593039..1c99e67 100644
--- a/asterix-app/src/test/resources/runtimets/testsuite.xml
+++ b/asterix-app/src/test/resources/runtimets/testsuite.xml
@@ -6297,11 +6297,6 @@
                 <output-dir compare="Text">time_functions</output-dir>
             </compilation-unit>
         </test-case>
-        <test-case FilePath="constructor">
-            <compilation-unit name="interval">
-                <output-dir compare="Text">interval</output-dir>
-            </compilation-unit>
-        </test-case>
         <test-case FilePath="temporal">
             <compilation-unit name="duration_comps">
                 <output-dir compare="Text">duration_comps</output-dir>

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/d434b50f/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml
----------------------------------------------------------------------
diff --git a/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml b/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml
index d56cdad..ba36184 100644
--- a/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml
+++ b/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml
@@ -68,7 +68,7 @@
             </compilation-unit>
         </test-case>
     </test-group>
-    <!-- 
+    <!--
     <test-group name="union">
         <test-case FilePath="union">
             <compilation-unit name="union">
@@ -6125,11 +6125,6 @@
                 <output-dir compare="Text">time_functions</output-dir>
             </compilation-unit>
         </test-case>
-        <test-case FilePath="constructor">
-            <compilation-unit name="interval">
-                <output-dir compare="Text">interval</output-dir>
-            </compilation-unit>
-        </test-case>
         <test-case FilePath="temporal">
             <compilation-unit name="duration_comps">
                 <output-dir compare="Text">duration_comps</output-dir>

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/d434b50f/asterix-app/src/test/resources/runtimets/testsuite_sqlpp_parser.xml
----------------------------------------------------------------------
diff --git a/asterix-app/src/test/resources/runtimets/testsuite_sqlpp_parser.xml b/asterix-app/src/test/resources/runtimets/testsuite_sqlpp_parser.xml
index bb7128a..f21d7f7 100644
--- a/asterix-app/src/test/resources/runtimets/testsuite_sqlpp_parser.xml
+++ b/asterix-app/src/test/resources/runtimets/testsuite_sqlpp_parser.xml
@@ -68,7 +68,7 @@
             </compilation-unit>
         </test-case>
     </test-group>
-    <!-- 
+    <!--
     <test-group name="union">
         <test-case FilePath="union">
             <compilation-unit name="union">
@@ -6349,11 +6349,6 @@
                 <output-dir compare="AST">time_functions</output-dir>
             </compilation-unit>
         </test-case>
-        <test-case FilePath="constructor">
-            <compilation-unit name="interval">
-                <output-dir compare="AST">interval</output-dir>
-            </compilation-unit>
-        </test-case>
         <test-case FilePath="temporal">
             <compilation-unit name="duration_comps">
                 <output-dir compare="AST">duration_comps</output-dir>

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/d434b50f/asterix-doc/src/site/markdown/aql/allens.md
----------------------------------------------------------------------
diff --git a/asterix-doc/src/site/markdown/aql/allens.md b/asterix-doc/src/site/markdown/aql/allens.md
index 75fa218..ddf81a6 100644
--- a/asterix-doc/src/site/markdown/aql/allens.md
+++ b/asterix-doc/src/site/markdown/aql/allens.md
@@ -27,9 +27,9 @@
 
 ## <a id="AboutAllensRelations">About Allen's Relations</a> <font size="4"><a href="#toc">[Back to TOC]</a></font> ##
 
-AsterixDB supports Allen's relations over interval types. Allen's relations are also called Allen's interval algebra. There are totally 13 base relations described by this algebra, and all of them are supported in AsterixDB (note that `interval-equals` is supported by the `=` comparison symbol so there is no extra function for it). 
+AsterixDB supports Allen's relations over interval types. Allen's relations are also called Allen's interval algebra. There are totally 13 base relations described by this algebra, and all of them are supported in AsterixDB (note that `interval-equals` is supported by the `=` comparison symbol so there is no extra function for it).
 
-A detailed description of Allen's relations can be found from its [wikipedia entry](http://en.wikipedia.org/wiki/Allen's_interval_algebra). 
+A detailed description of Allen's relations can be found from its [wikipedia entry](http://en.wikipedia.org/wiki/Allen's_interval_algebra).
 
 ## <a id="AllensRelatonsFunctions">Allen's Relations Functions</a> <font size="4"><a href="#toc">[Back to TOC]</a></font> ##
 
@@ -40,19 +40,19 @@ A detailed description of Allen's relations can be found from its [wikipedia ent
         interval-before(interval1, interval2)
         interval-after(interval1, interval2)
 
- * These two functions check whether an interval happens before/after another interval. 
+ * These two functions check whether an interval happens before/after another interval.
  * Arguments:
     * `interval1`, `interval2`: two intervals to be compared
  * Return Value:
-   
+
     A `boolean` value. Specifically, `interval-before(interval1, interval2)` is true if and only if `interval1.end < interval2.start`, and `interval-after(interval1, interval2)` is true if and only if `interval1.start > interval2.end`. If any of the two inputs is `null`, `null` is returned.
 
  * Examples:
 
-        let $itv1 := interval-from-date("2000-01-01", "2005-01-01")
-        let $itv2 := interval-from-date("2005-05-01", "2012-09-09")
+        let $itv1 := interval(date("2000-01-01"), date("2005-01-01"))
+        let $itv2 := interval(date("2005-05-01"), date("2012-09-09"))
         return {"interval-before": interval-before($itv1, $itv2), "interval-after": interval-after($itv2, $itv1)}
-        
+
  * The expected result is:
 
         { "interval-before": true, "interval-after": true }
@@ -69,7 +69,7 @@ A detailed description of Allen's relations can be found from its [wikipedia ent
  * Arguments:
     * `interval1`, `interval2`: two intervals to be compared
  * Return Value:
-   
+
     A `boolean` value. Specifically, `interval-covers(interval1, interval2)` is true if and only if
 
         interval1.start <= interval2.start
@@ -84,14 +84,14 @@ A detailed description of Allen's relations can be found from its [wikipedia ent
 
  * Examples:
 
-        let $itv1 := interval-from-date("2000-01-01", "2005-01-01")
-        let $itv2 := interval-from-date("2000-03-01", "2004-09-09")
-        let $itv3 := interval-from-date("2006-08-01", "2007-03-01")
-        let $itv4 := interval-from-date("2004-09-10", "2012-08-01")
+        let $itv1 := interval(date("2000-01-01"), date("2005-01-01"))
+        let $itv2 := interval(date("2000-03-01"), date("2004-09-09"))
+        let $itv3 := interval(date("2006-08-01"), date("2007-03-01"))
+        let $itv4 := interval(date("2004-09-10"), date("2012-08-01"))
         return {"interval-covers": interval-covers($itv1, $itv2), "interval-covered-by": interval-covered-by($itv3, $itv4)}
-        
+
  * The expected result is:
- 
+
         { "interval-covers": true, "interval-covered-by": true }
 
 
@@ -106,7 +106,7 @@ A detailed description of Allen's relations can be found from its [wikipedia ent
  * Arguments:
     * `interval1`, `interval2`: two intervals to be compared
  * Return Value:
-   
+
     A `boolean` value. Specifically, `interval-overlaps(interval1, interval2)` is true if and only if
 
         interval1.start < interval2.start
@@ -125,15 +125,15 @@ A detailed description of Allen's relations can be found from its [wikipedia ent
 
  * Examples:
 
-        let $itv1 := interval-from-date("2000-01-01", "2005-01-01")
-        let $itv2 := interval-from-date("2004-05-01", "2012-09-09")
-        let $itv3 := interval-from-date("2006-08-01", "2007-03-01")
-        let $itv4 := interval-from-date("2004-09-10", "2006-12-31")
-        return {"overlaps": interval-overlaps($itv1, $itv2), 
+        let $itv1 := interval(date("2000-01-01"), date("2005-01-01"))
+        let $itv2 := interval(date("2004-05-01"), date("2012-09-09"))
+        let $itv3 := interval(date("2006-08-01"), date("2007-03-01"))
+        let $itv4 := interval(date("2004-09-10"), date("2006-12-31"))
+        return {"overlaps": interval-overlaps($itv1, $itv2),
                 "overlapped-by": interval-overlapped-by($itv3, $itv4)}
-        
+
  * The expected result is:
- 
+
         { "overlaps": true, "overlapped-by": true }
 
 
@@ -144,11 +144,11 @@ Note that `interval-overlapping` is not an Allen's Relation, but syntactic sugar
 
         interval-overlapping(interval1, interval2)
 
- * This functions check whether two intervals share any points with each other. 
+ * This functions check whether two intervals share any points with each other.
  * Arguments:
     * `interval1`, `interval2`: two intervals to be compared
  * Return Value:
-   
+
     A `boolean` value. Specifically, `interval-overlapping(interval1, interval2)` is true if
 
         (interval2.start >= interval1.start
@@ -161,15 +161,15 @@ Note that `interval-overlapping` is not an Allen's Relation, but syntactic sugar
 
  * Examples:
 
-        let $itv1 := interval-from-date("2000-01-01", "2005-01-01")
-        let $itv2 := interval-from-date("2004-05-01", "2012-09-09")
-        let $itv3 := interval-from-date("2006-08-01", "2007-03-01")
-        let $itv4 := interval-from-date("2004-09-10", "2006-12-31")
-        return {"overlapping1": interval-overlapping($itv1, $itv2), 
+        let $itv1 := interval(date("2000-01-01"), date("2005-01-01"))
+        let $itv2 := interval(date("2004-05-01"), date("2012-09-09"))
+        let $itv3 := interval(date("2006-08-01"), date("2007-03-01"))
+        let $itv4 := interval(date("2004-09-10"), date("2006-12-31"))
+        return {"overlapping1": interval-overlapping($itv1, $itv2),
                 "overlapping2": interval-overlapping($itv3, $itv4)}
-        
+
  * The expected result is:
- 
+
         { "overlapping1": true, "overlapping2": true }
 
 
@@ -180,23 +180,23 @@ Note that `interval-overlapping` is not an Allen's Relation, but syntactic sugar
         interval-meets(interval1, interval2)
         interval-met-by(interval1, interval2)
 
- * These two functions check whether an interval meets with another interval. 
+ * These two functions check whether an interval meets with another interval.
  * Arguments:
     * `interval1`, `interval2`: two intervals to be compared
  * Return Value:
-   
+
     A `boolean` value. Specifically, `interval-meets(interval1, interval2)` is true if and only if `interval1.end = interval2.start`, and `interval-met-by(interval1, interval2)` is true if and only if `interval1.start = interval2.end`. If any of the two inputs is `null`, `null` is returned.
 
  * Examples:
 
-        let $itv1 := interval-from-date("2000-01-01", "2005-01-01")
-        let $itv2 := interval-from-date("2005-01-01", "2012-09-09")
-        let $itv3 := interval-from-date("2006-08-01", "2007-03-01")
-        let $itv4 := interval-from-date("2004-09-10", "2006-08-01")
+        let $itv1 := interval(date("2000-01-01"), date("2005-01-01"))
+        let $itv2 := interval(date("2005-01-01"), date("2012-09-09"))
+        let $itv3 := interval(date("2006-08-01"), date("2007-03-01"))
+        let $itv4 := interval(date("2004-09-10"), date("2006-08-01"))
         return {"meets": interval-meets($itv1, $itv2), "metby": interval-met-by($itv3, $itv4)}
 
  * The expected result is:
- 
+
         { "meets": true, "metby": true }
 
 
@@ -211,7 +211,7 @@ Note that `interval-overlapping` is not an Allen's Relation, but syntactic sugar
  * Arguments:
     * `interval1`, `interval2`: two intervals to be compared
  * Return Value:
-   
+
     A `boolean` value. Specifically, `interval-starts(interval1, interval2)` returns true if and only if
 
         interval1.start = interval2.start
@@ -226,14 +226,14 @@ Note that `interval-overlapping` is not an Allen's Relation, but syntactic sugar
 
  * Examples:
 
-        let $itv1 := interval-from-date("2000-01-01", "2005-01-01")
-        let $itv2 := interval-from-date("2000-01-01", "2012-09-09")
-        let $itv3 := interval-from-date("2006-08-01", "2007-03-01")
-        let $itv4 := interval-from-date("2006-08-01", "2006-08-01")
+        let $itv1 := interval(date("2000-01-01"), date("2005-01-01"))
+        let $itv2 := interval(date("2000-01-01"), date("2012-09-09"))
+        let $itv3 := interval(date("2006-08-01"), date("2007-03-01"))
+        let $itv4 := interval(date("2006-08-01"), date("2006-08-02"))
         return {"interval-starts": interval-starts($itv1, $itv2), "interval-started-by": interval-started-by($itv3, $itv4)}
 
  * The expected result is:
- 
+
         { "interval-starts": true, "interval-started-by": true }
 
 
@@ -248,7 +248,7 @@ Note that `interval-overlapping` is not an Allen's Relation, but syntactic sugar
  * Arguments:
     * `interval1`, `interval2`: two intervals to be compared
  * Return Value:
-   
+
     A `boolean` value. Specifically, `interval-ends(interval1, interval2)` returns true if and only if
 
         interval1.end = interval2.end
@@ -263,12 +263,12 @@ Note that `interval-overlapping` is not an Allen's Relation, but syntactic sugar
 
 * Examples:
 
-        let $itv1 := interval-from-date("2000-01-01", "2005-01-01")
-        let $itv2 := interval-from-date("1998-01-01", "2005-01-01")
-        let $itv3 := interval-from-date("2006-08-01", "2007-03-01")
-        let $itv4 := interval-from-date("2006-09-10", "2007-03-01")
+        let $itv1 := interval(date("2000-01-01"), date("2005-01-01"))
+        let $itv2 := interval(date("1998-01-01"), date("2005-01-01"))
+        let $itv3 := interval(date("2006-08-01"), date("2007-03-01"))
+        let $itv4 := interval(date("2006-09-10"), date("2007-03-01"))
         return {"interval-ends": interval-ends($itv1, $itv2), "interval-ended-by": interval-ended-by($itv3, $itv4) }
-        
+
 * The expected result is:
 
         { "interval-ends": true, "interval-ended-by": true }

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/d434b50f/asterix-doc/src/site/markdown/aql/datamodel.md
----------------------------------------------------------------------
diff --git a/asterix-doc/src/site/markdown/aql/datamodel.md b/asterix-doc/src/site/markdown/aql/datamodel.md
index 323e913..59ef5c9 100644
--- a/asterix-doc/src/site/markdown/aql/datamodel.md
+++ b/asterix-doc/src/site/markdown/aql/datamodel.md
@@ -293,15 +293,15 @@ Note that a canonical representation of the duration is always returned, regardl
 
  * Example:
 
-        let $v1 := interval-from-date(date("2013-01-01"), date("20130505"))
-        let $v2 := interval-from-time(time("00:01:01"), time("213901049+0800"))
-        let $v3 := interval-from-datetime(datetime("2013-01-01T00:01:01"), datetime("20130505T213901049+0800"))
+        let $v1 := interval(date("2013-01-01"), date("20130505"))
+        let $v2 := interval(time("00:01:01"), time("213901049+0800"))
+        let $v3 := interval(datetime("2013-01-01T00:01:01"), datetime("20130505T213901049+0800"))
         return { "v1": $v1, "v2": $v2, "v3": $v3 }
 
 
  * The expected result is:
 
-        { "v1": interval-date("2013-01-01, 2013-05-05"), "v2": interval-time("00:01:01.000Z, 13:39:01.049Z"), "v3": interval-datetime("2013-01-01T00:01:01.000Z, 2013-05-05T13:39:01.049Z") }
+        { "v1": interval(date("2013-01-01"), date("2013-05-05")), "v2": interval(time("00:01:01.000Z"), time("13:39:01.049Z")), "v3": interval(datetime("2013-01-01T00:01:01.000Z"), datetime("2013-05-05T13:39:01.049Z")) }
 
 ### <a id="PrimitiveTypesUUID">UUID</a><font size="4"><a href="#toc">[Back to TOC]</a></font> ###
 `uuid` represents a UUID value, which stands for Universally unique identifier. It is defined by a canonical format using hexadecimal text with inserted hyphen characters. (E.g.: 5a28ce1e-6a74-4201-9e8f-683256e5706f). This type is generally used to store auto-generated primary key values.

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/d434b50f/asterix-doc/src/site/markdown/aql/functions.md
----------------------------------------------------------------------
diff --git a/asterix-doc/src/site/markdown/aql/functions.md b/asterix-doc/src/site/markdown/aql/functions.md
index 1907689..4edf2b6 100644
--- a/asterix-doc/src/site/markdown/aql/functions.md
+++ b/asterix-doc/src/site/markdown/aql/functions.md
@@ -2040,11 +2040,11 @@ parse-date/parse-time/parse-datetime(date,formatting_expression)
 
  * The expected result is:
 
-        { "overlap1": interval-time("12:23:39.000Z, 18:27:19.000Z"),
+        { "overlap1": interval(time("12:23:39.000Z"), time("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"),
+          "overlap4": interval(date("2013-01-01"), date("2014-01-01")),
+          "overlap5": interval(datetime("1989-03-04T12:23:39.000Z"), datetime("2000-10-30T18:27:19.000Z")),
           "overlap6": null }
 
 
@@ -2079,83 +2079,17 @@ See the [Allen's Relations](allens.html).
         let $c3 := time("12:23:34.930+07:00")
 
         return { "bin1": interval-bin($c1, date("1990-01-01"), year-month-duration("P1Y")),
-         "bin2": interval-bin($c2, datetime("1990-01-01T00:00:00.000Z"), year-month-duration("P6M")),
-         "bin3": interval-bin($c3, time("00:00:00"), day-time-duration("PD1M")),
-         "bin4": interval-bin($c2, datetime("2013-01-01T00:00:00.000"), day-time-duration("PT24H"))
-       }
+          "bin2": interval-bin($c2, datetime("1990-01-01T00:00:00.000Z"), year-month-duration("P6M")),
+          "bin3": interval-bin($c3, time("00:00:00"), day-time-duration("PT1M")),
+          "bin4": interval-bin($c2, datetime("2013-01-01T00:00:00.000"), day-time-duration("PT24H"))
+        }
 
    * The expected result is:
 
-        { "bin1": interval-date("2010-01-01, 2011-01-01"),
-          "bin2": interval-datetime("-1987-07-01T00:00:00.000Z, -1986-01-01T00:00:00.000Z"),
-          "bin3": interval-time("05:23:00.000Z, 05:24:00.000Z"),
-          "bin4": interval-datetime("-1987-11-19T00:00:00.000Z, -1987-11-20T00:00:00.000Z")}
-
-
-### interval-from-date ###
- * Syntax:
-
-        interval-from-date(string1, string2)
-
- * Constructor function for the `interval` type by parsing two date strings.
- * Arguments:
-    * `string1` : The `string` value representing the starting date.
-    * `string2` : The `string` value representing the ending date.
- * Return Value:
-    * An `interval` value between the two dates.
-
- * Example:
-
-        {"date-interval": interval-from-date("2012-01-01", "2013-04-01")}
-
-
- * The expected result is:
-
-        { "date-interval": interval-date("2012-01-01, 2013-04-01") }
-
-
-### interval-from-time ###
- * Syntax:
-
-        interval-from-time(string1, string2)
-
- * Constructor function for the `interval` type by parsing two time strings.
- * Arguments:
-    * `string1` : The `string` value representing the starting time.
-    * `string2` : The `string` value representing the ending time.
- * Return Value:
-    * An `interval` value between the two times.
-
- * Example:
-
-        {"time-interval": interval-from-time("12:23:34.456Z", "233445567+0800")}
-
-
- * The expected result is:
-
-        { "time-interval": interval-time("12:23:34.456Z, 15:34:45.567Z") }
-
-
-### interval-from-datetime ###
- * Syntax:
-
-        interval-from-datetime(string1, string2)
-
- * Constructor function for `interval` type by parsing two datetime strings.
- * Arguments:
-    * `string1` : The `string` value representing the starting datetime.
-    * `string2` : The `string` value representing the ending datetime.
- * Return Value:
-    * An `interval` value between the two datetimes.
-
- * Example:
-
-        {"datetime-interval": interval-from-datetime("2012-01-01T12:23:34.456+08:00", "20130401T153445567Z")}
-
-
- * The expected result is:
-
-        { "datetime-interval": interval-datetime("2012-01-01T04:23:34.456Z, 2013-04-01T15:34:45.567Z") }
+        { "bin1": interval(date("2010-01-01"), date("2011-01-01")),
+          "bin2": interval(datetime("-1987-07-01T00:00:00.000Z"), datetime("-1986-01-01T00:00:00.000Z")),
+          "bin3": interval(time("05:23:00.000Z"), time("05:24:00.000Z")),
+          "bin4": interval(datetime("-1987-11-19T00:00:00.000Z"), datetime("-1987-11-20T00:00:00.000Z")) }
 
 
 ### interval-start-from-date/time/datetime ###
@@ -2179,7 +2113,9 @@ See the [Allen's Relations](allens.html).
 
  * The expectecd result is:
 
-        { "interval1": interval-date("1984-01-01, 1985-01-01"), "interval2": interval-time("02:23:28.394Z, 05:47:28.394Z"), "interval3": interval-datetime("1999-09-09T09:09:09.999Z, 1999-12-09T09:09:09.999Z") }
+        { "interval1": interval(date("1984-01-01"), date("1985-01-01")),
+          "interval2": interval(time("02:23:28.394Z"), time("05:47:28.394Z")),
+          "interval3": interval(datetime("1999-09-09T09:09:09.999Z"), datetime("1999-12-09T09:09:09.999Z")) }
 
 
 ### overlap-bins ###
@@ -2214,9 +2150,16 @@ See the [Allen's Relations](allens.html).
 
    * The expected result is:
 
-        { "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") ] }
+        { "timebins": [ interval(time("17:00:00.000Z"), time("17:30:00.000Z")),
+              interval(time("17:30:00.000Z"), time("18:00:00.000Z")),
+              interval(time("18:00:00.000Z"), time("18:30:00.000Z")),
+              interval(time("18:30:00.000Z"), time("19:00:00.000Z")) ],
+          "datebins": [ interval(date("1970-01-01"), date("1990-01-01")),
+              interval(date("1990-01-01"), date("2010-01-01")),
+              interval(date("2010-01-01"), date("2030-01-01")) ],
+          "datetimebins": [ interval(datetime("1800-01-01T00:00:00.000Z"), datetime("1900-01-01T00:00:00.000Z")),
+              interval(datetime("1900-01-01T00:00:00.000Z"), datetime("2000-01-01T00:00:00.000Z")),
+              interval(datetime("2000-01-01T00:00:00.000Z"), datetime("2100-01-01T00:00:00.000Z")) ] }
 
 
 ## <a id="RecordFunctions">Record Functions</a> <font size="4"><a href="#toc">[Back to TOC]</a></font> ##

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/d434b50f/asterix-external-data/src/main/java/org/apache/asterix/external/parser/ADMDataParser.java
----------------------------------------------------------------------
diff --git a/asterix-external-data/src/main/java/org/apache/asterix/external/parser/ADMDataParser.java b/asterix-external-data/src/main/java/org/apache/asterix/external/parser/ADMDataParser.java
index d9a93ff..0fe2758 100644
--- a/asterix-external-data/src/main/java/org/apache/asterix/external/parser/ADMDataParser.java
+++ b/asterix-external-data/src/main/java/org/apache/asterix/external/parser/ADMDataParser.java
@@ -40,7 +40,9 @@ import org.apache.asterix.external.api.IRecordDataParser;
 import org.apache.asterix.external.api.IStreamDataParser;
 import org.apache.asterix.external.util.ExternalDataUtils;
 import org.apache.asterix.om.base.ABoolean;
+import org.apache.asterix.om.base.AMutableInterval;
 import org.apache.asterix.om.base.ANull;
+import org.apache.asterix.om.base.temporal.GregorianCalendarSystem;
 import org.apache.asterix.om.types.AOrderedListType;
 import org.apache.asterix.om.types.ARecordType;
 import org.apache.asterix.om.types.ATypeTag;
@@ -53,6 +55,7 @@ import org.apache.asterix.om.util.NonTaggedFormatUtil;
 import org.apache.asterix.om.util.container.IObjectPool;
 import org.apache.asterix.om.util.container.ListObjectPool;
 import org.apache.asterix.runtime.operators.file.adm.AdmLexer;
+import org.apache.asterix.runtime.operators.file.adm.AdmLexerException;
 import org.apache.hyracks.api.exceptions.HyracksDataException;
 import org.apache.hyracks.data.std.api.IMutableValueStorage;
 import org.apache.hyracks.data.std.util.ArrayBackedValueStorage;
@@ -76,6 +79,8 @@ public class ADMDataParser extends AbstractDataParser implements IStreamDataPars
     private IObjectPool<IMutableValueStorage, ATypeTag> abvsBuilderPool = new ListObjectPool<IMutableValueStorage, ATypeTag>(
             new AbvsBuilderFactory());
 
+    protected final AMutableInterval aInterval = new AMutableInterval(0L, 0L, (byte) 0);
+
     private String mismatchErrorMessage = "Mismatch Type, expecting a value of type ";
     private String mismatchErrorMessage2 = " got a value of type ";
     private Map<String, String> configuration;
@@ -328,44 +333,14 @@ public class ADMDataParser extends AbstractDataParser implements IStreamDataPars
                 parseConstructor(ATypeTag.DATETIME, objectType, out);
                 break;
             }
-            case AdmLexer.TOKEN_INTERVAL_DATE_CONS: {
+            case AdmLexer.TOKEN_INTERVAL_CONS: {
                 if (checkType(ATypeTag.INTERVAL, objectType)) {
-                    if (admLexer.next() == AdmLexer.TOKEN_CONSTRUCTOR_OPEN) {
-                        if (admLexer.next() == AdmLexer.TOKEN_STRING_LITERAL) {
-                            parseDateInterval(admLexer.getLastTokenImage(), out);
-                            if (admLexer.next() == AdmLexer.TOKEN_CONSTRUCTOR_CLOSE) {
-                                break;
-                            }
-                        }
-                    }
-                }
-                throw new ParseException("Wrong interval data parsing for date interval.");
-            }
-            case AdmLexer.TOKEN_INTERVAL_TIME_CONS: {
-                if (checkType(ATypeTag.INTERVAL, objectType)) {
-                    if (admLexer.next() == AdmLexer.TOKEN_CONSTRUCTOR_OPEN) {
-                        if (admLexer.next() == AdmLexer.TOKEN_STRING_LITERAL) {
-                            parseTimeInterval(admLexer.getLastTokenImage(), out);
-                            if (admLexer.next() == AdmLexer.TOKEN_CONSTRUCTOR_CLOSE) {
-                                break;
-                            }
-                        }
-                    }
-                }
-                throw new ParseException("Wrong interval data parsing for time interval.");
-            }
-            case AdmLexer.TOKEN_INTERVAL_DATETIME_CONS: {
-                if (checkType(ATypeTag.INTERVAL, objectType)) {
-                    if (admLexer.next() == AdmLexer.TOKEN_CONSTRUCTOR_OPEN) {
-                        if (admLexer.next() == AdmLexer.TOKEN_STRING_LITERAL) {
-                            parseDateTimeInterval(admLexer.getLastTokenImage(), out);
-                            if (admLexer.next() == AdmLexer.TOKEN_CONSTRUCTOR_CLOSE) {
-                                break;
-                            }
-                        }
-                    }
+                    objectType = getComplexType(objectType, ATypeTag.INTERVAL);
+                    parseInterval(ATypeTag.INTERVAL, objectType, out);
+                } else {
+                    throw new ParseException(mismatchErrorMessage + objectType.getTypeName());
                 }
-                throw new ParseException("Wrong interval data parsing for datetime interval.");
+                break;
             }
             case AdmLexer.TOKEN_DURATION_CONS: {
                 parseConstructor(ATypeTag.DURATION, objectType, out);
@@ -408,17 +383,16 @@ public class ADMDataParser extends AbstractDataParser implements IStreamDataPars
                     objectType = getComplexType(objectType, ATypeTag.UNORDEREDLIST);
                     parseUnorderedList((AUnorderedListType) objectType, out);
                 } else {
-                    throw new ParseException(mismatchErrorMessage + objectType.getTypeTag());
+                    throw new ParseException(mismatchErrorMessage + objectType.getTypeName());
                 }
                 break;
             }
-
             case AdmLexer.TOKEN_START_ORDERED_LIST: {
                 if (checkType(ATypeTag.ORDEREDLIST, objectType)) {
                     objectType = getComplexType(objectType, ATypeTag.ORDEREDLIST);
                     parseOrderedList((AOrderedListType) objectType, out);
                 } else {
-                    throw new ParseException(mismatchErrorMessage + objectType.getTypeTag());
+                    throw new ParseException(mismatchErrorMessage + objectType.getTypeName());
                 }
                 break;
             }
@@ -427,7 +401,7 @@ public class ADMDataParser extends AbstractDataParser implements IStreamDataPars
                     objectType = getComplexType(objectType, ATypeTag.RECORD);
                     parseRecord((ARecordType) objectType, out);
                 } else {
-                    throw new ParseException(mismatchErrorMessage + objectType.getTypeTag());
+                    throw new ParseException(mismatchErrorMessage + objectType.getTypeName());
                 }
                 break;
             }
@@ -552,7 +526,6 @@ public class ADMDataParser extends AbstractDataParser implements IStreamDataPars
     }
 
     private void parseRecord(ARecordType recType, DataOutput out) throws IOException {
-
         ArrayBackedValueStorage fieldValueBuffer = getTempBuffer();
         ArrayBackedValueStorage fieldNameBuffer = getTempBuffer();
         IARecordBuilder recBuilder = getRecordBuilder();
@@ -693,6 +666,100 @@ public class ADMDataParser extends AbstractDataParser implements IStreamDataPars
         return -1;
     }
 
+    private void parseInterval(ATypeTag typeTag, IAType objectType, DataOutput out) throws IOException {
+        long start = 0, end = 0;
+        byte tag = 0;
+        int token = admLexer.next();
+        if (token == AdmLexer.TOKEN_CONSTRUCTOR_OPEN) {
+            ATypeTag intervalType;
+
+            token = admLexer.next();
+            switch (token) {
+                case AdmLexer.TOKEN_DATE_CONS:
+                    intervalType = ATypeTag.DATE;
+                    break;
+                case AdmLexer.TOKEN_TIME_CONS:
+                    intervalType = ATypeTag.TIME;
+                    break;
+                case AdmLexer.TOKEN_DATETIME_CONS:
+                    intervalType = ATypeTag.DATETIME;
+                    break;
+                default:
+                    throw new ParseException("Unsupported interval type: " + AdmLexer.tokenKindToString(token) + ".");
+            }
+
+            // Interval
+            start = parseIntervalArgument(intervalType);
+            end = parseIntervalSecondArgument(token, intervalType);
+            tag = intervalType.serialize();
+        }
+
+        // Closing interval.
+        token = admLexer.next();
+        if (token == AdmLexer.TOKEN_CONSTRUCTOR_CLOSE) {
+            try {
+                aInterval.setValue(start, end, tag);
+            } catch (HyracksDataException e) {
+                throw new ParseException(e);
+            }
+        } else {
+            throw new ParseException("Interval was not closed.");
+        }
+        intervalSerde.serialize(aInterval, out);
+    }
+
+    private long parseIntervalSecondArgument(int startToken, ATypeTag parseType) throws IOException {
+        int token = admLexer.next();
+        if (token == AdmLexer.TOKEN_COMMA) {
+            token = admLexer.next();
+            if (token == startToken) {
+                return parseIntervalArgument(parseType);
+            } else {
+                throw new ParseException("The interval start and end point types do not match: "
+                        + AdmLexer.tokenKindToString(startToken) + " != " + AdmLexer.tokenKindToString(token));
+            }
+        } else {
+            throw new ParseException("Missing COMMA before interval end point.");
+        }
+    }
+
+    private long parseIntervalArgument(ATypeTag tag) throws IOException {
+        int token = admLexer.next();
+        if (token == AdmLexer.TOKEN_CONSTRUCTOR_OPEN) {
+            token = admLexer.next();
+            if (token == AdmLexer.TOKEN_STRING_LITERAL) {
+                long chrononTimeInMs = 0;
+                final String arg = admLexer.getLastTokenImage();
+                switch (tag) {
+                    case DATE:
+                        chrononTimeInMs += (parseDatePart(arg, 0, arg.length() - 1)
+                                / GregorianCalendarSystem.CHRONON_OF_DAY);
+                        break;
+                    case TIME:
+                        chrononTimeInMs += parseTimePart(arg, 0, arg.length() - 1);
+                        break;
+                    case DATETIME:
+                        int timeSeperatorOffsetInDatetimeString = arg.indexOf('T');
+                        if (timeSeperatorOffsetInDatetimeString < 0) {
+                            throw new ParseException(
+                                    "This can not be an instance of interval: missing T for a datetime value.");
+                        }
+                        chrononTimeInMs += parseDatePart(arg, 0, timeSeperatorOffsetInDatetimeString - 1);
+                        chrononTimeInMs += parseTimePart(arg, timeSeperatorOffsetInDatetimeString + 1,
+                                arg.length() - 1);
+                        break;
+                    default:
+                        throw new ParseException("Unsupported interval type: " + tag.name() + ".");
+                }
+                token = admLexer.next();
+                if (token == AdmLexer.TOKEN_CONSTRUCTOR_CLOSE) {
+                    return chrononTimeInMs;
+                }
+            }
+        }
+        throw new ParseException("Interval argument not properly constructed.");
+    }
+
     private void parseOrderedList(AOrderedListType oltype, DataOutput out) throws IOException {
         ArrayBackedValueStorage itemBuffer = getTempBuffer();
         OrderedListBuilder orderedListBuilder = (OrderedListBuilder) getOrderedListBuilder();



[2/4] incubator-asterixdb git commit: ASTERIXDB-1281 - Interval format update to AQL and ADM

Posted by pr...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/d434b50f/asterix-external-data/src/main/java/org/apache/asterix/external/parser/AbstractDataParser.java
----------------------------------------------------------------------
diff --git a/asterix-external-data/src/main/java/org/apache/asterix/external/parser/AbstractDataParser.java b/asterix-external-data/src/main/java/org/apache/asterix/external/parser/AbstractDataParser.java
index 20b4124..b10b9e9 100644
--- a/asterix-external-data/src/main/java/org/apache/asterix/external/parser/AbstractDataParser.java
+++ b/asterix-external-data/src/main/java/org/apache/asterix/external/parser/AbstractDataParser.java
@@ -71,7 +71,6 @@ import org.apache.asterix.om.base.temporal.ADurationParserFactory;
 import org.apache.asterix.om.base.temporal.ADurationParserFactory.ADurationParseOption;
 import org.apache.asterix.om.base.temporal.ATimeParserFactory;
 import org.apache.asterix.om.base.temporal.GregorianCalendarSystem;
-import org.apache.asterix.om.types.ATypeTag;
 import org.apache.asterix.om.types.BuiltinType;
 import org.apache.hyracks.api.dataflow.value.ISerializerDeserializer;
 import org.apache.hyracks.api.exceptions.HyracksDataException;
@@ -187,7 +186,7 @@ public abstract class AbstractDataParser implements IDataParser {
     protected final static ISerializerDeserializer<ALine> lineSerde = AqlSerializerDeserializerProvider.INSTANCE
             .getSerializerDeserializer(BuiltinType.ALINE);
     @SuppressWarnings("unchecked")
-    private static final ISerializerDeserializer<AInterval> intervalSerde = AqlSerializerDeserializerProvider.INSTANCE
+    protected static final ISerializerDeserializer<AInterval> intervalSerde = AqlSerializerDeserializerProvider.INSTANCE
             .getSerializerDeserializer(BuiltinType.AINTERVAL);
 
     protected String filename;
@@ -333,104 +332,7 @@ public abstract class AbstractDataParser implements IDataParser {
         binarySerde.serialize(aBinary, out);
     }
 
-    protected void parseDateTimeInterval(String interval, DataOutput out) throws HyracksDataException {
-        // the starting point for parsing (so for the accessor)
-        int startOffset = 0;
-        int endOffset, timeSeperatorOffsetInDatetimeString;
-
-        // Get the index for the comma
-        int commaIndex = interval.indexOf(',');
-        if (commaIndex < 1) {
-            throw new HyracksDataException("comma is missing for a string of interval");
-        }
-
-        endOffset = commaIndex - 1;
-        timeSeperatorOffsetInDatetimeString = interval.indexOf('T');
-
-        if (timeSeperatorOffsetInDatetimeString < 0) {
-            throw new HyracksDataException("This can not be an instance of interval: missing T for a datetime value.");
-        }
-
-        long chrononTimeInMsStart = parseDatePart(interval, startOffset, timeSeperatorOffsetInDatetimeString - 1);
-
-        chrononTimeInMsStart += parseTimePart(interval, timeSeperatorOffsetInDatetimeString + 1, endOffset);
-
-        // Interval End
-        startOffset = commaIndex + 1;
-        endOffset = interval.length() - 1;
-
-        timeSeperatorOffsetInDatetimeString = interval.indexOf('T', startOffset);
-
-        if (timeSeperatorOffsetInDatetimeString < 0) {
-            throw new HyracksDataException("This can not be an instance of interval: missing T for a datetime value.");
-        }
-
-        long chrononTimeInMsEnd = parseDatePart(interval, startOffset, timeSeperatorOffsetInDatetimeString - 1);
-
-        chrononTimeInMsEnd += parseTimePart(interval, timeSeperatorOffsetInDatetimeString + 1, endOffset);
-
-        aInterval.setValue(chrononTimeInMsStart, chrononTimeInMsEnd, ATypeTag.DATETIME.serialize());
-
-        intervalSerde.serialize(aInterval, out);
-    }
-
-    protected void parseTimeInterval(String interval, DataOutput out) throws HyracksDataException {
-        int startOffset = 0;
-        int endOffset;
-
-        // Get the index for the comma
-        int commaIndex = interval.indexOf(',');
-        if (commaIndex < 0) {
-            throw new HyracksDataException("comma is missing for a string of interval");
-        }
-
-        endOffset = commaIndex - 1;
-        // Interval Start
-        long chrononTimeInMsStart = parseTimePart(interval, startOffset, endOffset);
-
-        if (chrononTimeInMsStart < 0) {
-            chrononTimeInMsStart += GregorianCalendarSystem.CHRONON_OF_DAY;
-        }
-
-        // Interval End
-        startOffset = commaIndex + 1;
-        endOffset = interval.length() - 1;
-
-        long chrononTimeInMsEnd = parseTimePart(interval, startOffset, endOffset);
-        if (chrononTimeInMsEnd < 0) {
-            chrononTimeInMsEnd += GregorianCalendarSystem.CHRONON_OF_DAY;
-        }
-
-        aInterval.setValue(chrononTimeInMsStart, chrononTimeInMsEnd, ATypeTag.TIME.serialize());
-        intervalSerde.serialize(aInterval, out);
-    }
-
-    protected void parseDateInterval(String interval, DataOutput out) throws HyracksDataException {
-        // the starting point for parsing (so for the accessor)
-        int startOffset = 0;
-        int endOffset;
-
-        // Get the index for the comma
-        int commaIndex = interval.indexOf(',');
-        if (commaIndex < 1) {
-            throw new HyracksDataException("comma is missing for a string of interval");
-        }
-
-        endOffset = commaIndex - 1;
-        long chrononTimeInMsStart = parseDatePart(interval, startOffset, endOffset);
-
-        // Interval End
-        startOffset = commaIndex + 1;
-        endOffset = interval.length() - 1;
-
-        long chrononTimeInMsEnd = parseDatePart(interval, startOffset, endOffset);
-
-        aInterval.setValue((chrononTimeInMsStart / GregorianCalendarSystem.CHRONON_OF_DAY),
-                (chrononTimeInMsEnd / GregorianCalendarSystem.CHRONON_OF_DAY), ATypeTag.DATE.serialize());
-        intervalSerde.serialize(aInterval, out);
-    }
-
-    private long parseDatePart(String interval, int startOffset, int endOffset) throws HyracksDataException {
+    protected long parseDatePart(String interval, int startOffset, int endOffset) throws HyracksDataException {
 
         while (interval.charAt(endOffset) == '"' || interval.charAt(endOffset) == ' ') {
             endOffset--;
@@ -443,7 +345,7 @@ public abstract class AbstractDataParser implements IDataParser {
         return ADateParserFactory.parseDatePart(interval, startOffset, endOffset - startOffset + 1);
     }
 
-    private int parseTimePart(String interval, int startOffset, int endOffset) throws HyracksDataException {
+    protected int parseTimePart(String interval, int startOffset, int endOffset) throws HyracksDataException {
 
         while (interval.charAt(endOffset) == '"' || interval.charAt(endOffset) == ' ') {
             endOffset--;

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/d434b50f/asterix-external-data/src/main/resources/adm.grammar
----------------------------------------------------------------------
diff --git a/asterix-external-data/src/main/resources/adm.grammar b/asterix-external-data/src/main/resources/adm.grammar
index 973c2b9..2626a31 100644
--- a/asterix-external-data/src/main/resources/adm.grammar
+++ b/asterix-external-data/src/main/resources/adm.grammar
@@ -47,9 +47,7 @@ POLYGON_CONS   = string(polygon)
 RECTANGLE_CONS = string(rectangle)
 CIRCLE_CONS    = string(circle)
 TIME_CONS      = string(time)
-INTERVAL_TIME_CONS      = string(interval-time)
-INTERVAL_DATE_CONS      = string(interval-date)
-INTERVAL_DATETIME_CONS  = string(interval-datetime)
+INTERVAL_CONS  = string(interval)
 YEAR_MONTH_DURATION_CONS = string(year-month-duration)
 DAY_TIME_DURATION_CONS   = string(day-time-duration)
 UUID_CONS      = string(uuid)

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/d434b50f/asterix-external-data/src/test/java/org/apache/asterix/runtime/operator/file/ADMDataParserTest.java
----------------------------------------------------------------------
diff --git a/asterix-external-data/src/test/java/org/apache/asterix/runtime/operator/file/ADMDataParserTest.java b/asterix-external-data/src/test/java/org/apache/asterix/runtime/operator/file/ADMDataParserTest.java
index 698e414..c6939c9 100644
--- a/asterix-external-data/src/test/java/org/apache/asterix/runtime/operator/file/ADMDataParserTest.java
+++ b/asterix-external-data/src/test/java/org/apache/asterix/runtime/operator/file/ADMDataParserTest.java
@@ -24,7 +24,9 @@ import java.io.DataOutputStream;
 import java.util.concurrent.atomic.AtomicInteger;
 
 import org.apache.asterix.external.parser.ADMDataParser;
-import org.apache.asterix.om.base.AMutableInterval;
+import org.apache.asterix.om.base.AMutableDate;
+import org.apache.asterix.om.base.AMutableDateTime;
+import org.apache.asterix.om.base.AMutableTime;
 import org.junit.Assert;
 import org.junit.Test;
 
@@ -34,25 +36,23 @@ public class ADMDataParserTest {
 
     @Test
     public void test() {
-        String[] dateIntervals = { "-9537-08-04, 9656-06-03", "-9537-04-04, 9656-06-04", "-9537-10-04, 9626-09-05" };
-        AMutableInterval[] parsedDateIntervals = new AMutableInterval[] {
-                new AMutableInterval(-4202630, 2807408, (byte) 17), new AMutableInterval(-4202752, 2807409, (byte) 17),
-                new AMutableInterval(-4202569, 2796544, (byte) 17), };
+        String[] dates = { "-9537-08-04", "9656-06-03", "-9537-04-04", "9656-06-04", "-9537-10-04", "9626-09-05" };
+        AMutableDate[] parsedDates = new AMutableDate[] { new AMutableDate(-4202630), new AMutableDate(2807408),
+                new AMutableDate(-4202752), new AMutableDate(2807409), new AMutableDate(-4202569),
+                new AMutableDate(2796544), };
 
-        String[] timeIntervals = { "12:04:45.689Z, 12:41:59.002Z", "12:10:45.169Z, 15:37:48.736Z",
-                "04:16:42.321Z, 12:22:56.816Z" };
-        AMutableInterval[] parsedTimeIntervals = new AMutableInterval[] {
-                new AMutableInterval(43485689, 45719002, (byte) 18),
-                new AMutableInterval(43845169, 56268736, (byte) 18),
-                new AMutableInterval(15402321, 44576816, (byte) 18), };
+        String[] times = { "12:04:45.689Z", "12:41:59.002Z", "12:10:45.169Z", "15:37:48.736Z", "04:16:42.321Z",
+                "12:22:56.816Z" };
+        AMutableTime[] parsedTimes = new AMutableTime[] { new AMutableTime(43485689), new AMutableTime(45719002),
+                new AMutableTime(43845169), new AMutableTime(56268736), new AMutableTime(15402321),
+                new AMutableTime(44576816), };
 
-        String[] dateTimeIntervals = { "-2640-10-11T17:32:15.675Z, 4104-02-01T05:59:11.902Z",
-                "0534-12-08T08:20:31.487Z, 6778-02-16T22:40:21.653Z",
-                "2129-12-12T13:18:35.758Z, 8647-07-01T13:10:19.691Z" };
-        AMutableInterval[] parsedDateTimeIntervals = new AMutableInterval[] {
-                new AMutableInterval(-145452954464325L, 67345192751902L, (byte) 16),
-                new AMutableInterval(-45286270768513L, 151729886421653L, (byte) 16),
-                new AMutableInterval(5047449515758L, 210721439419691L, (byte) 16) };
+        String[] dateTimes = { "-2640-10-11T17:32:15.675Z", "4104-02-01T05:59:11.902Z", "0534-12-08T08:20:31.487Z",
+                "6778-02-16T22:40:21.653Z", "2129-12-12T13:18:35.758Z", "8647-07-01T13:10:19.691Z" };
+        AMutableDateTime[] parsedDateTimes = new AMutableDateTime[] { new AMutableDateTime(-145452954464325L),
+                new AMutableDateTime(67345192751902L), new AMutableDateTime(-45286270768513L),
+                new AMutableDateTime(151729886421653L), new AMutableDateTime(5047449515758L),
+                new AMutableDateTime(210721439419691L) };
 
         Thread[] threads = new Thread[16];
         AtomicInteger errorCount = new AtomicInteger(0);
@@ -67,28 +67,28 @@ public class ADMDataParserTest {
                     try {
                         int round = 0;
                         while (round++ < 10000) {
-                            // Test parseDateInterval.
-                            for (int index = 0; index < dateIntervals.length; ++index) {
-                                PA.invokeMethod(parser, "parseDateInterval(java.lang.String, java.io.DataOutput)",
-                                        dateIntervals[index], dos);
-                                AMutableInterval aInterval = (AMutableInterval) PA.getValue(parser, "aInterval");
-                                Assert.assertTrue(aInterval.equals(parsedDateIntervals[index]));
+                            // Test parseDate.
+                            for (int index = 0; index < dates.length; ++index) {
+                                PA.invokeMethod(parser, "parseDate(java.lang.String, java.io.DataOutput)",
+                                        dates[index], dos);
+                                AMutableDate aDate = (AMutableDate) PA.getValue(parser, "aDate");
+                                Assert.assertTrue(aDate.equals(parsedDates[index]));
                             }
 
-                            // Tests parseTimeInterval.
-                            for (int index = 0; index < timeIntervals.length; ++index) {
-                                PA.invokeMethod(parser, "parseTimeInterval(java.lang.String, java.io.DataOutput)",
-                                        timeIntervals[index], dos);
-                                AMutableInterval aInterval = (AMutableInterval) PA.getValue(parser, "aInterval");
-                                Assert.assertTrue(aInterval.equals(parsedTimeIntervals[index]));
+                            // Tests parseTime.
+                            for (int index = 0; index < times.length; ++index) {
+                                PA.invokeMethod(parser, "parseTime(java.lang.String, java.io.DataOutput)",
+                                        times[index], dos);
+                                AMutableTime aTime = (AMutableTime) PA.getValue(parser, "aTime");
+                                Assert.assertTrue(aTime.equals(parsedTimes[index]));
                             }
 
-                            // Tests parseDateTimeInterval.
-                            for (int index = 0; index < dateTimeIntervals.length; ++index) {
-                                PA.invokeMethod(parser, "parseDateTimeInterval(java.lang.String, java.io.DataOutput)",
-                                        dateTimeIntervals[index], dos);
-                                AMutableInterval aInterval = (AMutableInterval) PA.getValue(parser, "aInterval");
-                                Assert.assertTrue(aInterval.equals(parsedDateTimeIntervals[index]));
+                            // Tests parseDateTime.
+                            for (int index = 0; index < dateTimes.length; ++index) {
+                                PA.invokeMethod(parser, "parseDateTime(java.lang.String, java.io.DataOutput)",
+                                        dateTimes[index], dos);
+                                AMutableDateTime aDateTime = (AMutableDateTime) PA.getValue(parser, "aDateTime");
+                                Assert.assertTrue(aDateTime.equals(parsedDateTimes[index]));
                             }
                         }
                     } catch (Exception e) {

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/d434b50f/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/comparators/AIntervalAscPartialBinaryComparatorFactory.java
----------------------------------------------------------------------
diff --git a/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/comparators/AIntervalAscPartialBinaryComparatorFactory.java b/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/comparators/AIntervalAscPartialBinaryComparatorFactory.java
index 6efc7ff..bb96d5d 100644
--- a/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/comparators/AIntervalAscPartialBinaryComparatorFactory.java
+++ b/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/comparators/AIntervalAscPartialBinaryComparatorFactory.java
@@ -18,7 +18,6 @@
  */
 package org.apache.asterix.dataflow.data.nontagged.comparators;
 
-import org.apache.asterix.dataflow.data.nontagged.serde.AInt64SerializerDeserializer;
 import org.apache.asterix.dataflow.data.nontagged.serde.AIntervalSerializerDeserializer;
 import org.apache.hyracks.api.dataflow.value.IBinaryComparator;
 import org.apache.hyracks.api.dataflow.value.IBinaryComparatorFactory;
@@ -45,20 +44,14 @@ public class AIntervalAscPartialBinaryComparatorFactory implements IBinaryCompar
                 // The ascending interval comparator sorts intervals first by start point, then by end point.
                 // If the interval have the same point values, the final comparison orders the intervals by type
                 // (datetime, date, time).
-                int c = Long.compare(
-                        AInt64SerializerDeserializer.getLong(b1,
-                                s1 + AIntervalSerializerDeserializer.getIntervalStartOffset()),
-                        AInt64SerializerDeserializer.getLong(b2,
-                                s2 + AIntervalSerializerDeserializer.getIntervalStartOffset()));
+                int c = Long.compare(AIntervalSerializerDeserializer.getIntervalStart(b1, s1),
+                        AIntervalSerializerDeserializer.getIntervalStart(b2, s2));
                 if (c == 0) {
-                    c = Long.compare(
-                            AInt64SerializerDeserializer.getLong(b1,
-                                    s1 + AIntervalSerializerDeserializer.getIntervalEndOffset()),
-                            AInt64SerializerDeserializer.getLong(b2,
-                                    s2 + AIntervalSerializerDeserializer.getIntervalEndOffset()));
+                    c = Long.compare(AIntervalSerializerDeserializer.getIntervalEnd(b1, s1),
+                            AIntervalSerializerDeserializer.getIntervalEnd(b2, s2));
                     if (c == 0) {
-                        c = Byte.compare(b1[s1 + AIntervalSerializerDeserializer.getIntervalTagOffset()], b2[s2
-                                + AIntervalSerializerDeserializer.getIntervalTagOffset()]);
+                        c = Byte.compare(AIntervalSerializerDeserializer.getIntervalTimeType(b1, s1),
+                                AIntervalSerializerDeserializer.getIntervalTimeType(b2, s2));
                     }
                 }
                 return c;

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/d434b50f/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/comparators/AIntervalDescPartialBinaryComparatorFactory.java
----------------------------------------------------------------------
diff --git a/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/comparators/AIntervalDescPartialBinaryComparatorFactory.java b/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/comparators/AIntervalDescPartialBinaryComparatorFactory.java
index 9a09623..5ee553c 100644
--- a/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/comparators/AIntervalDescPartialBinaryComparatorFactory.java
+++ b/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/comparators/AIntervalDescPartialBinaryComparatorFactory.java
@@ -18,7 +18,6 @@
  */
 package org.apache.asterix.dataflow.data.nontagged.comparators;
 
-import org.apache.asterix.dataflow.data.nontagged.serde.AInt64SerializerDeserializer;
 import org.apache.asterix.dataflow.data.nontagged.serde.AIntervalSerializerDeserializer;
 import org.apache.hyracks.api.dataflow.value.IBinaryComparator;
 import org.apache.hyracks.api.dataflow.value.IBinaryComparatorFactory;
@@ -45,20 +44,14 @@ public class AIntervalDescPartialBinaryComparatorFactory implements IBinaryCompa
                 // The descending interval comparator sorts intervals first by end point, then by start point.
                 // If the interval have the same point values, the final comparison orders the intervals by type
                 // (time, date, datetime).
-                int c = Long.compare(
-                        AInt64SerializerDeserializer.getLong(b1,
-                                s1 + AIntervalSerializerDeserializer.getIntervalEndOffset()),
-                        AInt64SerializerDeserializer.getLong(b2,
-                                s2 + AIntervalSerializerDeserializer.getIntervalEndOffset()));
+                int c = Long.compare(AIntervalSerializerDeserializer.getIntervalEnd(b1, s1),
+                        AIntervalSerializerDeserializer.getIntervalEnd(b2, s2));
                 if (c == 0) {
-                    c = Long.compare(
-                            AInt64SerializerDeserializer.getLong(b1,
-                                    s1 + AIntervalSerializerDeserializer.getIntervalStartOffset()),
-                            AInt64SerializerDeserializer.getLong(b2,
-                                    s2 + AIntervalSerializerDeserializer.getIntervalStartOffset()));
+                    c = Long.compare(AIntervalSerializerDeserializer.getIntervalStart(b1, s1),
+                            AIntervalSerializerDeserializer.getIntervalStart(b2, s2));
                     if (c == 0) {
-                        c = Byte.compare(b1[s1 + AIntervalSerializerDeserializer.getIntervalTagOffset()],
-                                b2[s2 + AIntervalSerializerDeserializer.getIntervalTagOffset()]);
+                        c = Byte.compare(AIntervalSerializerDeserializer.getIntervalTimeType(b1, s1),
+                                AIntervalSerializerDeserializer.getIntervalTimeType(b2, s2));
                     }
                 }
                 // Since the comparisons are based on ascending order, the result is reversed.

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/d434b50f/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/printers/adm/AIntervalPrinter.java
----------------------------------------------------------------------
diff --git a/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/printers/adm/AIntervalPrinter.java b/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/printers/adm/AIntervalPrinter.java
index 99c02e8..3c60cd2 100644
--- a/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/printers/adm/AIntervalPrinter.java
+++ b/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/printers/adm/AIntervalPrinter.java
@@ -20,9 +20,9 @@ package org.apache.asterix.dataflow.data.nontagged.printers.adm;
 
 import java.io.PrintStream;
 
-import org.apache.asterix.dataflow.data.nontagged.printers.PrintTools;
-import org.apache.asterix.dataflow.data.nontagged.serde.AInt8SerializerDeserializer;
+import org.apache.asterix.dataflow.data.nontagged.serde.AIntervalSerializerDeserializer;
 import org.apache.asterix.om.types.ATypeTag;
+import org.apache.asterix.om.types.EnumDeserializer;
 import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
 import org.apache.hyracks.algebricks.data.IPrinter;
 
@@ -42,29 +42,34 @@ public class AIntervalPrinter implements IPrinter {
      */
     @Override
     public void print(byte[] b, int s, int l, PrintStream ps) throws AlgebricksException {
-        ps.print("interval");
+        ps.print("interval(");
 
-        short typetag = AInt8SerializerDeserializer.getByte(b, s + 1 + 8 * 2);
+        byte typetag = AIntervalSerializerDeserializer.getIntervalTimeType(b, s + 1);
+        int startOffset = AIntervalSerializerDeserializer.getIntervalStartOffset(b, s + 1) - 1;
+        int startSize = AIntervalSerializerDeserializer.getStartSize(b, s + 1);
+        int endOffset = AIntervalSerializerDeserializer.getIntervalEndOffset(b, s + 1) - 1;
+        int endSize = AIntervalSerializerDeserializer.getEndSize(b, s + 1);
 
-        if (typetag == ATypeTag.DATE.serialize()) {
-            ps.print("-date(\"");
-            PrintTools.printDateString(b, s + 4, 4, ps);
-            ps.print(", ");
-            PrintTools.printDateString(b, s + 12, 4, ps);
-        } else if (typetag == ATypeTag.TIME.serialize()) {
-            ps.print("-time(\"");
-            PrintTools.printTimeString(b, s + 4, 4, ps);
-            ps.print(", ");
-            PrintTools.printTimeString(b, s + 12, 4, ps);
-        } else if (typetag == ATypeTag.DATETIME.serialize()) {
-            ps.print("-datetime(\"");
-            PrintTools.printDateTimeString(b, s, 8, ps);
-            ps.print(", ");
-            PrintTools.printDateTimeString(b, s + 8, 8, ps);
-        } else {
-            throw new AlgebricksException("Unsupport internal time types in interval: " + typetag);
+        IPrinter timeInstancePrinter;
+        ATypeTag intervalType = EnumDeserializer.ATYPETAGDESERIALIZER.deserialize(typetag);
+        switch (intervalType) {
+            case DATE:
+                timeInstancePrinter = ADatePrinter.INSTANCE;
+                break;
+            case TIME:
+                timeInstancePrinter = ATimePrinter.INSTANCE;
+                break;
+            case DATETIME:
+                timeInstancePrinter = ADateTimePrinter.INSTANCE;
+                break;
+            default:
+                throw new AlgebricksException("Unsupport internal time types in interval: " + typetag);
         }
 
-        ps.print("\")");
+        timeInstancePrinter.print(b, startOffset, startSize, ps);
+        ps.print(", ");
+        timeInstancePrinter.print(b, endOffset, endSize, ps);
+
+        ps.print(")");
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/d434b50f/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/printers/json/clean/AIntervalPrinter.java
----------------------------------------------------------------------
diff --git a/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/printers/json/clean/AIntervalPrinter.java b/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/printers/json/clean/AIntervalPrinter.java
index e77ef94..3f8a647 100644
--- a/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/printers/json/clean/AIntervalPrinter.java
+++ b/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/printers/json/clean/AIntervalPrinter.java
@@ -20,8 +20,12 @@ package org.apache.asterix.dataflow.data.nontagged.printers.json.clean;
 
 import java.io.PrintStream;
 
-import org.apache.asterix.dataflow.data.nontagged.serde.AInt8SerializerDeserializer;
+import org.apache.asterix.dataflow.data.nontagged.printers.adm.ADatePrinter;
+import org.apache.asterix.dataflow.data.nontagged.printers.adm.ADateTimePrinter;
+import org.apache.asterix.dataflow.data.nontagged.printers.adm.ATimePrinter;
+import org.apache.asterix.dataflow.data.nontagged.serde.AIntervalSerializerDeserializer;
 import org.apache.asterix.om.types.ATypeTag;
+import org.apache.asterix.om.types.EnumDeserializer;
 import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
 import org.apache.hyracks.algebricks.data.IPrinter;
 
@@ -43,29 +47,32 @@ public class AIntervalPrinter implements IPrinter {
     public void print(byte[] b, int s, int l, PrintStream ps) throws AlgebricksException {
         ps.print("{ \"interval\": { \"start\": ");
 
-        short typetag = AInt8SerializerDeserializer.getByte(b, s + 1 + 8 * 2);
+        byte typetag = AIntervalSerializerDeserializer.getIntervalTimeType(b, s + 1);
+        int startOffset = AIntervalSerializerDeserializer.getIntervalStartOffset(b, s + 1) - 1;
+        int startSize = AIntervalSerializerDeserializer.getStartSize(b, s + 1);
+        int endOffset = AIntervalSerializerDeserializer.getIntervalEndOffset(b, s + 1) - 1;
+        int endSize = AIntervalSerializerDeserializer.getEndSize(b, s + 1);
 
         IPrinter timeInstancePrinter;
-
-        if (typetag == ATypeTag.DATE.serialize()) {
-            timeInstancePrinter = ADatePrinter.INSTANCE;
-            ((ADatePrinter) timeInstancePrinter).print(b, s + 4, 4, ps);
-            ps.print(", \"end\": ");
-            ((ADatePrinter) timeInstancePrinter).print(b, s + 12, 4, ps);
-        } else if (typetag == ATypeTag.TIME.serialize()) {
-            timeInstancePrinter = ATimePrinter.INSTANCE;
-            ((ATimePrinter) timeInstancePrinter).print(b, s + 4, 4, ps);
-            ps.print(", \"end\": ");
-            ((ATimePrinter) timeInstancePrinter).print(b, s + 12, 4, ps);
-        } else if (typetag == ATypeTag.DATETIME.serialize()) {
-            timeInstancePrinter = ADateTimePrinter.INSTANCE;
-            ((ADateTimePrinter) timeInstancePrinter).print(b, s, 8, ps);
-            ps.print(", \"end\": ");
-            ((ADateTimePrinter) timeInstancePrinter).print(b, s + 8, 8, ps);
-        } else {
-            throw new AlgebricksException("Unsupport internal time types in interval: " + typetag);
+        ATypeTag intervalType = EnumDeserializer.ATYPETAGDESERIALIZER.deserialize(typetag);
+        switch (intervalType) {
+            case DATE:
+                timeInstancePrinter = ADatePrinter.INSTANCE;
+                break;
+            case TIME:
+                timeInstancePrinter = ATimePrinter.INSTANCE;
+                break;
+            case DATETIME:
+                timeInstancePrinter = ADateTimePrinter.INSTANCE;
+                break;
+            default:
+                throw new AlgebricksException("Unsupport internal time types in interval: " + typetag);
         }
 
+        timeInstancePrinter.print(b, startOffset, startSize, ps);
+        ps.print(", \"end\": ");
+        timeInstancePrinter.print(b, endOffset, endSize, ps);
+
         ps.print("}}");
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/d434b50f/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/printers/json/lossless/AIntervalPrinter.java
----------------------------------------------------------------------
diff --git a/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/printers/json/lossless/AIntervalPrinter.java b/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/printers/json/lossless/AIntervalPrinter.java
index 7727f92..84bf23c 100644
--- a/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/printers/json/lossless/AIntervalPrinter.java
+++ b/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/printers/json/lossless/AIntervalPrinter.java
@@ -20,8 +20,12 @@ package org.apache.asterix.dataflow.data.nontagged.printers.json.lossless;
 
 import java.io.PrintStream;
 
-import org.apache.asterix.dataflow.data.nontagged.serde.AInt8SerializerDeserializer;
+import org.apache.asterix.dataflow.data.nontagged.printers.adm.ADatePrinter;
+import org.apache.asterix.dataflow.data.nontagged.printers.adm.ADateTimePrinter;
+import org.apache.asterix.dataflow.data.nontagged.printers.adm.ATimePrinter;
+import org.apache.asterix.dataflow.data.nontagged.serde.AIntervalSerializerDeserializer;
 import org.apache.asterix.om.types.ATypeTag;
+import org.apache.asterix.om.types.EnumDeserializer;
 import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
 import org.apache.hyracks.algebricks.data.IPrinter;
 
@@ -43,29 +47,32 @@ public class AIntervalPrinter implements IPrinter {
     public void print(byte[] b, int s, int l, PrintStream ps) throws AlgebricksException {
         ps.print("{ \"interval\": { \"start\": ");
 
-        short typetag = AInt8SerializerDeserializer.getByte(b, s + 1 + 8 * 2);
+        byte typetag = AIntervalSerializerDeserializer.getIntervalTimeType(b, s + 1);
+        int startOffset = AIntervalSerializerDeserializer.getIntervalStartOffset(b, s + 1) - 1;
+        int startSize = AIntervalSerializerDeserializer.getStartSize(b, s + 1);
+        int endOffset = AIntervalSerializerDeserializer.getIntervalEndOffset(b, s + 1) - 1;
+        int endSize = AIntervalSerializerDeserializer.getEndSize(b, s + 1);
 
         IPrinter timeInstancePrinter;
-
-        if (typetag == ATypeTag.DATE.serialize()) {
-            timeInstancePrinter = ADatePrinter.INSTANCE;
-            ((ADatePrinter) timeInstancePrinter).print(b, s + 4, 4, ps);
-            ps.print(", \"end\": ");
-            ((ADatePrinter) timeInstancePrinter).print(b, s + 12, 4, ps);
-        } else if (typetag == ATypeTag.TIME.serialize()) {
-            timeInstancePrinter = ATimePrinter.INSTANCE;
-            ((ATimePrinter) timeInstancePrinter).print(b, s + 4, 4, ps);
-            ps.print(", \"end\": ");
-            ((ATimePrinter) timeInstancePrinter).print(b, s + 12, 4, ps);
-        } else if (typetag == ATypeTag.DATETIME.serialize()) {
-            timeInstancePrinter = ADateTimePrinter.INSTANCE;
-            ((ADateTimePrinter) timeInstancePrinter).print(b, s, 8, ps);
-            ps.print(", \"end\": ");
-            ((ADateTimePrinter) timeInstancePrinter).print(b, s + 8, 8, ps);
-        } else {
-            throw new AlgebricksException("Unsupport internal time types in interval: " + typetag);
+        ATypeTag intervalType = EnumDeserializer.ATYPETAGDESERIALIZER.deserialize(typetag);
+        switch (intervalType) {
+            case DATE:
+                timeInstancePrinter = ADatePrinter.INSTANCE;
+                break;
+            case TIME:
+                timeInstancePrinter = ATimePrinter.INSTANCE;
+                break;
+            case DATETIME:
+                timeInstancePrinter = ADateTimePrinter.INSTANCE;
+                break;
+            default:
+                throw new AlgebricksException("Unsupport internal time types in interval: " + typetag);
         }
 
+        timeInstancePrinter.print(b, startOffset, startSize, ps);
+        ps.print(", \"end\": ");
+        timeInstancePrinter.print(b, endOffset, endSize, ps);
+
         ps.print("}}");
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/d434b50f/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/AIntervalSerializerDeserializer.java
----------------------------------------------------------------------
diff --git a/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/AIntervalSerializerDeserializer.java b/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/AIntervalSerializerDeserializer.java
index 94a8917..d5b6488 100644
--- a/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/AIntervalSerializerDeserializer.java
+++ b/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/AIntervalSerializerDeserializer.java
@@ -23,17 +23,27 @@ import java.io.DataOutput;
 import java.io.IOException;
 
 import org.apache.asterix.om.base.AInterval;
+import org.apache.asterix.om.types.ATypeTag;
 import org.apache.hyracks.api.dataflow.value.ISerializerDeserializer;
 import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.data.std.primitive.BytePointable;
+import org.apache.hyracks.data.std.primitive.IntegerPointable;
+import org.apache.hyracks.data.std.primitive.LongPointable;
 
+/*
+ * This class serializes and de-serializes the binary data representation of an interval.
+ *
+ * Interval {
+ *   byte type;
+ *   T start;
+ *   T end;
+ *
+ * T can be of type date, time or datetime.
+ */
 public class AIntervalSerializerDeserializer implements ISerializerDeserializer<AInterval> {
 
     private static final long serialVersionUID = 1L;
 
-    private static final int INTERVAL_START_POINT_OFFSET = 0;
-    private static final int INTERVAL_END_POINT_OFFSET = INTERVAL_START_POINT_OFFSET + Long.BYTES;
-    private static final int INTERVAL_TAG_OFFSET = INTERVAL_END_POINT_OFFSET + Long.BYTES;
-
     public static final AIntervalSerializerDeserializer INSTANCE = new AIntervalSerializerDeserializer();
 
     private AIntervalSerializerDeserializer() {
@@ -42,7 +52,16 @@ public class AIntervalSerializerDeserializer implements ISerializerDeserializer<
     @Override
     public AInterval deserialize(DataInput in) throws HyracksDataException {
         try {
-            return new AInterval(in.readLong(), in.readLong(), in.readByte());
+            byte tag = in.readByte();
+            long start = 0, end = 0;
+            if (tag == ATypeTag.DATETIME.serialize()) {
+                start = in.readLong();
+                end = in.readLong();
+            } else {
+                start = in.readInt();
+                end = in.readInt();
+            }
+            return new AInterval(start, end, tag);
         } catch (IOException e) {
             throw new HyracksDataException(e);
         }
@@ -52,36 +71,75 @@ public class AIntervalSerializerDeserializer implements ISerializerDeserializer<
     @Override
     public void serialize(AInterval instance, DataOutput out) throws HyracksDataException {
         try {
-            out.writeLong(instance.getIntervalStart());
-            out.writeLong(instance.getIntervalEnd());
             out.writeByte(instance.getIntervalType());
+            if (instance.getIntervalType() == ATypeTag.DATETIME.serialize()) {
+                out.writeLong(instance.getIntervalStart());
+                out.writeLong(instance.getIntervalEnd());
+            } else {
+                out.writeInt((int) instance.getIntervalStart());
+                out.writeInt((int) instance.getIntervalEnd());
+            }
         } catch (IOException e) {
             throw new HyracksDataException(e);
         }
     }
 
-    public static long getIntervalStart(byte[] data, int offset) {
-        return AInt64SerializerDeserializer.getLong(data, offset + getIntervalStartOffset());
+    public static byte getIntervalTimeType(byte[] data, int start) {
+        return BytePointable.getByte(data, getIntervalTypeOffset(data, start));
     }
 
-    public static long getIntervalEnd(byte[] data, int offset) {
-        return AInt64SerializerDeserializer.getLong(data, offset + getIntervalEndOffset());
+    public static int getIntervalTypeOffset(byte[] data, int start) {
+        return start;
     }
 
-    public static int getIntervalStartOffset() {
-        return INTERVAL_START_POINT_OFFSET;
+    public static int getTypeSize() {
+        return Byte.BYTES;
     }
 
-    public static int getIntervalEndOffset() {
-        return INTERVAL_END_POINT_OFFSET;
+    public static long getIntervalStart(byte[] data, int start) {
+        if (getIntervalTimeType(data, start) == ATypeTag.DATETIME.serialize()) {
+            return LongPointable.getLong(data, getIntervalStartOffset(data, start));
+        } else {
+            return IntegerPointable.getInteger(data, getIntervalStartOffset(data, start));
+        }
+    }
+
+    public static int getIntervalStartOffset(byte[] data, int start) {
+        int offset = getIntervalTypeOffset(data, start) + getTypeSize();
+        return offset;
     }
 
-    public static int getIntervalTagOffset() {
-        return INTERVAL_TAG_OFFSET;
+    public static int getStartSize(byte[] data, int start) {
+        if (getIntervalTimeType(data, start) == ATypeTag.DATETIME.serialize()) {
+            return Long.BYTES;
+        } else {
+            return Integer.BYTES;
+        }
+    }
+
+    public static long getIntervalEnd(byte[] data, int start) {
+        if (getIntervalTimeType(data, start) == ATypeTag.DATETIME.serialize()) {
+            return LongPointable.getLong(data, getIntervalEndOffset(data, start));
+        } else {
+            return IntegerPointable.getInteger(data, getIntervalEndOffset(data, start));
+        }
+    }
+
+    public static int getIntervalEndOffset(byte[] data, int start) {
+        int offset = getIntervalStartOffset(data, start) + getStartSize(data, start);
+        return offset;
+    }
+
+    public static int getEndSize(byte[] data, int start) {
+        if (getIntervalTimeType(data, start) == ATypeTag.DATETIME.serialize()) {
+            return Long.BYTES;
+        } else {
+            return Integer.BYTES;
+        }
     }
 
-    public static byte getIntervalTimeType(byte[] data, int offset) {
-        return data[offset + 8 * 2];
+    public static int getIntervalLength(byte[] data, int start) {
+        return getTypeSize() + getStartSize(data, start) + getEndSize(data, start);
     }
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/d434b50f/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/AOrderedListSerializerDeserializer.java
----------------------------------------------------------------------
diff --git a/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/AOrderedListSerializerDeserializer.java b/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/AOrderedListSerializerDeserializer.java
index 0004977..fba898d 100644
--- a/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/AOrderedListSerializerDeserializer.java
+++ b/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/AOrderedListSerializerDeserializer.java
@@ -67,21 +67,7 @@ public class AOrderedListSerializerDeserializer implements ISerializerDeserializ
     @Override
     public AOrderedList deserialize(DataInput in) throws HyracksDataException {
         try {
-            boolean fixedSize = false;
             ATypeTag typeTag = EnumDeserializer.ATYPETAGDESERIALIZER.deserialize(in.readByte());
-            switch (typeTag) {
-                case STRING:
-                case BINARY:
-                case RECORD:
-                case ORDEREDLIST:
-                case UNORDEREDLIST:
-                case ANY:
-                    fixedSize = false;
-                    break;
-                default:
-                    fixedSize = true;
-                    break;
-            }
 
             IAType currentItemType = itemType;
             @SuppressWarnings("rawtypes")
@@ -97,7 +83,7 @@ public class AOrderedListSerializerDeserializer implements ISerializerDeserializ
             int numberOfitems;
             numberOfitems = in.readInt();
             if (numberOfitems > 0) {
-                if (!fixedSize) {
+                if (!NonTaggedFormatUtil.isFixedSizedCollection(currentItemType)) {
                     for (int i = 0; i < numberOfitems; i++)
                         in.readInt();
                 }
@@ -147,17 +133,11 @@ public class AOrderedListSerializerDeserializer implements ISerializerDeserializ
     public static int getItemOffset(byte[] serOrderedList, int offset, int itemIndex) throws AsterixException {
         if (serOrderedList[offset] == ATypeTag.ORDEREDLIST.serialize()) {
             ATypeTag typeTag = EnumDeserializer.ATYPETAGDESERIALIZER.deserialize(serOrderedList[offset + 1]);
-            switch (typeTag) {
-                case STRING:
-                case BINARY:
-                case RECORD:
-                case ORDEREDLIST:
-                case UNORDEREDLIST:
-                case ANY:
-                    return offset + AInt32SerializerDeserializer.getInt(serOrderedList, offset + 10 + (4 * itemIndex));
-                default:
-                    int length = NonTaggedFormatUtil.getFieldValueLength(serOrderedList, offset + 1, typeTag, true);
-                    return offset + 10 + (length * itemIndex);
+            if (NonTaggedFormatUtil.isFixedSizedCollection(typeTag)) {
+                int length = NonTaggedFormatUtil.getFieldValueLength(serOrderedList, offset + 1, typeTag, true);
+                return offset + 10 + (length * itemIndex);
+            } else {
+                return offset + AInt32SerializerDeserializer.getInt(serOrderedList, offset + 10 + (4 * itemIndex));
             }
             // 10 = tag (1) + itemTag (1) + list size (4) + number of items (4)
         } else

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/d434b50f/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/AUnorderedListSerializerDeserializer.java
----------------------------------------------------------------------
diff --git a/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/AUnorderedListSerializerDeserializer.java b/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/AUnorderedListSerializerDeserializer.java
index 87e2ab7..9475e6a 100644
--- a/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/AUnorderedListSerializerDeserializer.java
+++ b/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/AUnorderedListSerializerDeserializer.java
@@ -69,21 +69,7 @@ public class AUnorderedListSerializerDeserializer implements ISerializerDeserial
     public AUnorderedList deserialize(DataInput in) throws HyracksDataException {
         // TODO: schemaless unordered list deserializer
         try {
-            boolean fixedSize = false;
             ATypeTag typeTag = EnumDeserializer.ATYPETAGDESERIALIZER.deserialize(in.readByte());
-            switch (typeTag) {
-                case STRING:
-                case BINARY:
-                case RECORD:
-                case ORDEREDLIST:
-                case UNORDEREDLIST:
-                case ANY:
-                    fixedSize = false;
-                    break;
-                default:
-                    fixedSize = true;
-                    break;
-            }
 
             IAType currentItemType = itemType;
             @SuppressWarnings("rawtypes")
@@ -99,7 +85,7 @@ public class AUnorderedListSerializerDeserializer implements ISerializerDeserial
             numberOfitems = in.readInt();
             ArrayList<IAObject> items = new ArrayList<IAObject>();
             if (numberOfitems > 0) {
-                if (!fixedSize) {
+                if (!NonTaggedFormatUtil.isFixedSizedCollection(currentItemType)) {
                     for (int i = 0; i < numberOfitems; i++)
                         in.readInt();
                 }
@@ -149,17 +135,11 @@ public class AUnorderedListSerializerDeserializer implements ISerializerDeserial
     public static int getItemOffset(byte[] serOrderedList, int offset, int itemIndex) throws AsterixException {
         if (serOrderedList[offset] == ATypeTag.UNORDEREDLIST.serialize()) {
             ATypeTag typeTag = EnumDeserializer.ATYPETAGDESERIALIZER.deserialize(serOrderedList[offset + 1]);
-            switch (typeTag) {
-                case STRING:
-                case BINARY:
-                case RECORD:
-                case ORDEREDLIST:
-                case UNORDEREDLIST:
-                case ANY:
-                    return offset + AInt32SerializerDeserializer.getInt(serOrderedList, offset + 10 + (4 * itemIndex));
-                default:
-                    int length = NonTaggedFormatUtil.getFieldValueLength(serOrderedList, offset + 1, typeTag, true);
-                    return offset + 10 + (length * itemIndex);
+            if (NonTaggedFormatUtil.isFixedSizedCollection(typeTag)) {
+                int length = NonTaggedFormatUtil.getFieldValueLength(serOrderedList, offset + 1, typeTag, true);
+                return offset + 10 + (length * itemIndex);
+            } else {
+                return offset + AInt32SerializerDeserializer.getInt(serOrderedList, offset + 10 + (4 * itemIndex));
             }
             // 10 = tag (1) + itemTag (1) + list size (4) + number of items (4)
         } else

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/d434b50f/asterix-om/src/main/java/org/apache/asterix/om/functions/AsterixBuiltinFunctions.java
----------------------------------------------------------------------
diff --git a/asterix-om/src/main/java/org/apache/asterix/om/functions/AsterixBuiltinFunctions.java b/asterix-om/src/main/java/org/apache/asterix/om/functions/AsterixBuiltinFunctions.java
index 7b8a9fa..f1b0e67 100644
--- a/asterix-om/src/main/java/org/apache/asterix/om/functions/AsterixBuiltinFunctions.java
+++ b/asterix-om/src/main/java/org/apache/asterix/om/functions/AsterixBuiltinFunctions.java
@@ -508,12 +508,8 @@ public class AsterixBuiltinFunctions {
     public final static FunctionIdentifier DAY_TIME_DURATION_CONSTRUCTOR = new FunctionIdentifier(
             FunctionConstants.ASTERIX_NS, "day-time-duration", 1);
 
-    public final static FunctionIdentifier INTERVAL_CONSTRUCTOR_DATE = new FunctionIdentifier(
-            FunctionConstants.ASTERIX_NS, "interval-from-date", 2);
-    public final static FunctionIdentifier INTERVAL_CONSTRUCTOR_TIME = new FunctionIdentifier(
-            FunctionConstants.ASTERIX_NS, "interval-from-time", 2);
-    public final static FunctionIdentifier INTERVAL_CONSTRUCTOR_DATETIME = new FunctionIdentifier(
-            FunctionConstants.ASTERIX_NS, "interval-from-datetime", 2);
+    public final static FunctionIdentifier INTERVAL_CONSTRUCTOR = new FunctionIdentifier(
+            FunctionConstants.ASTERIX_NS, "interval", 2);
     public final static FunctionIdentifier INTERVAL_CONSTRUCTOR_START_FROM_DATE = new FunctionIdentifier(
             FunctionConstants.ASTERIX_NS, "interval-start-from-date", 2);
     public final static FunctionIdentifier INTERVAL_CONSTRUCTOR_START_FROM_TIME = new FunctionIdentifier(
@@ -1026,9 +1022,7 @@ public class AsterixBuiltinFunctions {
         addFunction(DURATION_FROM_INTERVAL, OptionalADayTimeDurationTypeComputer.INSTANCE, true);
 
         // interval constructors
-        addFunction(INTERVAL_CONSTRUCTOR_DATE, OptionalAIntervalTypeComputer.INSTANCE, true);
-        addFunction(INTERVAL_CONSTRUCTOR_TIME, OptionalAIntervalTypeComputer.INSTANCE, true);
-        addFunction(INTERVAL_CONSTRUCTOR_DATETIME, OptionalAIntervalTypeComputer.INSTANCE, true);
+        addFunction(INTERVAL_CONSTRUCTOR, OptionalAIntervalTypeComputer.INSTANCE, true);
         addFunction(INTERVAL_CONSTRUCTOR_START_FROM_DATE, OptionalAIntervalTypeComputer.INSTANCE, true);
         addFunction(INTERVAL_CONSTRUCTOR_START_FROM_DATETIME, OptionalAIntervalTypeComputer.INSTANCE, true);
         addFunction(INTERVAL_CONSTRUCTOR_START_FROM_TIME, OptionalAIntervalTypeComputer.INSTANCE, true);

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/d434b50f/asterix-om/src/main/java/org/apache/asterix/om/pointables/AListVisitablePointable.java
----------------------------------------------------------------------
diff --git a/asterix-om/src/main/java/org/apache/asterix/om/pointables/AListVisitablePointable.java b/asterix-om/src/main/java/org/apache/asterix/om/pointables/AListVisitablePointable.java
index 42371ea..2f7d9af 100644
--- a/asterix-om/src/main/java/org/apache/asterix/om/pointables/AListVisitablePointable.java
+++ b/asterix-om/src/main/java/org/apache/asterix/om/pointables/AListVisitablePointable.java
@@ -101,19 +101,9 @@ public class AListVisitablePointable extends AbstractVisitablePointable {
 
         int numberOfitems = AInt32SerializerDeserializer.getInt(b, s + 6);
         int itemOffset;
-        if (typedItemList) {
-            switch (itemTag) {
-                case STRING:
-                case BINARY:
-                case RECORD:
-                case ORDEREDLIST:
-                case UNORDEREDLIST:
-                case ANY:
-                    itemOffset = s + 10 + (numberOfitems * 4);
-                    break;
-                default:
-                    itemOffset = s + 10;
-            }
+
+        if (typedItemList && NonTaggedFormatUtil.isFixedSizedCollection(itemTag)) {
+            itemOffset = s + 10;
         } else {
             itemOffset = s + 10 + (numberOfitems * 4);
         }

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/d434b50f/asterix-om/src/main/java/org/apache/asterix/om/pointables/printer/json/clean/APrintVisitor.java
----------------------------------------------------------------------
diff --git a/asterix-om/src/main/java/org/apache/asterix/om/pointables/printer/json/clean/APrintVisitor.java b/asterix-om/src/main/java/org/apache/asterix/om/pointables/printer/json/clean/APrintVisitor.java
index 734319a..2f8e5f9 100644
--- a/asterix-om/src/main/java/org/apache/asterix/om/pointables/printer/json/clean/APrintVisitor.java
+++ b/asterix-om/src/main/java/org/apache/asterix/om/pointables/printer/json/clean/APrintVisitor.java
@@ -34,6 +34,7 @@ import org.apache.asterix.dataflow.data.nontagged.printers.json.clean.AInt16Prin
 import org.apache.asterix.dataflow.data.nontagged.printers.json.clean.AInt32Printer;
 import org.apache.asterix.dataflow.data.nontagged.printers.json.clean.AInt64Printer;
 import org.apache.asterix.dataflow.data.nontagged.printers.json.clean.AInt8Printer;
+import org.apache.asterix.dataflow.data.nontagged.printers.json.clean.AIntervalPrinter;
 import org.apache.asterix.dataflow.data.nontagged.printers.json.clean.ALinePrinter;
 import org.apache.asterix.dataflow.data.nontagged.printers.json.clean.ANullPrinter;
 import org.apache.asterix.dataflow.data.nontagged.printers.json.clean.APoint3DPrinter;
@@ -154,6 +155,10 @@ public class APrintVisitor implements IVisitablePointableVisitor<Void, Pair<Prin
                     ADurationPrinter.INSTANCE.print(b, s, l, ps);
                     break;
                 }
+                case INTERVAL: {
+                    AIntervalPrinter.INSTANCE.print(b, s, l, ps);
+                    break;
+                }
                 case POINT: {
                     APointPrinter.INSTANCE.print(b, s, l, ps);
                     break;

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/d434b50f/asterix-om/src/main/java/org/apache/asterix/om/pointables/printer/json/lossless/APrintVisitor.java
----------------------------------------------------------------------
diff --git a/asterix-om/src/main/java/org/apache/asterix/om/pointables/printer/json/lossless/APrintVisitor.java b/asterix-om/src/main/java/org/apache/asterix/om/pointables/printer/json/lossless/APrintVisitor.java
index d291d33..3d8958a 100644
--- a/asterix-om/src/main/java/org/apache/asterix/om/pointables/printer/json/lossless/APrintVisitor.java
+++ b/asterix-om/src/main/java/org/apache/asterix/om/pointables/printer/json/lossless/APrintVisitor.java
@@ -34,6 +34,7 @@ import org.apache.asterix.dataflow.data.nontagged.printers.json.lossless.AInt16P
 import org.apache.asterix.dataflow.data.nontagged.printers.json.lossless.AInt32Printer;
 import org.apache.asterix.dataflow.data.nontagged.printers.json.lossless.AInt64Printer;
 import org.apache.asterix.dataflow.data.nontagged.printers.json.lossless.AInt8Printer;
+import org.apache.asterix.dataflow.data.nontagged.printers.json.lossless.AIntervalPrinter;
 import org.apache.asterix.dataflow.data.nontagged.printers.json.lossless.ALinePrinter;
 import org.apache.asterix.dataflow.data.nontagged.printers.json.lossless.ANullPrinter;
 import org.apache.asterix.dataflow.data.nontagged.printers.json.lossless.APoint3DPrinter;
@@ -154,6 +155,10 @@ public class APrintVisitor implements IVisitablePointableVisitor<Void, Pair<Prin
                     ADurationPrinter.INSTANCE.print(b, s, l, ps);
                     break;
                 }
+                case INTERVAL: {
+                    AIntervalPrinter.INSTANCE.print(b, s, l, ps);
+                    break;
+                }
                 case POINT: {
                     APointPrinter.INSTANCE.print(b, s, l, ps);
                     break;

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/d434b50f/asterix-om/src/main/java/org/apache/asterix/om/util/NonTaggedFormatUtil.java
----------------------------------------------------------------------
diff --git a/asterix-om/src/main/java/org/apache/asterix/om/util/NonTaggedFormatUtil.java b/asterix-om/src/main/java/org/apache/asterix/om/util/NonTaggedFormatUtil.java
index 6377bcc..c24ce45 100644
--- a/asterix-om/src/main/java/org/apache/asterix/om/util/NonTaggedFormatUtil.java
+++ b/asterix-om/src/main/java/org/apache/asterix/om/util/NonTaggedFormatUtil.java
@@ -23,6 +23,7 @@ import java.util.List;
 import org.apache.asterix.common.config.DatasetConfig.IndexType;
 import org.apache.asterix.common.exceptions.AsterixException;
 import org.apache.asterix.dataflow.data.nontagged.serde.AInt16SerializerDeserializer;
+import org.apache.asterix.dataflow.data.nontagged.serde.AIntervalSerializerDeserializer;
 import org.apache.asterix.dataflow.data.nontagged.serde.AOrderedListSerializerDeserializer;
 import org.apache.asterix.dataflow.data.nontagged.serde.ARecordSerializerDeserializer;
 import org.apache.asterix.dataflow.data.nontagged.serde.AUnorderedListSerializerDeserializer;
@@ -48,19 +49,27 @@ public final class NonTaggedFormatUtil {
 
     public static final boolean isFixedSizedCollection(IAType type) {
         switch (type.getTypeTag()) {
+            case UNION:
+                if (!((AUnionType) type).isNullableType())
+                    return false;
+                else
+                    return isFixedSizedCollection(((AUnionType) type).getNullableType());
+            default:
+                return isFixedSizedCollection(type.getTypeTag());
+        }
+    }
+
+    public static final boolean isFixedSizedCollection(ATypeTag type) {
+        switch (type) {
             case STRING:
             case BINARY:
             case RECORD:
+            case INTERVAL:
             case ORDEREDLIST:
             case UNORDEREDLIST:
             case POLYGON:
             case ANY:
                 return false;
-            case UNION:
-                if (!((AUnionType) type).isNullableType())
-                    return false;
-                else
-                    return isFixedSizedCollection(((AUnionType) type).getNullableType());
             default:
                 return true;
         }
@@ -130,7 +139,10 @@ public final class NonTaggedFormatUtil {
             case UUID:
                 return 16;
             case INTERVAL:
-                return 17;
+                if (tagged)
+                    return AIntervalSerializerDeserializer.getIntervalLength(serNonTaggedAObject, offset + 1);
+                else
+                    return AIntervalSerializerDeserializer.getIntervalLength(serNonTaggedAObject, offset);
             case POINT3D:
             case CIRCLE:
                 return 24;

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/d434b50f/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/constructors/AIntervalConstructorDescriptor.java
----------------------------------------------------------------------
diff --git a/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/constructors/AIntervalConstructorDescriptor.java b/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/constructors/AIntervalConstructorDescriptor.java
new file mode 100644
index 0000000..a342b70
--- /dev/null
+++ b/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/constructors/AIntervalConstructorDescriptor.java
@@ -0,0 +1,154 @@
+/*
+ * 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.runtime.evaluators.constructors;
+
+import java.io.DataOutput;
+import java.io.IOException;
+
+import org.apache.asterix.dataflow.data.nontagged.serde.ADateSerializerDeserializer;
+import org.apache.asterix.dataflow.data.nontagged.serde.ADateTimeSerializerDeserializer;
+import org.apache.asterix.dataflow.data.nontagged.serde.ATimeSerializerDeserializer;
+import org.apache.asterix.formats.nontagged.AqlSerializerDeserializerProvider;
+import org.apache.asterix.om.base.AInterval;
+import org.apache.asterix.om.base.AMutableInterval;
+import org.apache.asterix.om.base.ANull;
+import org.apache.asterix.om.functions.AsterixBuiltinFunctions;
+import org.apache.asterix.om.functions.IFunctionDescriptor;
+import org.apache.asterix.om.functions.IFunctionDescriptorFactory;
+import org.apache.asterix.om.types.ATypeTag;
+import org.apache.asterix.om.types.BuiltinType;
+import org.apache.asterix.om.types.EnumDeserializer;
+import org.apache.asterix.runtime.evaluators.base.AbstractScalarFunctionDynamicDescriptor;
+import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
+import org.apache.hyracks.algebricks.core.algebra.functions.FunctionIdentifier;
+import org.apache.hyracks.algebricks.runtime.base.ICopyEvaluator;
+import org.apache.hyracks.algebricks.runtime.base.ICopyEvaluatorFactory;
+import org.apache.hyracks.api.dataflow.value.ISerializerDeserializer;
+import org.apache.hyracks.data.std.api.IDataOutputProvider;
+import org.apache.hyracks.data.std.util.ArrayBackedValueStorage;
+import org.apache.hyracks.dataflow.common.data.accessors.IFrameTupleReference;
+
+public class AIntervalConstructorDescriptor extends AbstractScalarFunctionDynamicDescriptor {
+    private static final long serialVersionUID = 1L;
+    public final static FunctionIdentifier FID = AsterixBuiltinFunctions.INTERVAL_CONSTRUCTOR;
+    public static final IFunctionDescriptorFactory FACTORY = new IFunctionDescriptorFactory() {
+        @Override
+        public IFunctionDescriptor createFunctionDescriptor() {
+            return new AIntervalConstructorDescriptor();
+        }
+    };
+
+    @Override
+    public ICopyEvaluatorFactory createEvaluatorFactory(final ICopyEvaluatorFactory[] args) {
+        return new ICopyEvaluatorFactory() {
+            private static final long serialVersionUID = 1L;
+
+            @Override
+            public ICopyEvaluator createEvaluator(final IDataOutputProvider output) throws AlgebricksException {
+                return new ICopyEvaluator() {
+
+                    private DataOutput out = output.getDataOutput();
+                    private ArrayBackedValueStorage argOut0 = new ArrayBackedValueStorage();
+                    private ArrayBackedValueStorage argOut1 = new ArrayBackedValueStorage();
+                    private ICopyEvaluator eval0 = args[0].createEvaluator(argOut0);
+                    private ICopyEvaluator eval1 = args[1].createEvaluator(argOut1);
+                    private String errorMessage = "This can not be an instance of interval (only support Date/Time/Datetime)";
+                    private AMutableInterval aInterval = new AMutableInterval(0L, 0L, (byte) 0);
+                    @SuppressWarnings("unchecked")
+                    private ISerializerDeserializer<AInterval> intervalSerde = AqlSerializerDeserializerProvider.INSTANCE
+                            .getSerializerDeserializer(BuiltinType.AINTERVAL);
+                    @SuppressWarnings("unchecked")
+                    private ISerializerDeserializer<ANull> nullSerde = AqlSerializerDeserializerProvider.INSTANCE
+                            .getSerializerDeserializer(BuiltinType.ANULL);
+
+                    @Override
+                    public void evaluate(IFrameTupleReference tuple) throws AlgebricksException {
+
+                        argOut0.reset();
+                        argOut1.reset();
+                        eval0.evaluate(tuple);
+                        eval1.evaluate(tuple);
+
+                        try {
+
+                            if (argOut0.getByteArray()[0] == ATypeTag.SERIALIZED_NULL_TYPE_TAG
+                                    || argOut1.getByteArray()[0] == ATypeTag.SERIALIZED_NULL_TYPE_TAG) {
+                                nullSerde.serialize(ANull.NULL, out);
+                                return;
+                            }
+
+                            if (argOut0.getByteArray()[0] != argOut1.getByteArray()[0]) {
+                                throw new AlgebricksException(
+                                        FID.getName()
+                                                + ": expects both arguments to be of the same type. Either DATE/TIME/DATETIME, but got "
+                                                + EnumDeserializer.ATYPETAGDESERIALIZER.deserialize(
+                                                        argOut0.getByteArray()[0])
+                                                + " and " + EnumDeserializer.ATYPETAGDESERIALIZER
+                                                        .deserialize(argOut0.getByteArray()[1]));
+                            }
+
+                            long intervalStart = 0, intervalEnd = 0;
+                            ATypeTag intervalType = EnumDeserializer.ATYPETAGDESERIALIZER
+                                    .deserialize(argOut0.getByteArray()[0]);
+
+                            switch (intervalType) {
+                                case DATE:
+                                    intervalStart = ADateSerializerDeserializer.getChronon(argOut0.getByteArray(), 1);
+                                    intervalEnd = ADateSerializerDeserializer.getChronon(argOut1.getByteArray(), 1);
+                                    break;
+                                case TIME:
+                                    intervalStart = ATimeSerializerDeserializer.getChronon(argOut0.getByteArray(), 1);
+                                    intervalEnd = ATimeSerializerDeserializer.getChronon(argOut1.getByteArray(), 1);
+                                    break;
+                                case DATETIME:
+                                    intervalStart = ADateTimeSerializerDeserializer.getChronon(argOut0.getByteArray(),
+                                            1);
+                                    intervalEnd = ADateTimeSerializerDeserializer.getChronon(argOut1.getByteArray(), 1);
+                                    break;
+                                default:
+                                    throw new AlgebricksException(
+                                            FID.getName() + ": expects NULL/DATE/TIME/DATETIME as arguments, but got "
+                                                    + intervalType);
+                            }
+
+                            if (intervalEnd < intervalStart) {
+                                throw new AlgebricksException(
+                                        FID.getName() + ": interval end must not be less than the interval start.");
+                            }
+
+                            aInterval.setValue(intervalStart, intervalEnd, intervalType.serialize());
+                            intervalSerde.serialize(aInterval, out);
+
+                        } catch (IOException e1) {
+                            throw new AlgebricksException(errorMessage);
+                        } catch (Exception e2) {
+                            throw new AlgebricksException(e2);
+                        }
+                    }
+                };
+            }
+        };
+    }
+
+    @Override
+    public FunctionIdentifier getIdentifier() {
+        return FID;
+    }
+
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/d434b50f/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/constructors/AIntervalFromDateConstructorDescriptor.java
----------------------------------------------------------------------
diff --git a/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/constructors/AIntervalFromDateConstructorDescriptor.java b/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/constructors/AIntervalFromDateConstructorDescriptor.java
deleted file mode 100644
index ecfed56..0000000
--- a/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/constructors/AIntervalFromDateConstructorDescriptor.java
+++ /dev/null
@@ -1,154 +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.runtime.evaluators.constructors;
-
-import java.io.DataOutput;
-import java.io.IOException;
-
-import org.apache.asterix.dataflow.data.nontagged.serde.ADateSerializerDeserializer;
-import org.apache.asterix.formats.nontagged.AqlSerializerDeserializerProvider;
-import org.apache.asterix.om.base.AInterval;
-import org.apache.asterix.om.base.AMutableInterval;
-import org.apache.asterix.om.base.ANull;
-import org.apache.asterix.om.base.temporal.ADateParserFactory;
-import org.apache.asterix.om.base.temporal.GregorianCalendarSystem;
-import org.apache.asterix.om.functions.AsterixBuiltinFunctions;
-import org.apache.asterix.om.functions.IFunctionDescriptor;
-import org.apache.asterix.om.functions.IFunctionDescriptorFactory;
-import org.apache.asterix.om.types.ATypeTag;
-import org.apache.asterix.om.types.BuiltinType;
-import org.apache.asterix.om.types.EnumDeserializer;
-import org.apache.asterix.runtime.evaluators.base.AbstractScalarFunctionDynamicDescriptor;
-import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
-import org.apache.hyracks.algebricks.core.algebra.functions.FunctionIdentifier;
-import org.apache.hyracks.algebricks.runtime.base.ICopyEvaluator;
-import org.apache.hyracks.algebricks.runtime.base.ICopyEvaluatorFactory;
-import org.apache.hyracks.api.dataflow.value.ISerializerDeserializer;
-import org.apache.hyracks.data.std.api.IDataOutputProvider;
-import org.apache.hyracks.data.std.primitive.UTF8StringPointable;
-import org.apache.hyracks.data.std.util.ArrayBackedValueStorage;
-import org.apache.hyracks.dataflow.common.data.accessors.IFrameTupleReference;
-
-public class AIntervalFromDateConstructorDescriptor extends AbstractScalarFunctionDynamicDescriptor {
-    private static final long serialVersionUID = 1L;
-    public final static FunctionIdentifier FID = AsterixBuiltinFunctions.INTERVAL_CONSTRUCTOR_DATE;
-    public static final IFunctionDescriptorFactory FACTORY = new IFunctionDescriptorFactory() {
-        @Override
-        public IFunctionDescriptor createFunctionDescriptor() {
-            return new AIntervalFromDateConstructorDescriptor();
-        }
-    };
-
-    @Override
-    public ICopyEvaluatorFactory createEvaluatorFactory(final ICopyEvaluatorFactory[] args) {
-        return new ICopyEvaluatorFactory() {
-            private static final long serialVersionUID = 1L;
-
-            @Override
-            public ICopyEvaluator createEvaluator(final IDataOutputProvider output) throws AlgebricksException {
-                return new ICopyEvaluator() {
-
-                    private DataOutput out = output.getDataOutput();
-
-                    private ArrayBackedValueStorage argOut0 = new ArrayBackedValueStorage();
-                    private ArrayBackedValueStorage argOut1 = new ArrayBackedValueStorage();
-                    private ICopyEvaluator eval0 = args[0].createEvaluator(argOut0);
-                    private ICopyEvaluator eval1 = args[1].createEvaluator(argOut1);
-                    private String errorMessage = "This can not be an instance of interval (from Date)";
-                    //TODO: Where to move and fix these?
-                    private AMutableInterval aInterval = new AMutableInterval(0L, 0L, (byte) 0);
-                    @SuppressWarnings("unchecked")
-                    private ISerializerDeserializer<AInterval> intervalSerde = AqlSerializerDeserializerProvider.INSTANCE
-                            .getSerializerDeserializer(BuiltinType.AINTERVAL);
-                    @SuppressWarnings("unchecked")
-                    private ISerializerDeserializer<ANull> nullSerde = AqlSerializerDeserializerProvider.INSTANCE
-                            .getSerializerDeserializer(BuiltinType.ANULL);
-                    private final UTF8StringPointable utf8Ptr = new UTF8StringPointable();
-
-                    @Override
-                    public void evaluate(IFrameTupleReference tuple) throws AlgebricksException {
-
-                        argOut0.reset();
-                        argOut1.reset();
-                        eval0.evaluate(tuple);
-                        eval1.evaluate(tuple);
-
-                        try {
-
-                            if (argOut0.getByteArray()[0] == ATypeTag.SERIALIZED_NULL_TYPE_TAG
-                                    || argOut1.getByteArray()[0] == ATypeTag.SERIALIZED_NULL_TYPE_TAG) {
-                                nullSerde.serialize(ANull.NULL, out);
-                                return;
-                            }
-
-                            long intervalStart = 0, intervalEnd = 0;
-
-                            if (argOut0.getByteArray()[0] == ATypeTag.SERIALIZED_DATE_TYPE_TAG) {
-                                intervalStart = ADateSerializerDeserializer.getChronon(argOut0.getByteArray(), 1);
-                            } else if (argOut0.getByteArray()[0] == ATypeTag.SERIALIZED_STRING_TYPE_TAG) {
-                                utf8Ptr.set(argOut0.getByteArray(), 1, argOut0.getLength() - 1);
-                                int stringLength = utf8Ptr.getUTF8Length();
-                                intervalStart = ADateParserFactory.parseDatePart(utf8Ptr.getByteArray(),
-                                        utf8Ptr.getCharStartOffset(), stringLength)
-                                        / GregorianCalendarSystem.CHRONON_OF_DAY;
-                            } else {
-                                throw new AlgebricksException(FID.getName()
-                                        + ": expects NULL/STRING/DATE for the first argument, but got "
-                                        + EnumDeserializer.ATYPETAGDESERIALIZER.deserialize(argOut0.getByteArray()[0]));
-                            }
-
-                            if (argOut1.getByteArray()[0] == ATypeTag.SERIALIZED_DATE_TYPE_TAG) {
-                                intervalEnd = ADateSerializerDeserializer.getChronon(argOut1.getByteArray(), 1);
-                            } else if (argOut1.getByteArray()[0] == ATypeTag.SERIALIZED_STRING_TYPE_TAG) {
-                                utf8Ptr.set(argOut1.getByteArray(), 1, argOut1.getLength() - 1);
-                                int stringLength = utf8Ptr.getUTF8Length();
-                                intervalEnd = ADateParserFactory.parseDatePart(utf8Ptr.getByteArray(),
-                                        utf8Ptr.getCharStartOffset(), stringLength)
-                                        / GregorianCalendarSystem.CHRONON_OF_DAY;
-                            } else {
-                                throw new AlgebricksException(FID.getName()
-                                        + ": expects NULL/STRING/DATE for the second argument, but got "
-                                        + EnumDeserializer.ATYPETAGDESERIALIZER.deserialize(argOut1.getByteArray()[0]));
-                            }
-
-                            if (intervalEnd < intervalStart) {
-                                throw new AlgebricksException(
-                                        FID.getName() + ": interval end must not be less than the interval start.");
-                            }
-
-                            aInterval.setValue(intervalStart, intervalEnd, ATypeTag.SERIALIZED_DATE_TYPE_TAG);
-                            intervalSerde.serialize(aInterval, out);
-
-                        } catch (IOException e1) {
-                            throw new AlgebricksException(errorMessage);
-                        } catch (Exception e2) {
-                            throw new AlgebricksException(e2);
-                        }
-                    }
-                };
-            }
-        };
-    }
-
-    @Override
-    public FunctionIdentifier getIdentifier() {
-        return FID;
-    }
-
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/d434b50f/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/constructors/AIntervalFromDateTimeConstructorDescriptor.java
----------------------------------------------------------------------
diff --git a/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/constructors/AIntervalFromDateTimeConstructorDescriptor.java b/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/constructors/AIntervalFromDateTimeConstructorDescriptor.java
deleted file mode 100644
index 2972912..0000000
--- a/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/constructors/AIntervalFromDateTimeConstructorDescriptor.java
+++ /dev/null
@@ -1,181 +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.runtime.evaluators.constructors;
-
-import java.io.DataOutput;
-import java.io.IOException;
-
-import org.apache.asterix.dataflow.data.nontagged.serde.ADateTimeSerializerDeserializer;
-import org.apache.asterix.formats.nontagged.AqlSerializerDeserializerProvider;
-import org.apache.asterix.om.base.AInterval;
-import org.apache.asterix.om.base.AMutableInterval;
-import org.apache.asterix.om.base.ANull;
-import org.apache.asterix.om.base.temporal.ADateParserFactory;
-import org.apache.asterix.om.base.temporal.ATimeParserFactory;
-import org.apache.asterix.om.functions.AsterixBuiltinFunctions;
-import org.apache.asterix.om.functions.IFunctionDescriptor;
-import org.apache.asterix.om.functions.IFunctionDescriptorFactory;
-import org.apache.asterix.om.types.ATypeTag;
-import org.apache.asterix.om.types.BuiltinType;
-import org.apache.asterix.om.types.EnumDeserializer;
-import org.apache.asterix.runtime.evaluators.base.AbstractScalarFunctionDynamicDescriptor;
-import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
-import org.apache.hyracks.algebricks.core.algebra.functions.FunctionIdentifier;
-import org.apache.hyracks.algebricks.runtime.base.ICopyEvaluator;
-import org.apache.hyracks.algebricks.runtime.base.ICopyEvaluatorFactory;
-import org.apache.hyracks.api.dataflow.value.ISerializerDeserializer;
-import org.apache.hyracks.data.std.api.IDataOutputProvider;
-import org.apache.hyracks.data.std.primitive.UTF8StringPointable;
-import org.apache.hyracks.data.std.util.ArrayBackedValueStorage;
-import org.apache.hyracks.dataflow.common.data.accessors.IFrameTupleReference;
-
-public class AIntervalFromDateTimeConstructorDescriptor extends AbstractScalarFunctionDynamicDescriptor {
-
-    private static final long serialVersionUID = 1L;
-    public final static FunctionIdentifier FID = AsterixBuiltinFunctions.INTERVAL_CONSTRUCTOR_DATETIME;
-
-    public static final IFunctionDescriptorFactory FACTORY = new IFunctionDescriptorFactory() {
-        @Override
-        public IFunctionDescriptor createFunctionDescriptor() {
-            return new AIntervalFromDateTimeConstructorDescriptor();
-        }
-    };
-
-    @Override
-    public ICopyEvaluatorFactory createEvaluatorFactory(final ICopyEvaluatorFactory[] args) {
-        return new ICopyEvaluatorFactory() {
-            private static final long serialVersionUID = 1L;
-
-            @Override
-            public ICopyEvaluator createEvaluator(final IDataOutputProvider output) throws AlgebricksException {
-                return new ICopyEvaluator() {
-
-                    private DataOutput out = output.getDataOutput();
-
-                    private ArrayBackedValueStorage argOut0 = new ArrayBackedValueStorage();
-                    private ArrayBackedValueStorage argOut1 = new ArrayBackedValueStorage();
-                    private ICopyEvaluator eval0 = args[0].createEvaluator(argOut0);
-                    private ICopyEvaluator eval1 = args[1].createEvaluator(argOut1);
-                    private String errorMessage = "This can not be an instance of interval (from DateTime)";
-                    //TODO: Where to move and fix these?
-                    private AMutableInterval aInterval = new AMutableInterval(0L, 0L, (byte) 0);
-                    @SuppressWarnings("unchecked")
-                    private ISerializerDeserializer<AInterval> intervalSerde = AqlSerializerDeserializerProvider.INSTANCE
-                            .getSerializerDeserializer(BuiltinType.AINTERVAL);
-                    @SuppressWarnings("unchecked")
-                    private ISerializerDeserializer<ANull> nullSerde = AqlSerializerDeserializerProvider.INSTANCE
-                            .getSerializerDeserializer(BuiltinType.ANULL);
-                    private final UTF8StringPointable utf8Ptr = new UTF8StringPointable();
-
-                    @Override
-                    public void evaluate(IFrameTupleReference tuple) throws AlgebricksException {
-
-                        argOut0.reset();
-                        argOut1.reset();
-                        eval0.evaluate(tuple);
-                        eval1.evaluate(tuple);
-
-                        try {
-
-                            if (argOut0.getByteArray()[0] == ATypeTag.SERIALIZED_NULL_TYPE_TAG
-                                    || argOut1.getByteArray()[0] == ATypeTag.SERIALIZED_NULL_TYPE_TAG) {
-                                nullSerde.serialize(ANull.NULL, out);
-                                return;
-                            }
-
-                            long intervalStart = 0, intervalEnd = 0;
-
-                            if (argOut0.getByteArray()[0] == ATypeTag.SERIALIZED_DATETIME_TYPE_TAG) {
-                                intervalStart = ADateTimeSerializerDeserializer.getChronon(argOut0.getByteArray(), 1);
-                            } else if (argOut0.getByteArray()[0] == ATypeTag.SERIALIZED_STRING_TYPE_TAG) {
-                                // start datetime
-                                utf8Ptr.set(argOut0.getByteArray(), 1, argOut0.getLength() - 1);
-
-                                int stringLength = utf8Ptr.getUTF8Length();
-                                // get offset for time part: +1 if it is negative (-)
-                                int startOffset = utf8Ptr.getCharStartOffset();
-                                short timeOffset = (short) ((argOut0.getByteArray()[startOffset] == '-') ? 1 : 0);
-                                timeOffset += 8;
-                                if (argOut0.getByteArray()[startOffset + timeOffset] != 'T') {
-                                    timeOffset += 2;
-                                    if (argOut0.getByteArray()[startOffset + timeOffset] != 'T') {
-                                        throw new AlgebricksException(errorMessage + ": missing T");
-                                    }
-                                }
-                                intervalStart = ADateParserFactory.parseDatePart(argOut0.getByteArray(), startOffset,
-                                        timeOffset);
-                                intervalStart += ATimeParserFactory.parseTimePart(argOut0.getByteArray(),
-                                        startOffset + timeOffset + 1, stringLength - timeOffset - 1);
-                            } else {
-                                throw new AlgebricksException(FID.getName()
-                                        + ": expects NULL/STRING/DATETIME for the first argument, but got "
-                                        + EnumDeserializer.ATYPETAGDESERIALIZER.deserialize(argOut0.getByteArray()[0]));
-                            }
-
-                            if (argOut1.getByteArray()[0] == ATypeTag.SERIALIZED_DATETIME_TYPE_TAG) {
-                                intervalEnd = ADateTimeSerializerDeserializer.getChronon(argOut1.getByteArray(), 1);
-                            } else if (argOut1.getByteArray()[0] == ATypeTag.SERIALIZED_STRING_TYPE_TAG) {
-                                // start datetime
-                                utf8Ptr.set(argOut1.getByteArray(), 1, argOut1.getLength() - 1);
-                                int stringLength = utf8Ptr.getUTF8Length();
-                                // get offset for time part: +1 if it is negative (-)
-                                int startOffset = utf8Ptr.getCharStartOffset();
-                                short timeOffset = (short) ((argOut1.getByteArray()[startOffset] == '-') ? 1 : 0);
-                                timeOffset += 8;
-                                if (argOut1.getByteArray()[startOffset + timeOffset] != 'T') {
-                                    timeOffset += 2;
-                                    if (argOut1.getByteArray()[startOffset + timeOffset] != 'T') {
-                                        throw new AlgebricksException(errorMessage + ": missing T");
-                                    }
-                                }
-                                intervalEnd = ADateParserFactory.parseDatePart(argOut1.getByteArray(), startOffset,
-                                        timeOffset);
-                                intervalEnd += ATimeParserFactory.parseTimePart(argOut1.getByteArray(),
-                                        startOffset + timeOffset + 1, stringLength - timeOffset - 1);
-                            } else {
-                                throw new AlgebricksException(FID.getName()
-                                        + ": expects NULL/STRING/DATETIME for the second argument, but got "
-                                        + EnumDeserializer.ATYPETAGDESERIALIZER.deserialize(argOut1.getByteArray()[0]));
-                            }
-
-                            if (intervalEnd < intervalStart) {
-                                throw new AlgebricksException(
-                                        FID.getName() + ": interval end must not be less than the interval start.");
-                            }
-
-                            aInterval.setValue(intervalStart, intervalEnd, ATypeTag.SERIALIZED_DATETIME_TYPE_TAG);
-                            intervalSerde.serialize(aInterval, out);
-
-                        } catch (IOException e1) {
-                            throw new AlgebricksException(errorMessage);
-                        } catch (Exception e2) {
-                            throw new AlgebricksException(e2);
-                        }
-                    }
-                };
-            }
-        };
-    }
-
-    @Override
-    public FunctionIdentifier getIdentifier() {
-        return FID;
-    }
-
-}
\ No newline at end of file