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 1wFZDx-005JK5-0w for pgsql-bugs@arkaria.postgresql.org; Wed, 22 Apr 2026 15:10:45 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wFZDw-00E8Kc-0Z for pgsql-bugs@arkaria.postgresql.org; Wed, 22 Apr 2026 15:10:44 +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.96) (envelope-from ) id 1wFZDv-00E8KN-29 for pgsql-bugs@lists.postgresql.org; Wed, 22 Apr 2026 15:10:43 +0000 Received: from mail-oi1-x229.google.com ([2607:f8b0:4864:20::229]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wFZDn-00000002Gjr-2fu6 for pgsql-bugs@lists.postgresql.org; Wed, 22 Apr 2026 15:10:42 +0000 Received: by mail-oi1-x229.google.com with SMTP id 5614622812f47-45f053b7b90so3149128b6e.0 for ; Wed, 22 Apr 2026 08:10:35 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1776870635; cv=none; d=google.com; s=arc-20240605; b=OrtNFVd9vTjFVkauHifVDri4ztC4q5U1qdkXF5GllsQeS89HlaZVsxrLHVoZL9MOGN G6TAsWmMwOlV1Szl6Wq+hCukGe90cf2tXoP/V0fixzQYkU+hb+xLoVtbFcSBiiR7E/MG 34UqIHlYtpChtC8f8OTUu+zv9fNbjIPM0DqDFLNS1EYU/b4/+VH0S9x0M0mrXyOvpzNJ DdZ1WEvQA4sbt5EPyUkTmcVWa5mkUY/3OjlnK114ngUb665q8j3nVntNZrsuxvPEPKZp 8GECxBHBWpSKSH+zCTuHaVpgIqhv6d9lZGcMxn8LRACPjp/DJSciVwUOSsNNkkcYnDs6 Rsiw== 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=5wfU3A2e8194kKYp2aAEfHuQgw3jfLRYTTlK/ITtyHk=; fh=LTHWvOrIvjxx6GBWAzmp7jI9QTWb9+yaoR8kpSljeak=; b=MRAgaQJSkGQMGGxxdHfew1xzaMZz8f6MpPsa5mGep0qhtElbwG0uoq6H3DSexdUQWi pmNFrnSOrTH08rYYSOks0jWmsoP9Qy7QMTj/epCz2bM0BGDDYwIfPfEFnbgZeqgvpbBV BpDs5N/EdFd3bYeicJ6HvGlK4JP3zLW60souyUGV+QbTh+3E+bXWgs5/Vvn6cO3qWDtN FgzMo5IIXhFtrN17T/gTjjG7ndBnEL0GG1jBoRxP/sDuKJkzwTSxdqW/Sq7nHZEFtJ8O RBoiIhEPaO1H0QR4CIh3+kSDCyESPU+TqYSZ50PPfMEqbEp43rFQmoyDSpbNbUtzLpYj eytA==; 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=1776870635; x=1777475435; 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=5wfU3A2e8194kKYp2aAEfHuQgw3jfLRYTTlK/ITtyHk=; b=qb6bRoOQfTQyCHsZJ5cEpInpddkHXUDiSxcfqB35Ep2pEp9WndYS/SUTM5Rz1j+aSQ 4lGUZHEbXH/o+aQWGn/owchMGH5h5hPjFxTTLvWpLwlauBVCrPTGx4UHgX/VY8PfztaK rH//HplryqII0q1QYxm475OcwVvBNV6YrIJBlqjB0IqqsAv5NfAtHmPmhz5Fns35NOr3 wfByhqGIub25nm1/Q+fy9Nvddtg/JzRyfAQ9U603mC9bnZf0oRH6zpTVDNJMt8kW0HGc Vyh33Xhr9bH6XCzPAEgrQj5NETl3FEjI88I6MgWslyw3FnwYuu3ue+h3xtj7Yy9zMJ/3 WqpA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776870635; x=1777475435; 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=5wfU3A2e8194kKYp2aAEfHuQgw3jfLRYTTlK/ITtyHk=; b=SjCYwpYd9NTP+uejVZ4ocBFweWxrEovFzuTSaIfToGSgMuF0R9mtafgN/RvwYDv1Lq dRohykGyRSQ1CGX4CaTU68dVehUsBdPl+b+LZdLjRecpsJlm/ZPEOTYwbwKLEi1uLqVz n3i8iaVmnYfl35c4sNGDKdndaI42II1GYtRd3xuUGjtS/P5uhE7pGS4tOIn6KLw8naM0 TlUb6+aKslzKoIDnfER7/g4YIdV1G++HI0PeO0AucFri7qTQ+jzOgiJbLBPC8QgoWwPC 29ZuHjEuVbBqNHALDzqXAMq6CTp3pnad4s0ZTR4uz9MxwClrbwGGojzWkiqa31NB6+kF XjsA== X-Forwarded-Encrypted: i=1; AFNElJ/6Etal60OrsRFNNlsZzt9dARASw5TGIc6K0Qps2Saf8+6BCBYLi3dRR8nmYTnEoPenLSnv08hD4lWp@lists.postgresql.org X-Gm-Message-State: AOJu0YyFNyUT4fYbfrqBHSB2yaGLQt6geQrJU2xGdPadUUgGovEXBx71 ssTsZ/xEXnVUeTVJHJc2GKYu2RGVqsW9feS07a3EHZ/VITwMbg0zUAuQ8XpmghRwGIeklhwvoKl yP6gBeZtt1axRuo2RVuudXyeE32hjy2c= X-Gm-Gg: AeBDiev88XNL2Pu3LtwZdSWOmV7DlCj+l3gNZBIXlJHoQ+7UzOVHvWMSsAowORDDWFu 947Gv6WJrshcjj2D+DCXeIymDzBMvLlre/aPYkla+wnjgJjl3iGgd2FJgvCOsrLe9DYYJ4FVMhs iEI+sZWCWt2l9hriKa9djC7yo0ekQNGnbLKj1BNCInL2U97/3BlSSCQpeJsGS+V0aCidQeffmXW oEHhO0b2KQ4n7kRCe8jtFLpaHu4nupzmx4DI2NWL2Sx2q1snQhbvTAw8Tlz25Y5ICqPQpfAXStw HKx/1dVGUnn9S/W/9R3SH6sQHOnHec46HspEkdN7pdzfePepNDkMuWt/0UFtGcn1xnpacGxqJYx rdFkQnqHrY68/Qbo5 X-Received: by 2002:a05:6808:221c:b0:45c:9384:3626 with SMTP id 5614622812f47-4799cb465aemr12176293b6e.47.1776870635092; Wed, 22 Apr 2026 08:10:35 -0700 (PDT) MIME-Version: 1.0 References: <19435-3cc1a87f291129f1@postgresql.org> <5a039d60-d13b-4cf0-a807-9c7269f06831@gmail.com> In-Reply-To: From: Alexander Korotkov Date: Wed, 22 Apr 2026 18:10:22 +0300 X-Gm-Features: AQROBzBveKP9NaWkIgNodt5b-UXvmmhUgF3mNKhDyO6UWs2eWyLqpyAekQEIA2Q Message-ID: Subject: Re: BUG #19435: Error: "No relation entry for relid 2" Triggered by Complex Join with Self-Referencing Tables To: Tender Wang Cc: Andrei Lepikhov , Kirill Reshke , Fujii Masao , ammmkilo@163.com, pgsql-bugs@lists.postgresql.org Content-Type: multipart/mixed; boundary="0000000000000454b106500def68" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000000454b106500def68 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Fri, Mar 27, 2026 at 3:19=E2=80=AFAM Tender Wang wr= ote: > Andrei Lepikhov =E4=BA=8E2026=E5=B9=B43=E6=9C=8827=E6= =97=A5=E5=91=A8=E4=BA=94 03:59=E5=86=99=E9=81=93=EF=BC=9A > > > > On 20/3/26 15:02, Alexander Korotkov wrote: > > > OK. I've pushed this. Let's go back to > > > restrict_infos_logically_equal(). I'm still not convinced that we > > > need to check if required_relids is singleton. Why we can ignore > > > outer_relids for singleton, but can't do if, for instance, two > > > relations involved? > > > > Let's continue. In the attachment, the Tender's proposal that I changed > > a little and added some tests. > > > > As you can see in the tests, the SINGLETON limitation keeps duplicates > > of clauses like 'a.x + b.y =3D c'. > > This example shows the main flaw of this approach. Introducing the > > restrict_infos_logically_equal(), we do a little more job than just the > > equal() routine could because of the context where we call this functio= n > > and on which clauses. > > But skipping all other RestrictInfo fields except required_relids seems > > excessive. - see the example with security_level difference - ignoring > > its value, we potentially might remove the clause with enforced securit= y > > level in favour of an unsecured one. > > Yes, it seems too strict to require all fields to be equal, but > skipping some fields is unsafe. > > > > That's more, further some new optimisations might introduce more fields > > into RestrictInfo that should be checked to correctly decide on the > > equality, and we may forget to arrange this specific place. > > > > Agree. > > > So, formally it works, and making the following replacement, we close > > the singleton issue: > > > > - if (bms_membership(a->required_relids) =3D=3D BMS_SINGLETON && > > - a->security_level =3D=3D b->security_level) > > + if (bms_equal(a->required_relids, b->required_relids) && > > + a->security_level =3D=3D b->security_level && > > + a->is_pushed_down =3D=3D b->is_pushed_down) > > > > The singleton issue does not seem to be the correct way; I don't dive > deeply to cover all cases. > > > but I'm unsure, in general, that this approach is conservative enough. > > Maybe we shouldn=E2=80=99t change this logic and invent one more optimi= sation > > =E2=80=98deduplication=E2=80=99 stage later, before the selectivity est= imation stage. I have another approach about to deduplication of RestrictInfo's. The field, which differs in this case, is outer_relids. AFAICS, outer_relids and incompatible_relids serves as the restriction on what we can do with RestrictInfo. So, what we can do is to ignore both outer_relids and incompatible_relids during comparison, but compose a union of their values for remaining RestrictInfo. That means that remaining RestrictInfo will ancest all the restrictions, and that should be safe. What do you think? ------ Regards, Alexander Korotkov Supabase --0000000000000454b106500def68 Content-Type: application/octet-stream; name="v1-0001-Deduplicate-RestrictInfos-differing-only-in-outer.patch" Content-Disposition: attachment; filename="v1-0001-Deduplicate-RestrictInfos-differing-only-in-outer.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_moa6omvs0 RnJvbSBjYWQ4MzM4MDJiYzFhMzFjMDZmZDgwYzNjZGVkOWZiNmY1YWJiZTE5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgS29yb3Rrb3YgPGFrb3JvdGtvdkBwb3N0Z3Jl c3FsLm9yZz4KRGF0ZTogV2VkLCAyMiBBcHIgMjAyNiAxNzoyODoyMyArMDMwMApTdWJqZWN0OiBb UEFUQ0ggdjFdIERlZHVwbGljYXRlIFJlc3RyaWN0SW5mb3MgZGlmZmVyaW5nIG9ubHkgaW4gb3V0 ZXJfcmVsaWRzCiBpbiBTSkUKCkR1cmluZyBzZWxmLWpvaW4gZWxpbWluYXRpb24sIGFuIEVDLWRl cml2ZWQgSVMgTk9UIE5VTEwgY2xhdXNlIGZyb20gYW4KaW5uZXIgam9pbiBhbmQgYW4gaWRlbnRp Y2FsIGNsYXVzZSBvcmlnaW5hdGluZyBmcm9tIGFuIGVuY2xvc2luZyBvdXRlcgpqb2luJ3MgT04g Y2xhdXNlIG1heSBib3RoIGJlIG1vdmVkIHRvIHRoZSBzdXJ2aXZpbmcgcmVsYXRpb24uICBUaGV5 CmFyZSBsb2dpY2FsbHkgZXF1aXZhbGVudCBidXQgY2FycnkgZGlmZmVyZW50IG91dGVyX3JlbGlk cyAvCmluY29tcGF0aWJsZV9yZWxpZHMgKHBsYWNlbWVudCBjb25zdHJhaW50cywgbm90IHNlbWFu dGljIGNvbnRlbnQpLCBzbwpyZXN0cmljdF9pbmZvc19sb2dpY2FsbHlfZXF1YWwoKSB1c2VkIHRv IGtlZXAgYm90aCwgcHJvZHVjaW5nIGEKZHVwbGljYXRlZCBmaWx0ZXIgaW4gdGhlIHBsYW4uCgpD b21wYXJlIG9ubHkgdGhlIGZpZWxkcyB0aGF0IGRlc2NyaWJlIHRoZSBmaWx0ZXIncyBzZW1hbnRp Y3MgYW5kCnBsYWNlbWVudCBsZXZlbCAoY2xhdXNlLCBjbGF1c2VfcmVsaWRzLCByZXF1aXJlZF9y ZWxpZHMsCnNlY3VyaXR5X2xldmVsLCBpc19wdXNoZWRfZG93biwgaGFzX2Nsb25lLCBpc19jbG9u ZSkuICBXaGVuIGEKZHVwbGljYXRlIGlzIGZvdW5kLCBtZXJnZSBvdXRlcl9yZWxpZHMgYW5kIGlu Y29tcGF0aWJsZV9yZWxpZHMgb2YgdGhlCnR3byBSZXN0cmljdEluZm9zIGJ5IHVuaW9uIGludG8g dGhlIHN1cnZpdmluZyBvbmUsIHNvIHRoZSBrZXB0IGNsYXVzZQpjYXJyaWVzIHRoZSBzdHJpY3Rl c3QgcGxhY2VtZW50IGFsbG93ZWQgYnkgZWl0aGVyIG9yaWdpbmFsLgoKQnVnOiAjMTk0MzUKLS0t CiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9hbmFseXplam9pbnMuYyB8IDY4ICsrKysrKysr KysrKysrKysrLS0tLS0tCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2pvaW4ub3V0ICAgICAg ICB8IDIwICsrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2pvaW4uc3FsICAgICAgICAgICAg IHwgMTAgKysrKwogMyBmaWxlcyBjaGFuZ2VkLCA4MiBpbnNlcnRpb25zKCspLCAxNiBkZWxldGlv bnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9hbmFseXplam9p bnMuYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL2FuYWx5emVqb2lucy5jCmluZGV4IDAz MDU2YmRmM2UwLi42NWU3MTUxOWIzMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVy L3BsYW4vYW5hbHl6ZWpvaW5zLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vYW5h bHl6ZWpvaW5zLmMKQEAgLTE2NTEsMjUgKzE2NTEsNDQgQEAgdXBkYXRlX2VjbGFzc2VzKEVxdWl2 YWxlbmNlQ2xhc3MgKmVjLCBpbnQgZnJvbSwgaW50IHRvKQogfQogCiAvKgotICogIkxvZ2ljYWxs eSIgY29tcGFyZXMgdHdvIFJlc3RyaWN0SW5mbydzIGlnbm9yaW5nIHRoZSAncmluZm9fc2VyaWFs JyBmaWVsZCwKLSAqIHdoaWNoIG1ha2VzIGFsbW9zdCBldmVyeSBSZXN0cmljdEluZm8gdW5pcXVl LiAgVGhpcyB0eXBlIG9mIGNvbXBhcmlzb24gaXMKLSAqIHVzZWZ1bCB3aGVuIHJlbW92aW5nIGR1 cGxpY2F0ZXMgd2hpbGUgbW92aW5nIFJlc3RyaWN0SW5mbydzIGZyb20gcmVtb3ZlZAotICogcmVs YXRpb24gdG8gcmVtYWluaW5nIHJlbGF0aW9uIGR1cmluZyBzZWxmLWpvaW4gZWxpbWluYXRpb24u CisgKiBDb21wYXJlIHR3byBSZXN0cmljdEluZm9zIGZvciBsb2dpY2FsIGVxdWl2YWxlbmNlIGR1 cmluZyBzZWxmLWpvaW4KKyAqIGVsaW1pbmF0aW9uIGRlZHVwLiAgVHdvIGNsYXVzZXMgYXJlIGxv Z2ljYWxseSBlcXVpdmFsZW50IGlmIHRoZXkgYXBwbHkKKyAqIHRoZSBzYW1lIHRlc3QgYXQgdGhl IHNhbWUgc2VtYW50aWMgcGxhY2VtZW50IGxldmVsLCBpLmUuIHRoZWlyIGNsYXVzZQorICogY29u dGVudCBhbmQgdGhlIGZpZWxkcyB0aGF0IGRldGVybWluZSB3aGVuL3doZXJlIHRoZSBmaWx0ZXIg bXVzdCBydW4KKyAqIGFsbCBtYXRjaC4KICAqCi0gKiBYWFg6IEluIHRoZSBmdXR1cmUsIHdlIG1p Z2h0IHJlbW92ZSB0aGUgJ3JpbmZvX3NlcmlhbCcgZmllbGQgY29tcGxldGVseSBhbmQKLSAqIGdl dCByaWQgb2YgdGhpcyBmdW5jdGlvbi4KKyAqIG91dGVyX3JlbGlkcyBhbmQgaW5jb21wYXRpYmxl X3JlbGlkcyBtYXkgbGVnaXRpbWF0ZWx5IGRpZmZlciBiZXR3ZWVuCisgKiB0d28gc3VjaCBjbGF1 c2VzOiB0aGV5IGFyZSBwbGFjZW1lbnQgKmNvbnN0cmFpbnRzKiByYXRoZXIgdGhhbiBzZW1hbnRp YworICogY29udGVudCwgYW5kIHRoZSBzYW1lIGxvZ2ljYWwgZmlsdGVyIGNhbiBhcmlzZSBmcm9t IGRpZmZlcmVudCBsZXZlbHMgb2YKKyAqIHRoZSBqb2luIHRyZWUgKGUuZy4gYW4gRUMtZGVyaXZl ZCBJUyBOT1QgTlVMTCBmcm9tIGFuIGlubmVyIGpvaW4gdnMuIGFuCisgKiBvcmlnaW5hbCBPTi1j bGF1c2UgZnJvbSBhbiBlbmNsb3Npbmcgb3V0ZXIgam9pbikgd2l0aCBkaWZmZXJlbnQKKyAqIGNv bnN0cmFpbnQgc2V0cy4gIENhbGxlcnMgbXVzdCBjb21iaW5lIHRoZXNlIGNvbnN0cmFpbnRzIChi eSB1bmlvbikKKyAqIHdoZW4gdHJlYXRpbmcgb25lIGNsYXVzZSBhcyByZWR1bmRhbnQgd2l0aCBh bm90aGVyLCBzbyB0aGF0IHRoZQorICogc3Vydml2aW5nIGNsYXVzZSBjYXJyaWVzIHRoZSBzdHJp Y3Rlc3QgcGxhY2VtZW50IGFsbG93ZWQgYnkgZWl0aGVyCisgKiBvcmlnaW5hbC4gIFNlZSBhZGRf bm9uX3JlZHVuZGFudF9jbGF1c2VzKCkuCisgKgorICogcmluZm9fc2VyaWFsIGlzIHNraXBwZWQg YmVjYXVzZSBpdCBpcyBvbmx5IGFuIGlkZW50aWZpZXIuICBGaWVsZHMKKyAqIG1hcmtlZCBwZ19u b2RlX2F0dHIoZXF1YWxfaWdub3JlKSBpbiB0aGUgc3RydWN0IGRlZmluaXRpb24gKGNhY2hlZAor ICogY29zdHMsIHNlbGVjdGl2aXRpZXMsIEVDIGJhY2stcG9pbnRlcnMsIGRlcml2ZWQgcmVsaWQg c3Vic2V0cykgYXJlCisgKiBsaWtld2lzZSBza2lwcGVkIHNpbmNlIHRoZXkgYXJlIGVpdGhlciBj YWNoZXMgb3IgcmVkdW5kYW50IHdpdGggZmllbGRzCisgKiB0aGF0IGFyZSBjaGVja2VkIGhlcmUu CiAgKi8KIHN0YXRpYyBib29sCiByZXN0cmljdF9pbmZvc19sb2dpY2FsbHlfZXF1YWwoUmVzdHJp Y3RJbmZvICphLCBSZXN0cmljdEluZm8gKmIpCiB7Ci0JaW50CQkJc2F2ZWRfcmluZm9fc2VyaWFs ID0gYS0+cmluZm9fc2VyaWFsOwotCWJvb2wJCXJlc3VsdDsKLQotCWEtPnJpbmZvX3NlcmlhbCA9 IGItPnJpbmZvX3NlcmlhbDsKLQlyZXN1bHQgPSBlcXVhbChhLCBiKTsKLQlhLT5yaW5mb19zZXJp YWwgPSBzYXZlZF9yaW5mb19zZXJpYWw7Ci0KLQlyZXR1cm4gcmVzdWx0OworCWlmIChhLT5zZWN1 cml0eV9sZXZlbCAhPSBiLT5zZWN1cml0eV9sZXZlbCkKKwkJcmV0dXJuIGZhbHNlOworCWlmIChh LT5pc19wdXNoZWRfZG93biAhPSBiLT5pc19wdXNoZWRfZG93bikKKwkJcmV0dXJuIGZhbHNlOwor CWlmIChhLT5oYXNfY2xvbmUgIT0gYi0+aGFzX2Nsb25lKQorCQlyZXR1cm4gZmFsc2U7CisJaWYg KGEtPmlzX2Nsb25lICE9IGItPmlzX2Nsb25lKQorCQlyZXR1cm4gZmFsc2U7CisJaWYgKCFibXNf ZXF1YWwoYS0+Y2xhdXNlX3JlbGlkcywgYi0+Y2xhdXNlX3JlbGlkcykpCisJCXJldHVybiBmYWxz ZTsKKwlpZiAoIWJtc19lcXVhbChhLT5yZXF1aXJlZF9yZWxpZHMsIGItPnJlcXVpcmVkX3JlbGlk cykpCisJCXJldHVybiBmYWxzZTsKKwlyZXR1cm4gZXF1YWwoYS0+Y2xhdXNlLCBiLT5jbGF1c2Up OwogfQogCiAvKgpAQCAtMTY4Miw2ICsxNzAxLDEzIEBAIHJlc3RyaWN0X2luZm9zX2xvZ2ljYWxs eV9lcXVhbChSZXN0cmljdEluZm8gKmEsIFJlc3RyaWN0SW5mbyAqYikKICAqIHdvdWxkIGhhdmUg YmVlbiBiZXR0ZXIgdG8gYXZvaWQgY2FsbGluZyB0aGUgZXF1YWwoKSBmdW5jdGlvbiBoZXJlLCBi dXQKICAqIGl0J3MgdGhlIG9ubHkgd2F5IHRvIGRldGVjdCBkdXBsaWNhdGVkIGluZXF1YWxpdHkg ZXhwcmVzc2lvbnMuCiAgKgorICogV2hlbiBhIGNhbmRpZGF0ZSBpcyBmb3VuZCB0byBiZSBsb2dp Y2FsbHkgZXF1aXZhbGVudCB0byBhbiBhbHJlYWR5LWtlcHQKKyAqIGNsYXVzZSBidXQgY2Fycmll cyBkaWZmZXJlbnQgb3V0ZXJfcmVsaWRzIC8gaW5jb21wYXRpYmxlX3JlbGlkcywgdGhvc2UKKyAq IHBsYWNlbWVudC1jb25zdHJhaW50IHNldHMgYXJlIG1lcmdlZCBieSB1bmlvbiBpbnRvIHRoZSBz dXJ2aXZpbmcKKyAqIGNsYXVzZS4gIFRoZSB1bmlvbiBpcyB0aGUgc3RyaWN0ZXN0IGNvbW1vbiBj b25zdHJhaW50OiBhbnkgcGxhY2VtZW50CisgKiBhbGxvd2VkIGJ5IGJvdGggb3JpZ2luYWxzIHJl bWFpbnMgYWxsb3dlZCwgc28ga2VlcGluZyBvbmx5IHRoZSBtZXJnZWQKKyAqIGNsYXVzZSByZXBy b2R1Y2VzIHRoZSBzYW1lIGZpbHRlcmluZyB3aXRob3V0IHJlbGF4aW5nIGFueSBwcm9oaWJpdGlv bi4KKyAqCiAgKiAoKmtlZXBfcmluZm9fbGlzdCkgaXMgZ2l2ZW4gYnkgcG9pbnRlciBiZWNhdXNl IGl0IG1pZ2h0IGJlIGFsdGVyZWQgYnkKICAqIGRpc3RyaWJ1dGVfcmVzdHJpY3RpbmZvX3RvX3Jl bHMoKS4KICAqLwpAQCAtMTcwNSw5ICsxNzMxLDE5IEBAIGFkZF9ub25fcmVkdW5kYW50X2NsYXVz ZXMoUGxhbm5lckluZm8gKnJvb3QsCiAKIAkJCWlmIChzcmMgPT0gcmluZm8gfHwKIAkJCQkocmlu Zm8tPnBhcmVudF9lYyAhPSBOVUxMICYmCi0JCQkJIHNyYy0+cGFyZW50X2VjID09IHJpbmZvLT5w YXJlbnRfZWMpIHx8Ci0JCQkJcmVzdHJpY3RfaW5mb3NfbG9naWNhbGx5X2VxdWFsKHJpbmZvLCBz cmMpKQorCQkJCSBzcmMtPnBhcmVudF9lYyA9PSByaW5mby0+cGFyZW50X2VjKSkKKwkJCXsKKwkJ CQlpc19yZWR1bmRhbnQgPSB0cnVlOworCQkJCWJyZWFrOworCQkJfQorCisJCQlpZiAocmVzdHJp Y3RfaW5mb3NfbG9naWNhbGx5X2VxdWFsKHJpbmZvLCBzcmMpKQogCQkJeworCQkJCXNyYy0+b3V0 ZXJfcmVsaWRzID0gYm1zX3VuaW9uKHNyYy0+b3V0ZXJfcmVsaWRzLAorCQkJCQkJCQkJCQkgIHJp bmZvLT5vdXRlcl9yZWxpZHMpOworCQkJCXNyYy0+aW5jb21wYXRpYmxlX3JlbGlkcyA9CisJCQkJ CWJtc191bmlvbihzcmMtPmluY29tcGF0aWJsZV9yZWxpZHMsCisJCQkJCQkJICByaW5mby0+aW5j b21wYXRpYmxlX3JlbGlkcyk7CiAJCQkJaXNfcmVkdW5kYW50ID0gdHJ1ZTsKIAkJCQlicmVhazsK IAkJCX0KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvam9pbi5vdXQgYi9z cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2pvaW4ub3V0CmluZGV4IDc4YmYwMjJmN2I0Li4yNjM1 ZTI2YWZkOCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9qb2luLm91dAor KysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2pvaW4ub3V0CkBAIC04MTQ3LDYgKzgxNDcs MjYgQEAgU0VMRUNUIDEgQVMgYzEgRlJPTSBzbCBzbDEgTEVGVCBKT0lOIChzbCBBUyBzbDIgTkFU VVJBTCBKT0lOIHNsIEFTIHNsMykKICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBzbCBzbDQKICg3 IHJvd3MpCiAKKy0tIEFuIEVDLWRlcml2ZWQgSVMgTk9UIE5VTEwgKGZyb20gdGhlIE5BVFVSQUwg Sk9JTidzIHNlbGYtam9pbiByZW1vdmFsKSBtYXkKKy0tIGNvbGxpZGUgd2l0aCBhbiBpZGVudGlj YWwgSVMgTk9UIE5VTEwgb3JpZ2luYXRpbmcgZnJvbSBhbiBlbmNsb3Npbmcgb3V0ZXIKKy0tIGpv aW4ncyBPTiBjbGF1c2UuICBUaGUgdHdvIGNsYXVzZXMgZGlmZmVyIG9ubHkgaW4gb3V0ZXJfcmVs aWRzLCBzbyB0aGV5CistLSBtdXN0IGJlIG1lcmdlZCAoYnkgdW5pb24pIHJhdGhlciB0aGFuIGtl cHQgYXMgZHVwbGljYXRlcy4gIEJ1ZyAjMTk0MzUuCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxF Q1QgMSBBUyBjMSBGUk9NIChzbCBBUyBzbDAgUklHSFQgSk9JTgorICAoKHNsIEFTIHNsMSBOQVRV UkFMIEpPSU4gc2wgQVMgc2wyKQorICAgUklHSFQgSk9JTiBzbCBBUyBzbDMgT04gc2wxLmJvb2xf Y29sIElTIE5PVCBOVUxMKQorICBPTiBzbDEuYm9vbF9jb2wpOworICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBOZXN0ZWQgTG9vcCBMZWZ0IEpvaW4KKyAg IC0+ICBTZXEgU2NhbiBvbiBzbCBzbDMKKyAgIC0+ICBOZXN0ZWQgTG9vcCBMZWZ0IEpvaW4KKyAg ICAgICAgIEpvaW4gRmlsdGVyOiBzbDIuYm9vbF9jb2wKKyAgICAgICAgIC0+ICBTZXEgU2NhbiBv biBzbCBzbDIKKyAgICAgICAgICAgICAgIEZpbHRlcjogKChib29sX2NvbCBJUyBOT1QgTlVMTCkg QU5EIChhIElTIE5PVCBOVUxMKSBBTkQgKGIgSVMgTk9UIE5VTEwpIEFORCAoYyBJUyBOT1QgTlVM TCkpCisgICAgICAgICAtPiAgU2VxIFNjYW4gb24gc2wgc2wwCisoNyByb3dzKQorCiAtLSBDaGVj ayBvcHRpbWl6YXRpb24gZGlzYWJsaW5nIGlmIGl0IHdpbGwgdmlvbGF0ZSBzcGVjaWFsIGpvaW4g Y29uZGl0aW9ucy4KIC0tIFR3byBpZGVudGljYWwgam9pbmVkIHJlbGF0aW9ucyBzYXRpc2ZpZXMg c2VsZiBqb2luIHJlbW92YWwgY29uZGl0aW9ucyBidXQKIC0tIHN0YXkgaW4gZGlmZmVyZW50IHNw ZWNpYWwgam9pbiBpbmZvcy4KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2pvaW4u c3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvam9pbi5zcWwKaW5kZXggZmFlMTkxMTNjZWYuLjg5 YzU0YTZlMTcyIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9qb2luLnNxbAorKysg Yi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9qb2luLnNxbApAQCAtMzE4NSw2ICszMTg1LDE2IEBAIEVY UExBSU4gKENPU1RTIE9GRikKIFNFTEVDVCAxIEFTIGMxIEZST00gc2wgc2wxIExFRlQgSk9JTiAo c2wgQVMgc2wyIE5BVFVSQUwgSk9JTiBzbCBBUyBzbDMpCiAgIE9OIHNsMi5ib29sX2NvbCBMRUZU IEpPSU4gc2wgQVMgc2w0IE9OIHNsMi5ib29sX2NvbDsKIAorLS0gQW4gRUMtZGVyaXZlZCBJUyBO T1QgTlVMTCAoZnJvbSB0aGUgTkFUVVJBTCBKT0lOJ3Mgc2VsZi1qb2luIHJlbW92YWwpIG1heQor LS0gY29sbGlkZSB3aXRoIGFuIGlkZW50aWNhbCBJUyBOT1QgTlVMTCBvcmlnaW5hdGluZyBmcm9t IGFuIGVuY2xvc2luZyBvdXRlcgorLS0gam9pbidzIE9OIGNsYXVzZS4gIFRoZSB0d28gY2xhdXNl cyBkaWZmZXIgb25seSBpbiBvdXRlcl9yZWxpZHMsIHNvIHRoZXkKKy0tIG11c3QgYmUgbWVyZ2Vk IChieSB1bmlvbikgcmF0aGVyIHRoYW4ga2VwdCBhcyBkdXBsaWNhdGVzLiAgQnVnICMxOTQzNS4K K0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCAxIEFTIGMxIEZST00gKHNsIEFTIHNsMCBSSUdI VCBKT0lOCisgICgoc2wgQVMgc2wxIE5BVFVSQUwgSk9JTiBzbCBBUyBzbDIpCisgICBSSUdIVCBK T0lOIHNsIEFTIHNsMyBPTiBzbDEuYm9vbF9jb2wgSVMgTk9UIE5VTEwpCisgIE9OIHNsMS5ib29s X2NvbCk7CisKIC0tIENoZWNrIG9wdGltaXphdGlvbiBkaXNhYmxpbmcgaWYgaXQgd2lsbCB2aW9s YXRlIHNwZWNpYWwgam9pbiBjb25kaXRpb25zLgogLS0gVHdvIGlkZW50aWNhbCBqb2luZWQgcmVs YXRpb25zIHNhdGlzZmllcyBzZWxmIGpvaW4gcmVtb3ZhbCBjb25kaXRpb25zIGJ1dAogLS0gc3Rh eSBpbiBkaWZmZXJlbnQgc3BlY2lhbCBqb2luIGluZm9zLgotLSAKMi4zOS41IChBcHBsZSBHaXQt MTU0KQoK --0000000000000454b106500def68--