boolean comparabilityCheck() { // Checks whether two types are comparable or not ATypeTag typeTag1 = EnumDeserializer.ATYPETAGDESERIALIZER.deserialize(argLeft.getTag()); ATypeTag typeTag2 = EnumDeserializer.ATYPETAGDESERIALIZER.deserialize(argRight.getTag()); // Are two types compatible, meaning that they can be compared? (e.g., compare between numeric types return ATypeHierarchy.isCompatible(typeTag1, typeTag2); }
int compare() throws HyracksDataException { ATypeTag leftTypeTag = EnumDeserializer.ATYPETAGDESERIALIZER.deserialize(argLeft.getTag()); ATypeTag rightTypeTag = EnumDeserializer.ATYPETAGDESERIALIZER.deserialize(argRight.getTag()); return ch.compare(leftTypeTag, rightTypeTag, outLeft, outRight, leftValue, rightValue); } }
protected void checkTotallyOrderable() throws HyracksDataException { if (argLeft.getLength() != 0) { ATypeTag typeTag = EnumDeserializer.ATYPETAGDESERIALIZER.deserialize(argLeft.getTag()); switch (typeTag) { case DURATION: case INTERVAL: case LINE: case POINT: case POINT3D: case POLYGON: case CIRCLE: case RECTANGLE: throw new UnsupportedTypeException(sourceLoc, ComparisonHelper.COMPARISON, argLeft.getTag()); default: return; } } }
throws HyracksDataException { positionArgEval.evaluate(tuple, positionArg); if (positionArg.getTag() == ATypeTag.SERIALIZED_MISSING_TYPE_TAG) { return RETURN_MISSING; if (!ATypeHierarchy.isCompatible(ATypeTag.DOUBLE, ATYPETAGDESERIALIZER.deserialize(positionArg.getTag())) || !listTag.isListType()) { return RETURN_NULL;
@Override public void evaluate(IFrameTupleReference tuple, IPointable result) throws HyracksDataException { // 1st arg: value to repeat repeatedValueEval.evaluate(tuple, repeatedValueArg); // 2nd arg: number of repetitions repeatEval.evaluate(tuple, repeatArg); repeatArgValue.set(repeatArg); if (!ATypeHierarchy.isCompatible(ATypeTag.DOUBLE, ATypeTag.VALUE_TYPE_MAPPING[repeatArgValue.getTag()])) { PointableHelper.setNull(result); return; } final String name = getIdentifier().getName(); final double repetitions = ATypeHierarchy.getDoubleValue(name, 1, repeatArg.getByteArray(), repeatArg.getStartOffset()); if (Double.isNaN(repetitions) || Double.isInfinite(repetitions) || Math.floor(repetitions) < repetitions || repetitions < 0) { PointableHelper.setNull(result); return; } // create list listBuilder.reset(repeatedValueListType); for (int i = 0; i < repetitions; ++i) { listBuilder.addItem(repeatedValueArg); } storage.reset(); listBuilder.write(storage.getDataOutput(), true); result.set(storage); } }
endNumEval.evaluate(tuple, end); String n = getIdentifier().getName(); ATypeTag startTag = ATYPETAGDESERIALIZER.deserialize(start.getTag()); ATypeTag endTag = ATYPETAGDESERIALIZER.deserialize(end.getTag()); ATypeTag stepTag = ATypeTag.INTEGER; double stepNum = 1; if (stepNumEval != null) { stepNumEval.evaluate(tuple, step); stepTag = ATYPETAGDESERIALIZER.deserialize(step.getTag()); if (!ATypeHierarchy.isCompatible(ATypeTag.DOUBLE, stepTag)) { PointableHelper.setNull(result);
if (!ATypeHierarchy.isCompatible(ATYPETAGDESERIALIZER.deserialize(depthArg.getTag()), ATypeTag.DOUBLE) || !listType.isListType()) { PointableHelper.setNull(result);
if (maxEval != null) { maxEval.evaluate(tuple, maxArg); ATypeTag maxTag = ATYPETAGDESERIALIZER.deserialize(maxArg.getTag()); if (maxTag == ATypeTag.MISSING) { PointableHelper.setMissing(result);