public Date getDate() { return convertTo(Value.DATE).getDate(); }
public int getInt() { return convertTo(Value.INT).getInt(); }
public Time getTime() { return convertTo(Value.TIME).getTime(); }
public Timestamp getTimestamp() { return convertTo(Value.TIMESTAMP).getTimestamp(); }
public byte[] getBytesNoCopy() { return convertTo(Value.BYTES).getBytesNoCopy(); }
public BigDecimal getBigDecimal() { return convertTo(Value.DECIMAL).getBigDecimal(); }
public Boolean getBoolean() { return convertTo(Value.BOOLEAN).getBoolean(); }
public float getFloat() { return convertTo(Value.FLOAT).getFloat(); }
public long getLong() { return convertTo(Value.LONG).getLong(); }
public byte getByte() { return convertTo(Value.BYTE).getByte(); }
public double getDouble() { return convertTo(Value.DOUBLE).getDouble(); }
@Override public Value getValue(Session session) { Value v = condition.getValue(session); if (v == ValueNull.INSTANCE) { return v; } return v.convertTo(Value.BOOLEAN).negate(); }
@Override public Value add(Value v) { ValueTime t = (ValueTime) v.convertTo(TIME); return ValueTime.fromNanos(nanos + t.getNanos()); }
@Override public Value subtract(Value v) { ValueTime t = (ValueTime) v.convertTo(TIME); return ValueTime.fromNanos(nanos - t.getNanos()); }
@Override Value getValue(Database database, int dataType, boolean distinct) { if (distinct) { if (distinctValues != null) { count = distinctValues.size(); } else { count = 0; } } Value v = ValueLong.get(count); return v.convertTo(dataType); }
private long getTime(Value value) { int type; type = value.getType(); switch (type) { case Value.DATE: case Value.TIME: case Value.TIMESTAMP: ValueTimestamp v = (ValueTimestamp) value.convertTo(Value.TIMESTAMP); return v.getTimestamp().getTime(); default: throw new RuleEvaluateException("Invalid type for " + getClass().getName()); } } }
@Override Value getValue(Database database, int dataType, boolean distinct) { if (distinct) { throw DbException.throwInternalError(); } Value v = ValueLong.get(count); return v == null ? ValueNull.INSTANCE : v.convertTo(dataType); }
@Override public Value add(Value v) { ValueTimestamp t = (ValueTimestamp) v.convertTo(TIMESTAMP); long d1 = DateTimeUtils.absoluteDayFromDateValue(dateValue); long d2 = DateTimeUtils.absoluteDayFromDateValue(t.dateValue); return DateTimeUtils.normalizeTimestamp(d1 + d2, timeNanos + t.timeNanos); }
@Override public Value subtract(Value v) { ValueTimestamp t = (ValueTimestamp) v.convertTo(TIMESTAMP); long d1 = DateTimeUtils.absoluteDayFromDateValue(dateValue); long d2 = DateTimeUtils.absoluteDayFromDateValue(t.dateValue); return DateTimeUtils.normalizeTimestamp(d1 - d2, timeNanos - t.timeNanos); }
private static Value divide(Value a, long by) { if (by == 0) { return ValueNull.INSTANCE; } int type = Value.getHigherOrder(a.getType(), Value.LONG); Value b = ValueLong.get(by).convertTo(type); a = a.convertTo(type).divide(b); return a; }