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 1rAShw-006pjc-VJ for pgsql-hackers@arkaria.postgresql.org; Tue, 05 Dec 2023 10:31:17 +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 1rAShv-0033QA-Kd for pgsql-hackers@arkaria.postgresql.org; Tue, 05 Dec 2023 10:31:15 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rASgZ-0030X9-R6 for pgsql-hackers@lists.postgresql.org; Tue, 05 Dec 2023 10:29:51 +0000 Received: from mail.postgrespro.ru ([93.174.131.139]) by magus.postgresql.org with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rASgX-00ACWi-8v for pgsql-hackers@postgresql.org; Tue, 05 Dec 2023 10:29:51 +0000 Received: from mail.postgrespro.ru (webmail.mstn.postgrespro.ru [192.168.2.26]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client did not present a certificate) (Authenticated sender: a.pyhalov@postgrespro.ru) by mail.postgrespro.ru (Postfix/587) with ESMTPSA id 5497DE20E94; Tue, 5 Dec 2023 13:29:47 +0300 (MSK) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=postgrespro.ru; s=mx2023; t=1701772187; bh=E01ERc3RmSNHh+SoKBfDyAA+bN4XM2MYAK4tXleVhbc=; h=Date:From:To:Cc:Subject:In-Reply-To:References:User-Agent: Message-ID:From; b=c9NyEcvGvICAZTuO5H13xxRo9GWZwdrlLLZbmlnE1e0zqqPNt6jkq3qQRF9H+9P+D 0FwK3W8lZfeWEvaGrn5vV0doagbnsi1IvyyWZlg0cccO6YdqwKGZWjo9BycCyq+Kyx dSUbP7N+hh3gB6LE3IoJRky9UlIobD4lBMzPLPIeQ9GCBb7ZITAUkSlEFvNrmqRjmX 3qYdbwYVDVUTPRGnf+8+NzD3Y/TxL3GvaRqzkVflPRMDQl9+NDTcq01kveQKeHyYIv UUvf4QJAUu6VyFoDSRRyfIr5WPXT364mVe/lEqmtYmPAiErdY78b4m/wMogi25gmHV mfYdDRKnA3wTg== MIME-Version: 1.0 Date: Tue, 05 Dec 2023 13:29:47 +0300 From: Alexander Pyhalov To: Alexander Korotkov Cc: Tomas Vondra , "Fujii.Yuki@df.MitsubishiElectric.co.jp" , Ashutosh Bapat , Pgsql Hackers , Ian Lawrence Barwick Subject: Re: Add semi-join pushdown to postgres_fdw In-Reply-To: References: <10b3408a0880462d2ec6e3a92a46800a@postgrespro.ru> <81d8befc64cfd7ccc4a3f3e5c6862f20@postgrespro.ru> <816fa8b1bc2da09a87484d1ef239a332@postgrespro.ru> <4d6b5ec7-1583-f253-c6d2-810602b4b2aa@enterprisedb.com> <3dd9320e01232eb931b747ed75a26cfb@postgrespro.ru> User-Agent: Roundcube Webmail/1.6.5 Message-ID: X-Sender: a.pyhalov@postgrespro.ru Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk Alexander Korotkov писал(а) 2023-12-03 23:52: > Hi, Alexander! > > On Mon, Nov 27, 2023 at 5:11 PM Alexander Pyhalov > wrote: >> Alexander Korotkov писал(а) 2023-11-27 03:49: >> >> > Thank you for the revision. >> > >> > I've revised the patch myself. I've replaced StringInfo with >> > additional conds into a list of strings as I proposed before. I think >> > the code became much clearer. Also, it gets rid of some unnecessary >> > allocations. >> > >> > I think the code itself is not in bad shape. But patch lacks some >> > high-level description of semi-joins processing as well as comments on >> > each manipulation with additional conds. Could you please add this? >> > >> >> Hi. The updated patch looks better. It seems I've failed to fix logic >> in >> deparseFromExprForRel() when tried to convert StringInfos to Lists. >> >> I've added some comments. The most complete description of how >> SEMI-JOIN >> is processed, is located in deparseFromExprForRel(). Unfortunately, >> there seems to be no single place, describing current JOIN deparsing >> logic. > > Looks good to me. I've made some grammar and formatting adjustments. > Also, I've written the commit message. > > Now, I think this looks good. I'm going to push this if no objections. > > ------ > Regards, > Alexander Korotkov Hi. No objections from my side. Perhaps, some rephrasing is needed in comment in semijoin_target_ok(): "The planner can create semi-joins, which refer to inner rel vars in its target list." Perhaps, change "semi-joins, which refer" to "a semi-join, which refers ...", as later we speak about "its" target list. -- Best regards, Alexander Pyhalov, Postgres Professional