patch: array_ndims - Mailing list pgsql-hackers

From Robert Haas
Subject patch: array_ndims
Date
Msg-id 603c8f070810101937n776c1e7cvd6a12345b0bbda28@mail.gmail.com
Whole thread Raw
Responses Re: patch: array_ndims
Re: patch: array_ndims
List 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

Attachment

pgsql-hackers by date:

Previous
From: Tom Lane
Date:
Subject: Re: The Axe list
Next
From: "Joshua Tolley"
Date:
Subject: Re: \ef should probably append semicolons