| From: | Chao Li <li(dot)evan(dot)chao(at)gmail(dot)com> |
|---|---|
| To: | Postgres hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org> |
| Subject: | Re: tablecmds: reject CLUSTER ON for partitioned tables earlier |
| Date: | 2026-01-22 09:01:38 |
| Message-ID: | CAEoWx2k5800OjHO5KhTDv4JFYpDmyfh3MTtuB=7PP-0hLmG8yQ@mail.gmail.com |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-hackers |
On Jan 21, 2026, at 11:55, Chao Li <li(dot)evan(dot)chao(at)gmail(dot)com> wrote:
Hi Hacker,
I noticed this while working other patches related to “ALTER TABLE”.
“ALTER TABLE … CLUSTER ON” 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=# ALTER TABLE p_test CLUSTER ON idx_p_test_id;
ERROR: cannot mark index clustered in partitioned table
```
With the patch:
```
evantest=# 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/
<v1-0001-tablecmds-reject-CLUSTER-ON-for-partitioned-table.patch>
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’t call ATPrepAddInherit() 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
accepted, they can be squashed.
Best regards,
--
Chao Li (Evan)
HighGo Software Co., Ltd.
https://www.highgo.com/
| Attachment | Content-Type | Size |
|---|---|---|
| v2-0001-tablecmds-reject-CLUSTER-ON-for-partitioned-table.patch | application/octet-stream | 2.6 KB |
| v2-0002-tablecmds-reject-INHERIT-NO-INHERIT-for-partition.patch | application/octet-stream | 4.5 KB |
| From | Date | Subject | |
|---|---|---|---|
| Next Message | VASUKI M | 2026-01-22 09:19:00 | Re: Optional skipping of unchanged relations during ANALYZE? |
| Previous Message | Kirill Reshke | 2026-01-22 08:51:59 | Re: Use correct collation in pg_trgm |