postgresql-types-0.1.2: Precise PostgreSQL types representation and driver-agnostic codecs
Safe HaskellNone
LanguageHaskell2010

PostgresqlTypes.Multirange

Synopsis

Documentation

data Multirange a Source #

Normalized representation of a multirange, which is a collection of non-overlapping, non-adjacent ranges.

PostgreSQL multirange types store multiple ranges as a single value, automatically normalizing them by combining overlapping and adjacent ranges. The ranges are stored in sorted order.

The following standard types are supported via the IsMultirangeElement instances:

  • int4multirange - Multirange Int4
  • int8multirange - Multirange Int8
  • nummultirange - Multirange Numeric
  • tsmultirange - Multirange Timestamp
  • tstzmultirange - Multirange Timestamptz
  • datemultirange - Multirange Date

You can also define your own.

PostgreSQL docs.

Instances

Instances details
Functor Multirange Source # 
Instance details

Defined in PostgresqlTypes.Multirange

Methods

fmap :: (a -> b) -> Multirange a -> Multirange b #

(<$) :: a -> Multirange b -> Multirange a #

(IsRangeElement a, Arbitrary a, Ord a) => Arbitrary (Multirange a) Source # 
Instance details

Defined in PostgresqlTypes.Multirange

IsMultirangeElement a => IsString (Multirange a) Source # 
Instance details

Defined in PostgresqlTypes.Multirange

Methods

fromString :: String -> Multirange a #

IsMultirangeElement a => Read (Multirange a) Source # 
Instance details

Defined in PostgresqlTypes.Multirange

IsMultirangeElement a => Show (Multirange a) Source # 
Instance details

Defined in PostgresqlTypes.Multirange

Eq a => Eq (Multirange a) Source # 
Instance details

Defined in PostgresqlTypes.Multirange

Methods

(==) :: Multirange a -> Multirange a -> Bool #

(/=) :: Multirange a -> Multirange a -> Bool #

Hashable a => Hashable (Multirange a) Source # 
Instance details

Defined in PostgresqlTypes.Multirange

Methods

hashWithSalt :: Int -> Multirange a -> Int #

hash :: Multirange a -> Int #

IsMultirangeElement a => IsScalar (Multirange a) Source # 
Instance details

Defined in PostgresqlTypes.Multirange

Accessors

toRangeList :: Multirange a -> [Range a] Source #

Create a list of ranges from a multirange.

toRangeVector :: Multirange a -> Vector (Range a) Source #

Create a vector of ranges from a multirange.

Constructors

normalizeFromRangeList :: Ord a => [Range a] -> Multirange a Source #

Create a multirange from a list of ranges. Performs the same normalization as PostgreSQL: 1. Removes empty ranges 2. Sorts ranges by their lower bounds 3. Merges overlapping and adjacent ranges

refineFromRangeList :: Ord a => [Range a] -> Maybe (Multirange a) Source #

Attempt to create a multirange from a list of ranges. Returns Nothing if the input list is not already normalized.