From: | Junwang Zhao <zhjwpku(at)gmail(dot)com> |
---|---|
To: | Aleksander Alekseev <aleksander(at)timescale(dot)com> |
Cc: | PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, "David G(dot) Johnston" <david(dot)g(dot)johnston(at)gmail(dot)com>, jian he <jian(dot)universality(at)gmail(dot)com>, Amit Langote <amitlangote09(at)gmail(dot)com>, "andreas(at)proxel(dot)se" <andreas(at)proxel(dot)se>, Robert Haas <robertmhaas(at)gmail(dot)com> |
Subject: | Re: general purpose array_sort |
Date: | 2024-10-30 14:41:40 |
Message-ID: | CAEG8a3Lzxv=QVt0Q8Mia2iFZUWvwAWdCk8btHp9GiYgTMK_+ig@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On Wed, Oct 30, 2024 at 10:17 PM Junwang Zhao <zhjwpku(at)gmail(dot)com> wrote:
>
> Hi,
>
> On Wed, Oct 30, 2024 at 9:29 PM Aleksander Alekseev
> <aleksander(at)timescale(dot)com> wrote:
> >
> > Hi,
> >
> > Thanks for the updated patch set.
> >
> > > > > +Datum
> > > > > +array_sort_order(PG_FUNCTION_ARGS)
> > > > > +{
> > > > > + return array_sort(fcinfo);
> > > > > +}
> > > > > +
> > > > > +Datum
> > > > > +array_sort_order_nulls_first(PG_FUNCTION_ARGS)
> > > > > +{
> > > > > + return array_sort(fcinfo);
> > > > > +}
> > > >
> > > > Any reason not to specify array_sort in pg_proc.dat?
> > >
> > > It is specified in 0001 (see oid => '8810').
> >
> > What I meant was that I don't think these wrapper functions are
> > needed. I think you can just do:
> >
> > ```
> > +{ oid => '8811', descr => 'sort array',
> > + proname => 'array_sort', prorettype => 'anyarray',
> > + proargtypes => 'anyarray bool', prosrc => 'array_sort'}, <--
> > array_sort is used directly in `prosrc`
> > ```
> >
> > ... unless I'm missing something.
>
> There is a opr sanity check for this[1], if we remove these wrapper functions,
> regression test will fail with:
>
> - oid | proname | oid | proname
> ------+---------+-----+---------
> -(0 rows)
> + oid | proname | oid | proname
> +------+------------+------+------------
> + 8811 | array_sort | 8812 | array_sort
> + 8810 | array_sort | 8811 | array_sort
> + 8810 | array_sort | 8812 | array_sort
> +(3 rows)
>
>
> [1]:
>
> -- Considering only built-in procs (prolang = 12), look for multiple uses
> -- of the same internal function (ie, matching prosrc fields). It's OK to
> -- have several entries with different pronames for the same internal function,
> -- but conflicts in the number of arguments and other critical items should
> -- be complained of. (We don't check data types here; see next query.)
> -- Note: ignore aggregate functions here, since they all point to the same
> -- dummy built-in function.
>
> SELECT p1.oid, p1.proname, p2.oid, p2.proname
> FROM pg_proc AS p1, pg_proc AS p2
> WHERE p1.oid < p2.oid AND
> p1.prosrc = p2.prosrc AND
> p1.prolang = 12 AND p2.prolang = 12 AND
> (p1.prokind != 'a' OR p2.prokind != 'a') AND
> (p1.prolang != p2.prolang OR
> p1.prokind != p2.prokind OR
> p1.prosecdef != p2.prosecdef OR
> p1.proleakproof != p2.proleakproof OR
> p1.proisstrict != p2.proisstrict OR
> p1.proretset != p2.proretset OR
> p1.provolatile != p2.provolatile OR
> p1.pronargs != p2.pronargs);
>
> >
> > --
> > Best regards,
> > Aleksander Alekseev
>
>
>
> --
> Regards
> Junwang Zhao
CFbot failed with doc build, v10 fixed that.
--
Regards
Junwang Zhao
Attachment | Content-Type | Size |
---|---|---|
v10-0002-support-sort-order-and-nullsfirst-flag.patch | application/octet-stream | 8.7 KB |
v10-0001-general-purpose-array_sort.patch | application/octet-stream | 10.5 KB |
From | Date | Subject | |
---|---|---|---|
Next Message | Jelte Fennema-Nio | 2024-10-30 15:06:20 | Re: Consider pipeline implicit transaction as a transaction block |
Previous Message | Junwang Zhao | 2024-10-30 14:17:18 | Re: general purpose array_sort |