Thread: Sorting composite types

Sorting composite types

From
Miles Elam
Date:
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?

Re: Sorting composite types

From
Laurenz Albe
Date:
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
lastfor 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