Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1s2jT5-005XuF-Nl for pgsql-hackers@arkaria.postgresql.org; Fri, 03 May 2024 03:20:16 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1s2jT3-005Mk0-7M for pgsql-hackers@arkaria.postgresql.org; Fri, 03 May 2024 03:20:14 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1s2jT2-005MiU-Mr for pgsql-hackers@lists.postgresql.org; Fri, 03 May 2024 03:20:13 +0000 Received: from mail.postgrespro.ru ([93.174.131.139]) by makus.postgresql.org with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1s2jSz-001B4j-Rj for pgsql-hackers@lists.postgresql.org; Fri, 03 May 2024 03:20:12 +0000 Received: from [172.30.0.166] (unknown [172.30.0.166]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client did not present a certificate) (Authenticated sender: a.lepikhov@postgrespro.ru) by mail.postgrespro.ru (Postfix/587) with ESMTPSA id A72C3E20E9C; Fri, 3 May 2024 06:20:02 +0300 (MSK) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=postgrespro.ru; s=mx2023; t=1714706406; bh=egBqE0MamsL8VM6Dg9/3ka999qkk+Nu75quHPBXKcE8=; h=Message-ID:Date:User-Agent:Subject:To:Cc:References:From: In-Reply-To:From; b=eS2nD+fYkelZLOxAn+/4fSOHl+OW92svmo1dn4eqhJRkOWJNfO35XzVRy/yQWoUre qIBscPjEj5hQLHuuxW2c1JFX4BeB9KKE+z+LqnOSq1y95fH4MsvTU85wo97QhHkjhy QZE+qgjnpx+SxgcjUfk3zGobrLvVCGulqvdJg9TFm2PJOdDDBKZGuDkzZAP2ryXLeF FmgpO+RbrqwfkdlUBGsdeP/7W3FnXvojogosdY3f87Y3JkwQGuxnKI0NdpoqlN59Uv O2Ocb6WOJeGv1SCRfEb0iPW6QGYRUoNfVY8Ii1P7ep9Ds5NQEoeML3/xb5hOTB85pY tderD8v0cABGQ== Message-ID: <75de38d9-005d-4995-9ecf-a155844dcbcd@postgrespro.ru> Date: Fri, 3 May 2024 10:19:58 +0700 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: Removing unneeded self joins To: Tom Lane , Alexander Korotkov Cc: Richard Guo , Alexander Lakhin , "Gregory Stark (as CFM)" , =?UTF-8?Q?Micha=C5=82_K=C5=82eczek?= , PostgreSQL Hackers References: <64486b0b-0404-e39e-322d-0801154901f3@postgrespro.ru> <8800ccf2-ae82-461c-92a1-d4c0a22f8cf2@postgrespro.ru> <1bd80083-a13e-4e9f-a7ce-73c3faab521c@postgrespro.ru> <922623af-872e-4cdc-9238-129b18bee42d@postgrespro.ru> <0ed2cf02-e655-6ec7-a4fe-52fd8d572f65@gmail.com> <735b5cd4-568d-fbf7-ad8c-dcfb4c3af86e@gmail.com> <81! 00af4a-d0aa-450d-a09f-541f26b04ac2@postgrespro.ru> <2422119.1714691974@sss.pgh.pa.us> Content-Language: en-AU From: Andrei Lepikhov Organization: Postgres Professional In-Reply-To: <2422119.1714691974@sss.pgh.pa.us> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-KSMG-AntiPhishing: NotDetected X-KSMG-AntiSpam-Interceptor-Info: not scanned X-KSMG-AntiSpam-Status: not scanned, disabled by settings X-KSMG-AntiVirus: Kaspersky Secure Mail Gateway, version 2.1.0.7854, bases: 2024/05/02 22:05:00 #25070851 X-KSMG-AntiVirus-Status: NotDetected, skipped X-KSMG-LinksScanning: not scanned, disabled by settings X-KSMG-Message-Action: skipped X-KSMG-Rule-ID: 1 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk On 5/3/24 06:19, Tom Lane wrote: > Alexander Korotkov writes: >> I would appreciate your review of this patchset, and review from Andrei as well. > > I hate to say this ... but if we're still finding bugs this > basic in SJE, isn't it time to give up on it for v17? > > I might feel better about it if there were any reason to think > these were the last major bugs. But you have already committed > around twenty separate fixes for the original SJE patch, and > now here you come with several more; so it doesn't seem like > the defect rate has slowed materially. There can be no doubt > whatever that the original patch was far from commit-ready. > > I think we should revert SJE for v17 and do a thorough design > review before trying again in v18. I need to say I don't see any evidence of bad design. I think this feature follows the example of 2489d76 [1], 1349d27 [2], and partitionwise join features — we get some issues from time to time, but these strengths and frequencies are significantly reduced. First and foremost, this feature is highly isolated: like the PWJ feature, you can just disable (not enable?) SJE and it guarantees you will avoid the problems. Secondly, this feature reflects the design decisions the optimiser has made before. It raises some questions: Do we really control the consistency of our paths and the plan tree? Maybe we hide our misunderstanding of its logic by extensively copying expression trees, sometimes without fundamental necessity. Perhaps the optimiser needs some abstraction layers or reconstruction to reduce the quickly growing complexity. A good example here is [1]. IMO, the new promising feature it has introduced isn't worth the complexity it added to the planner. SJE, much like OR <-> ANY transformation, introduces a fresh perspective into the planner: if we encounter a complex, redundant query, it may be more beneficial to invest in simplifying the internal query representation rather than adding new optimisations that will grapple with this complexity. Also, SJE raised questions I've never seen before, like: Could we control the consistency of the PlannerInfo by changing something in the logic? Considering the current state, I don't see any concrete outcomes or evidence that a redesign of the feature will lead us to a new path. However, I believe the presence of SJE in the core could potentially trigger improvements in the planner. As a result, I vote to stay with the feature. But remember, as an author, I'm not entirely objective, so let's wait for alternative opinions. [1] Make Vars be outer-join-aware [2] Improve performance of ORDER BY / DISTINCT aggregates -- regards, Andrei Lepikhov Postgres Professional