@Override Value getMergedValue(Database database, int dataType, boolean distinct) { Value v = null; if (value != null) { v = Aggregate.divide(value, count); } return v == null ? ValueNull.INSTANCE : v.convertTo(dataType); } }
public Date getDate() { return ((ValueDate) convertTo(Value.DATE)).getDate(); }
public Timestamp getTimestamp() { return ((ValueTimestamp) convertTo(Value.TIMESTAMP)).getTimestamp(); }
public int getInt() { return ((ValueInt) convertTo(Value.INT)).getInt(); }
public Time getTime() { return ((ValueTime) convertTo(Value.TIME)).getTime(); }
public byte getByte() { return ((ValueByte) convertTo(Value.BYTE)).getByte(); }
public BigDecimal getBigDecimal() { return ((ValueDecimal) convertTo(Value.DECIMAL)).getBigDecimal(); }
public double getDouble() { return ((ValueDouble) convertTo(Value.DOUBLE)).getDouble(); }
private Object[] get() { return (Object[]) value.convertTo(Value.ARRAY).getObject(); }
public Boolean getBoolean() { return ((ValueBoolean) convertTo(Value.BOOLEAN)).getBoolean(); }
public byte[] getBytesNoCopy() { return ((ValueBytes) convertTo(Value.BYTES)).getBytesNoCopy(); }
@Override public Value getValue(ServerSession session) { Value v = condition.getValue(session); if (v == ValueNull.INSTANCE) { return v; } return v.convertTo(Value.BOOLEAN).negate(); }
@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); }
@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) { ValueTime t = (ValueTime) v.convertTo(Value.TIME); return ValueTime.fromNanos(nanos + t.getNanos()); }
@Override public Value subtract(Value v) { ValueTime t = (ValueTime) v.convertTo(Value.TIME); return ValueTime.fromNanos(nanos - t.getNanos()); }
@Override public Value subtract(Value v) { ValueTimestamp t = (ValueTimestamp) v.convertTo(Value.TIMESTAMP); long d1 = DateTimeUtils.absoluteDayFromDateValue(dateValue); long d2 = DateTimeUtils.absoluteDayFromDateValue(t.dateValue); return DateTimeUtils.normalizeTimestamp(d1 - d2, nanos - t.nanos); }
@Override public Value add(Value v) { ValueTimestamp t = (ValueTimestamp) v.convertTo(Value.TIMESTAMP); long d1 = DateTimeUtils.absoluteDayFromDateValue(dateValue); long d2 = DateTimeUtils.absoluteDayFromDateValue(t.dateValue); return DateTimeUtils.normalizeTimestamp(d1 + d2, nanos + t.nanos); }
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; } }