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.96) (envelope-from ) id 1wU08d-000t4J-23 for pgsql-hackers@arkaria.postgresql.org; Mon, 01 Jun 2026 10:44:55 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wU08b-009nKa-0O for pgsql-hackers@arkaria.postgresql.org; Mon, 01 Jun 2026 10:44:53 +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.96) (envelope-from ) id 1wU08a-009nKS-2S for pgsql-hackers@lists.postgresql.org; Mon, 01 Jun 2026 10:44:52 +0000 Received: from mail-dl1-x122a.google.com ([2607:f8b0:4864:20::122a]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wU08Y-00000000dtZ-1VbJ for pgsql-hackers@lists.postgresql.org; Mon, 01 Jun 2026 10:44:52 +0000 Received: by mail-dl1-x122a.google.com with SMTP id a92af1059eb24-136b46c3540so9959487c88.1 for ; Mon, 01 Jun 2026 03:44:50 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1780310688; cv=none; d=google.com; s=arc-20240605; b=gnOOTavxIAM5dP4CvRFEdAOcELecbUyL7/xay6sUYGeMA5oOAt/db0cFQZT/FKZRyS FNIHey6MGBOzlD7ISeGN2svmK4LSmjeaOMWKHfq4iqLGPcP2ARVSSbr5QIz8lqArt9g1 EzDO0snEQnoHfN7RA2XVIHC7ardoA/NRRuql7TMvh587LxoLhblfDwaJ2HlJLKGKUBUX SyxcPwjd1tz9tyC/ZnXMqtsAjAXjRa3OCff8ObEmzm58BE6ll0EN9oyvlM09OR3AnSx7 QQM0MFoaS5rK+JAYSiJpjVD3d6fvfv4VXlpLSm05tO38q/r48hl9mlQAMt7YTbGGCQiQ LyyQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=srtdGu+olHA/IFcOBJAPaK3vGLP/32a2a5+oOkjW62U=; fh=242d5Jp7DZ9ptOeEHg1bJdonGnO80WaT9pF6peyPtrw=; b=eD5Q2a8m8vK8F+am2y4ejcjGTTstMa8D/OzFVzrXovUrKFgZKvS/qxX7923fjKDKnf HJf3+jy8wF7S7O0Xmiu0ZHrZIQrfZoLdKyTzOWRKCrWDRIQh7bATIsBQijA4bb8Urbkb 49mbgoCuB2ltnhuvm4Z7uYaLQlJj0o/dpYvY2m5Z6R5ON+zMlTpfyc47MDjejXf7lMt3 6/EGoruRwJ2WrJKSwRTaVee6mF09Ba2vQFmLNGs4Ro9CLyTkXARX9MM4sPVJlUTvF5Sm udkcq+WzeNK2IGkj7FVzu2O73xB3nKEwBEc8VSg7FYoFjaNrZAE4FGDYLXIc2U55WhjY wXJg==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780310688; x=1780915488; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=srtdGu+olHA/IFcOBJAPaK3vGLP/32a2a5+oOkjW62U=; b=aDkZFHCVDltUI56sRqEB7gYStoEdvkI15vZX71R3xsLSY4gHwMrUBpG2L8NY8DEgDI la2QK9HBR8PDJ/gaudscINCsvA598bAvlPHvf+iiL7McyrNtUxSSitfQAyePiux+E+j4 TMAvYWbMksLYXeXKISfLcZBsufafYYMavGS+xCCtRW+yW60O3ZN0FfEHFuIKbHD2GbXq TCPuXmR9a7pXFv4+d3IDD6wH6NDIiwfFmBzv+BrsccydFhVyQcm8ALRgGEKyC4XRNBZv maNE29V7wUnT6GAHfeydQUbwnVCZzr4CPt3gOHN2IhKe4TKLaFXSZWLMfsyCvIGoR+QY 5VEw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780310688; x=1780915488; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=srtdGu+olHA/IFcOBJAPaK3vGLP/32a2a5+oOkjW62U=; b=XatICJJFRv8sBgRkO2STSxiVYEc1pWMM97Dxzre0Rll0yl4FUOFzvPL11FPQpVBvZr rThNsgHfyQPsPju/OSJsJwf4LhM7qO013Hn7mUy4acUtPbYUypmNTilAnhZ0+bcgV2+J LtmvFRha27kJxj00E4GypBnxmVN5GOrFpXYMvcpa4cQSK0VNWUzQ2jXRAJCevQ9YI4k1 53JDygYVtZ02NbSTH75Kn6Wr0mAEn2U3JZK8brDiEw2HZUACPO2qEaGwYUsiyjZ97Cdl HvpQbhxHSMB5+yAaCd0VYVSSrq7H7nR8mPV2DXgBpM6xbjmMhGjffYl+hyJfBygi4tW6 CUyA== X-Forwarded-Encrypted: i=1; AFNElJ8vJAcKZcAMwqbCrU6eKo9DZDV74K+rOX4VY/blRT4splEI99nkiWPOTmkT3wOF9OCcstvUdCnXYquS8BoA@lists.postgresql.org X-Gm-Message-State: AOJu0YxREDKgA6zmEBHQF/s0UfjTS6Tjf+SkCyk9sv+WBb6Xyg8ilfMk tI3C5yD1MdORfTChOPacDgHJpol7Y+gCZUYsHhwkwQ0pTmkFReDLZorFwrwR4SKDcj9hT5ngrjN HVmO6ahDNsIvAyM7YEAA87PcomTjpqSw= X-Gm-Gg: Acq92OE71KRW3cO/oN54iu4NFGlS4tG7eKiGFXB8zHyxe6OFivtgtJohw4c58BN6Ev8 QSajaXdXBq26T9/DBW+rrxtvkIWeYhyAy1hI2evNtZGtxSkyGa4OiNegegMRzbfSsRYENybKR3m zDPC5PtWTwPPIF7uA7+DGMEMw/BOxupV1CSqDtdMbs1Vv9gJXYCQ9yrYBGJp1pJZfxexX0aSf6e yYzUxkpcy6mKcz7V4IMvQq094lNLdfFLqpf/g39F/4e/GOygq96EERi4LOeT2N/id5iYoKGAY7U g9FZvJTWu9jJf6+2/kZR+F7I5lb/vDtBW37Q5rmc0TLO1DHYp/sUjcRdUkpBGyywnIXQGkDovK0 FfaZ0viUJ94Axd5l7QwKDHdcuUNo95RaiyIv/N6ti26rIvjgZTTbHO7+bNtkEAg== X-Received: by 2002:a05:7300:80c9:b0:2e0:1f09:d924 with SMTP id 5a478bee46e88-304fa526036mr5185667eec.5.1780310688062; Mon, 01 Jun 2026 03:44:48 -0700 (PDT) MIME-Version: 1.0 References: <20250718175314.4513c00a@karst> <20250729174852.14f23557@karst> In-Reply-To: From: Etsuro Fujita Date: Mon, 1 Jun 2026 19:44:34 +0900 X-Gm-Features: AVHnY4IbhOskOn8QsXag19Ghn2j1bpXeKeNKPKb-BpPTDUSpeEAoVRbUkR5kvEQ Message-ID: Subject: Re: [(known) BUG] DELETE/UPDATE more than one row in partitioned foreign table To: Nikita Malakhov Cc: Jehan-Guillaume de Rorthais , pgsql-hackers@lists.postgresql.org Content-Type: multipart/mixed; boundary="00000000000027621c06532ee208" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000027621c06532ee208 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi Nikita, On Fri, May 15, 2026 at 2:23=E2=80=AFAM Nikita Malakhov = wrote: > CFbot was unhappy with previous patch set, so here's updated one Thanks for working on this issue! I took a quick look at the patch set. IIUC I think it's created based on what I proposed in the original thread, which is invasive and thus not back-patchable, so what you are proposing here isn't back-patchable, either, I think. I think we should first work on a back-patchable solution. So I'd like to re-propose the patch that I proposed in this thread before to disallow UPDATE/DELETE in problematic cases [1]. Attached is a new version of the patch. Changes are: * Renamed the new table option inherited to remotely_inherited, to avoid confusion with local inheritance. * Moved the logic to prevent problematic UPDATE/DELETE from a planner function to an executor function, to avoid throwing an error unnecessarily when there are no target rows to update/delete. * Added docs to postgres-fdw.sgml. I'm planning to add the postgresImportForeignSchema() support in the next version. I think the remotely_inherited option would be useful when adding the support for the UPDATE/DELETE, as it could be used to address one of Tom Lane's comments about what I proposed in the original thread that it adds the tabloid condition to a remote UPDATE/DELETE query whether the target table is inherited or not: that could be avoid if the option is set to false. What do you think about that? Best regards, Etsuro Fujita [1] https://www.postgresql.org/message-id/CAPmGK15CQK-oYFMAyq%2BrR0rQapUHtv= AGuGgY5ahERHzZ4tmC8g%40mail.gmail.com --00000000000027621c06532ee208 Content-Type: application/octet-stream; name="postgres_fdw-disallow-upddel-in-problematic-cases-v2.patch" Content-Disposition: attachment; filename="postgres_fdw-disallow-upddel-in-problematic-cases-v2.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mpv2vofk0 ZGlmZiAtLWdpdCBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L2V4cGVjdGVkL3Bvc3RncmVzX2Zkdy5v dXQgYi9jb250cmliL3Bvc3RncmVzX2Zkdy9leHBlY3RlZC9wb3N0Z3Jlc19mZHcub3V0CmluZGV4 IGFhZmZjZjMxMjcxLi5lZjE4NDZjMjBjYyAxMDA2NDQKLS0tIGEvY29udHJpYi9wb3N0Z3Jlc19m ZHcvZXhwZWN0ZWQvcG9zdGdyZXNfZmR3Lm91dAorKysgYi9jb250cmliL3Bvc3RncmVzX2Zkdy9l eHBlY3RlZC9wb3N0Z3Jlc19mZHcub3V0CkBAIC03MTk3LDYgKzcxOTcsNzAgQEAgUkVTRVQgZW5h YmxlX21hdGVyaWFsOwogRFJPUCBGT1JFSUdOIFRBQkxFIHJlbXQyOwogRFJPUCBUQUJMRSBsb2N0 MTsKIERST1AgVEFCTEUgbG9jdDI7CistLSBUZXN0IFVQREFURS9ERUxFVEUgb24gcmVtb3RlbHkt aW5oZXJpdGVkIGZvcmVpZ24gdGFibGVzCitDUkVBVEUgVEFCTEUgcml0ZXN0X3B0IChhIGludCwg YiBpbnQpIFBBUlRJVElPTiBCWSBMSVNUKGEpOworQ1JFQVRFIFRBQkxFIHJpdGVzdF9wdF9wMSBQ QVJUSVRJT04gT0Ygcml0ZXN0X3B0IEZPUiBWQUxVRVMgSU4gKDEpOworQ1JFQVRFIFRBQkxFIHJp dGVzdF9wdF9wMiBQQVJUSVRJT04gT0Ygcml0ZXN0X3B0IEZPUiBWQUxVRVMgSU4gKDIpOworQ1JF QVRFIEZPUkVJR04gVEFCTEUgcml0ZXN0X2Z0IChhIGludCwgYiBpbnQpIFNFUlZFUiBsb29wYmFj ayBPUFRJT05TICh0YWJsZV9uYW1lICdyaXRlc3RfcHQnLCByZW1vdGVseV9pbmhlcml0ZWQgJ3Ry dWUnKTsKK0lOU0VSVCBJTlRPIHJpdGVzdF9mdCBWQUxVRVMgKDEsIDEwKSwgKDIsIDIwKTsKKy0t IFVzZSByYW5kb20oKSBzbyB0aGF0IFVQREFURS9ERUxFVEUgaXMgbm90IHB1c2hlZCBkb3duIHRv IHRoZSByZW1vdGUKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikKK1VQREFURSByaXRlc3Rf ZnQgU0VUIGIgPSAxMDAgV0hFUkUgYSA9IDEgQU5EIHJhbmRvbSgpIDwgMS4wOworICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor IFVwZGF0ZSBvbiBwdWJsaWMucml0ZXN0X2Z0CisgICBSZW1vdGUgU1FMOiBVUERBVEUgcHVibGlj LnJpdGVzdF9wdCBTRVQgYiA9ICQyIFdIRVJFIGN0aWQgPSAkMQorICAgLT4gIEZvcmVpZ24gU2Nh biBvbiBwdWJsaWMucml0ZXN0X2Z0CisgICAgICAgICBPdXRwdXQ6IDEwMCwgY3RpZCwgcml0ZXN0 X2Z0LioKKyAgICAgICAgIEZpbHRlcjogKHJhbmRvbSgpIDwgJzEnOjpkb3VibGUgcHJlY2lzaW9u KQorICAgICAgICAgUmVtb3RlIFNRTDogU0VMRUNUIGEsIGIsIGN0aWQgRlJPTSBwdWJsaWMucml0 ZXN0X3B0IFdIRVJFICgoYSA9IDEpKSBGT1IgVVBEQVRFCisoNiByb3dzKQorCitVUERBVEUgcml0 ZXN0X2Z0IFNFVCBiID0gMTAwIFdIRVJFIGEgPSAxIEFORCByYW5kb20oKSA8IDEuMDsgICAtLSBz aG91bGQgZmFpbAorRVJST1I6ICBjYW5ub3QgdXBkYXRlIHJlbW90ZWx5LWluaGVyaXRlZCBmb3Jl aWduIHRhYmxlICJyaXRlc3RfZnQiCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpCitVUERB VEUgcml0ZXN0X2Z0IFNFVCBiID0gMzAwIFdIRVJFIGIgPSAzMCBBTkQgcmFuZG9tKCkgPCAxLjA7 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyBVcGRhdGUgb24gcHVibGljLnJpdGVzdF9mdAorICAgUmVtb3RlIFNRTDog VVBEQVRFIHB1YmxpYy5yaXRlc3RfcHQgU0VUIGIgPSAkMiBXSEVSRSBjdGlkID0gJDEKKyAgIC0+ ICBGb3JlaWduIFNjYW4gb24gcHVibGljLnJpdGVzdF9mdAorICAgICAgICAgT3V0cHV0OiAzMDAs IGN0aWQsIHJpdGVzdF9mdC4qCisgICAgICAgICBGaWx0ZXI6IChyYW5kb20oKSA8ICcxJzo6ZG91 YmxlIHByZWNpc2lvbikKKyAgICAgICAgIFJlbW90ZSBTUUw6IFNFTEVDVCBhLCBiLCBjdGlkIEZS T00gcHVibGljLnJpdGVzdF9wdCBXSEVSRSAoKGIgPSAzMCkpIEZPUiBVUERBVEUKKyg2IHJvd3Mp CisKK1VQREFURSByaXRlc3RfZnQgU0VUIGIgPSAzMDAgV0hFUkUgYiA9IDMwIEFORCByYW5kb20o KSA8IDEuMDsgIC0tIHNob3VsZCB3b3JrCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpCitE RUxFVEUgRlJPTSByaXRlc3RfZnQgV0hFUkUgYSA9IDEgQU5EIHJhbmRvbSgpIDwgMS4wOworICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIERlbGV0 ZSBvbiBwdWJsaWMucml0ZXN0X2Z0CisgICBSZW1vdGUgU1FMOiBERUxFVEUgRlJPTSBwdWJsaWMu cml0ZXN0X3B0IFdIRVJFIGN0aWQgPSAkMQorICAgLT4gIEZvcmVpZ24gU2NhbiBvbiBwdWJsaWMu cml0ZXN0X2Z0CisgICAgICAgICBPdXRwdXQ6IGN0aWQKKyAgICAgICAgIEZpbHRlcjogKHJhbmRv bSgpIDwgJzEnOjpkb3VibGUgcHJlY2lzaW9uKQorICAgICAgICAgUmVtb3RlIFNRTDogU0VMRUNU IGN0aWQgRlJPTSBwdWJsaWMucml0ZXN0X3B0IFdIRVJFICgoYSA9IDEpKSBGT1IgVVBEQVRFCiso NiByb3dzKQorCitERUxFVEUgRlJPTSByaXRlc3RfZnQgV0hFUkUgYSA9IDEgQU5EIHJhbmRvbSgp IDwgMS4wOyAgICAgICAgICAtLSBzaG91bGQgZmFpbAorRVJST1I6ICBjYW5ub3QgZGVsZXRlIGZy b20gcmVtb3RlbHktaW5oZXJpdGVkIGZvcmVpZ24gdGFibGUgInJpdGVzdF9mdCIKK0VYUExBSU4g KFZFUkJPU0UsIENPU1RTIE9GRikKK0RFTEVURSBGUk9NIHJpdGVzdF9mdCBXSEVSRSBiID0gMzAg QU5EIHJhbmRvbSgpIDwgMS4wOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg UVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgRGVsZXRlIG9uIHB1YmxpYy5yaXRlc3RfZnQKKyAgIFJlbW90 ZSBTUUw6IERFTEVURSBGUk9NIHB1YmxpYy5yaXRlc3RfcHQgV0hFUkUgY3RpZCA9ICQxCisgICAt PiAgRm9yZWlnbiBTY2FuIG9uIHB1YmxpYy5yaXRlc3RfZnQKKyAgICAgICAgIE91dHB1dDogY3Rp ZAorICAgICAgICAgRmlsdGVyOiAocmFuZG9tKCkgPCAnMSc6OmRvdWJsZSBwcmVjaXNpb24pCisg ICAgICAgICBSZW1vdGUgU1FMOiBTRUxFQ1QgY3RpZCBGUk9NIHB1YmxpYy5yaXRlc3RfcHQgV0hF UkUgKChiID0gMzApKSBGT1IgVVBEQVRFCisoNiByb3dzKQorCitERUxFVEUgRlJPTSByaXRlc3Rf ZnQgV0hFUkUgYiA9IDMwIEFORCByYW5kb20oKSA8IDEuMDsgICAgICAgICAtLSBzaG91bGQgd29y aworLS0gQ2xlYW51cAorRFJPUCBGT1JFSUdOIFRBQkxFIHJpdGVzdF9mdDsKK0RST1AgVEFCTEUg cml0ZXN0X3B0OwogLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0gdGVzdCBjaGVjayBjb25zdHJhaW50cwogLS0g PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQpkaWZmIC0tZ2l0IGEvY29udHJpYi9wb3N0Z3Jlc19mZHcvb3B0aW9uLmMgYi9j b250cmliL3Bvc3RncmVzX2Zkdy9vcHRpb24uYwppbmRleCAzOTQ0YWVkYmFjYy4uMjM0MWQ5ZTVi NjkgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L29wdGlvbi5jCisrKyBiL2NvbnRy aWIvcG9zdGdyZXNfZmR3L29wdGlvbi5jCkBAIC0xMTYsNiArMTE2LDcgQEAgcG9zdGdyZXNfZmR3 X3ZhbGlkYXRvcihQR19GVU5DVElPTl9BUkdTKQogCQkgKi8KIAkJaWYgKHN0cmNtcChkZWYtPmRl Zm5hbWUsICJ1c2VfcmVtb3RlX2VzdGltYXRlIikgPT0gMCB8fAogCQkJc3RyY21wKGRlZi0+ZGVm bmFtZSwgInVwZGF0YWJsZSIpID09IDAgfHwKKwkJCXN0cmNtcChkZWYtPmRlZm5hbWUsICJyZW1v dGVseV9pbmhlcml0ZWQiKSA9PSAwIHx8CiAJCQlzdHJjbXAoZGVmLT5kZWZuYW1lLCAidHJ1bmNh dGFibGUiKSA9PSAwIHx8CiAJCQlzdHJjbXAoZGVmLT5kZWZuYW1lLCAiYXN5bmNfY2FwYWJsZSIp ID09IDAgfHwKIAkJCXN0cmNtcChkZWYtPmRlZm5hbWUsICJwYXJhbGxlbF9jb21taXQiKSA9PSAw IHx8CkBAIC0yNTUsNiArMjU2LDcgQEAgSW5pdFBnRmR3T3B0aW9ucyh2b2lkKQogCQkvKiB1cGRh dGFibGUgaXMgYXZhaWxhYmxlIG9uIGJvdGggc2VydmVyIGFuZCB0YWJsZSAqLwogCQl7InVwZGF0 YWJsZSIsIEZvcmVpZ25TZXJ2ZXJSZWxhdGlvbklkLCBmYWxzZX0sCiAJCXsidXBkYXRhYmxlIiwg Rm9yZWlnblRhYmxlUmVsYXRpb25JZCwgZmFsc2V9LAorCQl7InJlbW90ZWx5X2luaGVyaXRlZCIs IEZvcmVpZ25UYWJsZVJlbGF0aW9uSWQsIGZhbHNlfSwKIAkJLyogdHJ1bmNhdGFibGUgaXMgYXZh aWxhYmxlIG9uIGJvdGggc2VydmVyIGFuZCB0YWJsZSAqLwogCQl7InRydW5jYXRhYmxlIiwgRm9y ZWlnblNlcnZlclJlbGF0aW9uSWQsIGZhbHNlfSwKIAkJeyJ0cnVuY2F0YWJsZSIsIEZvcmVpZ25U YWJsZVJlbGF0aW9uSWQsIGZhbHNlfSwKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3 L3Bvc3RncmVzX2Zkdy5jIGIvY29udHJpYi9wb3N0Z3Jlc19mZHcvcG9zdGdyZXNfZmR3LmMKaW5k ZXggYzQyY2I2OTBjN2IuLjUyYjNkYTRlZmJmIDEwMDY0NAotLS0gYS9jb250cmliL3Bvc3RncmVz X2Zkdy9wb3N0Z3Jlc19mZHcuYworKysgYi9jb250cmliL3Bvc3RncmVzX2Zkdy9wb3N0Z3Jlc19m ZHcuYwpAQCAtMjA3LDYgKzIwNyw5IEBAIHR5cGVkZWYgc3RydWN0IFBnRmR3TW9kaWZ5U3RhdGUK IAlpbnQJCQlwX251bXM7CQkJLyogbnVtYmVyIG9mIHBhcmFtZXRlcnMgdG8gdHJhbnNtaXQgKi8K IAlGbWdySW5mbyAgICpwX2ZsaW5mbzsJCS8qIG91dHB1dCBjb252ZXJzaW9uIGZ1bmN0aW9ucyBm b3IgdGhlbSAqLwogCisJLyogdXBkYXRlL2RlbGV0ZSBvcGVyYXRpb24gc3R1ZmYgKi8KKwlib29s CQlyZXN1bHRSZWxWYWxpZDsJLyogaGF2ZSB3ZSBjaGVja2VkIHRoZSByZXN1bHQgcmVsYXRpb24/ ICovCisKIAkvKiBiYXRjaCBvcGVyYXRpb24gc3R1ZmYgKi8KIAlpbnQJCQludW1fc2xvdHM7CQkv KiBudW1iZXIgb2Ygc2xvdHMgdG8gaW5zZXJ0ICovCiAKQEAgLTY1NCw2ICs2NTcsNyBAQCBzdGF0 aWMgVHVwbGVUYWJsZVNsb3QgKipleGVjdXRlX2ZvcmVpZ25fbW9kaWZ5KEVTdGF0ZSAqZXN0YXRl LAogCQkJCQkJCQkJCQkgICBUdXBsZVRhYmxlU2xvdCAqKnBsYW5TbG90cywKIAkJCQkJCQkJCQkJ ICAgaW50ICpudW1TbG90cyk7CiBzdGF0aWMgdm9pZCBwcmVwYXJlX2ZvcmVpZ25fbW9kaWZ5KFBn RmR3TW9kaWZ5U3RhdGUgKmZtc3RhdGUpOworc3RhdGljIHZvaWQgY2hlY2tfcmVzdWx0X3JlbChQ Z0Zkd01vZGlmeVN0YXRlICpmbXN0YXRlLCBDbWRUeXBlIG9wZXJhdGlvbik7CiBzdGF0aWMgY29u c3QgY2hhciAqKmNvbnZlcnRfcHJlcF9zdG10X3BhcmFtcyhQZ0Zkd01vZGlmeVN0YXRlICpmbXN0 YXRlLAogCQkJCQkJCQkJCQkgSXRlbVBvaW50ZXIgdHVwbGVpZCwKIAkJCQkJCQkJCQkJIFR1cGxl VGFibGVTbG90ICoqc2xvdHMsCkBAIC00MjM2LDYgKzQyNDAsOSBAQCBjcmVhdGVfZm9yZWlnbl9t b2RpZnkoRVN0YXRlICplc3RhdGUsCiAJewogCQlBc3NlcnQoc3VicGxhbiAhPSBOVUxMKTsKIAor CQkvKiBJbml0aWFsaXplIHZhbGlkIGZsYWcgZm9yIHRoZSByZXN1bHQgcmVsYXRpb24gKi8KKwkJ Zm1zdGF0ZS0+cmVzdWx0UmVsVmFsaWQgPSBmYWxzZTsKKwogCQkvKiBGaW5kIHRoZSBjdGlkIHJl c2p1bmsgY29sdW1uIGluIHRoZSBzdWJwbGFuJ3MgcmVzdWx0ICovCiAJCWZtc3RhdGUtPmN0aWRB dHRubyA9IEV4ZWNGaW5kSnVua0F0dHJpYnV0ZUluVGxpc3Qoc3VicGxhbi0+dGFyZ2V0bGlzdCwK IAkJCQkJCQkJCQkJCQkJICAiY3RpZCIpOwpAQCAtNDMwOCw2ICs0MzE1LDExIEBAIGV4ZWN1dGVf Zm9yZWlnbl9tb2RpZnkoRVN0YXRlICplc3RhdGUsCiAJCSAgIG9wZXJhdGlvbiA9PSBDTURfVVBE QVRFIHx8CiAJCSAgIG9wZXJhdGlvbiA9PSBDTURfREVMRVRFKTsKIAorCS8qIEZvciBVUERBVEUv REVMRVRFLCBjaGVjayB0aGUgcmVzdWx0IHJlbGF0aW9uIGlmIG5vdCB5ZXQgZG9uZS4gKi8KKwlp ZiAoKG9wZXJhdGlvbiA9PSBDTURfVVBEQVRFIHx8IG9wZXJhdGlvbiA9PSBDTURfREVMRVRFKSAm JgorCQkhZm1zdGF0ZS0+cmVzdWx0UmVsVmFsaWQpCisJCWNoZWNrX3Jlc3VsdF9yZWwoZm1zdGF0 ZSwgb3BlcmF0aW9uKTsKKwogCS8qIEZpcnN0LCBwcm9jZXNzIGEgcGVuZGluZyBhc3luY2hyb25v dXMgcmVxdWVzdCwgaWYgYW55LiAqLwogCWlmIChmbXN0YXRlLT5jb25uX3N0YXRlLT5wZW5kaW5n QXJlcSkKIAkJcHJvY2Vzc19wZW5kaW5nX3JlcXVlc3QoZm1zdGF0ZS0+Y29ubl9zdGF0ZS0+cGVu ZGluZ0FyZXEpOwpAQCAtNDQ0OCw2ICs0NDYwLDUyIEBAIHByZXBhcmVfZm9yZWlnbl9tb2RpZnko UGdGZHdNb2RpZnlTdGF0ZSAqZm1zdGF0ZSkKIAlmbXN0YXRlLT5wX25hbWUgPSBwX25hbWU7CiB9 CiAKKy8qCisgKiBjaGVja19yZXN1bHRfcmVsCisgKgkJQ2hlY2sgaWYgdGhlIHRhcmdldCBmb3Jl aWduIHRhYmxlIGlzIHNhZmUgdG8gdXBkYXRlL2RlbGV0ZSB2aWEKKyAqCQlFeGVjRm9yZWlnblVw ZGF0ZS9FeGVjRm9yZWlnbkRlbGV0ZS4KKyAqLworc3RhdGljIHZvaWQKK2NoZWNrX3Jlc3VsdF9y ZWwoUGdGZHdNb2RpZnlTdGF0ZSAqZm1zdGF0ZSwgQ21kVHlwZSBvcGVyYXRpb24pCit7CisJYm9v bAkJcmVtb3RlbHlfaW5oZXJpdGVkOworCUZvcmVpZ25UYWJsZSAqdGFibGU7CisJTGlzdENlbGwg ICAqbGM7CisKKwlBc3NlcnQoIWZtc3RhdGUtPnJlc3VsdFJlbFZhbGlkKTsKKwlBc3NlcnQob3Bl cmF0aW9uID09IENNRF9VUERBVEUgfHwgb3BlcmF0aW9uID09IENNRF9ERUxFVEUpOworCisJLyoK KwkgKiBCeSBkZWZhdWx0LCBhbnkgcG9zdGdyZXNfZmR3IGZvcmVpZ24gdGFibGUgaXNuJ3QgYXNz dW1lZAorCSAqIHJlbW90ZWx5LWluaGVyaXRlZC4KKwkgKi8KKwlyZW1vdGVseV9pbmhlcml0ZWQg PSBmYWxzZTsKKworCXRhYmxlID0gR2V0Rm9yZWlnblRhYmxlKFJlbGF0aW9uR2V0UmVsaWQoZm1z dGF0ZS0+cmVsKSk7CisKKwlmb3JlYWNoKGxjLCB0YWJsZS0+b3B0aW9ucykKKwl7CisJCURlZkVs ZW0gICAgKmRlZiA9IChEZWZFbGVtICopIGxmaXJzdChsYyk7CisKKwkJaWYgKHN0cmNtcChkZWYt PmRlZm5hbWUsICJyZW1vdGVseV9pbmhlcml0ZWQiKSA9PSAwKQorCQkJcmVtb3RlbHlfaW5oZXJp dGVkID0gZGVmR2V0Qm9vbGVhbihkZWYpOworCX0KKworCS8qCisJICogSXQncyB1bnNhZmUgdG8g dXBkYXRlL2RlbGV0ZSByZW1vdGVseS1pbmhlcml0ZWQgZm9yZWlnbiB0YWJsZXMgdmlhCisJICog RXhlY0ZvcmVpZ25VcGRhdGUvRXhlY0ZvcmVpZ25EZWxldGUuCisJICovCisJaWYgKHJlbW90ZWx5 X2luaGVyaXRlZCkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRV UkVfTk9UX1NVUFBPUlRFRCksCisJCQkJIGVycm1zZygob3BlcmF0aW9uID09IENNRF9VUERBVEUp ID8KKwkJCQkJCSJjYW5ub3QgdXBkYXRlIHJlbW90ZWx5LWluaGVyaXRlZCBmb3JlaWduIHRhYmxl IFwiJXNcIiIgOgorCQkJCQkJImNhbm5vdCBkZWxldGUgZnJvbSByZW1vdGVseS1pbmhlcml0ZWQg Zm9yZWlnbiB0YWJsZSBcIiVzXCIiLAorCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUoZm1z dGF0ZS0+cmVsKSkpKTsKKworCWZtc3RhdGUtPnJlc3VsdFJlbFZhbGlkID0gdHJ1ZTsKK30KKwog LyoKICAqIGNvbnZlcnRfcHJlcF9zdG10X3BhcmFtcwogICoJCUNyZWF0ZSBhcnJheSBvZiB0ZXh0 IHN0cmluZ3MgcmVwcmVzZW50aW5nIHBhcmFtZXRlciB2YWx1ZXMKZGlmZiAtLWdpdCBhL2NvbnRy aWIvcG9zdGdyZXNfZmR3L3NxbC9wb3N0Z3Jlc19mZHcuc3FsIGIvY29udHJpYi9wb3N0Z3Jlc19m ZHcvc3FsL3Bvc3RncmVzX2Zkdy5zcWwKaW5kZXggMjY3ZDNjMWE3ZTcuLjdmYzA5OWJjY2I3IDEw MDY0NAotLS0gYS9jb250cmliL3Bvc3RncmVzX2Zkdy9zcWwvcG9zdGdyZXNfZmR3LnNxbAorKysg Yi9jb250cmliL3Bvc3RncmVzX2Zkdy9zcWwvcG9zdGdyZXNfZmR3LnNxbApAQCAtMTc3OCw2ICsx Nzc4LDM0IEBAIERST1AgRk9SRUlHTiBUQUJMRSByZW10MjsKIERST1AgVEFCTEUgbG9jdDE7CiBE Uk9QIFRBQkxFIGxvY3QyOwogCistLSBUZXN0IFVQREFURS9ERUxFVEUgb24gcmVtb3RlbHktaW5o ZXJpdGVkIGZvcmVpZ24gdGFibGVzCitDUkVBVEUgVEFCTEUgcml0ZXN0X3B0IChhIGludCwgYiBp bnQpIFBBUlRJVElPTiBCWSBMSVNUKGEpOworQ1JFQVRFIFRBQkxFIHJpdGVzdF9wdF9wMSBQQVJU SVRJT04gT0Ygcml0ZXN0X3B0IEZPUiBWQUxVRVMgSU4gKDEpOworQ1JFQVRFIFRBQkxFIHJpdGVz dF9wdF9wMiBQQVJUSVRJT04gT0Ygcml0ZXN0X3B0IEZPUiBWQUxVRVMgSU4gKDIpOworQ1JFQVRF IEZPUkVJR04gVEFCTEUgcml0ZXN0X2Z0IChhIGludCwgYiBpbnQpIFNFUlZFUiBsb29wYmFjayBP UFRJT05TICh0YWJsZV9uYW1lICdyaXRlc3RfcHQnLCByZW1vdGVseV9pbmhlcml0ZWQgJ3RydWUn KTsKK0lOU0VSVCBJTlRPIHJpdGVzdF9mdCBWQUxVRVMgKDEsIDEwKSwgKDIsIDIwKTsKKworLS0g VXNlIHJhbmRvbSgpIHNvIHRoYXQgVVBEQVRFL0RFTEVURSBpcyBub3QgcHVzaGVkIGRvd24gdG8g dGhlIHJlbW90ZQorRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQorVVBEQVRFIHJpdGVzdF9m dCBTRVQgYiA9IDEwMCBXSEVSRSBhID0gMSBBTkQgcmFuZG9tKCkgPCAxLjA7CitVUERBVEUgcml0 ZXN0X2Z0IFNFVCBiID0gMTAwIFdIRVJFIGEgPSAxIEFORCByYW5kb20oKSA8IDEuMDsgICAtLSBz aG91bGQgZmFpbAorCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpCitVUERBVEUgcml0ZXN0 X2Z0IFNFVCBiID0gMzAwIFdIRVJFIGIgPSAzMCBBTkQgcmFuZG9tKCkgPCAxLjA7CitVUERBVEUg cml0ZXN0X2Z0IFNFVCBiID0gMzAwIFdIRVJFIGIgPSAzMCBBTkQgcmFuZG9tKCkgPCAxLjA7ICAt LSBzaG91bGQgd29yaworCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpCitERUxFVEUgRlJP TSByaXRlc3RfZnQgV0hFUkUgYSA9IDEgQU5EIHJhbmRvbSgpIDwgMS4wOworREVMRVRFIEZST00g cml0ZXN0X2Z0IFdIRVJFIGEgPSAxIEFORCByYW5kb20oKSA8IDEuMDsgICAgICAgICAgLS0gc2hv dWxkIGZhaWwKKworRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQorREVMRVRFIEZST00gcml0 ZXN0X2Z0IFdIRVJFIGIgPSAzMCBBTkQgcmFuZG9tKCkgPCAxLjA7CitERUxFVEUgRlJPTSByaXRl c3RfZnQgV0hFUkUgYiA9IDMwIEFORCByYW5kb20oKSA8IDEuMDsgICAgICAgICAtLSBzaG91bGQg d29yaworCistLSBDbGVhbnVwCitEUk9QIEZPUkVJR04gVEFCTEUgcml0ZXN0X2Z0OworRFJPUCBU QUJMRSByaXRlc3RfcHQ7CisKIC0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tIHRlc3QgY2hlY2sgY29uc3RyYWlu dHMKIC0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9wb3N0Z3Jlcy1mZHcu c2dtbCBiL2RvYy9zcmMvc2dtbC9wb3N0Z3Jlcy1mZHcuc2dtbAppbmRleCBiODFmMzM3MzJmYi4u ZjI4ZGE1MDI5MjMgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9wb3N0Z3Jlcy1mZHcuc2dtbAor KysgYi9kb2Mvc3JjL3NnbWwvcG9zdGdyZXMtZmR3LnNnbWwKQEAgLTYzMCw2ICs2MzAsMjkgQEAg T1BUSU9OUyAoQUREIHBhc3N3b3JkX3JlcXVpcmVkICdmYWxzZScpOwogICAgICA8L2xpc3RpdGVt PgogICAgIDwvdmFybGlzdGVudHJ5PgogCisgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgPHRlcm0+ PGxpdGVyYWw+cmVtb3RlbHlfaW5oZXJpdGVkPC9saXRlcmFsPiAoPHR5cGU+Ym9vbGVhbjwvdHlw ZT4pPC90ZXJtPgorICAgICA8bGlzdGl0ZW0+CisgICAgICA8cGFyYT4KKyAgICAgICBUaGlzIG9w dGlvbiwgd2hpY2ggY2FuIGJlIHNwZWNpZmllZCBmb3IgYSBmb3JlaWduIHRhYmxlLCBkZXRlcm1p bmVzIGlmCisgICAgICAgdGhlIHJlbW90ZSB0YWJsZSBpcyBhbiBpbmhlcml0ZWQvcGFydGl0aW9u ZWQgdGFibGUgb24gdGhlIHJlbW90ZSBzZXJ2ZXIKKyAgICAgICBvciBhIGZvcmVpZ24gdGFibGUg b24gaXQgcmVmZXJlbmNpbmcgc3VjaCBhIHRhYmxlIG9uIGFub3RoZXIgcmVtb3RlCisgICAgICAg c2VydmVyLgorICAgICAgIFRoZSBkZWZhdWx0IGlzIDxsaXRlcmFsPmZhbHNlPC9saXRlcmFsPi4K KyAgICAgIDwvcGFyYT4KKworICAgICAgPHBhcmE+CisgICAgICAgSWYgdGhlIDxsaXRlcmFsPnVw ZGF0YWJsZTwvbGl0ZXJhbD4gb3B0aW9uIGlzIHNldCBmb3IgYSBmb3JlaWduIHRhYmxlCisgICAg ICAgd2hvc2UgcmVtb3RlIHRhYmxlIGlzIGFueSBvZiB0aGUgYWJvdmUsCisgICAgICAgPGZpbGVu YW1lPnBvc3RncmVzX2ZkdzwvZmlsZW5hbWU+IGN1cnJlbnRseSBjYW5ub3QgcHJvcGVybHkKKyAg ICAgICB1cGRhdGUvZGVsZXRlIGl0LCBjYXVzaW5nIHVuZXhwZWN0ZWQgcmVzdWx0cywgZXhjZXB0 IGluIGNhc2VzIHdoZXJlIHRoZQorICAgICAgIHdob2xlIDxjb21tYW5kPlVQREFURS9ERUxFVEU8 L2NvbW1hbmQ+IHByb2Nlc3NpbmcgaXMgcHVzaGVkIGRvd24gdG8gdGhlCisgICAgICAgcmVtb3Rl IHNlcnZlci4gIFN1Y2ggdW5zYWZlIG1vZGlmaWNhdGlvbnMgY2FuIGJlIHByZXZlbnRlZCBieSBz ZXR0aW5nCisgICAgICAgdGhpcyBvcHRpb24uICBUaGlzIG1pZ2h0IGJlIGltcG9ydmVkIGluIGZ1 dHVyZSByZWxlYXNlcy4KKyAgICAgIDwvcGFyYT4KKyAgICAgPC9saXN0aXRlbT4KKyAgICA8L3Zh cmxpc3RlbnRyeT4KKwogICAgPC92YXJpYWJsZWxpc3Q+CiAgIDwvc2VjdDM+CiAK --00000000000027621c06532ee208--