From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
---|---|
To: | Hannu Krosing <hannu(at)2ndQuadrant(dot)com> |
Cc: | PostgreSQL-development <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Re: Question about optimising (Postgres_)FDW |
Date: | 2014-04-15 23:25:32 |
Message-ID: | 6849.1397604332@sss.pgh.pa.us |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
Hannu Krosing <hannu(at)2ndQuadrant(dot)com> writes:
> Is there a way to force it to prefer a plan where the results of (select
> id from onemillion where data > '0.9' limit 100)
> are passed to FDW as a single IN ( = ANY(...)) query and are retrieved
> all at once ?
You could write the query like that:
select * from onemillion_pgfdw where id = any (array(select id from
onemillion where data > '0.9' limit 100));
Or at least you should be able to, except when I try it I get
explain analyze
select * from onemillion_pgfdw where id = any (array(select id from
onemillion where data > '0.9' limit 100));
ERROR: operator does not exist: integer = integer[]
HINT: No operator matches the given name and argument type(s). You might need to add explicit type casts.
CONTEXT: Remote SQL command: EXPLAIN SELECT id, inserted, data FROM public.onemillion WHERE ((id = ANY ((SELECT null::integer[]))))
so there's something the remote-estimate code is getting wrong here.
(It seems to work without remote_estimate, though.)
regards, tom lane
From | Date | Subject | |
---|---|---|---|
Next Message | Peter Geoghegan | 2014-04-15 23:30:39 | Re: Clock sweep not caching enough B-Tree leaf pages? |
Previous Message | Ants Aasma | 2014-04-15 22:59:00 | Re: Clock sweep not caching enough B-Tree leaf pages? |