Re: Ranges for well-ordered types

From: "Ian Caulfield" <ian(dot)caulfield(at)gmail(dot)com>
To: "Michael Glaesemann" <grzm(at)seespotcode(dot)net>
Cc: pgsql-hackers(at)postgresql(dot)org
Subject: Re: Ranges for well-ordered types
Date: 2006-06-10 15:54:23
Message-ID: 27bbfebe0606100854r1d22344cvf36697b58babb07a@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On 6/10/06, Michael Glaesemann <grzm(at)seespotcode(dot)net> wrote:
>
> Returning to my original example, with a "date_range" type, the table
> could be defined as:
>
> create table teachers__schools_2
> (
> teacher text not null
> , school text not null
> , period date_range not null
> , primary key (teacher, school, period)
> );
>
> The original check constraint is handled by the date_range type and
> the two unique constraints are replaced by a single primary key
> constraint. Constraints for overlapping and continuity are still
> handled using constraint triggers, but are easier to implement using
> functions available to compare ranges rather than handling beginning
> and end points individually.

I've done similar date range things by creating a composite type consisting
of the lower and upper bounds, and then implementing a btree opclass where
the comparator returns 0 if two ranges overlap - this allows a current btree
index to enforce non-overlapping ranges, and allows indexed lookup of which
range contains a particular value.

Not sure whether this covers your scenario, but it works fairly well for me
:)

Ian

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Martijn van Oosterhout 2006-06-10 16:11:02 Re: How to avoid transaction ID wrap
Previous Message Michael Glaesemann 2006-06-10 14:51:58 Ranges for well-ordered types