From: | "Jonathan S(dot) Katz" <jkatz(at)postgresql(dot)org> |
---|---|
To: | Alexander Korotkov <aekorotkov(at)gmail(dot)com>, Justin Pryzby <pryzby(at)telsasoft(dot)com> |
Cc: | Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org> |
Subject: | Re: unnesting multirange data types |
Date: | 2021-06-12 22:16:24 |
Message-ID: | 3648e50c-eb0d-4d16-7194-1a1c62893726@postgresql.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On 6/12/21 5:57 PM, Alexander Korotkov wrote:
> On Sat, Jun 12, 2021 at 2:44 AM Alexander Korotkov <aekorotkov(at)gmail(dot)com> wrote:
>> ()On Sat, Jun 12, 2021 at 2:30 AM Justin Pryzby <pryzby(at)telsasoft(dot)com> wrote:
>>> On Fri, Jun 11, 2021 at 11:37:58PM +0300, Alexander Korotkov wrote:
>>>> On Fri, Jun 11, 2021 at 1:04 AM Justin Pryzby <pryzby(at)telsasoft(dot)com> wrote:
>>>>>
>>>>> +{ oid => '1293', descr => 'expand mutlirange to set of ranges',
>>>>>
>>>>> typo: mutlirange
>>>>
>>>> Fixed, thanks.
>>>>
>>>> The patch with the implementation of both unnest() and cast to array
>>>> is attached. It contains both tests and docs.
>>>
>>> |+ The multirange could be explicitly cast to the array of corresponding
>>> should say: "can be cast to an array of corresponding.."
>>>
>>> |+ * Cast multirange to the array of ranges.
>>> I think should be: *an array of ranges
>>
>> Thank you for catching this.
>>
>>> Per sqlsmith, this is causing consistent crashes.
>>> I took one of its less appalling queries and simplified it to this:
>>>
>>> select
>>> pg_catalog.multirange_to_array(
>>> cast(pg_catalog.int8multirange() as int8multirange)) as c2
>>> from (select 1)x;
>>
>> It seems that multirange_to_array() doesn't handle empty multiranges.
>> I'll post an updated version of the patch tomorrow.
>
> A revised patch is attached. Now empty multiranges are handled
> properly (and it's covered by tests). Typos are fixed as well.
Tested both against my original cases using both SQL + PL/pgSQL. All
worked well. I also tested the empty multirange case as well.
Overall the documentation seems to make sense, I'd suggest:
+ <para>
+ The multirange can be cast to an array of corresponding ranges.
+ </para>
becomes:
+ <para>
+ A multirange can be cast to an array of ranges of the same type.
+ </para>
Again, I'll defer to others on the code, but this seems to solve the use
case I presented. Thanks for the quick turnaround!
Jonathan
From | Date | Subject | |
---|---|---|---|
Next Message | Giuseppe Broccolo | 2021-06-12 23:45:45 | Re: Questions about support function and abbreviate |
Previous Message | Tom Lane | 2021-06-12 21:57:48 | Re: recovery test failures on hoverfly |