From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
---|---|
To: | Robert Haas <robertmhaas(at)gmail(dot)com> |
Cc: | Andrew Dunstan <andrew(at)dunslane(dot)net>, Martin Kalcher <martin(dot)kalcher(at)aboutsource(dot)net>, John Naylor <john(dot)naylor(at)enterprisedb(dot)com>, Thomas Munro <thomas(dot)munro(at)gmail(dot)com>, PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org> |
Subject: | Re: [PATCH] Introduce array_shuffle() and array_sample() |
Date: | 2022-07-19 14:20:23 |
Message-ID: | 1064800.1658240423@sss.pgh.pa.us |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general pgsql-hackers |
Robert Haas <robertmhaas(at)gmail(dot)com> writes:
> On Tue, Jul 19, 2022 at 9:53 AM Andrew Dunstan <andrew(at)dunslane(dot)net> wrote:
>> Why not have an optional second parameter for array_shuffle that
>> indicates whether or not to flatten? e.g. array_shuffle(my_array,
>> flatten => true)
> IMHO, if we think that's something many people are going to want, it
> would be better to add an array_flatten() function, because that could
> be used for a variety of purposes, whereas an option to this function
> can only be used for this function.
Agreed. Whether it's really needed, I dunno --- I don't recall the
issue having come up before.
After taking a second look through
https://www.postgresql.org/docs/current/functions-array.html
it seems like the things that treat arrays as flat even when they
are multi-D are just
* unnest(), which is more or less forced into that position by our
type system: it has to be anyarray returning anyelement, not
anyarray returning anyelement-or-anyarray-depending.
* array_to_string(), which maybe could have done it differently but
can reasonably be considered a variant of unnest().
* The containment/overlap operators, which are kind of their own
thing anyway. Arguably they got this wrong, though I suppose it's
too late to rethink that.
Everything else either explicitly rejects more-than-one-D arrays
or does something that is compatible with thinking of them as
arrays-of-arrays.
So I withdraw my original position. These functions should just
shuffle or select in the array's first dimension, preserving
subarrays. Or else be lazy and reject more-than-one-D arrays;
but it's probably not that hard to handle them.
regards, tom lane
From | Date | Subject | |
---|---|---|---|
Next Message | Tom Lane | 2022-07-19 14:23:34 | Re: pgsql 10.19 : "ERROR: cannot convert infinity to numeric" except there is no infinity |
Previous Message | David G. Johnston | 2022-07-19 14:19:18 | Re: pgsql 10.19 : "ERROR: cannot convert infinity to numeric" except there is no infinity |
From | Date | Subject | |
---|---|---|---|
Next Message | Alvaro Herrera | 2022-07-19 14:28:07 | Re: pgsql: Default to hidden visibility for extension libraries where possi |
Previous Message | Masahiko Sawada | 2022-07-19 13:58:11 | Re: [BUG] Logical replication failure "ERROR: could not map filenode "base/13237/442428" to relation OID" with catalog modifying txns |