diff --git a/src/backend/optimizer/path/allpaths.c b/src/backend/optimizer/path/allpaths.c index 2d86da3..f4b2c8c 100644 --- a/src/backend/optimizer/path/allpaths.c +++ b/src/backend/optimizer/path/allpaths.c @@ -397,7 +397,9 @@ set_append_rel_pathlist(PlannerInfo *root, RelOptInfo *rel, * We have to make child entries in the EquivalenceClass data * structures as well. */ - if (rel->has_eclass_joins) + if (!rel->has_eclass_joins) + elog(LOG, "FIXME #4"); + { add_child_rel_equivalences(root, appinfo, rel, childrel); childrel->has_eclass_joins = true; diff --git a/src/backend/optimizer/path/equivclass.c b/src/backend/optimizer/path/equivclass.c index a20ed5f..b383d13 100644 --- a/src/backend/optimizer/path/equivclass.c +++ b/src/backend/optimizer/path/equivclass.c @@ -1635,7 +1635,7 @@ add_child_rel_equivalences(PlannerInfo *root, * test covers the volatile case too) */ if (cur_ec->ec_has_const || list_length(cur_ec->ec_members) <= 1) - continue; + elog(LOG, "FIXME #3"); /* No point in searching if parent rel not mentioned in eclass */ if (!bms_is_subset(parent_rel->relids, cur_ec->ec_relids)) diff --git a/src/backend/optimizer/plan/createplan.c b/src/backend/optimizer/plan/createplan.c index fa7b29f..ec0cc8c 100644 --- a/src/backend/optimizer/plan/createplan.c +++ b/src/backend/optimizer/plan/createplan.c @@ -3183,7 +3183,7 @@ make_sort_from_pathkeys(PlannerInfo *root, Plan *lefttree, List *pathkeys, EquivalenceMember *em = (EquivalenceMember *) lfirst(j); if (em->em_is_const || em->em_is_child) - continue; + elog(LOG, "FIXME #1"); tle = tlist_member((Node *) em->em_expr, tlist); if (tle) @@ -3219,7 +3219,8 @@ make_sort_from_pathkeys(PlannerInfo *root, Plan *lefttree, List *pathkeys, ListCell *k; if (em->em_is_const || em->em_is_child) - continue; + elog(LOG, "FIXME #2"); + sortexpr = em->em_expr; exprvars = pull_var_clause((Node *) sortexpr, PVC_INCLUDE_PLACEHOLDERS);