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
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 |