diff options
Diffstat (limited to 'src/backend/optimizer/util/var.c')
-rw-r--r-- | src/backend/optimizer/util/var.c | 6 |
1 files changed, 2 insertions, 4 deletions
diff --git a/src/backend/optimizer/util/var.c b/src/backend/optimizer/util/var.c index d4f46b8d461..a64a8d7d5ff 100644 --- a/src/backend/optimizer/util/var.c +++ b/src/backend/optimizer/util/var.c @@ -773,11 +773,10 @@ static Relids alias_relid_set(PlannerInfo *root, Relids relids) { Relids result = NULL; - Relids tmprelids; int rtindex; - tmprelids = bms_copy(relids); - while ((rtindex = bms_first_member(tmprelids)) >= 0) + rtindex = -1; + while ((rtindex = bms_next_member(relids, rtindex)) >= 0) { RangeTblEntry *rte = rt_fetch(rtindex, root->parse->rtable); @@ -786,6 +785,5 @@ alias_relid_set(PlannerInfo *root, Relids relids) else result = bms_add_member(result, rtindex); } - bms_free(tmprelids); return result; } |