@@ -590,6 +590,9 @@ append_child_relation(PlannerInfo *root, RelOptInfo *rel, Index rti,
590590childrel -> reltargetlist = lappend (childrel -> reltargetlist ,new_target );
591591}
592592
593+ /* Copy attr_needed (used in build_joinrel_tlist() function) */
594+ childrel -> attr_needed = rel -> attr_needed ;
595+
593596/* Copy restrictions */
594597childrel -> baserestrictinfo = NIL ;
595598forboth (lc ,wrappers ,lc2 ,rel -> baserestrictinfo )
@@ -761,6 +764,7 @@ change_varno_walker(Node *node, change_varno_context *context)
761764ListCell * lc ;
762765Var * var ;
763766EquivalenceClass * ec ;
767+ EquivalenceMember * em ;
764768
765769if (node == NULL )
766770return false;
@@ -794,7 +798,13 @@ change_varno_walker(Node *node, change_varno_context *context)
794798return false;
795799
796800case T_EquivalenceMember :
797- change_varno_walker ((Node * ) ((EquivalenceMember * )node )-> em_expr ,context );
801+ em = (EquivalenceMember * )node ;
802+ change_varno_walker ((Node * )em -> em_expr ,context );
803+ if (bms_is_member (context -> old_varno ,em -> em_relids ))
804+ {
805+ bms_del_member (em -> em_relids ,context -> old_varno );
806+ bms_add_member (em -> em_relids ,context -> new_varno );
807+ }
798808return false;
799809
800810case T_TargetEntry :