You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@asterixdb.apache.org by bu...@apache.org on 2016/11/01 03:08:25 UTC
[16/22] asterixdb git commit: Unify runtime type exceptions by using
error code and message template.
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/52671a2c/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/comparisons/ComparisonHelper.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/comparisons/ComparisonHelper.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/comparisons/ComparisonHelper.java
index 8044c83..4597621 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/comparisons/ComparisonHelper.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/comparisons/ComparisonHelper.java
@@ -37,6 +37,8 @@ import org.apache.asterix.dataflow.data.nontagged.serde.AInt64SerializerDeserial
import org.apache.asterix.dataflow.data.nontagged.serde.AInt8SerializerDeserializer;
import org.apache.asterix.formats.nontagged.AqlBinaryComparatorFactoryProvider;
import org.apache.asterix.om.types.ATypeTag;
+import org.apache.asterix.runtime.exceptions.IncompatibleTypeException;
+import org.apache.asterix.runtime.exceptions.UnsupportedTypeException;
import org.apache.hyracks.api.dataflow.value.IBinaryComparator;
import org.apache.hyracks.api.exceptions.HyracksDataException;
import org.apache.hyracks.data.std.accessors.PointableBinaryComparatorFactory;
@@ -47,6 +49,7 @@ import org.apache.hyracks.data.std.primitive.IntegerPointable;
public class ComparisonHelper implements Serializable {
private static final long serialVersionUID = 1L;
+ static final String COMPARISON = "comparison operations (>, >=, <, and <=)";
private final IBinaryComparator strBinaryComp = AqlBinaryComparatorFactoryProvider.UTF8STRING_POINTABLE_INSTANCE
.createBinaryComparator();
@@ -98,10 +101,9 @@ public class ComparisonHelper implements Serializable {
private int compareStrongTypedWithArg(ATypeTag expectedTypeTag, ATypeTag actualTypeTag, IPointable arg1,
IPointable arg2) throws HyracksDataException {
if (expectedTypeTag != actualTypeTag) {
- throw new HyracksDataException(
- "Comparison is undefined between " + expectedTypeTag + " and " + actualTypeTag + ".");
+ throw new IncompatibleTypeException(COMPARISON, actualTypeTag.serialize(), expectedTypeTag.serialize());
}
- int result = 0;
+ int result;
byte[] leftBytes = arg1.getByteArray();
int leftOffset = arg1.getStartOffset();
int leftLen = arg1.getLength() - 1;
@@ -109,64 +111,56 @@ public class ComparisonHelper implements Serializable {
int rightOffset = arg2.getStartOffset();
int rightLen = arg2.getLength() - 1;
- try {
- switch (actualTypeTag) {
- case YEARMONTHDURATION:
- case TIME:
- case DATE:
- result = Integer.compare(AInt32SerializerDeserializer.getInt(leftBytes, leftOffset),
- AInt32SerializerDeserializer.getInt(rightBytes, rightOffset));
- break;
- case DAYTIMEDURATION:
- case DATETIME:
- result = Long.compare(AInt64SerializerDeserializer.getLong(leftBytes, leftOffset),
- AInt64SerializerDeserializer.getLong(rightBytes, rightOffset));
- break;
- case CIRCLE:
- result = circleBinaryComp.compare(leftBytes, leftOffset, leftLen, rightBytes, rightOffset,
- rightLen);
- break;
- case LINE:
- result = lineBinaryComparator.compare(leftBytes, leftOffset, leftLen, rightBytes, rightOffset,
- rightLen);
- break;
- case POINT:
- result = pointBinaryComparator.compare(leftBytes, leftOffset, leftLen, rightBytes, rightOffset,
- rightLen);
- break;
- case POINT3D:
- result = point3DBinaryComparator.compare(leftBytes, leftOffset, leftLen, rightBytes, rightOffset,
- rightLen);
- break;
- case POLYGON:
- result = polygonBinaryComparator.compare(leftBytes, leftOffset, leftLen, rightBytes, rightOffset,
- rightLen);
- break;
- case DURATION:
- result = durationBinaryComp.compare(leftBytes, leftOffset, leftLen, rightBytes, rightOffset,
- rightLen);
- break;
- case INTERVAL:
- result = intervalBinaryComp.compare(leftBytes, leftOffset, leftLen, rightBytes, rightOffset,
- rightLen);
- break;
- case RECTANGLE:
- result = rectangleBinaryComparator.compare(leftBytes, leftOffset, leftLen, rightBytes, rightOffset,
- rightLen);
- break;
- case BINARY:
- result = byteArrayComparator.compare(leftBytes, leftOffset, leftLen, rightBytes, rightOffset,
- rightLen);
- break;
- case UUID:
- result = uuidBinaryComparator.compare(leftBytes, leftOffset, leftLen, rightBytes, rightOffset,
- rightLen);
- break;
- default:
- throw new HyracksDataException("Comparison for " + actualTypeTag + " is not supported.");
- }
- } catch (HyracksDataException e) {
- throw new HyracksDataException(e);
+ switch (actualTypeTag) {
+ case YEARMONTHDURATION:
+ case TIME:
+ case DATE:
+ result = Integer.compare(AInt32SerializerDeserializer.getInt(leftBytes, leftOffset),
+ AInt32SerializerDeserializer.getInt(rightBytes, rightOffset));
+ break;
+ case DAYTIMEDURATION:
+ case DATETIME:
+ result = Long.compare(AInt64SerializerDeserializer.getLong(leftBytes, leftOffset),
+ AInt64SerializerDeserializer.getLong(rightBytes, rightOffset));
+ break;
+ case CIRCLE:
+ result = circleBinaryComp.compare(leftBytes, leftOffset, leftLen, rightBytes, rightOffset, rightLen);
+ break;
+ case LINE:
+ result = lineBinaryComparator.compare(leftBytes, leftOffset, leftLen, rightBytes, rightOffset,
+ rightLen);
+ break;
+ case POINT:
+ result = pointBinaryComparator.compare(leftBytes, leftOffset, leftLen, rightBytes, rightOffset,
+ rightLen);
+ break;
+ case POINT3D:
+ result = point3DBinaryComparator.compare(leftBytes, leftOffset, leftLen, rightBytes, rightOffset,
+ rightLen);
+ break;
+ case POLYGON:
+ result = polygonBinaryComparator.compare(leftBytes, leftOffset, leftLen, rightBytes, rightOffset,
+ rightLen);
+ break;
+ case DURATION:
+ result = durationBinaryComp.compare(leftBytes, leftOffset, leftLen, rightBytes, rightOffset, rightLen);
+ break;
+ case INTERVAL:
+ result = intervalBinaryComp.compare(leftBytes, leftOffset, leftLen, rightBytes, rightOffset, rightLen);
+ break;
+ case RECTANGLE:
+ result = rectangleBinaryComparator.compare(leftBytes, leftOffset, leftLen, rightBytes, rightOffset,
+ rightLen);
+ break;
+ case BINARY:
+ result = byteArrayComparator.compare(leftBytes, leftOffset, leftLen, rightBytes, rightOffset, rightLen);
+ break;
+ case UUID:
+ result = uuidBinaryComparator.compare(leftBytes, leftOffset, leftLen, rightBytes, rightOffset,
+ rightLen);
+ break;
+ default:
+ throw new UnsupportedTypeException(COMPARISON, actualTypeTag.serialize());
}
return result;
}
@@ -177,21 +171,15 @@ public class ComparisonHelper implements Serializable {
byte b1 = arg2.getByteArray()[arg2.getStartOffset()];
return compareByte(b0, b1);
}
- throw new HyracksDataException("Comparison is undefined between types ABoolean and " + typeTag2 + " .");
+ throw new IncompatibleTypeException(COMPARISON, ATypeTag.SERIALIZED_BOOLEAN_TYPE_TAG, typeTag2.serialize());
}
private int compareStringWithArg(ATypeTag typeTag2, IPointable arg1, IPointable arg2) throws HyracksDataException {
if (typeTag2 == ATypeTag.STRING) {
- int result;
- try {
- result = strBinaryComp.compare(arg1.getByteArray(), arg1.getStartOffset(), arg1.getLength() - 1,
+ return strBinaryComp.compare(arg1.getByteArray(), arg1.getStartOffset(), arg1.getLength() - 1,
arg2.getByteArray(), arg2.getStartOffset(), arg2.getLength() - 1);
- } catch (HyracksDataException e) {
- throw new HyracksDataException(e);
- }
- return result;
}
- throw new HyracksDataException("Comparison is undefined between types AString and " + typeTag2 + " .");
+ throw new IncompatibleTypeException(COMPARISON, ATypeTag.SERIALIZED_STRING_TYPE_TAG, typeTag2.serialize());
}
private int compareDoubleWithArg(ATypeTag typeTag2, IPointable arg1, IPointable arg2) throws HyracksDataException {
@@ -202,32 +190,21 @@ public class ComparisonHelper implements Serializable {
double s = ADoubleSerializerDeserializer.getDouble(leftBytes, leftOffset);
switch (typeTag2) {
- case INT8: {
- byte v2 = AInt8SerializerDeserializer.getByte(rightBytes, rightOffset);
- return compareDouble(s, v2);
- }
- case INT16: {
- short v2 = AInt16SerializerDeserializer.getShort(rightBytes, rightOffset);
- return compareDouble(s, v2);
- }
- case INT32: {
- int v2 = AInt32SerializerDeserializer.getInt(rightBytes, rightOffset);
- return compareDouble(s, v2);
- }
- case INT64: {
- long v2 = AInt64SerializerDeserializer.getLong(rightBytes, rightOffset);
- return compareDouble(s, v2);
- }
- case FLOAT: {
- float v2 = AFloatSerializerDeserializer.getFloat(rightBytes, rightOffset);
- return compareDouble(s, v2);
- }
- case DOUBLE: {
- double v2 = ADoubleSerializerDeserializer.getDouble(rightBytes, rightOffset);
- return compareDouble(s, v2);
- }
+ case INT8:
+ return compareDouble(s, AInt8SerializerDeserializer.getByte(rightBytes, rightOffset));
+ case INT16:
+ return compareDouble(s, AInt16SerializerDeserializer.getShort(rightBytes, rightOffset));
+ case INT32:
+ return compareDouble(s, AInt32SerializerDeserializer.getInt(rightBytes, rightOffset));
+ case INT64:
+ return compareDouble(s, AInt64SerializerDeserializer.getLong(rightBytes, rightOffset));
+ case FLOAT:
+ return compareDouble(s, AFloatSerializerDeserializer.getFloat(rightBytes, rightOffset));
+ case DOUBLE:
+ return compareDouble(s, ADoubleSerializerDeserializer.getDouble(rightBytes, rightOffset));
default: {
- throw new HyracksDataException("Comparison is undefined between types ADouble and " + typeTag2 + " .");
+ throw new IncompatibleTypeException(COMPARISON, ATypeTag.SERIALIZED_DOUBLE_TYPE_TAG,
+ typeTag2.serialize());
}
}
}
@@ -240,33 +217,21 @@ public class ComparisonHelper implements Serializable {
float s = FloatPointable.getFloat(leftBytes, leftOffset);
switch (typeTag2) {
- case INT8: {
- byte v2 = AInt8SerializerDeserializer.getByte(rightBytes, rightOffset);
- return compareFloat(s, v2);
- }
- case INT16: {
- short v2 = AInt16SerializerDeserializer.getShort(rightBytes, rightOffset);
- return compareFloat(s, v2);
- }
- case INT32: {
- int v2 = AInt32SerializerDeserializer.getInt(rightBytes, rightOffset);
- return compareFloat(s, v2);
- }
- case INT64: {
- long v2 = AInt64SerializerDeserializer.getLong(rightBytes, rightOffset);
- return compareFloat(s, v2);
- }
- case FLOAT: {
- float v2 = AFloatSerializerDeserializer.getFloat(rightBytes, rightOffset);
- return compareFloat(s, v2);
- }
- case DOUBLE: {
- double v2 = ADoubleSerializerDeserializer.getDouble(rightBytes, rightOffset);
- return compareDouble(s, v2);
- }
- default: {
- throw new HyracksDataException("Comparison is undefined between types AFloat and " + typeTag2 + " .");
- }
+ case INT8:
+ return compareFloat(s, AInt8SerializerDeserializer.getByte(rightBytes, rightOffset));
+ case INT16:
+ return compareFloat(s, AInt16SerializerDeserializer.getShort(rightBytes, rightOffset));
+ case INT32:
+ return compareFloat(s, AInt32SerializerDeserializer.getInt(rightBytes, rightOffset));
+ case INT64:
+ return compareFloat(s, AInt64SerializerDeserializer.getLong(rightBytes, rightOffset));
+ case FLOAT:
+ return compareFloat(s, AFloatSerializerDeserializer.getFloat(rightBytes, rightOffset));
+ case DOUBLE:
+ return compareDouble(s, ADoubleSerializerDeserializer.getDouble(rightBytes, rightOffset));
+ default:
+ throw new IncompatibleTypeException(COMPARISON, ATypeTag.SERIALIZED_FLOAT_TYPE_TAG,
+ typeTag2.serialize());
}
}
@@ -278,33 +243,21 @@ public class ComparisonHelper implements Serializable {
long s = AInt64SerializerDeserializer.getLong(leftBytes, leftOffset);
switch (typeTag2) {
- case INT8: {
- byte v2 = AInt8SerializerDeserializer.getByte(rightBytes, rightOffset);
- return compareLong(s, v2);
- }
- case INT16: {
- short v2 = AInt16SerializerDeserializer.getShort(rightBytes, rightOffset);
- return compareLong(s, v2);
- }
- case INT32: {
- int v2 = AInt32SerializerDeserializer.getInt(rightBytes, rightOffset);
- return compareLong(s, v2);
- }
- case INT64: {
- long v2 = AInt64SerializerDeserializer.getLong(rightBytes, rightOffset);
- return compareLong(s, v2);
- }
- case FLOAT: {
- float v2 = AFloatSerializerDeserializer.getFloat(rightBytes, rightOffset);
- return compareFloat(s, v2);
- }
- case DOUBLE: {
- double v2 = ADoubleSerializerDeserializer.getDouble(rightBytes, rightOffset);
- return compareDouble(s, v2);
- }
- default: {
- throw new HyracksDataException("Comparison is undefined between types AInt64 and " + typeTag2 + " .");
- }
+ case INT8:
+ return compareLong(s, AInt8SerializerDeserializer.getByte(rightBytes, rightOffset));
+ case INT16:
+ return compareLong(s, AInt16SerializerDeserializer.getShort(rightBytes, rightOffset));
+ case INT32:
+ return compareLong(s, AInt32SerializerDeserializer.getInt(rightBytes, rightOffset));
+ case INT64:
+ return compareLong(s, AInt64SerializerDeserializer.getLong(rightBytes, rightOffset));
+ case FLOAT:
+ return compareFloat(s, AFloatSerializerDeserializer.getFloat(rightBytes, rightOffset));
+ case DOUBLE:
+ return compareDouble(s, ADoubleSerializerDeserializer.getDouble(rightBytes, rightOffset));
+ default:
+ throw new IncompatibleTypeException(COMPARISON, ATypeTag.SERIALIZED_INT64_TYPE_TAG,
+ typeTag2.serialize());
}
}
@@ -340,9 +293,9 @@ public class ComparisonHelper implements Serializable {
double v2 = ADoubleSerializerDeserializer.getDouble(rightBytes, rightOffset);
return compareDouble(s, v2);
}
- default: {
- throw new HyracksDataException("Comparison is undefined between types AInt32 and " + typeTag2 + " .");
- }
+ default:
+ throw new IncompatibleTypeException(COMPARISON, ATypeTag.SERIALIZED_INT32_TYPE_TAG,
+ typeTag2.serialize());
}
}
@@ -379,7 +332,8 @@ public class ComparisonHelper implements Serializable {
return compareDouble(s, v2);
}
default: {
- throw new HyracksDataException("Comparison is undefined between types AInt16 and " + typeTag2 + " .");
+ throw new IncompatibleTypeException(COMPARISON, ATypeTag.SERIALIZED_INT16_TYPE_TAG,
+ typeTag2.serialize());
}
}
}
@@ -392,33 +346,21 @@ public class ComparisonHelper implements Serializable {
byte s = AInt8SerializerDeserializer.getByte(leftBytes, leftStart);
switch (typeTag2) {
- case INT8: {
- byte v2 = AInt8SerializerDeserializer.getByte(rightBytes, rightStart);
- return compareByte(s, v2);
- }
- case INT16: {
- short v2 = AInt16SerializerDeserializer.getShort(rightBytes, rightStart);
- return compareShort(s, v2);
- }
- case INT32: {
- int v2 = AInt32SerializerDeserializer.getInt(rightBytes, rightStart);
- return compareInt(s, v2);
- }
- case INT64: {
- long v2 = AInt64SerializerDeserializer.getLong(rightBytes, rightStart);
- return compareLong(s, v2);
- }
- case FLOAT: {
- float v2 = AFloatSerializerDeserializer.getFloat(rightBytes, rightStart);
- return compareFloat(s, v2);
- }
- case DOUBLE: {
- double v2 = ADoubleSerializerDeserializer.getDouble(rightBytes, rightStart);
- return compareDouble(s, v2);
- }
- default: {
- throw new HyracksDataException("Comparison is undefined between types AInt16 and " + typeTag2 + " .");
- }
+ case INT8:
+ return compareByte(s, AInt8SerializerDeserializer.getByte(rightBytes, rightStart));
+ case INT16:
+ return compareShort(s, AInt16SerializerDeserializer.getShort(rightBytes, rightStart));
+ case INT32:
+ return compareInt(s, AInt32SerializerDeserializer.getInt(rightBytes, rightStart));
+ case INT64:
+ return compareLong(s, AInt64SerializerDeserializer.getLong(rightBytes, rightStart));
+ case FLOAT:
+ return compareFloat(s, AFloatSerializerDeserializer.getFloat(rightBytes, rightStart));
+ case DOUBLE:
+ return compareDouble(s, ADoubleSerializerDeserializer.getDouble(rightBytes, rightStart));
+ default:
+ throw new IncompatibleTypeException(COMPARISON, ATypeTag.SERIALIZED_INT8_TYPE_TAG,
+ typeTag2.serialize());
}
}
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/52671a2c/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/comparisons/DeepEqualAssessor.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/comparisons/DeepEqualAssessor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/comparisons/DeepEqualAssessor.java
index b4e0375..0c397f0 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/comparisons/DeepEqualAssessor.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/comparisons/DeepEqualAssessor.java
@@ -25,7 +25,6 @@ import org.apache.asterix.om.types.hierachy.ATypeHierarchy;
import org.apache.asterix.om.types.hierachy.ATypeHierarchy.Domain;
import org.apache.asterix.runtime.evaluators.functions.PointableHelper;
import org.apache.asterix.runtime.evaluators.visitors.DeepEqualityVisitor;
-import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
import org.apache.hyracks.algebricks.common.utils.Pair;
import org.apache.hyracks.api.exceptions.HyracksDataException;
@@ -39,11 +38,12 @@ import org.apache.hyracks.api.exceptions.HyracksDataException;
*/
public class DeepEqualAssessor {
+ private static final String DEEP_EQUAL = "deep-equal";
+ private static final double EPSILON = 1E-10;
private final DeepEqualityVisitor equalityVisitor = new DeepEqualityVisitor();
public boolean isEqual(IVisitablePointable leftPointable, IVisitablePointable rightPointable)
- throws AlgebricksException, AsterixException {
-
+ throws HyracksDataException, AsterixException {
if (leftPointable == null || rightPointable == null) {
return false;
}
@@ -59,16 +59,11 @@ public class DeepEqualAssessor {
// If types are numeric compare their real values instead
if (ATypeHierarchy.isSameTypeDomain(leftTypeTag, rightTypeTag, false)
&& ATypeHierarchy.getTypeDomain(leftTypeTag) == Domain.NUMERIC) {
- try {
- double leftVal = ATypeHierarchy.getDoubleValue(leftPointable.getByteArray(),
+ double leftVal = ATypeHierarchy.getDoubleValue(DEEP_EQUAL, 0, leftPointable.getByteArray(),
leftPointable.getStartOffset());
- double rightVal = ATypeHierarchy.getDoubleValue(rightPointable.getByteArray(),
+ double rightVal = ATypeHierarchy.getDoubleValue(DEEP_EQUAL, 1, rightPointable.getByteArray(),
rightPointable.getStartOffset());
- return (leftVal == rightVal);
- } catch (HyracksDataException e) {
- throw new AlgebricksException(e);
- }
-
+ return Math.abs(leftVal - rightVal) < EPSILON;
} else {
return false;
}
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/52671a2c/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/comparisons/EqualsDescriptor.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/comparisons/EqualsDescriptor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/comparisons/EqualsDescriptor.java
index 122c1a2..dd2f5bd 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/comparisons/EqualsDescriptor.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/comparisons/EqualsDescriptor.java
@@ -23,11 +23,11 @@ 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.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.IScalarEvaluator;
import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
import org.apache.hyracks.api.context.IHyracksTaskContext;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
public class EqualsDescriptor extends AbstractScalarFunctionDynamicDescriptor {
private static final long serialVersionUID = 1L;
@@ -44,12 +44,12 @@ public class EqualsDescriptor extends AbstractScalarFunctionDynamicDescriptor {
}
@Override
- public IScalarEvaluatorFactory createEvaluatorFactory(IScalarEvaluatorFactory[] args) throws AlgebricksException {
+ public IScalarEvaluatorFactory createEvaluatorFactory(IScalarEvaluatorFactory[] args) {
return new IScalarEvaluatorFactory() {
private static final long serialVersionUID = 1L;
@Override
- public IScalarEvaluator createScalarEvaluator(IHyracksTaskContext ctx) throws AlgebricksException {
+ public IScalarEvaluator createScalarEvaluator(IHyracksTaskContext ctx) throws HyracksDataException {
return new AbstractComparisonEvaluator(args[0], args[1], ctx) {
@Override
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/52671a2c/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/comparisons/GreaterThanDescriptor.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/comparisons/GreaterThanDescriptor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/comparisons/GreaterThanDescriptor.java
index 1bc731a..2650f00 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/comparisons/GreaterThanDescriptor.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/comparisons/GreaterThanDescriptor.java
@@ -23,11 +23,11 @@ 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.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.IScalarEvaluator;
import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
import org.apache.hyracks.api.context.IHyracksTaskContext;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
public class GreaterThanDescriptor extends AbstractScalarFunctionDynamicDescriptor {
private static final long serialVersionUID = 1L;
@@ -44,12 +44,12 @@ public class GreaterThanDescriptor extends AbstractScalarFunctionDynamicDescript
}
@Override
- public IScalarEvaluatorFactory createEvaluatorFactory(IScalarEvaluatorFactory[] args) throws AlgebricksException {
+ public IScalarEvaluatorFactory createEvaluatorFactory(IScalarEvaluatorFactory[] args) {
return new IScalarEvaluatorFactory() {
private static final long serialVersionUID = 1L;
@Override
- public IScalarEvaluator createScalarEvaluator(IHyracksTaskContext ctx) throws AlgebricksException {
+ public IScalarEvaluator createScalarEvaluator(IHyracksTaskContext ctx) throws HyracksDataException {
return new AbstractComparisonEvaluator(args[0], args[1], ctx) {
@Override
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/52671a2c/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/comparisons/GreaterThanOrEqualsDescriptor.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/comparisons/GreaterThanOrEqualsDescriptor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/comparisons/GreaterThanOrEqualsDescriptor.java
index b6318ad..073a7c2 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/comparisons/GreaterThanOrEqualsDescriptor.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/comparisons/GreaterThanOrEqualsDescriptor.java
@@ -23,11 +23,11 @@ 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.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.IScalarEvaluator;
import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
import org.apache.hyracks.api.context.IHyracksTaskContext;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
public class GreaterThanOrEqualsDescriptor extends AbstractScalarFunctionDynamicDescriptor {
private static final long serialVersionUID = 1L;
@@ -44,12 +44,12 @@ public class GreaterThanOrEqualsDescriptor extends AbstractScalarFunctionDynamic
}
@Override
- public IScalarEvaluatorFactory createEvaluatorFactory(IScalarEvaluatorFactory[] args) throws AlgebricksException {
+ public IScalarEvaluatorFactory createEvaluatorFactory(IScalarEvaluatorFactory[] args) {
return new IScalarEvaluatorFactory() {
private static final long serialVersionUID = 1L;
@Override
- public IScalarEvaluator createScalarEvaluator(IHyracksTaskContext ctx) throws AlgebricksException {
+ public IScalarEvaluator createScalarEvaluator(IHyracksTaskContext ctx) throws HyracksDataException {
return new AbstractComparisonEvaluator(args[0], args[1], ctx) {
@Override
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/52671a2c/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/comparisons/LessThanDescriptor.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/comparisons/LessThanDescriptor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/comparisons/LessThanDescriptor.java
index d375a61..b2121e7 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/comparisons/LessThanDescriptor.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/comparisons/LessThanDescriptor.java
@@ -23,11 +23,11 @@ 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.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.IScalarEvaluator;
import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
import org.apache.hyracks.api.context.IHyracksTaskContext;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
public class LessThanDescriptor extends AbstractScalarFunctionDynamicDescriptor {
private static final long serialVersionUID = 1L;
@@ -44,12 +44,12 @@ public class LessThanDescriptor extends AbstractScalarFunctionDynamicDescriptor
}
@Override
- public IScalarEvaluatorFactory createEvaluatorFactory(IScalarEvaluatorFactory[] args) throws AlgebricksException {
+ public IScalarEvaluatorFactory createEvaluatorFactory(IScalarEvaluatorFactory[] args) {
return new IScalarEvaluatorFactory() {
private static final long serialVersionUID = 1L;
@Override
- public IScalarEvaluator createScalarEvaluator(IHyracksTaskContext ctx) throws AlgebricksException {
+ public IScalarEvaluator createScalarEvaluator(IHyracksTaskContext ctx) throws HyracksDataException {
return new AbstractComparisonEvaluator(args[0], args[1], ctx) {
@Override
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/52671a2c/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/comparisons/LessThanOrEqualsDescriptor.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/comparisons/LessThanOrEqualsDescriptor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/comparisons/LessThanOrEqualsDescriptor.java
index 4bcaa5b..1b70ee2 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/comparisons/LessThanOrEqualsDescriptor.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/comparisons/LessThanOrEqualsDescriptor.java
@@ -23,11 +23,11 @@ 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.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.IScalarEvaluator;
import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
import org.apache.hyracks.api.context.IHyracksTaskContext;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
public class LessThanOrEqualsDescriptor extends AbstractScalarFunctionDynamicDescriptor {
private static final long serialVersionUID = 1L;
@@ -44,12 +44,12 @@ public class LessThanOrEqualsDescriptor extends AbstractScalarFunctionDynamicDes
}
@Override
- public IScalarEvaluatorFactory createEvaluatorFactory(IScalarEvaluatorFactory[] args) throws AlgebricksException {
+ public IScalarEvaluatorFactory createEvaluatorFactory(IScalarEvaluatorFactory[] args) {
return new IScalarEvaluatorFactory() {
private static final long serialVersionUID = 1L;
@Override
- public IScalarEvaluator createScalarEvaluator(IHyracksTaskContext ctx) throws AlgebricksException {
+ public IScalarEvaluator createScalarEvaluator(IHyracksTaskContext ctx) throws HyracksDataException {
return new AbstractComparisonEvaluator(args[0], args[1], ctx) {
@Override
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/52671a2c/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/comparisons/NotEqualsDescriptor.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/comparisons/NotEqualsDescriptor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/comparisons/NotEqualsDescriptor.java
index 11ee60f..de100f1 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/comparisons/NotEqualsDescriptor.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/comparisons/NotEqualsDescriptor.java
@@ -23,11 +23,11 @@ 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.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.IScalarEvaluator;
import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
import org.apache.hyracks.api.context.IHyracksTaskContext;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
public class NotEqualsDescriptor extends AbstractScalarFunctionDynamicDescriptor {
private static final long serialVersionUID = 1L;
@@ -44,12 +44,12 @@ public class NotEqualsDescriptor extends AbstractScalarFunctionDynamicDescriptor
}
@Override
- public IScalarEvaluatorFactory createEvaluatorFactory(IScalarEvaluatorFactory[] args) throws AlgebricksException {
+ public IScalarEvaluatorFactory createEvaluatorFactory(IScalarEvaluatorFactory[] args) {
return new IScalarEvaluatorFactory() {
private static final long serialVersionUID = 1L;
@Override
- public IScalarEvaluator createScalarEvaluator(IHyracksTaskContext ctx) throws AlgebricksException {
+ public IScalarEvaluator createScalarEvaluator(IHyracksTaskContext ctx) throws HyracksDataException {
return new AbstractComparisonEvaluator(args[0], args[1], ctx) {
@Override
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/52671a2c/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/constructors/ABinaryBase64StringConstructorDescriptor.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/constructors/ABinaryBase64StringConstructorDescriptor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/constructors/ABinaryBase64StringConstructorDescriptor.java
index 2d1155b..5017c09 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/constructors/ABinaryBase64StringConstructorDescriptor.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/constructors/ABinaryBase64StringConstructorDescriptor.java
@@ -22,11 +22,11 @@ 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.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.IScalarEvaluator;
import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
import org.apache.hyracks.api.context.IHyracksTaskContext;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
import org.apache.hyracks.dataflow.common.data.parsers.ByteArrayBase64ParserFactory;
public class ABinaryBase64StringConstructorDescriptor extends AbstractScalarFunctionDynamicDescriptor {
@@ -39,13 +39,12 @@ public class ABinaryBase64StringConstructorDescriptor extends AbstractScalarFunc
};
@Override
- public IScalarEvaluatorFactory createEvaluatorFactory(final IScalarEvaluatorFactory[] args)
- throws AlgebricksException {
+ public IScalarEvaluatorFactory createEvaluatorFactory(final IScalarEvaluatorFactory[] args) {
return new IScalarEvaluatorFactory() {
private static final long serialVersionUID = 1L;
@Override
- public IScalarEvaluator createScalarEvaluator(IHyracksTaskContext ctx) throws AlgebricksException {
+ public IScalarEvaluator createScalarEvaluator(IHyracksTaskContext ctx) throws HyracksDataException {
return new ABinaryHexStringConstructorDescriptor.ABinaryConstructorEvaluator(args[0],
ByteArrayBase64ParserFactory.INSTANCE, ctx);
}
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/52671a2c/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/constructors/ABinaryHexStringConstructorDescriptor.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/constructors/ABinaryHexStringConstructorDescriptor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/constructors/ABinaryHexStringConstructorDescriptor.java
index 74f4b65..920b47a 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/constructors/ABinaryHexStringConstructorDescriptor.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/constructors/ABinaryHexStringConstructorDescriptor.java
@@ -27,11 +27,13 @@ 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.runtime.evaluators.base.AbstractScalarFunctionDynamicDescriptor;
-import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
+import org.apache.asterix.runtime.exceptions.InvalidDataFormatException;
+import org.apache.asterix.runtime.exceptions.TypeMismatchException;
import org.apache.hyracks.algebricks.core.algebra.functions.FunctionIdentifier;
import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluator;
import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
import org.apache.hyracks.api.context.IHyracksTaskContext;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
import org.apache.hyracks.data.std.api.IPointable;
import org.apache.hyracks.data.std.primitive.UTF8StringPointable;
import org.apache.hyracks.data.std.primitive.VoidPointable;
@@ -51,13 +53,12 @@ public class ABinaryHexStringConstructorDescriptor extends AbstractScalarFunctio
};
@Override
- public IScalarEvaluatorFactory createEvaluatorFactory(final IScalarEvaluatorFactory[] args)
- throws AlgebricksException {
+ public IScalarEvaluatorFactory createEvaluatorFactory(final IScalarEvaluatorFactory[] args) {
return new IScalarEvaluatorFactory() {
private static final long serialVersionUID = 1L;
@Override
- public IScalarEvaluator createScalarEvaluator(IHyracksTaskContext ctx) throws AlgebricksException {
+ public IScalarEvaluator createScalarEvaluator(IHyracksTaskContext ctx) throws HyracksDataException {
return new ABinaryConstructorEvaluator(args[0], ByteArrayHexParserFactory.INSTANCE, ctx);
}
};
@@ -77,23 +78,22 @@ public class ABinaryHexStringConstructorDescriptor extends AbstractScalarFunctio
private UTF8StringPointable utf8Ptr = new UTF8StringPointable();
public ABinaryConstructorEvaluator(IScalarEvaluatorFactory copyEvaluatorFactory,
- IValueParserFactory valueParserFactory, IHyracksTaskContext context) throws AlgebricksException {
+ IValueParserFactory valueParserFactory, IHyracksTaskContext context) throws HyracksDataException {
eval = copyEvaluatorFactory.createScalarEvaluator(context);
byteArrayParser = valueParserFactory.createValueParser();
}
@Override
- public void evaluate(IFrameTupleReference tuple, IPointable result) throws AlgebricksException {
+ public void evaluate(IFrameTupleReference tuple, IPointable result) throws HyracksDataException {
try {
eval.evaluate(tuple, inputArg);
byte[] binary = inputArg.getByteArray();
int startOffset = inputArg.getStartOffset();
int len = inputArg.getLength();
- ATypeTag tt = ATypeTag.VALUE_TYPE_MAPPING[binary[startOffset]];
- if (tt == ATypeTag.BINARY) {
+ if (binary[startOffset] == ATypeTag.SERIALIZED_BINARY_TYPE_TAG) {
result.set(inputArg);
- } else if (tt == ATypeTag.STRING) {
+ } else if (binary[startOffset] == ATypeTag.SERIALIZED_STRING_TYPE_TAG) {
resultStorage.reset();
utf8Ptr.set(inputArg.getByteArray(), startOffset + 1, len - 1);
char[] buffer = utf8Ptr.toString().toCharArray();
@@ -101,10 +101,13 @@ public class ABinaryHexStringConstructorDescriptor extends AbstractScalarFunctio
byteArrayParser.parse(buffer, 0, buffer.length, out);
result.set(resultStorage);
} else {
- throw new AlgebricksException("binary type of " + tt + "haven't implemented yet.");
+ throw new TypeMismatchException(AsterixBuiltinFunctions.BINARY_HEX_CONSTRUCTOR, 0,
+ binary[startOffset], ATypeTag.SERIALIZED_BINARY_TYPE_TAG,
+ ATypeTag.SERIALIZED_STRING_TYPE_TAG);
}
} catch (IOException e) {
- throw new AlgebricksException(e);
+ throw new InvalidDataFormatException(AsterixBuiltinFunctions.BINARY_HEX_CONSTRUCTOR, e,
+ ATypeTag.SERIALIZED_BINARY_TYPE_TAG);
}
}
}
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/52671a2c/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/constructors/ABooleanConstructorDescriptor.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/constructors/ABooleanConstructorDescriptor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/constructors/ABooleanConstructorDescriptor.java
index 85ecb75..9eb0563 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/constructors/ABooleanConstructorDescriptor.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/constructors/ABooleanConstructorDescriptor.java
@@ -30,13 +30,15 @@ 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.runtime.evaluators.base.AbstractScalarFunctionDynamicDescriptor;
-import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
+import org.apache.asterix.runtime.exceptions.InvalidDataFormatException;
+import org.apache.asterix.runtime.exceptions.TypeMismatchException;
import org.apache.hyracks.algebricks.core.algebra.functions.FunctionIdentifier;
import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluator;
import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
import org.apache.hyracks.api.context.IHyracksTaskContext;
import org.apache.hyracks.api.dataflow.value.IBinaryComparator;
import org.apache.hyracks.api.dataflow.value.ISerializerDeserializer;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
import org.apache.hyracks.data.std.api.IPointable;
import org.apache.hyracks.data.std.primitive.VoidPointable;
import org.apache.hyracks.data.std.util.ArrayBackedValueStorage;
@@ -58,13 +60,12 @@ public class ABooleanConstructorDescriptor extends AbstractScalarFunctionDynamic
private static final long serialVersionUID = 1L;
@Override
- public IScalarEvaluator createScalarEvaluator(IHyracksTaskContext ctx) throws AlgebricksException {
+ public IScalarEvaluator createScalarEvaluator(IHyracksTaskContext ctx) throws HyracksDataException {
return new IScalarEvaluator() {
private ArrayBackedValueStorage resultStorage = new ArrayBackedValueStorage();
private DataOutput out = resultStorage.getDataOutput();
private IPointable inputArg = new VoidPointable();
private IScalarEvaluator eval = args[0].createScalarEvaluator(ctx);
- private String errorMessage = "This can not be an instance of boolean";
private final byte[] TRUE = UTF8StringUtil.writeStringToBytes("true");
private final byte[] FALSE = UTF8StringUtil.writeStringToBytes("false");
IBinaryComparator utf8BinaryComparator = AqlBinaryComparatorFactoryProvider.UTF8STRING_POINTABLE_INSTANCE
@@ -74,7 +75,7 @@ public class ABooleanConstructorDescriptor extends AbstractScalarFunctionDynamic
.getSerializerDeserializer(BuiltinType.ABOOLEAN);
@Override
- public void evaluate(IFrameTupleReference tuple, IPointable result) throws AlgebricksException {
+ public void evaluate(IFrameTupleReference tuple, IPointable result) throws HyracksDataException {
try {
resultStorage.reset();
eval.evaluate(tuple, inputArg);
@@ -94,13 +95,16 @@ public class ABooleanConstructorDescriptor extends AbstractScalarFunctionDynamic
result.set(resultStorage);
return;
} else {
- throw new AlgebricksException(errorMessage);
+ throw new InvalidDataFormatException(getIdentifier(),
+ ATypeTag.SERIALIZED_BOOLEAN_TYPE_TAG);
}
} else {
- throw new AlgebricksException(errorMessage);
+ throw new TypeMismatchException(getIdentifier(), 0, serString[startOffset],
+ ATypeTag.SERIALIZED_STRING_TYPE_TAG);
}
- } catch (IOException e1) {
- throw new AlgebricksException(errorMessage);
+ } catch (IOException e) {
+ throw new InvalidDataFormatException(getIdentifier(), e,
+ ATypeTag.SERIALIZED_BOOLEAN_TYPE_TAG);
}
}
};
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/52671a2c/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/constructors/ACircleConstructorDescriptor.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/constructors/ACircleConstructorDescriptor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/constructors/ACircleConstructorDescriptor.java
index 319ab0e..07aed4a 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/constructors/ACircleConstructorDescriptor.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/constructors/ACircleConstructorDescriptor.java
@@ -31,12 +31,14 @@ 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.runtime.evaluators.base.AbstractScalarFunctionDynamicDescriptor;
-import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
+import org.apache.asterix.runtime.exceptions.InvalidDataFormatException;
+import org.apache.asterix.runtime.exceptions.TypeMismatchException;
import org.apache.hyracks.algebricks.core.algebra.functions.FunctionIdentifier;
import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluator;
import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
import org.apache.hyracks.api.context.IHyracksTaskContext;
import org.apache.hyracks.api.dataflow.value.ISerializerDeserializer;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
import org.apache.hyracks.data.std.api.IPointable;
import org.apache.hyracks.data.std.primitive.UTF8StringPointable;
import org.apache.hyracks.data.std.primitive.VoidPointable;
@@ -59,13 +61,12 @@ public class ACircleConstructorDescriptor extends AbstractScalarFunctionDynamicD
private static final long serialVersionUID = 1L;
@Override
- public IScalarEvaluator createScalarEvaluator(IHyracksTaskContext ctx) throws AlgebricksException {
+ public IScalarEvaluator createScalarEvaluator(IHyracksTaskContext ctx) throws HyracksDataException {
return new IScalarEvaluator() {
private final ArrayBackedValueStorage resultStorage = new ArrayBackedValueStorage();
private final DataOutput out = resultStorage.getDataOutput();
private final IPointable inputArg = new VoidPointable();
private final IScalarEvaluator eval = args[0].createScalarEvaluator(ctx);
- private final String errorMessage = "This can not be an instance of circle";
private final AMutablePoint aPoint = new AMutablePoint(0, 0);
private AMutableCircle aCircle = new AMutableCircle(null, 0);
@SuppressWarnings("unchecked")
@@ -75,7 +76,7 @@ public class ACircleConstructorDescriptor extends AbstractScalarFunctionDynamicD
private final UTF8StringPointable utf8Ptr = new UTF8StringPointable();
@Override
- public void evaluate(IFrameTupleReference tuple, IPointable result) throws AlgebricksException {
+ public void evaluate(IFrameTupleReference tuple, IPointable result) throws HyracksDataException {
try {
resultStorage.reset();
eval.evaluate(tuple, inputArg);
@@ -94,11 +95,13 @@ public class ACircleConstructorDescriptor extends AbstractScalarFunctionDynamicD
aCircle.setValue(aPoint, Double.parseDouble(s.substring(spaceIndex + 1, s.length())));
circleSerde.serialize(aCircle, out);
} else {
- throw new AlgebricksException(errorMessage);
+ throw new TypeMismatchException(getIdentifier(), 0, serString[offset],
+ ATypeTag.SERIALIZED_STRING_TYPE_TAG);
}
result.set(resultStorage);
- } catch (IOException e1) {
- throw new AlgebricksException(errorMessage);
+ } catch (IOException e) {
+ throw new InvalidDataFormatException(getIdentifier(), e,
+ ATypeTag.SERIALIZED_CIRCLE_TYPE_TAG);
}
}
};
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/52671a2c/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/constructors/ADateConstructorDescriptor.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/constructors/ADateConstructorDescriptor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/constructors/ADateConstructorDescriptor.java
index 06b9948..e22f076 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/constructors/ADateConstructorDescriptor.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/constructors/ADateConstructorDescriptor.java
@@ -32,12 +32,14 @@ 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.runtime.evaluators.base.AbstractScalarFunctionDynamicDescriptor;
-import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
+import org.apache.asterix.runtime.exceptions.InvalidDataFormatException;
+import org.apache.asterix.runtime.exceptions.TypeMismatchException;
import org.apache.hyracks.algebricks.core.algebra.functions.FunctionIdentifier;
import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluator;
import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
import org.apache.hyracks.api.context.IHyracksTaskContext;
import org.apache.hyracks.api.dataflow.value.ISerializerDeserializer;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
import org.apache.hyracks.data.std.api.IPointable;
import org.apache.hyracks.data.std.primitive.UTF8StringPointable;
import org.apache.hyracks.data.std.primitive.VoidPointable;
@@ -59,14 +61,13 @@ public class ADateConstructorDescriptor extends AbstractScalarFunctionDynamicDes
private static final long serialVersionUID = 1L;
@Override
- public IScalarEvaluator createScalarEvaluator(IHyracksTaskContext ctx) throws AlgebricksException {
+ public IScalarEvaluator createScalarEvaluator(IHyracksTaskContext ctx) throws HyracksDataException {
return new IScalarEvaluator() {
private ArrayBackedValueStorage resultStorage = new ArrayBackedValueStorage();
private DataOutput out = resultStorage.getDataOutput();
private IPointable inputArg = new VoidPointable();
private IScalarEvaluator eval = args[0].createScalarEvaluator(ctx);
- private String errorMessage = "This can not be an instance of date";
private AMutableDate aDate = new AMutableDate(0);
@SuppressWarnings("unchecked")
private ISerializerDeserializer<ADate> dateSerde = AqlSerializerDeserializerProvider.INSTANCE
@@ -75,7 +76,7 @@ public class ADateConstructorDescriptor extends AbstractScalarFunctionDynamicDes
private final UTF8StringPointable utf8Ptr = new UTF8StringPointable();
@Override
- public void evaluate(IFrameTupleReference tuple, IPointable result) throws AlgebricksException {
+ public void evaluate(IFrameTupleReference tuple, IPointable result) throws HyracksDataException {
try {
resultStorage.reset();
eval.evaluate(tuple, inputArg);
@@ -89,9 +90,8 @@ public class ADateConstructorDescriptor extends AbstractScalarFunctionDynamicDes
// the string to be parsed should be at least 8 characters: YYYYMMDD
if (stringLength < 8) {
- throw new AlgebricksException(errorMessage
- + ": the string length should be at least 8 (YYYYMMDD) but it is "
- + stringLength);
+ throw new InvalidDataFormatException(getIdentifier(),
+ ATypeTag.SERIALIZED_DATE_TYPE_TAG);
}
int startOffset = utf8Ptr.getCharStartOffset();
@@ -113,11 +113,12 @@ public class ADateConstructorDescriptor extends AbstractScalarFunctionDynamicDes
aDate.setValue((int) (chrononTimeInMs / GregorianCalendarSystem.CHRONON_OF_DAY) - temp);
dateSerde.serialize(aDate, out);
} else {
- throw new AlgebricksException(errorMessage);
+ throw new TypeMismatchException(getIdentifier(), 0, serString[offset],
+ ATypeTag.SERIALIZED_STRING_TYPE_TAG);
}
result.set(resultStorage);
} catch (IOException e) {
- throw new AlgebricksException(e);
+ throw new InvalidDataFormatException(getIdentifier(), e, ATypeTag.SERIALIZED_DATE_TYPE_TAG);
}
}
};
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/52671a2c/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/constructors/ADateTimeConstructorDescriptor.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/constructors/ADateTimeConstructorDescriptor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/constructors/ADateTimeConstructorDescriptor.java
index 63f3461..cb16578 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/constructors/ADateTimeConstructorDescriptor.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/constructors/ADateTimeConstructorDescriptor.java
@@ -32,12 +32,14 @@ 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.runtime.evaluators.base.AbstractScalarFunctionDynamicDescriptor;
-import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
+import org.apache.asterix.runtime.exceptions.InvalidDataFormatException;
+import org.apache.asterix.runtime.exceptions.TypeMismatchException;
import org.apache.hyracks.algebricks.core.algebra.functions.FunctionIdentifier;
import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluator;
import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
import org.apache.hyracks.api.context.IHyracksTaskContext;
import org.apache.hyracks.api.dataflow.value.ISerializerDeserializer;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
import org.apache.hyracks.data.std.api.IPointable;
import org.apache.hyracks.data.std.primitive.UTF8StringPointable;
import org.apache.hyracks.data.std.primitive.VoidPointable;
@@ -59,13 +61,12 @@ public class ADateTimeConstructorDescriptor extends AbstractScalarFunctionDynami
private static final long serialVersionUID = 1L;
@Override
- public IScalarEvaluator createScalarEvaluator(IHyracksTaskContext ctx) throws AlgebricksException {
+ public IScalarEvaluator createScalarEvaluator(IHyracksTaskContext ctx) throws HyracksDataException {
return new IScalarEvaluator() {
private ArrayBackedValueStorage resultStorage = new ArrayBackedValueStorage();
private DataOutput out = resultStorage.getDataOutput();
private IPointable inputArg = new VoidPointable();
private IScalarEvaluator eval = args[0].createScalarEvaluator(ctx);
- private String errorMessage = "This can not be an instance of datetime";
private AMutableDateTime aDateTime = new AMutableDateTime(0L);
@SuppressWarnings("unchecked")
private ISerializerDeserializer<ADateTime> datetimeSerde = AqlSerializerDeserializerProvider.INSTANCE
@@ -73,7 +74,7 @@ public class ADateTimeConstructorDescriptor extends AbstractScalarFunctionDynami
private final UTF8StringPointable utf8Ptr = new UTF8StringPointable();
@Override
- public void evaluate(IFrameTupleReference tuple, IPointable result) throws AlgebricksException {
+ public void evaluate(IFrameTupleReference tuple, IPointable result) throws HyracksDataException {
try {
resultStorage.reset();
eval.evaluate(tuple, inputArg);
@@ -87,9 +88,8 @@ public class ADateTimeConstructorDescriptor extends AbstractScalarFunctionDynami
int startOffset = utf8Ptr.getCharStartOffset();
// the string to be parsed should be at least 14 characters: YYYYMMDDhhmmss
if (stringLength < 14) {
- throw new AlgebricksException(errorMessage
- + ": the string length should be at least 14 (YYYYMMDDhhmmss) but it is "
- + stringLength);
+ throw new InvalidDataFormatException(getIdentifier(),
+ ATypeTag.SERIALIZED_DATETIME_TYPE_TAG);
}
// +1 if it is negative (-)
short timeOffset = (short) ((serString[startOffset] == '-') ? 1 : 0);
@@ -99,7 +99,8 @@ public class ADateTimeConstructorDescriptor extends AbstractScalarFunctionDynami
if (serString[startOffset + timeOffset] != 'T') {
timeOffset += 2;
if (serString[startOffset + timeOffset] != 'T') {
- throw new AlgebricksException(errorMessage + ": missing T");
+ throw new InvalidDataFormatException(getIdentifier(),
+ ATypeTag.SERIALIZED_DATETIME_TYPE_TAG);
}
}
@@ -112,11 +113,13 @@ public class ADateTimeConstructorDescriptor extends AbstractScalarFunctionDynami
aDateTime.setValue(chrononTimeInMs);
datetimeSerde.serialize(aDateTime, out);
} else {
- throw new AlgebricksException(errorMessage);
+ throw new TypeMismatchException(getIdentifier(), 0, serString[offset],
+ ATypeTag.SERIALIZED_STRING_TYPE_TAG);
}
result.set(resultStorage);
- } catch (IOException e1) {
- throw new AlgebricksException(errorMessage);
+ } catch (IOException e) {
+ throw new InvalidDataFormatException(getIdentifier(), e,
+ ATypeTag.SERIALIZED_DATETIME_TYPE_TAG);
}
}
};
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/52671a2c/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/constructors/ADayTimeDurationConstructorDescriptor.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/constructors/ADayTimeDurationConstructorDescriptor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/constructors/ADayTimeDurationConstructorDescriptor.java
index f95a441..f8e34de 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/constructors/ADayTimeDurationConstructorDescriptor.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/constructors/ADayTimeDurationConstructorDescriptor.java
@@ -31,12 +31,14 @@ 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.runtime.evaluators.base.AbstractScalarFunctionDynamicDescriptor;
-import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
+import org.apache.asterix.runtime.exceptions.InvalidDataFormatException;
+import org.apache.asterix.runtime.exceptions.TypeMismatchException;
import org.apache.hyracks.algebricks.core.algebra.functions.FunctionIdentifier;
import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluator;
import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
import org.apache.hyracks.api.context.IHyracksTaskContext;
import org.apache.hyracks.api.dataflow.value.ISerializerDeserializer;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
import org.apache.hyracks.data.std.api.IPointable;
import org.apache.hyracks.data.std.primitive.UTF8StringPointable;
import org.apache.hyracks.data.std.primitive.VoidPointable;
@@ -60,14 +62,13 @@ public class ADayTimeDurationConstructorDescriptor extends AbstractScalarFunctio
private static final long serialVersionUID = 1L;
@Override
- public IScalarEvaluator createScalarEvaluator(IHyracksTaskContext ctx) throws AlgebricksException {
+ public IScalarEvaluator createScalarEvaluator(IHyracksTaskContext ctx) throws HyracksDataException {
return new IScalarEvaluator() {
private ArrayBackedValueStorage resultStorage = new ArrayBackedValueStorage();
private DataOutput out = resultStorage.getDataOutput();
private IPointable inputArg = new VoidPointable();
private IScalarEvaluator eval = args[0].createScalarEvaluator(ctx);
- private String errorMessage = "This can not be an instance of day-time-duration";
private AMutableDayTimeDuration aDayTimeDuration = new AMutableDayTimeDuration(0);
@SuppressWarnings("unchecked")
private ISerializerDeserializer<ADayTimeDuration> dayTimeDurationSerde = AqlSerializerDeserializerProvider.INSTANCE
@@ -75,7 +76,7 @@ public class ADayTimeDurationConstructorDescriptor extends AbstractScalarFunctio
private final UTF8StringPointable utf8Ptr = new UTF8StringPointable();
@Override
- public void evaluate(IFrameTupleReference tuple, IPointable result) throws AlgebricksException {
+ public void evaluate(IFrameTupleReference tuple, IPointable result) throws HyracksDataException {
try {
resultStorage.reset();
eval.evaluate(tuple, inputArg);
@@ -93,11 +94,13 @@ public class ADayTimeDurationConstructorDescriptor extends AbstractScalarFunctio
dayTimeDurationSerde.serialize(aDayTimeDuration, out);
} else {
- throw new AlgebricksException(errorMessage);
+ throw new TypeMismatchException(getIdentifier(), 0, serString[offset],
+ ATypeTag.SERIALIZED_STRING_TYPE_TAG);
}
result.set(resultStorage);
- } catch (Exception e1) {
- throw new AlgebricksException(e1);
+ } catch (Exception e) {
+ throw new InvalidDataFormatException(getIdentifier(), e,
+ ATypeTag.SERIALIZED_DAY_TIME_DURATION_TYPE_TAG);
}
}
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/52671a2c/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/constructors/ADoubleConstructorDescriptor.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/constructors/ADoubleConstructorDescriptor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/constructors/ADoubleConstructorDescriptor.java
index 92d7c72..41fade5 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/constructors/ADoubleConstructorDescriptor.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/constructors/ADoubleConstructorDescriptor.java
@@ -31,13 +31,15 @@ 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.runtime.evaluators.base.AbstractScalarFunctionDynamicDescriptor;
-import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
+import org.apache.asterix.runtime.exceptions.InvalidDataFormatException;
+import org.apache.asterix.runtime.exceptions.TypeMismatchException;
import org.apache.hyracks.algebricks.core.algebra.functions.FunctionIdentifier;
import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluator;
import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
import org.apache.hyracks.api.context.IHyracksTaskContext;
import org.apache.hyracks.api.dataflow.value.IBinaryComparator;
import org.apache.hyracks.api.dataflow.value.ISerializerDeserializer;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
import org.apache.hyracks.data.std.api.IPointable;
import org.apache.hyracks.data.std.primitive.UTF8StringPointable;
import org.apache.hyracks.data.std.primitive.VoidPointable;
@@ -60,13 +62,12 @@ public class ADoubleConstructorDescriptor extends AbstractScalarFunctionDynamicD
private static final long serialVersionUID = 1L;
@Override
- public IScalarEvaluator createScalarEvaluator(IHyracksTaskContext ctx) throws AlgebricksException {
+ public IScalarEvaluator createScalarEvaluator(IHyracksTaskContext ctx) throws HyracksDataException {
return new IScalarEvaluator() {
private final ArrayBackedValueStorage resultStorage = new ArrayBackedValueStorage();
private final DataOutput out = resultStorage.getDataOutput();
private final IPointable inputArg = new VoidPointable();
private IScalarEvaluator eval = args[0].createScalarEvaluator(ctx);
- private String errorMessage = "This can not be an instance of double";
private final byte[] POSITIVE_INF = UTF8StringUtil.writeStringToBytes("INF");
private final byte[] NEGATIVE_INF = UTF8StringUtil.writeStringToBytes("-INF");
private final byte[] NAN = UTF8StringUtil.writeStringToBytes("NaN");
@@ -80,7 +81,7 @@ public class ADoubleConstructorDescriptor extends AbstractScalarFunctionDynamicD
private final UTF8StringPointable utf8Ptr = new UTF8StringPointable();
@Override
- public void evaluate(IFrameTupleReference tuple, IPointable result) throws AlgebricksException {
+ public void evaluate(IFrameTupleReference tuple, IPointable result) throws HyracksDataException {
try {
resultStorage.reset();
eval.evaluate(tuple, inputArg);
@@ -104,11 +105,13 @@ public class ADoubleConstructorDescriptor extends AbstractScalarFunctionDynamicD
}
doubleSerde.serialize(aDouble, out);
} else {
- throw new AlgebricksException(errorMessage);
+ throw new TypeMismatchException(getIdentifier(), 0, serString[offset],
+ ATypeTag.SERIALIZED_STRING_TYPE_TAG);
}
result.set(resultStorage);
- } catch (IOException e1) {
- throw new AlgebricksException(errorMessage);
+ } catch (IOException e) {
+ throw new InvalidDataFormatException(getIdentifier(), e,
+ ATypeTag.SERIALIZED_DATETIME_TYPE_TAG);
}
}
};
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/52671a2c/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/constructors/ADurationConstructorDescriptor.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/constructors/ADurationConstructorDescriptor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/constructors/ADurationConstructorDescriptor.java
index 18dc471..0ca4177 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/constructors/ADurationConstructorDescriptor.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/constructors/ADurationConstructorDescriptor.java
@@ -19,6 +19,7 @@
package org.apache.asterix.runtime.evaluators.constructors;
import java.io.DataOutput;
+import java.io.IOException;
import org.apache.asterix.formats.nontagged.AqlSerializerDeserializerProvider;
import org.apache.asterix.om.base.ADuration;
@@ -31,12 +32,14 @@ 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.runtime.evaluators.base.AbstractScalarFunctionDynamicDescriptor;
-import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
+import org.apache.asterix.runtime.exceptions.InvalidDataFormatException;
+import org.apache.asterix.runtime.exceptions.TypeMismatchException;
import org.apache.hyracks.algebricks.core.algebra.functions.FunctionIdentifier;
import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluator;
import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
import org.apache.hyracks.api.context.IHyracksTaskContext;
import org.apache.hyracks.api.dataflow.value.ISerializerDeserializer;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
import org.apache.hyracks.data.std.api.IPointable;
import org.apache.hyracks.data.std.primitive.UTF8StringPointable;
import org.apache.hyracks.data.std.primitive.VoidPointable;
@@ -58,13 +61,12 @@ public class ADurationConstructorDescriptor extends AbstractScalarFunctionDynami
private static final long serialVersionUID = 1L;
@Override
- public IScalarEvaluator createScalarEvaluator(IHyracksTaskContext ctx) throws AlgebricksException {
+ public IScalarEvaluator createScalarEvaluator(IHyracksTaskContext ctx) throws HyracksDataException {
return new IScalarEvaluator() {
private ArrayBackedValueStorage resultStorage = new ArrayBackedValueStorage();
private DataOutput out = resultStorage.getDataOutput();
private IPointable inputArg = new VoidPointable();
private IScalarEvaluator eval = args[0].createScalarEvaluator(ctx);
- private String errorMessage = "This can not be an instance of duration";
private AMutableDuration aDuration = new AMutableDuration(0, 0);
@SuppressWarnings("unchecked")
private ISerializerDeserializer<ADuration> durationSerde = AqlSerializerDeserializerProvider.INSTANCE
@@ -72,7 +74,7 @@ public class ADurationConstructorDescriptor extends AbstractScalarFunctionDynami
private final UTF8StringPointable utf8Ptr = new UTF8StringPointable();
@Override
- public void evaluate(IFrameTupleReference tuple, IPointable result) throws AlgebricksException {
+ public void evaluate(IFrameTupleReference tuple, IPointable result) throws HyracksDataException {
try {
resultStorage.reset();
eval.evaluate(tuple, inputArg);
@@ -87,11 +89,13 @@ public class ADurationConstructorDescriptor extends AbstractScalarFunctionDynami
stringLength, aDuration, ADurationParseOption.All);
durationSerde.serialize(aDuration, out);
} else {
- throw new AlgebricksException(errorMessage);
+ throw new TypeMismatchException(getIdentifier(), 0, serString[offset],
+ ATypeTag.SERIALIZED_STRING_TYPE_TAG);
}
result.set(resultStorage);
- } catch (Exception e1) {
- throw new AlgebricksException(e1);
+ } catch (IOException e) {
+ throw new InvalidDataFormatException(getIdentifier(), e,
+ ATypeTag.SERIALIZED_DURATION_TYPE_TAG);
}
}
};
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/52671a2c/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/constructors/AFloatConstructorDescriptor.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/constructors/AFloatConstructorDescriptor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/constructors/AFloatConstructorDescriptor.java
index e293552..c514002 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/constructors/AFloatConstructorDescriptor.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/constructors/AFloatConstructorDescriptor.java
@@ -31,13 +31,15 @@ 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.runtime.evaluators.base.AbstractScalarFunctionDynamicDescriptor;
-import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
+import org.apache.asterix.runtime.exceptions.InvalidDataFormatException;
+import org.apache.asterix.runtime.exceptions.TypeMismatchException;
import org.apache.hyracks.algebricks.core.algebra.functions.FunctionIdentifier;
import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluator;
import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
import org.apache.hyracks.api.context.IHyracksTaskContext;
import org.apache.hyracks.api.dataflow.value.IBinaryComparator;
import org.apache.hyracks.api.dataflow.value.ISerializerDeserializer;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
import org.apache.hyracks.data.std.api.IPointable;
import org.apache.hyracks.data.std.primitive.UTF8StringPointable;
import org.apache.hyracks.data.std.primitive.VoidPointable;
@@ -60,27 +62,17 @@ public class AFloatConstructorDescriptor extends AbstractScalarFunctionDynamicDe
private static final long serialVersionUID = 1L;
@Override
- public IScalarEvaluator createScalarEvaluator(IHyracksTaskContext ctx) throws AlgebricksException {
+ public IScalarEvaluator createScalarEvaluator(IHyracksTaskContext ctx) throws HyracksDataException {
return new IScalarEvaluator() {
private ArrayBackedValueStorage resultStorage = new ArrayBackedValueStorage();
private DataOutput out = resultStorage.getDataOutput();
private IPointable inputArg = new VoidPointable();
private IScalarEvaluator eval = args[0].createScalarEvaluator(ctx);
- private String errorMessage = "This can not be an instance of float";
private final byte[] POSITIVE_INF = UTF8StringUtil.writeStringToBytes("INF");
private final byte[] NEGATIVE_INF = UTF8StringUtil.writeStringToBytes("-INF");
private final byte[] NAN = UTF8StringUtil.writeStringToBytes("NaN");
-
- // private int offset = 3, value = 0, pointIndex = 0, eIndex
- // = 1;
- // private int integerPart = 0, fractionPart = 0,
- // exponentPart = 0;
- // float floatValue = 0;
- // boolean positiveInteger = true, positiveExponent = true,
- // expectingInteger = true,
- // expectingFraction = false, expectingExponent = false;
- IBinaryComparator utf8BinaryComparator = AqlBinaryComparatorFactoryProvider.UTF8STRING_POINTABLE_INSTANCE
- .createBinaryComparator();
+ private IBinaryComparator utf8BinaryComparator = AqlBinaryComparatorFactoryProvider.
+ UTF8STRING_POINTABLE_INSTANCE.createBinaryComparator();
private AMutableFloat aFloat = new AMutableFloat(0);
@SuppressWarnings("unchecked")
private ISerializerDeserializer<AFloat> floatSerde = AqlSerializerDeserializerProvider.INSTANCE
@@ -88,7 +80,7 @@ public class AFloatConstructorDescriptor extends AbstractScalarFunctionDynamicDe
private final UTF8StringPointable utf8Ptr = new UTF8StringPointable();
@Override
- public void evaluate(IFrameTupleReference tuple, IPointable result) throws AlgebricksException {
+ public void evaluate(IFrameTupleReference tuple, IPointable result) throws HyracksDataException {
try {
resultStorage.reset();
eval.evaluate(tuple, inputArg);
@@ -112,11 +104,13 @@ public class AFloatConstructorDescriptor extends AbstractScalarFunctionDynamicDe
}
floatSerde.serialize(aFloat, out);
} else {
- throw new AlgebricksException(errorMessage);
+ throw new TypeMismatchException(getIdentifier(), 0, serString[offset],
+ ATypeTag.SERIALIZED_STRING_TYPE_TAG);
}
result.set(resultStorage);
- } catch (IOException e1) {
- throw new AlgebricksException(errorMessage);
+ } catch (IOException e) {
+ throw new InvalidDataFormatException(getIdentifier(), e,
+ ATypeTag.SERIALIZED_FLOAT_TYPE_TAG);
}
}
};