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 1wkUi1-000hwz-1I for pgsql-bugs@arkaria.postgresql.org; Thu, 16 Jul 2026 22:37:37 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wkUi0-00FOyU-1C for pgsql-bugs@arkaria.postgresql.org; Thu, 16 Jul 2026 22:37:36 +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 1wkUi0-00FOyM-0J for pgsql-bugs@lists.postgresql.org; Thu, 16 Jul 2026 22:37:36 +0000 Received: from mail-yx1-xb12c.google.com ([2607:f8b0:4864:20::b12c]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wkUhx-00000000fTZ-2qtg for pgsql-bugs@lists.postgresql.org; Thu, 16 Jul 2026 22:37:35 +0000 Received: by mail-yx1-xb12c.google.com with SMTP id 956f58d0204a3-6611669cd16so3938226d50.0 for ; Thu, 16 Jul 2026 15:37:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1784241451; x=1784846251; darn=lists.postgresql.org; h=in-reply-to:references:to:from:subject:message-id:date:mime-version :content-type:from:to:cc:subject:date:message-id:reply-to :content-type; bh=i9Km9I4URhqRRJjh65Z5FqtYgAtG1cTp5q45O/Mb2/Y=; b=YFob5DVwQVXdzZxDlk72D4fVpUGl6h83KSwERS3J+QSCvNsEXGaC39Auj7YPv1r2t2 GJZ1ed8vSD9p/RtH7sEvSZZ8DsFNjwpK0JyFkXbsU/Dh9QUrjezybAz7kOULvmSoJ0et Cn7lY8Veb44FkOXXaDTZvkADIL+V2xp0QTnshx2lvXOM2XCb+apSaaWx7lwboRPWQiAk ihaMq06H9qnwBuUfxbQA6OgioSbWmjXVLtOTQwsaZ0p+nxesXn125+nDH36wQJDvcy9E aDtP1P7FB5G7dFU/HbrGfsbiZJLlv2Je8Cr4D3GeXtt2MY14zErTTbwUrWbf1rGu8k1n EKzg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784241451; x=1784846251; h=in-reply-to:references:to:from:subject:message-id:date:mime-version :content-type:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to:content-type; bh=i9Km9I4URhqRRJjh65Z5FqtYgAtG1cTp5q45O/Mb2/Y=; b=GWsXp4Pb5yKKWKvGwar2QMUo31A3sTrZWerKpbhQAXhaMsrQVnnAJhjEqwoSxH2iJ0 JjofmuGkgfk6ODg4xoZ9b4jQ0ALHLjbNg+qVRBT49qJlEMeDVVNS0eZg7CsZW3Jg7loA e5v819cBfEjMn2JugFpq8sDZ65JbBzzRomiVDBwP+FMb69knssP5xi5yCcJttjAikKnp 5xyJSPfJlppIGOtA8/ziuubL+RDIEWpdW+WK+0LQ84M8fXBenxoouspDtYmC7lZ4Pkw+ MezJpXdPC1bNbb310wjIA+h0lmnxIMjTPMcT9Msk31QTFRLMH+RlgfLzLon3QGyzfNBb SxYQ== X-Forwarded-Encrypted: i=1; AHgh+RoscgVTdZO437cVBFXgk81gyw09lSVg5u5oMV+nYVCO3fKxEYNdilndcG48nl4mmsoCX/0b5jdPjgHr@lists.postgresql.org X-Gm-Message-State: AOJu0YzJiukdALTC/ShMT6a0lZACb3STtmK/2CzUPErgu4o78UU/sYd5 SLhCbOYETATcNnAcR34Jk2YxlwRz1cHLtLQqogJsUq+qRMZsPHfEBieSZVK9uw== X-Gm-Gg: AfdE7cmu6PMoaKXkCvlwtobP2ErI1Q3vlRQsIrlC8CMH3IvrU+sRzVEOKQHqYa3f3SP d6KX9o5W96dsAFYVsb7dupuRUlu97+0Xo5lKZPcliLQiRHnVIb0Gel7jSb8QbISBebpEHGAp5QK nd7hPduXKPIPYkdjoqapa/dVgpMaczmeSvMx96PteXWsBfr/SUFU7Cn9LPTHjjBbMxBIKFRBfuj zQePvJjtW2BnffCdEMz3rbL0vqUlLyp+t8C8rRurpL5AmcnrIjlwEOST2ympWReBi191/UWOGul 4S33OFF+/yNCc8fLED+ZJRfZB5ypC4qVuaVCIWVeg02E3uvd2bJAtucvS/3EbFn6lMz89wBVM6i kVLFhF7ZGSs9uiAX+Q2EX5eH8Bhib8KjUoFTej/dzb+ehIDxILFlIg/xVDqBnTnZ2I/5vygnLq+ SiM1gixMvbDDwjYIxEia3Opas= X-Received: by 2002:a53:a552:0:b0:667:d9af:27f6 with SMTP id 956f58d0204a3-66836c84914mr403569d50.18.1784241450754; Thu, 16 Jul 2026 15:37:30 -0700 (PDT) Received: from localhost ([2804:14d:32a7:4273:cf0:5f01:2a01:a729]) by smtp.gmail.com with ESMTPSA id 00721157ae682-81e6c201dc7sm206393427b3.41.2026.07.16.15.37.29 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 16 Jul 2026 15:37:30 -0700 (PDT) Content-Type: multipart/mixed; boundary=1f486a5b3e7943ffe8311108501b9e095f9e9a4ba94b4dedfb9e4739d652 Mime-Version: 1.0 Date: Thu, 16 Jul 2026 19:37:27 -0300 Message-Id: Subject: Re: BUG #19553: Wrong results from nested LEFT JOINs over an empty subquery (regression since v16) From: "Matheus Alcantara" To: , X-Mailer: aerc 0.21.0 References: <19553-4561747f93f368a7@postgresql.org> In-Reply-To: <19553-4561747f93f368a7@postgresql.org> List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --1f486a5b3e7943ffe8311108501b9e095f9e9a4ba94b4dedfb9e4739d652 Content-Type: multipart/alternative; boundary=52aebb5a22dddff2fa678baa672a2173dc49027b1c6f4848921fbab34195 --52aebb5a22dddff2fa678baa672a2173dc49027b1c6f4848921fbab34195 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Content-Type: text/plain; charset=UTF-8 On Thu Jul 16, 2026 at 11:12 AM -03, PG Bug reporting form wrote: > The following bug has been logged on the website: > > Bug reference: 19553 > Logged by: Viktor Leis > Email address: leis@in.tum.de > PostgreSQL version: 19beta2 > Operating system: Ubuntu 26.04 > Description: =20 > > Hi, > > The following self-contained query returns wrong results on every release > since v16: > > select * from (values (1),(2)) v(x) > left join (select q from (select 7 as q from (select where false) ss1= ) > ss2 > left join (select 8 as z) ss3 on true) ss4 on true; > > x | q > ---+--- > 1 | 7 > 2 | 7 > (2 rows) > > The right-hand side of the top left join is provably empty (ss1 produces = no > rows, and the inner left join preserves that), so the correct result > null-extends both rows: > > x | q > ---+--- > 1 | > 2 | > (2 rows) > > EXPLAIN (VERBOSE) on affected versions shows that the entire RHS has been > optimized away and the constant is emitted unconditionally: > > Values Scan on "*VALUES*" > Output: "*VALUES*".column1, 7 > > I bisected the regression to commit 3af87736bf5 ("Fix another cause of > 'wrong varnullingrels' planner failures" by Tom Lane). > Hi, thank you for the report and for the script reproducer. According to my findings, the issue seems to be in remove_useless_results_recurse(), specifically in find_dependent_phvs(). When a LEFT JOIN's RHS reduces to an RTE_RESULT, that function is used to check whether any PlaceHolderVar still depends on the RTE_RESULT being considered for removal; if not, the join is discarded along with the RTE_RESULT. The check was testing whether a PHV's phrels was exactly equal to {varno}, but that's too narrow. In your example, the constant "7" gets wrapped in a PlaceHolderVar whose phrels ends up as the union of both RTE_RESULTs in the inner commuted left join (the ss1 "WHERE false" result and the ss3 "SELECT 8" result), because the pulled-up subquery's output needs to be nullable by the outer join. Since phrels was {ss1, ss3} rather than exactly {ss1}, find_dependent_phvs() wrongly concluded the outer join had no remaining dependents and dropped it, taking the join's null-extension semantics with it. That's why the constant got emitted unconditionally instead of being nulled out for the "no match" case. Attached patch seems to fix find_dependent_phvs() to test membership rather than exact equality, since that's what actually indicates the PHV's value depends on that relation. find_dependent_phvs_in_jointree(), used for a different purpose so keeps the exact-match behavior it had, as that's it seems to still correct for its use case. I added a field to the shared context struct to keep both behaviors sharing one walker. Verified against your original repro and a version using tables instead of VALUES/constants (make it more easier for me to debug): create table t (id int, name text); insert into t values (1, 'Alice'), (2, 'Bob'); select c.id, c.name, promo.discount from t c left join ( select discount from (select 0.20 as discount from (select where false) no_matching_pro= mo) rates left join (select true as eligible) elig on true ) promo on true; -- Matheus Alcantara EDB: https://www.enterprisedb.com --52aebb5a22dddff2fa678baa672a2173dc49027b1c6f4848921fbab34195-- --1f486a5b3e7943ffe8311108501b9e095f9e9a4ba94b4dedfb9e4739d652 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=0001-Fix-wrong-results-from-remove_useless_result_rtes-wi.patch Content-Type: text/plain; charset=utf-8; name=0001-Fix-wrong-results-from-remove_useless_result_rtes-wi.patch RnJvbSA2NjcyZjNjNTljMTc3MTVjYmE0NTAwYjE5YmY2Y2I3YjY0YjE5YjcxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXRoZXVzIEFsY2FudGFyYSA8bXRocy5kZXZAcG0ubWU+CkRh dGU6IFRodSwgMTYgSnVsIDIwMjYgMTk6MDU6NTUgLTAzMDAKU3ViamVjdDogW1BBVENIXSBGaXgg d3JvbmcgcmVzdWx0cyBmcm9tIHJlbW92ZV91c2VsZXNzX3Jlc3VsdF9ydGVzIHdpdGggbmVzdGVk CiBQSFZzLgoKZmluZF9kZXBlbmRlbnRfcGh2cygpIHdhcyBjaGVja2luZyB3aGV0aGVyIGFueSBQ bGFjZUhvbGRlclZhcidzIHBocmVscwp3YXMgZXhhY3RseSBlcXVhbCB0byB0aGUgUlRFX1JFU1VM VCByZWxpZCBiZWluZyBjb25zaWRlcmVkIGZvciByZW1vdmFsLgpCdXQgYSBQSFYgY2FuIGxlZ2l0 aW1hdGVseSBoYXZlIGFkZGl0aW9uYWwgcmVsaWRzIGluIHBocmVscyBiZXlvbmQgdGhlCm9uZSBi ZWluZyByZW1vdmVkLCB3aGVuIHRoZSBQSFYncyB2YWx1ZSBpcyBjb21wdXRlZCBqb2ludGx5IHdp dGggYQpzaWJsaW5nIFJURV9SRVNVTFQgdGhhdCBnZXRzIGZvbGRlZCBhd2F5IGZpcnN0LCBhcyBo YXBwZW5zIHdoZW4gdHdvCmNvbW11dGFibGUgbGVmdCBqb2lucyBhcmUgbmVzdGVkIGFuZCB0aGUg bG93ZXIgb25lJ3MgUkhTIHJlZHVjZXMgdG8gYQpjb25zdGFudC4gSW4gc3VjaCBjYXNlcyB0aGUg UEhWIHN0aWxsIGRlcGVuZHMgb24gdGhlIG91dGVyIFJURV9SRVNVTFQKYmVpbmcgcmVtb3ZlZCwg YnV0IHRoZSBleGFjdC1tYXRjaCB0ZXN0IG1pc3NlZCBpdCwgY2F1c2luZwpyZW1vdmVfdXNlbGVz c19yZXN1bHRzX3JlY3Vyc2UgdG8gZGlzY2FyZCB0aGUgZW5jbG9zaW5nIGxlZnQgam9pbiBhbG9u Zwp3aXRoIHRoZSBSVEVfUkVTVUxULiBUaGF0IHNpbGVudGx5IGRyb3BwZWQgdGhlIG91dGVyIGpv aW4ncwpudWxsLWV4dGVuc2lvbiBzZW1hbnRpY3MsIHNvIGEgUEhWLXdyYXBwZWQgY29uc3RhbnQg dGhhdCBzaG91bGQgaGF2ZQpiZWVuIG51bGxlZCBvdXQgZm9yIHVubWF0Y2hlZCByb3dzIHdhcyBp bnN0ZWFkIGVtaXR0ZWQgdW5jb25kaXRpb25hbGx5CmZvciBldmVyeSByb3cuCgpGaXggZmluZF9k ZXBlbmRlbnRfcGh2cyB0byB0ZXN0IHdoZXRoZXIgdGhlIGdpdmVuIHJlbGlkIGlzIGEgbWVtYmVy IG9mCnBocmVscyByYXRoZXIgdGhhbiByZXF1aXJpbmcgYW4gZXhhY3QgbWF0Y2gsIHNpbmNlIG1l bWJlcnNoaXAgaXMgd2hhdAphY3R1YWxseSBpbmRpY2F0ZXMgYSBkZXBlbmRlbmN5LiBmaW5kX2Rl cGVuZGVudF9waHZzX2luX2pvaW50cmVlLCB3aGljaAppcyB1c2VkIGZvciBhIGRpZmZlcmVudCBw dXJwb3NlIChkZWNpZGluZyB3aGV0aGVyIGEgRnJvbUV4cHIgb3IgaW5uZXIKam9pbiBjYW4gYmUg ZWxpZGVkKSBhbmQgaGFzIGRpZmZlcmVudCBjb3JyZWN0bmVzcyByZXF1aXJlbWVudHMsIGtlZXBz Cml0cyBvcmlnaW5hbCBleGFjdC1tYXRjaCBiZWhhdmlvci4gVGhlIHR3byBub3cgc2hhcmUgdGhl IHdhbGtlciB2aWEgYW4KYWRkZWQgImV4YWN0IiBmbGFnIG9uIHRoZSBjb250ZXh0IHN0cnVjdC4K CkF1dGhvcjogTWF0aGV1cyBBbGNhbnRhcmEgPG10aHMuZGV2QHBtLm1lPgpSZXBvcnRlZC1ieTog bGVpc0Bpbi50dW0uZGUgPGxlaXNAaW4udHVtLmRlPgpEaXNjdXNzaW9uOiBodHRwczovL3d3dy5w b3N0Z3Jlc3FsLm9yZy9tZXNzYWdlLWlkLzE5NTUzLTQ1NjE3NDdmOTNmMzY4YTdAcG9zdGdyZXNx bC5vcmcKLS0tCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcHJlcC9wcmVwam9pbnRyZWUuYyB8IDIz ICsrKysrKysrKysrKysrLS0tLS0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvam9pbi5vdXQg ICAgICAgIHwgMjggKysrKysrKysrKysrKysrKysrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L2pvaW4uc3FsICAgICAgICAgICAgIHwgMTIgKysrKysrKysrKwogMyBmaWxlcyBjaGFuZ2VkLCA1 NyBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L29wdGltaXplci9wcmVwL3ByZXBqb2ludHJlZS5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3By ZXAvcHJlcGpvaW50cmVlLmMKaW5kZXggY2E1Y2E4YmZlMjIuLjE4OGVjY2VhNGQ1IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcHJlcC9wcmVwam9pbnRyZWUuYworKysgYi9zcmMv YmFja2VuZC9vcHRpbWl6ZXIvcHJlcC9wcmVwam9pbnRyZWUuYwpAQCAtNDI4MCwyMCArNDI4MCwy NyBAQCByZW1vdmVfcmVzdWx0X3JlZnMoUGxhbm5lckluZm8gKnJvb3QsIGludCB2YXJubywgTm9k ZSAqbmV3anRsb2MpCiAKIAogLyoKLSAqIGZpbmRfZGVwZW5kZW50X3BodnMgLSBhcmUgdGhlcmUg YW55IFBsYWNlSG9sZGVyVmFycyB3aG9zZSByZWxpZHMgYXJlCi0gKiBleGFjdGx5IHRoZSBnaXZl biB2YXJubz8KKyAqIGZpbmRfZGVwZW5kZW50X3BodnMgLSBhcmUgdGhlcmUgYW55IFBsYWNlSG9s ZGVyVmFycyB0aGF0IGRlcGVuZCBvbiB0aGUKKyAqIGdpdmVuIHZhcm5vPworICoKKyAqICJEZXBl bmQgb24iIG1lYW5zIHRoZSB2YXJubyBpcyBhIG1lbWJlciBvZiB0aGUgUEhWJ3MgcGhyZWxzLCBp LmUuIHRoZSBQSFYncworICogdmFsdWUgaXMgKHBhcnRseSkgY29tcHV0ZWQgYXQgdGhhdCByZWxh dGlvbi4gIFdlIG11c3QgY29uc2lkZXIgc3VjaCBQSFZzIGFuZAorICogbm90IG9ubHkgdGhvc2Ug d2hvc2UgcGhyZWxzIGFyZSBleGFjdGx5IHt2YXJub30sIGJlY2F1c2UgYSBsZWZ0IGpvaW4gd2hv c2UKKyAqIFJIUyBpcyB0aGF0IHJlbGF0aW9uIG51bGxzIHRoZSB3aG9sZSBQSFY7IGRyb3BwaW5n IHRoZSBqb2luIHdvdWxkIHNpbGVudGx5CisgKiB1bi1udWxsIGl0LiAgU2VlIHRoZSBKT0lOX0xF RlQgY2FzZSBpbiByZW1vdmVfdXNlbGVzc19yZXN1bHRzX3JlY3Vyc2UuCiAgKgogICogZmluZF9k ZXBlbmRlbnRfcGh2cyBzaG91bGQgYmUgdXNlZCB3aGVuIHdlIHdhbnQgdG8gc2VlIGlmIHRoZXJl IGFyZQogICogYW55IHN1Y2ggUEhWcyBhbnl3aGVyZSBpbiB0aGUgUXVlcnkuICBBbm90aGVyIHVz ZS1jYXNlIGlzIHRvIHNlZSBpZgotICogYSBzdWJ0cmVlIG9mIHRoZSBqb2luIHRyZWUgY29udGFp bnMgc3VjaCBQSFZzOyBidXQgZm9yIHRoYXQsIHdlIGhhdmUKLSAqIHRvIGxvb2sgbm90IG9ubHkg YXQgdGhlIGpvaW4gdHJlZSBub2RlcyB0aGVtc2VsdmVzIGJ1dCBhdCB0aGUKLSAqIHJlZmVyZW5j ZWQgUlRFcy4gIEZvciB0aGF0LCB1c2UgZmluZF9kZXBlbmRlbnRfcGh2c19pbl9qb2ludHJlZS4K KyAqIGEgc3VidHJlZSBvZiB0aGUgam9pbiB0cmVlIGNvbnRhaW5zIFBIVnMgd2hvc2UgcGhyZWxz IGFyZSBleGFjdGx5IHt2YXJub307CisgKiBidXQgZm9yIHRoYXQsIHdlIGhhdmUgdG8gbG9vayBu b3Qgb25seSBhdCB0aGUgam9pbiB0cmVlIG5vZGVzIHRoZW1zZWx2ZXMgYnV0CisgKiBhdCB0aGUg cmVmZXJlbmNlZCBSVEVzLiAgRm9yIHRoYXQsIHVzZSBmaW5kX2RlcGVuZGVudF9waHZzX2luX2pv aW50cmVlLgogICovCiAKIHR5cGVkZWYgc3RydWN0CiB7CiAJUmVsaWRzCQlyZWxpZHM7CiAJaW50 CQkJc3VibGV2ZWxzX3VwOworCWJvb2wJCWV4YWN0OwkJCS8qIG1hdGNoIHBocmVscyBleGFjdGx5 LCBlbHNlIGJ5IG1lbWJlcnNoaXAgKi8KIH0gZmluZF9kZXBlbmRlbnRfcGh2c19jb250ZXh0Owog CiBzdGF0aWMgYm9vbApAQCAtNDMwNyw3ICs0MzE0LDkgQEAgZmluZF9kZXBlbmRlbnRfcGh2c193 YWxrZXIoTm9kZSAqbm9kZSwKIAkJUGxhY2VIb2xkZXJWYXIgKnBodiA9IChQbGFjZUhvbGRlclZh ciAqKSBub2RlOwogCiAJCWlmIChwaHYtPnBobGV2ZWxzdXAgPT0gY29udGV4dC0+c3VibGV2ZWxz X3VwICYmCi0JCQlibXNfZXF1YWwoY29udGV4dC0+cmVsaWRzLCBwaHYtPnBocmVscykpCisJCQko Y29udGV4dC0+ZXhhY3QgPworCQkJIGJtc19lcXVhbChjb250ZXh0LT5yZWxpZHMsIHBodi0+cGhy ZWxzKSA6CisJCQkgYm1zX2lzX3N1YnNldChjb250ZXh0LT5yZWxpZHMsIHBodi0+cGhyZWxzKSkp CiAJCQlyZXR1cm4gdHJ1ZTsKIAkJLyogZmFsbCB0aHJvdWdoIHRvIGV4YW1pbmUgY2hpbGRyZW4g Ki8KIAl9CkBAIC00MzQyLDYgKzQzNTEsNyBAQCBmaW5kX2RlcGVuZGVudF9waHZzKFBsYW5uZXJJ bmZvICpyb290LCBpbnQgdmFybm8pCiAKIAljb250ZXh0LnJlbGlkcyA9IGJtc19tYWtlX3Npbmds ZXRvbih2YXJubyk7CiAJY29udGV4dC5zdWJsZXZlbHNfdXAgPSAwOworCWNvbnRleHQuZXhhY3Qg PSBmYWxzZTsKIAogCWlmIChxdWVyeV90cmVlX3dhbGtlcihyb290LT5wYXJzZSwgZmluZF9kZXBl bmRlbnRfcGh2c193YWxrZXIsICZjb250ZXh0LCAwKSkKIAkJcmV0dXJuIHRydWU7CkBAIC00MzY2 LDYgKzQzNzYsNyBAQCBmaW5kX2RlcGVuZGVudF9waHZzX2luX2pvaW50cmVlKFBsYW5uZXJJbmZv ICpyb290LCBOb2RlICpub2RlLCBpbnQgdmFybm8pCiAKIAljb250ZXh0LnJlbGlkcyA9IGJtc19t YWtlX3NpbmdsZXRvbih2YXJubyk7CiAJY29udGV4dC5zdWJsZXZlbHNfdXAgPSAwOworCWNvbnRl eHQuZXhhY3QgPSB0cnVlOwogCiAJLyoKIAkgKiBTZWUgaWYgdGhlIGpvaW50cmVlIGZyYWdtZW50 IGl0c2VsZiBjb250YWlucyByZWZlcmVuY2VzIChpbiBqb2luIHF1YWxzKQpkaWZmIC0tZ2l0IGEv c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9qb2luLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvam9pbi5vdXQKaW5kZXggODNiZDU2NDlkNWMuLjY1ZmMzYzgyMGJjIDEwMDY0NAotLS0g YS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2pvaW4ub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvam9pbi5vdXQKQEAgLTI2MzAsNiArMjYzMCwzNCBAQCBzZWxlY3QgKiBmcm9t IGludDRfdGJsIHQxCiAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gdGVuazEgdDQKICgxNCByb3dz KQogCistLSBjaGVjayBhIGNhc2Ugd2hlcmUgd2UgZm9ybWVybHkgZmFpbGVkIHRvIGRldGVjdCB0 aGF0IGEgUGxhY2VIb2xkZXJWYXIKKy0tIGNvbnRhaW5pbmcgYSBjb25zdGFudCBzaG91bGQgc3Rp bGwgYmUgbnVsbGVkIGJ5IGFuIG91dGVyIGpvaW4gYWJvdmUgdGhlCistLSBvbmUgdGhhdCB3YXMg cmVtb3ZlZCBieSByZW1vdmVfdXNlbGVzc19yZXN1bHRfcnRlcworZXhwbGFpbiAodmVyYm9zZSwg Y29zdHMgb2ZmKQorc2VsZWN0ICogZnJvbSAodmFsdWVzICgxKSwoMikpIHYoeCkKKyAgbGVmdCBq b2luIChzZWxlY3QgcSBmcm9tIChzZWxlY3QgNyBhcyBxIGZyb20gKHNlbGVjdCB3aGVyZSBmYWxz ZSkgc3MxKSBzczIKKyAgICAgICAgICAgICBsZWZ0IGpvaW4gKHNlbGVjdCA4IGFzIHopIHNzMyBv biB0cnVlKSBzczQgb24gdHJ1ZTsKKyAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAg IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgTmVzdGVkIExvb3AgTGVm dCBKb2luCisgICBPdXRwdXQ6ICIqVkFMVUVTKiIuY29sdW1uMSwgKDcpCisgICBKb2luIEZpbHRl cjogZmFsc2UKKyAgIC0+ICBWYWx1ZXMgU2NhbiBvbiAiKlZBTFVFUyoiCisgICAgICAgICBPdXRw dXQ6ICIqVkFMVUVTKiIuY29sdW1uMQorICAgLT4gIFJlc3VsdAorICAgICAgICAgT3V0cHV0OiA3 CisgICAgICAgICBPbmUtVGltZSBGaWx0ZXI6IGZhbHNlCisoOCByb3dzKQorCitzZWxlY3QgKiBm cm9tICh2YWx1ZXMgKDEpLCgyKSkgdih4KQorICBsZWZ0IGpvaW4gKHNlbGVjdCBxIGZyb20gKHNl bGVjdCA3IGFzIHEgZnJvbSAoc2VsZWN0IHdoZXJlIGZhbHNlKSBzczEpIHNzMgorICAgICAgICAg ICAgIGxlZnQgam9pbiAoc2VsZWN0IDggYXMgeikgc3MzIG9uIHRydWUpIHNzNCBvbiB0cnVlOwor IHggfCBxIAorLS0tKy0tLQorIDEgfCAgCisgMiB8ICAKKygyIHJvd3MpCisKIGV4cGxhaW4gKGNv c3RzIG9mZikKIHNlbGVjdCAqIGZyb20gb25layB0MQogICAgIGxlZnQgam9pbiBvbmVrIHQyIG9u IHQxLnVuaXF1ZTEgPSB0Mi51bmlxdWUxCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3Nx bC9qb2luLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2pvaW4uc3FsCmluZGV4IDMyZDRhNWE2 NzdlLi5hZjEyNTQyYjRmZiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvam9pbi5z cWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvam9pbi5zcWwKQEAgLTUzMSw2ICs1MzEsMTgg QEAgc2VsZWN0ICogZnJvbSBpbnQ0X3RibCB0MQogICAgICAgICAgICAgIGxlZnQgam9pbiB0ZW5r MSB0NCBvbiBzLmYxID4gMSkKICAgICBvbiBzLmYxID0gdDEuZjE7CiAKKy0tIGNoZWNrIGEgY2Fz ZSB3aGVyZSB3ZSBmb3JtZXJseSBmYWlsZWQgdG8gZGV0ZWN0IHRoYXQgYSBQbGFjZUhvbGRlclZh cgorLS0gY29udGFpbmluZyBhIGNvbnN0YW50IHNob3VsZCBzdGlsbCBiZSBudWxsZWQgYnkgYW4g b3V0ZXIgam9pbiBhYm92ZSB0aGUKKy0tIG9uZSB0aGF0IHdhcyByZW1vdmVkIGJ5IHJlbW92ZV91 c2VsZXNzX3Jlc3VsdF9ydGVzCitleHBsYWluICh2ZXJib3NlLCBjb3N0cyBvZmYpCitzZWxlY3Qg KiBmcm9tICh2YWx1ZXMgKDEpLCgyKSkgdih4KQorICBsZWZ0IGpvaW4gKHNlbGVjdCBxIGZyb20g KHNlbGVjdCA3IGFzIHEgZnJvbSAoc2VsZWN0IHdoZXJlIGZhbHNlKSBzczEpIHNzMgorICAgICAg ICAgICAgIGxlZnQgam9pbiAoc2VsZWN0IDggYXMgeikgc3MzIG9uIHRydWUpIHNzNCBvbiB0cnVl OworCitzZWxlY3QgKiBmcm9tICh2YWx1ZXMgKDEpLCgyKSkgdih4KQorICBsZWZ0IGpvaW4gKHNl bGVjdCBxIGZyb20gKHNlbGVjdCA3IGFzIHEgZnJvbSAoc2VsZWN0IHdoZXJlIGZhbHNlKSBzczEp IHNzMgorICAgICAgICAgICAgIGxlZnQgam9pbiAoc2VsZWN0IDggYXMgeikgc3MzIG9uIHRydWUp IHNzNCBvbiB0cnVlOworCiBleHBsYWluIChjb3N0cyBvZmYpCiBzZWxlY3QgKiBmcm9tIG9uZWsg dDEKICAgICBsZWZ0IGpvaW4gb25layB0MiBvbiB0MS51bmlxdWUxID0gdDIudW5pcXVlMQotLSAK Mi41MC4xIChBcHBsZSBHaXQtMTU1KQoK --1f486a5b3e7943ffe8311108501b9e095f9e9a4ba94b4dedfb9e4739d652--