patch: array_ndims

Поиск
Список
Период
Сортировка
От Robert Haas
Тема patch: array_ndims
Дата
Msg-id 603c8f070810101937n776c1e7cvd6a12345b0bbda28@mail.gmail.com
обсуждение исходный текст
Ответы Re: patch: array_ndims  ("Pavel Stehule" <pavel.stehule@gmail.com>)
Re: patch: array_ndims  (Peter Eisentraut <peter_e@gmx.net>)
Список 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 по дате отправления:

Предыдущее
От: Tom Lane
Дата:
Сообщение: Re: The Axe list
Следующее
От: "Joshua Tolley"
Дата:
Сообщение: Re: \ef should probably append semicolons