> > <snip>
> >
> > > CREATE OR REPLACE FUNCTION array_intersect(ANYARRAY, ANYARRAY)
> > > RETURNS ANYARRAY
> > > LANGUAGE SQL
> > > AS $$
> > > SELECT ARRAY(
> > > SELECT $1[i] AS "the_intersection"
> > > FROM generate_series(
> > > array_lower($1,1),
> > > array_upper($1,1)
> > > ) AS i
> > > INTERSECT
> > > SELECT $2[j] AS "the_intersection"
> > > FROM generate_series(
> > > array_lower($2,1),
> > > array_upper($2,1)
> > > ) AS j
> > > );
> > > $$;
> >
nice :)
Maybe we can add function "generate_iterator"
CREATE OR REPLACE FUNCTION generate_iterator(ANYARRAY)
RETURNS SETOF integer AS
$$
SELECT i
FROM generate_series(array_lower($1, 1), array_upper($1,1)) AS i
$$ LANGUAGE SQL;
then
CREATE OR REPLACE FUNCTION array_intersect(ANYARRAY, ANYARRAY)
RETURNS ANYARRAY
LANGUAGE SQL AS
$$
SELECT ARRAY(
SELECT $1[i]
FROM genarate_iterator($1) i
INTERSECT
SELECT $2[j]
FROM generate_iterator($2) j
)
$$ ;
Regars
Pavel