patch: array_ndims
От | Robert Haas |
---|---|
Тема | patch: array_ndims |
Дата | |
Msg-id | 603c8f070810101937n776c1e7cvd6a12345b0bbda28@mail.gmail.com обсуждение исходный текст |
Ответы |
Re: patch: array_ndims
Re: patch: array_ndims |
Список | pgsql-hackers |
After reading Josh Berkus's email suggesting that the intagg module be dropped, I was wondering what would be required to create a array enumerator (variously called unnest, unroll, array_enum, and, as contemplated by the TODO list, array_to_set). Pavel Stehule's generate_subscripts function provides most of what is needed - however, you need to know the number of dimensions in the array, and it appears we don't have a function to provide that information, at least not in a straightforward fashion. That seems like a pretty useful thing to have anyway, so here's a patch to add it. If you apply it, you can then used the attached PL/pgsql implementation of array_to_set(). I am sure that it would be better and more efficient to implement this directly in C, but as no one has gotten around to that yet this might be kind of handy. It might even be worth adding to the docs, though I'm not sure exactly where. rhaas=# SELECT * FROM array_to_set(ARRAY[1,2,3,4]); array_to_set -------------- 1 2 3 4 (4 rows) rhaas=# SELECT * FROM array_to_set(ARRAY[[1,2,3,4]]); array_to_set -------------- 1 2 3 4 (4 rows) rhaas=# SELECT * FROM array_to_set(ARRAY[[[1,2,3,4]]]); array_to_set -------------- 1 2 3 4 (4 rows) rhaas=# SELECT * FROM array_to_set(ARRAY[[[[1,2,3,4]]]]); array_to_set -------------- 1 2 3 4 (4 rows) rhaas=# SELECT * FROM array_to_set(ARRAY[[[[[1,2,3,4]]]]]); array_to_set -------------- 1 2 3 4 (4 rows) rhaas=# SELECT * FROM array_to_set(ARRAY[[[[[[1,2,3,4]]]]]]); array_to_set -------------- 1 2 3 4 (4 rows) ...Robert
Вложения
В списке pgsql-hackers по дате отправления: