• Tom Lane's avatar
    Simplify handling of remote-qual pass-forward in postgres_fdw. · 88e902b7
    Tom Lane authored
    Commit 0bf3ae88 encountered a need to pass the finally chosen remote qual
    conditions forward from postgresGetForeignPlan to postgresPlanDirectModify.
    It solved that by sticking them into the plan node's fdw_private list,
    which in hindsight was a pretty bad idea.  In the first place, there's no
    use for those qual trees either in EXPLAIN or execution; indeed they could
    never safely be used for any post-planning purposes, because they would not
    get processed by setrefs.c.  So they're just dead weight to carry around in
    the finished plan tree, plus being an attractive nuisance for somebody who
    might get the idea that they could be used that way.  Secondly, because
    those qual trees (sometimes) contained RestrictInfos, they created a
    plan-transmission hazard for parallel query, which is how come we noticed a
    problem.  We dealt with that symptom in commit 28b04787, but really a more
    straightforward and more efficient fix is to pass the data through in a new
    field of struct PgFdwRelationInfo.  So do it that way.  (There's no need
    to revert 28b04787, as it has sufficient reason to live anyway.)
    
    Per fuzz testing by Andreas Seltenreich.
    
    Discussion: https://postgr.es/m/87tw5x4vcu.fsf@credativ.de
    88e902b7
postgres_fdw.h 6.1 KB