Re: is 8.4 array_agg() supposed to work with array values?
От | Peter Eisentraut |
---|---|
Тема | Re: is 8.4 array_agg() supposed to work with array values? |
Дата | |
Msg-id | 200901200709.34793.peter_e@gmx.net обсуждение исходный текст |
Ответ на | is 8.4 array_agg() supposed to work with array values? ("Todd A. Cook" <tcook@blackducksoftware.com>) |
Ответы |
Re: is 8.4 array_agg() supposed to work with array values?
Re: is 8.4 array_agg() supposed to work with array values? Re: is 8.4 array_agg() supposed to work with array values? |
Список | pgsql-hackers |
On Monday 19 January 2009 23:22:21 Todd A. Cook wrote: > The docs at > http://developer.postgresql.org/pgdocs/postgres/functions-aggregate.html > don't prohibit using array values with array_arg(), so I assumed that it > would work. > test=> select array_agg(v.a) from (values (array[1,2]), (array[3,4])) as > v(a) ; ERROR: could not find array type for data type integer[] Yeah ... This is one of the weirdnesses of the PostgreSQL array implementation. integer[] and integer[][] etc. are actually the same type, just using a different number of dimensions internally. This would work much better if integer[][] where "array of integer[]", in the same way as integer[] is "array of integer", in the way C deals with arrays. This is also a main reason why composite types and arrays don't mix orthogonally; there is no way to represent that in the system catalogs. To get back to your question, as far as array_agg() itself is concerned, it would probably work, but the rest of the sytem doesn't deal with it very well. You will probably be able to find a number of other places that break when trying to derive the array type from something that is already an array.
В списке pgsql-hackers по дате отправления: