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 1vHIh0-0033Va-HD for pgsql-bugs@arkaria.postgresql.org; Fri, 07 Nov 2025 09:23:38 +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 1vHIgy-00DJor-VN for pgsql-bugs@arkaria.postgresql.org; Fri, 07 Nov 2025 09:23:36 +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 1vHIgy-00DJoj-Ee for pgsql-bugs@lists.postgresql.org; Fri, 07 Nov 2025 09:23:36 +0000 Received: from mail-pf1-x42b.google.com ([2607:f8b0:4864:20::42b]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vHIgw-005sdJ-1J for pgsql-bugs@lists.postgresql.org; Fri, 07 Nov 2025 09:23:35 +0000 Received: by mail-pf1-x42b.google.com with SMTP id d2e1a72fcca58-793021f348fso404583b3a.1 for ; Fri, 07 Nov 2025 01:23:34 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1762507413; x=1763112213; 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=31OjUrXiSgBHbkP99Ruw4YpDfFJEF5unUQt+hDtkCQ0=; b=bTIA9PYVImWHybAD3A9vgI+D+a1hOyKY9AN3KZ3UXzz0WCxRxgsKY+vRgAvDDyErGo DqUNltgQbQf2+DKo3n/b+LGnduqjU4COOJ22CmplZki3M8VLWy7XZAvuJYdjOHh+Yq4H qzOM8Rm+5QOmWsOyiP6A5ak3DX54z/hVCxcxPmcRXHCp89sHAQ5moWo3HdrkIVbzxHmx IZvXXpk0V5WfpDXAwfy5ylZHkzRkrfZz1EcOpMq+/2ZaV69pTlGjXqgn+ca0KjGfj3AV WKe+Ms7eUuR5WhQ0Rwc+/hUUAdTCdvmiQWSqYiZhUhUfrWWfFqApDzeTLlx0EbrKFNrn qpxg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1762507413; x=1763112213; 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=31OjUrXiSgBHbkP99Ruw4YpDfFJEF5unUQt+hDtkCQ0=; b=bxgl9VUYCTBmE01nHYnLUrWUvIc/O7T4DVGASUJSHQ0pXK3PLaWSZzKVDXzGF2fpUC PfmRsCcIYQDEveHaI9LFqt0PquKNrcnoZdDo9RBAMC2X6jVL3TqMVdXuTDLi+nbnmYeV WCVpw4WwzbzKUx/KdNiQGoaAWsqw5QVIhyWAcAIpcZTPxGSxZqkjCtkjqQnxriMwMyZG Um/5u628wfXzmOpQWABCX78mrIMjOPz0q/e0wRu4It3DJS3AqZu04HGovVkqrXZR4Hqj jhXSu/u0e6IoTSEX6wXjG4z3quLALh8AzCUAD3/tR+cF4fB8HyPNh+M9PKcNkRSy9sZ+ PsJg== X-Forwarded-Encrypted: i=1; AJvYcCX3zof+yG7xWASBqY9TNFa+VsbNBhyB98aHxKHh1AWowGHL85CbfldjY8+bT+Q77c2NEjpnhUVQVGh7@lists.postgresql.org X-Gm-Message-State: AOJu0YwvU2i4zi9jr6CerjjEyAQzmXV+EPkEngNlGiOga5ccAUytDIeK v/raz2upDBYyVLGYXrOWTbWi3AaXfXRvKd9s7/QHLVNcaqo6cDIHWVPbV3XCFUT8ToRYvPYWCCh X74tS7Xce3tEOTDximW4UhvXX5+8SpYc= X-Gm-Gg: ASbGncu2AUMIleJyw+Ks6czhHHjgT+H5ULnSlbJFr5AuxZtGRCdJ6sV35/7ElVGa18s +zpBf7dDuC0Ldtoy8JrnRCB/eeo1rqi8DPSUrkUE/BzFe1tJNoO9m8ZqDUyE1qiVyVsalwmQlmd JOxrC3MGd98VhJVLI2Mjpohq5qhnw86Z1pt+Lvvkul9dU/G60Mp7GkwUNU+wLyup4FqDKip/3as +OARDSKvQjKhXf1SnvlhMQzQMxKRTUUqgbaVh6IFQXjMnaG5gSsanJ0mOkYclF25rdVB35S X-Google-Smtp-Source: AGHT+IFitJVI6fh1xK7ufwKSmE5a1HqJloWZrFDhmipGifNHCAT1sAIB47Ng+XHLxvG2R7Y7l9exm9bU94RSL7gawd8= X-Received: by 2002:a17:902:d481:b0:295:3f35:a312 with SMTP id d9443c01a7336-297c040c46amr36556295ad.20.1762507413163; Fri, 07 Nov 2025 01:23:33 -0800 (PST) MIME-Version: 1.0 References: <19099-e05dcfa022fe553d@postgresql.org> <2960545.1761800903@sss.pgh.pa.us> <3017911.1761832112@sss.pgh.pa.us> In-Reply-To: From: Amit Langote Date: Fri, 7 Nov 2025 18:23:16 +0900 X-Gm-Features: AWmQ_blE9noQ5LZ-YemiiXS2yBmbwqvePB7idG6v3_SozIe3H6c3nQPWYh_pZQY Message-ID: Subject: Re: BUG #19099: Conditional DELETE from partitioned table with non-updatable partition raises internal error To: Kirill Reshke Cc: David Rowley , Tom Lane , Tender Wang , jian he , exclusion@gmail.com, pgsql-bugs@lists.postgresql.org Content-Type: multipart/mixed; boundary="00000000000046a5ff0642fdbc4f" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000046a5ff0642fdbc4f Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi, On Fri, Nov 7, 2025 at 6:05=E2=80=AFPM Kirill Reshke wrote: > On Fri, 7 Nov 2025 at 11:02, Amit Langote wrote= : > > > > On Thu, Nov 6, 2025 at 7:00=E2=80=AFPM Amit Langote wrote: > > > I looked at a few options, but none seem non-invasive enough for > > > back-patching, apart from the first patch I posted. That one makes > > > ExecInitModifyTable() not require a ctid to be present to set the roo= t > > > partitioned table=E2=80=99s ri_RowIdAttNo, except in the case of MERG= E, which > > > seems to need it. The corner case that triggers the internal error fo= r > > > UPDATE/DELETE doesn=E2=80=99t occur for MERGE now and likely won=E2= =80=99t when > > > foreign tables eventually gain MERGE support; don't mark my words > > > though ;-). > > > > Well, OK, I just had not tried hard enough to see that the same error > > happens for MERGE too. > > > > With my patch applied: > > EXPLAIN VERBOSE MERGE INTO pt t USING (VALUES (1, 'x'::text)) AS s(a, > > b) ON false WHEN MATCHED THEN UPDATE SET b =3D s.b; > > ERROR: could not find junk ctid column > > > > I have another idea: we can simply recognize the corner condition that > > throws this error in ExecInitModifyTable() by checking if > > ModifyTable.resultRelations contains only the root partitioned table. > > That can only happen for UPDATE, DELETE, or MERGE when all child > > relations were excluded. > > > > Patch doing that attached. Added test cases to file_fdw's suite. > > HI! > > I think this is an OK option for backpatching. After v2 applied, I > found the behavior of DELETE and EXPLAIN DELETE consistent. Thanks for the comment. > The only > remaining issue is VERBOSE output difference with or without > enable_partition_pruning (which is v19+ issue to worry about), > correct? Yes, iff we are to do anything at all about the difference. > Also, should we add COSTS OFF to EXPLAIN in the regression test? I > understand that costs should be always zero, but COSTS OFF is almost > everywhere is tests Yeah, a good call. v3 attached. --=20 Thanks, Amit Langote --00000000000046a5ff0642fdbc4f Content-Type: application/octet-stream; name="v3-0001-Fix-bogus-ctid-requirement-for-dummy-root-partiti.patch" Content-Disposition: attachment; filename="v3-0001-Fix-bogus-ctid-requirement-for-dummy-root-partiti.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mhonbfm40 RnJvbSA0MmMxNGUzYTQ0ODk4M2NjM2U1MjI2MGZkZmM0OGE0MjhhNzFhNjdhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IEZyaSwgNyBOb3YgMjAyNSAxODoxMjo0NiArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjNd IEZpeCBib2d1cyBjdGlkIHJlcXVpcmVtZW50IGZvciBkdW1teS1yb290IHBhcnRpdGlvbmVkCiB0 YXJnZXRzCgpFeGVjSW5pdE1vZGlmeVRhYmxlKCkgdW5jb25kaXRpb25hbGx5IHJlcXVpcmVkIGEg Y3RpZCBqdW5rIGNvbHVtbiBldmVuCndoZW4gdGhlIHRhcmdldCB3YXMgYSBwYXJ0aXRpb25lZCB0 YWJsZS4gVGhpcyBsZWQgdG8gc3B1cmlvdXMgImNvdWxkCm5vdCBmaW5kIGp1bmsgY3RpZCBjb2x1 bW4iIGVycm9ycyB3aGVuIGFsbCBjaGlsZHJlbiB3ZXJlIGV4Y2x1ZGVkIGFuZApvbmx5IHRoZSBk dW1teSByb290IHJlc3VsdCByZWxhdGlvbiByZW1haW5lZC4KClJlcXVpcmUgY3RpZCBmb3IgaGVh cCByZWxhdGlvbnMgYXMgYmVmb3JlLiBGb3IgcGFydGl0aW9uZWQgdGFibGVzLApyZXF1aXJlIGl0 IG9ubHkgd2hlbiBhdCBsZWFzdCBvbmUgbGVhZiByZXN1bHQgcmVsYXRpb24gcmVtYWlucyBpbiB0 aGUKcGxhbi4gSWYgdGhlIHBsYW4gaGFzIG9ubHkgdGhlIGR1bW15IHJvb3QsIG5vIHJvd3MgY2Fu IGJlIHByb2R1Y2VkIGFuZApjdGlkIGlzIHRodXMgbm90IG5lZWRlZC4KCkJ1ZzogIzE5MDk5ClJl cG9ydGVkLWJ5OiBBbGV4YW5kZXIgTGFraGluIDxleGNsdXNpb25AZ21haWwuY29tPgpBdXRob3I6 IEFtaXQgTGFuZ290ZSA8YW1pdGxhbmdvdGUwOUBnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBUZW5k ZXIgV2FuZyA8dG5kcndhbmdAZ21haWwuY29tPgpSZXZpZXdlZC1ieTogS2lyaWxsIFJlc2hrZSA8 cmVzaGtla2lyaWxsQGdtYWlsLmNvbT4KRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS8x OTA5OS1lMDVkY2ZhMDIyZmU1NTNkJTQwcG9zdGdyZXNxbC5vcmcKQmFja3BhdGNoLXRocm91Z2g6 IDE0Ci0tLQogY29udHJpYi9maWxlX2Zkdy9leHBlY3RlZC9maWxlX2Zkdy5vdXQgfCA3NSArKysr KysrKysrKysrKysrKysrKysrKysrKwogY29udHJpYi9maWxlX2Zkdy9zcWwvZmlsZV9mZHcuc3Fs ICAgICAgfCAzNCArKysrKysrKysrKysKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlU YWJsZS5jIHwgMTEgKysrLQogMyBmaWxlcyBjaGFuZ2VkLCAxMTkgaW5zZXJ0aW9ucygrKSwgMSBk ZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvZmlsZV9mZHcvZXhwZWN0ZWQvZmlsZV9m ZHcub3V0IGIvY29udHJpYi9maWxlX2Zkdy9leHBlY3RlZC9maWxlX2Zkdy5vdXQKaW5kZXggNTEy MWUyN2RjZTUuLjZmN2I5MTc1NzM1IDEwMDY0NAotLS0gYS9jb250cmliL2ZpbGVfZmR3L2V4cGVj dGVkL2ZpbGVfZmR3Lm91dAorKysgYi9jb250cmliL2ZpbGVfZmR3L2V4cGVjdGVkL2ZpbGVfZmR3 Lm91dApAQCAtNDU3LDYgKzQ1Nyw4MSBAQCBTRUxFQ1QgdGFibGVvaWQ6OnJlZ2NsYXNzLCAqIEZS T00gcDI7CiAgcDIgICAgICAgfCAyIHwgeHl6enkKICgzIHJvd3MpCiAKKy0tIFZlcmlmeSB0aGF0 IGEgZHVtbXkgcm9vdCBwYXJ0aXRpb25lZC10YWJsZSByZXN1bHQgcmVsYXRpb24gd29ya3Mgd2l0 aG91dAorLS0gZXJyb3Igd2hlbiBhbGwgY2hpbGQgcGFydGl0aW9ucyBhcmUgZXhjbHVkZWQgZnJv bSB0aGUgcGxhbiAoZm9yIGV4YW1wbGUsCistLSBieSBjb25zdHJhaW50IGV4Y2x1c2lvbiBvciBw cnVuaW5nKS4gIEluIHRoaXMgY2FzZSwgdGhlIGV4ZWN1dG9yIGFjY2VwdHMKKy0tIGEgbWlzc2lu ZyBjdGlkIGZvciB0aGUgcm9vdCByZXN1bHQgcmVsYXRpb24gc2luY2Ugbm8gcm93cyBjYW4gYmUg cHJvZHVjZWQuCistLSBXaGVuIGEgZm9yZWlnbi10YWJsZSBjaGlsZCBpcyBwcm9jZXNzZWQgYmVm b3JlIGV4Y2x1c2lvbiwgYSB0YWJsZW9pZCBqdW5rCistLSBjb2x1bW4gbWF5IHN0aWxsIGFwcGVh ciBpbiB0aGUgdGFyZ2V0bGlzdCBhbmQgYWxzbyB3aG9sZXJvdyBmb3IgdXBkYXRlLgorLS0gRHVt bXktcm9vdCBjYXNlcyB3aGVyZSBhbGwgY2hpbGRyZW4gYXJlIGV4Y2x1ZGVkLgorLS0gV2l0aCBw cnVuaW5nIG9mZiwgdGhlIGZvcmVpZ24gY2hpbGQgaXMgcHJvY2Vzc2VkIGZpcnN0LCB0aGVuIGV4 Y2x1ZGVkCistLSBieSBjb25zdHJhaW50IGV4Y2x1c2lvbi4gRVhQTEFJTiBzaG93cyB0YWJsZW9p ZCAocmV3cml0dGVuIHRvIE5VTEwpLAorLS0gYW5kIGZvciBVUERBVEUgYWxzbyB3aG9sZXJvdyBh cyBOVUxMOjpyZWNvcmQuIE5vIGN0aWQuCitEUk9QIFRBQkxFIHAyOworU0VUIGVuYWJsZV9wYXJ0 aXRpb25fcHJ1bmluZyBUTyBvZmY7CitFWFBMQUlOIChDT1NUUyBPRkYsIFZFUkJPU0UpIERFTEVU RSBGUk9NIHB0IFdIRVJFIGZhbHNlOworICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgRGVsZXRlIG9uIHB1YmxpYy5wdAor ICAgLT4gIFJlc3VsdAorICAgICAgICAgT3V0cHV0OiBOVUxMOjpvaWQKKyAgICAgICAgIFJlcGxh Y2VzOiBTY2FuIG9uIHB0CisgICAgICAgICBPbmUtVGltZSBGaWx0ZXI6IGZhbHNlCisoNSByb3dz KQorCistLSBhbHNvIGNvdmVyIHdob2xlcm93IGZvciBVUERBVEU7IGV4cGVjdCBOVUxMOjpvaWQg YW5kIE5VTEw6OnJlY29yZAorRVhQTEFJTiAoQ09TVFMgT0ZGLCBWRVJCT1NFKSBVUERBVEUgcHQg U0VUIGIgPSAneCcgV0hFUkUgZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFO ICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgVXBkYXRlIG9uIHB1YmxpYy5wdAorICAgLT4gIFJlc3VsdAor ICAgICAgICAgT3V0cHV0OiAneCc6OnRleHQsIE5VTEw6Om9pZCwgTlVMTDo6cmVjb3JkCisgICAg ICAgICBSZXBsYWNlczogU2NhbiBvbiBwdAorICAgICAgICAgT25lLVRpbWUgRmlsdGVyOiBmYWxz ZQorKDUgcm93cykKKworLS0gTUVSR0UgYmVoYXZlcyB0aGUgc2FtZSBoZXJlOyBleHBlY3QgTlVM TDo6b2lkCitFWFBMQUlOIChDT1NUUyBPRkYsIFZFUkJPU0UpIE1FUkdFIElOVE8gcHQgdCBVU0lO RyAoVkFMVUVTICgxLCAneCc6OnRleHQpKSBBUyBzKGEsIGIpCisgIE9OIGZhbHNlIFdIRU4gTUFU Q0hFRCBUSEVOIFVQREFURSBTRVQgYiA9IHMuYjsKKyAgICAgICAgICAgUVVFUlkgUExBTiAgICAg ICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIE1lcmdlIG9uIHB1Ymxp Yy5wdCB0CisgICAtPiAgUmVzdWx0CisgICAgICAgICBPdXRwdXQ6IE5VTEw6Om9pZAorICAgICAg ICAgUmVwbGFjZXM6IFNjYW4gb24gdAorICAgICAgICAgT25lLVRpbWUgRmlsdGVyOiBmYWxzZQor KDUgcm93cykKKworLS0gV2l0aCBwcnVuaW5nIG9uLCB0aGUgZm9yZWlnbiBjaGlsZCBpcyBwcnVu ZWQgZW50aXJlbHkuIFRoZSBwbGFuIGhhcyBvbmx5CistLSB0aGUgZHVtbXkgcm9vdCwgYW5kIEVY UExBSU4gc2hvd3MgY3RpZCAoYW5kIGZvciBVUERBVEUsIGN0aWQgcGx1cyB0YXJnZXQpLgorU0VU IGVuYWJsZV9wYXJ0aXRpb25fcHJ1bmluZyBUTyBvbjsKK0VYUExBSU4gKENPU1RTIE9GRiwgVkVS Qk9TRSkgREVMRVRFIEZST00gcHQgV0hFUkUgZmFsc2U7CisgICAgICAgICAgIFFVRVJZIFBMQU4g ICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBEZWxldGUgb24g cHVibGljLnB0CisgICAtPiAgUmVzdWx0CisgICAgICAgICBPdXRwdXQ6IGN0aWQKKyAgICAgICAg IFJlcGxhY2VzOiBTY2FuIG9uIHB0CisgICAgICAgICBPbmUtVGltZSBGaWx0ZXI6IGZhbHNlCiso NSByb3dzKQorCitFWFBMQUlOIChDT1NUUyBPRkYsIFZFUkJPU0UpIFVQREFURSBwdCBTRVQgYiA9 ICd4JyBXSEVSRSBmYWxzZTsKKyAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgVXBkYXRlIG9uIHB1YmxpYy5wdAorICAg LT4gIFJlc3VsdAorICAgICAgICAgT3V0cHV0OiAneCc6OnRleHQsIGN0aWQKKyAgICAgICAgIFJl cGxhY2VzOiBTY2FuIG9uIHB0CisgICAgICAgICBPbmUtVGltZSBGaWx0ZXI6IGZhbHNlCisoNSBy b3dzKQorCistLSBGb3JlaWduIGNoaWxkIG5vdCBwcnVuZWQgYW5kIGl0IGRvZXMgbm90IHN1cHBv cnQgREVMRVRFOiBlcnJvci4KK0VYUExBSU4gKENPU1RTIE9GRiwgVkVSQk9TRSkgREVMRVRFIEZS T00gcHQgV0hFUkUgYSA9IDE7CitFUlJPUjogIGNhbm5vdCBkZWxldGUgZnJvbSBmb3JlaWduIHRh YmxlICJwMSIKKy0tIFJ1bnRpbWUgcHJ1bmluZyBpbmNsdWRlcyB0aGUgZm9yZWlnbiBjaGlsZCBp biB0aGUgcGxhbjsgZXhlY3V0b3IgZXJyb3JzCistLSBzaW5jZSB0aGUgZm9yZWlnbiBjaGlsZCBk b2VzIG5vdCBzdXBwb3J0IHRoZSBjb21tYW5kLgorRVhQTEFJTiAoQ09TVFMgT0ZGLCBWRVJCT1NF KSBERUxFVEUgRlJPTSBwdCBXSEVSRSAoU0VMRUNUIGZhbHNlKTsKK0VSUk9SOiAgY2Fubm90IGRl bGV0ZSBmcm9tIGZvcmVpZ24gdGFibGUgInAxIgogRFJPUCBUQUJMRSBwdDsKIC0tIGdlbmVyYXRl ZCBjb2x1bW4gdGVzdHMKIFxzZXQgZmlsZW5hbWUgOmFic19zcmNkaXIgJy9kYXRhL2xpc3QxLmNz dicKZGlmZiAtLWdpdCBhL2NvbnRyaWIvZmlsZV9mZHcvc3FsL2ZpbGVfZmR3LnNxbCBiL2NvbnRy aWIvZmlsZV9mZHcvc3FsL2ZpbGVfZmR3LnNxbAppbmRleCAxYTM5N2FkNGJkMS4uMjU2NThiMWYy ZGMgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvZmlsZV9mZHcvc3FsL2ZpbGVfZmR3LnNxbAorKysgYi9j b250cmliL2ZpbGVfZmR3L3NxbC9maWxlX2Zkdy5zcWwKQEAgLTI0Miw2ICsyNDIsNDAgQEAgVVBE QVRFIHB0IHNldCBhID0gMSB3aGVyZSBhID0gMjsgLS0gRVJST1IKIFNFTEVDVCB0YWJsZW9pZDo6 cmVnY2xhc3MsICogRlJPTSBwdDsKIFNFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSBw MTsKIFNFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSBwMjsKKworLS0gVmVyaWZ5IHRo YXQgYSBkdW1teSByb290IHBhcnRpdGlvbmVkLXRhYmxlIHJlc3VsdCByZWxhdGlvbiB3b3JrcyB3 aXRob3V0CistLSBlcnJvciB3aGVuIGFsbCBjaGlsZCBwYXJ0aXRpb25zIGFyZSBleGNsdWRlZCBm cm9tIHRoZSBwbGFuIChmb3IgZXhhbXBsZSwKKy0tIGJ5IGNvbnN0cmFpbnQgZXhjbHVzaW9uIG9y IHBydW5pbmcpLiAgSW4gdGhpcyBjYXNlLCB0aGUgZXhlY3V0b3IgYWNjZXB0cworLS0gYSBtaXNz aW5nIGN0aWQgZm9yIHRoZSByb290IHJlc3VsdCByZWxhdGlvbiBzaW5jZSBubyByb3dzIGNhbiBi ZSBwcm9kdWNlZC4KKy0tIFdoZW4gYSBmb3JlaWduLXRhYmxlIGNoaWxkIGlzIHByb2Nlc3NlZCBi ZWZvcmUgZXhjbHVzaW9uLCBhIHRhYmxlb2lkIGp1bmsKKy0tIGNvbHVtbiBtYXkgc3RpbGwgYXBw ZWFyIGluIHRoZSB0YXJnZXRsaXN0IGFuZCBhbHNvIHdob2xlcm93IGZvciB1cGRhdGUuCisKKy0t IER1bW15LXJvb3QgY2FzZXMgd2hlcmUgYWxsIGNoaWxkcmVuIGFyZSBleGNsdWRlZC4KKy0tIFdp dGggcHJ1bmluZyBvZmYsIHRoZSBmb3JlaWduIGNoaWxkIGlzIHByb2Nlc3NlZCBmaXJzdCwgdGhl biBleGNsdWRlZAorLS0gYnkgY29uc3RyYWludCBleGNsdXNpb24uIEVYUExBSU4gc2hvd3MgdGFi bGVvaWQgKHJld3JpdHRlbiB0byBOVUxMKSwKKy0tIGFuZCBmb3IgVVBEQVRFIGFsc28gd2hvbGVy b3cgYXMgTlVMTDo6cmVjb3JkLiBObyBjdGlkLgorRFJPUCBUQUJMRSBwMjsKK1NFVCBlbmFibGVf cGFydGl0aW9uX3BydW5pbmcgVE8gb2ZmOworRVhQTEFJTiAoQ09TVFMgT0ZGLCBWRVJCT1NFKSBE RUxFVEUgRlJPTSBwdCBXSEVSRSBmYWxzZTsKKy0tIGFsc28gY292ZXIgd2hvbGVyb3cgZm9yIFVQ REFURTsgZXhwZWN0IE5VTEw6Om9pZCBhbmQgTlVMTDo6cmVjb3JkCitFWFBMQUlOIChDT1NUUyBP RkYsIFZFUkJPU0UpIFVQREFURSBwdCBTRVQgYiA9ICd4JyBXSEVSRSBmYWxzZTsKKy0tIE1FUkdF IGJlaGF2ZXMgdGhlIHNhbWUgaGVyZTsgZXhwZWN0IE5VTEw6Om9pZAorRVhQTEFJTiAoQ09TVFMg T0ZGLCBWRVJCT1NFKSBNRVJHRSBJTlRPIHB0IHQgVVNJTkcgKFZBTFVFUyAoMSwgJ3gnOjp0ZXh0 KSkgQVMgcyhhLCBiKQorICBPTiBmYWxzZSBXSEVOIE1BVENIRUQgVEhFTiBVUERBVEUgU0VUIGIg PSBzLmI7CisKKy0tIFdpdGggcHJ1bmluZyBvbiwgdGhlIGZvcmVpZ24gY2hpbGQgaXMgcHJ1bmVk IGVudGlyZWx5LiBUaGUgcGxhbiBoYXMgb25seQorLS0gdGhlIGR1bW15IHJvb3QsIGFuZCBFWFBM QUlOIHNob3dzIGN0aWQgKGFuZCBmb3IgVVBEQVRFLCBjdGlkIHBsdXMgdGFyZ2V0KS4KK1NFVCBl bmFibGVfcGFydGl0aW9uX3BydW5pbmcgVE8gb247CitFWFBMQUlOIChDT1NUUyBPRkYsIFZFUkJP U0UpIERFTEVURSBGUk9NIHB0IFdIRVJFIGZhbHNlOworRVhQTEFJTiAoQ09TVFMgT0ZGLCBWRVJC T1NFKSBVUERBVEUgcHQgU0VUIGIgPSAneCcgV0hFUkUgZmFsc2U7CisKKy0tIEZvcmVpZ24gY2hp bGQgbm90IHBydW5lZCBhbmQgaXQgZG9lcyBub3Qgc3VwcG9ydCBERUxFVEU6IGVycm9yLgorRVhQ TEFJTiAoQ09TVFMgT0ZGLCBWRVJCT1NFKSBERUxFVEUgRlJPTSBwdCBXSEVSRSBhID0gMTsKKwor LS0gUnVudGltZSBwcnVuaW5nIGluY2x1ZGVzIHRoZSBmb3JlaWduIGNoaWxkIGluIHRoZSBwbGFu OyBleGVjdXRvciBlcnJvcnMKKy0tIHNpbmNlIHRoZSBmb3JlaWduIGNoaWxkIGRvZXMgbm90IHN1 cHBvcnQgdGhlIGNvbW1hbmQuCitFWFBMQUlOIChDT1NUUyBPRkYsIFZFUkJPU0UpIERFTEVURSBG Uk9NIHB0IFdIRVJFIChTRUxFQ1QgZmFsc2UpOworCiBEUk9QIFRBQkxFIHB0OwogCiAtLSBnZW5l cmF0ZWQgY29sdW1uIHRlc3RzCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl TW9kaWZ5VGFibGUuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jCmlu ZGV4IDRjNTY0N2FjMzhhLi45ZjRkY2U4NjY4ZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1v ZGlmeVRhYmxlLmMKQEAgLTQ4NjMsNyArNDg2MywxNiBAQCBFeGVjSW5pdE1vZGlmeVRhYmxlKE1v ZGlmeVRhYmxlICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkJCXsKIAkJCQly ZXN1bHRSZWxJbmZvLT5yaV9Sb3dJZEF0dE5vID0KIAkJCQkJRXhlY0ZpbmRKdW5rQXR0cmlidXRl SW5UbGlzdChzdWJwbGFuLT50YXJnZXRsaXN0LCAiY3RpZCIpOwotCQkJCWlmICghQXR0cmlidXRl TnVtYmVySXNWYWxpZChyZXN1bHRSZWxJbmZvLT5yaV9Sb3dJZEF0dE5vKSkKKworCQkJCS8qCisJ CQkJICogRm9yIGhlYXAgcmVsYXRpb25zLCBhIGN0aWQganVuayBhdHRyaWJ1dGUgbXVzdCBiZSBw cmVzZW50LgorCQkJCSAqIEZvciBwYXJ0aXRpb25lZCB0YWJsZXMsIHJlcXVpcmUgaXQgb25seSB3 aGVuIGF0IGxlYXN0IG9uZSBsZWFmCisJCQkJICogcmVzdWx0IHJlbGF0aW9uIHJlbWFpbnMgaW4g dGhlIHBsYW4uICBJZiB0aGUgcGxhbiBoYXMgb25seSB0aGUKKwkJCQkgKiBkdW1teSByb290IChu byBsZWF2ZXMpLCBubyByb3dzIGNhbiBiZSBwcm9kdWNlZCBhbmQgY3RpZCBpcyBub3QKKwkJCQkg KiBuZWVkZWQuCisJCQkJICovCisJCQkJaWYgKCFBdHRyaWJ1dGVOdW1iZXJJc1ZhbGlkKHJlc3Vs dFJlbEluZm8tPnJpX1Jvd0lkQXR0Tm8pICYmCisJCQkJCShyZWxraW5kICE9IFJFTEtJTkRfUEFS VElUSU9ORURfVEFCTEUgfHwgbnJlbHMgPiAxKSkKIAkJCQkJZWxvZyhFUlJPUiwgImNvdWxkIG5v dCBmaW5kIGp1bmsgY3RpZCBjb2x1bW4iKTsKIAkJCX0KIAkJCWVsc2UgaWYgKHJlbGtpbmQgPT0g UkVMS0lORF9GT1JFSUdOX1RBQkxFKQotLSAKMi40Ny4zCgo= --00000000000046a5ff0642fdbc4f--