aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2010-10-29 14:44:49 -0400
committerTom Lane <tgl@sss.pgh.pa.us>2010-10-29 14:44:49 -0400
commit48a1fb23900d73e7d9cb2dc0408c745cd03597a7 (patch)
treea454932e37a27dbfd9b2c38d5fd7c3a41908fd5b
parent14231a41a94b2345cc679ff67dbee1bf7dac7029 (diff)
downloadpostgresql-48a1fb23900d73e7d9cb2dc0408c745cd03597a7.tar.gz
postgresql-48a1fb23900d73e7d9cb2dc0408c745cd03597a7.zip
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.)
-rw-r--r--src/backend/optimizer/prep/prepunion.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/backend/optimizer/prep/prepunion.c b/src/backend/optimizer/prep/prepunion.c
index 0d3a739175a..45ecde416f9 100644
--- a/src/backend/optimizer/prep/prepunion.c
+++ b/src/backend/optimizer/prep/prepunion.c
@@ -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;