Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1qCCne-0003Ll-Fe for pgsql-hackers@arkaria.postgresql.org; Thu, 22 Jun 2023 05:24:06 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1qCCnc-0004Gp-Gs for pgsql-hackers@arkaria.postgresql.org; Thu, 22 Jun 2023 05:24:04 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1qCCnc-0004E9-2n for pgsql-hackers@lists.postgresql.org; Thu, 22 Jun 2023 05:24:04 +0000 Received: from mx05.melco.co.jp ([192.218.140.145]) by magus.postgresql.org with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1qCCnY-003xNW-9y for pgsql-hackers@postgresql.org; Thu, 22 Jun 2023 05:24:03 +0000 Received: from mr05.melco.co.jp (mr05 [133.141.98.165]) by mx05.melco.co.jp (Postfix) with ESMTP id 4Qmpgw3cTnzMvkFx; Thu, 22 Jun 2023 14:23:56 +0900 (JST) Received: from mr05.melco.co.jp (unknown [127.0.0.1]) by mr05.imss (Postfix) with ESMTP id 4Qmpgw3C3wzN0F7g; Thu, 22 Jun 2023 14:23:56 +0900 (JST) Received: from mf03_second.melco.co.jp (unknown [192.168.20.183]) by mr05.melco.co.jp (Postfix) with ESMTP id 4Qmpgw2t5lzN0F7Y; Thu, 22 Jun 2023 14:23:56 +0900 (JST) Received: from mf03.melco.co.jp (unknown [133.141.98.183]) by mf03_second.melco.co.jp (Postfix) with ESMTP id 4Qmpgw2qr3z5hXq; Thu, 22 Jun 2023 14:23:56 +0900 (JST) Received: from JPN01-OS0-obe.outbound.protection.outlook.com (unknown [104.47.23.105]) by mf03.melco.co.jp (Postfix) with ESMTP id 4Qmpgw2TYWzMv8vQ; Thu, 22 Jun 2023 14:23:56 +0900 (JST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=UU1dIgtXUM0WeIwMB4uXUbbvWbmjvQH8Mg7nr0s8INzkAPmS2tPAZWC35rB8eOLK2bBuFH7RuUI9ef1VkzoVZbVxjGtwGCDBU5LZCUa5nsGSKrnyLLvCEICZND4kGw1O1dzNBEjT6l5IIUfz1pQg6AENe3xVSVEMcIqyTbRG8OjQNPJwXZI9Mw8djkxXhqXZVtJL/CvUT2v0d3BOz338MX8mq3kRKFOzFuoNJoGw5TuVn4pH4B7USiVGtp9kLWhfViuXd79xkZ8xUMUeDGWq3lbALPxZCUueVsOAyzPnu3Pr5nWwwRBRIgiWBBxDW2LXLw8z1WhmojLqDTCNaG7DHA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=pWRRrHY93LUzxgtXtivY7zbENrz8OBQwsD2KpC3GQD0=; b=RtEF/yLgZMuFzCQHTqWbKobQSi4D50r69tx7pYXuxK0eLwzjFPAYKwrlPta4hr7BUVv++pStfAaJ9niFRvLMkicplzJqfO+VHL/WTnVFtt4e57nXwxt3lIlJkUhx06QZRsDy51Vvurn0+ctS02WMYjekzO1k8XSA9LQM/Jo0vYHZlgG4eTt99+I4I6g8VhDQPWzNyP/zpH0N3OOflzKvfZPIfNGQoIeN+UbJ2FkCBaxpZW/OBSVO1T1g2+4B7QUhEHn7S0Vp9ks4+G40q3vAXLupG7CjiOzKyWM/clnQktxyFegFZ43D4Iqa7VshpgmfWBlfHzfs9XRxiVh/HG62SA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=df.mitsubishielectric.co.jp; dmarc=pass action=none header.from=df.mitsubishielectric.co.jp; dkim=pass header.d=df.mitsubishielectric.co.jp; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mitsubishielectricgroup.onmicrosoft.com; s=selector2-mitsubishielectricgroup-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=pWRRrHY93LUzxgtXtivY7zbENrz8OBQwsD2KpC3GQD0=; b=E5fjH1Py6GVf8lsHY9QmAf4lOTnait7m60C043o16bf2awlTEi83cwfsqQ7EdU13TVFLSa1emGI94pwAGkkVWJ+wnl7LMBNym9jmPeUw9buga5UANdS9jP2kILXwGwTgLrbgNdpjsbibhIhx+fppDMttrp6TMUV88qB+Ihe2pII= Received: from OS3PR01MB6660.jpnprd01.prod.outlook.com (2603:1096:604:10e::8) by TY3PR01MB11922.jpnprd01.prod.outlook.com (2603:1096:400:409::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6521.24; Thu, 22 Jun 2023 05:23:54 +0000 Received: from OS3PR01MB6660.jpnprd01.prod.outlook.com ([fe80::fc59:c5ce:1ca4:3f8a]) by OS3PR01MB6660.jpnprd01.prod.outlook.com ([fe80::fc59:c5ce:1ca4:3f8a%4]) with mapi id 15.20.6521.024; Thu, 22 Jun 2023 05:23:54 +0000 From: "Fujii.Yuki@df.MitsubishiElectric.co.jp" To: Bruce Momjian , Alexander Pyhalov CC: PostgreSQL-development , Andres Freund , Tom Lane , Tomas Vondra , Julien Rouhaud , Daniel Gustafsson , Ilya Gladyshev , "Fujii.Yuki@df.MitsubishiElectric.co.jp" Subject: RE: Partial aggregates pushdown Thread-Topic: Partial aggregates pushdown Thread-Index: AQHYPYasTfJpCf0a4028YJm7JfY5bazLVbIAgAA/QgCAzsLGAICupJqAgAOhGYCAC47OQIAAf6sAgAAdMNCAAEyGgIAAtjrAgAD/KACABTrjIIAEWzOAgAyCOHCApWPpgIAAT1AggArXpoCAAFPI0IABO+iAgAMFFICABR/vAIAACpQAgABDk4CAAU/RgIBJ2XYAgAgC/oCAAC5WgIAGnISAgAQxEbCAAFHVgIAA0HSAgArptoCAAGksgIACJPSAgADj/XA= Date: Thu, 22 Jun 2023 05:23:33 +0000 Deferred-Delivery: Thu, 22 Jun 2023 05:23:31 +0000 Message-ID: References: <8ffedecae0d21a3cd93805baf1dcc0de@postgrespro.ru> In-Reply-To: Accept-Language: ja-JP, en-US Content-Language: ja-JP X-MS-Has-Attach: X-MS-TNEF-Correlator: x-melpop: 1 authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=df.MitsubishiElectric.co.jp; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: OS3PR01MB6660:EE_|TY3PR01MB11922:EE_ x-ms-office365-filtering-correlation-id: 9a66ce57-810a-4099-5135-08db72e0df36 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: aF8sw76dGK0Z8E7v8zDyqb5WcvIIluXIdZnKKd7YVQPLm95kLv4kh8GL0QUBOMQ6IDA2BrQf3ETOwvb/OmhMqgNZD0pL49ZxKevvjSwuFQloc/5hrpPeM0YxUpLufWLZlCzbt/Q6bBtoHHbH+OUGuNVpVzL6mv02Z7a5E/yzaY5V32wolG9oVAXphZRng876vKnCDFbVnDM3xFT9qcWQcb0xuhGZzbraA/gf2uUgb1mh/70XTSOjkfyrHqWlSmFSLeOJs0WXzVzdN3mY33Oh8eXTVZ9yZVvcuPYvpPDToLmcSR62RBVOkfCVbF6ciUzhjpkCrnYY+AXB5U8oAoEgqaffqE3/R1hPQx2zPOttEcfFwDah15Qy7g3F55Hw6dJN6sPsb4PvPT1d6E1pOJt9QOHmsbqtM7Nrd1LZAMNZ7Gu//D8IXuR502MV7tli7NGU1HeC/tRzD3qbiq9MrNh1J3F5h0tOI/FaRztQXPKd2d4ijUmVVgVuW0zcfRzzdepGwjzLaWNZQ0n1nKX3Z7ZpW+IaYU9khBVCQ8Q2g/pVnCYIvss0dbts5hfTpY055D/iHeJBvzDNzlm+ZwqREZi0oiKBltVKU9eUaQTlZbCzqbmEhXIQU3PrJadhx0YN5u5r1xejzvId7I6F+HzU94sVkg== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:OS3PR01MB6660.jpnprd01.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230028)(4636009)(39860400002)(136003)(376002)(346002)(396003)(366004)(451199021)(2906002)(186003)(7696005)(38100700002)(122000001)(71200400001)(83380400001)(6666004)(107886003)(6506007)(26005)(9686003)(53546011)(966005)(3480700007)(55016003)(41300700001)(54906003)(86362001)(110136005)(478600001)(38070700005)(5660300002)(316002)(66946007)(76116006)(66476007)(66556008)(66446008)(64756008)(33656002)(8936002)(8676002)(4326008)(52536014)(7116003)(95630200002);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-2022-jp?B?ZWdkSmFVMmJMZ0l2U0ZVR0NKZXUvSlZidk5iZnBGUHRQU3dNYnJCUS8w?= =?iso-2022-jp?B?djkrZThnSjYwRGVSaE9VME8rTmRYcGwwR0FBbEp3QW90NWJGd2lDY21m?= =?iso-2022-jp?B?cGl5K1lENWZ4UFN5aFcrT1hhanVmdStmZytoTDU5WW5QV2JBR1hUUTBD?= =?iso-2022-jp?B?azQvYmFFK3UxdXpISlJpd0VUaWxVSWFobzFCeE5xVm9DY0lHVE9VZDcz?= =?iso-2022-jp?B?bm4zcDduS1B5SXMwTTNjczBGbTB1bzRWa1FZNXlBWGRmUkNud29BN0cw?= =?iso-2022-jp?B?OFhPczZTc3EzNXUzME1hTzlHSEJZQ0l3ZjhydFZxc1kvaHRrSDdsTzl5?= =?iso-2022-jp?B?U2QrWGNlNllOaU9uZ2VnQmttcGdvcWlCYUNVSmM4cGdLYXVGVHdwTVBV?= =?iso-2022-jp?B?Q0lIUGJnQ3I4OTNyVXNaaFJCbHZsWkNMSVdMaXZzaHpTNUUrVUlkYWRO?= =?iso-2022-jp?B?RXkwL0pPTmlUbmlQd3l2Q3ZBMjNPaEpVTFNDdEwzeG5ab0Y2OXh2aG94?= =?iso-2022-jp?B?d2I4eXh2QTZrVy83WmQrYmF2VFVzajlpTmV6U0xSVHBUbG02dkprOXN5?= =?iso-2022-jp?B?RWhzcU5iMHZ3b2dvVHh0c3FLajk5QkQ1dWJ0UEdMUEdITHgvQmVVOGQ5?= =?iso-2022-jp?B?SHhOcmtSUlprQWxDZVppUWxESm1OcVh0eXkrQlF5Y1ZrTkJtMUFwTGlT?= =?iso-2022-jp?B?amlIM2VYVUNHYTc5Mk1FcGluUDdzbWFHR0V6NkczOThrRGNoZ0pnV2dR?= =?iso-2022-jp?B?ZjVOa3BBRjIyT2YxODV1dy90aGUzMTVsSW9vSk0rWDRQazBIUGdxcklp?= =?iso-2022-jp?B?UW9Id3ExVGJBQzJYNlBXcWJMWVI1clFMaldkWEdBVnhLUFpEeHl0aFdi?= =?iso-2022-jp?B?dGhZVzQxdFZwS09SZWpIaXpoc1UwUmhjSkhhNytSenRrdEJCbEphTlZF?= =?iso-2022-jp?B?TXRxVUt6NUhweGgyYmpPNWdaYzNCZDJONjNmMFg0VjJTSnQ3VVg2VE9r?= =?iso-2022-jp?B?eDE0UCtLZFNzbmxmRGliaExoSkx1eGtlQWUzV01YVmlqY3doZ0toa3RL?= =?iso-2022-jp?B?VUJacXdEZFpEdnBMVVFmYnBWRzErVzRyLzhLUmh1SlZ6TXpxdndQbUlo?= =?iso-2022-jp?B?OVk0NnN0WFp5aGpYb3ljanQwMHlVOTFvR1ZDN1FKMURTOTVCb1JBZ2hL?= =?iso-2022-jp?B?VGRlQWM5Wk9Gb1ZQT2dYTjlJSEhqZEFVOHJBaFF4WFlrWTlWU25WZGFl?= =?iso-2022-jp?B?NXFYbXdWNzQxUFRJR3FrdFdUWHU1WVlqUVhtQ1VmeXR4SEhKQi9FT3Iw?= =?iso-2022-jp?B?ZW9tN1lsVmptSUlZM0t2WTlGd3cvMFc5eXhpbnN0UVdFKzFWRGo1NlI2?= =?iso-2022-jp?B?SVJOWnVjdVVKY2NXUngzRkIzMEZrVW1peTFCbm8xbTFaTEk0ZVltVERR?= =?iso-2022-jp?B?SmVTS2VycUdxSHRvZG8yU3dlMkhVQ2VmbDFKaDl4Z29BWEk0TmExTFo1?= =?iso-2022-jp?B?SzhHM2pmU0hDeFFDaGw4WkZBOXI0YVdSZGV0bTc3dTZyUDZaY3BwSWxX?= =?iso-2022-jp?B?R1Btd0R5YzViRFpjZGUwb1RoRVNMaHNmaHRnVUhIRXB6OE9iSHZ5NHkz?= =?iso-2022-jp?B?bVJQdWwvWFJtU3NVbWVoRGZKMXduZy9ETFdMSGM2VFZuSzVqYW5tV1Vm?= =?iso-2022-jp?B?U2pHSzQrVmg5R254NlJUUzZocCtvb2IwZERHMEV1QW1ORmQyWFVqQXds?= =?iso-2022-jp?B?OUFWdkZOQlpoTXhiamNablN0dVl6cUpVdVl6UVVmallqRjBZYTdueUNF?= =?iso-2022-jp?B?enN6NDVlSjV5WUhEM1RtWTA2b1N0SUh1UWNyUkdNUWRzdWFyZnk4bEtn?= =?iso-2022-jp?B?MUZhVFJUeGtxaGN0WVo1QnpaVHpDeXQwNktwZVdQSjNDdFk4ZVRJOTlp?= =?iso-2022-jp?B?TjZvdnBOT3hha0lyMDI5d3dNR1ljQTZLT3ZMbjc4anV3RUtQRjEyTHFL?= =?iso-2022-jp?B?bTV4RURwRHEzRUJsTThrVTlodUZkUmdTbTltcHVhemxHRkswWi9jaXkv?= =?iso-2022-jp?B?UjFTM1NGK1NDRXdEMDMyYXRYNWhMNk9NQmliYTNVWUs3aElIQXMvYWxM?= =?iso-2022-jp?B?SEUzNUlYVWxtcWdrVUp5WW5rQWo3czVpb0J4MlIydWd1RlVyTWVJaWNv?= =?iso-2022-jp?B?V0ZVQzhHaEF4dnkwNVVVL3NOOVZsaUErTVZIeFp3WHpvbDBwa1psOEdG?= =?iso-2022-jp?B?ckRkUkdobjNBMjAwRUlJQkJSUFErWWJHeXMrS1QxZEN4K0hFM0l6SXN6?= =?iso-2022-jp?B?LzVLVA==?= Content-Type: text/plain; charset="iso-2022-jp" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: df.MitsubishiElectric.co.jp X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: OS3PR01MB6660.jpnprd01.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9a66ce57-810a-4099-5135-08db72e0df36 X-MS-Exchange-CrossTenant-originalarrivaltime: 22 Jun 2023 05:23:54.5722 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: c5a75b62-4bff-4c96-a720-6621ce9978e5 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: dFmAkdQkz3frkuqNN59evAeC/kgrsIbjFTMLwWc9l1uzH6Ugpd0UtGiBrdRO8b7MO44EKnxX2kGsiHnqHKAKZQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TY3PR01MB11922 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk Hi Mr.Momjian, Mr.Pyhalov, hackers. > From: Bruce Momjian > Sent: Thursday, June 22, 2023 12:44 AM > On Tue, Jun 20, 2023 at 09:59:11AM +0300, Alexander Pyhalov wrote: > > > Therefore, it seems like it would be near-zero cost to just call > > > conn =3D > > > GetConnection() and then PQserverVersion(conn), and ReleaseConnection= (). > > > You can then use the return value of PQserverVersion() to determine > > > if you can push down partial aggregates. > > > > Hi. > > Currently we don't get remote connection while planning if > > use_remote_estimate is not set. > > Such change would require to get remote connection in planner, not in > > executor. > > This can lead to change of behavior (like errors in explain when user > > mapping is wrong - e.g. bad password is specified). > > Also this potentially can lead to establishing connections even when > > plan node is not actually used (like extreme example - select > > sum(score) from t limit 0). > > I'm not saying we shouldn't do it - just hint at possible consequences. >=20 > Agreed. I noticed it was doing FDW connections during optimization, but = didn't see the postgres_fdw option that would > turn it off. > Interestingly, it is disabled by default. >=20 > After considering the options, I think we should have a postgres_fdw opti= on called "planner_version_check", and default > that false. When false, a remote server version check will not be perfor= med during planning and partial aggregates will be > always be considered. When true, a version check will be performed durin= g planning and partial aggregate pushdown > disabled for pre-PG 17 foreign servers during the query. >=20 > If we want to be more specific, we can call it "check_partial_aggregate_s= upport". Thank you both for your advice. We will address the compatibility issues as follows. Approach1-3: I will add a postgres_fdw option "check_partial_aggregate_support". This option is false, default. Only if this option is true, postgres_fdw connect to the remote server and = get the version of the remote server. And if the version of the remote server is less than PG17, then partial agg= regate push down to the remote server is disable. Sincerely yours, Yuuki Fujii -- Yuuki Fujii Information Technology R&D Center Mitsubishi Electric Corporation > -----Original Message----- > From: Bruce Momjian > Sent: Thursday, June 22, 2023 12:44 AM > To: Alexander Pyhalov > Cc: Fujii Yuki/=1B$BF#0f=1B(B =1B$BM:5,=1B(B(MELCO/=1B$B>pJsAm8&=1B(B =1B= $B#D#M:GE,#G=1B(B) ; > PostgreSQL-development ; Andres Freund ; Tom Lane > ; Tomas Vondra ; Julien= Rouhaud ; > Daniel Gustafsson ; Ilya Gladyshev > Subject: Re: Partial aggregates pushdown >=20 > On Tue, Jun 20, 2023 at 09:59:11AM +0300, Alexander Pyhalov wrote: > > > Therefore, it seems like it would be near-zero cost to just call > > > conn =3D > > > GetConnection() and then PQserverVersion(conn), and ReleaseConnection= (). > > > You can then use the return value of PQserverVersion() to determine > > > if you can push down partial aggregates. > > > > Hi. > > Currently we don't get remote connection while planning if > > use_remote_estimate is not set. > > Such change would require to get remote connection in planner, not in > > executor. > > This can lead to change of behavior (like errors in explain when user > > mapping is wrong - e.g. bad password is specified). > > Also this potentially can lead to establishing connections even when > > plan node is not actually used (like extreme example - select > > sum(score) from t limit 0). > > I'm not saying we shouldn't do it - just hint at possible consequences. >=20 > Agreed. I noticed it was doing FDW connections during optimization, but = didn't see the postgres_fdw option that would > turn it off. > Interestingly, it is disabled by default. >=20 > After considering the options, I think we should have a postgres_fdw opti= on called "planner_version_check", and default > that false. When false, a remote server version check will not be perfor= med during planning and partial aggregates will be > always be considered. When true, a version check will be performed durin= g planning and partial aggregate pushdown > disabled for pre-PG 17 foreign servers during the query. >=20 > If we want to be more specific, we can call it "check_partial_aggregate_s= upport". >=20 > -- > Bruce Momjian https://momjian.us > EDB https://enterprisedb.com >=20 > Only you can decide what is important to you.