Array slice subscripts (was Re: plpgsql function with more than one array argument)
От | Tom Lane |
---|---|
Тема | Array slice subscripts (was Re: plpgsql function with more than one array argument) |
Дата | |
Msg-id | 13301.1012600602@sss.pgh.pa.us обсуждение исходный текст |
Ответ на | plpgsql function with more than one array argument (Andre Holzner <Andre.Holzner@cern.ch>) |
Ответы |
Re: [HACKERS] Array slice subscripts (was Re: plpgsql function
|
Список | pgsql-sql |
Andre Holzner <Andre.Holzner@cern.ch> writes: > Am I doing something wrong or is this a 'feature' ? What's biting you is that the array slice operator uses the provided lower bounds in the resultant array. For example: regression=# select pcha from zdec_bhab; pcha ------------------------------------{{11,12,13},{21,22,23},{31,32,33}} (1 row) regression=# select array_dims(pcha) from zdec_bhab;array_dims ------------[1:3][1:3] (1 row) regression=# select pcha[2:2][1:3] from zdec_bhab; pcha --------------{{21,22,23}} (1 row) regression=# select array_dims(pcha[2:2][1:3]) from zdec_bhab;array_dims ------------[2:2][1:3] (1 row) So your function receives an array with first index starting at 2, which it's not expecting; its attempt to fetch element [1][1] is out of bounds and produces a NULL. Offhand this behavior seems like a misfeature: perhaps it'd be more sensible for the extracted slice to always have index lower bounds set to 1. But I'd like to see some discussion before changing it (and I don't plan to touch it before 7.2 release, in any case ;-)). Comments anyone? regards, tom lane
В списке pgsql-sql по дате отправления: