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. regards, tom lane