Don't pass grouped relations to FDWs build_grouped_rel() makes a flat copy of the input relation, including its FDW fields. As a result, when building a grouped join relation for eager aggregation, add_paths_to_joinrel() called the FDW's GetForeignJoinPaths for it. postgres_fdw then failed with "Aggref found where not expected" on the partial Aggrefs in the target list, and in any case it would have treated a partially aggregated input as a plain foreign scan.
FDWs are not prepared to handle grouped relations, so clear serverid, fdwroutine and fdw_private in build_grouped_rel(). Reported-by: Robert Haas <[email protected]> Author: Richard Guo <[email protected]> Discussion: https://postgr.es/m/ca+tgmob7ism9ykrm44vjuduacchw-fy54mv5njptztl9uny...@mail.gmail.com Backpatch-through: 19 Branch ------ master Details ------- https://git.postgresql.org/pg/commitdiff/58fca6bdf26f55484c11bf505ae699ec240d60cb Modified Files -------------- contrib/postgres_fdw/expected/postgres_fdw.out | 26 ++++++++++++++++++++++++++ contrib/postgres_fdw/sql/postgres_fdw.sql | 5 +++++ src/backend/optimizer/util/relnode.c | 7 +++++++ 3 files changed, 38 insertions(+)
