@Override public Datum multiply(Datum datum) { switch(datum.type()) { case INT2: case INT4: case INT8: long int8Val = datum.asInt8(); return createIntervalDatum((double)months * int8Val, (double) milliseconds * int8Val); case FLOAT4: case FLOAT8: double float8Val = datum.asFloat8(); return createIntervalDatum((double)months * float8Val, (double) milliseconds * float8Val); default: throw new InvalidOperationException("operator does not exist: " + type() + " * " + datum.type()); } }
@Override public Datum multiply(Datum datum) { switch(datum.kind()) { case INT2: case INT4: case INT8: long int8Val = datum.asInt8(); return createIntervalDatum((double)months * int8Val, (double) milliseconds * int8Val); case FLOAT4: case FLOAT8: double float8Val = datum.asFloat8(); return createIntervalDatum((double)months * float8Val, (double) milliseconds * float8Val); default: throw new InvalidOperationException("operator does not exist: " + type() + " * " + datum.type()); } }
@Override public Datum divide(Datum datum) { switch (datum.type()) { case INT2: case INT4: case INT8: long paramValueI8 = datum.asInt8(); if (!validateDivideZero(paramValueI8)) { return NullDatum.get(); } return createIntervalDatum((double) months / paramValueI8, (double) milliseconds / paramValueI8); case FLOAT4: case FLOAT8: double paramValueF8 = datum.asFloat8(); if (!validateDivideZero(paramValueF8)) { return NullDatum.get(); } return createIntervalDatum((double) months / paramValueF8, (double) milliseconds / paramValueF8); default: throw new InvalidOperationException("operator does not exist: " + type() + " / " + datum.type()); } }
@Override public Datum divide(Datum datum) { switch (datum.kind()) { case INT2: case INT4: case INT8: long paramValueI8 = datum.asInt8(); if (!validateDivideZero(paramValueI8)) { return NullDatum.get(); } return createIntervalDatum((double) months / paramValueI8, (double) milliseconds / paramValueI8); case FLOAT4: case FLOAT8: double paramValueF8 = datum.asFloat8(); if (!validateDivideZero(paramValueF8)) { return NullDatum.get(); } return createIntervalDatum((double) months / paramValueF8, (double) milliseconds / paramValueF8); default: throw new InvalidOperationException("operator does not exist: " + type() + " / " + datum.type()); } }