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.96) (envelope-from ) id 1viqag-00H4RD-1Y for pgsql-hackers@arkaria.postgresql.org; Thu, 22 Jan 2026 09:02:59 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1viqZg-00C858-0Z for pgsql-hackers@arkaria.postgresql.org; Thu, 22 Jan 2026 09:01:56 +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.96) (envelope-from ) id 1viqZf-00C850-2a for pgsql-hackers@lists.postgresql.org; Thu, 22 Jan 2026 09:01:56 +0000 Received: from mail-lf1-x12e.google.com ([2a00:1450:4864:20::12e]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1viqZd-001sK3-2p for pgsql-hackers@lists.postgresql.org; Thu, 22 Jan 2026 09:01:55 +0000 Received: by mail-lf1-x12e.google.com with SMTP id 2adb3069b0e04-59dd22b9895so809523e87.0 for ; Thu, 22 Jan 2026 01:01:53 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1769072512; cv=none; d=google.com; s=arc-20240605; b=AOIXzumIb9tYHVT/iKrJeCTickr4eA3wB33xJcJETTlb4f6yutJ2b7okWrgktUIn9i og/ABQdWqjX3iM5AxSBWBn/1sZx5fYizutIbLwta24PcQhqgAt5wLUurU//QCLGPlLpU 01ht5pUOnnDL6DMRTcDjiE0ZfOaOul5mxqEiCBmzuCKtpgX8NP7j/QNP3kxKSud9bcuw RtOXTnhFtkmBKCa0ME9wRxTfjt/DGNpcDl/jG47WGG/NQBm9VMikEBGi+gSBLXQFmw8y VmYdB3fqyXPXqTLX16nnVnndnIB4ayz43qBzeeDhZS0nXwYVx/0mGK8WwKSVYEwp5R07 L2QA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :dkim-signature; bh=Twop13FESaaS5+GchRjkYknUVmNe29t53bCGNtQlF9s=; fh=oWKbGXenJ0W3UaTE5+JHx7ufYGIICxbxa2jY+IM9Itg=; b=OnQtw0m0uajjWQILBJV7e1UshVcgaJuDS05PhXGQQk31xX9Pnc5nWXgBKDcUjrQcPL omfkiBVpKwTALL7Yop/Uk4Nu4eCTYdN814LM+/DHur7awrm65bbw5XyZJg24e6NtpSVG tSxl5ByMiK3obcGQLggr9nDnFyTo5GJp7NXfLU1cJEHBQxtFOMBBb9dF4u7wYoBRZaze rv9hpyPAUy9dZhhDJP+4fg6R0kDXbfxsexoHr0ho3HRhDoxY7Wd37lqaO7lqRGG//m/j hwC1YhwhsIeTmeSF/XRcXB2lZFkqifWhv8h5ophj08rmfMOTAJZYGhErqs3JCFm2Mi9a A8uw==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1769072512; x=1769677312; darn=lists.postgresql.org; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :from:to:cc:subject:date:message-id:reply-to; bh=Twop13FESaaS5+GchRjkYknUVmNe29t53bCGNtQlF9s=; b=VOINfBHiTYORJbB6e9v/isqHttv4ZFQORNd3/sr95wEIGMExfQtdg7vmp8LTU4iRma aPwb010p2L5NRi3Df7hnPsxAwEE7MCo7xjDWLTcVnYvmK1mD6AUjwbhszi/sthvvPHtD 3SnlAjqS3NguPB1DGZbMGHqkuL2pc5NIHQ26XHmRcVHteg3jAQoTjslqK4h3qbWxPpr0 zjbvPIkrioJQIiJsFf8sQKBxh9zEMU77fKzJt1YCTLfaEGKMtmEVWW34S4v7CU95Akvt LlqM2IWVd11kX2ifVbqZ3rW1UCjUeMX6Ns8imJNUJEMp6w7LiW5+3MN4O99Jy6NhvMRI wFoQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1769072512; x=1769677312; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=Twop13FESaaS5+GchRjkYknUVmNe29t53bCGNtQlF9s=; b=vRxofrsfNbRyv7pnRZ12GA4ETMMFH249jd5LKX16/PbBKVJAbbhWzyuQD7nMqtZ4JQ 0MeH0r9Wk0+zt4DKzt2zoxniJCvvaRLSwke7OAqlllD8wXkDIhvI/cDFXCvBBrhxhCKJ uOhdmuwSdn6cUTkzi43gVqqsxEYGXlGprvFxADjuPPUjGnd1gyJMFcbVm8xKeAETl27a 5C7q+SczaMOxHeuZsUcaaxb5+AnLki4Sd5iD1YJdguMSTPVxuYKJIx1pp1GB1Kc6oPyf ZfD71ffifENcd+bXNP8qwycm8YB3ac//Tt4p/M24yf9d1MuLMCkQMFigNm44p7eMwOI0 /gTA== X-Gm-Message-State: AOJu0YyQCnvo8BoDscbW/MEHiWVT5r20wFlUkQ2UUbhqPa3OH1/FnCN+ LYnxU9d1TLnN8RIyMS8uSdM/dxnFvvaSWWwpWZegmXPZ97pR/BNq8usK6pxEznhRyxQMrxqNd2k 5fGAgZI0JqY7i/NlijkBrnH416oMHaj5o7CL/IPJL6g== X-Gm-Gg: AZuq6aKcZikOlGHGtfuT01BNw1KyevqPHiyZtXJZFLYQEI4/v0GHDIi/jEQTvjF//Rg 0VpNigLfLg+3BRAC57XwazxLyb5ZAtz1sCJJK+bIdCli8K4/i/435Mn1DF+OV5XEi9dLK5xNMIp uC5LNlYlH6xQmcUYHWCQOSz3e1UQI7lrUTG7wQmY0nA6uV8g80Hoi/+/7Y42Aoz/yKDu19o7gHM Fth35RiL0qDx4S9XcL9GUZSVs9GBxpZiQjgjxkraVaLafL8Bp/WQta5ZXBvW/TI3whQuf8r X-Received: by 2002:a05:6512:3094:b0:59b:6d18:d777 with SMTP id 2adb3069b0e04-59dd7d2882cmr958195e87.22.1769072511619; Thu, 22 Jan 2026 01:01:51 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Chao Li Date: Thu, 22 Jan 2026 17:01:38 +0800 X-Gm-Features: AZwV_QhjBx-wKAuiK0Niu8PIBjW3Y3NpOAx9uMUxOVzfPWNjRRWg7Lj9vD539BE Message-ID: Subject: Re: tablecmds: reject CLUSTER ON for partitioned tables earlier To: Postgres hackers Content-Type: multipart/mixed; boundary="000000000000a336ee0648f64a8f" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000a336ee0648f64a8f Content-Type: multipart/alternative; boundary="000000000000a336ed0648f64a8d" --000000000000a336ed0648f64a8d Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Jan 21, 2026, at 11:55, Chao Li wrote: Hi Hacker, I noticed this while working other patches related to =E2=80=9CALTER TABLE= =E2=80=9D. =E2=80=9CALTER TABLE =E2=80=A6 CLUSTER ON=E2=80=9D and "SET WITHOUT CLUSTER= " are not supported for partitioned tables, but currently ATPrepCmd() allows them through and they only fail later at execution time. This patch rejects these commands earlier by using the existing ATSimplePermissions() infrastructure in ATPrepCmd(), matching the handling of other unsupported ALTER TABLE actions on partitioned tables (such as SET LOGGED / SET UNLOGGED). This makes the behavior more consistent and simplifies the code path. As a result, the error reported for partitioned tables changes: Before the patch: ``` evantest=3D# ALTER TABLE p_test CLUSTER ON idx_p_test_id; ERROR: cannot mark index clustered in partitioned table ``` With the patch: ``` evantest=3D# ALTER TABLE p_test CLUSTER ON idx_p_test_id; ERROR: ALTER action CLUSTER ON cannot be performed on relation "p_test" DETAIL: This operation is not supported for partitioned tables. ``` Best regards, -- Chao Li (Evan) HighGo Software Co., Ltd. https://www.highgo.com/ Applying the same change to INHERIT/NO INHeRIT in v2-0002. Other than that, fixing 2 more things for INHERIT/NO INHERIT: * The header comment of ATPrepAddInherit() was a copy-paste mistake, it described something totally unrelated. * NO INHERIT didn=E2=80=99t call ATPrepAddInherit() to check early, so it h= ad to go deeper and run unnecessary checks. Basically, 0001 and 0002 do the same thing on two sub-commands. If accepted, they can be squashed. Best regards, -- Chao Li (Evan) HighGo Software Co., Ltd. https://www.highgo.com/ --000000000000a336ed0648f64a8d Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
<= br id=3D"m_-1004757139116377363lineBreakAtBeginningOfMessage">
On Jan 21, 2026, at 11:55, Chao Li <li.evan.chao@gmail.com> wro= te:

Hi Hacker,

I noticed this while working other patches rel= ated to =E2=80=9CALTER TABLE=E2=80=9D.

=E2=80=9CALTER TABLE =E2=80= =A6 CLUSTER ON=E2=80=9D and "SET WITHOUT CLUSTER" are not support= ed for partitioned tables, but currently ATPrepCmd() allows them through an= d they only fail later at execution time.

This patch rejects these c= ommands earlier by using the existing ATSimplePermissions() infrastructure = in ATPrepCmd(), matching the handling of other unsupported ALTER TABLE acti= ons on partitioned tables (such as SET LOGGED / SET UNLOGGED). This makes t= he behavior more consistent and simplifies the code path.

As a resul= t, the error reported for partitioned tables changes:

Before the pat= ch:
```
evantest=3D#=C2=A0ALTER=C2=A0TABLE=C2=A0p_test CLUSTER=C2=A0O= N=C2=A0idx_p_test_id;
ERROR:=C2=A0=C2=A0cannot=C2=A0mark=C2=A0index=C2= =A0clustered=C2=A0in=C2=A0partitioned=C2=A0table
```

With the pat= ch:
```
evantest=3D# ALTER TABLE p_test CLUSTER ON idx_p_test_id;
= ERROR: =C2=A0ALTER action CLUSTER ON cannot be performed on relation "= p_test"
DETAIL: =C2=A0This operation is not supported for partition= ed tables.
```

Best regards,
--
Chao Li (Evan)
HighGo Software Co., Ltd.
https://www.highgo.com/




<v1-0001-tablecmds-re= ject-CLUSTER-ON-for-partitioned-table.patch>

Applying the same change to INHERIT/NO INHeRIT i= n v2-0002. Other than that, fixing 2 more things for INHERIT/NO INHERIT:

* The header comment of=C2=A0ATPrepAddInherit() was = a copy-paste mistake, it described something totally unrelated.
*= =C2=A0NO INHERIT didn=E2=80=99t call=C2=A0ATPrepAddInherit() to check early= , so it had to go deeper and run unnecessary checks.

Basically, 0001 and 0002 do the same thing on two sub-commands. If accep= ted, they can be squashed.

Best regards,
--
Chao Li (Evan)
HighGo Software Co., Ltd.
https://www.highgo.com/

--000000000000a336ed0648f64a8d-- --000000000000a336ee0648f64a8f Content-Type: application/octet-stream; name="v2-0001-tablecmds-reject-CLUSTER-ON-for-partitioned-table.patch" Content-Disposition: attachment; filename="v2-0001-tablecmds-reject-CLUSTER-ON-for-partitioned-table.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mkp82b850 RnJvbSA3NWEzZDk0Mjk2ZTgzZWM1Y2M4MmI5OGY2MDYyMjc1MDNmMmM1NzVlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiQ2hhbyBMaSAoRXZhbikiIDxsaWNAaGlnaGdvLmNvbT4KRGF0 ZTogV2VkLCAyMSBKYW4gMjAyNiAxMToyNzowMyArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjIgMS8y XSB0YWJsZWNtZHM6IHJlamVjdCBDTFVTVEVSIE9OIGZvciBwYXJ0aXRpb25lZCB0YWJsZXMKIGVh cmxpZXIKCkFMVEVSIFRBQkxFIC4uLiBDTFVTVEVSIE9OIGFuZCBTRVQgV0lUSE9VVCBDTFVTVEVS IGFyZSBub3Qgc3VwcG9ydGVkIGZvcgpwYXJ0aXRpb25lZCB0YWJsZXMgYW5kIGFscmVhZHkgZmFp bCB0b2RheSwgYnV0IG9ubHkgYXQgZXhlYyB0aW1lLgoKUmVqZWN0IHRoZXNlIGNvbW1hbmRzIGVh cmxpZXIgdmlhIEFUU2ltcGxlUGVybWlzc2lvbnMoKSwgbWF0Y2hpbmcgdGhlCmhhbmRsaW5nIG9m IG90aGVyIHVuc3VwcG9ydGVkIEFMVEVSIFRBQkxFIGFjdGlvbnMgb24gcGFydGl0aW9uZWQgdGFi bGVzCihzdWNoIGFzIFNFVCBMT0dHRUQgLyBTRVQgVU5MT0dHRUQpLiBUaGlzIGNlbnRyYWxpemVz IHRoZSByZWxhdGlvbi1raW5kCmNoZWNrIGluIHRoZSBBTFRFUiBUQUJMRSBwcmVwYXJhdGlvbiBw aGFzZSwgaW1wcm92aW5nIGNvbnNpc3RlbmN5IGFuZAptYWludGFpbmFiaWxpdHkuCgpBcyBhIHJl c3VsdCwgcGFydGl0aW9uZWQgdGFibGVzIG5vdyByZXBvcnQgdGhlIHN0YW5kYXJkIEFUU2ltcGxl UGVybWlzc2lvbnMoKQplcnJvciBmb3IgdW5zdXBwb3J0ZWQgQUxURVIgVEFCTEUgYWN0aW9ucy4K CkF1dGhvcjogQ2hhbyBMaSA8bGljQGhpZ2hnby5jb20+Ci0tLQogc3JjL2JhY2tlbmQvY29tbWFu ZHMvdGFibGVjbWRzLmMgICAgICB8IDIgKy0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY2x1 c3Rlci5vdXQgfCA2ICsrKystLQogMiBmaWxlcyBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDMg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRz LmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwppbmRleCBmOTc2YzBlNWM3ZS4u M2U5ZjYyZTlkMzcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5j CisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCkBAIC01MTQyLDcgKzUxNDIs NyBAQCBBVFByZXBDbWQoTGlzdCAqKndxdWV1ZSwgUmVsYXRpb24gcmVsLCBBbHRlclRhYmxlQ21k ICpjbWQsCiAJCWNhc2UgQVRfQ2x1c3Rlck9uOgkJLyogQ0xVU1RFUiBPTiAqLwogCQljYXNlIEFU X0Ryb3BDbHVzdGVyOgkvKiBTRVQgV0lUSE9VVCBDTFVTVEVSICovCiAJCQlBVFNpbXBsZVBlcm1p c3Npb25zKGNtZC0+c3VidHlwZSwgcmVsLAotCQkJCQkJCQlBVFRfVEFCTEUgfCBBVFRfUEFSVElU SU9ORURfVEFCTEUgfCBBVFRfTUFUVklFVyk7CisJCQkJCQkJCUFUVF9UQUJMRSB8IEFUVF9NQVRW SUVXKTsKIAkJCS8qIFRoZXNlIGNvbW1hbmRzIG5ldmVyIHJlY3Vyc2UgKi8KIAkJCS8qIE5vIGNv bW1hbmQtc3BlY2lmaWMgcHJlcCBuZWVkZWQgKi8KIAkJCXBhc3MgPSBBVF9QQVNTX01JU0M7CmRp ZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NsdXN0ZXIub3V0IGIvc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9jbHVzdGVyLm91dAppbmRleCA0ZDQwYTY4MDlhYi4uMDdjNTJl NjQ3ZjcgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY2x1c3Rlci5vdXQK KysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jbHVzdGVyLm91dApAQCAtNDkyLDkgKzQ5 MiwxMSBAQCBOdW1iZXIgb2YgcGFydGl0aW9uczogMyAoVXNlIFxkKyB0byBsaXN0IHRoZW0uKQog Q0xVU1RFUiBjbHN0cnBhcnQ7CiBFUlJPUjogIHRoZXJlIGlzIG5vIHByZXZpb3VzbHkgY2x1c3Rl cmVkIGluZGV4IGZvciB0YWJsZSAiY2xzdHJwYXJ0IgogQUxURVIgVEFCTEUgY2xzdHJwYXJ0IFNF VCBXSVRIT1VUIENMVVNURVI7Ci1FUlJPUjogIGNhbm5vdCBtYXJrIGluZGV4IGNsdXN0ZXJlZCBp biBwYXJ0aXRpb25lZCB0YWJsZQorRVJST1I6ICBBTFRFUiBhY3Rpb24gU0VUIFdJVEhPVVQgQ0xV U1RFUiBjYW5ub3QgYmUgcGVyZm9ybWVkIG9uIHJlbGF0aW9uICJjbHN0cnBhcnQiCitERVRBSUw6 ICBUaGlzIG9wZXJhdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGZvciBwYXJ0aXRpb25lZCB0YWJsZXMu CiBBTFRFUiBUQUJMRSBjbHN0cnBhcnQgQ0xVU1RFUiBPTiBjbHN0cnBhcnRfaWR4OwotRVJST1I6 ICBjYW5ub3QgbWFyayBpbmRleCBjbHVzdGVyZWQgaW4gcGFydGl0aW9uZWQgdGFibGUKK0VSUk9S OiAgQUxURVIgYWN0aW9uIENMVVNURVIgT04gY2Fubm90IGJlIHBlcmZvcm1lZCBvbiByZWxhdGlv biAiY2xzdHJwYXJ0IgorREVUQUlMOiAgVGhpcyBvcGVyYXRpb24gaXMgbm90IHN1cHBvcnRlZCBm b3IgcGFydGl0aW9uZWQgdGFibGVzLgogRFJPUCBUQUJMRSBjbHN0cnBhcnQ7CiAtLSBPd25lcnNo aXAgb2YgcGFydGl0aW9ucyBpcyBjaGVja2VkCiBDUkVBVEUgVEFCTEUgcHRub3duZXIoaSBpbnQg dW5pcXVlKSBQQVJUSVRJT04gQlkgTElTVCAoaSk7Ci0tIAoyLjUwLjEgKEFwcGxlIEdpdC0xNTUp Cgo= --000000000000a336ee0648f64a8f Content-Type: application/octet-stream; name="v2-0002-tablecmds-reject-INHERIT-NO-INHERIT-for-partition.patch" Content-Disposition: attachment; filename="v2-0002-tablecmds-reject-INHERIT-NO-INHERIT-for-partition.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mkp82b8a1 RnJvbSAxYzY5MDEzMjU4MzM2MTczMGI0ZWJkOWNmZmI2M2NiNTNlZTY0M2M0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiQ2hhbyBMaSAoRXZhbikiIDxsaWNAaGlnaGdvLmNvbT4KRGF0 ZTogVGh1LCAyMiBKYW4gMjAyNiAxNjo0Nzo1OCArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjIgMi8y XSB0YWJsZWNtZHM6IHJlamVjdCBJTkhFUklUIC8gTk8gSU5IRVJJVCBmb3IgcGFydGl0aW9uZWQK IHRhYmxlcyBlYXJsaWVyCgpBTFRFUiBUQUJMRSAuLi4gSU5IRVJJVCBhbmQgTk8gSU5IRVJJVCBh cmUgbm90IHN1cHBvcnRlZCBmb3IgcGFydGl0aW9uZWQKdGFibGVzIGFuZCBhbHJlYWR5IGZhaWwg dG9kYXksIGJ1dCBvbmx5IHZpYSBhZC1ob2MgY2hlY2tzIGluIGNvbW1hbmQtCnNwZWNpZmljIHBy ZXBhcmF0aW9uIGNvZGUgb3IgbGF0ZXIgYXQgZXhlY3V0aW9uIHRpbWUuCgpSZWplY3QgdGhlc2Ug Y29tbWFuZHMgZWFybGllciB2aWEgQVRTaW1wbGVQZXJtaXNzaW9ucygpLCBtYXRjaGluZyB0aGUK aGFuZGxpbmcgb2Ygb3RoZXIgdW5zdXBwb3J0ZWQgQUxURVIgVEFCTEUgYWN0aW9ucyBvbiBwYXJ0 aXRpb25lZCB0YWJsZXMuClRoaXMgY2VudHJhbGl6ZXMgcmVsYXRpb24ta2luZCBjaGVja3MgaW4g dGhlIGNvbW1vbiBwZXJtaXNzaW9uIGZyYW1ld29yawphbmQgcHJvZHVjZXMgdGhlIHN0YW5kYXJk LCBjb25zaXN0ZW50IGVycm9yIG1lc3NhZ2UuCgpXaGlsZSBkb2luZyB0aGlzLCBmaXggdHdvIHJl bGF0ZWQgaXNzdWVzIGluIHRoZSBwcmVwYXJhdGlvbiBsb2dpYzoKLSBUaGUgaGVhZGVyIGNvbW1l bnQgb2YgQVRQcmVwQWRkSW5oZXJpdCB3YXMgYSBzdGFsZSBjb3B5LXBhc3RlIHRoYXQKICBkZXNj cmliZWQgYmVoYXZpb3Igbm8gbG9uZ2VyIGltcGxlbWVudGVkIHRoZXJlLgotIE5PIElOSEVSSVQg cHJldmlvdXNseSBkaWRuJ3QgdXNlIEFUUHJlcEFkZEluaGVyaXQsIGNhdXNpbmcgaXQgdG8gcmVh Y2gKICBleGVjdXRpb24tdGltZSBjaGVja3MgdW5uZWNlc3NhcmlseS4gQ29uc29saWRhdGUgcHJl cGFyYXRpb24gaW50byBhCiAgc2hhcmVkIGhlbHBlciB1c2VkIGJ5IGJvdGggSU5IRVJJVCBhbmQg Tk8gSU5IRVJJVCwgZW5zdXJpbmcgYm90aCBhcmUKICByZWplY3RlZCB1bmlmb3JtbHkgYW5kIGFz IGVhcmx5IGFzIHBvc3NpYmxlLgoKQXV0aG9yOiBDaGFvIExpIDxsaWNAaGlnaGdvLmNvbT4KLS0t CiBzcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYyAgICAgICAgICB8IDIyICsrKysrKysr LS0tLS0tLS0tLS0tLS0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvYWx0ZXJfdGFibGUub3V0 IHwgIDMgKystCiAyIGZpbGVzIGNoYW5nZWQsIDEwIGluc2VydGlvbnMoKyksIDE1IGRlbGV0aW9u cygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jIGIvc3Jj L2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKaW5kZXggM2U5ZjYyZTlkMzcuLmEyNTVlZGQ5 NTMxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYworKysgYi9z cmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwpAQCAtNjg2LDcgKzY4Niw3IEBAIHN0YXRp YyB2b2lkIEFURXhlY0VuYWJsZURpc2FibGVUcmlnZ2VyKFJlbGF0aW9uIHJlbCwgY29uc3QgY2hh ciAqdHJpZ25hbWUsCiAJCQkJCQkJCQkgICBMT0NLTU9ERSBsb2NrbW9kZSk7CiBzdGF0aWMgdm9p ZCBBVEV4ZWNFbmFibGVEaXNhYmxlUnVsZShSZWxhdGlvbiByZWwsIGNvbnN0IGNoYXIgKnJ1bGVu YW1lLAogCQkJCQkJCQkJY2hhciBmaXJlc193aGVuLCBMT0NLTU9ERSBsb2NrbW9kZSk7Ci1zdGF0 aWMgdm9pZCBBVFByZXBBZGRJbmhlcml0KFJlbGF0aW9uIGNoaWxkX3JlbCk7CitzdGF0aWMgdm9p ZCBBVFByZXBBZGREcm9wSW5oZXJpdChSZWxhdGlvbiBjaGlsZF9yZWwpOwogc3RhdGljIE9iamVj dEFkZHJlc3MgQVRFeGVjQWRkSW5oZXJpdChSZWxhdGlvbiBjaGlsZF9yZWwsIFJhbmdlVmFyICpw YXJlbnQsIExPQ0tNT0RFIGxvY2ttb2RlKTsKIHN0YXRpYyBPYmplY3RBZGRyZXNzIEFURXhlY0Ry b3BJbmhlcml0KFJlbGF0aW9uIHJlbCwgUmFuZ2VWYXIgKnBhcmVudCwgTE9DS01PREUgbG9ja21v ZGUpOwogc3RhdGljIHZvaWQgZHJvcF9wYXJlbnRfZGVwZW5kZW5jeShPaWQgcmVsaWQsIE9pZCBy ZWZjbGFzc2lkLCBPaWQgcmVmb2JqaWQsCkBAIC01MTk0LDE1ICs1MTk0LDE2IEBAIEFUUHJlcENt ZChMaXN0ICoqd3F1ZXVlLCBSZWxhdGlvbiByZWwsIEFsdGVyVGFibGVDbWQgKmNtZCwKIAkJCWJy ZWFrOwogCQljYXNlIEFUX0FkZEluaGVyaXQ6CQkvKiBJTkhFUklUICovCiAJCQlBVFNpbXBsZVBl cm1pc3Npb25zKGNtZC0+c3VidHlwZSwgcmVsLAotCQkJCQkJCQlBVFRfVEFCTEUgfCBBVFRfUEFS VElUSU9ORURfVEFCTEUgfCBBVFRfRk9SRUlHTl9UQUJMRSk7CisJCQkJCQkJCUFUVF9UQUJMRSB8 IEFUVF9GT1JFSUdOX1RBQkxFKTsKIAkJCS8qIFRoaXMgY29tbWFuZCBuZXZlciByZWN1cnNlcyAq LwotCQkJQVRQcmVwQWRkSW5oZXJpdChyZWwpOworCQkJQVRQcmVwQWRkRHJvcEluaGVyaXQocmVs KTsKIAkJCXBhc3MgPSBBVF9QQVNTX01JU0M7CiAJCQlicmVhazsKIAkJY2FzZSBBVF9Ecm9wSW5o ZXJpdDoJLyogTk8gSU5IRVJJVCAqLwogCQkJQVRTaW1wbGVQZXJtaXNzaW9ucyhjbWQtPnN1YnR5 cGUsIHJlbCwKLQkJCQkJCQkJQVRUX1RBQkxFIHwgQVRUX1BBUlRJVElPTkVEX1RBQkxFIHwgQVRU X0ZPUkVJR05fVEFCTEUpOworCQkJCQkJCQlBVFRfVEFCTEUgfCBBVFRfRk9SRUlHTl9UQUJMRSk7 CiAJCQkvKiBUaGlzIGNvbW1hbmQgbmV2ZXIgcmVjdXJzZXMgKi8KKwkJCUFUUHJlcEFkZERyb3BJ bmhlcml0KHJlbCk7CiAJCQkvKiBObyBjb21tYW5kLXNwZWNpZmljIHByZXAgbmVlZGVkICovCiAJ CQlwYXNzID0gQVRfUEFTU19NSVNDOwogCQkJYnJlYWs7CkBAIC0xNzI1OSwxNCArMTcyNjAsMTIg QEAgQVRFeGVjRW5hYmxlRGlzYWJsZVJ1bGUoUmVsYXRpb24gcmVsLCBjb25zdCBjaGFyICpydWxl bmFtZSwKIH0KIAogLyoKLSAqIEFMVEVSIFRBQkxFIElOSEVSSVQKKyAqIEFMVEVSIFRBQkxFIElO SEVSSVQgLyBOTyBJTkhFUklUCiAgKgotICogQWRkIGEgcGFyZW50IHRvIHRoZSBjaGlsZCdzIHBh cmVudHMuIFRoaXMgdmVyaWZpZXMgdGhhdCBhbGwgdGhlIGNvbHVtbnMgYW5kCi0gKiBjaGVjayBj b25zdHJhaW50cyBvZiB0aGUgcGFyZW50IGFwcGVhciBpbiB0aGUgY2hpbGQgYW5kIHRoYXQgdGhl eSBoYXZlIHRoZQotICogc2FtZSBkYXRhIHR5cGVzIGFuZCBleHByZXNzaW9ucy4KKyAqIEEgY2hp bGQgdGFibGUgY2Fubm90IGJlIGEgdHlwZWQgdGFibGUgb3IgYSBwYXJ0aXRpb24uCiAgKi8KIHN0 YXRpYyB2b2lkCi1BVFByZXBBZGRJbmhlcml0KFJlbGF0aW9uIGNoaWxkX3JlbCkKK0FUUHJlcEFk ZERyb3BJbmhlcml0KFJlbGF0aW9uIGNoaWxkX3JlbCkKIHsKIAlpZiAoY2hpbGRfcmVsLT5yZF9y ZWwtPnJlbG9mdHlwZSkKIAkJZXJlcG9ydChFUlJPUiwKQEAgLTE3Mjc3LDExICsxNzI3Niw2IEBA IEFUUHJlcEFkZEluaGVyaXQoUmVsYXRpb24gY2hpbGRfcmVsKQogCQllcmVwb3J0KEVSUk9SLAog CQkJCShlcnJjb2RlKEVSUkNPREVfV1JPTkdfT0JKRUNUX1RZUEUpLAogCQkJCSBlcnJtc2coImNh bm5vdCBjaGFuZ2UgaW5oZXJpdGFuY2Ugb2YgYSBwYXJ0aXRpb24iKSkpOwotCi0JaWYgKGNoaWxk X3JlbC0+cmRfcmVsLT5yZWxraW5kID09IFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUpCi0JCWVy ZXBvcnQoRVJST1IsCi0JCQkJKGVycmNvZGUoRVJSQ09ERV9XUk9OR19PQkpFQ1RfVFlQRSksCi0J CQkJIGVycm1zZygiY2Fubm90IGNoYW5nZSBpbmhlcml0YW5jZSBvZiBwYXJ0aXRpb25lZCB0YWJs ZSIpKSk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2Fs dGVyX3RhYmxlLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvYWx0ZXJfdGFibGUub3V0 CmluZGV4IGFjMWE3MzQ1ZDBmLi5iODE1MGFhYjA4YiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9hbHRlcl90YWJsZS5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9hbHRlcl90YWJsZS5vdXQKQEAgLTM5OTgsNyArMzk5OCw4IEBAIENSRUFURSBUQUJMRSBu b25wYXJ0aXRpb25lZCAoCiAJYiBpbnQKICk7CiBBTFRFUiBUQUJMRSBwYXJ0aXRpb25lZCBJTkhF UklUIG5vbnBhcnRpdGlvbmVkOwotRVJST1I6ICBjYW5ub3QgY2hhbmdlIGluaGVyaXRhbmNlIG9m IHBhcnRpdGlvbmVkIHRhYmxlCitFUlJPUjogIEFMVEVSIGFjdGlvbiBJTkhFUklUIGNhbm5vdCBi ZSBwZXJmb3JtZWQgb24gcmVsYXRpb24gInBhcnRpdGlvbmVkIgorREVUQUlMOiAgVGhpcyBvcGVy YXRpb24gaXMgbm90IHN1cHBvcnRlZCBmb3IgcGFydGl0aW9uZWQgdGFibGVzLgogQUxURVIgVEFC TEUgbm9ucGFydGl0aW9uZWQgSU5IRVJJVCBwYXJ0aXRpb25lZDsKIEVSUk9SOiAgY2Fubm90IGlu aGVyaXQgZnJvbSBwYXJ0aXRpb25lZCB0YWJsZSAicGFydGl0aW9uZWQiCiAtLSBjYW5ub3QgYWRk IE5PIElOSEVSSVQgY29uc3RyYWludCB0byBwYXJ0aXRpb25lZCB0YWJsZXMKLS0gCjIuNTAuMSAo QXBwbGUgR2l0LTE1NSkKCg== --000000000000a336ee0648f64a8f--