public class AqlBinaryBooleanInspectorImpl implements IBinaryBooleanInspector { public static final IBinaryBooleanInspectorFactory FACTORY = new IBinaryBooleanInspectorFactory() { private static final long serialVersionUID = 1L; @Override public IBinaryBooleanInspector createBinaryBooleanInspector(IHyracksTaskContext ctx) { return new AqlBinaryBooleanInspectorImpl(); } }; private static final byte SER_NULL_TYPE_TAG = ATypeTag.NULL.serialize(); private AqlBinaryBooleanInspectorImpl() {} @Override public boolean getBooleanValue(byte[] bytes, int offset, int length) { if (bytes[offset] == SER_NULL_TYPE_TAG) return false; /** check if the runtime type is boolean */ ATypeTag typeTag = EnumDeserializer.ATYPETAGDESERIALIZER.deserialize(bytes[offset]); if (typeTag != ATypeTag.BOOLEAN) { throw new IllegalStateException( "Runtime error: the select condition should be of the boolean type!"); } return bytes[offset + 1] == 1; } }
public void getClosedFieldValue(ARecordType recordType, int fieldId, DataOutput dOut) throws IOException, AsterixException { if (isClosedFieldNull(recordType, fieldId)) { dOut.writeByte(ATypeTag.NULL.serialize()); } else { dOut.write(getClosedFieldTag(recordType, fieldId)); dOut.write( bytes, getClosedFieldOffset(recordType, fieldId), getClosedFieldSize(recordType, fieldId)); } }
public class PrintDateDescriptor extends AbstractScalarFunctionDynamicDescriptor { private static final long serialVersionUID = 1L; public static final FunctionIdentifier FID = AsterixBuiltinFunctions.PRINT_DATE; private static final byte SER_DATE_TYPE_TAG = ATypeTag.DATE.serialize(); private static final byte SER_STRING_TYPE_TAG = ATypeTag.STRING.serialize(); private static final byte SER_NULL_TYPE_TAG = ATypeTag.NULL.serialize(); private static final DateTimeFormatUtils DT_UTILS = DateTimeFormatUtils.getInstance(); public static final IFunctionDescriptorFactory FACTORY = new IFunctionDescriptorFactory() { @Override public IFunctionDescriptor createFunctionDescriptor() { return new PrintDateDescriptor(); } }; @Override public ICopyEvaluatorFactory createEvaluatorFactory(final ICopyEvaluatorFactory[] args) throws AlgebricksException { return new ICopyEvaluatorFactory() { private static final long serialVersionUID = 1L; @Override public ICopyEvaluator createEvaluator(final IDataOutputProvider output) throws AlgebricksException { return new ICopyEvaluator() { private DataOutput out = output.getDataOutput(); private ArrayBackedValueStorage argOut0 = new ArrayBackedValueStorage(); private ArrayBackedValueStorage argOut1 = new ArrayBackedValueStorage(); private ICopyEvaluator eval0 = args[0].createEvaluator(argOut0); private ICopyEvaluator eval1 = args[1].createEvaluator(argOut1); @SuppressWarnings("unchecked") private ISerializerDeserializer<ANull> nullSerde = AqlSerializerDeserializerProvider.INSTANCE.getSerializerDeserializer( BuiltinType.ANULL); private StringBuilder sbder = new StringBuilder(); @Override public void evaluate(IFrameTupleReference tuple) throws AlgebricksException { argOut0.reset(); eval0.evaluate(tuple); argOut1.reset(); eval1.evaluate(tuple); try { if (argOut0.getByteArray()[0] == SER_NULL_TYPE_TAG || argOut1.getByteArray()[0] == SER_NULL_TYPE_TAG) { nullSerde.serialize(ANull.NULL, out); return; } if (argOut0.getByteArray()[0] != SER_DATE_TYPE_TAG || argOut1.getByteArray()[0] != SER_STRING_TYPE_TAG) { throw new AlgebricksException( getIdentifier().getName() + ": expects (DATE, STRING) but got (" + EnumDeserializer.ATYPETAGDESERIALIZER.deserialize( argOut0.getByteArray()[0]) + ", " + EnumDeserializer.ATYPETAGDESERIALIZER.deserialize( argOut1.getByteArray()[0]) + ")"); } long chronon = ADateSerializerDeserializer.getChronon(argOut0.getByteArray(), 1) * GregorianCalendarSystem.CHRONON_OF_DAY; int formatLength = (argOut1.getByteArray()[1] & 0xff << 8) + (argOut1.getByteArray()[2] & 0xff << 0); sbder.delete(0, sbder.length()); DT_UTILS.printDateTime( chronon, 0, argOut1.getByteArray(), 3, formatLength, sbder, DateTimeParseMode.DATE_ONLY); out.writeByte(ATypeTag.STRING.serialize()); out.writeUTF(sbder.toString()); } catch (IOException ex) { throw new AlgebricksException(ex); } } }; } }; } /* (non-Javadoc) * @see edu.uci.ics.asterix.om.functions.AbstractFunctionDescriptor#getIdentifier() */ @Override public FunctionIdentifier getIdentifier() { return FID; } }
public class AYearMonthDurationConstructorDescriptor extends AbstractScalarFunctionDynamicDescriptor { private static final long serialVersionUID = 1L; private static final byte SER_STRING_TYPE_TAG = ATypeTag.STRING.serialize(); private static final byte SER_NULL_TYPE_TAG = ATypeTag.NULL.serialize(); public static final IFunctionDescriptorFactory FACTORY = new IFunctionDescriptorFactory() { @Override public IFunctionDescriptor createFunctionDescriptor() { return new AYearMonthDurationConstructorDescriptor(); } }; @Override public ICopyEvaluatorFactory createEvaluatorFactory(final ICopyEvaluatorFactory[] args) { return new ICopyEvaluatorFactory() { private static final long serialVersionUID = 1L; @Override public ICopyEvaluator createEvaluator(final IDataOutputProvider output) throws AlgebricksException { return new ICopyEvaluator() { private DataOutput out = output.getDataOutput(); private ArrayBackedValueStorage outInput = new ArrayBackedValueStorage(); private ICopyEvaluator eval = args[0].createEvaluator(outInput); private String errorMessage = "This can not be an instance of year-month-duration"; private AMutableYearMonthDuration aYearMonthDuration = new AMutableYearMonthDuration(0); @SuppressWarnings("unchecked") private ISerializerDeserializer<AYearMonthDuration> yearMonthDurationSerde = AqlSerializerDeserializerProvider.INSTANCE.getSerializerDeserializer( BuiltinType.AYEARMONTHDURATION); @SuppressWarnings("unchecked") private ISerializerDeserializer<ANull> nullSerde = AqlSerializerDeserializerProvider.INSTANCE.getSerializerDeserializer( BuiltinType.ANULL); @Override public void evaluate(IFrameTupleReference tuple) throws AlgebricksException { try { outInput.reset(); eval.evaluate(tuple); byte[] serString = outInput.getByteArray(); if (serString[0] == SER_STRING_TYPE_TAG) { int stringLength = (serString[1] & 0xff << 8) + (serString[2] & 0xff << 0); ADurationParserFactory.parseDuration( serString, 3, stringLength, aYearMonthDuration, ADurationParseOption.YEAR_MONTH); yearMonthDurationSerde.serialize(aYearMonthDuration, out); } else if (serString[0] == SER_NULL_TYPE_TAG) { nullSerde.serialize(ANull.NULL, out); } else { throw new AlgebricksException(errorMessage); } } catch (Exception e1) { throw new AlgebricksException(e1); } } }; } }; } /* (non-Javadoc) * @see edu.uci.ics.asterix.om.functions.AbstractFunctionDescriptor#getIdentifier() */ @Override public FunctionIdentifier getIdentifier() { return AsterixBuiltinFunctions.YEAR_MONTH_DURATION_CONSTRUCTOR; } }
public class StringUpperCaseDescriptor extends AbstractScalarFunctionDynamicDescriptor { private static final long serialVersionUID = 1L; public static final IFunctionDescriptorFactory FACTORY = new IFunctionDescriptorFactory() { public IFunctionDescriptor createFunctionDescriptor() { return new StringUpperCaseDescriptor(); } }; private static final byte SER_STRING_TYPE_TAG = ATypeTag.STRING.serialize(); private static final byte SER_NULL_TYPE_TAG = ATypeTag.NULL.serialize(); @Override public ICopyEvaluatorFactory createEvaluatorFactory(final ICopyEvaluatorFactory[] args) { return new ICopyEvaluatorFactory() { private static final long serialVersionUID = 1L; @Override public ICopyEvaluator createEvaluator(final IDataOutputProvider output) throws AlgebricksException { return new ICopyEvaluator() { private DataOutput out = output.getDataOutput(); private ArrayBackedValueStorage outInput = new ArrayBackedValueStorage(); private ICopyEvaluator eval = args[0].createEvaluator(outInput); private final byte stt = ATypeTag.STRING.serialize(); @SuppressWarnings("unchecked") private ISerializerDeserializer<ANull> nullSerde = AqlSerializerDeserializerProvider.INSTANCE.getSerializerDeserializer( BuiltinType.ANULL); @Override public void evaluate(IFrameTupleReference tuple) throws AlgebricksException { try { outInput.reset(); eval.evaluate(tuple); byte[] serString = outInput.getByteArray(); if (serString[0] == SER_STRING_TYPE_TAG) { byte[] bytes = outInput.getByteArray(); int len = UTF8StringPointable.getUTFLength(bytes, 1); out.writeByte(stt); StringUtils.writeUTF8Len(len, out); int pos = 3; while (pos < len + 3) { char c1 = UTF8StringPointable.charAt(bytes, pos); c1 = Character.toUpperCase(c1); pos += UTF8StringPointable.charSize(bytes, pos); StringUtils.writeCharAsModifiedUTF8(c1, out); } } else if (serString[0] == SER_NULL_TYPE_TAG) nullSerde.serialize(ANull.NULL, out); else throw new AlgebricksException( AsterixBuiltinFunctions.STRING_UPPERCASE.getName() + ": expects input type STRING/NULL but got " + EnumDeserializer.ATYPETAGDESERIALIZER.deserialize(serString[0])); } catch (IOException e1) { throw new AlgebricksException(e1); } } }; } }; } @Override public FunctionIdentifier getIdentifier() { return AsterixBuiltinFunctions.STRING_UPPERCASE; } }