From: | Steve Midgley <science(at)misuse(dot)org> |
---|---|
To: | Pavel Stehule <pavel(dot)stehule(at)gmail(dot)com> |
Cc: | Mike Martin <redtux1(at)gmail(dot)com>, pgsql-sql <pgsql-sql(at)lists(dot)postgresql(dot)org> |
Subject: | Re: UNNEST and multidimensional arrays |
Date: | 2020-07-30 15:30:30 |
Message-ID: | CAJexoSLdcC1qY7z+qmJf1ZkMNFmCHz4oM2X9WKPYQhhnM3usNg@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-sql |
On Thu, Jul 30, 2020 at 8:06 AM Pavel Stehule <pavel(dot)stehule(at)gmail(dot)com>
wrote:
> Hi
>
> čt 30. 7. 2020 v 15:29 odesílatel Mike Martin <redtux1(at)gmail(dot)com> napsal:
>
>> Hi
>> Is there anyway to control how many levels unnest unnests?
>> ie: if I have (in perl) an array of arrays for unnest to only unnest the
>> top level, leaving the sub levels as an array, so a select would show
>> {val1,val2}
>> {val1,val2}
>> {val1,val2}
>> rather than
>> val1
>> val2
>> val1
>> val2
>> val1
>> val2
>>
>> Currently I am using a variation of the fooling code from postgres wiki
>> (from 2013)
>>
>
> there is not any other way
>
> Regards
>
> Pavel
>
>>
>> https://wiki.postgresql.org/wiki/Unnest_multidimensional_array
>>
>> CREATE OR REPLACE FUNCTION public.reduce_dim(
>> anyarray)
>> RETURNS SETOF anyarray
>> LANGUAGE 'plpgsql'
>>
>> COST 100
>> VOLATILE
>> ROWS 1000
>> AS $BODY$
>> DECLARE s $1%type;
>> BEGIN
>> IF cardinality ($1::text[]) >0 THEN
>> FOREACH s SLICE 1 IN ARRAY $1 LOOP
>> RETURN NEXT s;
>> END LOOP;
>> END IF;
>> RETURN;
>> END;
>> $BODY$;
>>
>> thanks in advance
>>
>> Mike
>>
>
Couldn't you write something in PLPerl (or really any procedural language)
to do what Perl does with Arrays in Postgres?
https://www.postgresql.org/docs/9.1/plperl.html
Steve
From | Date | Subject | |
---|---|---|---|
Next Message | Bhupendra Babu | 2020-07-31 00:03:41 | how to use function from different database |
Previous Message | Pavel Stehule | 2020-07-30 15:05:59 | Re: UNNEST and multidimensional arrays |