Re: unnest on multi-dimensional arrays - Mailing list pgsql-general

From Pavel Stehule
Subject Re: unnest on multi-dimensional arrays
Date
Msg-id CAFj8pRD3DrqCa68NjHUcC8=yT1=7XvtYkxUMYFuuDuboixDcjw@mail.gmail.com
Whole thread Raw
In response to unnest on multi-dimensional arrays  (Zev Benjamin <zev-pgsql@strangersgate.com>)
Responses Re: unnest on multi-dimensional arrays
Re: unnest on multi-dimensional arrays
List pgsql-general
Hello

postgres=# CREATE OR REPLACE FUNCTION public.reduce_dim(anyarray)
 RETURNS SETOF anyarray
 LANGUAGE plpgsql
AS $function$
DECLARE s $1%type;
BEGIN
  FOREACH s SLICE 1  IN ARRAY $1 LOOP
      RETURN NEXT s;
  END LOOP;
RETURN;
END;
$function$;
CREATE FUNCTION

postgres=# select reduce_dim(array[array[1, 2], array[2, 3]]);
 reduce_dim
------------
 {1,2}
 {2,3}
(2 rows)

Regards

Pavel Stehule

2013/11/28 Zev Benjamin <zev-pgsql@strangersgate.com>
It appears that unnest, when called on a multi-dimensional array, effectively flattens the array first.  For example:

=> select * from unnest(array[array[1, 2], array[2, 3]]);
 unnest
--------
      1
      2
      2
      3
(4 rows)

while I would have expect something like the following:

=> select * from unnest(array[array[1, 2], array[2, 3]]);
 unnest
--------
   {1, 2}
   {2, 3}
(2 rows)

Is there any way to get the latter behavior?


Zev


--
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general

pgsql-general by date:

Previous
From: Zev Benjamin
Date:
Subject: unnest on multi-dimensional arrays
Next
From: David Johnston
Date:
Subject: Re: unnest on multi-dimensional arrays