On 6 November 2012 06:09, Jeff Davis <pg...@j-davis.com> wrote: > On Sun, 2012-11-04 at 15:13 -0500, Tom Lane wrote: >> Jeff Davis <pg...@j-davis.com> writes: >> > Is there any fundamental or philosophical reason why a foreign table >> > can't accept arguments? >> >> That isn't a table; it's some sort of function. Now that we have >> LATERAL, there is no good reason to contort SQL's syntax and semantics >> in the direction you suggest. > > Maybe I should rephrase this as a problem with SRFs: you don't get to > define the init/exec/end executor functions, and you don't get access to > the optimizer information. > > It seems like foreign tables are a better mechanism (except for the > simple cases where you don't care about the details), and the only thing > an SRF can do that a foreign table can't is accept arguments. So, I > thought maybe it would make more sense to combine the mechanisms > somehow. > > Take something as simple as generate_series: right now, it materializes > the entire thing if it's in the FROM clause, but it wouldn't need to if > it could use the foreign table mechanism.
This seems a useful thought to me. Tom is complaining about conflating the two features, which does seem unnecessary. But we can still merge code. Providing run-time parameters or table-level options to Foreign Scans seems sensible. I can see why you'd want to pass through parameters like "work_mem" to the foreign scan and yet not have those as permanent table options. (On another thought: why do Foreign Scans get to avoid the materialization we hate with SRFs?) -- Simon Riggs http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Training & Services -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers