Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1oTPjL-0004PM-Iw for pgsql-hackers@arkaria.postgresql.org; Wed, 31 Aug 2022 15:34:16 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1oTPjK-0004Gz-F6 for pgsql-hackers@arkaria.postgresql.org; Wed, 31 Aug 2022 15:34:14 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1oTPjJ-0004Gq-BU for pgsql-hackers@lists.postgresql.org; Wed, 31 Aug 2022 15:34:14 +0000 Received: from smtp-fw-33001.amazon.com ([207.171.190.10]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1oTPjF-0006Og-2I for pgsql-hackers@lists.postgresql.org; Wed, 31 Aug 2022 15:34:12 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209; t=1661960049; x=1693496049; h=message-id:date:mime-version:from:subject:to:cc; bh=WtmKoejdydUbTzAgPqZ0B2HugdfyHURHwIfbbw13WuI=; b=W4MewfvjvpkIjEw0CE0SDNDsJrj6mOpgrmPCAlsfxsP27S9ZveX8GkCS BDT9bZibeRfvGy2Yf/UKgHli1vaEH6cMb9Qft5cqSAHC9zlTwpole82pC 2serEXkxnVz+S6zTvpib40+Pt1maDrRfKhPVBWM0KTWa5EszCfSjDGEBV 8=; X-Amazon-filename: v1-0001-JumbleQuery-on-Call-and-Set.patch X-IronPort-AV: E=Sophos;i="5.93,278,1654560000"; d="scan'208,217";a="222381496" Received: from iad12-co-svc-p1-lb1-vlan3.amazon.com (HELO email-inbound-relay-iad-1a-c92fe759.us-east-1.amazon.com) ([10.43.8.6]) by smtp-border-fw-33001.sea14.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 31 Aug 2022 15:33:52 +0000 Received: from EX13D03EUC003.ant.amazon.com (iad12-ws-svc-p26-lb9-vlan2.iad.amazon.com [10.40.163.34]) by email-inbound-relay-iad-1a-c92fe759.us-east-1.amazon.com (Postfix) with ESMTPS id E6994C0861 for ; Wed, 31 Aug 2022 15:33:50 +0000 (UTC) Received: from [192.168.17.173] (10.43.160.191) by EX13D03EUC003.ant.amazon.com (10.43.164.192) with Microsoft SMTP Server (TLS) id 15.0.1497.38; Wed, 31 Aug 2022 15:33:48 +0000 Content-Type: multipart/mixed; boundary="------------N7ZQg8Ro0LQ6zjwEgAv07mIJ" Message-ID: <36e5bffe-e989-194f-85c8-06e7bc88e6f7@amazon.com> Date: Wed, 31 Aug 2022 17:33:44 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:102.0) Gecko/20100101 Thunderbird/102.2.0 Content-Language: en-US From: "Drouvot, Bertrand" Subject: [PATCH] Query Jumbling for CALL and SET utility statements To: PostgreSQL Hackers CC: "Schneider (AWS), Jeremy" X-Originating-IP: [10.43.160.191] X-ClientProxiedBy: EX13D40UWC003.ant.amazon.com (10.43.162.246) To EX13D03EUC003.ant.amazon.com (10.43.164.192) List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --------------N7ZQg8Ro0LQ6zjwEgAv07mIJ Content-Type: multipart/alternative; boundary="------------MRo1qv7ujAHgjuZ7WLTWtT7M" --------------MRo1qv7ujAHgjuZ7WLTWtT7M Content-Type: text/plain; charset="UTF-8"; format=flowed Content-Transfer-Encoding: 8bit Hi hackers, While query jumbling is provided for function calls that’s currently not the case for procedures calls. The reason behind this is that all utility statements are currently discarded for jumbling. We’ve recently seen performance impacts (LWLock contention) due to the lack of jumbling on procedure calls with pg_stat_statements and pg_stat_statements.track_utility enabled (think an application with a high rate of procedure calls with unique parameters for each call). Jeremy has had this conversation on twitter (see https://twitter.com/jer_s/status/1560003560116342785) and Nikolay reported that he also had to work on a similar performance issue with SET being used. That’s why we think it would make sense to allow jumbling for those 2 utility statements: CALL and SET. Please find attached a patch proposal for doing so. With the attached patch we would get things like: CALL MINUS_TWO(3); CALL MINUS_TWO(7); CALL SUM_TWO(3, 8); CALL SUM_TWO(7, 5); set enable_seqscan=false; set enable_seqscan=true; set seq_page_cost=2.0; set seq_page_cost=1.0; postgres=# SELECT query, calls, rows FROM pg_stat_statements;                query               | calls | rows -----------------------------------+-------+------  set seq_page_cost=$1              |     2 |    0  CALL MINUS_TWO($1)                |     2 |    0  set enable_seqscan=$1             |     2 |    0  CALL SUM_TWO($1, $2)              |     2 |    0 Looking forward to your feedback, Thanks, Jeremy & Bertrand -- Bertrand Drouvot Amazon Web Services:https://aws.amazon.com --------------MRo1qv7ujAHgjuZ7WLTWtT7M Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: 8bit

Hi hackers,

While query jumbling is provided for function calls that’s currently not the case for procedures calls.
The reason behind this is that all utility statements are currently discarded for jumbling.

We’ve recently seen performance impacts (LWLock contention) due to the lack of jumbling on procedure calls with pg_stat_statements and pg_stat_statements.track_utility enabled (think an application with a high rate of procedure calls with unique parameters for each call).

Jeremy has had this conversation on twitter (see https://twitter.com/jer_s/status/1560003560116342785) and Nikolay reported that he also had to work on a similar performance issue with SET being used.

That’s why we think it would make sense to allow jumbling for those 2 utility statements: CALL and SET.

Please find attached a patch proposal for doing so.

With the attached patch we would get things like:

CALL MINUS_TWO(3);
CALL MINUS_TWO(7);
CALL SUM_TWO(3, 8);
CALL SUM_TWO(7, 5);
set enable_seqscan=false;
set enable_seqscan=true;
set seq_page_cost=2.0;
set seq_page_cost=1.0;

postgres=# SELECT query, calls, rows FROM pg_stat_statements;
               query               | calls | rows
-----------------------------------+-------+------
 set seq_page_cost=$1              |     2 |    0
 CALL MINUS_TWO($1)                |     2 |    0
 set enable_seqscan=$1             |     2 |    0
 CALL SUM_TWO($1, $2)              |     2 |    0

Looking forward to your feedback,

Thanks,

Jeremy & Bertrand

-- 
Bertrand Drouvot
Amazon Web Services: https://aws.amazon.com
--------------MRo1qv7ujAHgjuZ7WLTWtT7M-- --------------N7ZQg8Ro0LQ6zjwEgAv07mIJ Content-Type: text/plain; charset="UTF-8"; name="v1-0001-JumbleQuery-on-Call-and-Set.patch" Content-Disposition: attachment; filename="v1-0001-JumbleQuery-on-Call-and-Set.patch" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL2V4cGVjdGVkL3BnX3N0 YXRfc3RhdGVtZW50cy5vdXQgYi9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9leHBlY3Rl ZC9wZ19zdGF0X3N0YXRlbWVudHMub3V0CmluZGV4IGZmMDE2NmZiOWQuLmJkYjgzZjVmNzIg MTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL2V4cGVjdGVkL3BnX3N0 YXRfc3RhdGVtZW50cy5vdXQKKysrIGIvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvZXhw ZWN0ZWQvcGdfc3RhdF9zdGF0ZW1lbnRzLm91dApAQCAtMjcyLDcgKzI3Miw3IEBAIEZST00g cGdfc3RhdF9zdGF0ZW1lbnRzIE9SREVSIEJZIHF1ZXJ5IENPTExBVEUgIkMiOwogIHdhbF9y ZWNvcmRzID4gJDIgYXMgd2FsX3JlY29yZHNfZ2VuZXJhdGVkLCAgICAgICAgICAgICAgICt8 ICAgICAgIHwgICAgICB8ICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAg ICAgICAgfCAKICB3YWxfcmVjb3JkcyA+PSByb3dzIGFzIHdhbF9yZWNvcmRzX2dlX3Jvd3Mg ICAgICAgICAgICAgICArfCAgICAgICB8ICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwg ICAgICAgICAgICAgICAgICAgICAgIHwgCiAgRlJPTSBwZ19zdGF0X3N0YXRlbWVudHMgT1JE RVIgQlkgcXVlcnkgQ09MTEFURSAiQyIgICAgICAgIHwgICAgICAgfCAgICAgIHwgICAgICAg ICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8IAotIFNFVCBwZ19zdGF0 X3N0YXRlbWVudHMudHJhY2tfdXRpbGl0eSA9IEZBTFNFICAgICAgICAgICAgICB8ICAgICAx IHwgICAgMCB8IGYgICAgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgICAgICAg fCB0CisgU0VUIHBnX3N0YXRfc3RhdGVtZW50cy50cmFja191dGlsaXR5ID0gJDEgICAgICAg ICAgICAgICAgIHwgICAgIDEgfCAgICAwIHwgZiAgICAgICAgICAgICAgICAgICB8IGYgICAg ICAgICAgICAgICAgICAgICB8IHQKICBVUERBVEUgcGdzc190ZXN0IFNFVCBiID0gJDEgV0hF UkUgYSA+ICQyICAgICAgICAgICAgICAgICAgfCAgICAgMSB8ICAgIDMgfCB0ICAgICAgICAg ICAgICAgICAgIHwgdCAgICAgICAgICAgICAgICAgICAgIHwgdAogKDcgcm93cykKIApAQCAt NDIzLDYgKzQyMywxMDEgQEAgU0VMRUNUIHF1ZXJ5LCBjYWxscywgcm93cyBGUk9NIHBnX3N0 YXRfc3RhdGVtZW50cyBPUkRFUiBCWSBxdWVyeSBDT0xMQVRFICJDIjsKICBTRUxFQ1QgcXVl cnksIGNhbGxzLCByb3dzIEZST00gcGdfc3RhdF9zdGF0ZW1lbnRzIE9SREVSIEJZIHF1ZXJ5 IENPTExBVEUgIkMiIHwgICAgIDAgfCAgICAwCiAoNiByb3dzKQogCistLSBQTC9wZ1NRTCBw cm9jZWR1cmUgYW5kIHBnX3N0YXRfc3RhdGVtZW50cy50cmFjayA9IHRvcAorQ1JFQVRFIFBS T0NFRFVSRSBNSU5VU19UV08oaSBJTlRFR0VSKSBBUyAkJAorREVDTEFSRQorICByIElOVEVH RVI7CitCRUdJTgorICBTRUxFQ1QgKGkgLSAxIC0gMS4wKTo6SU5URUdFUiBJTlRPIHI7CitF TkQ7ICQkIExBTkdVQUdFIHBscGdzcWw7CitDUkVBVEUgUFJPQ0VEVVJFIFNVTV9UV08oaSBJ TlRFR0VSLCBqIElOVEVHRVIpIEFTICQkCitERUNMQVJFCisgIHIgSU5URUdFUjsKK0JFR0lO CisgIFNFTEVDVCAoaiArIGopOjpJTlRFR0VSIElOVE8gcjsKK0VORDsgJCQgTEFOR1VBR0Ug cGxwZ3NxbDsKK1NFVCBwZ19zdGF0X3N0YXRlbWVudHMudHJhY2sgPSAndG9wJzsKK1NFVCBw Z19zdGF0X3N0YXRlbWVudHMudHJhY2tfdXRpbGl0eSA9IFRSVUU7CitTRUxFQ1QgcGdfc3Rh dF9zdGF0ZW1lbnRzX3Jlc2V0KCk7CisgcGdfc3RhdF9zdGF0ZW1lbnRzX3Jlc2V0IAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworQ0FMTCBNSU5VU19UV08o Myk7CitDQUxMIE1JTlVTX1RXTyg3KTsKK0NBTEwgU1VNX1RXTygzLCA4KTsKK0NBTEwgU1VN X1RXTyg3LCA1KTsKK1NFTEVDVCBxdWVyeSwgY2FsbHMsIHJvd3MgRlJPTSBwZ19zdGF0X3N0 YXRlbWVudHMgT1JERVIgQlkgcXVlcnkgQ09MTEFURSAiQyI7CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBxdWVyeSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB8IGNhbGxzIHwgcm93cyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tKy0tLS0tLQorIENBTEwgTUlOVVNfVFdPKCQxKSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgMiB8ICAgIDAKKyBD QUxMIFNVTV9UV08oJDEsICQyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgICAgIDIgfCAgICAwCisgU0VMRUNUIHBnX3N0YXRf c3RhdGVtZW50c19yZXNldCgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB8ICAgICAxIHwgICAgMQorIFNFTEVDVCBxdWVyeSwgY2FsbHMsIHJvd3MgRlJP TSBwZ19zdGF0X3N0YXRlbWVudHMgT1JERVIgQlkgcXVlcnkgQ09MTEFURSAiQyIgfCAgICAg MCB8ICAgIDAKKyg0IHJvd3MpCisKKy0tIFBML3BnU1FMIHByb2NlZHVyZSBhbmQgcGdfc3Rh dF9zdGF0ZW1lbnRzLnRyYWNrID0gYWxsCistLSB3ZSBkcm9wIGFuZCByZWNyZWF0ZSB0aGUg cHJvY2VkdXJlcyB0byBhdm9pZCBhbnkgY2FjaGluZyBmdW5uaWVzCitTRVQgcGdfc3RhdF9z dGF0ZW1lbnRzLnRyYWNrX3V0aWxpdHkgPSBGQUxTRTsKK0RST1AgUFJPQ0VEVVJFIE1JTlVT X1RXTyhJTlRFR0VSKTsKK0RST1AgUFJPQ0VEVVJFIFNVTV9UV08oSU5URUdFUiwgSU5URUdF Uik7CitDUkVBVEUgUFJPQ0VEVVJFIE1JTlVTX1RXTyhpIElOVEVHRVIpIEFTICQkCitERUNM QVJFCisgIHIgSU5URUdFUjsKK0JFR0lOCisgIFNFTEVDVCAoaSAtIDEgLSAxLjApOjpJTlRF R0VSIElOVE8gcjsKK0VORDsgJCQgTEFOR1VBR0UgcGxwZ3NxbDsKK0NSRUFURSBQUk9DRURV UkUgU1VNX1RXTyhpIElOVEVHRVIsIGogSU5URUdFUikgQVMgJCQKK0RFQ0xBUkUKKyAgciBJ TlRFR0VSOworQkVHSU4KKyAgU0VMRUNUIChqICsgaik6OklOVEVHRVIgSU5UTyByOworRU5E OyAkJCBMQU5HVUFHRSBwbHBnc3FsOworU0VUIHBnX3N0YXRfc3RhdGVtZW50cy50cmFjayA9 ICdhbGwnOworU0VUIHBnX3N0YXRfc3RhdGVtZW50cy50cmFja191dGlsaXR5ID0gVFJVRTsK K1NFTEVDVCBwZ19zdGF0X3N0YXRlbWVudHNfcmVzZXQoKTsKKyBwZ19zdGF0X3N0YXRlbWVu dHNfcmVzZXQgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitD QUxMIE1JTlVTX1RXTygzKTsKK0NBTEwgTUlOVVNfVFdPKDcpOworQ0FMTCBTVU1fVFdPKDMs IDgpOworQ0FMTCBTVU1fVFdPKDcsIDUpOworU0VMRUNUIHF1ZXJ5LCBjYWxscywgcm93cyBG Uk9NIHBnX3N0YXRfc3RhdGVtZW50cyBPUkRFUiBCWSBxdWVyeSBDT0xMQVRFICJDIjsKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXJ5ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgY2FsbHMgfCByb3dzIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tCisgQ0FMTCBNSU5VU19UV08oJDEpICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg ICAyIHwgICAgMAorIENBTEwgU1VNX1RXTygkMSwgJDIpICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgMiB8ICAgIDAKKyBT RUxFQ1QgKGkgLSAkMiAtICQzKTo6SU5URUdFUiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgICAgIDIgfCAgICAyCisgU0VMRUNUIChqICsgaik6 OklOVEVHRVIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB8ICAgICAyIHwgICAgMgorIFNFTEVDVCBwZ19zdGF0X3N0YXRlbWVudHNfcmVz ZXQoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAg MSB8ICAgIDEKKyBTRUxFQ1QgcXVlcnksIGNhbGxzLCByb3dzIEZST00gcGdfc3RhdF9zdGF0 ZW1lbnRzIE9SREVSIEJZIHF1ZXJ5IENPTExBVEUgIkMiIHwgICAgIDAgfCAgICAwCisoNiBy b3dzKQorCistLSBTRVQKK1NFTEVDVCBwZ19zdGF0X3N0YXRlbWVudHNfcmVzZXQoKTsKKyBw Z19zdGF0X3N0YXRlbWVudHNfcmVzZXQgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor IAorKDEgcm93KQorCitzZXQgZW5hYmxlX3NlcXNjYW49ZmFsc2U7CitzZXQgZW5hYmxlX3Nl cXNjYW49dHJ1ZTsKK3NldCBzZXFfcGFnZV9jb3N0PTIuMDsKK3NldCBzZXFfcGFnZV9jb3N0 PTEuMDsKK1NFTEVDVCBxdWVyeSwgY2FsbHMsIHJvd3MgRlJPTSBwZ19zdGF0X3N0YXRlbWVu dHMgT1JERVIgQlkgcXVlcnkgQ09MTEFURSAiQyI7CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBxdWVyeSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB8IGNhbGxzIHwgcm93cyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKy0t LS0tLQorIFNFTEVDVCBwZ19zdGF0X3N0YXRlbWVudHNfcmVzZXQoKSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgMSB8ICAgIDEKKyBTRUxFQ1Qg cXVlcnksIGNhbGxzLCByb3dzIEZST00gcGdfc3RhdF9zdGF0ZW1lbnRzIE9SREVSIEJZIHF1 ZXJ5IENPTExBVEUgIkMiIHwgICAgIDAgfCAgICAwCisgc2V0IGVuYWJsZV9zZXFzY2FuPSQx ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB8ICAgICAyIHwgICAgMAorIHNldCBzZXFfcGFnZV9jb3N0PSQxICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgMiB8ICAg IDAKKyg0IHJvd3MpCisKK1NFVCBwZ19zdGF0X3N0YXRlbWVudHMudHJhY2tfdXRpbGl0eSA9 IEZBTFNFOwogLS0KIC0tIHF1ZXJpZXMgd2l0aCBsb2NraW5nIGNsYXVzZXMKIC0tCmRpZmYg LS1naXQgYS9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9wZ19zdGF0X3N0YXRlbWVudHMu YyBiL2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL3BnX3N0YXRfc3RhdGVtZW50cy5jCmlu ZGV4IGJhODY4ZjBkZTkuLmI5OGQ5YjYwZGYgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcGdfc3Rh dF9zdGF0ZW1lbnRzL3BnX3N0YXRfc3RhdGVtZW50cy5jCisrKyBiL2NvbnRyaWIvcGdfc3Rh dF9zdGF0ZW1lbnRzL3BnX3N0YXRfc3RhdGVtZW50cy5jCkBAIC04MzIsNyArODMyLDcgQEAg cGdzc19wb3N0X3BhcnNlX2FuYWx5emUoUGFyc2VTdGF0ZSAqcHN0YXRlLCBRdWVyeSAqcXVl cnksIEp1bWJsZVN0YXRlICpqc3RhdGUpCiAJICogaW5oZXJpdCBmcm9tIHRoZSB1bmRlcmx5 aW5nIHN0YXRlbWVudCdzIG9uZSAoZXhjZXB0IERFQUxMT0NBVEUgd2hpY2ggaXMKIAkgKiBl bnRpcmVseSB1bnRyYWNrZWQpLgogCSAqLwotCWlmIChxdWVyeS0+dXRpbGl0eVN0bXQpCisJ aWYgKHF1ZXJ5LT51dGlsaXR5U3RtdCAmJiAhSlVNQkxFX1VUSUxJVFkocXVlcnktPnV0aWxp dHlTdG10KSkKIAl7CiAJCWlmIChwZ3NzX3RyYWNrX3V0aWxpdHkgJiYgIVBHU1NfSEFORExF RF9VVElMSVRZKHF1ZXJ5LT51dGlsaXR5U3RtdCkpCiAJCQlxdWVyeS0+cXVlcnlJZCA9IFVJ TlQ2NENPTlNUKDApOwpkaWZmIC0tZ2l0IGEvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMv c3FsL3BnX3N0YXRfc3RhdGVtZW50cy5zcWwgYi9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50 cy9zcWwvcGdfc3RhdF9zdGF0ZW1lbnRzLnNxbAppbmRleCBhMDFmMTgzNzI3Li44OGQ1NGZl YTExIDEwMDY0NAotLS0gYS9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9zcWwvcGdfc3Rh dF9zdGF0ZW1lbnRzLnNxbAorKysgYi9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9zcWwv cGdfc3RhdF9zdGF0ZW1lbnRzLnNxbApAQCAtMjAxLDYgKzIwMSw3MSBAQCBTRUxFQ1QgUExV U19PTkUoMSk7CiAKIFNFTEVDVCBxdWVyeSwgY2FsbHMsIHJvd3MgRlJPTSBwZ19zdGF0X3N0 YXRlbWVudHMgT1JERVIgQlkgcXVlcnkgQ09MTEFURSAiQyI7CiAKKy0tIFBML3BnU1FMIHBy b2NlZHVyZSBhbmQgcGdfc3RhdF9zdGF0ZW1lbnRzLnRyYWNrID0gdG9wCitDUkVBVEUgUFJP Q0VEVVJFIE1JTlVTX1RXTyhpIElOVEVHRVIpIEFTICQkCitERUNMQVJFCisgIHIgSU5URUdF UjsKK0JFR0lOCisgIFNFTEVDVCAoaSAtIDEgLSAxLjApOjpJTlRFR0VSIElOVE8gcjsKK0VO RDsgJCQgTEFOR1VBR0UgcGxwZ3NxbDsKKworQ1JFQVRFIFBST0NFRFVSRSBTVU1fVFdPKGkg SU5URUdFUiwgaiBJTlRFR0VSKSBBUyAkJAorREVDTEFSRQorICByIElOVEVHRVI7CitCRUdJ TgorICBTRUxFQ1QgKGogKyBqKTo6SU5URUdFUiBJTlRPIHI7CitFTkQ7ICQkIExBTkdVQUdF IHBscGdzcWw7CisKK1NFVCBwZ19zdGF0X3N0YXRlbWVudHMudHJhY2sgPSAndG9wJzsKK1NF VCBwZ19zdGF0X3N0YXRlbWVudHMudHJhY2tfdXRpbGl0eSA9IFRSVUU7CitTRUxFQ1QgcGdf c3RhdF9zdGF0ZW1lbnRzX3Jlc2V0KCk7CitDQUxMIE1JTlVTX1RXTygzKTsKK0NBTEwgTUlO VVNfVFdPKDcpOworQ0FMTCBTVU1fVFdPKDMsIDgpOworQ0FMTCBTVU1fVFdPKDcsIDUpOwor CitTRUxFQ1QgcXVlcnksIGNhbGxzLCByb3dzIEZST00gcGdfc3RhdF9zdGF0ZW1lbnRzIE9S REVSIEJZIHF1ZXJ5IENPTExBVEUgIkMiOworCistLSBQTC9wZ1NRTCBwcm9jZWR1cmUgYW5k IHBnX3N0YXRfc3RhdGVtZW50cy50cmFjayA9IGFsbAorLS0gd2UgZHJvcCBhbmQgcmVjcmVh dGUgdGhlIHByb2NlZHVyZXMgdG8gYXZvaWQgYW55IGNhY2hpbmcgZnVubmllcworU0VUIHBn X3N0YXRfc3RhdGVtZW50cy50cmFja191dGlsaXR5ID0gRkFMU0U7CitEUk9QIFBST0NFRFVS RSBNSU5VU19UV08oSU5URUdFUik7CitEUk9QIFBST0NFRFVSRSBTVU1fVFdPKElOVEVHRVIs IElOVEVHRVIpOworCitDUkVBVEUgUFJPQ0VEVVJFIE1JTlVTX1RXTyhpIElOVEVHRVIpIEFT ICQkCitERUNMQVJFCisgIHIgSU5URUdFUjsKK0JFR0lOCisgIFNFTEVDVCAoaSAtIDEgLSAx LjApOjpJTlRFR0VSIElOVE8gcjsKK0VORDsgJCQgTEFOR1VBR0UgcGxwZ3NxbDsKKworQ1JF QVRFIFBST0NFRFVSRSBTVU1fVFdPKGkgSU5URUdFUiwgaiBJTlRFR0VSKSBBUyAkJAorREVD TEFSRQorICByIElOVEVHRVI7CitCRUdJTgorICBTRUxFQ1QgKGogKyBqKTo6SU5URUdFUiBJ TlRPIHI7CitFTkQ7ICQkIExBTkdVQUdFIHBscGdzcWw7CisKK1NFVCBwZ19zdGF0X3N0YXRl bWVudHMudHJhY2sgPSAnYWxsJzsKK1NFVCBwZ19zdGF0X3N0YXRlbWVudHMudHJhY2tfdXRp bGl0eSA9IFRSVUU7CitTRUxFQ1QgcGdfc3RhdF9zdGF0ZW1lbnRzX3Jlc2V0KCk7CitDQUxM IE1JTlVTX1RXTygzKTsKK0NBTEwgTUlOVVNfVFdPKDcpOworQ0FMTCBTVU1fVFdPKDMsIDgp OworQ0FMTCBTVU1fVFdPKDcsIDUpOworCitTRUxFQ1QgcXVlcnksIGNhbGxzLCByb3dzIEZS T00gcGdfc3RhdF9zdGF0ZW1lbnRzIE9SREVSIEJZIHF1ZXJ5IENPTExBVEUgIkMiOworLS0g U0VUCitTRUxFQ1QgcGdfc3RhdF9zdGF0ZW1lbnRzX3Jlc2V0KCk7CitzZXQgZW5hYmxlX3Nl cXNjYW49ZmFsc2U7CitzZXQgZW5hYmxlX3NlcXNjYW49dHJ1ZTsKK3NldCBzZXFfcGFnZV9j b3N0PTIuMDsKK3NldCBzZXFfcGFnZV9jb3N0PTEuMDsKKworU0VMRUNUIHF1ZXJ5LCBjYWxs cywgcm93cyBGUk9NIHBnX3N0YXRfc3RhdGVtZW50cyBPUkRFUiBCWSBxdWVyeSBDT0xMQVRF ICJDIjsKKworU0VUIHBnX3N0YXRfc3RhdGVtZW50cy50cmFja191dGlsaXR5ID0gRkFMU0U7 CisKIC0tCiAtLSBxdWVyaWVzIHdpdGggbG9ja2luZyBjbGF1c2VzCiAtLQpkaWZmIC0tZ2l0 IGEvZG9jL3NyYy9zZ21sL3Bnc3RhdHN0YXRlbWVudHMuc2dtbCBiL2RvYy9zcmMvc2dtbC9w Z3N0YXRzdGF0ZW1lbnRzLnNnbWwKaW5kZXggZWNmNmNkNmJmMy4uNjBkZDE1M2E0NyAxMDA2 NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3Bnc3RhdHN0YXRlbWVudHMuc2dtbAorKysgYi9kb2Mv c3JjL3NnbWwvcGdzdGF0c3RhdGVtZW50cy5zZ21sCkBAIC00OTIsNyArNDkyLDcgQEAKICAg IHN0cnVjdHVyZXMgYWNjb3JkaW5nIHRvIGFuIGludGVybmFsIGhhc2ggY2FsY3VsYXRpb24u ICBUeXBpY2FsbHksIHR3bwogICAgcXVlcmllcyB3aWxsIGJlIGNvbnNpZGVyZWQgdGhlIHNh bWUgZm9yIHRoaXMgcHVycG9zZSBpZiB0aGV5IGFyZQogICAgc2VtYW50aWNhbGx5IGVxdWl2 YWxlbnQgZXhjZXB0IGZvciB0aGUgdmFsdWVzIG9mIGxpdGVyYWwgY29uc3RhbnRzCi0gICBh cHBlYXJpbmcgaW4gdGhlIHF1ZXJ5LiAgVXRpbGl0eSBjb21tYW5kcyAodGhhdCBpcywgYWxs IG90aGVyIGNvbW1hbmRzKQorICAgYXBwZWFyaW5nIGluIHRoZSBxdWVyeS4gIFV0aWxpdHkg Y29tbWFuZHMgKHRoYXQgaXMsIGFsbCBvdGhlciBjb21tYW5kcykgZXhjZXB0IENBTEwgYW5k IFNFVAogICAgYXJlIGNvbXBhcmVkIHN0cmljdGx5IG9uIHRoZSBiYXNpcyBvZiB0aGVpciB0 ZXh0dWFsIHF1ZXJ5IHN0cmluZ3MsIGhvd2V2ZXIuCiAgIDwvcGFyYT4KIApkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9xdWVyeWp1bWJsZS5jIGIvc3JjL2JhY2tlbmQv dXRpbHMvbWlzYy9xdWVyeWp1bWJsZS5jCmluZGV4IGVlYWEwYjMxZmUuLjhkNTI2YzllOWEg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvcXVlcnlqdW1ibGUuYworKysg Yi9zcmMvYmFja2VuZC91dGlscy9taXNjL3F1ZXJ5anVtYmxlLmMKQEAgLTEwNCw3ICsxMDQs NyBAQCBKdW1ibGVRdWVyeShRdWVyeSAqcXVlcnksIGNvbnN0IGNoYXIgKnF1ZXJ5dGV4dCkK IAogCUFzc2VydChJc1F1ZXJ5SWRFbmFibGVkKCkpOwogCi0JaWYgKHF1ZXJ5LT51dGlsaXR5 U3RtdCkKKwlpZiAocXVlcnktPnV0aWxpdHlTdG10ICYmICFKVU1CTEVfVVRJTElUWShxdWVy eS0+dXRpbGl0eVN0bXQpKQogCXsKIAkJcXVlcnktPnF1ZXJ5SWQgPSBjb21wdXRlX3V0aWxp dHlfcXVlcnlfaWQocXVlcnl0ZXh0LAogCQkJCQkJCQkJCQkJICBxdWVyeS0+c3RtdF9sb2Nh dGlvbiwKQEAgLTI0MCwxMCArMjQwLDExIEBAIHN0YXRpYyB2b2lkCiBKdW1ibGVRdWVyeUlu dGVybmFsKEp1bWJsZVN0YXRlICpqc3RhdGUsIFF1ZXJ5ICpxdWVyeSkKIHsKIAlBc3NlcnQo SXNBKHF1ZXJ5LCBRdWVyeSkpOwotCUFzc2VydChxdWVyeS0+dXRpbGl0eVN0bXQgPT0gTlVM TCk7CisJQXNzZXJ0KHF1ZXJ5LT51dGlsaXR5U3RtdCA9PSBOVUxMIHx8IEpVTUJMRV9VVElM SVRZKHF1ZXJ5LT51dGlsaXR5U3RtdCkpOwogCiAJQVBQX0pVTUIocXVlcnktPmNvbW1hbmRU eXBlKTsKIAkvKiByZXN1bHRSZWxhdGlvbiBpcyB1c3VhbGx5IHByZWRpY3RhYmxlIGZyb20g Y29tbWFuZFR5cGUgKi8KKwlKdW1ibGVFeHByKGpzdGF0ZSwgKE5vZGUgKikgcXVlcnktPnV0 aWxpdHlTdG10KTsKIAlKdW1ibGVFeHByKGpzdGF0ZSwgKE5vZGUgKikgcXVlcnktPmN0ZUxp c3QpOwogCUp1bWJsZVJhbmdlVGFibGUoanN0YXRlLCBxdWVyeS0+cnRhYmxlKTsKIAlKdW1i bGVFeHByKGpzdGF0ZSwgKE5vZGUgKikgcXVlcnktPmpvaW50cmVlKTsKQEAgLTM4Myw2ICsz ODQsMzAgQEAgSnVtYmxlRXhwcihKdW1ibGVTdGF0ZSAqanN0YXRlLCBOb2RlICpub2RlKQog CQkJCUFQUF9KVU1CKHZhci0+dmFybGV2ZWxzdXApOwogCQkJfQogCQkJYnJlYWs7CisJCWNh c2UgVF9DYWxsU3RtdDoKKwkJCXsKKwkJCQlDYWxsU3RtdCAgICpzdG10ID0gKENhbGxTdG10 ICopIG5vZGU7CisJCQkJRnVuY0V4cHIgICAqZXhwciA9IHN0bXQtPmZ1bmNleHByOworCisJ CQkJQVBQX0pVTUIoZXhwci0+ZnVuY2lkKTsKKwkJCQlKdW1ibGVFeHByKGpzdGF0ZSwgKE5v ZGUgKikgZXhwci0+YXJncyk7CisJCQl9CisJCQlicmVhazsKKwkJY2FzZSBUX1ZhcmlhYmxl U2V0U3RtdDoKKwkJCXsKKwkJCQlWYXJpYWJsZVNldFN0bXQgKnN0bXQgPSAoVmFyaWFibGVT ZXRTdG10ICopIG5vZGU7CisKKwkJCQlBUFBfSlVNQl9TVFJJTkcoc3RtdC0+bmFtZSk7CisJ CQkJSnVtYmxlRXhwcihqc3RhdGUsIChOb2RlICopIHN0bXQtPmFyZ3MpOworCQkJfQorCQkJ YnJlYWs7CisJCWNhc2UgVF9BX0NvbnN0OgorCQkJeworCQkJCWludAkJCWxvYyA9ICgoY29u c3QgQV9Db25zdCAqKSBub2RlKS0+bG9jYXRpb247CisKKwkJCQlSZWNvcmRDb25zdExvY2F0 aW9uKGpzdGF0ZSwgbG9jKTsKKwkJCX0KKwkJCWJyZWFrOwogCQljYXNlIFRfQ29uc3Q6CiAJ CQl7CiAJCQkJQ29uc3QJICAgKmMgPSAoQ29uc3QgKikgbm9kZTsKZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL3V0aWxzL3F1ZXJ5anVtYmxlLmggYi9zcmMvaW5jbHVkZS91dGlscy9xdWVy eWp1bWJsZS5oCmluZGV4IDNjMmQ5YmVhYjIuLmNhZGE5YTFlZDMgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL3V0aWxzL3F1ZXJ5anVtYmxlLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMv cXVlcnlqdW1ibGUuaApAQCAtMTgsNiArMTgsMTIgQEAKIAogI2RlZmluZSBKVU1CTEVfU0la RQkJCQkxMDI0CS8qIHF1ZXJ5IHNlcmlhbGl6YXRpb24gYnVmZmVyIHNpemUgKi8KIAorLyoK KyAqIEp1bWJsZSB0aG9zZSB1dGlsaXR5IHN0YXRlbWVudHMKKyAqLworI2RlZmluZSBKVU1C TEVfVVRJTElUWShuKQkoSXNBKG4sIENhbGxTdG10KSB8fCBcCisJCQkJCQkJSXNBKG4sIFZh cmlhYmxlU2V0U3RtdCkpCisKIC8qCiAgKiBTdHJ1Y3QgZm9yIHRyYWNraW5nIGxvY2F0aW9u cy9sZW5ndGhzIG9mIGNvbnN0YW50cyBkdXJpbmcgbm9ybWFsaXphdGlvbgogICovCg== --------------N7ZQg8Ro0LQ6zjwEgAv07mIJ--