Skip to content

Commit bf2d046

Browse files
committed
postgres_fdw: don't push ORDER BY with no vars (bug #15352)
Commit aa09cd2 changed a condition in find_em_expr_for_rel from being a bms_equal comparison of relids to bms_is_subset, in order to support order by clauses on foreign joins. But this also allows through the degenerate case of expressions with no Vars at all (and hence empty relids), including integer constants which will be parsed unexpectedly on the remote (viz. "ERROR: ORDER BY position 0 is not in select list" as in the bug report). Repair by adding an additional !bms_is_empty test. Backpatch through to 9.6 where the aforementioned change was made. Per bug #15352 from Maksym Boguk; analysis and patch by me. Discussion: https://postgr.es/m/153518420278.1478.14875560810251994661@wrigleys.postgresql.org
1 parent bfea331 commit bf2d046

File tree

1 file changed

+2
-1
lines changed

1 file changed

+2
-1
lines changed

contrib/postgres_fdw/postgres_fdw.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5793,7 +5793,8 @@ find_em_expr_for_rel(EquivalenceClass *ec, RelOptInfo *rel)
57935793
{
57945794
EquivalenceMember *em = lfirst(lc_em);
57955795

5796-
if (bms_is_subset(em->em_relids, rel->relids))
5796+
if (bms_is_subset(em->em_relids, rel->relids) &&
5797+
!bms_is_empty(em->em_relids))
57975798
{
57985799
/*
57995800
* If there is more than one equivalence member whose Vars are

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy