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:26 UTC
[17/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/common/AbstractTypeCheckEvaluator.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/common/AbstractTypeCheckEvaluator.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/common/AbstractTypeCheckEvaluator.java
index 2866f7b..0fa6c0e 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/common/AbstractTypeCheckEvaluator.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/common/AbstractTypeCheckEvaluator.java
@@ -24,7 +24,6 @@ import java.io.DataOutput;
import org.apache.asterix.dataflow.data.nontagged.serde.AObjectSerializerDeserializer;
import org.apache.asterix.om.base.ABoolean;
import org.apache.asterix.om.types.ATypeTag;
-import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluator;
import org.apache.hyracks.api.exceptions.HyracksDataException;
import org.apache.hyracks.data.std.api.IPointable;
@@ -52,7 +51,7 @@ public abstract class AbstractTypeCheckEvaluator implements IScalarEvaluator {
}
@Override
- public void evaluate(IFrameTupleReference tuple, IPointable result) throws AlgebricksException {
+ public void evaluate(IFrameTupleReference tuple, IPointable result) throws HyracksDataException {
eval.evaluate(tuple, argPtr);
Value match = isMatch(argPtr.getByteArray()[argPtr.getStartOffset()]);
if (match == Value.MISSING) {
@@ -60,13 +59,9 @@ public abstract class AbstractTypeCheckEvaluator implements IScalarEvaluator {
return;
}
ABoolean res = match == Value.TRUE ? ABoolean.TRUE : ABoolean.FALSE;
- try {
- resultStorage.reset();
- aObjSerDer.serialize(res, out);
- result.set(resultStorage);
- } catch (HyracksDataException e) {
- throw new AlgebricksException(e);
- }
+ resultStorage.reset();
+ aObjSerDer.serialize(res, out);
+ result.set(resultStorage);
}
protected abstract Value isMatch(byte typeTag);
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/52671a2c/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/common/AccessibleByteArrayEval.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/common/AccessibleByteArrayEval.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/common/AccessibleByteArrayEval.java
index f621241..bc7cc03 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/common/AccessibleByteArrayEval.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/common/AccessibleByteArrayEval.java
@@ -21,8 +21,8 @@ package org.apache.asterix.runtime.evaluators.common;
import java.io.DataOutput;
import java.io.DataOutputStream;
-import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluator;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
import org.apache.hyracks.data.std.api.IPointable;
import org.apache.hyracks.data.std.util.ByteArrayAccessibleOutputStream;
import org.apache.hyracks.dataflow.common.data.accessors.IFrameTupleReference;
@@ -42,14 +42,10 @@ public class AccessibleByteArrayEval implements IScalarEvaluator {
}
@Override
- public void evaluate(IFrameTupleReference tuple, IPointable result) throws AlgebricksException {
+ public void evaluate(IFrameTupleReference tuple, IPointable result) throws HyracksDataException {
result.set(baaos.getByteArray(), 0, baaos.size());
}
- public ByteArrayAccessibleOutputStream getBaaos() {
- return baaos;
- }
-
public void reset() {
baaos.reset();
}
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/52671a2c/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/common/AsterixListAccessor.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/common/AsterixListAccessor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/common/AsterixListAccessor.java
index c16d3d1..aa5b0b5 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/common/AsterixListAccessor.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/common/AsterixListAccessor.java
@@ -28,6 +28,8 @@ import org.apache.asterix.dataflow.data.nontagged.serde.AUnorderedListSerializer
import org.apache.asterix.om.types.ATypeTag;
import org.apache.asterix.om.types.EnumDeserializer;
import org.apache.asterix.om.util.NonTaggedFormatUtil;
+import org.apache.asterix.runtime.exceptions.TypeMismatchException;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
/**
* Utility class for accessing serialized unordered and ordered lists.
@@ -52,15 +54,18 @@ public class AsterixListAccessor {
return itemType == ATypeTag.ANY;
}
- public void reset(byte[] listBytes, int start) throws AsterixException {
+ public void reset(byte[] listBytes, int start) throws HyracksDataException {
this.listBytes = listBytes;
this.start = start;
- listType = EnumDeserializer.ATYPETAGDESERIALIZER.deserialize(listBytes[start]);
- if (listType != ATypeTag.UNORDEREDLIST && listType != ATypeTag.ORDEREDLIST) {
- throw new AsterixException("Unsupported type: " + listType);
+ byte typeTag = listBytes[start];
+ if (typeTag != ATypeTag.SERIALIZED_UNORDEREDLIST_TYPE_TAG
+ && typeTag != ATypeTag.SERIALIZED_ORDEREDLIST_TYPE_TAG) {
+ throw new TypeMismatchException("list-accessor", 0, listBytes[start],
+ ATypeTag.SERIALIZED_UNORDEREDLIST_TYPE_TAG, ATypeTag.SERIALIZED_ORDEREDLIST_TYPE_TAG);
}
+ listType = EnumDeserializer.ATYPETAGDESERIALIZER.deserialize(listBytes[start]);
itemType = EnumDeserializer.ATYPETAGDESERIALIZER.deserialize(listBytes[start + 1]);
- if (listType == ATypeTag.UNORDEREDLIST) {
+ if (listBytes[start] == ATypeTag.SERIALIZED_UNORDEREDLIST_TYPE_TAG) {
size = AUnorderedListSerializerDeserializer.getNumberOfItems(listBytes, start);
} else {
size = AOrderedListSerializerDeserializer.getNumberOfItems(listBytes, start);
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/52671a2c/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/common/ClosedRecordConstructorEvalFactory.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/common/ClosedRecordConstructorEvalFactory.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/common/ClosedRecordConstructorEvalFactory.java
index f0ce758..1dd7089 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/common/ClosedRecordConstructorEvalFactory.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/common/ClosedRecordConstructorEvalFactory.java
@@ -24,7 +24,6 @@ import java.io.DataOutput;
import org.apache.asterix.builders.IARecordBuilder;
import org.apache.asterix.builders.RecordBuilder;
import org.apache.asterix.om.types.ARecordType;
-import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluator;
import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
import org.apache.hyracks.api.context.IHyracksTaskContext;
@@ -47,7 +46,7 @@ public class ClosedRecordConstructorEvalFactory implements IScalarEvaluatorFacto
}
@Override
- public IScalarEvaluator createScalarEvaluator(IHyracksTaskContext ctx) throws AlgebricksException {
+ public IScalarEvaluator createScalarEvaluator(IHyracksTaskContext ctx) throws HyracksDataException {
int n = args.length / 2;
IScalarEvaluator[] evalFields = new IScalarEvaluator[n];
for (int i = 0; i < n; i++) {
@@ -71,23 +70,19 @@ public class ClosedRecordConstructorEvalFactory implements IScalarEvaluatorFacto
}
@Override
- public void evaluate(IFrameTupleReference tuple, IPointable result) throws AlgebricksException {
- try {
- resultStorage.reset();
- if (first) {
- first = false;
- recBuilder.reset(this.recType);
- }
- recBuilder.init();
- for (int i = 0; i < evalFields.length; i++) {
- evalFields[i].evaluate(tuple, fieldValuePointable);
- recBuilder.addField(i, fieldValuePointable);
- }
- recBuilder.write(out, true);
- result.set(resultStorage);
- } catch (HyracksDataException e) {
- throw new AlgebricksException(e);
+ public void evaluate(IFrameTupleReference tuple, IPointable result) throws HyracksDataException {
+ resultStorage.reset();
+ if (first) {
+ first = false;
+ recBuilder.reset(this.recType);
}
+ recBuilder.init();
+ for (int i = 0; i < evalFields.length; i++) {
+ evalFields[i].evaluate(tuple, fieldValuePointable);
+ recBuilder.addField(i, fieldValuePointable);
+ }
+ recBuilder.write(out, true);
+ result.set(resultStorage);
}
}
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/52671a2c/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/common/CreateMBREvalFactory.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/common/CreateMBREvalFactory.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/common/CreateMBREvalFactory.java
index 0a4d258..a1eb8ad 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/common/CreateMBREvalFactory.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/common/CreateMBREvalFactory.java
@@ -30,9 +30,10 @@ import org.apache.asterix.dataflow.data.nontagged.serde.ALineSerializerDeseriali
import org.apache.asterix.dataflow.data.nontagged.serde.APointSerializerDeserializer;
import org.apache.asterix.dataflow.data.nontagged.serde.APolygonSerializerDeserializer;
import org.apache.asterix.dataflow.data.nontagged.serde.ARectangleSerializerDeserializer;
+import org.apache.asterix.runtime.exceptions.TypeMismatchException;
+import org.apache.asterix.om.functions.AsterixBuiltinFunctions;
import org.apache.asterix.om.types.ATypeTag;
import org.apache.asterix.om.types.EnumDeserializer;
-import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
import org.apache.hyracks.algebricks.common.exceptions.NotImplementedException;
import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluator;
import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
@@ -59,7 +60,7 @@ public class CreateMBREvalFactory implements IScalarEvaluatorFactory {
}
@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();
@@ -72,7 +73,7 @@ public class CreateMBREvalFactory implements IScalarEvaluatorFactory {
private IScalarEvaluator eval2 = coordinateEvalFactory.createScalarEvaluator(ctx);
@Override
- public void evaluate(IFrameTupleReference tuple, IPointable result) throws AlgebricksException {
+ public void evaluate(IFrameTupleReference tuple, IPointable result) throws HyracksDataException {
eval0.evaluate(tuple, inputArg0);
eval1.evaluate(tuple, inputArg1);
eval2.evaluate(tuple, inputArg2);
@@ -98,17 +99,18 @@ public class CreateMBREvalFactory implements IScalarEvaluatorFactory {
result.set(resultStorage);
return;
}
-
resultStorage.reset();
- // type-check: (Point/Line/Polygon/Circle/Rectangle/Null, Int32, Int32)
- if (data1[startOffset1] != ATypeTag.SERIALIZED_INT32_TYPE_TAG
- || data2[startOffset2] != ATypeTag.SERIALIZED_INT32_TYPE_TAG) {
- throw new AlgebricksException(
- "Expects Types: (Point/Line/Polygon/Circle/Rectangle/Null, Int32, Int32).");
+ if (data1[startOffset1] != ATypeTag.SERIALIZED_INT32_TYPE_TAG) {
+ throw new TypeMismatchException(AsterixBuiltinFunctions.CREATE_MBR, 1, data1[startOffset1],
+ ATypeTag.SERIALIZED_INT32_TYPE_TAG);
}
-
int dimension = AInt32SerializerDeserializer.getInt(data1, startOffset1 + 1);
- int coordinate = AInt32SerializerDeserializer.getInt(inputArg2.getByteArray(), startOffset2 + 1);
+
+ if (data2[startOffset2] != ATypeTag.SERIALIZED_INT32_TYPE_TAG) {
+ throw new TypeMismatchException(AsterixBuiltinFunctions.CREATE_MBR, 2, data2[startOffset2],
+ ATypeTag.SERIALIZED_INT32_TYPE_TAG);
+ }
+ int coordinate = AInt32SerializerDeserializer.getInt(data2, startOffset2 + 1);
double value;
if (dimension == 2) {
ATypeTag tag = EnumDeserializer.ATYPETAGDESERIALIZER.deserialize(data0[startOffset0]);
@@ -293,7 +295,6 @@ public class CreateMBREvalFactory implements IScalarEvaluatorFactory {
}
break;
case RECTANGLE:
- value = Double.MAX_VALUE;
switch (coordinate) {
case 0: {
value = ADoubleSerializerDeserializer.getDouble(data0,
@@ -326,20 +327,18 @@ public class CreateMBREvalFactory implements IScalarEvaluatorFactory {
}
break;
default:
- throw new NotImplementedException(
- "create-mbr is only implemented for POINT, LINE, POLYGON, CIRCLE and RECTANGLE. Encountered type: "
- + tag + ".");
-
+ throw new TypeMismatchException(AsterixBuiltinFunctions.CREATE_MBR, 0,
+ data0[startOffset0], ATypeTag.SERIALIZED_POINT_TYPE_TAG,
+ ATypeTag.SERIALIZED_LINE_TYPE_TAG, ATypeTag.SERIALIZED_POLYGON_TYPE_TAG,
+ ATypeTag.SERIALIZED_CIRCLE_TYPE_TAG, ATypeTag.SERIALIZED_RECTANGLE_TYPE_TAG);
}
} else {
throw new NotImplementedException(dimension + "D is not supported");
}
out.writeByte(ATypeTag.SERIALIZED_DOUBLE_TYPE_TAG);
out.writeDouble(value);
- } catch (HyracksDataException hde) {
- throw new AlgebricksException(hde);
} catch (IOException e) {
- throw new AlgebricksException(e);
+ throw new HyracksDataException(e);
}
result.set(resultStorage);
}
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/52671a2c/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/common/EditDistanceCheckEvaluator.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/common/EditDistanceCheckEvaluator.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/common/EditDistanceCheckEvaluator.java
index 3dca584..b9129a6 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/common/EditDistanceCheckEvaluator.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/common/EditDistanceCheckEvaluator.java
@@ -29,7 +29,7 @@ import org.apache.asterix.om.types.ATypeTag;
import org.apache.asterix.om.types.BuiltinType;
import org.apache.asterix.om.types.EnumDeserializer;
import org.apache.asterix.om.types.hierachy.ATypeHierarchy;
-import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
+import org.apache.asterix.runtime.exceptions.TypeMismatchException;
import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluator;
import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
import org.apache.hyracks.api.context.IHyracksTaskContext;
@@ -52,7 +52,7 @@ public class EditDistanceCheckEvaluator extends EditDistanceEvaluator {
.getSerializerDeserializer(BuiltinType.ABOOLEAN);
public EditDistanceCheckEvaluator(IScalarEvaluatorFactory[] args, IHyracksTaskContext context)
- throws AlgebricksException {
+ throws HyracksDataException {
super(args, context);
edThreshEval = args[2].createScalarEvaluator(context);
listBuilder = new OrderedListBuilder();
@@ -60,9 +60,8 @@ public class EditDistanceCheckEvaluator extends EditDistanceEvaluator {
}
@Override
- public void evaluate(IFrameTupleReference tuple, IPointable result) throws AlgebricksException {
+ public void evaluate(IFrameTupleReference tuple, IPointable result) throws HyracksDataException {
resultStorage.reset();
-
firstStringEval.evaluate(tuple, argPtr1);
firstTypeTag = EnumDeserializer.ATYPETAGDESERIALIZER
.deserialize(argPtr1.getByteArray()[argPtr1.getStartOffset()]);
@@ -76,18 +75,19 @@ public class EditDistanceCheckEvaluator extends EditDistanceEvaluator {
return;
}
try {
- edThresh = ATypeHierarchy.getIntegerValue(argPtrThreshold.getByteArray(), argPtrThreshold.getStartOffset());
+ edThresh = ATypeHierarchy.getIntegerValue(AsterixBuiltinFunctions.EDIT_DISTANCE_CHECK.getName(), 2,
+ argPtrThreshold.getByteArray(), argPtrThreshold.getStartOffset());
editDistance = computeResult(argPtr1, argPtr2, firstTypeTag);
writeResult(editDistance);
} catch (IOException e) {
- throw new AlgebricksException(e);
+ throw new HyracksDataException(e);
}
result.set(resultStorage);
}
@Override
protected int computeResult(IPointable left, IPointable right, ATypeTag argType)
- throws AlgebricksException, HyracksDataException {
+ throws HyracksDataException {
byte[] leftBytes = left.getByteArray();
int leftStartOffset = left.getStartOffset();
byte[] rightBytes = right.getByteArray();
@@ -105,8 +105,8 @@ public class EditDistanceCheckEvaluator extends EditDistanceEvaluator {
}
default: {
- throw new AlgebricksException(AsterixBuiltinFunctions.EDIT_DISTANCE_CHECK.getName()
- + ": expects input type as STRING or ORDEREDLIST but got " + argType + ".");
+ throw new TypeMismatchException(AsterixBuiltinFunctions.EDIT_DISTANCE_CHECK, 0, argType.serialize(),
+ ATypeTag.SERIALIZED_STRING_TYPE_TAG, ATypeTag.SERIALIZED_ORDEREDLIST_TYPE_TAG);
}
}
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/52671a2c/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/common/EditDistanceContainsEvaluator.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/common/EditDistanceContainsEvaluator.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/common/EditDistanceContainsEvaluator.java
index 23a01d8..e108916 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/common/EditDistanceContainsEvaluator.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/common/EditDistanceContainsEvaluator.java
@@ -18,9 +18,9 @@
*/
package org.apache.asterix.runtime.evaluators.common;
+import org.apache.asterix.runtime.exceptions.TypeMismatchException;
import org.apache.asterix.om.functions.AsterixBuiltinFunctions;
import org.apache.asterix.om.types.ATypeTag;
-import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
import org.apache.hyracks.api.context.IHyracksTaskContext;
import org.apache.hyracks.api.exceptions.HyracksDataException;
@@ -29,12 +29,12 @@ import org.apache.hyracks.data.std.api.IPointable;
public class EditDistanceContainsEvaluator extends EditDistanceCheckEvaluator {
public EditDistanceContainsEvaluator(IScalarEvaluatorFactory[] args, IHyracksTaskContext context)
- throws AlgebricksException {
+ throws HyracksDataException {
super(args, context);
}
@Override
- protected int computeResult(IPointable left, IPointable right, ATypeTag argType) throws AlgebricksException {
+ protected int computeResult(IPointable left, IPointable right, ATypeTag argType) throws HyracksDataException {
byte[] leftBytes = left.getByteArray();
int leftStartOffset = left.getStartOffset();
byte[] rightBytes = right.getByteArray();
@@ -46,17 +46,13 @@ public class EditDistanceContainsEvaluator extends EditDistanceCheckEvaluator {
rightStartOffset + typeIndicatorSize, edThresh);
}
case ORDEREDLIST: {
- try {
- firstOrdListIter.reset(leftBytes, leftStartOffset);
- secondOrdListIter.reset(rightBytes, rightStartOffset);
- return ed.getSimilarityContains(firstOrdListIter, secondOrdListIter, edThresh);
- } catch (HyracksDataException e) {
- throw new AlgebricksException(e);
- }
+ firstOrdListIter.reset(leftBytes, leftStartOffset);
+ secondOrdListIter.reset(rightBytes, rightStartOffset);
+ return ed.getSimilarityContains(firstOrdListIter, secondOrdListIter, edThresh);
}
default: {
- throw new AlgebricksException(AsterixBuiltinFunctions.EDIT_DISTANCE_CONTAINS.getName()
- + ": expects input type as STRING or ORDEREDLIST but got " + argType + ".");
+ throw new TypeMismatchException(AsterixBuiltinFunctions.EDIT_DISTANCE_CONTAINS, 0, argType.serialize(),
+ ATypeTag.SERIALIZED_STRING_TYPE_TAG, ATypeTag.SERIALIZED_ORDEREDLIST_TYPE_TAG);
}
}
}
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/52671a2c/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/common/EditDistanceEvaluator.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/common/EditDistanceEvaluator.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/common/EditDistanceEvaluator.java
index d2adc1c..efab277 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/common/EditDistanceEvaluator.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/common/EditDistanceEvaluator.java
@@ -25,10 +25,13 @@ import org.apache.asterix.formats.nontagged.AqlSerializerDeserializerProvider;
import org.apache.asterix.fuzzyjoin.similarity.SimilarityMetricEditDistance;
import org.apache.asterix.om.base.AInt64;
import org.apache.asterix.om.base.AMutableInt64;
+import org.apache.asterix.om.functions.AsterixBuiltinFunctions;
import org.apache.asterix.om.types.ATypeTag;
import org.apache.asterix.om.types.BuiltinType;
import org.apache.asterix.om.types.EnumDeserializer;
-import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
+import org.apache.asterix.runtime.exceptions.IncompatibleTypeException;
+import org.apache.asterix.runtime.exceptions.TypeMismatchException;
+import org.apache.asterix.runtime.exceptions.UnsupportedItemTypeException;
import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluator;
import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
import org.apache.hyracks.api.context.IHyracksTaskContext;
@@ -64,15 +67,14 @@ public class EditDistanceEvaluator implements IScalarEvaluator {
protected ATypeTag secondTypeTag;
public EditDistanceEvaluator(IScalarEvaluatorFactory[] args, IHyracksTaskContext context)
- throws AlgebricksException {
+ throws HyracksDataException {
firstStringEval = args[0].createScalarEvaluator(context);
secondStringEval = args[1].createScalarEvaluator(context);
}
@Override
- public void evaluate(IFrameTupleReference tuple, IPointable result) throws AlgebricksException {
+ public void evaluate(IFrameTupleReference tuple, IPointable result) throws HyracksDataException {
resultStorage.reset();
-
firstStringEval.evaluate(tuple, argPtr1);
firstTypeTag = EnumDeserializer.ATYPETAGDESERIALIZER
.deserialize(argPtr1.getByteArray()[argPtr1.getStartOffset()]);
@@ -85,22 +87,17 @@ public class EditDistanceEvaluator implements IScalarEvaluator {
return;
}
- try {
- editDistance = computeResult(argPtr1, argPtr2, firstTypeTag);
- } catch (HyracksDataException e1) {
- throw new AlgebricksException(e1);
- }
-
+ editDistance = computeResult(argPtr1, argPtr2, firstTypeTag);
try {
writeResult(editDistance);
} catch (IOException e) {
- throw new AlgebricksException(e);
+ throw new HyracksDataException(e);
}
result.set(resultStorage);
}
protected int computeResult(IPointable left, IPointable right, ATypeTag argType)
- throws AlgebricksException, HyracksDataException {
+ throws HyracksDataException {
byte[] leftBytes = left.getByteArray();
int leftStartOffset = left.getStartOffset();
byte[] rightBytes = right.getByteArray();
@@ -114,43 +111,38 @@ public class EditDistanceEvaluator implements IScalarEvaluator {
case ORDEREDLIST: {
firstOrdListIter.reset(leftBytes, leftStartOffset);
secondOrdListIter.reset(rightBytes, rightStartOffset);
- try {
- return (int) ed.getSimilarity(firstOrdListIter, secondOrdListIter);
- } catch (HyracksDataException e) {
- throw new AlgebricksException(e);
- }
+ return (int) ed.getSimilarity(firstOrdListIter, secondOrdListIter);
}
-
default: {
- throw new AlgebricksException(
- "Invalid type " + argType + " passed as argument to edit distance function.");
+ throw new TypeMismatchException(AsterixBuiltinFunctions.EDIT_DISTANCE, 0, argType.serialize(),
+ ATypeTag.SERIALIZED_STRING_TYPE_TAG, ATypeTag.SERIALIZED_ORDEREDLIST_TYPE_TAG);
}
}
}
- protected boolean checkArgTypes(ATypeTag typeTag1, ATypeTag typeTag2) throws AlgebricksException {
+ protected boolean checkArgTypes(ATypeTag typeTag1, ATypeTag typeTag2) throws HyracksDataException {
if (typeTag1 != typeTag2) {
- throw new AlgebricksException(
- "Incompatible argument types given in edit distance: " + typeTag1 + " " + typeTag2);
+ throw new IncompatibleTypeException(AsterixBuiltinFunctions.EDIT_DISTANCE, typeTag1.serialize(),
+ typeTag2.serialize());
}
// Since they are equal, check one tag is enough.
if (typeTag1 != ATypeTag.STRING && typeTag1 != ATypeTag.ORDEREDLIST) { // could be an list
- throw new AlgebricksException(
- "Only String or OrderedList type are allowed in edit distance, but given : " + typeTag1);
+ throw new TypeMismatchException(AsterixBuiltinFunctions.EDIT_DISTANCE, 0, typeTag1.serialize(),
+ ATypeTag.SERIALIZED_STRING_TYPE_TAG, ATypeTag.SERIALIZED_ORDEREDLIST_TYPE_TAG);
}
if (typeTag1 == ATypeTag.ORDEREDLIST) {
itemTypeTag = EnumDeserializer.ATYPETAGDESERIALIZER
.deserialize(argPtr1.getByteArray()[argPtr1.getStartOffset() + 1]);
if (itemTypeTag == ATypeTag.ANY) {
- throw new AlgebricksException("\n Edit Distance can only be called on homogenous lists");
+ throw new UnsupportedItemTypeException(AsterixBuiltinFunctions.EDIT_DISTANCE, itemTypeTag.serialize());
}
itemTypeTag = EnumDeserializer.ATYPETAGDESERIALIZER
.deserialize(argPtr2.getByteArray()[argPtr2.getStartOffset() + 1]);
if (itemTypeTag == ATypeTag.ANY) {
- throw new AlgebricksException("\n Edit Distance can only be called on homogenous lists");
+ throw new UnsupportedItemTypeException(AsterixBuiltinFunctions.EDIT_DISTANCE, itemTypeTag.serialize());
}
}
return true;
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/52671a2c/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/common/GramTokensEvaluator.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/common/GramTokensEvaluator.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/common/GramTokensEvaluator.java
index ed20b26..f41f02e 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/common/GramTokensEvaluator.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/common/GramTokensEvaluator.java
@@ -22,10 +22,10 @@ import java.io.DataOutput;
import java.io.IOException;
import org.apache.asterix.builders.OrderedListBuilder;
+import org.apache.asterix.om.functions.AsterixBuiltinFunctions;
import org.apache.asterix.om.types.AOrderedListType;
import org.apache.asterix.om.types.BuiltinType;
import org.apache.asterix.om.types.hierachy.ATypeHierarchy;
-import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluator;
import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
import org.apache.hyracks.api.context.IHyracksTaskContext;
@@ -57,7 +57,7 @@ public class GramTokensEvaluator implements IScalarEvaluator {
private final AOrderedListType listType;
public GramTokensEvaluator(IScalarEvaluatorFactory[] args, IHyracksTaskContext context, IBinaryTokenizer tokenizer,
- BuiltinType itemType) throws AlgebricksException {
+ BuiltinType itemType) throws HyracksDataException {
stringEval = args[0].createScalarEvaluator(context);
gramLengthEval = args[1].createScalarEvaluator(context);
prePostEval = args[2].createScalarEvaluator(context);
@@ -66,19 +66,14 @@ public class GramTokensEvaluator implements IScalarEvaluator {
}
@Override
- public void evaluate(IFrameTupleReference tuple, IPointable result) throws AlgebricksException {
+ public void evaluate(IFrameTupleReference tuple, IPointable result) throws HyracksDataException {
resultStorage.reset();
stringEval.evaluate(tuple, stringArg);
gramLengthEval.evaluate(tuple, gramLengthArg);
prePostEval.evaluate(tuple, prePostArg);
- int gramLength = 0;
- try {
- gramLength = ATypeHierarchy.getIntegerValue(gramLengthArg.getByteArray(), gramLengthArg.getStartOffset());
- } catch (HyracksDataException e1) {
- throw new AlgebricksException(e1);
- }
-
+ int gramLength = ATypeHierarchy.getIntegerValue(AsterixBuiltinFunctions.GRAM_TOKENS.getName(), 1,
+ gramLengthArg.getByteArray(), gramLengthArg.getStartOffset());
tokenizer.setGramlength(gramLength);
boolean prePost = BooleanPointable.getBoolean(prePostArg.getByteArray(),
prePostArg.getStartOffset() + typeIndicatorSize);
@@ -93,7 +88,7 @@ public class GramTokensEvaluator implements IScalarEvaluator {
}
listBuilder.write(out, true);
} catch (IOException e) {
- throw new AlgebricksException(e);
+ throw new HyracksDataException(e);
}
result.set(resultStorage);
}
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/52671a2c/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/common/SimilarityFiltersCache.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/common/SimilarityFiltersCache.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/common/SimilarityFiltersCache.java
index 52988a0..37b06af 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/common/SimilarityFiltersCache.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/common/SimilarityFiltersCache.java
@@ -24,7 +24,6 @@ import java.util.Arrays;
import org.apache.asterix.fuzzyjoin.similarity.SimilarityFilters;
import org.apache.asterix.fuzzyjoin.similarity.SimilarityFiltersFactory;
-import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
import org.apache.hyracks.api.exceptions.HyracksDataException;
import org.apache.hyracks.dataflow.common.comm.util.ByteBufferInputStream;
import org.apache.hyracks.dataflow.common.data.marshalling.UTF8StringSerializerDeserializer;
@@ -40,16 +39,11 @@ public class SimilarityFiltersCache {
private SimilarityFilters similarityFiltersCached = null;
public SimilarityFilters get(float similarityThreshold, byte[] similarityNameBytes, int startOffset, int len)
- throws AlgebricksException {
+ throws HyracksDataException {
if (similarityThreshold != similarityThresholdCached || similarityNameBytesCached == null
|| !Arrays.equals(similarityNameBytes, similarityNameBytesCached)) {
bbis.setByteBuffer(ByteBuffer.wrap(similarityNameBytes), startOffset + 1);
- String similarityName;
- try {
- similarityName = utf8SerDer.deserialize(dis);
- } catch (HyracksDataException e) {
- throw new AlgebricksException(e);
- }
+ String similarityName = utf8SerDer.deserialize(dis);
similarityNameBytesCached = Arrays.copyOfRange(similarityNameBytes, startOffset, len);
similarityFiltersCached = SimilarityFiltersFactory.getSimilarityFilters(similarityName,
similarityThreshold);
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/52671a2c/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/common/SimilarityJaccardCheckEvaluator.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/common/SimilarityJaccardCheckEvaluator.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/common/SimilarityJaccardCheckEvaluator.java
index f31b289..bcbaf0c 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/common/SimilarityJaccardCheckEvaluator.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/common/SimilarityJaccardCheckEvaluator.java
@@ -28,7 +28,6 @@ import org.apache.asterix.om.types.AOrderedListType;
import org.apache.asterix.om.types.BuiltinType;
import org.apache.asterix.om.types.EnumDeserializer;
import org.apache.asterix.runtime.evaluators.functions.BinaryHashMap.BinaryEntry;
-import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluator;
import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
import org.apache.hyracks.api.context.IHyracksTaskContext;
@@ -54,7 +53,7 @@ public class SimilarityJaccardCheckEvaluator extends SimilarityJaccardEvaluator
protected final AOrderedListType listType = new AOrderedListType(BuiltinType.ANY, "list");
public SimilarityJaccardCheckEvaluator(IScalarEvaluatorFactory[] args, IHyracksTaskContext context)
- throws AlgebricksException {
+ throws HyracksDataException {
super(args, context);
jaccThreshEval = args[2].createScalarEvaluator(context);
listBuilder = new OrderedListBuilder();
@@ -62,7 +61,7 @@ public class SimilarityJaccardCheckEvaluator extends SimilarityJaccardEvaluator
}
@Override
- public void evaluate(IFrameTupleReference tuple, IPointable result) throws AlgebricksException {
+ public void evaluate(IFrameTupleReference tuple, IPointable result) throws HyracksDataException {
resultStorage.reset();
firstOrdListEval.evaluate(tuple, argPtr1);
@@ -86,7 +85,7 @@ public class SimilarityJaccardCheckEvaluator extends SimilarityJaccardEvaluator
result.set(resultStorage);
return;
}
- if (prepareLists(argPtr1, argPtr2, firstTypeTag)) {
+ if (prepareLists(argPtr1, argPtr2)) {
jaccSim = computeResult();
} else {
jaccSim = 0.0f;
@@ -94,7 +93,7 @@ public class SimilarityJaccardCheckEvaluator extends SimilarityJaccardEvaluator
try {
writeResult(jaccSim);
} catch (IOException e) {
- throw new AlgebricksException(e);
+ throw new HyracksDataException(e);
}
result.set(resultStorage);
}
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/52671a2c/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/common/SimilarityJaccardEvaluator.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/common/SimilarityJaccardEvaluator.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/common/SimilarityJaccardEvaluator.java
index 01c4b6b..01acf25 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/common/SimilarityJaccardEvaluator.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/common/SimilarityJaccardEvaluator.java
@@ -27,12 +27,13 @@ import org.apache.asterix.dataflow.data.nontagged.hash.ListItemBinaryHashFunctio
import org.apache.asterix.formats.nontagged.AqlSerializerDeserializerProvider;
import org.apache.asterix.om.base.AFloat;
import org.apache.asterix.om.base.AMutableFloat;
+import org.apache.asterix.runtime.exceptions.TypeMismatchException;
+import org.apache.asterix.om.functions.AsterixBuiltinFunctions;
import org.apache.asterix.om.types.ATypeTag;
import org.apache.asterix.om.types.BuiltinType;
import org.apache.asterix.om.types.EnumDeserializer;
import org.apache.asterix.runtime.evaluators.functions.BinaryHashMap;
import org.apache.asterix.runtime.evaluators.functions.BinaryHashMap.BinaryEntry;
-import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluator;
import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
import org.apache.hyracks.api.context.IHyracksTaskContext;
@@ -89,7 +90,7 @@ public class SimilarityJaccardEvaluator implements IScalarEvaluator {
protected final boolean ignoreCase = true;
public SimilarityJaccardEvaluator(IScalarEvaluatorFactory[] args, IHyracksTaskContext context)
- throws AlgebricksException {
+ throws HyracksDataException {
firstOrdListEval = args[0].createScalarEvaluator(context);
secondOrdListEval = args[1].createScalarEvaluator(context);
byte[] emptyValBuf = new byte[8];
@@ -98,7 +99,7 @@ public class SimilarityJaccardEvaluator implements IScalarEvaluator {
}
@Override
- public void evaluate(IFrameTupleReference tuple, IPointable result) throws AlgebricksException {
+ public void evaluate(IFrameTupleReference tuple, IPointable result) throws HyracksDataException {
resultStorage.reset();
firstOrdListEval.evaluate(tuple, argPtr1);
@@ -118,7 +119,7 @@ public class SimilarityJaccardEvaluator implements IScalarEvaluator {
result.set(resultStorage);
return;
}
- if (prepareLists(argPtr1, argPtr2, firstTypeTag)) {
+ if (prepareLists(argPtr1, argPtr2)) {
jaccSim = computeResult();
} else {
jaccSim = 0.0f;
@@ -126,18 +127,14 @@ public class SimilarityJaccardEvaluator implements IScalarEvaluator {
try {
writeResult(jaccSim);
} catch (IOException e) {
- throw new AlgebricksException(e);
+ throw new HyracksDataException(e);
}
result.set(resultStorage);
}
- protected boolean prepareLists(IPointable left, IPointable right, ATypeTag argType) throws AlgebricksException {
- try {
- firstListIter.reset(left.getByteArray(), left.getStartOffset());
- secondListIter.reset(right.getByteArray(), right.getStartOffset());
- } catch (HyracksDataException e) {
- throw new AlgebricksException(e);
- }
+ protected boolean prepareLists(IPointable left, IPointable right) throws HyracksDataException {
+ firstListIter.reset(left.getByteArray(), left.getStartOffset());
+ secondListIter.reset(right.getByteArray(), right.getStartOffset());
// Check for special case where one of the lists is empty, since list
// types won't match.
if (firstListIter.size() == 0 || secondListIter.size() == 0) {
@@ -147,7 +144,7 @@ public class SimilarityJaccardEvaluator implements IScalarEvaluator {
return true;
}
- protected float computeResult() throws AlgebricksException {
+ protected float computeResult() throws HyracksDataException {
// We will subtract the intersection size later to get the real union size.
int firstListSize = firstListIter.size();
int secondListSize = secondListIter.size();
@@ -161,18 +158,14 @@ public class SimilarityJaccardEvaluator implements IScalarEvaluator {
ATypeTag probeItemTypeTag = (probeList == firstListIter) ? firstItemTypeTag : secondItemTypeTag;
setHashMap(buildItemTypeTag, probeItemTypeTag);
- try {
- buildHashMap(buildList);
- int intersectionSize = probeHashMap(probeList, buildListSize, probeListSize);
- // Special indicator for the "check" version of jaccard.
- if (intersectionSize < 0) {
- return -1;
- }
- unionSize -= intersectionSize;
- return (float) intersectionSize / (float) unionSize;
- } catch (HyracksDataException e) {
- throw new AlgebricksException(e);
+ buildHashMap(buildList);
+ int intersectionSize = probeHashMap(probeList, buildListSize, probeListSize);
+ // Special indicator for the "check" version of jaccard.
+ if (intersectionSize < 0) {
+ return -1;
}
+ unionSize -= intersectionSize;
+ return (float) intersectionSize / (float) unionSize;
}
protected void buildHashMap(AbstractAsterixListIterator buildIter) throws HyracksDataException {
@@ -239,7 +232,7 @@ public class SimilarityJaccardEvaluator implements IScalarEvaluator {
hashMap = new BinaryHashMap(TABLE_SIZE, TABLE_FRAME_SIZE, putHashFunc, getHashFunc, cmp);
}
- protected boolean checkArgTypes(ATypeTag typeTag1, ATypeTag typeTag2) throws AlgebricksException {
+ protected boolean checkArgTypes(ATypeTag typeTag1, ATypeTag typeTag2) throws HyracksDataException {
switch (typeTag1) {
case ORDEREDLIST: {
firstListIter = fstOrdListIter;
@@ -250,7 +243,8 @@ public class SimilarityJaccardEvaluator implements IScalarEvaluator {
break;
}
default: {
- throw new AlgebricksException("Invalid types " + typeTag1 + " given as arguments to jaccard.");
+ throw new TypeMismatchException(AsterixBuiltinFunctions.SIMILARITY_JACCARD, 0, typeTag1.serialize(),
+ ATypeTag.SERIALIZED_ORDEREDLIST_TYPE_TAG, ATypeTag.SERIALIZED_UNORDEREDLIST_TYPE_TAG);
}
}
switch (typeTag2) {
@@ -263,7 +257,8 @@ public class SimilarityJaccardEvaluator implements IScalarEvaluator {
break;
}
default: {
- throw new AlgebricksException("Invalid types " + typeTag2 + " given as arguments to jaccard.");
+ throw new TypeMismatchException(AsterixBuiltinFunctions.SIMILARITY_JACCARD, 1, typeTag2.serialize(),
+ ATypeTag.SERIALIZED_ORDEREDLIST_TYPE_TAG, ATypeTag.SERIALIZED_UNORDEREDLIST_TYPE_TAG);
}
}
return true;
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/52671a2c/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/common/SimilarityJaccardPrefixEvaluator.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/common/SimilarityJaccardPrefixEvaluator.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/common/SimilarityJaccardPrefixEvaluator.java
index 5ab9e35..d1060c6 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/common/SimilarityJaccardPrefixEvaluator.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/common/SimilarityJaccardPrefixEvaluator.java
@@ -32,11 +32,11 @@ import org.apache.asterix.fuzzyjoin.similarity.SimilarityFiltersJaccard;
import org.apache.asterix.fuzzyjoin.similarity.SimilarityMetric;
import org.apache.asterix.om.base.AFloat;
import org.apache.asterix.om.base.AMutableFloat;
+import org.apache.asterix.om.functions.AsterixBuiltinFunctions;
import org.apache.asterix.om.types.ATypeTag;
import org.apache.asterix.om.types.BuiltinType;
-import org.apache.asterix.om.types.EnumDeserializer;
import org.apache.asterix.om.types.hierachy.ATypeHierarchy;
-import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
+import org.apache.asterix.runtime.exceptions.TypeMismatchException;
import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluator;
import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
import org.apache.hyracks.api.context.IHyracksTaskContext;
@@ -76,7 +76,7 @@ public class SimilarityJaccardPrefixEvaluator implements IScalarEvaluator {
.getSerializerDeserializer(BuiltinType.AFLOAT);
public SimilarityJaccardPrefixEvaluator(IScalarEvaluatorFactory[] args, IHyracksTaskContext context)
- throws AlgebricksException {
+ throws HyracksDataException {
evalLen1 = args[0].createScalarEvaluator(context);
evalTokens1 = args[1].createScalarEvaluator(context);
evalLen2 = args[2].createScalarEvaluator(context);
@@ -86,7 +86,7 @@ public class SimilarityJaccardPrefixEvaluator implements IScalarEvaluator {
}
@Override
- public void evaluate(IFrameTupleReference tuple, IPointable result) throws AlgebricksException {
+ public void evaluate(IFrameTupleReference tuple, IPointable result) throws HyracksDataException {
resultStorage.reset();
// similarity threshold
sim = 0;
@@ -100,21 +100,11 @@ public class SimilarityJaccardPrefixEvaluator implements IScalarEvaluator {
}
evalLen1.evaluate(tuple, inputVal);
- int length1 = 0;
- try {
- length1 = ATypeHierarchy.getIntegerValue(inputVal.getByteArray(), inputVal.getStartOffset());
- } catch (HyracksDataException e1) {
- throw new AlgebricksException(e1);
- }
-
+ int length1 = ATypeHierarchy.getIntegerValue(AsterixBuiltinFunctions.SIMILARITY_JACCARD.getName(), 0,
+ inputVal.getByteArray(), inputVal.getStartOffset());
evalLen2.evaluate(tuple, inputVal);
- int length2 = 0;
-
- try {
- length2 = ATypeHierarchy.getIntegerValue(inputVal.getByteArray(), inputVal.getStartOffset());
- } catch (HyracksDataException e1) {
- throw new AlgebricksException(e1);
- }
+ int length2 = ATypeHierarchy.getIntegerValue(AsterixBuiltinFunctions.SIMILARITY_JACCARD.getName(), 2,
+ inputVal.getByteArray(), inputVal.getStartOffset());
//
// -- - length filter - --
@@ -130,8 +120,8 @@ public class SimilarityJaccardPrefixEvaluator implements IScalarEvaluator {
int startOffset = inputVal.getStartOffset();
if (serList[startOffset] != ATypeTag.SERIALIZED_ORDEREDLIST_TYPE_TAG
&& serList[startOffset] != ATypeTag.SERIALIZED_UNORDEREDLIST_TYPE_TAG) {
- throw new AlgebricksException("Scan collection is not defined for values of type"
- + EnumDeserializer.ATYPETAGDESERIALIZER.deserialize(serList[startOffset]));
+ throw new TypeMismatchException(AsterixBuiltinFunctions.SIMILARITY_JACCARD, 1, serList[startOffset],
+ ATypeTag.SERIALIZED_ORDEREDLIST_TYPE_TAG, ATypeTag.SERIALIZED_UNORDEREDLIST_TYPE_TAG);
}
int lengthTokens1;
@@ -145,15 +135,11 @@ public class SimilarityJaccardPrefixEvaluator implements IScalarEvaluator {
try {
itemOffset = AOrderedListSerializerDeserializer.getItemOffset(serList, startOffset, i);
} catch (AsterixException e) {
- throw new AlgebricksException(e);
+ throw new HyracksDataException(e);
}
-
- try {
- token = ATypeHierarchy.getIntegerValueWithDifferentTypeTagPosition(serList, itemOffset,
+ token = ATypeHierarchy.getIntegerValueWithDifferentTypeTagPosition(
+ AsterixBuiltinFunctions.SIMILARITY_JACCARD.getName(), 1, serList, itemOffset,
startOffset + 1);
- } catch (HyracksDataException e) {
- throw new AlgebricksException(e);
- }
tokens1.add(token);
}
} else {
@@ -167,15 +153,12 @@ public class SimilarityJaccardPrefixEvaluator implements IScalarEvaluator {
try {
itemOffset = AUnorderedListSerializerDeserializer.getItemOffset(serList, startOffset, i);
} catch (AsterixException e) {
- throw new AlgebricksException(e);
+ throw new HyracksDataException(e);
}
- try {
- token = ATypeHierarchy.getIntegerValueWithDifferentTypeTagPosition(serList, itemOffset,
+ token = ATypeHierarchy.getIntegerValueWithDifferentTypeTagPosition(
+ AsterixBuiltinFunctions.SIMILARITY_JACCARD.getName(), 1, serList, itemOffset,
startOffset + 1);
- } catch (HyracksDataException e) {
- throw new AlgebricksException(e);
- }
tokens1.add(token);
}
}
@@ -192,8 +175,8 @@ public class SimilarityJaccardPrefixEvaluator implements IScalarEvaluator {
startOffset = inputVal.getStartOffset();
if (serList[startOffset] != ATypeTag.SERIALIZED_ORDEREDLIST_TYPE_TAG
&& serList[startOffset] != ATypeTag.SERIALIZED_UNORDEREDLIST_TYPE_TAG) {
- throw new AlgebricksException("Scan collection is not defined for values of type"
- + EnumDeserializer.ATYPETAGDESERIALIZER.deserialize(serList[startOffset]));
+ throw new TypeMismatchException(AsterixBuiltinFunctions.SIMILARITY_JACCARD, 3, serList[startOffset],
+ ATypeTag.SERIALIZED_ORDEREDLIST_TYPE_TAG, ATypeTag.SERIALIZED_UNORDEREDLIST_TYPE_TAG);
}
int lengthTokens2;
@@ -208,15 +191,11 @@ public class SimilarityJaccardPrefixEvaluator implements IScalarEvaluator {
try {
itemOffset = AOrderedListSerializerDeserializer.getItemOffset(serList, startOffset, i);
} catch (AsterixException e) {
- throw new AlgebricksException(e);
+ throw new HyracksDataException(e);
}
-
- try {
- token = ATypeHierarchy.getIntegerValueWithDifferentTypeTagPosition(serList, itemOffset,
+ token = ATypeHierarchy.getIntegerValueWithDifferentTypeTagPosition(
+ AsterixBuiltinFunctions.SIMILARITY_JACCARD.getName(), 3, serList, itemOffset,
startOffset + 1);
- } catch (HyracksDataException e) {
- throw new AlgebricksException(e);
- }
tokens2.add(token);
}
} else {
@@ -230,15 +209,11 @@ public class SimilarityJaccardPrefixEvaluator implements IScalarEvaluator {
try {
itemOffset = AUnorderedListSerializerDeserializer.getItemOffset(serList, startOffset, i);
} catch (AsterixException e) {
- throw new AlgebricksException(e);
+ throw new HyracksDataException(e);
}
-
- try {
- token = ATypeHierarchy.getIntegerValueWithDifferentTypeTagPosition(serList, itemOffset,
+ token = ATypeHierarchy.getIntegerValueWithDifferentTypeTagPosition(
+ AsterixBuiltinFunctions.SIMILARITY_JACCARD.getName(), 3, serList, itemOffset,
startOffset + 1);
- } catch (HyracksDataException e) {
- throw new AlgebricksException(e);
- }
tokens2.add(token);
}
}
@@ -249,13 +224,8 @@ public class SimilarityJaccardPrefixEvaluator implements IScalarEvaluator {
// -- - token prefix - --
evalTokenPrefix.evaluate(tuple, inputVal);
- int tokenPrefix = 0;
-
- try {
- tokenPrefix = ATypeHierarchy.getIntegerValue(inputVal.getByteArray(), inputVal.getStartOffset());
- } catch (HyracksDataException e) {
- throw new AlgebricksException(e);
- }
+ int tokenPrefix = ATypeHierarchy.getIntegerValue(AsterixBuiltinFunctions.SIMILARITY_JACCARD.getName(), 4,
+ inputVal.getByteArray(), inputVal.getStartOffset());
//
// -- - position filter - --
@@ -281,12 +251,12 @@ public class SimilarityJaccardPrefixEvaluator implements IScalarEvaluator {
try {
writeResult();
} catch (IOException e) {
- throw new AlgebricksException(e);
+ throw new HyracksDataException(e);
}
result.set(resultStorage);
}
- public void writeResult() throws AlgebricksException, IOException {
+ public void writeResult() throws IOException {
res.setValue(sim);
reusSerde.serialize(res, out);
}
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/52671a2c/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/common/SimilarityJaccardSortedCheckEvaluator.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/common/SimilarityJaccardSortedCheckEvaluator.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/common/SimilarityJaccardSortedCheckEvaluator.java
index d0b0f7d..19e9395 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/common/SimilarityJaccardSortedCheckEvaluator.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/common/SimilarityJaccardSortedCheckEvaluator.java
@@ -19,7 +19,6 @@
package org.apache.asterix.runtime.evaluators.common;
import org.apache.asterix.fuzzyjoin.similarity.SimilarityMetricJaccard;
-import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
import org.apache.hyracks.api.context.IHyracksTaskContext;
import org.apache.hyracks.api.exceptions.HyracksDataException;
@@ -29,16 +28,12 @@ public class SimilarityJaccardSortedCheckEvaluator extends SimilarityJaccardChec
protected final SimilarityMetricJaccard jaccard = new SimilarityMetricJaccard();
public SimilarityJaccardSortedCheckEvaluator(IScalarEvaluatorFactory[] args, IHyracksTaskContext context)
- throws AlgebricksException {
+ throws HyracksDataException {
super(args, context);
}
@Override
- protected float computeResult() throws AlgebricksException {
- try {
- return jaccard.getSimilarity(firstListIter, secondListIter, jaccThresh);
- } catch (HyracksDataException e) {
- throw new AlgebricksException(e);
- }
+ protected float computeResult() throws HyracksDataException {
+ return jaccard.getSimilarity(firstListIter, secondListIter, jaccThresh);
}
}
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/52671a2c/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/common/SimilarityJaccardSortedEvaluator.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/common/SimilarityJaccardSortedEvaluator.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/common/SimilarityJaccardSortedEvaluator.java
index 242a59b..d40cb67 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/common/SimilarityJaccardSortedEvaluator.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/common/SimilarityJaccardSortedEvaluator.java
@@ -19,7 +19,6 @@
package org.apache.asterix.runtime.evaluators.common;
import org.apache.asterix.fuzzyjoin.similarity.SimilarityMetricJaccard;
-import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
import org.apache.hyracks.api.context.IHyracksTaskContext;
import org.apache.hyracks.api.exceptions.HyracksDataException;
@@ -30,16 +29,12 @@ public class SimilarityJaccardSortedEvaluator extends SimilarityJaccardEvaluator
protected final SimilarityMetricJaccard jaccard = new SimilarityMetricJaccard();
public SimilarityJaccardSortedEvaluator(IScalarEvaluatorFactory[] args, IHyracksTaskContext context)
- throws AlgebricksException {
+ throws HyracksDataException {
super(args, context);
}
@Override
- protected float computeResult() throws AlgebricksException {
- try {
- return jaccard.getSimilarity(firstListIter, secondListIter);
- } catch (HyracksDataException e) {
- throw new AlgebricksException(e);
- }
+ protected float computeResult() throws HyracksDataException {
+ return jaccard.getSimilarity(firstListIter, secondListIter);
}
}
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/52671a2c/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/common/WordTokensEvaluator.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/common/WordTokensEvaluator.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/common/WordTokensEvaluator.java
index faace0e..e51d5cf 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/common/WordTokensEvaluator.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/common/WordTokensEvaluator.java
@@ -24,10 +24,10 @@ import java.io.IOException;
import org.apache.asterix.builders.OrderedListBuilder;
import org.apache.asterix.om.types.AOrderedListType;
import org.apache.asterix.om.types.BuiltinType;
-import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
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.VoidPointable;
import org.apache.hyracks.data.std.util.ArrayBackedValueStorage;
@@ -45,14 +45,14 @@ public class WordTokensEvaluator implements IScalarEvaluator {
private final AOrderedListType listType;
public WordTokensEvaluator(IScalarEvaluatorFactory[] args, IHyracksTaskContext context, IBinaryTokenizer tokenizer,
- BuiltinType itemType) throws AlgebricksException {
+ BuiltinType itemType) throws HyracksDataException {
stringEval = args[0].createScalarEvaluator(context);
this.tokenizer = tokenizer;
this.listType = new AOrderedListType(itemType, null);
}
@Override
- public void evaluate(IFrameTupleReference tuple, IPointable result) throws AlgebricksException {
+ public void evaluate(IFrameTupleReference tuple, IPointable result) throws HyracksDataException {
resultStorage.reset();
stringEval.evaluate(tuple, argPtr);
tokenizer.reset(argPtr.getByteArray(), argPtr.getStartOffset(), argPtr.getLength());
@@ -64,7 +64,7 @@ public class WordTokensEvaluator implements IScalarEvaluator {
}
listBuilder.write(out, true);
} catch (IOException e) {
- throw new AlgebricksException(e);
+ throw new HyracksDataException(e);
}
result.set(resultStorage);
}
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/52671a2c/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/comparisons/AbstractComparisonEvaluator.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/comparisons/AbstractComparisonEvaluator.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/comparisons/AbstractComparisonEvaluator.java
index 0ed89dd..60fc3e0 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/comparisons/AbstractComparisonEvaluator.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/comparisons/AbstractComparisonEvaluator.java
@@ -27,7 +27,7 @@ import org.apache.asterix.om.types.ATypeTag;
import org.apache.asterix.om.types.BuiltinType;
import org.apache.asterix.om.types.EnumDeserializer;
import org.apache.asterix.om.types.hierachy.ATypeHierarchy;
-import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
+import org.apache.asterix.runtime.exceptions.UnsupportedTypeException;
import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluator;
import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
import org.apache.hyracks.api.context.IHyracksTaskContext;
@@ -59,13 +59,13 @@ public abstract class AbstractComparisonEvaluator implements IScalarEvaluator {
.getSerializerDeserializer(BuiltinType.ANULL);
public AbstractComparisonEvaluator(IScalarEvaluatorFactory evalLeftFactory,
- IScalarEvaluatorFactory evalRightFactory, IHyracksTaskContext context) throws AlgebricksException {
+ IScalarEvaluatorFactory evalRightFactory, IHyracksTaskContext context) throws HyracksDataException {
this.evalLeft = evalLeftFactory.createScalarEvaluator(context);
this.evalRight = evalRightFactory.createScalarEvaluator(context);
}
@Override
- public void evaluate(IFrameTupleReference tuple, IPointable result) throws AlgebricksException {
+ public void evaluate(IFrameTupleReference tuple, IPointable result) throws HyracksDataException {
resultStorage.reset();
// Evaluates input args.
@@ -80,19 +80,15 @@ public abstract class AbstractComparisonEvaluator implements IScalarEvaluator {
checkTotallyOrderable();
}
- try {
- // Checks whether two types are comparable
- if (comparabilityCheck()) {
- // Two types can be compared
- int r = compareResults();
- ABoolean b = getComparisonResult(r) ? ABoolean.TRUE : ABoolean.FALSE;
- serde.serialize(b, out);
- } else {
- // result:NULL - two types cannot be compared.
- nullSerde.serialize(ANull.NULL, out);
- }
- } catch (HyracksDataException e) {
- throw new AlgebricksException(e);
+ // Checks whether two types are comparable
+ if (comparabilityCheck()) {
+ // Two types can be compared
+ int r = compareResults();
+ ABoolean b = getComparisonResult(r) ? ABoolean.TRUE : ABoolean.FALSE;
+ serde.serialize(b, out);
+ } else {
+ // result:NULL - two types cannot be compared.
+ nullSerde.serialize(ANull.NULL, out);
}
result.set(resultStorage);
}
@@ -103,7 +99,7 @@ public abstract class AbstractComparisonEvaluator implements IScalarEvaluator {
// checks whether we can apply >, >=, <, and <= operations to the given type since
// these operations can not be defined for certain types.
- protected void checkTotallyOrderable() throws AlgebricksException {
+ protected void checkTotallyOrderable() throws HyracksDataException {
if (argLeft.getLength() != 0) {
ATypeTag typeTag = EnumDeserializer.ATYPETAGDESERIALIZER.deserialize(argLeft.getTag());
switch (typeTag) {
@@ -115,8 +111,7 @@ public abstract class AbstractComparisonEvaluator implements IScalarEvaluator {
case POLYGON:
case CIRCLE:
case RECTANGLE:
- throw new AlgebricksException(
- "Comparison operations (GT, GE, LT, and LE) for the " + typeTag + " type are not defined.");
+ throw new UnsupportedTypeException(ComparisonHelper.COMPARISON, argLeft.getTag());
default:
return;
}