Class DurationArgumentFactory

  • All Implemented Interfaces:
    ArgumentFactory, ArgumentFactory.Preparable

    public class DurationArgumentFactory
    extends AbstractArgumentFactory<java.time.Duration>
    Postgres version of argument factory for Duration.

    For simplicity, this implementation makes the duration positive before proceeding. However, this can cause an ArithmeticException to be thrown. E.g., this can occur if your duration is -2^63 seconds.

    Not all Durations can be represented as intervals in Postgres. One incompatibility results from Durations that are too large. This is due to (1) Durations using a long internally, and PGIntervals using ints; and (2) the conversion of days to months or years being ambiguous. Another results from Durations being too precise; they have nanosecond precision, whereas Postgres has only microsecond. An IllegalArgumentException will be thrown in these cases. The handling of the second is subject to revision in the future; for example, it would be reasonable to have a configurable truncation option.

    • Constructor Detail

      • DurationArgumentFactory

        public DurationArgumentFactory()
    • Method Detail

      • build

        public Argument build​(java.time.Duration duration,
                              ConfigRegistry config)
        Description copied from class: AbstractArgumentFactory
        Produce an argument object for the given value. When the implementation class has accepted a given type, it must then produce an argument instance or throw an exception.
        Specified by:
        build in class AbstractArgumentFactory<java.time.Duration>
        Parameters:
        duration - the value to convert to an argument
        config - the config registry
        Returns:
        An Argument for the given value. Must not be null!