Re: array_ndims never returns zero
От | Vladimir Svedov |
---|---|
Тема | Re: array_ndims never returns zero |
Дата | |
Msg-id | CADqDLE8cfwtyHH2-Ho5V9T9zc9H004nDp-KTM-4HkRnPPr=rfA@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: array_ndims never returns zero (Pavel Stehule <pavel.stehule@gmail.com>) |
Список | pgsql-hackers |
Maybe if you decide not to touch the code, I should report to documentation mail group, asking to add this special exception to docs?..
Thank you
On 29 December 2017 at 19:50, Pavel Stehule <pavel.stehule@gmail.com> wrote:
2017-12-29 17:52 GMT+01:00 Tom Lane <tgl@sss.pgh.pa.us>:Vladimir Svedov <vodevsh@gmail.com> writes:
> Reading
> https://stackoverflow.com/questions/48022753/why-does-array- ndimsarray-produce-null#480229 80
> confused me much - why array_ndims never returns zero indeed?..
Yeah, it's not a very good choice that it returns null for a zero-D
array. But it's been like that for 20-some years, so the question
is whether we are prepared to take the compatibility hit from
changing it.
If we were willing to break things around zero-D arrays, I don't think
that's the only thing to change. It's equally silly that array_dims()
returns NULL for such arrays, for instance; their dimensions are
certainly not unknown. Perhaps an empty string is the right result,
though I've not thought about it hard.
I'd also argue that an out-of-range AARR_NDIM result is grounds
for raising an error; returning NULL is a poor substitute for
reporting data corruption.
In short, if we're to touch this, I'd want somebody to go through all
the array functions/operators and see if anything else is weird with
zero-D arrays.Although I see a cost of compatibility break, I agree so NULL in this case is confusing.The empty array can be taken as possible unlimited dimensional with zero sized dimensions.The test on zero is more readable.RegardsPavel
regards, tom lane
В списке pgsql-hackers по дате отправления: