Oops, missed one fix for EquivalenceClass rearrangement.
Now that we're expecting a mergeclause's left_ec/right_ec to persist from the initial assignments, we can't just blithely zero these out when transforming such a clause in adjust_appendrel_attrs. But really it should be okay to keep the parent's values, since a child table's derived Var ought to be equivalent to the parent Var for all EquivalenceClass purposes. (Indeed, I'm wondering whether we couldn't find a way to dispense with add_child_rel_equivalences altogether. But this is wrong in any case.)
This commit is contained in:
parent
14231a41a9
commit
48a1fb2390
@ -1682,13 +1682,13 @@ adjust_appendrel_attrs_mutator(Node *node, AppendRelInfo *context)
|
||||
|
||||
/*
|
||||
* Reset cached derivative fields, since these might need to have
|
||||
* different values when considering the child relation.
|
||||
* different values when considering the child relation. Note we
|
||||
* don't reset left_ec/right_ec: each child variable is implicitly
|
||||
* equivalent to its parent, so still a member of the same EC if any.
|
||||
*/
|
||||
newinfo->eval_cost.startup = -1;
|
||||
newinfo->norm_selec = -1;
|
||||
newinfo->outer_selec = -1;
|
||||
newinfo->left_ec = NULL;
|
||||
newinfo->right_ec = NULL;
|
||||
newinfo->left_em = NULL;
|
||||
newinfo->right_em = NULL;
|
||||
newinfo->scansel_cache = NIL;
|
||||
|
Loading…
x
Reference in New Issue
Block a user