public static IntervalDatum createInterval(int month, long interval) { return new IntervalDatum(month, interval); }
public static IntervalDatum createInterval(int month, long interval) { return new IntervalDatum(month, interval); }
@SuppressWarnings("unused") public static IntervalDatum createInterval(long interval) { return new IntervalDatum(interval); }
public static IntervalDatum createInterval(String intervalStr) { return new IntervalDatum(intervalStr); }
@SuppressWarnings("unused") public static IntervalDatum createInterval(long interval) { return new IntervalDatum(interval); }
private IntervalDatum createIntervalDatum(double monthValue, double millisValue) { int month = (int)(monthValue); return new IntervalDatum(month, Math.round((monthValue - (double)month) * (double)MONTH_MILLIS + millisValue)); }
private IntervalDatum createIntervalDatum(double monthValue, double millisValue) { int month = (int)(monthValue); return new IntervalDatum(month, Math.round((monthValue - (double)month) * (double)MONTH_MILLIS + millisValue)); }
@Override public EvalNode visitIntervalLiteral(Context ctx, Stack<Expr> stack, IntervalLiteral expr) throws TajoException { return new ConstEval(new IntervalDatum(expr.getExprStr())); }
@Override public EvalNode visitIntervalLiteral(Context ctx, Stack<Expr> stack, IntervalLiteral expr) throws TajoException { return new ConstEval(new IntervalDatum(expr.getExprStr())); }
@Override public IntervalDatum getInterval(int fieldId) { long pos = getFieldAddr(fieldId); int months = PlatformDependent.getInt(pos); pos += SizeOf.SIZE_OF_INT; long millisecs = PlatformDependent.getLong(pos); return new IntervalDatum(months, millisecs); }
@Override public IntervalDatum getInterval(int fieldId) { long pos = getFieldAddr(fieldId); int months = PlatformDependent.getInt(pos); pos += SizeOf.SIZE_OF_INT; long millisecs = PlatformDependent.getLong(pos); return new IntervalDatum(months, millisecs); }
@Override public Datum eval(Tuple params) { // cast to UTC timestamp Datum dateDatum = DatumFactory.createTimestamp(params.asDatum(0), getTimeZone()); int val = params.getInt4(1); if (val >= 0) { return dateDatum.plus(new IntervalDatum(val, 0)); } else { return dateDatum.minus(new IntervalDatum(-val, 0)); } } }
public IntervalDatum getInterval(int fieldId) { int pos = checkNullAndGetOffset(fieldId); int months = buffer.getInt(pos); long millisecs = buffer.getLong(pos + SizeOf.SIZE_OF_INT); return new IntervalDatum(months, millisecs); }
public IntervalDatum getInterval(int fieldId) { int pos = checkNullAndGetOffset(fieldId); int months = buffer.getInt(pos); long millisecs = buffer.getLong(pos + SizeOf.SIZE_OF_INT); return new IntervalDatum(months, millisecs); }
@Override public Datum eval(Tuple params) { // cast to UTC timestamp Datum dateDatum = DatumFactory.createTimestamp(params.asDatum(0), getTimeZone()); long val = params.getInt8(1); if (val >= 0) { return dateDatum.plus(new IntervalDatum(val * IntervalDatum.DAY_MILLIS)); } else { return dateDatum.minus(new IntervalDatum(0 - val * IntervalDatum.DAY_MILLIS)); } } }
@Override public Datum eval(Tuple params) { // cast to UTC timestamp Datum dateDatum = DatumFactory.createTimestamp(params.asDatum(0), getTimeZone()); int val = params.getInt4(1); if (val >= 0) { return dateDatum.plus(new IntervalDatum(val, 0)); } else { return dateDatum.minus(new IntervalDatum(-val, 0)); } } }
@Override public Datum eval(Tuple params) { // cast to UTC timestamp Datum dateDatum = DatumFactory.createTimestamp(params.asDatum(0), getTimeZone()); long val = params.getInt8(1); if (val >= 0) { return dateDatum.plus(new IntervalDatum(val * IntervalDatum.DAY_MILLIS)); } else { return dateDatum.minus(new IntervalDatum(0 - val * IntervalDatum.DAY_MILLIS)); } } }
@Override public Datum minus(Datum datum) { if (datum.type() == TajoDataTypes.Type.INTERVAL) { IntervalDatum other = (IntervalDatum) datum; return new IntervalDatum(months - other.months, milliseconds - other.milliseconds); } else { throw new InvalidOperationException("operator does not exist: " + type() + " - " + datum.type()); } }
@Override public Datum minus(Datum datum) { if (datum.kind() == TajoDataTypes.Type.INTERVAL) { IntervalDatum other = (IntervalDatum) datum; return new IntervalDatum(months - other.months, milliseconds - other.milliseconds); } else { throw new InvalidOperationException("operator does not exist: " + type() + " - " + datum.type()); } }
@Override public Datum minus(Datum datum) { switch(datum.kind()) { case INTERVAL: IntervalDatum interval = ((IntervalDatum)datum); TimeMeta tm = asTimeMeta(); tm.plusInterval(-interval.months, -interval.milliseconds); return new TimeDatum(DateTimeUtil.toTime(tm)); case TIME: return new IntervalDatum((time - ((TimeDatum)datum).time)/1000); default: throw new InvalidOperationException("operator does not exist: " + type() + " - " + datum.type()); } }