Re: WIP: RangeTypes

From: Thom Brown <thom(at)linux(dot)com>
To: Jeff Davis <pgsql(at)j-davis(dot)com>
Cc: pgsql-hackers(at)postgresql(dot)org
Subject: Re: WIP: RangeTypes
Date: 2011-01-28 20:28:55
Message-ID: AANLkTimxBpR2CT8uqxyV0oJ6DOmVvi4EkfMruyjk89e5@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On 28 January 2011 07:45, Jeff Davis <pgsql(at)j-davis(dot)com> wrote:
> Updated patch.
>
> Changes:
>
>  * Documentation for operators/functions
>  * a comprehensive set of operators and functions
>  * BTree opclass
>  * Hash opclass
>  * built-in range types:
>    - PERIOD (timestamp)
>    - PERIODTZ (timestamptz)
>    - DATERANGE (date)
>    - INTRANGE (int4)
>    - NUMRANGE (numeric)
>  * added subtype float function to the API, which will be useful for
>    GiST
>  * created canonical functions for intrange and daterange, so that:
>      '[1,5]'::intrange = '[1,6)'::intrange
>  * added length() function, written in SQL as:
>      select upper($1) - lower($1)
>    which uses polymorphic "-" operator to avoid the need to
>    give the subtype subtract function and return type to the generic
>    API
>
> Open items:
>
>  * More documentation work
>  * Settle any representation/alignment concerns
>  * Should the new length() function be marked as immutable, stable,
>    or volatile? It uses the polymorphic "-" operator, and I suppose
>    someone could define a non-immutable version of that before calling
>    length(). Then again, it is likely to be inlined anyway, right?
>  * GiST
>    - docs
>    - catalog work
>    - implementation
>  * typmod support (optional)
>
> This is nearing completion. GiST is by far the most amount of effort
> remaining that I'm aware of. Comments about the API, naming,
> representation, interface, funcationality, grammar, etc. are welcome.
>
> Regards,
>        Jeff Davis

Very nice work Jeff!

This is not very graceful:

postgres=# CREATE TYPE numrange AS RANGE (SUBTYPE=numeric,
SUBTYPE_CMP=numeric_cmp);
ERROR: duplicate key value violates unique constraint
"pg_range_rgnsubtype_index"
DETAIL: Key (rngsubtype)=(1700) already exists.

Also, if I try the same, but with a different name for the type, I get
the same error. Why does that restriction exist? Can't you have
types which happen to use the exact same subtype?

--
Thom Brown
Twitter: @darkixion
IRC (freenode): dark_ixion
Registered Linux user: #516935

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Robert Haas 2011-01-28 20:39:33 Re: FPI
Previous Message Tom Lane 2011-01-28 20:11:00 Re: mingw format warnings