Merge asterix_stabilization into asterix_stabilization_result_distribution.
git-svn-id: https://asterixdb.googlecode.com/svn/branches/asterix_stabilization_result_distribution@1358 eaa15691-b419-025a-1212-ee371bd00084
diff --git a/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/comparisons/AbstractComparisonEvaluator.java b/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/comparisons/AbstractComparisonEvaluator.java
index 2b4ea3a..1565cb9 100644
--- a/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/comparisons/AbstractComparisonEvaluator.java
+++ b/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/comparisons/AbstractComparisonEvaluator.java
@@ -136,7 +136,7 @@
private ComparisonResult compareDateOrTimeWithArg(ATypeTag typeTag2) throws AlgebricksException {
if (typeTag2 == ATypeTag.NULL) {
return ComparisonResult.GREATER_THAN;
- } else if (typeTag2 == ATypeTag.DATETIME) {
+ } else if (typeTag2 == ATypeTag.DATE || typeTag2 == ATypeTag.TIME) {
int result = dateOrTimeBinaryComp.compare(outLeft.getByteArray(), 1, outLeft.getLength() - 1,
outRight.getByteArray(), 1, outRight.getLength() - 1);
if (result == 0)
@@ -146,7 +146,7 @@
else
return ComparisonResult.GREATER_THAN;
}
- throw new AlgebricksException("Comparison is undefined between types ADateTime and " + typeTag2 + " .");
+ throw new AlgebricksException("Comparison is undefined between types Date/Time and " + typeTag2 + " .");
}
private ComparisonResult compareDateTimeWithArg(ATypeTag typeTag2) throws AlgebricksException {
@@ -162,7 +162,7 @@
else
return ComparisonResult.GREATER_THAN;
}
- throw new AlgebricksException("Comparison is undefined between types ADateTime and " + typeTag2 + " .");
+ throw new AlgebricksException("Comparison is undefined between types Datetime and " + typeTag2 + " .");
}
private ComparisonResult compareBooleanWithArg(ATypeTag typeTag2) throws AlgebricksException {
diff --git a/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/constructors/ADateConstructorDescriptor.java b/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/constructors/ADateConstructorDescriptor.java
index 44fcf7c..a1f9911 100644
--- a/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/constructors/ADateConstructorDescriptor.java
+++ b/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/constructors/ADateConstructorDescriptor.java
@@ -22,7 +22,6 @@
import edu.uci.ics.asterix.om.base.AMutableDate;
import edu.uci.ics.asterix.om.base.ANull;
import edu.uci.ics.asterix.om.base.temporal.ADateParserFactory;
-import edu.uci.ics.asterix.om.base.temporal.ByteArrayCharSequenceAccessor;
import edu.uci.ics.asterix.om.base.temporal.GregorianCalendarSystem;
import edu.uci.ics.asterix.om.functions.AsterixBuiltinFunctions;
import edu.uci.ics.asterix.om.functions.IFunctionDescriptor;
@@ -73,8 +72,6 @@
private ISerializerDeserializer<ANull> nullSerde = AqlSerializerDeserializerProvider.INSTANCE
.getSerializerDeserializer(BuiltinType.ANULL);
- private ByteArrayCharSequenceAccessor charAccessor = new ByteArrayCharSequenceAccessor();
-
@Override
public void evaluate(IFrameTupleReference tuple) throws AlgebricksException {
@@ -86,8 +83,17 @@
int stringLength = (serString[1] & 0xff << 8) + (serString[2] & 0xff << 0);
- charAccessor.reset(serString, 3, stringLength);
- long chrononTimeInMs = ADateParserFactory.parseDatePart(charAccessor, true);
+ int startOffset = 3;
+ while (serString[startOffset] == ' ') {
+ startOffset++;
+ }
+ int endOffset = stringLength - 1 + 3;
+ while (serString[endOffset] == ' ') {
+ endOffset--;
+ }
+
+ long chrononTimeInMs = ADateParserFactory.parseDatePart(serString, startOffset,
+ endOffset - startOffset + 1);
short temp = 0;
if (chrononTimeInMs < 0
diff --git a/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/constructors/ADateTimeConstructorDescriptor.java b/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/constructors/ADateTimeConstructorDescriptor.java
index 6a5783b..83f4c8b 100644
--- a/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/constructors/ADateTimeConstructorDescriptor.java
+++ b/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/constructors/ADateTimeConstructorDescriptor.java
@@ -23,7 +23,6 @@
import edu.uci.ics.asterix.om.base.ANull;
import edu.uci.ics.asterix.om.base.temporal.ADateParserFactory;
import edu.uci.ics.asterix.om.base.temporal.ATimeParserFactory;
-import edu.uci.ics.asterix.om.base.temporal.ByteArrayCharSequenceAccessor;
import edu.uci.ics.asterix.om.functions.AsterixBuiltinFunctions;
import edu.uci.ics.asterix.om.functions.IFunctionDescriptor;
import edu.uci.ics.asterix.om.functions.IFunctionDescriptorFactory;
@@ -72,7 +71,6 @@
@SuppressWarnings("unchecked")
private ISerializerDeserializer<ANull> nullSerde = AqlSerializerDeserializerProvider.INSTANCE
.getSerializerDeserializer(BuiltinType.ANULL);
- private ByteArrayCharSequenceAccessor charAccessor = new ByteArrayCharSequenceAccessor();
@Override
public void evaluate(IFrameTupleReference tuple) throws AlgebricksException {
@@ -85,25 +83,22 @@
int stringLength = (serString[1] & 0xff << 8) + (serString[2] & 0xff << 0);
- charAccessor.reset(serString, 3, stringLength);
-
// +1 if it is negative (-)
- short timeOffset = (short) ((charAccessor.getCharAt(0) == '-') ? 1 : 0);
+ short timeOffset = (short) ((serString[3] == '-') ? 1 : 0);
- if (charAccessor.getCharAt(timeOffset + 10) != 'T'
- && charAccessor.getCharAt(timeOffset + 8) != 'T') {
- throw new AlgebricksException(errorMessage + ": missing T");
+ timeOffset += 8;
+
+ if (serString[3 + timeOffset] != 'T') {
+ timeOffset += 2;
+ if (serString[3 + timeOffset] != 'T') {
+ throw new AlgebricksException(errorMessage + ": missing T");
+ }
}
- // if extended form 11, else 9
- timeOffset += (charAccessor.getCharAt(timeOffset + 13) == ':') ? (short) (11)
- : (short) (9);
+ long chrononTimeInMs = ADateParserFactory.parseDatePart(serString, 3, timeOffset);
- long chrononTimeInMs = ADateParserFactory.parseDatePart(charAccessor, false);
-
- charAccessor.reset(serString, 3 + timeOffset, stringLength - timeOffset);
-
- chrononTimeInMs += ATimeParserFactory.parseTimePart(charAccessor);
+ chrononTimeInMs += ATimeParserFactory.parseTimePart(serString, 3 + timeOffset + 1,
+ stringLength - timeOffset - 1);
aDateTime.setValue(chrononTimeInMs);
datetimeSerde.serialize(aDateTime, out);
diff --git a/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/constructors/ADurationConstructorDescriptor.java b/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/constructors/ADurationConstructorDescriptor.java
index b2b3f4e..a84ae1d 100644
--- a/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/constructors/ADurationConstructorDescriptor.java
+++ b/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/constructors/ADurationConstructorDescriptor.java
@@ -21,7 +21,6 @@
import edu.uci.ics.asterix.om.base.AMutableDuration;
import edu.uci.ics.asterix.om.base.ANull;
import edu.uci.ics.asterix.om.base.temporal.ADurationParserFactory;
-import edu.uci.ics.asterix.om.base.temporal.ByteArrayCharSequenceAccessor;
import edu.uci.ics.asterix.om.functions.AsterixBuiltinFunctions;
import edu.uci.ics.asterix.om.functions.IFunctionDescriptor;
import edu.uci.ics.asterix.om.functions.IFunctionDescriptorFactory;
@@ -43,8 +42,6 @@
private final static byte SER_STRING_TYPE_TAG = ATypeTag.STRING.serialize();
private final static byte SER_NULL_TYPE_TAG = ATypeTag.NULL.serialize();
- private final static ByteArrayCharSequenceAccessor charAccessor = new ByteArrayCharSequenceAccessor();
-
public static final IFunctionDescriptorFactory FACTORY = new IFunctionDescriptorFactory() {
public IFunctionDescriptor createFunctionDescriptor() {
return new ADurationConstructorDescriptor();
@@ -85,9 +82,7 @@
int stringLength = (serString[1] & 0xff << 8) + (serString[2] & 0xff << 0);
- charAccessor.reset(serString, 3, stringLength);
-
- ADurationParserFactory.parseDuration(charAccessor, aDuration);
+ ADurationParserFactory.parseDuration(serString, 3, stringLength, aDuration);
durationSerde.serialize(aDuration, out);
} else if (serString[0] == SER_NULL_TYPE_TAG) {
diff --git a/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/constructors/AIntervalFromDateConstructorDescriptor.java b/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/constructors/AIntervalFromDateConstructorDescriptor.java
index e1a12f8..0414874 100644
--- a/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/constructors/AIntervalFromDateConstructorDescriptor.java
+++ b/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/constructors/AIntervalFromDateConstructorDescriptor.java
@@ -23,7 +23,6 @@
import edu.uci.ics.asterix.om.base.AMutableInterval;
import edu.uci.ics.asterix.om.base.ANull;
import edu.uci.ics.asterix.om.base.temporal.ADateParserFactory;
-import edu.uci.ics.asterix.om.base.temporal.ByteArrayCharSequenceAccessor;
import edu.uci.ics.asterix.om.base.temporal.GregorianCalendarSystem;
import edu.uci.ics.asterix.om.functions.IFunctionDescriptor;
import edu.uci.ics.asterix.om.functions.IFunctionDescriptorFactory;
@@ -78,8 +77,6 @@
private ISerializerDeserializer<ANull> nullSerde = AqlSerializerDeserializerProvider.INSTANCE
.getSerializerDeserializer(BuiltinType.ANULL);
- private ByteArrayCharSequenceAccessor charAccessor = new ByteArrayCharSequenceAccessor();
-
@Override
public void evaluate(IFrameTupleReference tuple) throws AlgebricksException {
@@ -100,17 +97,15 @@
+ (argOut0.getByteArray()[2] & 0xff << 0);
// start date
- charAccessor.reset(argOut0.getByteArray(), 3, stringLength);
- long intervalStart = ADateParserFactory.parseDatePart(charAccessor, true)
- / GregorianCalendarSystem.CHRONON_OF_DAY;
- // end date
+ long intervalStart = ADateParserFactory.parseDatePart(argOut0.getByteArray(), 3,
+ stringLength) / GregorianCalendarSystem.CHRONON_OF_DAY;
+ // end date
stringLength = (argOut1.getByteArray()[1] & 0xff << 8)
+ (argOut1.getByteArray()[2] & 0xff << 0);
- charAccessor.reset(argOut1.getByteArray(), 3, stringLength);
- long intervalEnd = ADateParserFactory.parseDatePart(charAccessor, true)
- / GregorianCalendarSystem.CHRONON_OF_DAY;
+ long intervalEnd = ADateParserFactory.parseDatePart(argOut1.getByteArray(), 3,
+ stringLength) / GregorianCalendarSystem.CHRONON_OF_DAY;
if (intervalEnd < intervalStart) {
throw new AlgebricksException(
diff --git a/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/constructors/AIntervalFromDateTimeConstructorDescriptor.java b/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/constructors/AIntervalFromDateTimeConstructorDescriptor.java
index 72a8e37..6b3e2b6 100644
--- a/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/constructors/AIntervalFromDateTimeConstructorDescriptor.java
+++ b/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/constructors/AIntervalFromDateTimeConstructorDescriptor.java
@@ -24,7 +24,6 @@
import edu.uci.ics.asterix.om.base.ANull;
import edu.uci.ics.asterix.om.base.temporal.ADateParserFactory;
import edu.uci.ics.asterix.om.base.temporal.ATimeParserFactory;
-import edu.uci.ics.asterix.om.base.temporal.ByteArrayCharSequenceAccessor;
import edu.uci.ics.asterix.om.functions.IFunctionDescriptor;
import edu.uci.ics.asterix.om.functions.IFunctionDescriptorFactory;
import edu.uci.ics.asterix.om.types.ATypeTag;
@@ -78,8 +77,6 @@
private ISerializerDeserializer<ANull> nullSerde = AqlSerializerDeserializerProvider.INSTANCE
.getSerializerDeserializer(BuiltinType.ANULL);
- private ByteArrayCharSequenceAccessor charAccessor = new ByteArrayCharSequenceAccessor();
-
@Override
public void evaluate(IFrameTupleReference tuple) throws AlgebricksException {
@@ -95,47 +92,43 @@
nullSerde.serialize(ANull.NULL, out);
} else if (argOut0.getByteArray()[0] == SER_STRING_TYPE_TAG
&& argOut1.getByteArray()[0] == SER_STRING_TYPE_TAG) {
- // start date
-
+ // start datetime
int stringLength = (argOut0.getByteArray()[1] & 0xff << 8)
+ (argOut0.getByteArray()[2] & 0xff << 0);
- charAccessor.reset(argOut0.getByteArray(), 3, stringLength);
// get offset for time part: +1 if it is negative (-)
- short timeOffset = (short) ((charAccessor.getCharAt(0) == '-') ? 1 : 0);
-
- if (charAccessor.getCharAt(timeOffset + 10) != 'T'
- && charAccessor.getCharAt(timeOffset + 8) != 'T') {
- throw new AlgebricksException(errorMessage + ": missing T");
+ short timeOffset = (short) ((argOut0.getByteArray()[3] == '-') ? 1 : 0);
+ timeOffset += 8;
+ if (argOut0.getByteArray()[3 + timeOffset] != 'T') {
+ timeOffset += 2;
+ if (argOut0.getByteArray()[3 + timeOffset] != 'T') {
+ throw new AlgebricksException(errorMessage + ": missing T");
+ }
}
- // if extended form 11, else 9
- timeOffset += (charAccessor.getCharAt(timeOffset + 13) == ':') ? (short) (11)
- : (short) (9);
- long intervalStart = ADateParserFactory.parseDatePart(charAccessor, false);
- charAccessor.reset(argOut0.getByteArray(), 3 + timeOffset, stringLength - timeOffset);
- intervalStart += ATimeParserFactory.parseTimePart(charAccessor);
+ long intervalStart = ADateParserFactory.parseDatePart(argOut0.getByteArray(), 3,
+ timeOffset);
+ intervalStart += ATimeParserFactory.parseTimePart(argOut0.getByteArray(),
+ 3 + timeOffset + 1, stringLength - timeOffset - 1);
- // end date
-
+ // end datetime
stringLength = (argOut1.getByteArray()[1] & 0xff << 8)
+ (argOut1.getByteArray()[2] & 0xff << 0);
- charAccessor.reset(argOut1.getByteArray(), 3, stringLength);
// get offset for time part: +1 if it is negative (-)
- timeOffset = (short) ((charAccessor.getCharAt(0) == '-') ? 1 : 0);
-
- if (charAccessor.getCharAt(timeOffset + 10) != 'T'
- && charAccessor.getCharAt(timeOffset + 8) != 'T') {
- throw new AlgebricksException(errorMessage + ": missing T");
+ timeOffset = (short) ((argOut1.getByteArray()[3] == '-') ? 1 : 0);
+ timeOffset += 8;
+ if (argOut1.getByteArray()[3 + timeOffset] != 'T') {
+ timeOffset += 2;
+ if (argOut1.getByteArray()[3 + timeOffset] != 'T') {
+ throw new AlgebricksException(errorMessage + ": missing T");
+ }
}
- // if extended form 11, else 9
- timeOffset += (charAccessor.getCharAt(timeOffset + 13) == ':') ? (short) (11)
- : (short) (9);
- long intervalEnd = ADateParserFactory.parseDatePart(charAccessor, false);
- charAccessor.reset(argOut1.getByteArray(), 3 + timeOffset, stringLength - timeOffset);
- intervalEnd += ATimeParserFactory.parseTimePart(charAccessor);
+ long intervalEnd = ADateParserFactory.parseDatePart(argOut1.getByteArray(), 3,
+ timeOffset);
+ intervalEnd += ATimeParserFactory.parseTimePart(argOut1.getByteArray(),
+ 3 + timeOffset + 1, stringLength - timeOffset - 1);
if (intervalEnd < intervalStart) {
throw new AlgebricksException(
diff --git a/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/constructors/AIntervalFromTimeConstructorDescriptor.java b/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/constructors/AIntervalFromTimeConstructorDescriptor.java
index 3ce722a..042a33b 100644
--- a/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/constructors/AIntervalFromTimeConstructorDescriptor.java
+++ b/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/constructors/AIntervalFromTimeConstructorDescriptor.java
@@ -23,7 +23,6 @@
import edu.uci.ics.asterix.om.base.AMutableInterval;
import edu.uci.ics.asterix.om.base.ANull;
import edu.uci.ics.asterix.om.base.temporal.ATimeParserFactory;
-import edu.uci.ics.asterix.om.base.temporal.ByteArrayCharSequenceAccessor;
import edu.uci.ics.asterix.om.base.temporal.GregorianCalendarSystem;
import edu.uci.ics.asterix.om.functions.IFunctionDescriptor;
import edu.uci.ics.asterix.om.functions.IFunctionDescriptorFactory;
@@ -78,8 +77,6 @@
private ISerializerDeserializer<ANull> nullSerde = AqlSerializerDeserializerProvider.INSTANCE
.getSerializerDeserializer(BuiltinType.ANULL);
- private ByteArrayCharSequenceAccessor charAccessor = new ByteArrayCharSequenceAccessor();
-
@Override
public void evaluate(IFrameTupleReference tuple) throws AlgebricksException {
@@ -96,23 +93,21 @@
} else if (argOut0.getByteArray()[0] == SER_STRING_TYPE_TAG
&& argOut1.getByteArray()[0] == SER_STRING_TYPE_TAG) {
// start date
-
int stringLength = (argOut0.getByteArray()[1] & 0xff << 8)
+ (argOut0.getByteArray()[2] & 0xff << 0);
- charAccessor.reset(argOut0.getByteArray(), 3, stringLength);
- long intervalStart = ATimeParserFactory.parseTimePart(charAccessor);
+ long intervalStart = ATimeParserFactory.parseTimePart(argOut0.getByteArray(), 3,
+ stringLength);
if (intervalStart < 0) {
intervalStart += GregorianCalendarSystem.CHRONON_OF_DAY;
}
// end date
-
stringLength = (argOut1.getByteArray()[1] & 0xff << 8)
+ (argOut1.getByteArray()[2] & 0xff << 0);
- charAccessor.reset(argOut1.getByteArray(), 3, stringLength);
- long intervalEnd = ATimeParserFactory.parseTimePart(charAccessor);
+ long intervalEnd = ATimeParserFactory.parseTimePart(argOut1.getByteArray(), 3,
+ stringLength);
if (intervalEnd < 0) {
intervalEnd += GregorianCalendarSystem.CHRONON_OF_DAY;
}
diff --git a/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/constructors/AIntervalStartFromDateConstructorDescriptor.java b/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/constructors/AIntervalStartFromDateConstructorDescriptor.java
index 23fdb07..d5a0db9 100644
--- a/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/constructors/AIntervalStartFromDateConstructorDescriptor.java
+++ b/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/constructors/AIntervalStartFromDateConstructorDescriptor.java
@@ -25,7 +25,6 @@
import edu.uci.ics.asterix.om.base.ANull;
import edu.uci.ics.asterix.om.base.temporal.ADateParserFactory;
import edu.uci.ics.asterix.om.base.temporal.ADurationParserFactory;
-import edu.uci.ics.asterix.om.base.temporal.ByteArrayCharSequenceAccessor;
import edu.uci.ics.asterix.om.base.temporal.DurationArithmeticOperations;
import edu.uci.ics.asterix.om.base.temporal.GregorianCalendarSystem;
import edu.uci.ics.asterix.om.functions.IFunctionDescriptor;
@@ -82,8 +81,6 @@
private ISerializerDeserializer<ANull> nullSerde = AqlSerializerDeserializerProvider.INSTANCE
.getSerializerDeserializer(BuiltinType.ANULL);
- private ByteArrayCharSequenceAccessor charAccessor = new ByteArrayCharSequenceAccessor();
-
@Override
public void evaluate(IFrameTupleReference tuple) throws AlgebricksException {
@@ -99,20 +96,20 @@
nullSerde.serialize(ANull.NULL, out);
} else if (argOut0.getByteArray()[0] == SER_STRING_TYPE_TAG
&& argOut1.getByteArray()[0] == SER_STRING_TYPE_TAG) {
- // start date
+ // start date
int stringLength = (argOut0.getByteArray()[1] & 0xff << 8)
+ (argOut0.getByteArray()[2] & 0xff << 0);
- charAccessor.reset(argOut0.getByteArray(), 3, stringLength);
- long intervalStart = ADateParserFactory.parseDatePart(charAccessor, true);
- // duration
+ long intervalStart = ADateParserFactory.parseDatePart(argOut0.getByteArray(), 3,
+ stringLength);
+ // duration
stringLength = (argOut1.getByteArray()[1] & 0xff << 8)
+ (argOut1.getByteArray()[2] & 0xff << 0);
- charAccessor.reset(argOut1.getByteArray(), 3, stringLength);
- ADurationParserFactory.parseDuration(charAccessor, aDuration);
+ ADurationParserFactory
+ .parseDuration(argOut1.getByteArray(), 3, stringLength, aDuration);
long intervalEnd = DurationArithmeticOperations.addDuration(intervalStart,
aDuration.getMonths(), aDuration.getMilliseconds());
diff --git a/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/constructors/AIntervalStartFromDateTimeConstructorDescriptor.java b/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/constructors/AIntervalStartFromDateTimeConstructorDescriptor.java
index 91c45df..d821fc3 100644
--- a/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/constructors/AIntervalStartFromDateTimeConstructorDescriptor.java
+++ b/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/constructors/AIntervalStartFromDateTimeConstructorDescriptor.java
@@ -26,7 +26,6 @@
import edu.uci.ics.asterix.om.base.temporal.ADateParserFactory;
import edu.uci.ics.asterix.om.base.temporal.ADurationParserFactory;
import edu.uci.ics.asterix.om.base.temporal.ATimeParserFactory;
-import edu.uci.ics.asterix.om.base.temporal.ByteArrayCharSequenceAccessor;
import edu.uci.ics.asterix.om.base.temporal.DurationArithmeticOperations;
import edu.uci.ics.asterix.om.functions.IFunctionDescriptor;
import edu.uci.ics.asterix.om.functions.IFunctionDescriptorFactory;
@@ -82,8 +81,6 @@
private ISerializerDeserializer<ANull> nullSerde = AqlSerializerDeserializerProvider.INSTANCE
.getSerializerDeserializer(BuiltinType.ANULL);
- private ByteArrayCharSequenceAccessor charAccessor = new ByteArrayCharSequenceAccessor();
-
@Override
public void evaluate(IFrameTupleReference tuple) throws AlgebricksException {
@@ -104,29 +101,29 @@
int stringLength = (argOut0.getByteArray()[1] & 0xff << 8)
+ (argOut0.getByteArray()[2] & 0xff << 0);
- charAccessor.reset(argOut0.getByteArray(), 3, stringLength);
// get offset for time part: +1 if it is negative (-)
- short timeOffset = (short) ((charAccessor.getCharAt(0) == '-') ? 1 : 0);
+ short timeOffset = (short) ((argOut0.getByteArray()[3] == '-') ? 1 : 0);
- if (charAccessor.getCharAt(timeOffset + 10) != 'T'
- && charAccessor.getCharAt(timeOffset + 8) != 'T') {
- throw new AlgebricksException(errorMessage + ": missing T");
+ timeOffset += 8;
+
+ if (argOut0.getByteArray()[3 + timeOffset] != 'T') {
+ timeOffset += 2;
+ if (argOut0.getByteArray()[3 + timeOffset] != 'T') {
+ throw new AlgebricksException(errorMessage + ": missing T");
+ }
}
- // if extended form 11, else 9
- timeOffset += (charAccessor.getCharAt(timeOffset + 13) == ':') ? (short) (11)
- : (short) (9);
- long intervalStart = ADateParserFactory.parseDatePart(charAccessor, false);
- charAccessor.reset(argOut0.getByteArray(), 3 + timeOffset, stringLength - timeOffset);
- intervalStart += ATimeParserFactory.parseTimePart(charAccessor);
+ long intervalStart = ADateParserFactory.parseDatePart(argOut0.getByteArray(), 3,
+ timeOffset);
+ intervalStart += ATimeParserFactory.parseTimePart(argOut0.getByteArray(),
+ 3 + timeOffset + 1, stringLength - timeOffset - 1);
// duration
-
stringLength = (argOut1.getByteArray()[1] & 0xff << 8)
+ (argOut1.getByteArray()[2] & 0xff << 0);
- charAccessor.reset(argOut1.getByteArray(), 3, stringLength);
- ADurationParserFactory.parseDuration(charAccessor, aDuration);
+ ADurationParserFactory
+ .parseDuration(argOut1.getByteArray(), 3, stringLength, aDuration);
long intervalEnd = DurationArithmeticOperations.addDuration(intervalStart,
aDuration.getMonths(), aDuration.getMilliseconds());
diff --git a/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/constructors/AIntervalStartFromTimeConstructorDescriptor.java b/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/constructors/AIntervalStartFromTimeConstructorDescriptor.java
index e576fef..8135598 100644
--- a/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/constructors/AIntervalStartFromTimeConstructorDescriptor.java
+++ b/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/constructors/AIntervalStartFromTimeConstructorDescriptor.java
@@ -25,7 +25,6 @@
import edu.uci.ics.asterix.om.base.ANull;
import edu.uci.ics.asterix.om.base.temporal.ADurationParserFactory;
import edu.uci.ics.asterix.om.base.temporal.ATimeParserFactory;
-import edu.uci.ics.asterix.om.base.temporal.ByteArrayCharSequenceAccessor;
import edu.uci.ics.asterix.om.base.temporal.DurationArithmeticOperations;
import edu.uci.ics.asterix.om.base.temporal.GregorianCalendarSystem;
import edu.uci.ics.asterix.om.functions.IFunctionDescriptor;
@@ -82,8 +81,6 @@
private ISerializerDeserializer<ANull> nullSerde = AqlSerializerDeserializerProvider.INSTANCE
.getSerializerDeserializer(BuiltinType.ANULL);
- private ByteArrayCharSequenceAccessor charAccessor = new ByteArrayCharSequenceAccessor();
-
@Override
public void evaluate(IFrameTupleReference tuple) throws AlgebricksException {
@@ -104,8 +101,8 @@
int stringLength = (argOut0.getByteArray()[1] & 0xff << 8)
+ (argOut0.getByteArray()[2] & 0xff << 0);
- charAccessor.reset(argOut0.getByteArray(), 3, stringLength);
- int intervalStart = ATimeParserFactory.parseTimePart(charAccessor);
+ int intervalStart = ATimeParserFactory.parseTimePart(argOut0.getByteArray(), 3,
+ stringLength);
if (intervalStart < 0) {
intervalStart += GregorianCalendarSystem.CHRONON_OF_DAY;
@@ -116,8 +113,8 @@
stringLength = (argOut1.getByteArray()[1] & 0xff << 8)
+ (argOut1.getByteArray()[2] & 0xff << 0);
- charAccessor.reset(argOut1.getByteArray(), 3, stringLength);
- ADurationParserFactory.parseDuration(charAccessor, aDuration);
+ ADurationParserFactory
+ .parseDuration(argOut1.getByteArray(), 3, stringLength, aDuration);
if (aDuration.getMonths() != 0) {
throw new AlgebricksException("Cannot add a year-month duration to a time value.");
diff --git a/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/constructors/ATimeConstructorDescriptor.java b/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/constructors/ATimeConstructorDescriptor.java
index caff78b..f2ad400 100644
--- a/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/constructors/ATimeConstructorDescriptor.java
+++ b/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/constructors/ATimeConstructorDescriptor.java
@@ -22,7 +22,6 @@
import edu.uci.ics.asterix.om.base.ANull;
import edu.uci.ics.asterix.om.base.ATime;
import edu.uci.ics.asterix.om.base.temporal.ATimeParserFactory;
-import edu.uci.ics.asterix.om.base.temporal.ByteArrayCharSequenceAccessor;
import edu.uci.ics.asterix.om.base.temporal.GregorianCalendarSystem;
import edu.uci.ics.asterix.om.functions.AsterixBuiltinFunctions;
import edu.uci.ics.asterix.om.functions.IFunctionDescriptor;
@@ -73,8 +72,6 @@
private ISerializerDeserializer<ANull> nullSerde = AqlSerializerDeserializerProvider.INSTANCE
.getSerializerDeserializer(BuiltinType.ANULL);
- private ByteArrayCharSequenceAccessor charAccessor = new ByteArrayCharSequenceAccessor();
-
@Override
public void evaluate(IFrameTupleReference tuple) throws AlgebricksException {
@@ -86,8 +83,7 @@
int stringLength = (serString[1] & 0xff << 8) + (serString[2] & 0xff << 0);
- charAccessor.reset(serString, 3, stringLength);
- int chrononTimeInMs = ATimeParserFactory.parseTimePart(charAccessor);
+ int chrononTimeInMs = ATimeParserFactory.parseTimePart(serString, 3, stringLength);
if (chrononTimeInMs < 0) {
chrononTimeInMs += GregorianCalendarSystem.CHRONON_OF_DAY;
diff --git a/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/functions/CodePointToStringDescriptor.java b/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/functions/CodePointToStringDescriptor.java
index 5dcb838..55fe563 100644
--- a/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/functions/CodePointToStringDescriptor.java
+++ b/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/functions/CodePointToStringDescriptor.java
@@ -93,9 +93,6 @@
private ICopyEvaluatorFactory listEvalFactory = args[0];
private ArrayBackedValueStorage outInputList = new ArrayBackedValueStorage();
private ICopyEvaluator evalList = listEvalFactory.createEvaluator(outInputList);
- @SuppressWarnings("unchecked")
- private ISerializerDeserializer<ANull> nullSerde = AqlSerializerDeserializerProvider.INSTANCE
- .getSerializerDeserializer(BuiltinType.ANULL);
@Override
public void evaluate(IFrameTupleReference tuple) throws AlgebricksException {
@@ -103,10 +100,6 @@
outInputList.reset();
evalList.evaluate(tuple);
byte[] serOrderedList = outInputList.getByteArray();
- if (serOrderedList[0] == SER_NULL_TYPE_TAG) {
- nullSerde.serialize(ANull.NULL, out);
- return;
- }
if (serOrderedList[0] != SER_ORDEREDLIST_TYPE_TAG) {
throw new AlgebricksException("Expects an Integer List."
+ EnumDeserializer.ATYPETAGDESERIALIZER.deserialize(serOrderedList[0]));
diff --git a/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/functions/NumericRoundHalfToEven2Descriptor.java b/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/functions/NumericRoundHalfToEven2Descriptor.java
index 06cf69a..e205bf5 100644
--- a/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/functions/NumericRoundHalfToEven2Descriptor.java
+++ b/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/functions/NumericRoundHalfToEven2Descriptor.java
@@ -98,13 +98,10 @@
return (int) AInt32SerializerDeserializer.getInt(argOut.getByteArray(), 1);
} else if (argOut.getByteArray()[0] == serInt64TypeTag) {
return (int) AInt64SerializerDeserializer.getLong(argOut.getByteArray(), 1);
- } else if (argOut.getByteArray()[0] == serFloatTypeTag) {
- return (int) AFloatSerializerDeserializer.getFloat(argOut.getByteArray(), 1);
- } else if (argOut.getByteArray()[0] == serDoubleTypeTag) {
- return (int) ADoubleSerializerDeserializer.getDouble(argOut.getByteArray(), 1);
+ } else {
+ throw new AlgebricksException(
+ "The precision argument for round-half-to-even should be an integer.");
}
-
- return 0;
}
@SuppressWarnings("unchecked")
diff --git a/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/functions/StringConcatDescriptor.java b/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/functions/StringConcatDescriptor.java
index f975579..f53ebe8 100644
--- a/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/functions/StringConcatDescriptor.java
+++ b/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/functions/StringConcatDescriptor.java
@@ -4,7 +4,6 @@
import java.io.IOException;
import edu.uci.ics.asterix.common.exceptions.AsterixException;
-import edu.uci.ics.asterix.common.functions.FunctionConstants;
import edu.uci.ics.asterix.formats.nontagged.AqlSerializerDeserializerProvider;
import edu.uci.ics.asterix.om.base.ANull;
import edu.uci.ics.asterix.om.functions.AsterixBuiltinFunctions;
@@ -67,10 +66,6 @@
} catch (AsterixException e) {
throw new AlgebricksException(e);
}
- if (listAccessor.getItemType() == ATypeTag.NULL) {
- nullSerde.serialize(ANull.NULL, out);
- return;
- }
try {
// calculate length first
int utf8Len = 0;
diff --git a/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/functions/StringJoinDescriptor.java b/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/functions/StringJoinDescriptor.java
index c379c3e3..67334ce 100644
--- a/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/functions/StringJoinDescriptor.java
+++ b/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/functions/StringJoinDescriptor.java
@@ -5,20 +5,16 @@
import edu.uci.ics.asterix.common.exceptions.AsterixException;
import edu.uci.ics.asterix.dataflow.data.nontagged.serde.AOrderedListSerializerDeserializer;
-import edu.uci.ics.asterix.formats.nontagged.AqlSerializerDeserializerProvider;
-import edu.uci.ics.asterix.om.base.ANull;
import edu.uci.ics.asterix.om.functions.AsterixBuiltinFunctions;
import edu.uci.ics.asterix.om.functions.IFunctionDescriptor;
import edu.uci.ics.asterix.om.functions.IFunctionDescriptorFactory;
import edu.uci.ics.asterix.om.types.ATypeTag;
-import edu.uci.ics.asterix.om.types.BuiltinType;
import edu.uci.ics.asterix.om.types.EnumDeserializer;
import edu.uci.ics.asterix.runtime.evaluators.base.AbstractScalarFunctionDynamicDescriptor;
import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
import edu.uci.ics.hyracks.algebricks.core.algebra.functions.FunctionIdentifier;
import edu.uci.ics.hyracks.algebricks.runtime.base.ICopyEvaluator;
import edu.uci.ics.hyracks.algebricks.runtime.base.ICopyEvaluatorFactory;
-import edu.uci.ics.hyracks.api.dataflow.value.ISerializerDeserializer;
import edu.uci.ics.hyracks.data.std.api.IDataOutputProvider;
import edu.uci.ics.hyracks.data.std.primitive.UTF8StringPointable;
import edu.uci.ics.hyracks.data.std.util.ArrayBackedValueStorage;
@@ -37,7 +33,6 @@
}
};
private final static byte SER_STRING_TYPE_TAG = ATypeTag.STRING.serialize();
- private final static byte SER_NULL_TYPE_TAG = ATypeTag.NULL.serialize();
private final static byte SER_ORDEREDLIST_TYPE_TAG = ATypeTag.ORDEREDLIST.serialize();
private final byte stringTypeTag = ATypeTag.STRING.serialize();
@@ -58,9 +53,6 @@
private ArrayBackedValueStorage outInputSep = new ArrayBackedValueStorage();
private ICopyEvaluator evalList = listEvalFactory.createEvaluator(outInputList);
private ICopyEvaluator evalSep = sepEvalFactory.createEvaluator(outInputSep);
- @SuppressWarnings("unchecked")
- private ISerializerDeserializer<ANull> nullSerde = AqlSerializerDeserializerProvider.INSTANCE
- .getSerializerDeserializer(BuiltinType.ANULL);
@Override
public void evaluate(IFrameTupleReference tuple) throws AlgebricksException {
@@ -72,20 +64,14 @@
outInputSep.reset();
evalSep.evaluate(tuple);
byte[] serSep = outInputSep.getByteArray();
- if (serOrderedList[0] == SER_NULL_TYPE_TAG) {
- nullSerde.serialize(ANull.NULL, out);
- return;
- }
if (serOrderedList[0] != SER_ORDEREDLIST_TYPE_TAG) {
- throw new AlgebricksException("Expects String List."
+ throw new AlgebricksException("Expects String List but got "
+ EnumDeserializer.ATYPETAGDESERIALIZER.deserialize(serOrderedList[0]));
}
- if (serSep[0] == SER_NULL_TYPE_TAG) {
- }
if (serSep[0] != SER_STRING_TYPE_TAG) {
- throw new AlgebricksException("Expects String as Seperator."
- + EnumDeserializer.ATYPETAGDESERIALIZER.deserialize(serOrderedList[0]));
+ throw new AlgebricksException("Expects String as Seperator but got "
+ + EnumDeserializer.ATYPETAGDESERIALIZER.deserialize(serSep[0]));
}
int size = AOrderedListSerializerDeserializer.getNumberOfItems(serOrderedList);
diff --git a/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/functions/StringToCodePointDescriptor.java b/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/functions/StringToCodePointDescriptor.java
index fdd45e2..3d845e1 100644
--- a/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/functions/StringToCodePointDescriptor.java
+++ b/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/functions/StringToCodePointDescriptor.java
@@ -7,7 +7,6 @@
import edu.uci.ics.asterix.formats.nontagged.AqlSerializerDeserializerProvider;
import edu.uci.ics.asterix.om.base.AInt32;
import edu.uci.ics.asterix.om.base.AMutableInt32;
-import edu.uci.ics.asterix.om.base.ANull;
import edu.uci.ics.asterix.om.functions.AsterixBuiltinFunctions;
import edu.uci.ics.asterix.om.functions.IFunctionDescriptor;
import edu.uci.ics.asterix.om.functions.IFunctionDescriptorFactory;
@@ -43,7 +42,6 @@
}
};
private final static byte SER_STRING_TYPE_TAG = ATypeTag.STRING.serialize();
- private final static byte SER_NULL_TYPE_TAG = ATypeTag.NULL.serialize();
@Override
public ICopyEvaluatorFactory createEvaluatorFactory(final ICopyEvaluatorFactory[] args) {
@@ -62,9 +60,6 @@
private ArrayBackedValueStorage inputVal = new ArrayBackedValueStorage();
@SuppressWarnings("unchecked")
- private ISerializerDeserializer<ANull> nullSerde = AqlSerializerDeserializerProvider.INSTANCE
- .getSerializerDeserializer(BuiltinType.ANULL);
- @SuppressWarnings("unchecked")
private final ISerializerDeserializer<AInt32> int32Serde = AqlSerializerDeserializerProvider.INSTANCE
.getSerializerDeserializer(BuiltinType.AINT32);
private final AMutableInt32 aInt32 = new AMutableInt32(0);
@@ -123,9 +118,7 @@
}
listBuilder.write(out, true);
- } else if (serString[0] == SER_NULL_TYPE_TAG)
- nullSerde.serialize(ANull.NULL, out);
- else
+ } else
throw new AlgebricksException("Expects String Type.");
} catch (IOException e1) {
throw new AlgebricksException(e1.getMessage());
diff --git a/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/functions/temporal/AdjustDateTimeForTimeZoneDescriptor.java b/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/functions/temporal/AdjustDateTimeForTimeZoneDescriptor.java
index fb01e97..21d098a 100644
--- a/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/functions/temporal/AdjustDateTimeForTimeZoneDescriptor.java
+++ b/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/functions/temporal/AdjustDateTimeForTimeZoneDescriptor.java
@@ -21,7 +21,6 @@
import edu.uci.ics.asterix.formats.nontagged.AqlSerializerDeserializerProvider;
import edu.uci.ics.asterix.om.base.ANull;
import edu.uci.ics.asterix.om.base.temporal.ATimeParserFactory;
-import edu.uci.ics.asterix.om.base.temporal.ByteArrayCharSequenceAccessor;
import edu.uci.ics.asterix.om.base.temporal.GregorianCalendarSystem;
import edu.uci.ics.asterix.om.base.temporal.GregorianCalendarSystem.Fields;
import edu.uci.ics.asterix.om.functions.IFunctionDescriptor;
@@ -81,8 +80,6 @@
private ISerializerDeserializer<ANull> nullSerde = AqlSerializerDeserializerProvider.INSTANCE
.getSerializerDeserializer(BuiltinType.ANULL);
- private ByteArrayCharSequenceAccessor charAccessor = new ByteArrayCharSequenceAccessor();
-
private GregorianCalendarSystem calInstance = GregorianCalendarSystem.getInstance();
@Override
@@ -111,12 +108,7 @@
+ argOut1.getByteArray()[0]);
}
- int stringLength = (argOut1.getByteArray()[1] & 0xff << 8)
- + (argOut1.getByteArray()[2] & 0xff << 0);
-
- charAccessor.reset(argOut1.getByteArray(), 3, stringLength);
-
- int timezone = ATimeParserFactory.parseTimezonePart(charAccessor, 0);
+ int timezone = ATimeParserFactory.parseTimezonePart(argOut1.getByteArray(), 3);
if (!calInstance.validateTimeZone(timezone)) {
throw new AlgebricksException("Wrong format for a time zone string!");
diff --git a/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/functions/temporal/AdjustTimeForTimeZoneDescriptor.java b/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/functions/temporal/AdjustTimeForTimeZoneDescriptor.java
index 1323664..1f8842e 100644
--- a/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/functions/temporal/AdjustTimeForTimeZoneDescriptor.java
+++ b/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/functions/temporal/AdjustTimeForTimeZoneDescriptor.java
@@ -21,7 +21,6 @@
import edu.uci.ics.asterix.formats.nontagged.AqlSerializerDeserializerProvider;
import edu.uci.ics.asterix.om.base.ANull;
import edu.uci.ics.asterix.om.base.temporal.ATimeParserFactory;
-import edu.uci.ics.asterix.om.base.temporal.ByteArrayCharSequenceAccessor;
import edu.uci.ics.asterix.om.base.temporal.GregorianCalendarSystem;
import edu.uci.ics.asterix.om.base.temporal.GregorianCalendarSystem.Fields;
import edu.uci.ics.asterix.om.functions.IFunctionDescriptor;
@@ -81,8 +80,6 @@
private ISerializerDeserializer<ANull> nullSerde = AqlSerializerDeserializerProvider.INSTANCE
.getSerializerDeserializer(BuiltinType.ANULL);
- private ByteArrayCharSequenceAccessor charAccessor = new ByteArrayCharSequenceAccessor();
-
private GregorianCalendarSystem calInstance = GregorianCalendarSystem.getInstance();
@Override
@@ -111,12 +108,7 @@
+ argOut1.getByteArray()[0]);
}
- int stringLength = (argOut0.getByteArray()[1] & 0xff << 8)
- + (argOut0.getByteArray()[2] & 0xff << 0);
-
- charAccessor.reset(argOut1.getByteArray(), 3, stringLength);
-
- int timezone = ATimeParserFactory.parseTimezonePart(charAccessor, 0);
+ int timezone = ATimeParserFactory.parseTimezonePart(argOut1.getByteArray(), 3);
if (!calInstance.validateTimeZone(timezone)) {
throw new AlgebricksException("Wrong format for a time zone string!");
diff --git a/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/functions/temporal/CalendarDuartionFromDateDescriptor.java b/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/functions/temporal/CalendarDuartionFromDateDescriptor.java
index c6be030..cbd600f 100644
--- a/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/functions/temporal/CalendarDuartionFromDateDescriptor.java
+++ b/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/functions/temporal/CalendarDuartionFromDateDescriptor.java
@@ -186,9 +186,9 @@
}
if (day < 0) {
- boolean isLeapYear = calInstanct.isLeapYear(year0);
- day += (isLeapYear) ? (GregorianCalendarSystem.DAYS_OF_MONTH_LEAP[month0 - 1])
- : (GregorianCalendarSystem.DAYS_OF_MONTH_ORDI[month0 - 1]);
+ boolean isLeapYear = calInstanct.isLeapYear(year1);
+ day += (isLeapYear) ? (GregorianCalendarSystem.DAYS_OF_MONTH_LEAP[month1 - 2])
+ : (GregorianCalendarSystem.DAYS_OF_MONTH_ORDI[month1 - 2]);
month -= 1;
}
diff --git a/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/functions/temporal/CalendarDurationFromDateTimeDescriptor.java b/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/functions/temporal/CalendarDurationFromDateTimeDescriptor.java
index 2c7a9a7..8df3c7f 100644
--- a/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/functions/temporal/CalendarDurationFromDateTimeDescriptor.java
+++ b/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/functions/temporal/CalendarDurationFromDateTimeDescriptor.java
@@ -124,13 +124,13 @@
if (argOut0.getByteArray()[0] != SER_DATETIME_TYPE_TAG) {
throw new AlgebricksException(
- "Inapplicable input type for parameter 0: expecting ADateTime, but got: "
+ "Inapplicable input type for parameter 0: expecting Datetime, but got: "
+ argOut0.getByteArray()[0]);
}
if (argOut1.getByteArray()[0] != SER_DURATION_TYPE_TAG) {
throw new AlgebricksException(
- "Inapplicable input type for parameter 1: expecting ADateTime, but got: "
+ "Inapplicable input type for parameter 1: expecting Duration, but got: "
+ argOut1.getByteArray()[0]);
}
@@ -202,9 +202,9 @@
}
if (day < 0) {
- boolean isLeapYear = calInstanct.isLeapYear(year0);
- day += (isLeapYear) ? (GregorianCalendarSystem.DAYS_OF_MONTH_LEAP[month0 - 1])
- : (GregorianCalendarSystem.DAYS_OF_MONTH_ORDI[month0 - 1]);
+ boolean isLeapYear = calInstanct.isLeapYear(year1);
+ day += (isLeapYear) ? (GregorianCalendarSystem.DAYS_OF_MONTH_LEAP[month1 - 2])
+ : (GregorianCalendarSystem.DAYS_OF_MONTH_ORDI[month1 - 2]);
month -= 1;
}
diff --git a/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/operators/file/ADMDataParser.java b/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/operators/file/ADMDataParser.java
index 2e64ad4..b32110b 100644
--- a/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/operators/file/ADMDataParser.java
+++ b/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/operators/file/ADMDataParser.java
@@ -234,7 +234,7 @@
try {
if (checkType(ATypeTag.INTERVAL, objectType, out)) {
if (admLexer.next() == AdmLexer.TOKEN_CONSTRUCTOR_OPEN) {
- if (admLexer.next() == AdmLexer.TOKEN_STRING_CONS) {
+ if (admLexer.next() == AdmLexer.TOKEN_STRING_LITERAL) {
AIntervalSerializerDeserializer.parseDate(admLexer.getLastTokenImage(), out);
if (admLexer.next() == AdmLexer.TOKEN_CONSTRUCTOR_CLOSE) {
@@ -252,7 +252,7 @@
try {
if (checkType(ATypeTag.INTERVAL, objectType, out)) {
if (admLexer.next() == AdmLexer.TOKEN_CONSTRUCTOR_OPEN) {
- if (admLexer.next() == AdmLexer.TOKEN_STRING_CONS) {
+ if (admLexer.next() == AdmLexer.TOKEN_STRING_LITERAL) {
AIntervalSerializerDeserializer.parseTime(admLexer.getLastTokenImage(), out);
if (admLexer.next() == AdmLexer.TOKEN_CONSTRUCTOR_CLOSE) {
@@ -270,7 +270,7 @@
try {
if (checkType(ATypeTag.INTERVAL, objectType, out)) {
if (admLexer.next() == AdmLexer.TOKEN_CONSTRUCTOR_OPEN) {
- if (admLexer.next() == AdmLexer.TOKEN_STRING_CONS) {
+ if (admLexer.next() == AdmLexer.TOKEN_STRING_LITERAL) {
AIntervalSerializerDeserializer.parseDatetime(admLexer.getLastTokenImage(), out);
if (admLexer.next() == AdmLexer.TOKEN_CONSTRUCTOR_CLOSE) {
diff --git a/asterix-runtime/src/main/resources/adm.grammar b/asterix-runtime/src/main/resources/adm.grammar
index 56c7212..4d4158f 100644
--- a/asterix-runtime/src/main/resources/adm.grammar
+++ b/asterix-runtime/src/main/resources/adm.grammar
@@ -26,9 +26,9 @@
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_TIME_CONS = string(interval-time)
+INTERVAL_DATE_CONS = string(interval-date)
+INTERVAL_DATETIME_CONS = string(interval-datetime)
NULL_LITERAL = string(null)
TRUE_LITERAL = string(true)