diff --git a/src/backend/optimizer/util/relnode.c b/src/backend/optimizer/util/relnode.c
index 0c125e42e8..7da2f913ce 100644
--- a/src/backend/optimizer/util/relnode.c
+++ b/src/backend/optimizer/util/relnode.c
@@ -1594,8 +1594,11 @@ get_baserel_parampathinfo(PlannerInfo *root, RelOptInfo *baserel,
 	}
 
 	/*
-	 * Add in joinclauses generated by EquivalenceClasses, too.  (These
-	 * necessarily satisfy join_clause_is_movable_into.)
+	 * Add in joinclauses generated by EquivalenceClasses, too.  We do not
+	 * check these against join_clause_is_movable_into, because its heuristic
+	 * about physically referencing the target rel can fail in certain cases
+	 * involving child rels whose EC member is a constant.  We must trust the
+	 * EC mechanism to not produce joinclauses that don't belong here.
 	 */
 	pclauses = list_concat(pclauses,
 						   generate_join_implied_equalities(root,
