> On 3 Apr 2023, at 23:46, Tom Lane <t...@sss.pgh.pa.us> wrote: > > Daniel Gustafsson <dan...@yesql.se> writes: >> On 29 Sep 2022, at 21:33, Tom Lane <t...@sss.pgh.pa.us> wrote: >>> I find this behavior a bit surprising: >>> >>> +SELECT >>> array_dims(array_sample('[-1:2][2:3]={{1,2},{3,NULL},{5,6},{7,8}}'::int[], >>> 3)); >>> + array_dims >>> +------------- >>> + [-1:1][2:3] >>> +(1 row) >>> >>> I can buy preserving the lower bound in array_shuffle(), but >>> array_sample() is not preserving the first-dimension indexes of >>> the array, so ISTM it ought to reset the first lower bound to 1. > >> I might be daft but I'm not sure I follow why not preserving here, can you >> explain? > > Because array_sample selects only some of the (first level) array > elements, those elements are typically not going to have the same > indexes in the output as they did in the input. So I don't see why > it would be useful to preserve the same lower-bound index. It does > make sense to preserve the lower-order index bounds ([2:3] in this > example) because we are including or not including those array > slices as a whole.
Ah, ok, now I see what you mean, thanks! I'll try to fix up the patch like this tomorrow. -- Daniel Gustafsson