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 1uPGxP-003qMi-HK for pgsql-hackers@arkaria.postgresql.org; Wed, 11 Jun 2025 08:37:15 +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 1uPGxN-000yEP-6X for pgsql-hackers@arkaria.postgresql.org; Wed, 11 Jun 2025 08:37:13 +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 1uPGxM-000yEG-QJ for pgsql-hackers@lists.postgresql.org; Wed, 11 Jun 2025 08:37:13 +0000 Received: from mail-ej1-x62a.google.com ([2a00:1450:4864:20::62a]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1uPGxL-001Ose-21 for pgsql-hackers@lists.postgresql.org; Wed, 11 Jun 2025 08:37:13 +0000 Received: by mail-ej1-x62a.google.com with SMTP id a640c23a62f3a-adb5cb6d8f1so1028839966b.3 for ; Wed, 11 Jun 2025 01:37:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1749631030; x=1750235830; 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=6/oFiqcbQsX2JaeMXM4byuCmbjSxclkd2mP017xcYZY=; b=EqfZVx7ebxyL7+MLE1UE07DCYs6GgDa2dhrhOYoeSVJYfVzHXtKRMdsI68+XtYXZr1 I0qkxVD5JIDjEirqlMUekMkMI2UY1OUFE55rcKJpdQIBTKFcq2xY/UYcdBwHCQoRgtgV 7uWW29LHX1Y6MumihCMvZfyfbB/K3ZHP4lZakm6uUn3D+hV7pg8VdscwfMkO+Umk4vuR Vf9vTmNatruHVGWUQP/xWzf9oDFcIjzr7trJQA8p2CEy46Cvdr/cDWuj8oGnZvcxO7xO nS/EXhEr1euwkJfvYgb2fjidM4Z3jMD/YJrsTWv89iSUF1ETilwaVCwlM2urrlR9Dzpi UA6A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1749631030; x=1750235830; 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=6/oFiqcbQsX2JaeMXM4byuCmbjSxclkd2mP017xcYZY=; b=TNytcCn9HpdQI4cAW3HO8qBqP3N2BNGaTtcV1wH6kc2vUKSrtgnVMCwWmjDjnDwl4W xtaDvq687ZkkKcYMxrmKBNmq5YISwWjA0gS+bVs+fYHssZncC2PfxMz1EJp/0lEJJzNE VwnoulI5JhRq+iwQhPLpZQEoBI0hFB6ppmOPTqZyzkw+7YOXwl0LA6Ec/3JinXtj8Q3v WyOJR7RwOrIhEMSMfQMFOZyarJ3sulk4GYMOMi3uNtatvgcOO9ugdcT3HokX4ZXWvl/Q iBOO8fvqyVf4vf7+cEYYmufYvXJCIk1ixkvEvJk/f1H9iONA4/3Z5YC+bkTZajwytCVO Iugg== X-Gm-Message-State: AOJu0YxMv8pQwpT5ixPkL/BE0QfrakZm24ICPABY5UXn3//nEepdfXhE y0m+UwytWHMMbOnehpH3rl6S3GbSIvR+iN10s2f9V2sw1udSnMM6soog/2PexenqTMLaPNB5PtD PkPWzQT8yWLvcddK5kp4szFBBmS/ihUA= X-Gm-Gg: ASbGncuf32w7L16Q26Nimokk9GaXqnR3ikDnoI26LK3rBT8jEXyq5xCR+iaANUgZmdh XtNa13/wQquto1sm9H7g4/blc152HEsjNcmBKWgXSUGh/LTmlzwqE7nVJtVl1cxwKOcfzV/F3o5 gwi52SZ2VAREGcBuYPe4DFTp7EhJ/JbU056tRUMVNuXCrO X-Google-Smtp-Source: AGHT+IFCmi2WvoW/xjkJ0gnXGwhT83KCAooIbY9mmEgN22pAK8NKFX1q9GOTInsvMLFg8QjNz2K3bEYbVNcx+rXoiPE= X-Received: by 2002:a17:907:968a:b0:ad5:27f5:7183 with SMTP id a640c23a62f3a-ade8c8e893emr172691966b.39.1749631030142; Wed, 11 Jun 2025 01:37:10 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Tatsuro Yamada Date: Wed, 11 Jun 2025 17:36:58 +0900 X-Gm-Features: AX0GCFtOWtd1oNnF1nl6sYgDN6Wj2VVI_dmWfD0Mwc2D6lUCsn7K6rWD8CGs2fg Message-ID: Subject: Re: Add enable_groupagg GUC parameter to control GroupAggregate usage To: Ashutosh Bapat Cc: pgsql-hackers@lists.postgresql.org Content-Type: multipart/mixed; boundary="0000000000000a6414063747b84b" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000000a6414063747b84b Content-Type: multipart/alternative; boundary="0000000000000a6413063747b849" --0000000000000a6413063747b849 Content-Type: text/plain; charset="UTF-8" Hi Ashtosh and hackers, > >Some of those instances are for plan stability, all of which need not be > replicated. But some of them explicitly test sort based grouping. For rest > of them hash based plan seems to be the best one, so explicit > enable_groupagg = false is not needed. We will need some test to test the > switch though. > > Thanks for your advice. I'll create a regression test and send a new patch > to -hackers in my next email. > I created a regression test to check the enable_groupagg parameter in the new patch. To ensure plan stability, I disabled parallel query by setting the max_parallel_* parameters to 0. Any feedback is welcome. Please see the attached file. Thanks, Tatsuro Yamada --0000000000000a6413063747b849 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi A= shtosh and hackers,
=C2=A0
>Some of those instances are for p= lan stability, all of which need not be replicated. But some of them explic= itly test sort based grouping. For rest of them hash based plan seems to be= the best one, so explicit enable_groupagg =3D false is not needed. We will= need some test to test the switch though.

Thanks for your advice. I= 'll create a regression test and send a new patch
to -hackers in my= next email.

I created a regression t= est to check the enable_groupagg parameter in
the new patch.
To ensur= e plan stability, I disabled parallel query by setting the max_parallel_*= =C2=A0
parameters to 0.

Any feedback is welcome.
Please= see the attached file.

Thanks,
Tatsuro Yamada
=C2= =A0
--0000000000000a6413063747b849-- --0000000000000a6414063747b84b Content-Type: application/octet-stream; name="0001-Add-new-GUC-parameter-enable_groupagg-WIP-r2.patch" Content-Disposition: attachment; filename="0001-Add-new-GUC-parameter-enable_groupagg-WIP-r2.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mbrp41zd0 RnJvbSAyZDk3OTgyMDdjZGJiMWJiZTdjMTg1OGUzNmQ2OWJkYjE3MTAzZWNmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBUYXRzdXJvIFlhbWFkYSA8eWFtYXRhdHRzdUBnbWFpbC5jb20+ CkRhdGU6IFRodSwgNSBKdW4gMjAyNSAxODo1MDozNCArMDkwMApTdWJqZWN0OiBbUEFUQ0hdIEFk ZCBuZXcgR1VDIHBhcmFtZXRlcjogZW5hYmxlX2dyb3VwYWdnCgpQcmV2aW91c2x5LCB0aGVyZSB3 YXMgbm8gR1VDIHBhcmFtZXRlciB0byBjb250cm9sIHRoZSB1c2Ugb2YKR3JvdXBBZ2dyZWdhdGUs IHNvIHdlIGNvdWxkbid0IGluZmx1ZW5jZSB0aGUgcGxhbm5lcidzIGNob2ljZQppbiBjZXJ0YWlu IHF1ZXJpZXMuClRoaXMgcGF0Y2ggYWRkcyBhIG5ldyBwYXJhbWV0ZXIsICJlbmFibGVfZ3JvdXBh Z2ciLCB3aGljaAphbGxvd3MgdXNlcnMgdG8gZW5hYmxlIG9yIGRpc2FibGUgR3JvdXBBZ2dyZWdh dGUgZXhwbGljaXRseS4KCkJ5IGRpc2FibGluZyBHcm91cEFnZ3JlZ2F0ZSwgdGhlIHBsYW5uZXIg bWF5IGNob29zZQpIYXNoQWdncmVnYXRlIGluc3RlYWQsIHBvdGVudGlhbGx5IHJlc3VsdGluZyBp biBhIG1vcmUKZWZmaWNpZW50IGV4ZWN1dGlvbiBwbGFuIGZvciBzb21lIHF1ZXJpZXMuCi0tLQog ZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sICAgICAgICAgICAgICAgICAgICAgIHwgIDE0ICsrCiBz cmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9jb3N0c2l6ZS5jICAgICAgICAgfCAgIDMgKwogc3Jj L2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMgICAgICAgICAgIHwgIDEwICsrCiBzcmMv YmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUgfCAgIDEgKwogc3JjL2lu Y2x1ZGUvb3B0aW1pemVyL2Nvc3QuaCAgICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvYWdncmVnYXRlcy5vdXQgICAgICB8IDEyMCArKysrKysrKysrKysr KysrKysKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3lzdmlld3Mub3V0ICAgICAgICB8ICAg MyArLQogc3JjL3Rlc3QvcmVncmVzcy9zcWwvYWdncmVnYXRlcy5zcWwgICAgICAgICAgIHwgIDgx ICsrKysrKysrKysrKwogOCBmaWxlcyBjaGFuZ2VkLCAyMzIgaW5zZXJ0aW9ucygrKSwgMSBkZWxl dGlvbigtKQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbCBiL2RvYy9zcmMv c2dtbC9jb25maWcuc2dtbAppbmRleCAwMjExNTNiMmE1Zi4uZWRkMGYzYTEzYjggMTAwNjQ0Ci0t LSBhL2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvY29uZmlnLnNn bWwKQEAgLTU1MTUsNiArNTUxNSwyMCBAQCBBTlkgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPm51bV9zeW5jPC9yZXBsYWNlYWJsZT4gKCA8cmVwbGFjZWFibGUgY2xhc3M9IgogICAgICAg PC9saXN0aXRlbT4KICAgICAgPC92YXJsaXN0ZW50cnk+CiAKKyAgICAgPHZhcmxpc3RlbnRyeSBp ZD0iZ3VjLWVuYWJsZS1ncm91cGFnZyIgeHJlZmxhYmVsPSJlbmFibGVfZ3JvdXBhZ2ciPgorICAg ICAgPHRlcm0+PHZhcm5hbWU+ZW5hYmxlX2dyb3VwYWdnPC92YXJuYW1lPiAoPHR5cGU+Ym9vbGVh bjwvdHlwZT4pCisgICAgICA8aW5kZXh0ZXJtPgorICAgICAgIDxwcmltYXJ5Pjx2YXJuYW1lPmVu YWJsZV9ncm91cGFnZzwvdmFybmFtZT4gY29uZmlndXJhdGlvbiBwYXJhbWV0ZXI8L3ByaW1hcnk+ CisgICAgICA8L2luZGV4dGVybT4KKyAgICAgIDwvdGVybT4KKyAgICAgIDxsaXN0aXRlbT4KKyAg ICAgICA8cGFyYT4KKyAgICAgICAgRW5hYmxlcyBvciBkaXNhYmxlcyB0aGUgcXVlcnkgcGxhbm5l cidzIHVzZSBvZiBncm91cGVkCisgICAgICAgIGFnZ3JlZ2F0aW9uIHBsYW4gdHlwZXMuIFRoZSBk ZWZhdWx0IGlzIDxsaXRlcmFsPm9uPC9saXRlcmFsPi4KKyAgICAgICA8L3BhcmE+CisgICAgICA8 L2xpc3RpdGVtPgorICAgICA8L3Zhcmxpc3RlbnRyeT4KKwogICAgICA8dmFybGlzdGVudHJ5IGlk PSJndWMtZW5hYmxlLWhhc2hqb2luIiB4cmVmbGFiZWw9ImVuYWJsZV9oYXNoam9pbiI+CiAgICAg ICA8dGVybT48dmFybmFtZT5lbmFibGVfaGFzaGpvaW48L3Zhcm5hbWU+ICg8dHlwZT5ib29sZWFu PC90eXBlPikKICAgICAgIDxpbmRleHRlcm0+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRp bWl6ZXIvcGF0aC9jb3N0c2l6ZS5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvY29zdHNp emUuYwppbmRleCAzZDQ0ODE1ZWQ1YS4uODBjNjgwMDhkODUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL29wdGltaXplci9wYXRoL2Nvc3RzaXplLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVy L3BhdGgvY29zdHNpemUuYwpAQCAtMTUwLDYgKzE1MCw3IEBAIGJvb2wJCWVuYWJsZV90aWRzY2Fu ID0gdHJ1ZTsKIGJvb2wJCWVuYWJsZV9zb3J0ID0gdHJ1ZTsKIGJvb2wJCWVuYWJsZV9pbmNyZW1l bnRhbF9zb3J0ID0gdHJ1ZTsKIGJvb2wJCWVuYWJsZV9oYXNoYWdnID0gdHJ1ZTsKK2Jvb2wJCWVu YWJsZV9ncm91cGFnZyA9IHRydWU7CiBib29sCQllbmFibGVfbmVzdGxvb3AgPSB0cnVlOwogYm9v bAkJZW5hYmxlX21hdGVyaWFsID0gdHJ1ZTsKIGJvb2wJCWVuYWJsZV9tZW1vaXplID0gdHJ1ZTsK QEAgLTI3MzcsNiArMjczOCw4IEBAIGNvc3RfYWdnKFBhdGggKnBhdGgsIFBsYW5uZXJJbmZvICpy b290LAogCQkvKiBIZXJlIHdlIGFyZSBhYmxlIHRvIGRlbGl2ZXIgb3V0cHV0IG9uLXRoZS1mbHkg Ki8KIAkJc3RhcnR1cF9jb3N0ID0gaW5wdXRfc3RhcnR1cF9jb3N0OwogCQl0b3RhbF9jb3N0ID0g aW5wdXRfdG90YWxfY29zdDsKKwkJaWYgKGFnZ3N0cmF0ZWd5ID09IEFHR19TT1JURUQgJiYgIWVu YWJsZV9ncm91cGFnZyAmJiBlbmFibGVfaGFzaGFnZykKKwkJCSsrZGlzYWJsZWRfbm9kZXM7CiAJ CWlmIChhZ2dzdHJhdGVneSA9PSBBR0dfTUlYRUQgJiYgIWVuYWJsZV9oYXNoYWdnKQogCQkJKytk aXNhYmxlZF9ub2RlczsKIAkJLyogY2FsY3MgcGhyYXNlZCB0aGlzIHdheSB0byBtYXRjaCBIQVNI RUQgY2FzZSwgc2VlIG5vdGUgYWJvdmUgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxz L21pc2MvZ3VjX3RhYmxlcy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMK aW5kZXggZjA0YmZlZGIyZmQuLmExN2I3ZmIxYmExIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91 dGlscy9taXNjL2d1Y190YWJsZXMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190 YWJsZXMuYwpAQCAtODY5LDYgKzg2OSwxNiBAQCBzdHJ1Y3QgY29uZmlnX2Jvb2wgQ29uZmlndXJl TmFtZXNCb29sW10gPQogCQl0cnVlLAogCQlOVUxMLCBOVUxMLCBOVUxMCiAJfSwKKwl7CisJCXsi ZW5hYmxlX2dyb3VwYWdnIiwgUEdDX1VTRVJTRVQsIFFVRVJZX1RVTklOR19NRVRIT0QsCisJCQln ZXR0ZXh0X25vb3AoIkVuYWJsZXMgdGhlIHBsYW5uZXIncyB1c2Ugb2YgZ3JvdXBlZCBhZ2dyZWdh dGlvbiBwbGFucy4iKSwKKwkJCU5VTEwsCisJCQlHVUNfRVhQTEFJTgorCQl9LAorCQkmZW5hYmxl X2dyb3VwYWdnLAorCQl0cnVlLAorCQlOVUxMLCBOVUxMLCBOVUxMCisJfSwKIAl7CiAJCXsiZW5h YmxlX21hdGVyaWFsIiwgUEdDX1VTRVJTRVQsIFFVRVJZX1RVTklOR19NRVRIT0QsCiAJCQlnZXR0 ZXh0X25vb3AoIkVuYWJsZXMgdGhlIHBsYW5uZXIncyB1c2Ugb2YgbWF0ZXJpYWxpemF0aW9uLiIp LApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2Ft cGxlIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlCmluZGV4 IDM0MWY4OGFkYzg3Li4wNTE0YzMyNzc2NyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMv bWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2Mv cG9zdGdyZXNxbC5jb25mLnNhbXBsZQpAQCAtNDA4LDYgKzQwOCw3IEBACiAjZW5hYmxlX2JpdG1h cHNjYW4gPSBvbgogI2VuYWJsZV9nYXRoZXJtZXJnZSA9IG9uCiAjZW5hYmxlX2hhc2hhZ2cgPSBv bgorI2VuYWJsZV9ncm91cGFnZyA9IG9uCiAjZW5hYmxlX2hhc2hqb2luID0gb24KICNlbmFibGVf aW5jcmVtZW50YWxfc29ydCA9IG9uCiAjZW5hYmxlX2luZGV4c2NhbiA9IG9uCmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvY29zdC5oIGIvc3JjL2luY2x1ZGUvb3B0aW1pemVyL2Nv c3QuaAppbmRleCBkMzk3ZmUyN2RjMS4uMDk5ZDQxZmQ3YmQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL29wdGltaXplci9jb3N0LmgKKysrIGIvc3JjL2luY2x1ZGUvb3B0aW1pemVyL2Nvc3QuaApA QCAtNTcsNiArNTcsNyBAQCBleHRlcm4gUEdETExJTVBPUlQgYm9vbCBlbmFibGVfdGlkc2NhbjsK IGV4dGVybiBQR0RMTElNUE9SVCBib29sIGVuYWJsZV9zb3J0OwogZXh0ZXJuIFBHRExMSU1QT1JU IGJvb2wgZW5hYmxlX2luY3JlbWVudGFsX3NvcnQ7CiBleHRlcm4gUEdETExJTVBPUlQgYm9vbCBl bmFibGVfaGFzaGFnZzsKK2V4dGVybiBQR0RMTElNUE9SVCBib29sIGVuYWJsZV9ncm91cGFnZzsK IGV4dGVybiBQR0RMTElNUE9SVCBib29sIGVuYWJsZV9uZXN0bG9vcDsKIGV4dGVybiBQR0RMTElN UE9SVCBib29sIGVuYWJsZV9tYXRlcmlhbDsKIGV4dGVybiBQR0RMTElNUE9SVCBib29sIGVuYWJs ZV9tZW1vaXplOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9hZ2dyZWdh dGVzLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvYWdncmVnYXRlcy5vdXQKaW5kZXgg MWYxY2UyMzgwYWYuLjA5MTFjYjMzYzBhIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL2FnZ3JlZ2F0ZXMub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvYWdn cmVnYXRlcy5vdXQKQEAgLTM1ODEsMyArMzU4MSwxMjMgQEAgZHJvcCB0YWJsZSBhZ2dfaGFzaF8x OwogZHJvcCB0YWJsZSBhZ2dfaGFzaF8yOwogZHJvcCB0YWJsZSBhZ2dfaGFzaF8zOwogZHJvcCB0 YWJsZSBhZ2dfaGFzaF80OworLS0gY3JlYXRlIHRhYmxlIHRvIGNoZWNrIGVuYWJsZV9ncm91cGFn ZworQ1JFQVRFIFRBQkxFIHRlc3RfZ3JvdXBhZ2coCisgICAgaWQgc2VyaWFsIHByaW1hcnkga2V5 LAorICAgIGMxIHRleHQsCisgICAgYzIgdGV4dCwKKyAgICBjMyBudW1lcmljKTsKK0lOU0VSVCBJ TlRPIHRlc3RfZ3JvdXBhZ2cgKGMxLCBjMiwgYzMpIFZBTFVFUworKCdhJywgJ0dHRycsIDEwMCks CisoJ2EnLCAnR0dHJywgMTUwKSwKKygnYScsICdycnInLCAyMDApLAorKCdiJywgJ29vbycsIDMw MCksCisoJ2InLCAnb29vJywgMjUwKSwKKygnYicsICd1dXUnLCAxMDApLAorKCdjJywgJ3BwcCcs IDUwMCksCisoJ2MnLCAncHBwJywgNjAwKSwKKygnYycsICdhYWEnLCA1NTApOworQU5BTFlaRTsK Ky0tIGRlZmF1bHQ6IEdyb3VwQWdnIGFuZCBIYXNoQWdnIGFyZSBtaXhlZCBhbmQgc2VsZWN0ZWQK K1NFVCBtYXhfcGFyYWxsZWxfd29ya2VycyB0byAwOworU0VUIG1heF9wYXJhbGxlbF93b3JrZXJz X3Blcl9nYXRoZXIgdG8gMDsKK1NFVCBlbmFibGVfaGFzaGFnZyAgdG8gZGVmYXVsdDsKK1NFVCBl bmFibGVfZ3JvdXBhZ2cgdG8gZGVmYXVsdDsKK0VYUExBSU4oY29zdHMgb2ZmLCBzZXR0aW5ncykK K1NFTEVDVCBjMSwgQVZHKHRvdGFsKQorRlJPTSAoCisgICAgU0VMRUNUIGMxLCBjMiwgU1VNKGMz KSBBUyB0b3RhbAorICAgIEZST00gdGVzdF9ncm91cGFnZworICAgIEdST1VQIEJZIGMxLCBjMgor KSBBUyBzdWIKK0dST1VQIEJZIGMxCitPUkRFUiBCWSBjMTsKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEdyb3VwQWdncmVnYXRlCisgICBHcm91cCBLZXk6IHN1 Yi5jMQorICAgLT4gIFNvcnQKKyAgICAgICAgIFNvcnQgS2V5OiBzdWIuYzEKKyAgICAgICAgIC0+ ICBTdWJxdWVyeSBTY2FuIG9uIHN1YgorICAgICAgICAgICAgICAgLT4gIEhhc2hBZ2dyZWdhdGUK KyAgICAgICAgICAgICAgICAgICAgIEdyb3VwIEtleTogdGVzdF9ncm91cGFnZy5jMSwgdGVzdF9n cm91cGFnZy5jMgorICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHRlc3RfZ3Jv dXBhZ2cKKyBTZXR0aW5nczogbWF4X3BhcmFsbGVsX3dvcmtlcnMgPSAnMCcsIG1heF9wYXJhbGxl bF93b3JrZXJzX3Blcl9nYXRoZXIgPSAnMCcKKyg5IHJvd3MpCisKKy0tIE9ubHkgR3JvdXBBZ2cg aXMgc2VsZWN0ZWQKK3NldCBlbmFibGVfaGFzaGFnZyB0byBvZmY7CitFWFBMQUlOKGNvc3RzIG9m Ziwgc2V0dGluZ3MpCitTRUxFQ1QgYzEsIEFWRyh0b3RhbCkKK0ZST00gKAorICAgIFNFTEVDVCBj MSwgYzIsIFNVTShjMykgQVMgdG90YWwKKyAgICBGUk9NIHRlc3RfZ3JvdXBhZ2cKKyAgICBHUk9V UCBCWSBjMSwgYzIKKykgQVMgc3ViCitHUk9VUCBCWSBjMQorT1JERVIgQlkgYzE7CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBHcm91cEFnZ3JlZ2F0ZQorICAgR3JvdXAgS2V5 OiB0ZXN0X2dyb3VwYWdnLmMxCisgICAtPiAgR3JvdXBBZ2dyZWdhdGUKKyAgICAgICAgIEdyb3Vw IEtleTogdGVzdF9ncm91cGFnZy5jMSwgdGVzdF9ncm91cGFnZy5jMgorICAgICAgICAgLT4gIFNv cnQKKyAgICAgICAgICAgICAgIFNvcnQgS2V5OiB0ZXN0X2dyb3VwYWdnLmMxLCB0ZXN0X2dyb3Vw YWdnLmMyCisgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gdGVzdF9ncm91cGFnZworIFNl dHRpbmdzOiBtYXhfcGFyYWxsZWxfd29ya2VycyA9ICcwJywgbWF4X3BhcmFsbGVsX3dvcmtlcnNf cGVyX2dhdGhlciA9ICcwJywgZW5hYmxlX2hhc2hhZ2cgPSAnb2ZmJworKDggcm93cykKKworLS0g T25seSBIYXNoQWdnIGlzIHNlbGVjdGVkCitTRVQgZW5hYmxlX2hhc2hhZ2cgIHRvIG9uOworU0VU IGVuYWJsZV9ncm91cGFnZyB0byBvZmY7CitFWFBMQUlOKGNvc3RzIG9mZiwgc2V0dGluZ3MpCitT RUxFQ1QgYzEsIEFWRyh0b3RhbCkKK0ZST00gKAorICAgIFNFTEVDVCBjMSwgYzIsIFNVTShjMykg QVMgdG90YWwKKyAgICBGUk9NIHRlc3RfZ3JvdXBhZ2cKKyAgICBHUk9VUCBCWSBjMSwgYzIKKykg QVMgc3ViCitHUk9VUCBCWSBjMQorT1JERVIgQlkgYzE7CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIFNvcnQKKyAgIFNvcnQgS2V5OiB0ZXN0X2dyb3VwYWdnLmMxCisgICAt PiAgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgR3JvdXAgS2V5OiB0ZXN0X2dyb3VwYWdnLmMxCisg ICAgICAgICAtPiAgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0ZXN0 X2dyb3VwYWdnLmMxLCB0ZXN0X2dyb3VwYWdnLmMyCisgICAgICAgICAgICAgICAtPiAgU2VxIFNj YW4gb24gdGVzdF9ncm91cGFnZworIFNldHRpbmdzOiBtYXhfcGFyYWxsZWxfd29ya2VycyA9ICcw JywgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhlciA9ICcwJywgZW5hYmxlX2dyb3VwYWdn ID0gJ29mZicKKyg4IHJvd3MpCisKKy0tIE9ubHkgR3JvdXBBZ2cgaXMgc2VsZWN0ZWQgYXMgYSBm YWxsYmFjaworU0VUIGVuYWJsZV9oYXNoYWdnICB0byBvZmY7CitTRVQgZW5hYmxlX2dyb3VwYWdn IHRvIG9mZjsKK0VYUExBSU4oY29zdHMgb2ZmLCBzZXR0aW5ncykKK1NFTEVDVCBjMSwgQVZHKHRv dGFsKQorRlJPTSAoCisgICAgU0VMRUNUIGMxLCBjMiwgU1VNKGMzKSBBUyB0b3RhbAorICAgIEZS T00gdGVzdF9ncm91cGFnZworICAgIEdST1VQIEJZIGMxLCBjMgorKSBBUyBzdWIKK0dST1VQIEJZ IGMxCitPUkRFUiBCWSBjMTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgR3JvdXBBZ2dy ZWdhdGUKKyAgIEdyb3VwIEtleTogdGVzdF9ncm91cGFnZy5jMQorICAgLT4gIEdyb3VwQWdncmVn YXRlCisgICAgICAgICBHcm91cCBLZXk6IHRlc3RfZ3JvdXBhZ2cuYzEsIHRlc3RfZ3JvdXBhZ2cu YzIKKyAgICAgICAgIC0+ICBTb3J0CisgICAgICAgICAgICAgICBTb3J0IEtleTogdGVzdF9ncm91 cGFnZy5jMSwgdGVzdF9ncm91cGFnZy5jMgorICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9u IHRlc3RfZ3JvdXBhZ2cKKyBTZXR0aW5nczogbWF4X3BhcmFsbGVsX3dvcmtlcnMgPSAnMCcsIG1h eF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAnMCcsIGVuYWJsZV9oYXNoYWdnID0gJ29m ZicsIGVuYWJsZV9ncm91cGFnZyA9ICdvZmYnCisoOCByb3dzKQorCitSRVNFVCBlbmFibGVfaGFz aGFnZzsKK1JFU0VUIGVuYWJsZV9ncm91cGFnZzsKK1JFU0VUIG1heF9wYXJhbGxlbF93b3JrZXJz OworUkVTRVQgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhlcjsKK0RST1AgVEFCTEUgdGVz dF9ncm91cGFnZzsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3lzdmll d3Mub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zeXN2aWV3cy5vdXQKaW5kZXggODMy MjhjZmNhMjkuLmYxMDM3MWQ2ZTI2IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL3N5c3ZpZXdzLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N5c3ZpZXdz Lm91dApAQCAtMTUzLDYgKzE1Myw3IEBAIHNlbGVjdCBuYW1lLCBzZXR0aW5nIGZyb20gcGdfc2V0 dGluZ3Mgd2hlcmUgbmFtZSBsaWtlICdlbmFibGUlJzsKICBlbmFibGVfZGlzdGluY3RfcmVvcmRl cmluZyAgICAgfCBvbgogIGVuYWJsZV9nYXRoZXJtZXJnZSAgICAgICAgICAgICB8IG9uCiAgZW5h YmxlX2dyb3VwX2J5X3Jlb3JkZXJpbmcgICAgIHwgb24KKyBlbmFibGVfZ3JvdXBhZ2cgICAgICAg ICAgICAgICAgfCBvbgogIGVuYWJsZV9oYXNoYWdnICAgICAgICAgICAgICAgICB8IG9uCiAgZW5h YmxlX2hhc2hqb2luICAgICAgICAgICAgICAgIHwgb24KICBlbmFibGVfaW5jcmVtZW50YWxfc29y dCAgICAgICAgfCBvbgpAQCAtMTcyLDcgKzE3Myw3IEBAIHNlbGVjdCBuYW1lLCBzZXR0aW5nIGZy b20gcGdfc2V0dGluZ3Mgd2hlcmUgbmFtZSBsaWtlICdlbmFibGUlJzsKICBlbmFibGVfc2Vxc2Nh biAgICAgICAgICAgICAgICAgfCBvbgogIGVuYWJsZV9zb3J0ICAgICAgICAgICAgICAgICAgICB8 IG9uCiAgZW5hYmxlX3RpZHNjYW4gICAgICAgICAgICAgICAgIHwgb24KLSgyNCByb3dzKQorKDI1 IHJvd3MpCiAKIC0tIFRoZXJlIGFyZSBhbHdheXMgd2FpdCBldmVudCBkZXNjcmlwdGlvbnMgZm9y IHZhcmlvdXMgdHlwZXMuICBJbmplY3Rpb25Qb2ludAogLS0gbWF5IGJlIHByZXNlbnQgb3IgYWJz ZW50LCBkZXBlbmRpbmcgb24gaGlzdG9yeSBzaW5jZSBsYXN0IHBvc3RtYXN0ZXIgc3RhcnQuCmRp ZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9hZ2dyZWdhdGVzLnNxbCBiL3NyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL2FnZ3JlZ2F0ZXMuc3FsCmluZGV4IDI3N2I0YjE5OGNjLi45MjQ5M2VhZDFm OSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvYWdncmVnYXRlcy5zcWwKKysrIGIv c3JjL3Rlc3QvcmVncmVzcy9zcWwvYWdncmVnYXRlcy5zcWwKQEAgLTE2NDQsMyArMTY0NCw4NCBA QCBkcm9wIHRhYmxlIGFnZ19oYXNoXzE7CiBkcm9wIHRhYmxlIGFnZ19oYXNoXzI7CiBkcm9wIHRh YmxlIGFnZ19oYXNoXzM7CiBkcm9wIHRhYmxlIGFnZ19oYXNoXzQ7CisKKy0tIGNyZWF0ZSB0YWJs ZSB0byBjaGVjayBlbmFibGVfZ3JvdXBhZ2cKK0NSRUFURSBUQUJMRSB0ZXN0X2dyb3VwYWdnKAor ICAgIGlkIHNlcmlhbCBwcmltYXJ5IGtleSwKKyAgICBjMSB0ZXh0LAorICAgIGMyIHRleHQsCisg ICAgYzMgbnVtZXJpYyk7CitJTlNFUlQgSU5UTyB0ZXN0X2dyb3VwYWdnIChjMSwgYzIsIGMzKSBW QUxVRVMKKygnYScsICdHR0cnLCAxMDApLAorKCdhJywgJ0dHRycsIDE1MCksCisoJ2EnLCAncnJy JywgMjAwKSwKKygnYicsICdvb28nLCAzMDApLAorKCdiJywgJ29vbycsIDI1MCksCisoJ2InLCAn dXV1JywgMTAwKSwKKygnYycsICdwcHAnLCA1MDApLAorKCdjJywgJ3BwcCcsIDYwMCksCisoJ2Mn LCAnYWFhJywgNTUwKTsKK0FOQUxZWkU7CisKKy0tIGRlZmF1bHQ6IEdyb3VwQWdnIGFuZCBIYXNo QWdnIGFyZSBtaXhlZCBhbmQgc2VsZWN0ZWQKK1NFVCBtYXhfcGFyYWxsZWxfd29ya2VycyB0byAw OworU0VUIG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgdG8gMDsKK1NFVCBlbmFibGVf aGFzaGFnZyAgdG8gZGVmYXVsdDsKK1NFVCBlbmFibGVfZ3JvdXBhZ2cgdG8gZGVmYXVsdDsKKwor RVhQTEFJTihjb3N0cyBvZmYsIHNldHRpbmdzKQorU0VMRUNUIGMxLCBBVkcodG90YWwpCitGUk9N ICgKKyAgICBTRUxFQ1QgYzEsIGMyLCBTVU0oYzMpIEFTIHRvdGFsCisgICAgRlJPTSB0ZXN0X2dy b3VwYWdnCisgICAgR1JPVVAgQlkgYzEsIGMyCispIEFTIHN1YgorR1JPVVAgQlkgYzEKK09SREVS IEJZIGMxOworCistLSBPbmx5IEdyb3VwQWdnIGlzIHNlbGVjdGVkCitzZXQgZW5hYmxlX2hhc2hh Z2cgdG8gb2ZmOworCitFWFBMQUlOKGNvc3RzIG9mZiwgc2V0dGluZ3MpCitTRUxFQ1QgYzEsIEFW Ryh0b3RhbCkKK0ZST00gKAorICAgIFNFTEVDVCBjMSwgYzIsIFNVTShjMykgQVMgdG90YWwKKyAg ICBGUk9NIHRlc3RfZ3JvdXBhZ2cKKyAgICBHUk9VUCBCWSBjMSwgYzIKKykgQVMgc3ViCitHUk9V UCBCWSBjMQorT1JERVIgQlkgYzE7CisKKy0tIE9ubHkgSGFzaEFnZyBpcyBzZWxlY3RlZAorU0VU IGVuYWJsZV9oYXNoYWdnICB0byBvbjsKK1NFVCBlbmFibGVfZ3JvdXBhZ2cgdG8gb2ZmOworCitF WFBMQUlOKGNvc3RzIG9mZiwgc2V0dGluZ3MpCitTRUxFQ1QgYzEsIEFWRyh0b3RhbCkKK0ZST00g KAorICAgIFNFTEVDVCBjMSwgYzIsIFNVTShjMykgQVMgdG90YWwKKyAgICBGUk9NIHRlc3RfZ3Jv dXBhZ2cKKyAgICBHUk9VUCBCWSBjMSwgYzIKKykgQVMgc3ViCitHUk9VUCBCWSBjMQorT1JERVIg QlkgYzE7CisKKy0tIE9ubHkgR3JvdXBBZ2cgaXMgc2VsZWN0ZWQgYXMgYSBmYWxsYmFjaworU0VU IGVuYWJsZV9oYXNoYWdnICB0byBvZmY7CitTRVQgZW5hYmxlX2dyb3VwYWdnIHRvIG9mZjsKKwor RVhQTEFJTihjb3N0cyBvZmYsIHNldHRpbmdzKQorU0VMRUNUIGMxLCBBVkcodG90YWwpCitGUk9N ICgKKyAgICBTRUxFQ1QgYzEsIGMyLCBTVU0oYzMpIEFTIHRvdGFsCisgICAgRlJPTSB0ZXN0X2dy b3VwYWdnCisgICAgR1JPVVAgQlkgYzEsIGMyCispIEFTIHN1YgorR1JPVVAgQlkgYzEKK09SREVS IEJZIGMxOworCitSRVNFVCBlbmFibGVfaGFzaGFnZzsKK1JFU0VUIGVuYWJsZV9ncm91cGFnZzsK K1JFU0VUIG1heF9wYXJhbGxlbF93b3JrZXJzOworUkVTRVQgbWF4X3BhcmFsbGVsX3dvcmtlcnNf cGVyX2dhdGhlcjsKK0RST1AgVEFCTEUgdGVzdF9ncm91cGFnZzsKLS0gCjIuNDMuNQoK --0000000000000a6414063747b84b--