Thread: 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.