Re: unnesting multirange data types - Mailing list pgsql-hackers

From Alexander Korotkov
Subject Re: unnesting multirange data types
Date
Msg-id CAPpHfdsbQPb6OVpW_XSFfR8fAOCXaaOX+1WrXEZXHUDXp7i4uw@mail.gmail.com
Whole thread Raw
In response to Re: unnesting multirange data types  ("Jonathan S. Katz" <jkatz@postgresql.org>)
Responses Re: unnesting multirange data types
Re: unnesting multirange data types
List pgsql-hackers
On Sun, Jun 13, 2021 at 1:16 AM Jonathan S. Katz <jkatz@postgresql.org> wrote:
> On 6/12/21 5:57 PM, Alexander Korotkov wrote:
> > On Sat, Jun 12, 2021 at 2:44 AM Alexander Korotkov <aekorotkov@gmail.com> wrote:
> >> ()On Sat, Jun 12, 2021 at 2:30 AM Justin Pryzby <pryzby@telsasoft.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@telsasoft.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>

Thank you. This change is incorporated in the attached revision of the patch.

This thread gave me another lesson about English articles.  Hopefully,
I would be able to make progress in future patches :)

> Again, I'll defer to others on the code, but this seems to solve the use
> case I presented. Thanks for the quick turnaround!

Thank you for the feedback!

------
Regards,
Alexander Korotkov

Attachment

pgsql-hackers by date:

Previous
From: Giuseppe Broccolo
Date:
Subject: Re: Questions about support function and abbreviate
Next
From: Alvaro Herrera
Date:
Subject: Re: Fdw batch insert error out when set batch_size > 65535