On Wed, 2023-10-04 at 20:12 -0400, Daniel Fredouille wrote: > unnest ( anymultirange ) → setof anyrange > Expands a multirange into a set of ranges. The ranges are read out in storage > order (ascending) and therefore order cannot be relied upon.
That's not true. The order is deterministic and can be relied on. How about the attached patch, which does away with the confusing mention of "storage order"? Yours, Laurenz Albe
From e39d1b5760d6fa0ed143c13589f717846cc82574 Mon Sep 17 00:00:00 2001 From: Laurenz Albe <laurenz.a...@cybertec.at> Date: Thu, 5 Oct 2023 08:48:21 +0200 Subject: [PATCH] Clarify the result order of unnest(multirange) It is best not to mention the storage order, because that is an implementation detail and has confused at least one user, who assumed that the storage order is the order in which the constituent ranges were written in SQL. Since the sorting order is explained at the beginning of the page, it should be sufficient to say that the ranges are returned in ascending order. Discussion: https://postgr.es/m/169627213477.3727338.17653654241633692682%40wrigleys.postgresql.org --- doc/src/sgml/func.sgml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/src/sgml/func.sgml b/doc/src/sgml/func.sgml index 24ad87f910..bbb6e878ab 100644 --- a/doc/src/sgml/func.sgml +++ b/doc/src/sgml/func.sgml @@ -20121,7 +20121,7 @@ SELECT NULLIF(value, '(none)') ... </para> <para> Expands a multirange into a set of ranges. - The ranges are read out in storage order (ascending). + The ranges are read out in ascending order. </para> <para> <literal>unnest('{[1,2), [3,4)}'::int4multirange)</literal> -- 2.41.0