Re: Removing unneeded self joins - Mailing list pgsql-hackers

From Andrei Lepikhov
Subject Re: Removing unneeded self joins
Date
Msg-id 6da9bdb2-3ff2-4b8b-818a-8052772f2163@gmail.com
Whole thread Raw
In response to Re: Removing unneeded self joins  (jian he <jian.universality@gmail.com>)
Responses Re: Re: Removing unneeded self joins
List pgsql-hackers
On 7/15/24 12:31, jian he wrote:
> hi.
> Here is the latest patch (v6),
> I've made the following changes.
> 
> * disallow original Query->resultRelation participate in SJE.
> for SELECT, nothing is changed. for UPDATE/DELETE/MERGE
> we can do:
> EXPLAIN (COSTS OFF)
> UPDATE sj sq SET b = sq.b + sz.a FROM (select s1.* from sj s1 join sj
> s2 on s1.a = s2.a) as sz
> WHERE sz.a = sq.a;
> 
> here, only "(select s1.* from sj s1 join sj s2 on s1.a = s2.a)" can
> apply to SJE.
> 
> but for now we cannot apply SJE to
> EXPLAIN (COSTS OFF)
> UPDATE sj sq SET b = sq.b + sz.a FROM sj as sz WHERE sz.a = sq.a;
> 
> so the EPQ abnormality issue[1] won't happen.
> 
> 
> * add a new function: ChangeVarNodesExtended for
> address concerns in  [2]
I see you still stay with the code line:
if (omark && imark && omark->markType != imark->markType)

It is definitely an error. What if omark is NULL, but imark is not? Why 
not to skip this pair of relids? Or, at least, insert an assertion to 
check that you filtered it earlier.

-- 
regards, Andrei Lepikhov




pgsql-hackers by date:

Previous
From: Ashutosh Bapat
Date:
Subject: Re: Optimize WindowAgg's use of tuplestores
Next
From: Fujii Masao
Date:
Subject: Re: MERGE/SPLIT partition commands should create new partitions in the parent's tablespace?