On 2016/06/10 2:07, Robert Haas wrote: > On Thu, Jun 9, 2016 at 5:50 AM, Amit Langote wrote: >> I adjusted some comments per off-list suggestion from Ashutosh. Please >> find attached the new version. > > Are PlaceHolderVars the only problem we need to worry about here?
It seems so, as far as postgres_fdw join push-down logic is concerned. > What about other expressions that creep into the target list during > subquery pull-up which are not safe to push down? See comments in > set_append_rel_size(), recent discussion on the thread "Failed > assertion in parallel worker (ExecInitSubPlan)", and commit > b12fd41c695b43c76b0a9a4d19ba43b05536440c. I went through the discussion on that thread. I see at least some difference between how those considerations affect parallel-safety and postgres_fdw join push-down safety. While parallelism is considered for append child rels requiring guards discussed on that thread, the same does not seem to hold for the join push-down case. The latter would fail the safety check much earlier on the grounds of one of the component rels not being pushdown_safe. That's because the failing component rel would be append parent rel (not in its role as append child) so would not have any foreign path to begin with. Any hazards introduced by subquery pull-up then become irrelevant. That's the case when we have an inheritance tree of foreign tables (headed by a foreign table). The other case (union all with subquery pull-up) does not even get that far. So the only case this fix should account for is where we have a single foreign table entering a potential foreign join after being pulled up from a subquery with unsafe PHVs being created that are referenced above the join. If a given push-down attempt reaches as far as the check introduced by the proposed patch, we can be sure that there are no other unsafe expressions to worry about (accounted for by is_foreign_expr() checks up to that point). Am I missing something? Thanks, Amit -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers