From: | Antonin Houska <antonin(dot)houska(at)gmail(dot)com> |
---|---|
To: | pgsql-hackers(at)postgresql(dot)org |
Subject: | Shorter iterations of join_info_list |
Date: | 2013-07-01 15:11:26 |
Message-ID: | 51D19C1E.10004@gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
As far as I understand, deconstruct_recurse() ensures that
SpecialJoinInfo of a new join always gets added to higher position in
join_info_list than SJ infos of all joins located below the new join in
the tree. I wonder if we can rely on that fact sometimes.
One possible use case could be
placeholder.c:update_placeholder_eval_levels():
1. The first (in terms of position in join_info_list) join above
phinfo->ph_var->phrels can be marked as the (exclusive) upper bound for
all iterations.
2. The first join for which particular iteration of SJ infos
identifies the necessity to extend eval_at can be marked in
join_info_list as (exclusive) lower bound for the next iteration. This
is because that addition can only affect parents of the join whose
relations we just added to eval_at. And these essentially can't be
located at lower positions in join_info_list.
The lower limit could also be used in initsplan.c:check_outerjoin_delay().
Is this worth a patch? It's not much coding but I'd appreciate some
feedback before I try to do anything.
Thanks,
Antonin Houska (Tony)
From | Date | Subject | |
---|---|---|---|
Next Message | David Fetter | 2013-07-01 15:15:17 | Re: Documentation/help for materialized and recursive views |
Previous Message | Alvaro Herrera | 2013-07-01 15:09:32 | Re: request a new feature in fuzzystrmatch |