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 1qKJ2z-000FQS-4g for pgsql-hackers@arkaria.postgresql.org; Fri, 14 Jul 2023 13:41:26 +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 1qKJ1y-002RfS-9i for pgsql-hackers@arkaria.postgresql.org; Fri, 14 Jul 2023 13:40:22 +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 1qKJ1x-002RfK-PG for pgsql-hackers@lists.postgresql.org; Fri, 14 Jul 2023 13:40:22 +0000 Received: from mail.postgrespro.ru ([93.174.131.139]) by magus.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1qKJ1t-000QoC-RL for pgsql-hackers@postgresql.org; Fri, 14 Jul 2023 13:40:21 +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 7942BE20F6F; Fri, 14 Jul 2023 16:40:16 +0300 (MSK) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=postgrespro.ru; s=mx2023; t=1689342016; bh=RIVb9r5c4NvMr9W1BgWVm9UwUKfkTFtowyVRUssZwIE=; h=Date:From:To:Cc:Subject:In-Reply-To:References:User-Agent: Message-ID:From; b=JAayKfPApUMSGvzU8t7Txm9NeP0gDHMYDZigFbLlpLiNX/zkUF99AGj0cSxqKGtJn 4JIjj4/s7XQnso+jU92gWtvFDPStoTnQkeZ6rF1tpk+ptsaDT6ev7tOYok8EySQvl4 wCqXeXlxSYtr0HrsdlA47M3OJhWdLh85xy6nryJKxsn4Q0jrgCO7VwmUROWf4810+0 lNGR8gpp8ZlV6vlxJ5zYSKUnJi39TLRAiiS6hssRyd8Im/O2WnAO8wzjkSfMmyKfyD Jajlmha7SKmVwEryO94btsZXFv7+dktAtaJdNjBF7i4PdVMuI5968qVTwLxJ2nKuge vgm367XjQuoFA== MIME-Version: 1.0 Date: Fri, 14 Jul 2023 16:40:16 +0300 From: Alexander Pyhalov To: "Fujii.Yuki@df.MitsubishiElectric.co.jp" Cc: Bruce Momjian , PostgreSQL-development , Andres Freund , Tom Lane , Tomas Vondra , Julien Rouhaud , Daniel Gustafsson , Ilya Gladyshev Subject: Re: Partial aggregates pushdown In-Reply-To: References: <8ffedecae0d21a3cd93805baf1dcc0de@postgrespro.ru> User-Agent: Roundcube Webmail/1.4.11 Message-ID: <6893fbdcd63140179f4987b76edba95d@postgrespro.ru> X-Sender: a.pyhalov@postgrespro.ru Content-Type: multipart/mixed; boundary="=_059c72650b6e5885febd909035af192c" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --=_059c72650b6e5885febd909035af192c Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset=UTF-8; format=flowed Fujii.Yuki@df.MitsubishiElectric.co.jp писал 2023-07-10 10:35: > I have modified the program except for the point "if the version of > the remote server is less than PG17". > Instead, we have addressed the following. > "If check_partial_aggregate_support is true and the remote server > version is older than the local server > version, postgres_fdw does not assume that the partial aggregate > function is on the remote server unless > the partial aggregate function and the aggregate function match." > The reason for this is to maintain compatibility with any aggregate > function that does not support partial > aggregate in one version of V1 (V1 is PG17 or higher), even if the > next version supports partial aggregate. > For example, string_agg does not support partial aggregation in PG15, > but it will support partial aggregation > in PG16. > Hi. 1) In foreign_join_ok() should we set fpinfo->user if fpinfo->check_partial_aggregate_support is set like it's done for fpinfo->use_remote_estimate? It seems we can end up with fpinfo->user = NULL if use_remote_estimate is not set. 2) It seeems we found an additional issue with original patch, which is present in current one. I'm attaching a patch which seems to fix it, but I'm not quite sure in it. > We have not been able to add a test for the case where the remote > server version is older than the > local server version to the regression test. Is there any way to add > such tests to the existing regression > tests? > -- Best regards, Alexander Pyhalov, Postgres Professional --=_059c72650b6e5885febd909035af192c Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=0001-For-partial-aggregation-we-can-t-rely-on-the-fact-th.diff Content-Disposition: attachment; filename=0001-For-partial-aggregation-we-can-t-rely-on-the-fact-th.diff; size=12124 RnJvbSAxODdkMTUxODUyMDBhYWJjMjJjNTIxOWJiZTYzNmJjOTUwNjcwYTc4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgUHloYWxvdiA8YS5weWhhbG92QHBvc3RncmVz cHJvLnJ1PgpEYXRlOiBGcmksIDE0IEp1bCAyMDIzIDE2OjM0OjAyICswMzAwClN1YmplY3Q6IFtQ QVRDSF0gRm9yIHBhcnRpYWwgYWdncmVnYXRpb24gd2UgY2FuJ3QgcmVseSBvbiB0aGUgZmFjdCB0 aGF0IGV2ZXJ5CiB2YXIgaXMgYSBwYXJ0IG9mIHNvbWUgR1JPVVAgQlkgZXhwcmVzc2lvbgoKLS0t CiAuLi4vcG9zdGdyZXNfZmR3L2V4cGVjdGVkL3Bvc3RncmVzX2Zkdy5vdXQgICAgfCAxMjAgKysr KysrKysrKysrKysrKysrCiBjb250cmliL3Bvc3RncmVzX2Zkdy9wb3N0Z3Jlc19mZHcuYyAgICAg ICAgICAgfCAgMzEgKysrLS0KIGNvbnRyaWIvcG9zdGdyZXNfZmR3L3NxbC9wb3N0Z3Jlc19mZHcu c3FsICAgICB8ICAgOSArKwogMyBmaWxlcyBjaGFuZ2VkLCAxNTIgaW5zZXJ0aW9ucygrKSwgOCBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9jb250cmliL3Bvc3RncmVzX2Zkdy9leHBlY3RlZC9w b3N0Z3Jlc19mZHcub3V0IGIvY29udHJpYi9wb3N0Z3Jlc19mZHcvZXhwZWN0ZWQvcG9zdGdyZXNf ZmR3Lm91dAppbmRleCA4ZDgwYmEwYTZiZS4uMzFlZTQ2MTA0NWMgMTAwNjQ0Ci0tLSBhL2NvbnRy aWIvcG9zdGdyZXNfZmR3L2V4cGVjdGVkL3Bvc3RncmVzX2Zkdy5vdXQKKysrIGIvY29udHJpYi9w b3N0Z3Jlc19mZHcvZXhwZWN0ZWQvcG9zdGdyZXNfZmR3Lm91dApAQCAtOTk1NSw2ICs5OTU1LDEy NiBAQCBTRUxFQ1QgYiwgYXZnKGEpLCBtYXgoYSksIGNvdW50KCopIEZST00gcGFnZ190YWIgR1JP VVAgQlkgYiBPUkRFUiBCWSAxOwogIDQ5IHwgMTkuMDAwMDAwMDAwMDAwMDAwMCB8ICAyOSB8ICAg IDYwCiAoNTAgcm93cykKIAorRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQorU0VMRUNUIGIv MiwgYXZnKGEpLCBtYXgoYSksIGNvdW50KCopIEZST00gcGFnZ190YWIgR1JPVVAgQlkgYi8yIE9S REVSIEJZIDE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBTb3J0CisgICBPdXRw dXQ6ICgocGFnZ190YWIuYiAvIDIpKSwgKGF2ZyhwYWdnX3RhYi5hKSksIChtYXgocGFnZ190YWIu YSkpLCAoY291bnQoKikpCisgICBTb3J0IEtleTogKChwYWdnX3RhYi5iIC8gMikpCisgICAtPiAg RmluYWxpemUgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgT3V0cHV0OiAoKHBhZ2dfdGFiLmIgLyAy KSksIGF2ZyhwYWdnX3RhYi5hKSwgbWF4KHBhZ2dfdGFiLmEpLCBjb3VudCgqKQorICAgICAgICAg R3JvdXAgS2V5OiAoKHBhZ2dfdGFiLmIgLyAyKSkKKyAgICAgICAgIC0+ICBBcHBlbmQKKyAgICAg ICAgICAgICAgIC0+ICBGb3JlaWduIFNjYW4KKyAgICAgICAgICAgICAgICAgICAgIE91dHB1dDog KChwYWdnX3RhYi5iIC8gMikpLCAoUEFSVElBTCBhdmcocGFnZ190YWIuYSkpLCAoUEFSVElBTCBt YXgocGFnZ190YWIuYSkpLCAoUEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAg IFJlbGF0aW9uczogQWdncmVnYXRlIG9uIChwdWJsaWMuZnBhZ2dfdGFiX3AxIHBhZ2dfdGFiKQor ICAgICAgICAgICAgICAgICAgICAgUmVtb3RlIFNRTDogU0VMRUNUIChiIC8gMiksIGF2Z19wX2lu dDQoYSksIG1heChhKSwgY291bnQoKikgRlJPTSBwdWJsaWMucGFnZ190YWJfcDEgR1JPVVAgQlkg MQorICAgICAgICAgICAgICAgLT4gIEZvcmVpZ24gU2NhbgorICAgICAgICAgICAgICAgICAgICAg T3V0cHV0OiAoKHBhZ2dfdGFiXzEuYiAvIDIpKSwgKFBBUlRJQUwgYXZnKHBhZ2dfdGFiXzEuYSkp LCAoUEFSVElBTCBtYXgocGFnZ190YWJfMS5hKSksIChQQVJUSUFMIGNvdW50KCopKQorICAgICAg ICAgICAgICAgICAgICAgUmVsYXRpb25zOiBBZ2dyZWdhdGUgb24gKHB1YmxpYy5mcGFnZ190YWJf cDIgcGFnZ190YWJfMSkKKyAgICAgICAgICAgICAgICAgICAgIFJlbW90ZSBTUUw6IFNFTEVDVCAo YiAvIDIpLCBhdmdfcF9pbnQ0KGEpLCBtYXgoYSksIGNvdW50KCopIEZST00gcHVibGljLnBhZ2df dGFiX3AyIEdST1VQIEJZIDEKKyAgICAgICAgICAgICAgIC0+ICBGb3JlaWduIFNjYW4KKyAgICAg ICAgICAgICAgICAgICAgIE91dHB1dDogKChwYWdnX3RhYl8yLmIgLyAyKSksIChQQVJUSUFMIGF2 ZyhwYWdnX3RhYl8yLmEpKSwgKFBBUlRJQUwgbWF4KHBhZ2dfdGFiXzIuYSkpLCAoUEFSVElBTCBj b3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAgIFJlbGF0aW9uczogQWdncmVnYXRlIG9uIChw dWJsaWMuZnBhZ2dfdGFiX3AzIHBhZ2dfdGFiXzIpCisgICAgICAgICAgICAgICAgICAgICBSZW1v dGUgU1FMOiBTRUxFQ1QgKGIgLyAyKSwgYXZnX3BfaW50NChhKSwgbWF4KGEpLCBjb3VudCgqKSBG Uk9NIHB1YmxpYy5wYWdnX3RhYl9wMyBHUk9VUCBCWSAxCisoMTkgcm93cykKKworU0VMRUNUIGIv MiwgYXZnKGEpLCBtYXgoYSksIGNvdW50KCopIEZST00gcGFnZ190YWIgR1JPVVAgQlkgYi8yIE9S REVSIEJZIDE7CisgP2NvbHVtbj8gfCAgICAgICAgIGF2ZyAgICAgICAgIHwgbWF4IHwgY291bnQg CistLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLSstLS0tLS0tCisgICAgICAg IDAgfCAxMC41MDAwMDAwMDAwMDAwMDAwIHwgIDIxIHwgICAxMjAKKyAgICAgICAgMSB8IDEyLjUw MDAwMDAwMDAwMDAwMDAgfCAgMjMgfCAgIDEyMAorICAgICAgICAyIHwgMTQuNTAwMDAwMDAwMDAw MDAwMCB8ICAyNSB8ICAgMTIwCisgICAgICAgIDMgfCAxNi41MDAwMDAwMDAwMDAwMDAwIHwgIDI3 IHwgICAxMjAKKyAgICAgICAgNCB8IDE4LjUwMDAwMDAwMDAwMDAwMDAgfCAgMjkgfCAgIDEyMAor ICAgICAgICA1IHwgMTAuNTAwMDAwMDAwMDAwMDAwMCB8ICAyMSB8ICAgMTIwCisgICAgICAgIDYg fCAxMi41MDAwMDAwMDAwMDAwMDAwIHwgIDIzIHwgICAxMjAKKyAgICAgICAgNyB8IDE0LjUwMDAw MDAwMDAwMDAwMDAgfCAgMjUgfCAgIDEyMAorICAgICAgICA4IHwgMTYuNTAwMDAwMDAwMDAwMDAw MCB8ICAyNyB8ICAgMTIwCisgICAgICAgIDkgfCAxOC41MDAwMDAwMDAwMDAwMDAwIHwgIDI5IHwg ICAxMjAKKyAgICAgICAxMCB8IDEwLjUwMDAwMDAwMDAwMDAwMDAgfCAgMjEgfCAgIDEyMAorICAg ICAgIDExIHwgMTIuNTAwMDAwMDAwMDAwMDAwMCB8ICAyMyB8ICAgMTIwCisgICAgICAgMTIgfCAx NC41MDAwMDAwMDAwMDAwMDAwIHwgIDI1IHwgICAxMjAKKyAgICAgICAxMyB8IDE2LjUwMDAwMDAw MDAwMDAwMDAgfCAgMjcgfCAgIDEyMAorICAgICAgIDE0IHwgMTguNTAwMDAwMDAwMDAwMDAwMCB8 ICAyOSB8ICAgMTIwCisgICAgICAgMTUgfCAxMC41MDAwMDAwMDAwMDAwMDAwIHwgIDIxIHwgICAx MjAKKyAgICAgICAxNiB8IDEyLjUwMDAwMDAwMDAwMDAwMDAgfCAgMjMgfCAgIDEyMAorICAgICAg IDE3IHwgMTQuNTAwMDAwMDAwMDAwMDAwMCB8ICAyNSB8ICAgMTIwCisgICAgICAgMTggfCAxNi41 MDAwMDAwMDAwMDAwMDAwIHwgIDI3IHwgICAxMjAKKyAgICAgICAxOSB8IDE4LjUwMDAwMDAwMDAw MDAwMDAgfCAgMjkgfCAgIDEyMAorICAgICAgIDIwIHwgMTAuNTAwMDAwMDAwMDAwMDAwMCB8ICAy MSB8ICAgMTIwCisgICAgICAgMjEgfCAxMi41MDAwMDAwMDAwMDAwMDAwIHwgIDIzIHwgICAxMjAK KyAgICAgICAyMiB8IDE0LjUwMDAwMDAwMDAwMDAwMDAgfCAgMjUgfCAgIDEyMAorICAgICAgIDIz IHwgMTYuNTAwMDAwMDAwMDAwMDAwMCB8ICAyNyB8ICAgMTIwCisgICAgICAgMjQgfCAxOC41MDAw MDAwMDAwMDAwMDAwIHwgIDI5IHwgICAxMjAKKygyNSByb3dzKQorCistLSBJdCdzIHVuc2FmZSB0 byBwdXNoZG93biB2YXJpYWJsZXMgaWYgd2UgbmVlZCBib3RoIHZhcmlhYmxlIGFuZCB2YXJpYWJs ZS1iYXNlZCBleHByZXNzaW9uCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpCitTRUxFQ1Qg KGIvMik6Om51bWVyaWMsIGF2ZyhhKSwgbWF4KGEpLCBjb3VudCgqKSBGUk9NIHBhZ2dfdGFiIEdS T1VQIEJZIGIvMiBPUkRFUiBCWSAxOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFNvcnQKKyAgIE91dHB1dDogKCgoKHBhZ2dfdGFi LmIgLyAyKSkpOjpudW1lcmljKSwgKGF2ZyhwYWdnX3RhYi5hKSksIChtYXgocGFnZ190YWIuYSkp LCAoY291bnQoKikpLCAoKHBhZ2dfdGFiLmIgLyAyKSkKKyAgIFNvcnQgS2V5OiAoKCgocGFnZ190 YWIuYiAvIDIpKSk6Om51bWVyaWMpCisgICAtPiAgRmluYWxpemUgR3JvdXBBZ2dyZWdhdGUKKyAg ICAgICAgIE91dHB1dDogKCgocGFnZ190YWIuYiAvIDIpKSk6Om51bWVyaWMsIGF2ZyhwYWdnX3Rh Yi5hKSwgbWF4KHBhZ2dfdGFiLmEpLCBjb3VudCgqKSwgKChwYWdnX3RhYi5iIC8gMikpCisgICAg ICAgICBHcm91cCBLZXk6ICgocGFnZ190YWIuYiAvIDIpKQorICAgICAgICAgLT4gIFNvcnQKKyAg ICAgICAgICAgICAgIE91dHB1dDogKChwYWdnX3RhYi5iIC8gMikpLCBwYWdnX3RhYi5iLCAoUEFS VElBTCBhdmcocGFnZ190YWIuYSkpLCAoUEFSVElBTCBtYXgocGFnZ190YWIuYSkpLCAoUEFSVElB TCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgIFNvcnQgS2V5OiAoKHBhZ2dfdGFiLmIgLyAyKSkK KyAgICAgICAgICAgICAgIC0+ICBBcHBlbmQKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJ0 aWFsIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogKChw YWdnX3RhYi5iIC8gMikpLCBwYWdnX3RhYi5iLCBQQVJUSUFMIGF2ZyhwYWdnX3RhYi5hKSwgUEFS VElBTCBtYXgocGFnZ190YWIuYSksIFBBUlRJQUwgY291bnQoKikKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgIEdyb3VwIEtleTogKHBhZ2dfdGFiLmIgLyAyKQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgLT4gIEZvcmVpZ24gU2NhbiBvbiBwdWJsaWMuZnBhZ2dfdGFiX3AxIHBhZ2dfdGFi CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IChwYWdnX3RhYi5iIC8g MiksIHBhZ2dfdGFiLmIsIHBhZ2dfdGFiLmEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFJlbW90ZSBTUUw6IFNFTEVDVCBhLCBiIEZST00gcHVibGljLnBhZ2dfdGFiX3AxCisgICAg ICAgICAgICAgICAgICAgICAtPiAgUGFydGlhbCBIYXNoQWdncmVnYXRlCisgICAgICAgICAgICAg ICAgICAgICAgICAgICBPdXRwdXQ6ICgocGFnZ190YWJfMS5iIC8gMikpLCBwYWdnX3RhYl8xLmIs IFBBUlRJQUwgYXZnKHBhZ2dfdGFiXzEuYSksIFBBUlRJQUwgbWF4KHBhZ2dfdGFiXzEuYSksIFBB UlRJQUwgY291bnQoKikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyb3VwIEtleTogKHBh Z2dfdGFiXzEuYiAvIDIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgRm9yZWlnbiBT Y2FuIG9uIHB1YmxpYy5mcGFnZ190YWJfcDIgcGFnZ190YWJfMQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgT3V0cHV0OiAocGFnZ190YWJfMS5iIC8gMiksIHBhZ2dfdGFiXzEuYiwg cGFnZ190YWJfMS5hCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZW1vdGUgU1FM OiBTRUxFQ1QgYSwgYiBGUk9NIHB1YmxpYy5wYWdnX3RhYl9wMgorICAgICAgICAgICAgICAgICAg ICAgLT4gIFBhcnRpYWwgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAg T3V0cHV0OiAoKHBhZ2dfdGFiXzIuYiAvIDIpKSwgcGFnZ190YWJfMi5iLCBQQVJUSUFMIGF2Zyhw YWdnX3RhYl8yLmEpLCBQQVJUSUFMIG1heChwYWdnX3RhYl8yLmEpLCBQQVJUSUFMIGNvdW50KCop CisgICAgICAgICAgICAgICAgICAgICAgICAgICBHcm91cCBLZXk6IChwYWdnX3RhYl8yLmIgLyAy KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIEZvcmVpZ24gU2NhbiBvbiBwdWJsaWMu ZnBhZ2dfdGFiX3AzIHBhZ2dfdGFiXzIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IE91dHB1dDogKHBhZ2dfdGFiXzIuYiAvIDIpLCBwYWdnX3RhYl8yLmIsIHBhZ2dfdGFiXzIuYQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVtb3RlIFNRTDogU0VMRUNUIGEsIGIg RlJPTSBwdWJsaWMucGFnZ190YWJfcDMKKygyOCByb3dzKQorCitTRUxFQ1QgKGIvMik6Om51bWVy aWMsIGF2ZyhhKSwgbWF4KGEpLCBjb3VudCgqKSBGUk9NIHBhZ2dfdGFiIEdST1VQIEJZIGIvMiBP UkRFUiBCWSAxOworIG51bWVyaWMgfCAgICAgICAgIGF2ZyAgICAgICAgIHwgbWF4IHwgY291bnQg CistLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tKy0tLS0tLS0KKyAgICAgICAw IHwgMTAuNTAwMDAwMDAwMDAwMDAwMCB8ICAyMSB8ICAgMTIwCisgICAgICAgMSB8IDEyLjUwMDAw MDAwMDAwMDAwMDAgfCAgMjMgfCAgIDEyMAorICAgICAgIDIgfCAxNC41MDAwMDAwMDAwMDAwMDAw IHwgIDI1IHwgICAxMjAKKyAgICAgICAzIHwgMTYuNTAwMDAwMDAwMDAwMDAwMCB8ICAyNyB8ICAg MTIwCisgICAgICAgNCB8IDE4LjUwMDAwMDAwMDAwMDAwMDAgfCAgMjkgfCAgIDEyMAorICAgICAg IDUgfCAxMC41MDAwMDAwMDAwMDAwMDAwIHwgIDIxIHwgICAxMjAKKyAgICAgICA2IHwgMTIuNTAw MDAwMDAwMDAwMDAwMCB8ICAyMyB8ICAgMTIwCisgICAgICAgNyB8IDE0LjUwMDAwMDAwMDAwMDAw MDAgfCAgMjUgfCAgIDEyMAorICAgICAgIDggfCAxNi41MDAwMDAwMDAwMDAwMDAwIHwgIDI3IHwg ICAxMjAKKyAgICAgICA5IHwgMTguNTAwMDAwMDAwMDAwMDAwMCB8ICAyOSB8ICAgMTIwCisgICAg ICAxMCB8IDEwLjUwMDAwMDAwMDAwMDAwMDAgfCAgMjEgfCAgIDEyMAorICAgICAgMTEgfCAxMi41 MDAwMDAwMDAwMDAwMDAwIHwgIDIzIHwgICAxMjAKKyAgICAgIDEyIHwgMTQuNTAwMDAwMDAwMDAw MDAwMCB8ICAyNSB8ICAgMTIwCisgICAgICAxMyB8IDE2LjUwMDAwMDAwMDAwMDAwMDAgfCAgMjcg fCAgIDEyMAorICAgICAgMTQgfCAxOC41MDAwMDAwMDAwMDAwMDAwIHwgIDI5IHwgICAxMjAKKyAg ICAgIDE1IHwgMTAuNTAwMDAwMDAwMDAwMDAwMCB8ICAyMSB8ICAgMTIwCisgICAgICAxNiB8IDEy LjUwMDAwMDAwMDAwMDAwMDAgfCAgMjMgfCAgIDEyMAorICAgICAgMTcgfCAxNC41MDAwMDAwMDAw MDAwMDAwIHwgIDI1IHwgICAxMjAKKyAgICAgIDE4IHwgMTYuNTAwMDAwMDAwMDAwMDAwMCB8ICAy NyB8ICAgMTIwCisgICAgICAxOSB8IDE4LjUwMDAwMDAwMDAwMDAwMDAgfCAgMjkgfCAgIDEyMAor ICAgICAgMjAgfCAxMC41MDAwMDAwMDAwMDAwMDAwIHwgIDIxIHwgICAxMjAKKyAgICAgIDIxIHwg MTIuNTAwMDAwMDAwMDAwMDAwMCB8ICAyMyB8ICAgMTIwCisgICAgICAyMiB8IDE0LjUwMDAwMDAw MDAwMDAwMDAgfCAgMjUgfCAgIDEyMAorICAgICAgMjMgfCAxNi41MDAwMDAwMDAwMDAwMDAwIHwg IDI3IHwgICAxMjAKKyAgICAgIDI0IHwgMTguNTAwMDAwMDAwMDAwMDAwMCB8ICAyOSB8ICAgMTIw CisoMjUgcm93cykKKwogLS0gUGFydGlhbCBhZ2dyZWdhdGVzIGFyZSBzYWZlIHRvIHB1c2ggZG93 biBmb3IgYWxsIGJ1aWx0LWluIGFnZ3JlZ2F0ZXMKIEVYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9G RikKIFNFTEVDVCAvKiBhZ2dyZWdhdGUgZnVuY3Rpb24gPD4gYWdncGFydGlhbGZ1bmMgKi8KZGlm ZiAtLWdpdCBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3Bvc3RncmVzX2Zkdy5jIGIvY29udHJpYi9w b3N0Z3Jlc19mZHcvcG9zdGdyZXNfZmR3LmMKaW5kZXggNWM0OGM1ZDUwZGMuLmVlYzc2YTAwNDg4 IDEwMDY0NAotLS0gYS9jb250cmliL3Bvc3RncmVzX2Zkdy9wb3N0Z3Jlc19mZHcuYworKysgYi9j b250cmliL3Bvc3RncmVzX2Zkdy9wb3N0Z3Jlc19mZHcuYwpAQCAtNjM4MSwxMyArNjM4MSwxNyBA QCBmb3JlaWduX2dyb3VwaW5nX29rKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpncm91 cGVkX3JlbCwKIAlMaXN0Q2VsbCAgICpsYzsKIAlpbnQJCQlpOwogCUxpc3QJICAgKnRsaXN0ID0g TklMOworCWJvb2wJcGFydGlhbCA9IGZhbHNlOwogCiAJLyogV2UgY3VycmVudGx5IGRvbid0IHN1 cHBvcnQgcHVzaGluZyBHcm91cGluZyBTZXRzLiAqLwogCWlmIChxdWVyeS0+Z3JvdXBpbmdTZXRz KQogCQlyZXR1cm4gZmFsc2U7CiAKKwlpZiAocGF0eXBlID09IFBBUlRJVElPTldJU0VfQUdHUkVH QVRFX1BBUlRJQUwpCisJCXBhcnRpYWwgPSB0cnVlOworCiAJLyogSXQncyB1bnNhZmUgdG8gcHVz aCBoYXZpbmcgc3RhdGVtZW50cyB3aXRoIHBhcnRpYWwgYWdncmVnYXRlcyAqLwotCWlmICgocGF0 eXBlID09IFBBUlRJVElPTldJU0VfQUdHUkVHQVRFX1BBUlRJQUwpICYmIGhhdmluZ1F1YWwpCisJ aWYgKHBhcnRpYWwgJiYgaGF2aW5nUXVhbCkKIAkJcmV0dXJuIGZhbHNlOwogCiAJLyogR2V0IHRo ZSBmcGluZm8gb2YgdGhlIHVuZGVybHlpbmcgc2NhbiByZWxhdGlvbi4gKi8KQEAgLTY0NjEsMTEg KzY0NjUsMTcgQEAgZm9yZWlnbl9ncm91cGluZ19vayhQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0 SW5mbyAqZ3JvdXBlZF9yZWwsCiAJCX0KIAkJZWxzZQogCQl7CisJCQkvKgorCQkJICogRm9yIHBh cnRpYWwgYWdncmVnYXRpb24gd2UgY2FuJ3QgcmVseSBvbiB0aGUgZmFjdCB0aGF0IGV2ZXJ5CisJ CQkgKiB2YXIgaXMgYSBwYXJ0IG9mIHNvbWUgR1JPVVAgQlkgZXhwcmVzc2lvbiwgc28gZXh0cmFj dCB2YXJpYWJsZXMKKwkJCSAqIGFuZCBpZiB3ZSBmb3VuZCBzb21lLCBhdm9pZCB0byBwdXNoIGl0 IGRvd24uCisJCQkgKi8KKwogCQkJLyoKIAkJCSAqIE5vbi1ncm91cGluZyBleHByZXNzaW9uIHdl IG5lZWQgdG8gY29tcHV0ZS4gIENhbiB3ZSBzaGlwIGl0CiAJCQkgKiBhcy1pcyB0byB0aGUgZm9y ZWlnbiBzZXJ2ZXI/CiAJCQkgKi8KLQkJCWlmIChpc19mb3JlaWduX2V4cHIocm9vdCwgZ3JvdXBl ZF9yZWwsIGV4cHIpICYmCisJCQlpZiAoIXBhcnRpYWwgJiYgaXNfZm9yZWlnbl9leHByKHJvb3Qs IGdyb3VwZWRfcmVsLCBleHByKSAmJgogCQkJCSFpc19mb3JlaWduX3BhcmFtKHJvb3QsIGdyb3Vw ZWRfcmVsLCBleHByKSkKIAkJCXsKIAkJCQkvKiBZZXMsIHNvIGFkZCB0byB0bGlzdCBhcy1pczsg T0sgdG8gc3VwcHJlc3MgZHVwbGljYXRlcyAqLwpAQCAtNjQ4OSwxNCArNjQ5OSwxNyBAQCBmb3Jl aWduX2dyb3VwaW5nX29rKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpncm91cGVkX3Jl bCwKIAkJCQkJcmV0dXJuIGZhbHNlOwogCiAJCQkJLyoKLQkJCQkgKiBBZGQgYWdncmVnYXRlcywg aWYgYW55LCBpbnRvIHRoZSB0YXJnZXRsaXN0LiAgUGxhaW4gVmFycwotCQkJCSAqIG91dHNpZGUg YW4gYWdncmVnYXRlIGNhbiBiZSBpZ25vcmVkLCBiZWNhdXNlIHRoZXkgc2hvdWxkIGJlCisJCQkJ ICogQWRkIGFnZ3JlZ2F0ZXMsIGlmIGFueSwgaW50byB0aGUgdGFyZ2V0bGlzdC4gIFdoZW4gZGVh bGluZworCQkJCSAqIHdpdGggdXN1YWwgYWdncmVnYXRpb25zLCAgcGxhaW4gVmFycyBvdXRzaWRl IGFuIGFnZ3JlZ2F0ZQorCQkJCSAqIGNhbiBiZSBpZ25vcmVkLCBiZWNhdXNlIHRoZXkgc2hvdWxk IGJlCiAJCQkJICogZWl0aGVyIHNhbWUgYXMgc29tZSBHUk9VUCBCWSBjb2x1bW4gb3IgcGFydCBv ZiBzb21lIEdST1VQCiAJCQkJICogQlkgZXhwcmVzc2lvbi4gIEluIGVpdGhlciBjYXNlLCB0aGV5 IGFyZSBhbHJlYWR5IHBhcnQgb2YKLQkJCQkgKiB0aGUgdGFyZ2V0bGlzdCBhbmQgdGh1cyBubyBu ZWVkIHRvIGFkZCB0aGVtIGFnYWluLiAgSW4gZmFjdAotCQkJCSAqIGluY2x1ZGluZyBwbGFpbiBW YXJzIGluIHRoZSB0bGlzdCB3aGVuIHRoZXkgZG8gbm90IG1hdGNoIGEKLQkJCQkgKiBHUk9VUCBC WSBjb2x1bW4gd291bGQgY2F1c2UgdGhlIGZvcmVpZ24gc2VydmVyIHRvIGNvbXBsYWluCi0JCQkJ ICogdGhhdCB0aGUgc2hpcHBlZCBxdWVyeSBpcyBpbnZhbGlkLgorCQkJCSAqIHRoZSB0YXJnZXRs aXN0IGFuZCB0aHVzIG5vIG5lZWQgdG8gYWRkIHRoZW0gYWdhaW4uIFdoZW4KKwkJCQkgKiBsb29r aW5nIGF0IHBhcnRpYWwgYWdncmVnYXRpb24sIHdlIGNhbiBnZXQgYWRkaXRpb25hbCB2YXJzCisJ CQkJICogbmVlZGVkIGZvciBwYXJ0aWFsIGFnZ3JlZ2F0aW9uIGl0c2VsZiwgd2hpY2ggZG8gbm90 IG1hdGNoCisJCQkJICogZ3JvdXAgYnkgY29sdW1uLiBJbiBmYWN0IGluY2x1ZGluZyBwbGFpbiBW YXJzIGluIHRoZSB0bGlzdAorCQkJCSAqIHdoZW4gdGhleSBkbyBub3QgbWF0Y2ggYSBHUk9VUCBC WSBjb2x1bW4gd291bGQgY2F1c2UgdGhlCisJCQkJICogZm9yZWlnbiBzZXJ2ZXIgdG8gY29tcGxh aW4gdGhhdCB0aGUgc2hpcHBlZCBxdWVyeSBpcyBpbnZhbGlkLgogCQkJCSAqLwogCQkJCWZvcmVh Y2gobCwgYWdndmFycykKIAkJCQl7CkBAIC02NTA0LDYgKzY1MTcsOCBAQCBmb3JlaWduX2dyb3Vw aW5nX29rKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpncm91cGVkX3JlbCwKIAogCQkJ CQlpZiAoSXNBKGFnZ3JlZiwgQWdncmVmKSkKIAkJCQkJCXRsaXN0ID0gYWRkX3RvX2ZsYXRfdGxp c3QodGxpc3QsIGxpc3RfbWFrZTEoYWdncmVmKSk7CisJCQkJCWVsc2UgaWYgKHBhcnRpYWwpCisJ CQkJCQlyZXR1cm4gZmFsc2U7CiAJCQkJfQogCQkJfQogCQl9CmRpZmYgLS1naXQgYS9jb250cmli L3Bvc3RncmVzX2Zkdy9zcWwvcG9zdGdyZXNfZmR3LnNxbCBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3 L3NxbC9wb3N0Z3Jlc19mZHcuc3FsCmluZGV4IDgyNzYzN2IwMDFhLi40ZjkzZTE5MzFkZSAxMDA2 NDQKLS0tIGEvY29udHJpYi9wb3N0Z3Jlc19mZHcvc3FsL3Bvc3RncmVzX2Zkdy5zcWwKKysrIGIv Y29udHJpYi9wb3N0Z3Jlc19mZHcvc3FsL3Bvc3RncmVzX2Zkdy5zcWwKQEAgLTMwMzAsNiArMzAz MCwxNSBAQCBFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpCiBTRUxFQ1QgYiwgYXZnKGEpLCBt YXgoYSksIGNvdW50KCopIEZST00gcGFnZ190YWIgR1JPVVAgQlkgYiBPUkRFUiBCWSAxOwogU0VM RUNUIGIsIGF2ZyhhKSwgbWF4KGEpLCBjb3VudCgqKSBGUk9NIHBhZ2dfdGFiIEdST1VQIEJZIGIg T1JERVIgQlkgMTsKIAorRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQorU0VMRUNUIGIvMiwg YXZnKGEpLCBtYXgoYSksIGNvdW50KCopIEZST00gcGFnZ190YWIgR1JPVVAgQlkgYi8yIE9SREVS IEJZIDE7CitTRUxFQ1QgYi8yLCBhdmcoYSksIG1heChhKSwgY291bnQoKikgRlJPTSBwYWdnX3Rh YiBHUk9VUCBCWSBiLzIgT1JERVIgQlkgMTsKKworLS0gSXQncyB1bnNhZmUgdG8gcHVzaGRvd24g dmFyaWFibGVzIGlmIHdlIG5lZWQgYm90aCB2YXJpYWJsZSBhbmQgdmFyaWFibGUtYmFzZWQgZXhw cmVzc2lvbgorRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQorU0VMRUNUIChiLzIpOjpudW1l cmljLCBhdmcoYSksIG1heChhKSwgY291bnQoKikgRlJPTSBwYWdnX3RhYiBHUk9VUCBCWSBiLzIg T1JERVIgQlkgMTsKK1NFTEVDVCAoYi8yKTo6bnVtZXJpYywgYXZnKGEpLCBtYXgoYSksIGNvdW50 KCopIEZST00gcGFnZ190YWIgR1JPVVAgQlkgYi8yIE9SREVSIEJZIDE7CisKIC0tIFBhcnRpYWwg YWdncmVnYXRlcyBhcmUgc2FmZSB0byBwdXNoIGRvd24gZm9yIGFsbCBidWlsdC1pbiBhZ2dyZWdh dGVzCiBFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpCiBTRUxFQ1QgLyogYWdncmVnYXRlIGZ1 bmN0aW9uIDw+IGFnZ3BhcnRpYWxmdW5jICovCi0tIAoyLjM0LjEKCg== --=_059c72650b6e5885febd909035af192c--