@Override public IJObject access(IVisitablePointable pointable, IObjectPool<IJObject, IAType> objectPool) throws HyracksDataException { byte[] b = pointable.getByteArray(); int s = pointable.getStartOffset(); long v = AInt64SerializerDeserializer.getLong(b, s + 1); IJObject jObject = objectPool.allocate(BuiltinType.AINT64); ((JLong) jObject).setValue(v); return jObject; }
public static void printDayTimeDurationString(byte[] b, int s, int l, PrintStream ps) throws HyracksDataException { boolean positive = true; long milliseconds = AInt64SerializerDeserializer.getLong(b, s + 1); // set the negative flag. "||" is necessary in case that months field is not there (so it is 0) if (milliseconds < 0) { milliseconds *= -1; positive = false; } int millisecond = gCalInstance.getDurationMillisecond(milliseconds); int second = gCalInstance.getDurationSecond(milliseconds); int minute = gCalInstance.getDurationMinute(milliseconds); int hour = gCalInstance.getDurationHour(milliseconds); int day = gCalInstance.getDurationDay(milliseconds); if (!positive) { ps.print("-"); } try { ps.print("P"); if (day != 0) { WriteValueTools.writeInt(day, ps); ps.print("D"); } if (hour != 0 || minute != 0 || second != 0 || millisecond != 0) { ps.print("T"); } if (hour != 0) { WriteValueTools.writeInt(hour, ps); ps.print("H"); } if (minute != 0) { WriteValueTools.writeInt(minute, ps); ps.print("M"); } if (second != 0 || millisecond != 0) { WriteValueTools.writeInt(second, ps); } if (millisecond > 0) { ps.print("."); WriteValueTools.writeInt(millisecond, ps); } if (second != 0 || millisecond != 0) { ps.print("S"); } } catch (IOException e) { throw new HyracksDataException(e); } }
public static void printDateTimeString(byte[] b, int s, int l, PrintStream ps) throws HyracksDataException { long chrononTime = AInt64SerializerDeserializer.getLong(b, s + 1); try { gCalInstance.getExtendStringRepUntilField( chrononTime, 0, ps, GregorianCalendarSystem.Fields.YEAR, GregorianCalendarSystem.Fields.MILLISECOND, true); } catch (IOException e) { throw new HyracksDataException(e); } }
protected void processPartialResults(IFrameTupleReference tuple) throws AlgebricksException { if (skipStep()) { return; } inputVal.reset(); eval.evaluate(tuple); byte[] serBytes = inputVal.getByteArray(); ATypeTag typeTag = EnumDeserializer.ATYPETAGDESERIALIZER.deserialize(serBytes[0]); switch (typeTag) { case NULL: { processNull(); break; } case SYSTEM_NULL: { // Ignore and return. break; } case RECORD: { // Expected. aggType = ATypeTag.DOUBLE; int nullBitmapSize = 0; int offset1 = ARecordSerializerDeserializer.getFieldOffsetById( serBytes, SUM_FIELD_ID, nullBitmapSize, false); sum += ADoubleSerializerDeserializer.getDouble(serBytes, offset1); int offset2 = ARecordSerializerDeserializer.getFieldOffsetById( serBytes, COUNT_FIELD_ID, nullBitmapSize, false); count += AInt64SerializerDeserializer.getLong(serBytes, offset2); break; } default: { throw new AlgebricksException( "Global-Avg is not defined for values of type " + EnumDeserializer.ATYPETAGDESERIALIZER.deserialize(serBytes[0])); } } }
protected void processDataValues(IFrameTupleReference tuple) throws AlgebricksException { if (skipStep()) { return; } inputVal.reset(); eval.evaluate(tuple); ATypeTag typeTag = EnumDeserializer.ATYPETAGDESERIALIZER.deserialize(inputVal.getByteArray()[0]); if (typeTag == ATypeTag.NULL) { processNull(); return; } else if (aggType == ATypeTag.SYSTEM_NULL) { aggType = typeTag; } else if (typeTag != ATypeTag.SYSTEM_NULL && !ATypeHierarchy.isCompatible(typeTag, aggType)) { throw new AlgebricksException( "Unexpected type " + typeTag + " in aggregation input stream. Expected type " + aggType + "."); } else if (ATypeHierarchy.canPromote(aggType, typeTag)) { aggType = typeTag; } ++count; switch (typeTag) { case INT8: { byte val = AInt8SerializerDeserializer.getByte(inputVal.getByteArray(), 1); sum += val; break; } case INT16: { short val = AInt16SerializerDeserializer.getShort(inputVal.getByteArray(), 1); sum += val; break; } case INT32: { int val = AInt32SerializerDeserializer.getInt(inputVal.getByteArray(), 1); sum += val; break; } case INT64: { long val = AInt64SerializerDeserializer.getLong(inputVal.getByteArray(), 1); sum += val; break; } case FLOAT: { float val = AFloatSerializerDeserializer.getFloat(inputVal.getByteArray(), 1); sum += val; break; } case DOUBLE: { double val = ADoubleSerializerDeserializer.getDouble(inputVal.getByteArray(), 1); sum += val; break; } default: { throw new NotImplementedException("Cannot compute AVG for values of type " + typeTag); } } inputVal.reset(); }