Re: [BUGS] BUG #14487: malformed empty array from array_fill
От | Tom Lane |
---|---|
Тема | Re: [BUGS] BUG #14487: malformed empty array from array_fill |
Дата | |
Msg-id | 17089.1483631713@sss.pgh.pa.us обсуждение исходный текст |
Ответ на | Re: [BUGS] BUG #14487: malformed empty array from array_fill (Andrew Gierth <andrew@tao11.riddles.org.uk>) |
Список | pgsql-bugs |
Andrew Gierth <andrew@tao11.riddles.org.uk> writes: > "andrew" == andrew <andrew@tao11.riddles.org.uk> writes: > andrew> array_fill returns a malformed empty array when given a size of > andrew> zero: > Also, why does array_fill reject the case of an empty array of > dimensions? It seems obvious that it should return an empty array > result in such cases. Yeah. The code seems to have been intending to allow that: ndims = ARR_DIMS(dims)[0]; if (ndims < 0) /* we do allow zero-dimension arrays */ but it doesn't work right, precisely because that case comes out as being zero-dimensional not one dimension of length 0. Ideally I think we would reject zeroes in the lengths array as being an error, but it's probably too late for that, because likely people are using array[0] to get an empty result array since '{}' doesn't work. It also strikes me that this restriction is quite pointless: if (ARR_LBOUND(dims)[0] != 1) ereport(ERROR, (errcode(ERRCODE_ARRAY_SUBSCRIPT_ERROR), errmsg("wrong range of array subscripts"), errdetail("Lower bound of dimension array must be one."))); I think it's reasonable to disallow multi-dimensional input arrays here, but I don't see why it matters what the LB is. regards, tom lane -- Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-bugs
В списке pgsql-bugs по дате отправления: