On Fri, Sep 20, 2019 at 6:20 PM Luis Carril <luis.car...@swarm64.com<mailto:luis.car...@swarm64.com>> wrote: Hello, thanks for the comments!
* + if (tdinfo->filtercond || tbinfo->relkind == RELKIND_FOREIGN_TABLE) filter condition is not implemented completely yet so the logic only work on foreign table so I think its better to handle it separately Note that there is another if condition that actually applies the the filtercondition if provided, also for a we need to do a COPY SELECT instead of a COPY TO but we can't supplied where clause in pg_dump yet so filtercondtion is always NULL and the logic became true only on foreign table. * I don’t understand the need for changing SELECT query .we can use the same SELECT query syntax for both regular table and foreign table To which query do you refer? In the patch there are three queries: 1 retrieves foreign servers, another is the SELECT in the COPY that now it applies in case of a filter condition of a foreign table, and a third that retrieves the oid of a given foreign server. SELECT on COPY regards Surafel If we have a non-foreign table and filtercond is NULL, then we can do a `COPY table columns TO stdout`. But if the table is foreign, the `COPY foreign-table columns TO stdout` is not supported by Postgres, so we have to do a `COPY (SELECT columns FROM foreign-table) TO sdout` Now if in any case the filtercond is non-NULL, ie we have a WHERE clause, then for non-foreign and foreign tables we have to do a: `COPY (SELECT columns FROM table) TO sdout` So the COPY of a foreign table has to be done using the sub-SELECT just as a non-foreign table with filtercond, not like a non-foreign table without filtercond. Cheers Luis M Carril