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.98.2) (envelope-from ) id 1x9ScF-000000020qJ-3Ofs for pgsql-bugs@arkaria.postgresql.org; Wed, 23 Sep 2026 19:26:52 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.98.2) (envelope-from ) id 1x9ScE-00000007Yp3-2MlE for pgsql-bugs@arkaria.postgresql.org; Wed, 23 Sep 2026 19:26:50 +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.98.2) (envelope-from ) id 1x9ScE-00000007Yov-1A7I for pgsql-bugs@lists.postgresql.org; Wed, 23 Sep 2026 19:26:50 +0000 Received: from mail-vs2-x0c.google.com ([2a00:1450:4864:3a::c]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1x9ScB-00000000w0c-3ES3 for pgsql-bugs@lists.postgresql.org; Wed, 23 Sep 2026 19:26:49 +0000 Received: by mail-vs2-x0c.google.com with SMTP id ada2fe7eead31-7a5871419fcso29350137.1 for ; Wed, 23 Sep 2026 12:26:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1790191606; x=1790796406; darn=lists.postgresql.org; h=content-type:mime-version:references:in-reply-to:message-id:date :subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to :content-type; bh=E+h2PJZ8b/7Efwu5cJjuK7cxwoD5Xflf1K0Laju5WFU=; b=VyGkAbCCUAKgI0ja3V4u0iDjl7qcfqWaRZ2q1mcxr69r0EKktqY276KlJ2jz3e+T+M mctqHzLcXhMdlMPIl0A4ImjUCdFCTVWAtlNGgODdjIGoWFMP2lBdIfzRTNURBoxQQW6P 0Xo8ckcmXQ8MgB8ycIN4UT1hyFPkCoBuHbIr/L1uebWbQAMWSWi4HjvxWu4l2r5+aChe k/DDa6LgqEh/Oh5DsfWmW4pH4gsbcKiYHHoJtGw8lDJylWOurWBVqzyXEZ0nVcrkaZBE MBZ3IZiGbPRe1kLhyIuICrbfofzHwaPAs3KTKMhWioIU6k4eHfBRPnzdoMo9gnWIaHUY fs1A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790191606; x=1790796406; h=content-type:mime-version:references:in-reply-to:message-id:date :subject:cc:to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject :date:message-id:reply-to:content-type; bh=E+h2PJZ8b/7Efwu5cJjuK7cxwoD5Xflf1K0Laju5WFU=; b=kBq7dLs4dGQGziCUHNZQS41dRf+ZEcGMjENk3lKJQ0VACjbnmB0WyxAtn2SeulzJEP Bh8H/xJXoytcGmKuCz2ENXDjR2OssSZJCtkNBrBHGwLGuyI1u9k7euzyUFdUk4E7l2uh vvTd+N6drD1xZJJIC4Nj6FtSGC8InMvGIjzHR8vgcjSTGtAzWq5ECxCwzmhf1R+A8X+E rt9C5YUOmHmOOcJ4eujvEOdBibmibdT3ImETK5WM/xRDXV92kWbg2oInhrq/p6dDRmVV kRoZCX5NomvRp5m3wdku6GV02bNtnLtcw4Dlu3RNhDmtyzDlL/74TVX5ckn81FDSzlXd TllQ== X-Gm-Message-State: AFuF++n+NHnWIqcRTgbOzMPT1W/TUghICndTrFlKi11k2YsGaCpGncxj JEIUaz3IsTqRsInR8S5O0rTqVKqvZqAlHYlN/dUjmB0+WEXIPhlyFJvh6ilMNy8SwcQ= X-Gm-Gg: AYBFou3JjlxUYSMHr7qtAz3HRG+zBRlFJHVXQ06qTqhEg+/QpnVrtq/Xcs5CNeWh7xg yEiE3dbdB78CQtY/ESiIFU7PxbF8XSioteHgEW4zNYlhUxHgenfl2sVQGEepWcDp/HZo4aCkVqG 6Qh604LEEtKcOI/rGRP4i6g3DXoCSprWixpThXGSb5AzXsc208VoizviXstqPKSiZigQ1izo2p1 dQKzmX7Zr1z738WSE7FpLwHyIuwMTQRyT9mMfFD1aBVzHuq4v2NB0x4e8Bfj7YnPNm7DN5CXCUb FdQDf0mQjSA5JV4/igPet2DX9Y5Q3BsxFkFrOh8aIJneclJNnvCVzd/tNB7XYhRxmpD8e7b7hGP qrWF7P6Unu9AxQN1GmhFFitxF5cQAj+aD3a4QRx8Z9LJK38XSdpu4hcntqA+UNCiARnHtxt3opc AIrPDClVAcmOn2xYuvBkbiCB98Th9IcjwPrxPEIN6a6f9SbpgEbV8Hp79YSpgAZXjnWvlPutOWS eJUhG+dp9pZIiHfYG5Vs87fpFXwN1S5h6ujF0ymRtxej5TMJVykmihDFhqvAyj+I+Oljv37ckcm fLcpXcMiKo9lKB4B5L4U+9ACyA== X-Received: by 2002:a05:6102:2909:b0:7a7:ad9f:539c with SMTP id ada2fe7eead31-7af1eaf73e5mr153583137.2.1790191605873; Wed, 23 Sep 2026 12:26:45 -0700 (PDT) Received: from 192.168.1.109 ([2803:3c90:cee:ea00:5c3c:7e70:29e3:7a55]) by smtp.gmail.com with ESMTPSA id ada2fe7eead31-7abf02ef491sm4457238137.0.2026.09.23.12.26.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 23 Sep 2026 12:26:45 -0700 (PDT) From: Manu To: pgsql-bugs@lists.postgresql.org Cc: kehan5800@gmail.com Subject: Re: BUG #19701: GIN trigram index loses rows at similarity_threshold 0 Date: Wed, 23 Sep 2026 16:26:42 -0300 Message-ID: <179019160285.4009503.14265883830439530659@gmail.com> In-Reply-To: <19701-c861a62e79bf49ce@postgresql.org> References: <19701-c861a62e79bf49ce@postgresql.org> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============4765603630394171274==" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --===============4765603630394171274== Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Hi, I can reproduce this on master (374522aa63a), and it is wider than the report. With the thresholds at 0, on 5002 rows (100 of them empty strings), a sequential scan returns all 5002 rows for each of these queries. The indexes return: - v % 'apple', 'apple' <% v, 'apple' <<% v: GIN 315, GiST 5002 - v % '', v % '#' (no trigrams): GIN 0, GiST 0 So all three similarity operators are affected in GIN, and GiST is affected too, when the query has no trigrams. There are two causes: 1. gin_extract_query_trgm() returns the query's trigrams, so a GIN scan only visits rows that share one of them. At a threshold of 0 every row matches, including the ones that share none. The fix asks for GIN_SEARCH_MODE_ALL when the threshold is 0, as the function already does when the query has no trigrams. 2. When the query has no trigrams, gin_trgm_consistent() and gin_trgm_triconsistent() return false outright, and so does gtrgm_consistent() on GiST internal pages. The similarity with such a query is 0, which a threshold of 0 accepts. GiST leaf pages already get this right, which is why the report's three-row table (a single leaf page) shows GiST as correct. The attached patch fixes both and adds a test to the existing threshold test on the restaurants table, for GiST and GIN. Without the C changes the new test fails (GiST returns 0 for the empty query, GIN returns 10000 and 0 instead of 20000); with them, pg_trgm's tests pass. With the default thresholds, all the queries above return the same as before. It applies cleanly to REL_14_STABLE through REL_19_STABLE; I built and ran the pg_trgm tests on REL_18_STABLE as well. Regards, Manu --===============4765603630394171274== Content-Type: text/x-patch Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="0001-Don-t-lose-rows-in-pg_trgm-index-scans-with-a-zero-s.patch" MIME-Version: 1.0 RnJvbSBlZDhhZTBmMDk5ZjExOGUwYmI1ZmNlZTViMGNjZGYxNWI3OTJlMTZhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYW51IDxtYW51ZWxyZXllc2JyYXZvQGdtYWlsLmNvbT4KRGF0 ZTogV2VkLCAyMyBTZXAgMjAyNiAxNjoyMzoxMiAtMDMwMApTdWJqZWN0OiBbUEFUQ0hdIERvbid0 IGxvc2Ugcm93cyBpbiBwZ190cmdtIGluZGV4IHNjYW5zIHdpdGggYSB6ZXJvIHNpbWlsYXJpdHkK IHRocmVzaG9sZAoKVGhlIHNpbWlsYXJpdHkgb3BlcmF0b3JzICglLCA8JSBhbmQgPDwlKSBhcmUg dHJ1ZSB3aGVuIHRoZSBzaW1pbGFyaXR5IGlzCmdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUg dGhyZXNob2xkLCBhbmQgemVybyBpcyBhIHZhbGlkIHRocmVzaG9sZCwKdW5kZXIgd2hpY2ggZXZl cnkgcm93IG1hdGNoZXMuICBUaGUgaW5kZXhlcyBkaWQgbm90IGZvbGxvdzoKCi0gQSBHSU4gc2Nh biBvbmx5IHZpc2l0cyB0aGUgcm93cyB0aGF0IHNoYXJlIGEgdHJpZ3JhbSB3aXRoIHRoZSBxdWVy eSwKICBzbyB0aGUgcm93cyB3aXRoIG5vbmUgd2VyZSBuZXZlciByZXR1cm5lZC4gIEFzayBmb3Ig YSBmdWxsIGluZGV4IHNjYW4KICB3aGVuIHRoZSB0aHJlc2hvbGQgaXMgemVybywgYXMgaXMgYWxy ZWFkeSBkb25lIHdoZW4gdGhlIHF1ZXJ5IGhhcyBubwogIHRyaWdyYW1zLgoKLSBXaGVuIHRoZSBx dWVyeSBoYXMgbm8gdHJpZ3JhbXMsIGJvdGggdGhlIEdJTiBjb25zaXN0ZW50IGZ1bmN0aW9ucyBh bmQKICB0aGUgR2lTVCBjb25zaXN0ZW50IGZ1bmN0aW9uIG9uIGludGVybmFsIHBhZ2VzIHJlamVj dGVkIGV2ZXJ5dGhpbmcsCiAgYWx0aG91Z2ggdGhlIHNpbWlsYXJpdHkgd2l0aCBzdWNoIGEgcXVl cnkgaXMgemVybywgd2hpY2ggYSB6ZXJvCiAgdGhyZXNob2xkIGFjY2VwdHMuCgpSZXBvcnRlZC1i eTogS2UgPGtlaGFuNTgwMEBnbWFpbC5jb20+CkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVz L20vMTk3MDEtYzg2MWE2MmU3OWJmNDljZUBwb3N0Z3Jlc3FsLm9yZwotLS0KIGNvbnRyaWIvcGdf dHJnbS9leHBlY3RlZC9wZ190cmdtLm91dCB8IDcxICsrKysrKysrKysrKysrKysrKysrKysrKysr KysKIGNvbnRyaWIvcGdfdHJnbS9zcWwvcGdfdHJnbS5zcWwgICAgICB8IDE5ICsrKysrKysrCiBj b250cmliL3BnX3RyZ20vdHJnbV9naW4uYyAgICAgICAgICAgfCAyNCArKysrKysrKy0tCiBjb250 cmliL3BnX3RyZ20vdHJnbV9naXN0LmMgICAgICAgICAgfCAgNiArKy0KIDQgZmlsZXMgY2hhbmdl ZCwgMTE1IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvY29udHJp Yi9wZ190cmdtL2V4cGVjdGVkL3BnX3RyZ20ub3V0IGIvY29udHJpYi9wZ190cmdtL2V4cGVjdGVk L3BnX3RyZ20ub3V0CmluZGV4IDYxMjYyNWYxZmRhLi41ZjNiZjE5NzZmYSAxMDA2NDQKLS0tIGEv Y29udHJpYi9wZ190cmdtL2V4cGVjdGVkL3BnX3RyZ20ub3V0CisrKyBiL2NvbnRyaWIvcGdfdHJn bS9leHBlY3RlZC9wZ190cmdtLm91dApAQCAtNTQ0OCwzICs1NDQ4LDc0IEBAIFNFTEVDVCBESVNU SU5DVCBjaXR5LCBzaW1pbGFyaXR5KGNpdHksICdXYXJzYXcnKSwgc2hvd19saW1pdCgpCiAgV2Fy c2F3IHwgICAgICAgICAgMSB8ICAgICAgICAwLjUKICgxIHJvdykKIAorLS0gQSB0aHJlc2hvbGQg b2YgemVybyBpcyBtZXQgYnkgZXZlcnkgcm93OiBieSB0aGUgcm93cyB0aGF0IHNoYXJlIG5vIHRy aWdyYW0KKy0tIHdpdGggdGhlIHF1ZXJ5LCBhbmQgYnkgYWxsIG9mIHRoZW0gd2hlbiB0aGUgcXVl cnkgaGFzIG5vIHRyaWdyYW1zIGF0IGFsbC4KKy0tIFRoZSBpbmRleGVzIG11c3Qgbm90IGxvc2Ug YW55IChidWcgIzE5NzAxKS4KK1NFTEVDVCBzZXRfbGltaXQoMCk7Cisgc2V0X2xpbWl0IAorLS0t LS0tLS0tLS0KKyAgICAgICAgIDAKKygxIHJvdykKKworU0VUIHBnX3RyZ20ud29yZF9zaW1pbGFy aXR5X3RocmVzaG9sZCA9IDA7CitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgY291bnQoKikg RlJPTSByZXN0YXVyYW50cyBXSEVSRSBjaXR5ICUgJ1dhcnNhdyc7CisgICAgICAgICAgICAgICAg ICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQWdncmVnYXRlCisgICAt PiAgQml0bWFwIEhlYXAgU2NhbiBvbiByZXN0YXVyYW50cworICAgICAgICAgUmVjaGVjayBDb25k OiAoY2l0eSAlICdXYXJzYXcnOjp0ZXh0KQorICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2Fu IG9uIHJlc3RhdXJhbnRzX2NpdHlfaWR4CisgICAgICAgICAgICAgICBJbmRleCBDb25kOiAoY2l0 eSAlICdXYXJzYXcnOjp0ZXh0KQorKDUgcm93cykKKworU0VMRUNUIGNvdW50KCopIEZST00gcmVz dGF1cmFudHMgV0hFUkUgY2l0eSAlICdXYXJzYXcnOworIGNvdW50IAorLS0tLS0tLQorIDIwMDAw CisoMSByb3cpCisKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHJlc3RhdXJhbnRzIFdIRVJFIGNpdHkg JSAnJzsKKyBjb3VudCAKKy0tLS0tLS0KKyAyMDAwMAorKDEgcm93KQorCitTRUxFQ1QgY291bnQo KikgRlJPTSByZXN0YXVyYW50cyBXSEVSRSAnV2Fyc2F3JyA8JSBjaXR5OworIGNvdW50IAorLS0t LS0tLQorIDIwMDAwCisoMSByb3cpCisKK0RST1AgSU5ERVggcmVzdGF1cmFudHNfY2l0eV9pZHg7 CitDUkVBVEUgSU5ERVggT04gcmVzdGF1cmFudHMgVVNJTkcgZ2luKGNpdHkgZ2luX3RyZ21fb3Bz KTsKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHJlc3RhdXJhbnRz IFdIRVJFIGNpdHkgJSAnV2Fyc2F3JzsKKyAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFO ICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBBZ2dyZWdhdGUKKyAgIC0+ICBCaXRtYXAgSGVhcCBT Y2FuIG9uIHJlc3RhdXJhbnRzCisgICAgICAgICBSZWNoZWNrIENvbmQ6IChjaXR5ICUgJ1dhcnNh dyc6OnRleHQpCisgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gcmVzdGF1cmFudHNf Y2l0eV9pZHgKKyAgICAgICAgICAgICAgIEluZGV4IENvbmQ6IChjaXR5ICUgJ1dhcnNhdyc6OnRl eHQpCisoNSByb3dzKQorCitTRUxFQ1QgY291bnQoKikgRlJPTSByZXN0YXVyYW50cyBXSEVSRSBj aXR5ICUgJ1dhcnNhdyc7CisgY291bnQgCistLS0tLS0tCisgMjAwMDAKKygxIHJvdykKKworU0VM RUNUIGNvdW50KCopIEZST00gcmVzdGF1cmFudHMgV0hFUkUgY2l0eSAlICcnOworIGNvdW50IAor LS0tLS0tLQorIDIwMDAwCisoMSByb3cpCisKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHJlc3RhdXJh bnRzIFdIRVJFICdXYXJzYXcnIDwlIGNpdHk7CisgY291bnQgCistLS0tLS0tCisgMjAwMDAKKygx IHJvdykKKworUkVTRVQgcGdfdHJnbS53b3JkX3NpbWlsYXJpdHlfdGhyZXNob2xkOwpkaWZmIC0t Z2l0IGEvY29udHJpYi9wZ190cmdtL3NxbC9wZ190cmdtLnNxbCBiL2NvbnRyaWIvcGdfdHJnbS9z cWwvcGdfdHJnbS5zcWwKaW5kZXggNDlkYjg2Y2FmN2QuLjA5MTYyOGEyYmY5IDEwMDY0NAotLS0g YS9jb250cmliL3BnX3RyZ20vc3FsL3BnX3RyZ20uc3FsCisrKyBiL2NvbnRyaWIvcGdfdHJnbS9z cWwvcGdfdHJnbS5zcWwKQEAgLTI0NCwzICsyNDQsMjIgQEAgU0VMRUNUIERJU1RJTkNUIGNpdHks IHNpbWlsYXJpdHkoY2l0eSwgJ1dhcnNhdycpLCBzaG93X2xpbWl0KCkKIFNFTEVDVCBzZXRfbGlt aXQoMC41KTsKIFNFTEVDVCBESVNUSU5DVCBjaXR5LCBzaW1pbGFyaXR5KGNpdHksICdXYXJzYXcn KSwgc2hvd19saW1pdCgpCiAgIEZST00gcmVzdGF1cmFudHMgV0hFUkUgY2l0eSAlICdXYXJzYXcn OworCistLSBBIHRocmVzaG9sZCBvZiB6ZXJvIGlzIG1ldCBieSBldmVyeSByb3c6IGJ5IHRoZSBy b3dzIHRoYXQgc2hhcmUgbm8gdHJpZ3JhbQorLS0gd2l0aCB0aGUgcXVlcnksIGFuZCBieSBhbGwg b2YgdGhlbSB3aGVuIHRoZSBxdWVyeSBoYXMgbm8gdHJpZ3JhbXMgYXQgYWxsLgorLS0gVGhlIGlu ZGV4ZXMgbXVzdCBub3QgbG9zZSBhbnkgKGJ1ZyAjMTk3MDEpLgorU0VMRUNUIHNldF9saW1pdCgw KTsKK1NFVCBwZ190cmdtLndvcmRfc2ltaWxhcml0eV90aHJlc2hvbGQgPSAwOworRVhQTEFJTiAo Q09TVFMgT0ZGKQorU0VMRUNUIGNvdW50KCopIEZST00gcmVzdGF1cmFudHMgV0hFUkUgY2l0eSAl ICdXYXJzYXcnOworU0VMRUNUIGNvdW50KCopIEZST00gcmVzdGF1cmFudHMgV0hFUkUgY2l0eSAl ICdXYXJzYXcnOworU0VMRUNUIGNvdW50KCopIEZST00gcmVzdGF1cmFudHMgV0hFUkUgY2l0eSAl ICcnOworU0VMRUNUIGNvdW50KCopIEZST00gcmVzdGF1cmFudHMgV0hFUkUgJ1dhcnNhdycgPCUg Y2l0eTsKK0RST1AgSU5ERVggcmVzdGF1cmFudHNfY2l0eV9pZHg7CitDUkVBVEUgSU5ERVggT04g cmVzdGF1cmFudHMgVVNJTkcgZ2luKGNpdHkgZ2luX3RyZ21fb3BzKTsKK0VYUExBSU4gKENPU1RT IE9GRikKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHJlc3RhdXJhbnRzIFdIRVJFIGNpdHkgJSAnV2Fy c2F3JzsKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHJlc3RhdXJhbnRzIFdIRVJFIGNpdHkgJSAnV2Fy c2F3JzsKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHJlc3RhdXJhbnRzIFdIRVJFIGNpdHkgJSAnJzsK K1NFTEVDVCBjb3VudCgqKSBGUk9NIHJlc3RhdXJhbnRzIFdIRVJFICdXYXJzYXcnIDwlIGNpdHk7 CitSRVNFVCBwZ190cmdtLndvcmRfc2ltaWxhcml0eV90aHJlc2hvbGQ7CmRpZmYgLS1naXQgYS9j b250cmliL3BnX3RyZ20vdHJnbV9naW4uYyBiL2NvbnRyaWIvcGdfdHJnbS90cmdtX2dpbi5jCmlu ZGV4IDU3NjZiM2U5OTU1Li4yNDNkNWJiZWVhOSAxMDA2NDQKLS0tIGEvY29udHJpYi9wZ190cmdt L3RyZ21fZ2luLmMKKysrIGIvY29udHJpYi9wZ190cmdtL3RyZ21fZ2luLmMKQEAgLTE2NSw2ICsx NjUsMTcgQEAgZ2luX2V4dHJhY3RfcXVlcnlfdHJnbShQR19GVU5DVElPTl9BUkdTKQogCWlmICh0 cmdsZW4gPT0gMCkKIAkJKnNlYXJjaE1vZGUgPSBHSU5fU0VBUkNIX01PREVfQUxMOwogCisJLyoK KwkgKiBMaWtld2lzZSB3aGVuIHRoZSBzaW1pbGFyaXR5IHRocmVzaG9sZCBpcyB6ZXJvOiBldmVy eSByb3cgc2F0aXNmaWVzIHRoZQorCSAqIG9wZXJhdG9yIHRoZW4sIGluY2x1ZGluZyB0aGUgcm93 cyB0aGF0IHNoYXJlIG5vIHRyaWdyYW0gd2l0aCB0aGUgcXVlcnksCisJICogd2hpY2ggdGhlIGV4 dHJhY3RlZCB0cmlncmFtcyBhbG9uZSB3b3VsZCBuZXZlciBsZWFkIHRvLgorCSAqLworCWlmICgo c3RyYXRlZ3kgPT0gU2ltaWxhcml0eVN0cmF0ZWd5TnVtYmVyIHx8CisJCSBzdHJhdGVneSA9PSBX b3JkU2ltaWxhcml0eVN0cmF0ZWd5TnVtYmVyIHx8CisJCSBzdHJhdGVneSA9PSBTdHJpY3RXb3Jk U2ltaWxhcml0eVN0cmF0ZWd5TnVtYmVyKSAmJgorCQlpbmRleF9zdHJhdGVneV9nZXRfbGltaXQo c3RyYXRlZ3kpIDw9IDAuMCkKKwkJKnNlYXJjaE1vZGUgPSBHSU5fU0VBUkNIX01PREVfQUxMOwor CiAJUEdfUkVUVVJOX1BPSU5URVIoZW50cmllcyk7CiB9CiAKQEAgLTIxNiw4ICsyMjcsMTEgQEAg Z2luX3RyZ21fY29uc2lzdGVudChQR19GVU5DVElPTl9BUkdTKQogCQkJICoganVzdCBieSBkZWZp bml0aW9uIGFuZCwgY29uc2VxdWVudGx5LCB1cHBlciBib3VuZCBvZgogCQkJICogc2ltaWxhcml0 eSBpcyBqdXN0IGMgLyBsZW4xLgogCQkJICogU28sIGluZGVwZW5kZW50bHkgb24gRElWVU5JT04g dGhlIHVwcGVyIGJvdW5kIGZvcm11bGEgaXMgdGhlIHNhbWUuCisJCQkgKgorCQkJICogQSBxdWVy eSB3aXRoIG5vIHRyaWdyYW1zIGhhcyBhIHNpbWlsYXJpdHkgb2YgemVybyB3aXRoIGFueQorCQkJ ICogdmFsdWUsIHdoaWNoIG9ubHkgYSB0aHJlc2hvbGQgb2YgemVybyBhY2NlcHRzLgogCQkJICov Ci0JCQlyZXMgPSAobmtleXMgPT0gMCkgPyBmYWxzZSA6CisJCQlyZXMgPSAobmtleXMgPT0gMCkg PyAobmxpbWl0IDw9IDAuMCkgOgogCQkJCSgoKCgoZmxvYXQ0KSBudHJ1ZSkgLyAoKGZsb2F0NCkg bmtleXMpKSkgPj0gbmxpbWl0KTsKIAkJCWJyZWFrOwogCQljYXNlIElMaWtlU3RyYXRlZ3lOdW1i ZXI6CkBAIC0zMDIsOSArMzE2LDExIEBAIGdpbl90cmdtX3RyaWNvbnNpc3RlbnQoUEdfRlVOQ1RJ T05fQVJHUykKIAkJCSAqIFNlZSBjb21tZW50IGluIGdpbl90cmdtX2NvbnNpc3RlbnQoKSBhYm91 dCAqIHVwcGVyIGJvdW5kCiAJCQkgKiBmb3JtdWxhCiAJCQkgKi8KLQkJCXJlcyA9IChua2V5cyA9 PSAwKQotCQkJCT8gR0lOX0ZBTFNFIDogKCgoKChmbG9hdDQpIG50cnVlKSAvICgoZmxvYXQ0KSBu a2V5cykpID49IG5saW1pdCkKLQkJCQkJCQkgICA/IEdJTl9NQVlCRSA6IEdJTl9GQUxTRSk7CisJ CQlpZiAobmtleXMgPT0gMCkKKwkJCQlyZXMgPSAobmxpbWl0IDw9IDAuMCkgPyBHSU5fTUFZQkUg OiBHSU5fRkFMU0U7CisJCQllbHNlCisJCQkJcmVzID0gKCgoKChmbG9hdDQpIG50cnVlKSAvICgo ZmxvYXQ0KSBua2V5cykpID49IG5saW1pdCkKKwkJCQkJICAgPyBHSU5fTUFZQkUgOiBHSU5fRkFM U0UpOwogCQkJYnJlYWs7CiAJCWNhc2UgSUxpa2VTdHJhdGVneU51bWJlcjoKICNpZm5kZWYgSUdO T1JFQ0FTRQpkaWZmIC0tZ2l0IGEvY29udHJpYi9wZ190cmdtL3RyZ21fZ2lzdC5jIGIvY29udHJp Yi9wZ190cmdtL3RyZ21fZ2lzdC5jCmluZGV4IDQyZDBiN2E1ZDY1Li4wY2I2OGFjNzU3ZSAxMDA2 NDQKLS0tIGEvY29udHJpYi9wZ190cmdtL3RyZ21fZ2lzdC5jCisrKyBiL2NvbnRyaWIvcGdfdHJn bS90cmdtX2dpc3QuYwpAQCAtMzM1LDggKzMzNSwxMiBAQCBndHJnbV9jb25zaXN0ZW50KFBHX0ZV TkNUSU9OX0FSR1MpCiAJCQkJaW50MzIJCWNvdW50ID0gY250X3NtbF9zaWduX2NvbW1vbihxdHJn LCBHRVRTSUdOKGtleSksIHNpZ2xlbik7CiAJCQkJaW50MzIJCWxlbiA9IEFSUk5FTEVNKHF0cmcp OwogCisJCQkJLyoKKwkJCQkgKiBBIHF1ZXJ5IHdpdGggbm8gdHJpZ3JhbXMgaGFzIGEgc2ltaWxh cml0eSBvZiB6ZXJvIHdpdGggYW55CisJCQkJICogdmFsdWUsIHdoaWNoIG9ubHkgYSB0aHJlc2hv bGQgb2YgemVybyBhY2NlcHRzLgorCQkJCSAqLwogCQkJCWlmIChsZW4gPT0gMCkKLQkJCQkJcmVz ID0gZmFsc2U7CisJCQkJCXJlcyA9IChubGltaXQgPD0gMC4wKTsKIAkJCQllbHNlCiAJCQkJCXJl cyA9ICgoKCgoZmxvYXQ4KSBjb3VudCkgLyAoKGZsb2F0OCkgbGVuKSkpID49IG5saW1pdCk7CiAJ CQl9Ci0tIAoyLjU1LjAKCg== --===============4765603630394171274==--