Re: Proposal: generate_iterator functions

From: "Pavel Stehule" <pavel(dot)stehule(at)gmail(dot)com>
To: "Merlin Moncure" <mmoncure(at)gmail(dot)com>
Cc: PostgreSQL-development <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: Proposal: generate_iterator functions
Date: 2007-10-18 12:45:33
Message-ID: 162867790710180545m1d812dd8tf7d966fd7904c54@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

2007/10/18, Merlin Moncure <mmoncure(at)gmail(dot)com>:
> On 10/18/07, Pavel Stehule <pavel(dot)stehule(at)gmail(dot)com> wrote:
> > this function can help with array's iteration.
> >
> > create function generate_iterator(anyarray)
> > returns setof integer
> > as $$
> > select i
> > from generate_series(array_lower($1,1),
> > array_upper($1,1)) g(i)
> > $$ language sql;
>
> There was a very similar proposal a little while back (google:
> array_to_set). I think I like those names better since you are
> returning a set, not an iterator :-). Also, this should be internal
> as you suggest (there is an undocumented builtin that already does
> this, _pg_expandarray).
>
> merlin
>
one sample:
create or replace function array_unpack2(anyarray)
returns setof anyelement as $$
select $1[i][j]
from generate_iterator($1,1) i,
generate_iterator($1,2) j$$
language sql;

postgres=# select array_unpack2(ARRAY[[10,11,12],[13,14,15]]);
array_unpack2
---------------
10
11
12
13
14
15
(6 rows)

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Stephen Frost 2007-10-18 13:13:48 Re: max_prepared_transactions default ... why 5?
Previous Message Pavel Stehule 2007-10-18 12:21:16 Re: Proposal: generate_iterator functions