incremental_sort_fix_expr_lookup_idea.patch
text/x-patch
Filename: incremental_sort_fix_expr_lookup_idea.patch
Type: text/x-patch
Part: 0
Patch
Format: unified
| File | + | − |
|---|---|---|
| src/backend/optimizer/path/equivclass.c | 10 | 1 |
diff --git a/src/backend/optimizer/path/equivclass.c b/src/backend/optimizer/path/equivclass.c
index b68a5a0ec7..454b3abe5c 100644
--- a/src/backend/optimizer/path/equivclass.c
+++ b/src/backend/optimizer/path/equivclass.c
@@ -777,8 +777,17 @@ find_em_expr_for_rel(EquivalenceClass *ec, RelOptInfo *rel)
foreach(lc_em, ec->ec_members)
{
EquivalenceMember *em = lfirst(lc_em);
+ PathTarget *target = rel->reltarget;
+ ListCell *lc_expr;
+ bool foundExpr = false;
- if (bms_is_subset(em->em_relids, rel->relids) &&
+ foreach(lc_expr, target->exprs)
+ {
+ if (lfirst(lc_expr) == em->em_expr)
+ foundExpr = true;
+ }
+
+ if (foundExpr && bms_is_subset(em->em_relids, rel->relids) &&
!bms_is_empty(em->em_relids))
{
/*