Обсуждение: Custom type where not all elements are comparable
Hi, Is it possible to define or implement a type in PostgreSQL not all values of which are comparable to each other? In particular I'm thinking of a duration type similar to the XML Schema duration type[1]. For example P2D (2 days) is less than P4D (4 days), but P1M (1 month) and P30D (30 days) are not comparable. Thanks. [1] http://www.w3.org/TR/xmlschema-2/#duration -- Markus Bertheau <twanger@bluetwanger.de>
Markus Bertheau <twanger@bluetwanger.de> writes:
> Is it possible to define or implement a type in PostgreSQL not all
> values of which are comparable to each other?
Certainly, as long as you don't expect to be able to btree-index it,
sort it, or DISTINCT it. (In theory we could probably handle DISTINCT
using hash aggregation, as long as equality behaves sanely; but that's
not implemented now.)
Probably it'd be reasonable for the comparison operators to return
NULL for a noncomparable pair of inputs.
regards, tom lane
Markus Bertheau wrote: > Is it possible to define or implement a type in PostgreSQL not all > values of which are comparable to each other? In particular I'm > thinking of a duration type similar to the XML Schema duration > type[1]. For example P2D (2 days) is less than P4D (4 days), but P1M > (1 month) and P30D (30 days) are not comparable. Smells like the interval type.