Re: unnesting multirange data types
Jonathan S. Katz <jkatz@postgresql.org>
From: "Jonathan S. Katz" <jkatz@postgresql.org>
To: Alvaro Herrera <alvherre@alvh.no-ip.org>
Cc: Tom Lane <tgl@sss.pgh.pa.us>,
PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2021-06-09T23:00:24Z
Lists: pgsql-hackers
On 6/9/21 4:56 PM, Alvaro Herrera wrote:
> On 2021-Jun-09, Jonathan S. Katz wrote:
>
>> I did a couple more tests around this.
>>
>> As suspected, in PL/pgSQL, there is no way to unpack or iterate over a
>> multirange type.
>
> Uh. This is disappointing; the need for some way to unnest or unpack a
> multirange was mentioned multiple times in the range_agg thread. I had
> assumed that there was some way to cast the multirange to a range array,
> or somehow convert it, but apparently that doesn't work.
Just to be pedantic with examples:
SELECT datemultirange(
daterange(current_date, current_date + 2),
daterange(current_date + 5, current_date + 7))::daterange[];
ERROR: cannot cast type datemultirange to daterange[]
LINE 1: ...2), daterange(current_date + 5, current_date + 7))::daterang...
IF there was an array to cast it into an array, we could then use the
array looping construct in PL/pgSQL, but if we could only choose one, I
think it'd be more natural/less verbose to have an "unnest".
> If the supporting pieces are mostly there, then I opine we should add
> something.
Agreed.
Jonathan
Commits
-
Fix small inconsistencies in catalog definition of multirange operators
- 4d39d4e639b4 14.0 landed
- 768ea9bcf981 15.0 landed
-
Revert 29854ee8d1 due to buildfarm failures
- 817bb0a7d1e0 14.0 landed
-
Copy-edit text for the pg_terminate_backend() "timeout" parameter.
- 0aac73e6a260 14.0 cited
-
Add missing pg_description strings for pg_type entries.
- b09a64d602a1 12.0 cited
-
Fix pg_description entries for jsonb_to_record() and jsonb_to_recordset().
- a4627e8fd479 9.6.0 cited
-
docs: clarify JSONB operator descriptions
- b852dc4cbd09 9.6.0 cited
-
Set procost to 10 for each of the pg_foo_is_visible() functions.
- a80889a7359e 9.3.0 cited
-
Make use of LATERAL in information_schema.sequences view.
- c246eb5aafe6 9.3.0 cited
-
Add pg_trigger_depth() function
- 74ab96a45ef6 9.2.0 cited
-
Add database comments to template0 and postgres databases, and improve
- ddd6ff289f25 9.1.0 cited