| 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: | Whole Thread | Raw Message | 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 |