• Tom Lane's avatar
    Fix postgres_fdw to check shippability of sort clauses properly. · 9f9489aa
    Tom Lane authored
    postgres_fdw would push ORDER BY clauses to the remote side without
    verifying that the sort operator is safe to ship.  Moreover, it failed
    to print a suitable USING clause if the sort operator isn't default
    for the sort expression's type.  The net result of this is that the
    remote sort might not have anywhere near the semantics we expect,
    which'd be disastrous for locally-performed merge joins in particular.
    
    We addressed similar issues in the context of ORDER BY within an
    aggregate function call in commit 7012b132, but failed to notice
    that query-level ORDER BY was broken.  Thus, much of the necessary
    logic already existed, but it requires refactoring to be usable
    in both cases.
    
    Back-patch to all supported branches.  In HEAD only, remove the
    core code's copy of find_em_expr_for_rel, which is no longer used
    and really should never have been pushed into equivclass.c in the
    first place.
    
    Ronan Dunklau, per report from David Rowley;
    reviews by David Rowley, Ranier Vilela, and myself
    
    Discussion: https://postgr.es/m/CAApHDvr4OeC2DBVY--zVP83-K=bYrTD7F8SZDhN4g+pj2f2S-A@mail.gmail.com
    9f9489aa
postgres_fdw.sql 140 KB