To put that another way, there are other potential uses of this function. For example, how would you suggest that someone do this?
CREATE TABLE foo ( id serial, bar int[], CHECK (array_ndims(bar) = 3) ); You can hack something together, but it's not particularly nice. ...Robert On Sat, Oct 11, 2008 at 7:53 AM, Robert Haas <[EMAIL PROTECTED]> wrote: > 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 <[EMAIL PROTECTED]> 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 <[EMAIL PROTECTED]>: >>> 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 >>> >>> >> > -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers