From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
---|---|
To: | Andrew Gierth <andrew(at)tao11(dot)riddles(dot)org(dot)uk> |
Cc: | Andreas Karlsson <andreas(at)proxel(dot)se>, pgsql-bugs(at)lists(dot)postgresql(dot)org |
Subject: | Re: Ignored join clause |
Date: | 2018-04-19 16:58:47 |
Message-ID: | 18363.1524157127@sss.pgh.pa.us |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-bugs |
Andrew Gierth <andrew(at)tao11(dot)riddles(dot)org(dot)uk> writes:
> I think I was wrong, and that in fact this is a much more general
> problem which amounts to a lack of communication between
> get_joinrel_parampathinfo and extract_actual_join_clauses.
Yeah, I think you're right. The rules about moving clauses down into
a parameterized path may require something that had been a regular
outer join clause to be moved to a join below its syntactic level.
If we'd done that because the clause was actually degenerate (not
mentioning the outer join's LHS), we'd have marked it is_pushed_down,
but that doesn't seem practical in this situation since the RestrictInfo
probably is also referenced in other paths where it's not pushed down.
And I don't want to start making multiple RestrictInfos for the same
clause --- that'll break some other stuff.
So the only practical answer seems to be to teach
extract_actual_join_clauses to check the clause's syntactic level
along with is_pushed_down, as per the attached patch.
Out of curiosity, I put
Assert(bms_is_subset(rinfo->required_relids, joinrelids));
in there, and verified that we have no existing regression test
that hits the assertion, though of course Andreas' example does.
I've been pretty dissatisfied with the squishiness of is_pushed_down
for some time (cf comments in initsplan.c around line 1770), and this
bug seems like a sufficient reason to write it out of existence
entirely. But that's surely not going to lead to a back-patchable
change, so it's likely something for v12.
regards, tom lane
Attachment | Content-Type | Size |
---|---|---|
parameterization-filter-clause-fix.patch | text/x-diff | 3.0 KB |
From | Date | Subject | |
---|---|---|---|
Next Message | Greg k | 2018-04-20 01:43:34 | Re: LDAP authentication fails with concurrent create extensions |
Previous Message | Tom Lane | 2018-04-19 15:20:39 | Re: Ignored join clause |