range_agg() missing support for multirange inputs - Mailing list pgsql-bugs

From Ian Campbell
Subject range_agg() missing support for multirange inputs
Date
Msg-id JNZP275MB0737BDCCB3792619F1DF04128A8C9@JNZP275MB0737.ZAFP275.PROD.OUTLOOK.COM
Whole thread Raw
List pgsql-bugs

Hello,

 

Consider the following code:

 

with a(x) as(

               values

                                           ('{[10,20],[100,200]}'::int4multirange)

                                           ,('{[20,40],[15,55],[100,200]}'::int4multirange)

)

select                 range_agg(x)

from                   (

               select  unnest(x)x

               from     a

)t;

 

=> {[10,56),[100,201)}

 

Here, range_agg() won’t accept a multirange type input, but it outputs a multirange type.

 

The only way to aggregate the source multirange rows is to unnest them first.

 

However, range_intersect_agg() does not require the unnest step:

 

with a(x) as(

               values

                                           ('{[10,20],[100,200]}'::int4multirange)

                                           ,('{[20,40],[15,55],[100,200]}'::int4multirange)

)

select                 range_intersect_agg(x)

from                   a;

 

=> {[15,21),[100,201)}

 

Best,

Ian Campbell

 

pgsql-bugs by date:

Previous
From: Tom Lane
Date:
Subject: Re: INFORMATION_SCHEMA.routines column routine_definition does not show the source
Next
From: Daniel Gustafsson
Date:
Subject: Re: BUG #17262: "View manual" button on postgres.org/docs is overflowing horizontally on mobile view