Re: patch: array_ndims

Поиск
Список
Период
Сортировка
От Robert Haas
Тема Re: patch: array_ndims
Дата
Msg-id 603c8f070810110453u1f0abe97m2a60ac3a0e881a53@mail.gmail.com
обсуждение исходный текст
Ответ на Re: patch: array_ndims  ("Pavel Stehule" <pavel.stehule@gmail.com>)
Ответы Re: patch: array_ndims  ("Robert Haas" <robertmhaas@gmail.com>)
Re: patch: array_ndims  ("Pavel Stehule" <pavel.stehule@gmail.com>)
Список pgsql-hackers
There's nothing in that functionality that contemplates
multi-dimensional arrays.  Since we have multi-dimensional arrays,
oughtn't we provide the basic functions to deal with them?
array_ndims has got to be at least as useful as array_dims (which
returns an difficult-to-parse chunk of text).

...Robert

On Sat, Oct 11, 2008 at 2:29 AM, Pavel Stehule <pavel.stehule@gmail.com> wrote:
> Hello
>
> we talked about these features, but these functionality is solved with
> UNNEST operator
> http://farrago.sourceforge.net/design/CollectionTypes.html - so if you
> like this functionality (I believe, so want it), please implement
> UNNEST operator.
>
> Regards
> Pavel Stehule
>
> http://www.ibm.com/developerworks/db2/library/techarticle/dm-0710arocena/index.html
>
>
> 2008/10/11 Robert Haas <robertmhaas@gmail.com>:
>> 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
>>
>>
>> --
>> Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
>> To make changes to your subscription:
>> http://www.postgresql.org/mailpref/pgsql-hackers
>>
>>
>


В списке pgsql-hackers по дате отправления:

Предыдущее
От: Gregory Stark
Дата:
Сообщение: Re: The Axe list
Следующее
От: "Robert Haas"
Дата:
Сообщение: Re: patch: array_ndims