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 1qzvko-0024Qi-8B for pgsql-hackers@arkaria.postgresql.org; Mon, 06 Nov 2023 09:18:42 +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 1qzvkl-00DkPM-Sw for pgsql-hackers@arkaria.postgresql.org; Mon, 06 Nov 2023 09:18:39 +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.94.2) (envelope-from ) id 1qzvkl-00DkPE-GZ for pgsql-hackers@lists.postgresql.org; Mon, 06 Nov 2023 09:18:39 +0000 Received: from mail-ua1-x930.google.com ([2607:f8b0:4864:20::930]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1qzvkd-004yLn-J4 for pgsql-hackers@postgresql.org; Mon, 06 Nov 2023 09:18:38 +0000 Received: by mail-ua1-x930.google.com with SMTP id a1e0cc1a2514c-7ba45fc8619so1862465241.2 for ; Mon, 06 Nov 2023 01:18:31 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1699262309; x=1699867109; darn=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=7ss4k39O3HsTvmX7VVOqRDcScPq9vqlnujAwSliln+4=; b=IFwqbvtrYgLWHX4UrdpMz9VvGGt8YQRg5MqfEEGPPHY/U0AdHtiMSp4Rr0nuWPJN1q Dvsz45/B+5KQuNe9Py3ntycfr7PRETY3Jt9yHo5h7qd4OPu7hzeBClkRy4cq/LeKIKZI f1epMqKYk24YvqsFJq3FMe9bnZ8nFDcVDajnvEPrZAywsG9nNv+BHP+6wEi80kKNSRzh amj3LbJeSOfJDbGkSvcwEzOgKsWPW7bcVDP9f5mfqQiUnhvcv9uaquv4xILlsmaRgw1c S/f1gssam8rE66HC3eZqaQcfQEU58UhPlYewRtxdUQjZ/Q+SrNQ83OZuLDD4LFhk+87n iDZw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1699262309; x=1699867109; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=7ss4k39O3HsTvmX7VVOqRDcScPq9vqlnujAwSliln+4=; b=KAvltquydF5W2pdym6+EF5v29t81cCuy+WB9/TxKAETB55i7+T9AXN3gXdrZ7EABy1 dDXEWLlx8hpLA/11naUK7zXJXQ/ejo4EDjIVpDJ0lJN/BpfEwH2Du7eQkuBcx6UiwnGO FDdNPQwDv2uLCghFO73EyfXHbr7VT8KwEnl9vpleNygEJlSV5obMgaPGiYYm6EB8Mtux p9lj67Qd0XXchbu0LFRpyUG6SlZXYbyCTpLexsXG3lSxOntF0QShEPl8Uvr35C7qUXYi iIJF7nknyKERAB0eR52iGJGQWUQHPjCrClkRC5cJFGOFnT/RXTECsEjHCXc/TTp4kbGD pFpA== X-Gm-Message-State: AOJu0Ywt0leobL+71+K+LRvJ0dRHwUIP2/kwIXgKQ1HybvrWnkCYIhkK o3WoOIInIP11qd7P0ebxuwsx52Q7H+rTX5xlH/k= X-Google-Smtp-Source: AGHT+IH1mf8x6QfI8SvNdRD5uR9MVbI7m+WHEXS3t6gvi6/+FYcYuLElCcjD8WvTttlwb85XRSH7PZ/aJF3mPn0yc0s= X-Received: by 2002:a67:e0c1:0:b0:45d:94e6:1b89 with SMTP id m1-20020a67e0c1000000b0045d94e61b89mr6205333vsl.29.1699262309569; Mon, 06 Nov 2023 01:18:29 -0800 (PST) MIME-Version: 1.0 References: <960560.1689955375@sss.pgh.pa.us> In-Reply-To: From: Ashutosh Bapat Date: Mon, 6 Nov 2023 14:48:18 +0530 Message-ID: Subject: Re: Reuse child_relids in try_partitionwise_join was Re: Assert failure on bms_equal(child_joinrel->relids, child_joinrelids) To: Richard Guo , Tom Lane Cc: PostgreSQL-development Content-Type: multipart/mixed; boundary="00000000000057b19f06097856b4" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000057b19f06097856b4 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable explain.out in 0001 needed some adjustments. Without those CIbot shows failures. Fixed in the attached patchset. 0001 is just for diagnosis, not for actual commit. 0002 which is the actual patch has no changes wrt to the previous version. On Tue, Oct 31, 2023 at 11:06=E2=80=AFAM Ashutosh Bapat wrote: > > On Fri, Sep 8, 2023 at 3:22=E2=80=AFPM Ashutosh Bapat > wrote: > > > > On Fri, Jul 28, 2023 at 3:16=E2=80=AFPM Ashutosh Bapat > > wrote: > > > > > > Hi Tom, Richard, > > > > > > On Mon, Jul 24, 2023 at 8:17=E2=80=AFAM Richard Guo wrote: > > > > > > > > Thanks for pushing it! > > > > > > With this fix, I saw a noticeable increase in the memory consumption > > > of planner. I was running experiments mentioned in [1] The reason is > > > the Bitmapset created by bms_union() are not freed during planning an= d > > > when there are thousands of child joins involved, bitmapsets takes up > > > a large memory and there any a large number of bitmaps. > > > > > > Attached 0002 patch fixes the memory consumption by calculating > > > appinfos only once and using them twice. The number look like below > > > > > > Number of tables joined | without patch | with patch | > > > ------------------------------------------------------ > > > 2 | 40.8 MiB | 40.3 MiB | > > > 3 | 151.6 MiB | 146.9 MiB | > > > 4 | 463.9 MiB | 445.5 MiB | > > > 5 | 1663.9 MiB | 1563.3 MiB | > > > > > > The memory consumption is prominent at higher number of joins as that > > > exponentially increases the number of child joins. > > > > > > Attached setup.sql and queries.sql and patch 0001 were used to measur= e > > > memory similar to [1]. > > > > > > I don't think it's a problem with the patch itself. We should be able > > > to use Bitmapset APIs similar to what patch is doing. But there's a > > > problem with our Bitmapset implementation. It's not space efficient > > > for thousands of partitions. A quick calculation reveals this. > > > > > > If the number of partitions is 1000, the matching partitions will > > > usually be 1000, 2000, 3000 and so on. Thus the bitmapset represnting > > > the relids will be {b 1000, 2000, 3000, ...}. To represent a single > > > 1000th digit current Bitmapset implementation will allocate 1000/8 = =3D > > > 125 bytes of memory. A 5 way join will require 125 * 5 =3D 625 bytes = of > > > memory. This is even true for lower relid numbers since they will be > > > 1000 bits away e.g. (1, 1001, 2001, 3001, ...). So 1000 such child > > > joins require 625KiB memory. Doing this as many times as the number o= f > > > joins we get 120 * 625 KiB =3D 75 MiB which is closer to the memory > > > difference we see above. > > > > > > Even if we allocate a list to hold 5 integers it will not take 625 > > > bytes. I think we need to improve our Bitmapset representation to be > > > efficient in such cases. Of course whatever representation we choose > > > has to be space efficient for a small number of tables as well and > > > should gel well with our planner logic. So I guess some kind of > > > dynamic representation which changes the underlying layout based on > > > the contents is required. I have looked up past hacker threads to see > > > if this has been discussed previously. > > > > > > I don't think this is the thread to discuss it and also I am not > > > planning to work on it in the immediate future. But I thought I would > > > mention it where I found it. > > > > > > [1] https://www.postgresql.org/message-id/CAExHW5stmOUobE55pMt83r8Uxv= fCph+Pvo5dNpdrVCsBgXEzDQ@mail.gmail.com > > > > > > > Adding this small patch to the commitfest in case somebody finds it > > worth fixing this specific memory consumption. With a new subject. > > Rebased patches. > 0001 - is same as the squashed version of patches at > https://www.postgresql.org/message-id/CAExHW5sCJX7696sF-OnugAiaXS=3DAg95= =3D-m1cSrjcmyYj8Pduuw@mail.gmail.com. > 0002 is the actual fix described earlier > > -- > Best Wishes, > Ashutosh Bapat --=20 Best Wishes, Ashutosh Bapat --00000000000057b19f06097856b4 Content-Type: text/x-patch; charset="US-ASCII"; name="0002-Reuse-child_relids-bitmapset-in-partitionwi-20231106.patch" Content-Disposition: attachment; filename="0002-Reuse-child_relids-bitmapset-in-partitionwi-20231106.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lomow8nc0 RnJvbSA4NGQ1OTEyM2JhNmNlYzg3MTczNjhjZTljZWZhMjkwYjcxMWQ3YjNkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBc2h1dG9zaCBCYXBhdCA8YXNodXRvc2guYmFwYXRAZW50ZXJw cmlzZWRiLmNvbT4KRGF0ZTogV2VkLCAyNiBKdWwgMjAyMyAxMjowODo1NSArMDUzMApTdWJqZWN0 OiBbUEFUQ0ggMi8yXSBSZXVzZSBjaGlsZF9yZWxpZHMgYml0bWFwc2V0IGluIHBhcnRpdGlvbndp c2Ugam9pbnJlbHMKCkJpdG1hcHNldHMgY29udGFpbmluZyBjaGlsZCByZWxpZHMgY29uc3VtZSBs YXJnZSBtZW1vcnkgd2hlbiB0aG91c2FuZHMgb2YKcGFydGl0aW9ucyBhcmUgaW52b2x2ZWQuIENy ZWF0ZSB0aGVtIG9uY2UsIHVzZSBtdWx0aXBsZSB0aW1lcyBhbmQgZnJlZSB0aGVtIHVwCm9uY2Ug dGhlaXIgdXNlIGlzIG92ZXIuCgpBc2h1dG9zaCBCYXBhdAotLS0KIHNyYy9iYWNrZW5kL29wdGlt aXplci9wYXRoL2pvaW5yZWxzLmMgfCAxMCArKysrKystLS0tCiBzcmMvYmFja2VuZC9vcHRpbWl6 ZXIvdXRpbC9yZWxub2RlLmMgIHwgMTggKysrLS0tLS0tLS0tLS0tLS0tCiBzcmMvaW5jbHVkZS9v cHRpbWl6ZXIvcGF0aG5vZGUuaCAgICAgIHwgIDMgKystCiAzIGZpbGVzIGNoYW5nZWQsIDExIGlu c2VydGlvbnMoKyksIDIwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29w dGltaXplci9wYXRoL2pvaW5yZWxzLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9qb2lu cmVscy5jCmluZGV4IGQwM2FjZTUwYTEuLjFmZWIxZjk5YzAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL29wdGltaXplci9wYXRoL2pvaW5yZWxzLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVy L3BhdGgvam9pbnJlbHMuYwpAQCAtMTUyNiw2ICsxNTI2LDcgQEAgdHJ5X3BhcnRpdGlvbndpc2Vf am9pbihQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcmVsMSwgUmVsT3B0SW5mbyAqcmVs MiwKIAkJUmVsT3B0SW5mbyAqY2hpbGRfam9pbnJlbDsKIAkJQXBwZW5kUmVsSW5mbyAqKmFwcGlu Zm9zOwogCQlpbnQJCQluYXBwaW5mb3M7CisJCUJpdG1hcHNldCAgKmNoaWxkX3JlbGlkcyA9IE5V TEw7CiAKIAkJaWYgKGpvaW5yZWwtPnBhcnRib3VuZHNfbWVyZ2VkKQogCQl7CkBAIC0xNjIxLDkg KzE2MjIsOCBAQCB0cnlfcGFydGl0aW9ud2lzZV9qb2luKFBsYW5uZXJJbmZvICpyb290LCBSZWxP cHRJbmZvICpyZWwxLCBSZWxPcHRJbmZvICpyZWwyLAogCQkJCQkJCQkJCQkgICBjaGlsZF9yZWwy LT5yZWxpZHMpOwogCiAJCS8qIEZpbmQgdGhlIEFwcGVuZFJlbEluZm8gc3RydWN0dXJlcyAqLwot CQlhcHBpbmZvcyA9IGZpbmRfYXBwaW5mb3NfYnlfcmVsaWRzKHJvb3QsCi0JCQkJCQkJCQkJICAg Ym1zX3VuaW9uKGNoaWxkX3JlbDEtPnJlbGlkcywKLQkJCQkJCQkJCQkJCQkgY2hpbGRfcmVsMi0+ cmVsaWRzKSwKKwkJY2hpbGRfcmVsaWRzID0gYm1zX3VuaW9uKGNoaWxkX3JlbDEtPnJlbGlkcywg Y2hpbGRfcmVsMi0+cmVsaWRzKTsKKwkJYXBwaW5mb3MgPSBmaW5kX2FwcGluZm9zX2J5X3JlbGlk cyhyb290LCBjaGlsZF9yZWxpZHMsCiAJCQkJCQkJCQkJICAgJm5hcHBpbmZvcyk7CiAKIAkJLyoK QEAgLTE2NDEsNyArMTY0MSw4IEBAIHRyeV9wYXJ0aXRpb253aXNlX2pvaW4oUGxhbm5lckluZm8g KnJvb3QsIFJlbE9wdEluZm8gKnJlbDEsIFJlbE9wdEluZm8gKnJlbDIsCiAJCXsKIAkJCWNoaWxk X2pvaW5yZWwgPSBidWlsZF9jaGlsZF9qb2luX3JlbChyb290LCBjaGlsZF9yZWwxLCBjaGlsZF9y ZWwyLAogCQkJCQkJCQkJCQkJIGpvaW5yZWwsIGNoaWxkX3Jlc3RyaWN0bGlzdCwKLQkJCQkJCQkJ CQkJCSBjaGlsZF9zamluZm8pOworCQkJCQkJCQkJCQkJIGNoaWxkX3NqaW5mbywgYXBwaW5mb3Ms CisJCQkJCQkJCQkJCQkgbmFwcGluZm9zKTsKIAkJCWpvaW5yZWwtPnBhcnRfcmVsc1tjbnRfcGFy dHNdID0gY2hpbGRfam9pbnJlbDsKIAkJCWpvaW5yZWwtPmxpdmVfcGFydHMgPSBibXNfYWRkX21l bWJlcihqb2lucmVsLT5saXZlX3BhcnRzLCBjbnRfcGFydHMpOwogCQkJam9pbnJlbC0+YWxsX3Bh cnRyZWxzID0gYm1zX2FkZF9tZW1iZXJzKGpvaW5yZWwtPmFsbF9wYXJ0cmVscywKQEAgLTE2NTks NiArMTY2MCw3IEBAIHRyeV9wYXJ0aXRpb253aXNlX2pvaW4oUGxhbm5lckluZm8gKnJvb3QsIFJl bE9wdEluZm8gKnJlbDEsIFJlbE9wdEluZm8gKnJlbDIsCiAJCQkJCQkJCQljaGlsZF9yZXN0cmlj dGxpc3QpOwogCiAJCXBmcmVlKGFwcGluZm9zKTsKKwkJYm1zX2ZyZWUoY2hpbGRfcmVsaWRzKTsK IAl9CiB9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3JlbG5vZGUu YyBiL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3JlbG5vZGUuYwppbmRleCA1ZDgzZjYwZWI5 Li44MTA0NGYxMmNjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9yZWxu b2RlLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcmVsbm9kZS5jCkBAIC04NTMs MTUgKzg1MywxNSBAQCBidWlsZF9qb2luX3JlbChQbGFubmVySW5mbyAqcm9vdCwKICAqICdyZXN0 cmljdGxpc3QnOiBsaXN0IG9mIFJlc3RyaWN0SW5mbyBub2RlcyB0aGF0IGFwcGx5IHRvIHRoaXMg cGFydGljdWxhcgogICoJCXBhaXIgb2Ygam9pbmFibGUgcmVsYXRpb25zCiAgKiAnc2ppbmZvJzog Y2hpbGQgam9pbidzIGpvaW4tdHlwZSBkZXRhaWxzCisgKiAnYXBwaW5mb3MnIGFuZCAnbmFwcGlu Zm9zJzogQXBwZW5kUmVsSW5mbyBhcnJheSBmb3IgY2hpbGQgcmVsaWRzCiAgKi8KIFJlbE9wdElu Zm8gKgogYnVpbGRfY2hpbGRfam9pbl9yZWwoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8g Km91dGVyX3JlbCwKIAkJCQkJIFJlbE9wdEluZm8gKmlubmVyX3JlbCwgUmVsT3B0SW5mbyAqcGFy ZW50X2pvaW5yZWwsCi0JCQkJCSBMaXN0ICpyZXN0cmljdGxpc3QsIFNwZWNpYWxKb2luSW5mbyAq c2ppbmZvKQorCQkJCQkgTGlzdCAqcmVzdHJpY3RsaXN0LCBTcGVjaWFsSm9pbkluZm8gKnNqaW5m bywKKwkJCQkJIEFwcGVuZFJlbEluZm8gKiphcHBpbmZvcywgaW50IG5hcHBpbmZvcykKIHsKIAlS ZWxPcHRJbmZvICpqb2lucmVsID0gbWFrZU5vZGUoUmVsT3B0SW5mbyk7Ci0JQXBwZW5kUmVsSW5m byAqKmFwcGluZm9zOwotCWludAkJCW5hcHBpbmZvczsKIAogCS8qIE9ubHkgam9pbnMgYmV0d2Vl biAib3RoZXIiIHJlbGF0aW9ucyBsYW5kIGhlcmUuICovCiAJQXNzZXJ0KElTX09USEVSX1JFTChv dXRlcl9yZWwpICYmIElTX09USEVSX1JFTChpbm5lcl9yZWwpKTsKQEAgLTg2OSwxNiArODY5LDYg QEAgYnVpbGRfY2hpbGRfam9pbl9yZWwoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKm91 dGVyX3JlbCwKIAkvKiBUaGUgcGFyZW50IGpvaW5yZWwgc2hvdWxkIGhhdmUgY29uc2lkZXJfcGFy dGl0aW9ud2lzZV9qb2luIHNldC4gKi8KIAlBc3NlcnQocGFyZW50X2pvaW5yZWwtPmNvbnNpZGVy X3BhcnRpdGlvbndpc2Vfam9pbik7CiAKLQkvKgotCSAqIEZpbmQgdGhlIEFwcGVuZFJlbEluZm8g c3RydWN0dXJlcyBmb3IgdGhlIGNoaWxkIGJhc2VyZWxzLiAgV2UnbGwgbmVlZAotCSAqIHRoZXNl IGZvciBjb21wdXRpbmcgdGhlIGNoaWxkIGpvaW4ncyByZWxpZCBzZXQsIGFuZCBsYXRlciBmb3Ig bWFwcGluZwotCSAqIFZhcnMgdG8gdGhlIGNoaWxkIHJlbC4KLQkgKi8KLQlhcHBpbmZvcyA9IGZp bmRfYXBwaW5mb3NfYnlfcmVsaWRzKHJvb3QsCi0JCQkJCQkJCQkgICBibXNfdW5pb24ob3V0ZXJf cmVsLT5yZWxpZHMsCi0JCQkJCQkJCQkJCQkgaW5uZXJfcmVsLT5yZWxpZHMpLAotCQkJCQkJCQkJ ICAgJm5hcHBpbmZvcyk7Ci0KIAlqb2lucmVsLT5yZWxvcHRraW5kID0gUkVMT1BUX09USEVSX0pP SU5SRUw7CiAJam9pbnJlbC0+cmVsaWRzID0gYWRqdXN0X2NoaWxkX3JlbGlkcyhwYXJlbnRfam9p bnJlbC0+cmVsaWRzLAogCQkJCQkJCQkJCSAgbmFwcGluZm9zLCBhcHBpbmZvcyk7CkBAIC05OTMs OCArOTgzLDYgQEAgYnVpbGRfY2hpbGRfam9pbl9yZWwoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9w dEluZm8gKm91dGVyX3JlbCwKIAkJCQkJCQkJCQluYXBwaW5mb3MsIGFwcGluZm9zLAogCQkJCQkJ CQkJCXBhcmVudF9qb2lucmVsLCBqb2lucmVsKTsKIAotCXBmcmVlKGFwcGluZm9zKTsKLQogCXJl dHVybiBqb2lucmVsOwogfQogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcGF0 aG5vZGUuaCBiL3NyYy9pbmNsdWRlL29wdGltaXplci9wYXRobm9kZS5oCmluZGV4IDZlNTU3YmVi YzQuLjY1MzM2YzQ3ZGMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL29wdGltaXplci9wYXRobm9k ZS5oCisrKyBiL3NyYy9pbmNsdWRlL29wdGltaXplci9wYXRobm9kZS5oCkBAIC0zNDEsNiArMzQx LDcgQEAgZXh0ZXJuIEJpdG1hcHNldCAqZ2V0X3BhcmFtX3BhdGhfY2xhdXNlX3NlcmlhbHMoUGF0 aCAqcGF0aCk7CiBleHRlcm4gUmVsT3B0SW5mbyAqYnVpbGRfY2hpbGRfam9pbl9yZWwoUGxhbm5l ckluZm8gKnJvb3QsCiAJCQkJCQkJCQkJUmVsT3B0SW5mbyAqb3V0ZXJfcmVsLCBSZWxPcHRJbmZv ICppbm5lcl9yZWwsCiAJCQkJCQkJCQkJUmVsT3B0SW5mbyAqcGFyZW50X2pvaW5yZWwsIExpc3Qg KnJlc3RyaWN0bGlzdCwKLQkJCQkJCQkJCQlTcGVjaWFsSm9pbkluZm8gKnNqaW5mbyk7CisJCQkJ CQkJCQkJU3BlY2lhbEpvaW5JbmZvICpzamluZm8sCisJCQkJCQkJCQkJQXBwZW5kUmVsSW5mbyAq KmFwcGluZm9zLCBpbnQgbmFwcGluZm9zKTsKIAogI2VuZGlmCQkJCQkJCS8qIFBBVEhOT0RFX0gg Ki8KLS0gCjIuMjUuMQoK --00000000000057b19f06097856b4 Content-Type: text/x-patch; charset="US-ASCII"; name="0001-Report-memory-used-for-planning-a-query-in--20231106.patch" Content-Disposition: attachment; filename="0001-Report-memory-used-for-planning-a-query-in--20231106.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lomow8o21 RnJvbSAwYjczZTEwNmJiODQ0NzgxNzJhOGY3NTllN2U3ZDM2Yjk2MjAzYTY3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBc2h1dG9zaCBCYXBhdCA8YXNodXRvc2guYmFwYXRAZW50ZXJw cmlzZWRiLmNvbT4KRGF0ZTogV2VkLCAxMiBKdWwgMjAyMyAxNDozNDoxNCArMDUzMApTdWJqZWN0 OiBbUEFUQ0ggMS8yXSBSZXBvcnQgbWVtb3J5IHVzZWQgZm9yIHBsYW5uaW5nIGEgcXVlcnkgaW4g RVhQTEFJTgoKSGVscGVyIHBhdGNoIHdoaWNoIGlzIHNxdWFzaGVkIHZlcnNpb24gb2YgcGF0Y2hl cyBzdWJtaXR0ZWQgaW4KaHR0cHM6Ly93d3cucG9zdGdyZXNxbC5vcmcvbWVzc2FnZS1pZC9DQUV4 SFc1c0NKWDc2OTZzRi1PbnVnQWlhWFM9QWc5NT0tbTFjU3JqY215WWo4UGR1dXdAbWFpbC5nbWFp bC5jb20uCk5vdCB0byBiZSBjb21taXR0ZWQgd2l0aCB0aGlzIHBhdGNoIHNldC4KCkFzaHV0b3No IEJhcGF0Ci0tLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jICAgICAgICB8IDc5ICsr KysrKysrKysrKysrKysrKysrKysrKysrLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvcHJlcGFyZS5j ICAgICAgICB8IDI0ICsrKysrKystCiBzcmMvYmFja2VuZC91dGlscy9tbWdyL21jeHQuYyAgICAg ICAgIHwgMTIgKysrKwogc3JjL2luY2x1ZGUvY29tbWFuZHMvZXhwbGFpbi5oICAgICAgICB8IDEy ICsrKy0KIHNyYy9pbmNsdWRlL3V0aWxzL21lbXV0aWxzLmggICAgICAgICAgfCAgMiArCiBzcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL2V4cGxhaW4ub3V0IHwgMjYgKysrKysrKy0tCiBzcmMvdG9v bHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCAgICAgIHwgIDEgKwogNyBmaWxlcyBjaGFuZ2VkLCAx NDggaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9jb21tYW5kcy9leHBsYWluLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMKaW5k ZXggZjFkNzFiYzU0ZS4uOWNkOWI1NzdjNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFu ZHMvZXhwbGFpbi5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYwpAQCAtMTIy LDYgKzEyMiw4IEBAIHN0YXRpYyBjb25zdCBjaGFyICpleHBsYWluX2dldF9pbmRleF9uYW1lKE9p ZCBpbmRleElkKTsKIHN0YXRpYyB2b2lkIHNob3dfYnVmZmVyX3VzYWdlKEV4cGxhaW5TdGF0ZSAq ZXMsIGNvbnN0IEJ1ZmZlclVzYWdlICp1c2FnZSwKIAkJCQkJCQkgIGJvb2wgcGxhbm5pbmcpOwog c3RhdGljIHZvaWQgc2hvd193YWxfdXNhZ2UoRXhwbGFpblN0YXRlICplcywgY29uc3QgV2FsVXNh Z2UgKnVzYWdlKTsKK3N0YXRpYyB2b2lkIHNob3dfcGxhbm5pbmdfbWVtb3J5KEV4cGxhaW5TdGF0 ZSAqZXMsCisJCQkJCQkJCSBjb25zdCBNZW1Vc2FnZSAqdXNhZ2UpOwogc3RhdGljIHZvaWQgRXhw bGFpbkluZGV4U2NhbkRldGFpbHMoT2lkIGluZGV4aWQsIFNjYW5EaXJlY3Rpb24gaW5kZXhvcmRl cmRpciwKIAkJCQkJCQkJCUV4cGxhaW5TdGF0ZSAqZXMpOwogc3RhdGljIHZvaWQgRXhwbGFpblNj YW5UYXJnZXQoU2NhbiAqcGxhbiwgRXhwbGFpblN0YXRlICplcyk7CkBAIC0zOTcsOSArMzk5LDI3 IEBAIEV4cGxhaW5PbmVRdWVyeShRdWVyeSAqcXVlcnksIGludCBjdXJzb3JPcHRpb25zLAogCQkJ CQlwbGFuZHVyYXRpb247CiAJCUJ1ZmZlclVzYWdlIGJ1ZnVzYWdlX3N0YXJ0LAogCQkJCQlidWZ1 c2FnZTsKKwkJTWVtb3J5Q29udGV4dENvdW50ZXJzIG1lbV9jb3VudHNfc3RhcnQ7CisJCU1lbW9y eUNvbnRleHRDb3VudGVycyBtZW1fY291bnRzX2VuZDsKKwkJTWVtVXNhZ2UJbWVtX3VzYWdlOwor CQlNZW1vcnlDb250ZXh0IHBsYW5uZXJfY3R4OworCQlNZW1vcnlDb250ZXh0IHNhdmVkX2N0eDsK KworCQkvKgorCQkgKiBDcmVhdGUgYSBuZXcgbWVtb3J5IGNvbnRleHQgdG8gYWNjdXJhdGVseSBt ZWFzdXJlIG1lbW9yeSBtYWxsb2MnZWQKKwkJICogYnkgdGhlIHBsYW5uZXIuIEZvciBmdXJ0aGVy IGFjY3VyYWN5IHdlIHNob3VsZCB1c2UgdGhlIHNhbWUgdHlwZSBvZgorCQkgKiBtZW1vcnkgY29u dGV4dCBhcyB0aGUgcGxhbm5lciB3b3VsZCB1c2UuIFRoYXQncyB1c3VhbGx5IEFsbG9jU2V0CisJ CSAqIGJ1dCBlbnN1cmUgdGhhdC4KKwkJICovCisJCUFzc2VydChJc0EoQ3VycmVudE1lbW9yeUNv bnRleHQsIEFsbG9jU2V0Q29udGV4dCkpOworCQlwbGFubmVyX2N0eCA9IEFsbG9jU2V0Q29udGV4 dENyZWF0ZShDdXJyZW50TWVtb3J5Q29udGV4dCwKKwkJCQkJCQkJCQkJImV4cGxhaW4gYW5hbHl6 ZSBwbGFubmVyIGNvbnRleHQiLAorCQkJCQkJCQkJCQlBTExPQ1NFVF9ERUZBVUxUX1NJWkVTKTsK IAogCQlpZiAoZXMtPmJ1ZmZlcnMpCiAJCQlidWZ1c2FnZV9zdGFydCA9IHBnQnVmZmVyVXNhZ2U7 CisJCU1lbW9yeUNvbnRleHRNZW1Db25zdW1lZChwbGFubmVyX2N0eCwgJm1lbV9jb3VudHNfc3Rh cnQpOworCQlzYXZlZF9jdHggPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8ocGxhbm5lcl9jdHgpOwog CQlJTlNUUl9USU1FX1NFVF9DVVJSRU5UKHBsYW5zdGFydCk7CiAKIAkJLyogcGxhbiB0aGUgcXVl cnkgKi8KQEAgLTQwNyw2ICs0MjcsOSBAQCBFeHBsYWluT25lUXVlcnkoUXVlcnkgKnF1ZXJ5LCBp bnQgY3Vyc29yT3B0aW9ucywKIAogCQlJTlNUUl9USU1FX1NFVF9DVVJSRU5UKHBsYW5kdXJhdGlv bik7CiAJCUlOU1RSX1RJTUVfU1VCVFJBQ1QocGxhbmR1cmF0aW9uLCBwbGFuc3RhcnQpOworCQlN ZW1vcnlDb250ZXh0U3dpdGNoVG8oc2F2ZWRfY3R4KTsKKwkJTWVtb3J5Q29udGV4dE1lbUNvbnN1 bWVkKHBsYW5uZXJfY3R4LCAmbWVtX2NvdW50c19lbmQpOworCQljYWxjX21lbV91c2FnZSgmbWVt X3VzYWdlLCAmbWVtX2NvdW50c19lbmQsICZtZW1fY291bnRzX3N0YXJ0KTsKIAogCQkvKiBjYWxj IGRpZmZlcmVuY2VzIG9mIGJ1ZmZlciBjb3VudGVycy4gKi8KIAkJaWYgKGVzLT5idWZmZXJzKQpA QCAtNDE3LDcgKzQ0MCw4IEBAIEV4cGxhaW5PbmVRdWVyeShRdWVyeSAqcXVlcnksIGludCBjdXJz b3JPcHRpb25zLAogCiAJCS8qIHJ1biBpdCAoaWYgbmVlZGVkKSBhbmQgcHJvZHVjZSBvdXRwdXQg Ki8KIAkJRXhwbGFpbk9uZVBsYW4ocGxhbiwgaW50bywgZXMsIHF1ZXJ5U3RyaW5nLCBwYXJhbXMs IHF1ZXJ5RW52LAotCQkJCQkgICAmcGxhbmR1cmF0aW9uLCAoZXMtPmJ1ZmZlcnMgPyAmYnVmdXNh Z2UgOiBOVUxMKSk7CisJCQkJCSAgICZwbGFuZHVyYXRpb24sIChlcy0+YnVmZmVycyA/ICZidWZ1 c2FnZSA6IE5VTEwpLAorCQkJCQkgICAmbWVtX3VzYWdlKTsKIAl9CiB9CiAKQEAgLTUyNyw3ICs1 NTEsNyBAQCB2b2lkCiBFeHBsYWluT25lUGxhbihQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQsIElu dG9DbGF1c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAqZXMsCiAJCQkgICBjb25zdCBjaGFyICpxdWVy eVN0cmluZywgUGFyYW1MaXN0SW5mbyBwYXJhbXMsCiAJCQkgICBRdWVyeUVudmlyb25tZW50ICpx dWVyeUVudiwgY29uc3QgaW5zdHJfdGltZSAqcGxhbmR1cmF0aW9uLAotCQkJICAgY29uc3QgQnVm ZmVyVXNhZ2UgKmJ1ZnVzYWdlKQorCQkJICAgY29uc3QgQnVmZmVyVXNhZ2UgKmJ1ZnVzYWdlLCBj b25zdCBNZW1Vc2FnZSAqbWVtX3VzYWdlKQogewogCURlc3RSZWNlaXZlciAqZGVzdDsKIAlRdWVy eURlc2MgICpxdWVyeURlc2M7CkBAIC02MzAsNiArNjU0LDEzIEBAIEV4cGxhaW5PbmVQbGFuKFBs YW5uZWRTdG10ICpwbGFubmVkc3RtdCwgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRlICpl cywKIAkJRXhwbGFpblByb3BlcnR5RmxvYXQoIlBsYW5uaW5nIFRpbWUiLCAibXMiLCAxMDAwLjAg KiBwbGFudGltZSwgMywgZXMpOwogCX0KIAorCWlmIChlcy0+c3VtbWFyeSAmJiBtZW1fdXNhZ2Up CisJeworCQlFeHBsYWluT3Blbkdyb3VwKCJQbGFubmluZyBNZW1vcnkiLCAiUGxhbm5pbmcgTWVt b3J5IiwgdHJ1ZSwgZXMpOworCQlzaG93X3BsYW5uaW5nX21lbW9yeShlcywgbWVtX3VzYWdlKTsK KwkJRXhwbGFpbkNsb3NlR3JvdXAoIlBsYW5uaW5nIE1lbW9yeSIsICJQbGFubmluZyBNZW1vcnki LCB0cnVlLCBlcyk7CisJfQorCiAJLyogUHJpbnQgaW5mbyBhYm91dCBydW50aW1lIG9mIHRyaWdn ZXJzICovCiAJaWYgKGVzLT5hbmFseXplKQogCQlFeHBsYWluUHJpbnRUcmlnZ2VycyhlcywgcXVl cnlEZXNjKTsKQEAgLTM3NjYsNiArMzc5Nyw1MCBAQCBzaG93X3dhbF91c2FnZShFeHBsYWluU3Rh dGUgKmVzLCBjb25zdCBXYWxVc2FnZSAqdXNhZ2UpCiAJfQogfQogCisvKgorICogU2hvdyBwbGFu bmVyJ3MgbWVtb3J5IHVzYWdlIGRldGFpbHMuCisgKi8KK3N0YXRpYyB2b2lkCitzaG93X3BsYW5u aW5nX21lbW9yeShFeHBsYWluU3RhdGUgKmVzLCBjb25zdCBNZW1Vc2FnZSAqdXNhZ2UpCit7CisJ aWYgKGVzLT5mb3JtYXQgPT0gRVhQTEFJTl9GT1JNQVRfVEVYVCkKKwl7CisJCWFwcGVuZFN0cmlu Z0luZm8oZXMtPnN0ciwKKwkJCQkJCSAiUGxhbm5pbmcgTWVtb3J5OiB1c2VkPSV6dSBieXRlcyBh bGxvY2F0ZWQ9JXp1IGJ5dGVzIiwKKwkJCQkJCSB1c2FnZS0+bWVtX3VzZWQsIHVzYWdlLT5tZW1f YWxsb2NhdGVkKTsKKwkJYXBwZW5kU3RyaW5nSW5mb0NoYXIoZXMtPnN0ciwgJ1xuJyk7CisJfQor CWVsc2UKKwl7CisJCUV4cGxhaW5Qcm9wZXJ0eUludGVnZXIoIlVzZWQiLCAiYnl0ZXMiLCB1c2Fn ZS0+bWVtX3VzZWQsIGVzKTsKKwkJRXhwbGFpblByb3BlcnR5SW50ZWdlcigiQWxsb2NhdGVkIiwg ImJ5dGVzIiwgdXNhZ2UtPm1lbV9hbGxvY2F0ZWQsIGVzKTsKKwl9Cit9CisKKy8qCisgKiBDb21w dXRlIG1lbW9yeSB1c2FnZSBmcm9tIHRoZSBzdGFydCBhbmQgZW5kIG1lbW9yeSBjb3VudHMuCisg Ki8KK3ZvaWQKK2NhbGNfbWVtX3VzYWdlKE1lbVVzYWdlICptZW1fdXNhZ2UsIE1lbW9yeUNvbnRl eHRDb3VudGVycyAqbWVtX2NvdW50c19lbmQsCisJCQkgICBNZW1vcnlDb250ZXh0Q291bnRlcnMg Km1lbV9jb3VudHNfc3RhcnQpCit7CisJU2l6ZQkJbWVtX3VzZWRfc3RhcnQ7CisJU2l6ZQkJbWVt X3VzZWRfZW5kOworCisJbWVtX3VzZWRfc3RhcnQgPSBtZW1fY291bnRzX3N0YXJ0LT50b3RhbHNw YWNlIC0gbWVtX2NvdW50c19zdGFydC0+ZnJlZXNwYWNlOworCW1lbV91c2VkX2VuZCA9IG1lbV9j b3VudHNfZW5kLT50b3RhbHNwYWNlIC0gbWVtX2NvdW50c19lbmQtPmZyZWVzcGFjZTsKKworCW1l bV91c2FnZS0+bWVtX3VzZWQgPSBtZW1fdXNlZF9lbmQgLSBtZW1fdXNlZF9zdGFydDsKKworCS8q CisJICogVGhlIG5ldCBtZW1vcnkgdXNlZCBpcyBmcm9tIHRvdGFsIG1lbW9yeSBhbGxvY2F0ZWQg YW5kIG5vdCBuZWNlc3NhcmlseQorCSAqIHRoZSBuZXQgbWVtb3J5IGFsbG9jYXRlZCBiZXR3ZWVu IHRoZSB0d28gZ2l2ZW4gc2FtcGxlcy4gSGVuY2UgZG8gbm90CisJICogY29tcHV0ZSB0aGUgZGlm ZmVyZW5jZSBiZXR3ZWVuIGFsbG9jYXRlZCBtZW1vcnkgcmVwb3J0ZWQgaW4gdGhlIHR3bworCSAq IGdpdmVuIHNhbXBsZXMuCisJICovCisJbWVtX3VzYWdlLT5tZW1fYWxsb2NhdGVkID0gbWVtX2Nv dW50c19lbmQtPnRvdGFsc3BhY2U7Cit9CisKIC8qCiAgKiBBZGQgc29tZSBhZGRpdGlvbmFsIGRl dGFpbHMgYWJvdXQgYW4gSW5kZXhTY2FuIG9yIEluZGV4T25seVNjYW4KICAqLwpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHJlcGFyZS5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMv cHJlcGFyZS5jCmluZGV4IDE4ZjcwMzE5ZmMuLmViMzk4MjNkN2EgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9wcmVw YXJlLmMKQEAgLTU4Myw5ICs1ODMsMjcgQEAgRXhwbGFpbkV4ZWN1dGVRdWVyeShFeGVjdXRlU3Rt dCAqZXhlY3N0bXQsIEludG9DbGF1c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAqZXMsCiAJaW5zdHJf dGltZQlwbGFuZHVyYXRpb247CiAJQnVmZmVyVXNhZ2UgYnVmdXNhZ2Vfc3RhcnQsCiAJCQkJYnVm dXNhZ2U7CisJTWVtb3J5Q29udGV4dENvdW50ZXJzIG1lbV9jb3VudHNfc3RhcnQ7CisJTWVtb3J5 Q29udGV4dENvdW50ZXJzIG1lbV9jb3VudHNfZW5kOworCU1lbVVzYWdlCW1lbV91c2FnZTsKKwlN ZW1vcnlDb250ZXh0IHBsYW5uZXJfY3R4OworCU1lbW9yeUNvbnRleHQgc2F2ZWRfY3R4OworCisJ LyoKKwkgKiBDcmVhdGUgYSBuZXcgbWVtb3J5IGNvbnRleHQgdG8gYWNjdXJhdGVseSBtZWFzdXJl IG1lbW9yeSBtYWxsb2MnZWQgYnkKKwkgKiB0aGUgcGxhbm5lci4gRm9yIGZ1cnRoZXIgYWNjdXJh Y3kgd2Ugc2hvdWxkIHVzZSB0aGUgc2FtZSB0eXBlIG9mIG1lbW9yeQorCSAqIGNvbnRleHQgYXMg dGhlIHBsYW5uZXIgd291bGQgdXNlLiBUaGF0J3MgdXN1YWxseSBBbGxvY1NldCBidXQgZW5zdXJl CisJICogdGhhdC4KKwkgKi8KKwlBc3NlcnQoSXNBKEN1cnJlbnRNZW1vcnlDb250ZXh0LCBBbGxv Y1NldENvbnRleHQpKTsKKwlwbGFubmVyX2N0eCA9IEFsbG9jU2V0Q29udGV4dENyZWF0ZShDdXJy ZW50TWVtb3J5Q29udGV4dCwKKwkJCQkJCQkJCQkiZXhwbGFpbiBhbmFseXplIHBsYW5uZXIgY29u dGV4dCIsCisJCQkJCQkJCQkJQUxMT0NTRVRfREVGQVVMVF9TSVpFUyk7CiAKIAlpZiAoZXMtPmJ1 ZmZlcnMpCiAJCWJ1ZnVzYWdlX3N0YXJ0ID0gcGdCdWZmZXJVc2FnZTsKKwlNZW1vcnlDb250ZXh0 TWVtQ29uc3VtZWQocGxhbm5lcl9jdHgsICZtZW1fY291bnRzX3N0YXJ0KTsKKwlzYXZlZF9jdHgg PSBNZW1vcnlDb250ZXh0U3dpdGNoVG8ocGxhbm5lcl9jdHgpOwogCUlOU1RSX1RJTUVfU0VUX0NV UlJFTlQocGxhbnN0YXJ0KTsKIAogCS8qIExvb2sgaXQgdXAgaW4gdGhlIGhhc2ggdGFibGUgKi8K QEAgLTYyMyw2ICs2NDEsOSBAQCBFeHBsYWluRXhlY3V0ZVF1ZXJ5KEV4ZWN1dGVTdG10ICpleGVj c3RtdCwgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRlICplcywKIAogCUlOU1RSX1RJTUVf U0VUX0NVUlJFTlQocGxhbmR1cmF0aW9uKTsKIAlJTlNUUl9USU1FX1NVQlRSQUNUKHBsYW5kdXJh dGlvbiwgcGxhbnN0YXJ0KTsKKwlNZW1vcnlDb250ZXh0U3dpdGNoVG8oc2F2ZWRfY3R4KTsKKwlN ZW1vcnlDb250ZXh0TWVtQ29uc3VtZWQocGxhbm5lcl9jdHgsICZtZW1fY291bnRzX2VuZCk7CisJ Y2FsY19tZW1fdXNhZ2UoJm1lbV91c2FnZSwgJm1lbV9jb3VudHNfZW5kLCAmbWVtX2NvdW50c19z dGFydCk7CiAKIAkvKiBjYWxjIGRpZmZlcmVuY2VzIG9mIGJ1ZmZlciBjb3VudGVycy4gKi8KIAlp ZiAoZXMtPmJ1ZmZlcnMpCkBAIC02NDAsNyArNjYxLDggQEAgRXhwbGFpbkV4ZWN1dGVRdWVyeShF eGVjdXRlU3RtdCAqZXhlY3N0bXQsIEludG9DbGF1c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAqZXMs CiAKIAkJaWYgKHBzdG10LT5jb21tYW5kVHlwZSAhPSBDTURfVVRJTElUWSkKIAkJCUV4cGxhaW5P bmVQbGFuKHBzdG10LCBpbnRvLCBlcywgcXVlcnlfc3RyaW5nLCBwYXJhbUxJLCBxdWVyeUVudiwK LQkJCQkJCSAgICZwbGFuZHVyYXRpb24sIChlcy0+YnVmZmVycyA/ICZidWZ1c2FnZSA6IE5VTEwp KTsKKwkJCQkJCSAgICZwbGFuZHVyYXRpb24sIChlcy0+YnVmZmVycyA/ICZidWZ1c2FnZSA6IE5V TEwpLAorCQkJCQkJICAgJm1lbV91c2FnZSk7CiAJCWVsc2UKIAkJCUV4cGxhaW5PbmVVdGlsaXR5 KHBzdG10LT51dGlsaXR5U3RtdCwgaW50bywgZXMsIHF1ZXJ5X3N0cmluZywKIAkJCQkJCQkgIHBh cmFtTEksIHF1ZXJ5RW52KTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3IvbWN4 dC5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9tY3h0LmMKaW5kZXggOWZjODNmMTFmNi4uOTQx NTlhNjc5OSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9tY3h0LmMKKysrIGIv c3JjL2JhY2tlbmQvdXRpbHMvbW1nci9tY3h0LmMKQEAgLTc0Nyw2ICs3NDcsMTggQEAgTWVtb3J5 Q29udGV4dFN0YXRzRGV0YWlsKE1lbW9yeUNvbnRleHQgY29udGV4dCwgaW50IG1heF9jaGlsZHJl biwKIAkJCQkJCQkJIGdyYW5kX3RvdGFscy50b3RhbHNwYWNlIC0gZ3JhbmRfdG90YWxzLmZyZWVz cGFjZSkpKTsKIH0KIAorLyoKKyAqIFJldHVybiB0aGUgbWVtb3J5IHVzZWQgaW4gdGhlIGdpdmVu IGNvbnRleHQgYW5kIGl0cyBjaGlsZHJlbi4KKyAqLworZXh0ZXJuIHZvaWQKK01lbW9yeUNvbnRl eHRNZW1Db25zdW1lZChNZW1vcnlDb250ZXh0IGNvbnRleHQsCisJCQkJCQkgTWVtb3J5Q29udGV4 dENvdW50ZXJzICptZW1fY29uc3VtZWQpCit7CisJbWVtc2V0KG1lbV9jb25zdW1lZCwgMCwgc2l6 ZW9mKCptZW1fY29uc3VtZWQpKTsKKworCU1lbW9yeUNvbnRleHRTdGF0c0ludGVybmFsKGNvbnRl eHQsIDAsIGZhbHNlLCAxMDAsIG1lbV9jb25zdW1lZCwgZmFsc2UpOworfQorCiAvKgogICogTWVt b3J5Q29udGV4dFN0YXRzSW50ZXJuYWwKICAqCQlPbmUgcmVjdXJzaW9uIGxldmVsIGZvciBNZW1v cnlDb250ZXh0U3RhdHMKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2V4cGxhaW4u aCBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2V4cGxhaW4uaAppbmRleCBmOTUyNWZiNTcyLi4wNWRj YjkxYzQ5IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9leHBsYWluLmgKKysrIGIv c3JjL2luY2x1ZGUvY29tbWFuZHMvZXhwbGFpbi5oCkBAIC02Miw2ICs2MiwxMiBAQCB0eXBlZGVm IHN0cnVjdCBFeHBsYWluU3RhdGUKIAlFeHBsYWluV29ya2Vyc1N0YXRlICp3b3JrZXJzX3N0YXRl OyAvKiBuZWVkZWQgaWYgcGFyYWxsZWwgcGxhbiAqLwogfSBFeHBsYWluU3RhdGU7CiAKK3R5cGVk ZWYgc3RydWN0IE1lbVVzYWdlCit7CisJU2l6ZQkJbWVtX3VzZWQ7CisJU2l6ZQkJbWVtX2FsbG9j YXRlZDsKK30gTWVtVXNhZ2U7CisKIC8qIEhvb2sgZm9yIHBsdWdpbnMgdG8gZ2V0IGNvbnRyb2wg aW4gRXhwbGFpbk9uZVF1ZXJ5KCkgKi8KIHR5cGVkZWYgdm9pZCAoKkV4cGxhaW5PbmVRdWVyeV9o b29rX3R5cGUpIChRdWVyeSAqcXVlcnksCiAJCQkJCQkJCQkJICAgaW50IGN1cnNvck9wdGlvbnMs CkBAIC05Miw3ICs5OCw4IEBAIGV4dGVybiB2b2lkIEV4cGxhaW5PbmVQbGFuKFBsYW5uZWRTdG10 ICpwbGFubmVkc3RtdCwgSW50b0NsYXVzZSAqaW50bywKIAkJCQkJCSAgIEV4cGxhaW5TdGF0ZSAq ZXMsIGNvbnN0IGNoYXIgKnF1ZXJ5U3RyaW5nLAogCQkJCQkJICAgUGFyYW1MaXN0SW5mbyBwYXJh bXMsIFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52LAogCQkJCQkJICAgY29uc3QgaW5zdHJfdGlt ZSAqcGxhbmR1cmF0aW9uLAotCQkJCQkJICAgY29uc3QgQnVmZmVyVXNhZ2UgKmJ1ZnVzYWdlKTsK KwkJCQkJCSAgIGNvbnN0IEJ1ZmZlclVzYWdlICpidWZ1c2FnZSwKKwkJCQkJCSAgIGNvbnN0IE1l bVVzYWdlICptZW1fdXNhZ2UpOwogCiBleHRlcm4gdm9pZCBFeHBsYWluUHJpbnRQbGFuKEV4cGxh aW5TdGF0ZSAqZXMsIFF1ZXJ5RGVzYyAqcXVlcnlEZXNjKTsKIGV4dGVybiB2b2lkIEV4cGxhaW5Q cmludFRyaWdnZXJzKEV4cGxhaW5TdGF0ZSAqZXMsIFF1ZXJ5RGVzYyAqcXVlcnlEZXNjKTsKQEAg LTEyNSw1ICsxMzIsOCBAQCBleHRlcm4gdm9pZCBFeHBsYWluT3Blbkdyb3VwKGNvbnN0IGNoYXIg Km9ianR5cGUsIGNvbnN0IGNoYXIgKmxhYmVsbmFtZSwKIAkJCQkJCQkgYm9vbCBsYWJlbGVkLCBF eHBsYWluU3RhdGUgKmVzKTsKIGV4dGVybiB2b2lkIEV4cGxhaW5DbG9zZUdyb3VwKGNvbnN0IGNo YXIgKm9ianR5cGUsIGNvbnN0IGNoYXIgKmxhYmVsbmFtZSwKIAkJCQkJCQkgIGJvb2wgbGFiZWxl ZCwgRXhwbGFpblN0YXRlICplcyk7CitleHRlcm4gdm9pZCBjYWxjX21lbV91c2FnZShNZW1Vc2Fn ZSAqbWVtX3VzYWdlLAorCQkJCQkJICAgTWVtb3J5Q29udGV4dENvdW50ZXJzICptZW1fY291bnRz X2VuZCwKKwkJCQkJCSAgIE1lbW9yeUNvbnRleHRDb3VudGVycyAqbWVtX2NvdW50c19zdGFydCk7 CiAKICNlbmRpZgkJCQkJCQkvKiBFWFBMQUlOX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L3V0aWxzL21lbXV0aWxzLmggYi9zcmMvaW5jbHVkZS91dGlscy9tZW11dGlscy5oCmluZGV4IDIx NjQwZDYyYTYuLmQyNTRhMDQ0YzEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL21lbXV0 aWxzLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvbWVtdXRpbHMuaApAQCAtOTIsNiArOTIsOCBA QCBleHRlcm4gdm9pZCBNZW1vcnlDb250ZXh0U3RhdHNEZXRhaWwoTWVtb3J5Q29udGV4dCBjb250 ZXh0LCBpbnQgbWF4X2NoaWxkcmVuLAogCQkJCQkJCQkJIGJvb2wgcHJpbnRfdG9fc3RkZXJyKTsK IGV4dGVybiB2b2lkIE1lbW9yeUNvbnRleHRBbGxvd0luQ3JpdGljYWxTZWN0aW9uKE1lbW9yeUNv bnRleHQgY29udGV4dCwKIAkJCQkJCQkJCQkJCWJvb2wgYWxsb3cpOworZXh0ZXJuIHZvaWQgTWVt b3J5Q29udGV4dE1lbUNvbnN1bWVkKE1lbW9yeUNvbnRleHQgY29udGV4dCwKKwkJCQkJCQkJCSBN ZW1vcnlDb250ZXh0Q291bnRlcnMgKm1lbV9jb25zdW1lZCk7CiAKICNpZmRlZiBNRU1PUllfQ09O VEVYVF9DSEVDS0lORwogZXh0ZXJuIHZvaWQgTWVtb3J5Q29udGV4dENoZWNrKE1lbW9yeUNvbnRl eHQgY29udGV4dCk7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2V4cGxh aW4ub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9leHBsYWluLm91dAppbmRleCA4MDk2 NTVlMTZlLi5lNGIxYWE3ZmRmIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L2V4cGxhaW4ub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZXhwbGFpbi5vdXQK QEAgLTY1LDggKzY1LDkgQEAgc2VsZWN0IGV4cGxhaW5fZmlsdGVyKCdleHBsYWluIChhbmFseXpl KSBzZWxlY3QgKiBmcm9tIGludDhfdGJsIGk4Jyk7CiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQogIFNlcSBTY2FuIG9uIGludDhfdGJsIGk4ICAoY29zdD1OLk4uLk4uTiBy b3dzPU4gd2lkdGg9TikgKGFjdHVhbCB0aW1lPU4uTi4uTi5OIHJvd3M9TiBsb29wcz1OKQogIFBs YW5uaW5nIFRpbWU6IE4uTiBtcworIFBsYW5uaW5nIE1lbW9yeTogdXNlZD1OIGJ5dGVzIGFsbG9j YXRlZD1OIGJ5dGVzCiAgRXhlY3V0aW9uIFRpbWU6IE4uTiBtcwotKDMgcm93cykKKyg0IHJvd3Mp CiAKIHNlbGVjdCBleHBsYWluX2ZpbHRlcignZXhwbGFpbiAoYW5hbHl6ZSwgdmVyYm9zZSkgc2Vs ZWN0ICogZnJvbSBpbnQ4X3RibCBpOCcpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBleHBsYWluX2ZpbHRlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgCkBAIC03NCwxNiArNzUsMTggQEAgc2VsZWN0IGV4cGxhaW5fZmlsdGVy KCdleHBsYWluIChhbmFseXplLCB2ZXJib3NlKSBzZWxlY3QgKiBmcm9tIGludDhfdGJsIGk4Jyk7 CiAgU2VxIFNjYW4gb24gcHVibGljLmludDhfdGJsIGk4ICAoY29zdD1OLk4uLk4uTiByb3dzPU4g d2lkdGg9TikgKGFjdHVhbCB0aW1lPU4uTi4uTi5OIHJvd3M9TiBsb29wcz1OKQogICAgT3V0cHV0 OiBxMSwgcTIKICBQbGFubmluZyBUaW1lOiBOLk4gbXMKKyBQbGFubmluZyBNZW1vcnk6IHVzZWQ9 TiBieXRlcyBhbGxvY2F0ZWQ9TiBieXRlcwogIEV4ZWN1dGlvbiBUaW1lOiBOLk4gbXMKLSg0IHJv d3MpCisoNSByb3dzKQogCiBzZWxlY3QgZXhwbGFpbl9maWx0ZXIoJ2V4cGxhaW4gKGFuYWx5emUs IGJ1ZmZlcnMsIGZvcm1hdCB0ZXh0KSBzZWxlY3QgKiBmcm9tIGludDhfdGJsIGk4Jyk7CiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwbGFpbl9maWx0ZXIgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KICBTZXEgU2NhbiBvbiBpbnQ4X3RibCBpOCAgKGNvc3Q9Ti5OLi5O Lk4gcm93cz1OIHdpZHRoPU4pIChhY3R1YWwgdGltZT1OLk4uLk4uTiByb3dzPU4gbG9vcHM9TikK ICBQbGFubmluZyBUaW1lOiBOLk4gbXMKKyBQbGFubmluZyBNZW1vcnk6IHVzZWQ9TiBieXRlcyBh bGxvY2F0ZWQ9TiBieXRlcwogIEV4ZWN1dGlvbiBUaW1lOiBOLk4gbXMKLSgzIHJvd3MpCisoNCBy b3dzKQogCiBzZWxlY3QgZXhwbGFpbl9maWx0ZXIoJ2V4cGxhaW4gKGFuYWx5emUsIGJ1ZmZlcnMs IGZvcm1hdCB4bWwpIHNlbGVjdCAqIGZyb20gaW50OF90YmwgaTgnKTsKICAgICAgICAgICAgICAg ICAgICAgIGV4cGxhaW5fZmlsdGVyICAgICAgICAgICAgICAgICAgICAgCkBAIC0xMjgsNiArMTMx LDEwIEBAIHNlbGVjdCBleHBsYWluX2ZpbHRlcignZXhwbGFpbiAoYW5hbHl6ZSwgYnVmZmVycywg Zm9ybWF0IHhtbCkgc2VsZWN0ICogZnJvbSBpbnQ4CiAgICAgICAgPFRlbXAtV3JpdHRlbi1CbG9j a3M+TjwvVGVtcC1Xcml0dGVuLUJsb2Nrcz4gICAgKwogICAgICA8L1BsYW5uaW5nPiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKICAgICAgPFBsYW5uaW5nLVRpbWU+Ti5O PC9QbGFubmluZy1UaW1lPiAgICAgICAgICAgICAgICArCisgICAgIDxQbGFubmluZy1NZW1vcnk+ ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgIDxVc2VkPk48L1VzZWQ+ ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICA8QWxsb2NhdGVkPk48 L0FsbG9jYXRlZD4gICAgICAgICAgICAgICAgICAgICAgICArCisgICAgIDwvUGxhbm5pbmctTWVt b3J5PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKwogICAgICA8VHJpZ2dlcnM+ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKICAgICAgPC9UcmlnZ2Vycz4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCiAgICAgIDxFeGVjdXRpb24t VGltZT5OLk48L0V4ZWN1dGlvbi1UaW1lPiAgICAgICAgICAgICAgKwpAQCAtMTc0LDYgKzE4MSw5 IEBAIHNlbGVjdCBleHBsYWluX2ZpbHRlcignZXhwbGFpbiAoYW5hbHl6ZSwgYnVmZmVycywgZm9y bWF0IHlhbWwpIHNlbGVjdCAqIGZyb20gaW50CiAgICAgIFRlbXAgUmVhZCBCbG9ja3M6IE4gICAg ICArCiAgICAgIFRlbXAgV3JpdHRlbiBCbG9ja3M6IE4gICArCiAgICBQbGFubmluZyBUaW1lOiBO Lk4gICAgICAgICArCisgICBQbGFubmluZyBNZW1vcnk6ICAgICAgICAgICArCisgICAgIFVzZWQ6 IE4gICAgICAgICAgICAgICAgICArCisgICAgIEFsbG9jYXRlZDogTiAgICAgICAgICAgICArCiAg ICBUcmlnZ2VyczogICAgICAgICAgICAgICAgICArCiAgICBFeGVjdXRpb24gVGltZTogTi5OCiAo MSByb3cpCkBAIC0yODQsNiArMjk0LDEwIEBAIHNlbGVjdCBleHBsYWluX2ZpbHRlcignZXhwbGFp biAoYW5hbHl6ZSwgYnVmZmVycywgZm9ybWF0IGpzb24pIHNlbGVjdCAqIGZyb20gaW50CiAgICAg ICAgIlRlbXAgSS9PIFdyaXRlIFRpbWUiOiBOLk4gICArCiAgICAgIH0sICAgICAgICAgICAgICAg ICAgICAgICAgICAgICArCiAgICAgICJQbGFubmluZyBUaW1lIjogTi5OLCAgICAgICAgICArCisg ICAgICJQbGFubmluZyBNZW1vcnkiOiB7ICAgICAgICAgICArCisgICAgICAgIlVzZWQiOiBOLCAg ICAgICAgICAgICAgICAgICArCisgICAgICAgIkFsbG9jYXRlZCI6IE4gICAgICAgICAgICAgICAr CisgICAgIH0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCiAgICAgICJUcmlnZ2VycyI6 IFsgICAgICAgICAgICAgICAgICArCiAgICAgIF0sICAgICAgICAgICAgICAgICAgICAgICAgICAg ICArCiAgICAgICJFeGVjdXRpb24gVGltZSI6IE4uTiAgICAgICAgICArCkBAIC01MzUsNyArNTQ5 LDExIEBAIHNlbGVjdCBqc29uYl9wcmV0dHkoCiAgICAgICAgICAiVHJpZ2dlcnMiOiBbICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCiAgICAgICAgICBdLCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCiAgICAgICAgICAiUGxhbm5p bmcgVGltZSI6IDAuMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCi0gICAgICAgICAi RXhlY3V0aW9uIFRpbWUiOiAwLjAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAg ICAgICAiRXhlY3V0aW9uIFRpbWUiOiAwLjAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAr CisgICAgICAgICAiUGxhbm5pbmcgTWVtb3J5IjogeyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICArCisgICAgICAgICAgICAgIlVzZWQiOiAwLCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICArCisgICAgICAgICAgICAgIkFsbG9jYXRlZCI6IDAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICArCisgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICArCiAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCiAgXQogKDEgcm93KQpkaWZmIC0tZ2l0IGEv c3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlw ZWRlZnMubGlzdAppbmRleCA4N2MxYWVlMzc5Li5iY2MyZjQ4ZWZkIDEwMDY0NAotLS0gYS9zcmMv dG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAorKysgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlw ZWRlZnMubGlzdApAQCAtMTU0Nyw2ICsxNTQ3LDcgQEAgTWVtb3J5Q29udGV4dERhdGEKIE1lbW9y eUNvbnRleHRNZXRob2RJRAogTWVtb3J5Q29udGV4dE1ldGhvZHMKIE1lbW9yeVN0YXRzUHJpbnRG dW5jCitNZW1Vc2FnZQogTWVyZ2VBY3Rpb24KIE1lcmdlQWN0aW9uU3RhdGUKIE1lcmdlQXBwZW5k Ci0tIAoyLjI1LjEKCg== --00000000000057b19f06097856b4--