On Tue, May 12, 2009 at 3:28 PM, Pavel Stehule
<pavel.stehule@gmail.com> wrote:
Hello
create or replace function eqn(anyarray, anyarray, int)
returns boolean as $$
select not exists(select $1[i] from generate_series(1,$3) g(i)
except
select $2[i] from generate_series(1,$3) g(i))
$$ language sql immutable strict;
postgres=# select eqn(array[1,2,3,4,5], array[1,2,3,5,6], 3);
eqn
-----
t
(1 row)
Time: 1,590 ms
postgres=# select eqn(array[1,2,3,4,5], array[1,2,3,5,6], 4);
eqn
-----
f
(1 row)
Hi Pavel,
Thanks for the solution, but that's too slow. I'd rather just do this instead:
select * from product
where parents[1:(select array_length(parents,1) from product where name='wanted')+1]=
(select parents from product where name='wanted')||
(select id from product where name='wanted');
but the above query is also unable to use any indices (unlike LIKE 'foo%').
Regards,
Dave