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 1qyYES-0097Y6-A7 for pgsql-bugs@arkaria.postgresql.org; Thu, 02 Nov 2023 13:59:36 +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 1qyYEQ-00DQoJ-Rn for pgsql-bugs@arkaria.postgresql.org; Thu, 02 Nov 2023 13:59:34 +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 1qyXAA-00DEi6-Dr for pgsql-bugs@lists.postgresql.org; Thu, 02 Nov 2023 12:51:06 +0000 Received: from smtp-outgoing-1702.laposte.net ([160.92.124.100]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1qyXA5-004KNj-JY for pgsql-bugs@lists.postgresql.org; Thu, 02 Nov 2023 12:51:05 +0000 X-mail-filterd: {"version":"1.7.3","queueID":"4SLkJJ5ftVzdZLZ","contextId": "7ef39528-dff7-4ba5-b4f2-ff120aed941b"} Received: from outgoing-mail.laposte.net (localhost.localdomain [127.0.0.1]) by mlpnf0106.laposte.net (SMTP Server) with ESMTP id 4SLkJJ5ftVzdZLZ; Thu, 2 Nov 2023 13:50:56 +0100 (CET) X-mail-filterd: {"version":"1.7.3","queueID":"4SLkJH70LwzdZLM","contextId": "e1cbc938-688b-486c-9e1d-484aa5c06140"} X-lpn-mailing: LEGIT X-lpn-spamrating: 36 X-lpn-spamlevel: not-spam Received: from [192.168.1.108] (92-184-100-37.mobile.fr.orangecustomers.net [92.184.100.37]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mlpnf0106.laposte.net (SMTP Server) with ESMTPSA id 4SLkJH70LwzdZLM; Thu, 2 Nov 2023 13:50:55 +0100 (CET) Content-Type: multipart/mixed; boundary="------------GBgWdSYQ6PpyHo3sz7QwbJqM" Message-ID: Date: Thu, 2 Nov 2023 13:50:55 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: BUG #18167: cannot create partitioned tables when default_tablespace is set To: Alvaro Herrera , pgsql-hackers@lists.postgresql.org Cc: pgsql-bugs@lists.postgresql.org, tender wang References: <18167-fcc9f9f33cddf04d@postgresql.org> <202310250745.x6mzvzbsk4bz@alvherre.pgsql> Content-Language: fr-FR From: Marius RAICU In-Reply-To: DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=laposte.net; s=lpn-wlmd; t=1698929460; bh=LCogqC8YW3eVxDUAp497U3AxXrcWCA5bsmSbQ/UfLrE=; h=Content-Type:Message-ID:Date:MIME-Version:Subject:To:Cc:References:Content-Language:From:In-Reply-To; b=jjiACfdBgel9/GkbAgubvFcEg62lw5Pz/NEdUo5I3v4e6yxXLf2gKwz8ogpUsbSx18qDSKy2GEKI18Ny/JT0SYIPJl/EcPsfxngmJ6N8gSSRyOtYTmuTc3jF56in/JxZ7K9P7OE1z5lnlJIpDdpXgIbiUnLddWGqxeKeNwv96YY3WF3rfLiUzwIFx/e4ww9iXYeMhiMkNtvsVnZThGr0FLN5C2Z90zvVTuYE1NmQi/gTWqk58yACbPIif0OMwEuNZouI7cRGFvVvCgyYVgXKABhi5c+YGr98Bn3iLqwOAGdXiPqCREnCrm49VZD03vB+Y6e3ph68/cBrkGAmRy9Kbw==; List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------GBgWdSYQ6PpyHo3sz7QwbJqM Content-Type: multipart/alternative; boundary="------------trjFoCo42gGcn3m0VQmViKeG" --------------trjFoCo42gGcn3m0VQmViKeG Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: quoted-printable Hello Alvaro, all, I have done some research regarding this bug. Basically, we forbid the creation of partitioned tables and indexes if a=20 default_tablespace is specified in postgresql.conf. In tablespace.c, the comment says: "Don't allow specifying that when creating a partitioned table, however,=20 since the result is confusing." I did not see why the result is confusing. I just disabled the checks in tablespace.c, tablecmds.c and indexcmds.c=20 and now it works. I modified the expected result in tests, and the tests are passing too. See the attached patch. Regards, Marius Raicu On 10/25/23 11:58, tender wang wrote: > > > Alvaro Herrera =E4=BA=8E2023=E5=B9=B410=E6=9C= =8825=E6=97=A5=E5=91=A8=E4=B8=89 17:41=E5=86=99=E9=81=93=EF=BC=9A > > On 2023-Oct-24, PG Bug reporting form wrote: > > > marius@[local]:5434/postgres=3D# show default_tablespace; > >=C2=A0 default_tablespace > > -------------------- > >=C2=A0 tblspc1 > > (1 row) > > > > marius@[local]:5434/postgres=3D# create tablespace tblspc1 locati= on > > '/home/marius/pgcode/tblspc1'; > > CREATE TABLESPACE > > marius@[local]:5434/postgres=3D# create database test tablespace > tblspc1; > > CREATE DATABASE > > marius@[local]:5434/postgres=3D# \c test > > You are now connected to database "test" as user "marius". > > marius@[local]:5434/test=3D# create table toto(id numeric) > partition by > > list(id); > > ERROR:=C2=A0 cannot specify default tablespace for partitioned re= lations > > Oh, so the problem here is that *both* default_tablespace and the > database's tablespace are set, and then a partitioned table creatio= n > fails when it doesn't specify any tablespace?=C2=A0 That indeed sou= nds > like a > bug.=C2=A0 I'll have a look, thanks.=C2=A0 I'm surprised it took so= long for > this > to be reported. > > Oh, interesting issue! > I found another two case: > First: default_tablespace not set and create part rel failed > postgres=3D# create tablespace tbsp3 location '/tender/pgsql/tbsp3'; > CREATE TABLESPACE > postgres=3D# create database test3 tablespace tbsp3; > CREATE DATABASE > postgres=3D# \c test3 > You are now connected to database "test3" as user "gpadmin". > test3=3D# show default_tablespace ; > =C2=A0default_tablespace > -------------------- > > (1 row) > > test3=3D# create table part1(a int) partition by list(a) tablespace tbs= p3; > ERROR: =C2=A0cannot specify default tablespace for partitioned relation= s > > Second: default_tablespace and database's tablespace both set, but=20 > part rel created > test3=3D# set default_tablespace =3D tbsp2; > SET > test3=3D# create table part1(a int) partition by list(a); > CREATE TABLE > > I'm not sure if the above two cases are a bug. If the document could=20 > provide detailed explanations, that would be great. > > --=20 > =C3=81lvaro Herrera=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A048=C2=B001'N 7=C2=B057'E=C2=A0 =E2=80=94 > https://www.EnterpriseDB.com/ > "Someone said that it is at least an order of magnitude more work > to do > production software than a prototype. I think he is wrong by at lea= st > an order of magnitude."=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (Brian Kernig= han) > > > > --------------trjFoCo42gGcn3m0VQmViKeG Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable

Hello Alvaro, all,

I have done some research regarding this bug.

Basically, we forbid the creation of partitioned tables and indexes if a default_tablespace is specified in postgresql.conf.

In tablespace.c, the comment says:

"Don't allow specifying that when creating a partitioned table, however, since the result is confusing."

I did not see why the result is confusing.

I just disabled the checks in tablespace.c, tablecmds.c and indexcmds.c and now it works.

I modified the expected result in tests, and the tests are passing too.

See the attached patch.

Regards,

Marius Raicu

On 10/25/23 11:58, tender wang wrote:<= br>


Alvaro Herrera <al= vherre@alvh.no-ip.org> =E4=BA=8E2023=E5=B9=B410=E6=9C=8825=E6=97=A5=E5=91=A8=E4=B8=89= 17:41=E5=86=99=E9=81=93=EF=BC=9A
On 2023-Oct-24, PG Bug reporting form wrote:

> marius@[local]:5434/postgres=3D# show default_tablespace= ;
>=C2=A0 default_tablespace
> --------------------
>=C2=A0 tblspc1
> (1 row)
>
> marius@[local]:5434/postgres=3D# create tablespace tblspc1 location
> '/home/marius/pgcode/tblspc1';
> CREATE TABLESPACE
> marius@[local]:5434/postgres=3D# create database test tablespace tblspc1;
> CREATE DATABASE
> marius@[local]:5434/postgres=3D# \c test
> You are now connected to database "test" as user "marius".
> marius@[local]:5434/test=3D# create table toto(id numeric) partition by
> list(id);
> ERROR:=C2=A0 cannot specify default tablespace for partitioned relations

Oh, so the problem here is that *both* default_tablespace and the
database's tablespace are set, and then a partitioned table creation
fails when it doesn't specify any tablespace?=C2=A0 That inde= ed sounds like a
bug.=C2=A0 I'll have a look, thanks.=C2=A0 I'm surprised it t= ook so long for this
to be reported.
=C2=A0
Oh, interesting issue!
I found another two case:
First: default_tablespace not set and create part rel failed
postgres=3D# create tablespace tbsp3 location '/tender/pgsql/tbsp3';
CREATE TABLESPACE
postgres=3D# create database test3 tablespace tbsp3;
CREATE DATABASE
postgres=3D# \c test3
You are now connected to database "test3" as user "gpadmin".<= br> test3=3D# show default_tablespace ;
=C2=A0default_tablespace
--------------------
=C2=A0
(1 row)

test3=3D# create table part1(a int) partition by list(a) tablespace tbsp3;
ERROR: =C2=A0cannot specify default tablespace for partitione= d relations

Second: default_tablespace and database's tablespace both set, but part rel created
test3=3D# set default_tablespace =3D tbsp2;
SET
test3=3D# create table part1(a int) partition by list(a);
CREATE TABLE

I'm not sure if the above two cases are a bug. If the document could provide detailed explanations, that would be great.

=C2=A0
--
=C3=81lvaro Herrera=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A048=C2=B001'N 7=C2=B057'E=C2=A0 =E2=80=94=C2=A0 https://www.Ente= rpriseDB.com/
"Someone said that it is at least an order of magnitude more work to do
production software than a prototype. I think he is wrong by at least
an order of magnitude."=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (Brian Kernighan)




--------------trjFoCo42gGcn3m0VQmViKeG-- --------------GBgWdSYQ6PpyHo3sz7QwbJqM Content-Type: text/x-patch; charset=UTF-8; name="partitioned_and_tablespaces.patch" Content-Disposition: attachment; filename="partitioned_and_tablespaces.patch" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jIGIvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMKaW5kZXggYzE2MGQ4YTMwMS4uYWZiYTMwM2Ux MyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMKKysrIGIv c3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMKQEAgLTc1OCwxMCArNzU4LDEyIEBA IERlZmluZUluZGV4KE9pZCB0YWJsZUlkLAogCWlmIChzdG10LT50YWJsZVNwYWNlKQogCXsK IAkJdGFibGVzcGFjZUlkID0gZ2V0X3RhYmxlc3BhY2Vfb2lkKHN0bXQtPnRhYmxlU3BhY2Us IGZhbHNlKTsKKwkJLyoKIAkJaWYgKHBhcnRpdGlvbmVkICYmIHRhYmxlc3BhY2VJZCA9PSBN eURhdGFiYXNlVGFibGVTcGFjZSkKIAkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCShlcnJjb2Rl KEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKIAkJCQkJIGVycm1zZygiY2Fubm90 IHNwZWNpZnkgZGVmYXVsdCB0YWJsZXNwYWNlIGZvciBwYXJ0aXRpb25lZCByZWxhdGlvbnMi KSkpOworCQkqLwogCX0KIAllbHNlCiAJewpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29t bWFuZHMvdGFibGVjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwpp bmRleCA0MTZhOThlN2NlLi4xYTUwYzljNDc5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9j b21tYW5kcy90YWJsZWNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNt ZHMuYwpAQCAtNzkwLDExICs3OTAsMTIgQEAgRGVmaW5lUmVsYXRpb24oQ3JlYXRlU3RtdCAq c3RtdCwgY2hhciByZWxraW5kLCBPaWQgb3duZXJJZCwKIAlpZiAoc3RtdC0+dGFibGVzcGFj ZW5hbWUpCiAJewogCQl0YWJsZXNwYWNlSWQgPSBnZXRfdGFibGVzcGFjZV9vaWQoc3RtdC0+ dGFibGVzcGFjZW5hbWUsIGZhbHNlKTsKLQorICAgICAgIC8qCiAJCWlmIChwYXJ0aXRpb25l ZCAmJiB0YWJsZXNwYWNlSWQgPT0gTXlEYXRhYmFzZVRhYmxlU3BhY2UpCiAJCQllcmVwb3J0 KEVSUk9SLAogCQkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCks CiAJCQkJCSBlcnJtc2coImNhbm5vdCBzcGVjaWZ5IGRlZmF1bHQgdGFibGVzcGFjZSBmb3Ig cGFydGl0aW9uZWQgcmVsYXRpb25zIikpKTsKKwkJKi8KIAl9CiAJZWxzZSBpZiAoc3RtdC0+ cGFydGJvdW5kKQogCXsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxl c3BhY2UuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlc3BhY2UuYwppbmRleCAxM2Iw ZGVlMTQ2Li5mNzNjNmExMjg2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy90 YWJsZXNwYWNlLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVzcGFjZS5jCkBA IC0xMTMzLDkgKzExMzMsNyBAQCBjaGVja19kZWZhdWx0X3RhYmxlc3BhY2UoY2hhciAqKm5l d3ZhbCwgdm9pZCAqKmV4dHJhLCBHdWNTb3VyY2Ugc291cmNlKQogICogR2V0RGVmYXVsdFRh Ymxlc3BhY2UgLS0gZ2V0IHRoZSBPSUQgb2YgdGhlIGN1cnJlbnQgZGVmYXVsdCB0YWJsZXNw YWNlCiAgKgogICogVGVtcG9yYXJ5IG9iamVjdHMgaGF2ZSBkaWZmZXJlbnQgZGVmYXVsdCB0 YWJsZXNwYWNlcywgaGVuY2UgdGhlCi0gKiByZWxwZXJzaXN0ZW5jZSBwYXJhbWV0ZXIgbXVz dCBiZSBzcGVjaWZpZWQuICBBbHNvLCBmb3IgcGFydGl0aW9uZWQgdGFibGVzLAotICogd2Ug ZGlzYWxsb3cgc3BlY2lmeWluZyB0aGUgZGF0YWJhc2UgZGVmYXVsdCwgc28gdGhhdCBuZWVk cyB0byBiZSBzcGVjaWZpZWQKLSAqIHRvby4KKyAqIHJlbHBlcnNpc3RlbmNlIHBhcmFtZXRl ciBtdXN0IGJlIHNwZWNpZmllZC4KICAqCiAgKiBNYXkgcmV0dXJuIEludmFsaWRPaWQgdG8g aW5kaWNhdGUgInVzZSB0aGUgZGF0YWJhc2UncyBkZWZhdWx0IHRhYmxlc3BhY2UiLgogICoK QEAgLTExNzIsMTYgKzExNzAsMTUgQEAgR2V0RGVmYXVsdFRhYmxlc3BhY2UoY2hhciByZWxw ZXJzaXN0ZW5jZSwgYm9vbCBwYXJ0aXRpb25lZCkKIAogCS8qCiAJICogQWxsb3cgZXhwbGlj aXQgc3BlY2lmaWNhdGlvbiBvZiBkYXRhYmFzZSdzIGRlZmF1bHQgdGFibGVzcGFjZSBpbgot CSAqIGRlZmF1bHRfdGFibGVzcGFjZSB3aXRob3V0IHRyaWdnZXJpbmcgcGVybWlzc2lvbnMg Y2hlY2tzLiAgRG9uJ3QgYWxsb3cKLQkgKiBzcGVjaWZ5aW5nIHRoYXQgd2hlbiBjcmVhdGlu ZyBhIHBhcnRpdGlvbmVkIHRhYmxlLCBob3dldmVyLCBzaW5jZSB0aGUKLQkgKiByZXN1bHQg aXMgY29uZnVzaW5nLgorCSAqIGRlZmF1bHRfdGFibGVzcGFjZSB3aXRob3V0IHRyaWdnZXJp bmcgcGVybWlzc2lvbnMgY2hlY2tzLgogCSAqLwogCWlmIChyZXN1bHQgPT0gTXlEYXRhYmFz ZVRhYmxlU3BhY2UpCiAJewotCQlpZiAocGFydGl0aW9uZWQpCisJLyoJaWYgKHBhcnRpdGlv bmVkKQogCQkJZXJlcG9ydChFUlJPUiwKIAkJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJF X05PVF9TVVBQT1JURUQpLAogCQkJCQkgZXJybXNnKCJjYW5ub3Qgc3BlY2lmeSBkZWZhdWx0 IHRhYmxlc3BhY2UgZm9yIHBhcnRpdGlvbmVkIHJlbGF0aW9ucyIpKSk7CisJKi8JCQkJCSAK IAkJcmVzdWx0ID0gSW52YWxpZE9pZDsKIAl9CiAJcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdp dCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdGFibGVzcGFjZS5vdXQgYi9zcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL3RhYmxlc3BhY2Uub3V0CmluZGV4IDlhYWJiODUzNDkuLmI5 MDcwZDI2OWYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdGFibGVz cGFjZS5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC90YWJsZXNwYWNlLm91 dApAQCAtMzk2LDE3ICszOTYsMTQgQEAgUGFydGl0aW9uczogdGVzdHNjaGVtYS5wYXJ0MV9h X2lkeCwKICAgICAgICAgICAgIHRlc3RzY2hlbWEucGFydDJfYV9pZHgKIFRhYmxlc3BhY2U6 ICJyZWdyZXNzX3RibHNwYWNlIgogCi0tLSBwYXJ0aXRpb25lZCByZWxzIGNhbm5vdCBzcGVj aWZ5IHRoZSBkZWZhdWx0IHRhYmxlc3BhY2UuICBUaGVzZSBmYWlsOgorLS0gcGFydGl0aW9u ZWQgcmVscyBjYW4gc3BlY2lmeSB0aGUgZGVmYXVsdCB0YWJsZXNwYWNlLiAgVGhlc2Ugc2hv dWxkIG5vdCBmYWlsOgogQ1JFQVRFIFRBQkxFIHRlc3RzY2hlbWEuZGZsdCAoYSBpbnQgUFJJ TUFSWSBLRVkpIFBBUlRJVElPTiBCWSBMSVNUIChhKSBUQUJMRVNQQUNFIHBnX2RlZmF1bHQ7 Ci1FUlJPUjogIGNhbm5vdCBzcGVjaWZ5IGRlZmF1bHQgdGFibGVzcGFjZSBmb3IgcGFydGl0 aW9uZWQgcmVsYXRpb25zCi1DUkVBVEUgVEFCTEUgdGVzdHNjaGVtYS5kZmx0IChhIGludCBQ UklNQVJZIEtFWSBVU0lORyBJTkRFWCBUQUJMRVNQQUNFIHBnX2RlZmF1bHQpIFBBUlRJVElP TiBCWSBMSVNUIChhKTsKLUVSUk9SOiAgY2Fubm90IHNwZWNpZnkgZGVmYXVsdCB0YWJsZXNw YWNlIGZvciBwYXJ0aXRpb25lZCByZWxhdGlvbnMKK0NSRUFURSBUQUJMRSB0ZXN0c2NoZW1h LmRmbHQyIChhIGludCBQUklNQVJZIEtFWSBVU0lORyBJTkRFWCBUQUJMRVNQQUNFIHBnX2Rl ZmF1bHQpIFBBUlRJVElPTiBCWSBMSVNUIChhKTsKIFNFVCBkZWZhdWx0X3RhYmxlc3BhY2Ug VE8gJ3BnX2RlZmF1bHQnOwotQ1JFQVRFIFRBQkxFIHRlc3RzY2hlbWEuZGZsdCAoYSBpbnQg UFJJTUFSWSBLRVkpIFBBUlRJVElPTiBCWSBMSVNUIChhKSBUQUJMRVNQQUNFIHJlZ3Jlc3Nf dGJsc3BhY2U7Ci1FUlJPUjogIGNhbm5vdCBzcGVjaWZ5IGRlZmF1bHQgdGFibGVzcGFjZSBm b3IgcGFydGl0aW9uZWQgcmVsYXRpb25zCi1DUkVBVEUgVEFCTEUgdGVzdHNjaGVtYS5kZmx0 IChhIGludCBQUklNQVJZIEtFWSBVU0lORyBJTkRFWCBUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJs c3BhY2UpIFBBUlRJVElPTiBCWSBMSVNUIChhKTsKLUVSUk9SOiAgY2Fubm90IHNwZWNpZnkg ZGVmYXVsdCB0YWJsZXNwYWNlIGZvciBwYXJ0aXRpb25lZCByZWxhdGlvbnMKLS0tIGJ1dCB0 aGVzZSB3b3JrOgorQ1JFQVRFIFRBQkxFIHRlc3RzY2hlbWEuZGZsdDMgKGEgaW50IFBSSU1B UlkgS0VZKSBQQVJUSVRJT04gQlkgTElTVCAoYSkgVEFCTEVTUEFDRSByZWdyZXNzX3RibHNw YWNlOworQ1JFQVRFIFRBQkxFIHRlc3RzY2hlbWEuZGZsdDQgKGEgaW50IFBSSU1BUlkgS0VZ IFVTSU5HIElOREVYIFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFjZSkgUEFSVElUSU9OIEJZ IExJU1QgKGEpOworRFJPUCBUQUJMRSB0ZXN0c2NoZW1hLmRmbHQsIHRlc3RzY2hlbWEuZGZs dDIsIHRlc3RzY2hlbWEuZGZsdDMsIHRlc3RzY2hlbWEuZGZsdDQ7CistLSBhbmQgdGhlc2Ug d29yazoKIENSRUFURSBUQUJMRSB0ZXN0c2NoZW1hLmRmbHQgKGEgaW50IFBSSU1BUlkgS0VZ IFVTSU5HIElOREVYIFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFjZSkgUEFSVElUSU9OIEJZ IExJU1QgKGEpIFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFjZTsKIFNFVCBkZWZhdWx0X3Rh Ymxlc3BhY2UgVE8gJyc7CiBDUkVBVEUgVEFCTEUgdGVzdHNjaGVtYS5kZmx0MiAoYSBpbnQg UFJJTUFSWSBLRVkpIFBBUlRJVElPTiBCWSBMSVNUIChhKTsKZGlmZiAtLWdpdCBhL3NyYy90 ZXN0L3JlZ3Jlc3Mvc3FsL3RhYmxlc3BhY2Uuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwv dGFibGVzcGFjZS5zcWwKaW5kZXggZDI3NGQ5NjE1ZS4uN2JkMmI3MmE2OSAxMDA2NDQKLS0t IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvdGFibGVzcGFjZS5zcWwKKysrIGIvc3JjL3Rlc3Qv cmVncmVzcy9zcWwvdGFibGVzcGFjZS5zcWwKQEAgLTIzMSwxMyArMjMxLDE0IEBAIFNFTEVD VCByZWxuYW1lLCBzcGNuYW1lIEZST00gcGdfY2F0YWxvZy5wZ190YWJsZXNwYWNlIHQsIHBn X2NhdGFsb2cucGdfY2xhc3MgYwogXGQgdGVzdHNjaGVtYS5wYXJ0X2FfaWR4CiBcZCsgdGVz dHNjaGVtYS5wYXJ0X2FfaWR4CiAKLS0tIHBhcnRpdGlvbmVkIHJlbHMgY2Fubm90IHNwZWNp ZnkgdGhlIGRlZmF1bHQgdGFibGVzcGFjZS4gIFRoZXNlIGZhaWw6CistLSBwYXJ0aXRpb25l ZCByZWxzIGNhbiBzcGVjaWZ5IHRoZSBkZWZhdWx0IHRhYmxlc3BhY2UuICBUaGVzZSBzaG91 bGQgbm90IGZhaWw6CiBDUkVBVEUgVEFCTEUgdGVzdHNjaGVtYS5kZmx0IChhIGludCBQUklN QVJZIEtFWSkgUEFSVElUSU9OIEJZIExJU1QgKGEpIFRBQkxFU1BBQ0UgcGdfZGVmYXVsdDsK LUNSRUFURSBUQUJMRSB0ZXN0c2NoZW1hLmRmbHQgKGEgaW50IFBSSU1BUlkgS0VZIFVTSU5H IElOREVYIFRBQkxFU1BBQ0UgcGdfZGVmYXVsdCkgUEFSVElUSU9OIEJZIExJU1QgKGEpOwor Q1JFQVRFIFRBQkxFIHRlc3RzY2hlbWEuZGZsdDIgKGEgaW50IFBSSU1BUlkgS0VZIFVTSU5H IElOREVYIFRBQkxFU1BBQ0UgcGdfZGVmYXVsdCkgUEFSVElUSU9OIEJZIExJU1QgKGEpOwog U0VUIGRlZmF1bHRfdGFibGVzcGFjZSBUTyAncGdfZGVmYXVsdCc7Ci1DUkVBVEUgVEFCTEUg dGVzdHNjaGVtYS5kZmx0IChhIGludCBQUklNQVJZIEtFWSkgUEFSVElUSU9OIEJZIExJU1Qg KGEpIFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFjZTsKLUNSRUFURSBUQUJMRSB0ZXN0c2No ZW1hLmRmbHQgKGEgaW50IFBSSU1BUlkgS0VZIFVTSU5HIElOREVYIFRBQkxFU1BBQ0UgcmVn cmVzc190YmxzcGFjZSkgUEFSVElUSU9OIEJZIExJU1QgKGEpOwotLS0gYnV0IHRoZXNlIHdv cms6CitDUkVBVEUgVEFCTEUgdGVzdHNjaGVtYS5kZmx0MyAoYSBpbnQgUFJJTUFSWSBLRVkp IFBBUlRJVElPTiBCWSBMSVNUIChhKSBUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2U7CitD UkVBVEUgVEFCTEUgdGVzdHNjaGVtYS5kZmx0NCAoYSBpbnQgUFJJTUFSWSBLRVkgVVNJTkcg SU5ERVggVEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNlKSBQQVJUSVRJT04gQlkgTElTVCAo YSk7CitEUk9QIFRBQkxFIHRlc3RzY2hlbWEuZGZsdCwgdGVzdHNjaGVtYS5kZmx0MiwgdGVz dHNjaGVtYS5kZmx0MywgdGVzdHNjaGVtYS5kZmx0NDsKKy0tIGFuZCB0aGVzZSB3b3JrOgog Q1JFQVRFIFRBQkxFIHRlc3RzY2hlbWEuZGZsdCAoYSBpbnQgUFJJTUFSWSBLRVkgVVNJTkcg SU5ERVggVEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNlKSBQQVJUSVRJT04gQlkgTElTVCAo YSkgVEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNlOwogU0VUIGRlZmF1bHRfdGFibGVzcGFj ZSBUTyAnJzsKIENSRUFURSBUQUJMRSB0ZXN0c2NoZW1hLmRmbHQyIChhIGludCBQUklNQVJZ IEtFWSkgUEFSVElUSU9OIEJZIExJU1QgKGEpOwo= --------------GBgWdSYQ6PpyHo3sz7QwbJqM--