Sorting composite types

Started by Miles Elamover 6 years ago2 messagesgeneral
Jump to latest
#1Miles Elam
miles.elam@productops.com

Is there any way to define a natural sorting order for composite types? For
example, let's say you have a type like:

CREATE TYPE contrived AS (
i1 integer,
i2 integer
);

The semantics of this contrived type are that the natural order is
ascending NULLS first for i1 and descending NULLS last for i2. I know I can
do an ORDER BY per query and specify each part separately, but if my
contrived example has a perceived natural sort order, is there any way to
set that in a global way so that I can simply and universally ORDER BY
my_contrived_column?

#2Laurenz Albe
laurenz.albe@cybertec.at
In reply to: Miles Elam (#1)
Re: Sorting composite types

Miles Elam wrote:

Is there any way to define a natural sorting order for composite types? For example, let's say you have a type like:

CREATE TYPE contrived AS (
i1 integer,
i2 integer
);

The semantics of this contrived type are that the natural order is ascending NULLS first for i1 and descending NULLS last for i2.
I know I can do an ORDER BY per query and specify each part separately, but if my contrived example has a perceived
natural sort order, is there any way to set that in a global way so that I can simply and universally ORDER BY my_contrived_column?

You'd have to define a default b-tree operator class for the type with
operators that implement your desired sort order.

Yours,
Laurenz Albe
--
Cybertec | https://www.cybertec-postgresql.com