Re: A problem in deconstruct_distribute_oj_quals

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Richard Guo <guofenglinux(at)gmail(dot)com>
Cc: PostgreSQL-development <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: A problem in deconstruct_distribute_oj_quals
Date: 2023-02-07 06:12:51
Message-ID: 3027458.1675750371@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Richard Guo <guofenglinux(at)gmail(dot)com> writes:
> In deconstruct_distribute_oj_quals, when we've identified a commutable
> left join which provides join clause with flexible semantics, we try to
> generate multiple versions of the join clause. Here we have the logic
> that puts back any ojrelids that were removed from its min_righthand.

> /*
> * Put any OJ relids that were removed from min_righthand back into
> * ojscope, else distribute_qual_to_rels will complain.
> */
> ojscope = bms_join(ojscope, bms_intersect(sjinfo->commute_below,
> sjinfo->syn_righthand));

> I doubt this is necessary. It seems to me that all relids mentioned
> within the join clause have already been contained in ojscope, which is
> the union of min_lefthand and min_righthand.

Hmm ... that was needed at some point in the development of that
function, but maybe it isn't as the code stands now. It does look
like the "this_ojscope" manipulations within the loop cover this.

> I noticed this code because I came across a problem with a query as
> below.

> create table t (a int);

> select t1.a from (t t1 left join t t2 on true) left join (t t3 left join t
> t4 on t3.a = t4.a) on t2.a = t3.a;

> When we deal with qual 't2.a = t3.a', deconstruct_distribute_oj_quals
> would always add the OJ relid of t3/t4 into its required_relids, due to
> the code above, which I think is wrong. The direct consequence is that
> we would miss the plan that joins t2 and t3 directly.

I don't see any change in this query plan when I remove that code, so
I'm not sure you're explaining your point very well.

regards, tom lane

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Kyotaro Horiguchi 2023-02-07 07:07:03 Re: Make mesage at end-of-recovery less scary.
Previous Message Nikita Malakhov 2023-02-07 06:11:52 Re: [PATCH] Compression dictionaries for JSONB