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 1viPJq-005N4q-2G for pgsql-hackers@arkaria.postgresql.org; Wed, 21 Jan 2026 03:55:47 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1viPJp-004dmJ-2d for pgsql-hackers@arkaria.postgresql.org; Wed, 21 Jan 2026 03:55:46 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1viPJp-004dmB-17 for pgsql-hackers@lists.postgresql.org; Wed, 21 Jan 2026 03:55:45 +0000 Received: from mail-lf1-x12c.google.com ([2a00:1450:4864:20::12c]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1viPJm-001WoB-2W for pgsql-hackers@lists.postgresql.org; Wed, 21 Jan 2026 03:55:44 +0000 Received: by mail-lf1-x12c.google.com with SMTP id 2adb3069b0e04-59b6f59c4f5so7025302e87.3 for ; Tue, 20 Jan 2026 19:55:43 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1768967740; cv=none; d=google.com; s=arc-20240605; b=OwXFgXkEhEilKV5gm65Y7bcuJOoTF67VdPy+KH5Jyc3f3NGbT+XNQOszAurkG/G3x4 WeDlVoqpSEkhM0I7YIEdCTSWNNTeJQ9m+P+4CUljinzV6Cx4xxuHxgOZa16eTglfU+pz ByHvKIoVAI0pDxXyX0WvdiWT0XOgIiHKZKc2EVPkZRmBHjd4BFL4AOO4ZBzAJb3i68zc W5MESGRkwn7xW31VkEZXx1DZXnDR9yUzlMkRqEcHR2VdMjEhZj4lH2LukBImW3s/x5uO fwgqDGEhLbU857U+avXa7nnL0Dlf72prrABvrcsRmGEz2chOAgBZpvQKxwDJeC+pPKwi IhEQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=to:subject:message-id:date:from:mime-version:dkim-signature; bh=TcvKNgOItjfpzCXYcp1e9q2rNb3GlcZmF/mP9YXvv0Y=; fh=oWKbGXenJ0W3UaTE5+JHx7ufYGIICxbxa2jY+IM9Itg=; b=K5q8F4ywaf5MNdJBj6A6RJdnrzWUjYcYzTjEU4X4dPpYAlqL+pmKPcgHEdESUFH8at zwnzr4+gtdrG41m9CFQ/r/4Ah+H0l6wyEoNI4JCRm/jsj/IRjZSFKH8Bhzh7wWmcpvtS OTzzhzQGlZEozT2/W3CjDFlQuQuZMJuvPX5BumeaLi+FPB9IvsFVpLN0+NJYUJspm2hp 1Q9xWa5WdmZem2aRAo23BZY1rK+To7+xSLvz5CK/C4P+ZUae4cTukw8SZb3m0h2yJA/0 EXqGfpabHR7ZrPIY0OJSO6uhijhFufxFtisqcKdvZGMXTmxMh6nSiYyo35t9R7QbqQBT MFoQ==; 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=1768967740; x=1769572540; darn=lists.postgresql.org; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=TcvKNgOItjfpzCXYcp1e9q2rNb3GlcZmF/mP9YXvv0Y=; b=TyhhI9AmV/sMllVgnSy0A+vBxOEjy4N1RvdeEGEbJLODISOUO60UqtDq5Bk8XXFHNH xNGmeoFgUNCdyi08UsQoO4mombsXM/s3Fft2wwwDQP3wS+HzizXksANxef75MoULusp1 vh2z6fAM9YWWrkyXGEunveayVD5uIW9gsFjDnTKQiL7TlWu70mYuRW/2PtjIjNHz5VX+ wr3TvA6ZA24HkTOBlv/ZXmMN+9lA3ENL3eg/YmIAukIF7bTNZIcvVeyw6VF/+XN4mvWo kHHDkxk60vNtr/h9sa67i8Vl614wkdMK2MqPLCR2U7qBbEZb04+bEbVlBZ/XdzCfJnKS hjXQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768967740; x=1769572540; h=to:subject:message-id:date:from:mime-version:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=TcvKNgOItjfpzCXYcp1e9q2rNb3GlcZmF/mP9YXvv0Y=; b=rcgFFhahrMGoS8hK0DHJ21dEG+mevz9c80AQ4yUNJUYCDivxSXnAt8f43SekunfGcb C6NBwq8pm7JmIF5PBpzo5UxAIRnPYHZc/2ZCFoF/uS6k6ABdCCmjX1I9AliQffYP5x1k av0HmZciTVefJcRhNcANDYXU2jWTpcCI9xYCQei4EQZMrZUUS2wo5sVu/j74Jd8vCHKc aK4Mq7J9Oe49EfyTej5xTOUVTB86watnKVPrSzAdiSHeNCWwa9LyjzwHdOlLGPyWs1wf 5uzGwUTscKQR+RZ+Ly36P8VG92Jounk4RjBQGU2/Q2hhZF9jXE3TMRNpkdgPHiI2v/UR YlfA== X-Gm-Message-State: AOJu0YzrIIcc/az+cJdWxtaJMZ0ppsRRH8poIDVDyJp38AeyVF9Xos/5 Uj092r+SjnR4JfNzC5TSbsTcPxv7PazcTjnQOXHJUXXlJ3ZURtfflN5kDS8Udv30Jk9JWhrGgZU bVTL6X5HaKAkDcpHKdJSEznFRiHlW4I84suG16pA= X-Gm-Gg: AZuq6aKEPocAyAG42l0vao5zabNrWSDdAKxMvQdeTGCVdRybr/CUBD8SipWD0QuBOsW Q/36iKdQ+flQgJncbTRI+Y0edk2Gep67BxVU07SS8mAfMAxewGNd8bDTmom7NUoGJ0pu+ZbiAh8 Y0XPrA4Ptla7h5QsSTfIY4+H/ryJ6GyXVyPsv+6R4vTORpdNM8sq25K8FFgQXRmyOr4gWdbvtVO y3WgP537v2uWnpEji3CBFxTZuKdwsRywe0ObRG5lSsZy/V9nrdu2sGSarmiQrrR4yF6ug== X-Received: by 2002:a05:6512:3a8d:b0:59b:6d1b:1566 with SMTP id 2adb3069b0e04-59baeed5b0fmr6410551e87.19.1768967739636; Tue, 20 Jan 2026 19:55:39 -0800 (PST) MIME-Version: 1.0 From: Chao Li Date: Wed, 21 Jan 2026 11:55:27 +0800 X-Gm-Features: AZwV_QiH3qTqm3VHjHvBKALx-V_-iqb1S0RptRtxkALGhUYE6EmyahFqXePWvn0 Message-ID: Subject: tablecmds: reject CLUSTER ON for partitioned tables earlier To: Postgres hackers Content-Type: multipart/mixed; boundary="000000000000bd92f90648dde5c4" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000bd92f90648dde5c4 Content-Type: multipart/alternative; boundary="000000000000bd92f80648dde5c2" --000000000000bd92f80648dde5c2 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable 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/ --000000000000bd92f80648dde5c2 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
H= i Hacker,

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

=E2=80=9CAL= TER 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 existin= g ATSimplePermissions() infrastructure in ATPrepCmd(), matching the handlin= g of other unsupported ALTER TABLE actions on partitioned tables (such as S= ET LOGGED / SET UNLOGGED). This makes the behavior more consistent and simp= lifies the code path.

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

Before t= he patch:
```
evantest=3D#=C2=A0ALTER=C2=A0TABLE=C2=A0p= _test CLUSTER=C2=A0ON=C2=A0idx_p_test_id;
ERROR:=C2=A0=C2=A0cannot=C2=A0= mark=C2=A0index=C2=A0clustered=C2=A0in=C2=A0partitioned=C2=A0table
```

With the patch:
```
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 partitio= ned tables.
```

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




--000000000000bd92f80648dde5c2-- --000000000000bd92f90648dde5c4 Content-Type: application/octet-stream; name="v1-0001-tablecmds-reject-CLUSTER-ON-for-partitioned-table.patch" Content-Disposition: attachment; filename="v1-0001-tablecmds-reject-CLUSTER-ON-for-partitioned-table.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mknhmllw0 RnJvbSBjOTk3ZjQ4MTE5MzRlNjcxNjQxNTI5YjRhMjI5MmU0YWMzNjJlN2M4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiQ2hhbyBMaSAoRXZhbikiIDxsaWNAaGlnaGdvLmNvbT4KRGF0 ZTogV2VkLCAyMSBKYW4gMjAyNiAxMToyNzowMyArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjFdIHRh YmxlY21kczogcmVqZWN0IENMVVNURVIgT04gZm9yIHBhcnRpdGlvbmVkIHRhYmxlcwogZWFybGll cgoKQUxURVIgVEFCTEUgLi4uIENMVVNURVIgT04gYW5kIFNFVCBXSVRIT1VUIENMVVNURVIgYXJl IG5vdCBzdXBwb3J0ZWQgZm9yCnBhcnRpdGlvbmVkIHRhYmxlcyBhbmQgYWxyZWFkeSBmYWlsIHRv ZGF5LCBidXQgb25seSBhdCBleGVjIHRpbWUuCgpSZWplY3QgdGhlc2UgY29tbWFuZHMgZWFybGll ciB2aWEgQVRTaW1wbGVQZXJtaXNzaW9ucygpLCBtYXRjaGluZyB0aGUKaGFuZGxpbmcgb2Ygb3Ro ZXIgdW5zdXBwb3J0ZWQgQUxURVIgVEFCTEUgYWN0aW9ucyBvbiBwYXJ0aXRpb25lZCB0YWJsZXMK KHN1Y2ggYXMgU0VUIExPR0dFRCAvIFNFVCBVTkxPR0dFRCkuIFRoaXMgY2VudHJhbGl6ZXMgdGhl IHJlbGF0aW9uLWtpbmQKY2hlY2sgaW4gdGhlIEFMVEVSIFRBQkxFIHByZXBhcmF0aW9uIHBoYXNl LCBpbXByb3ZpbmcgY29uc2lzdGVuY3kgYW5kCm1haW50YWluYWJpbGl0eS4KCkFzIGEgcmVzdWx0 LCBwYXJ0aXRpb25lZCB0YWJsZXMgbm93IHJlcG9ydCB0aGUgc3RhbmRhcmQgQVRTaW1wbGVQZXJt aXNzaW9ucygpCmVycm9yIGZvciB1bnN1cHBvcnRlZCBBTFRFUiBUQUJMRSBhY3Rpb25zLgoKQXV0 aG9yOiBDaGFvIExpIDxsaWNAaGlnaGdvLmNvbT4KLS0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy90 YWJsZWNtZHMuYyAgICAgIHwgMiArLQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jbHVzdGVy Lm91dCB8IDYgKysrKy0tCiAyIGZpbGVzIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgMyBkZWxl dGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYyBi L3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCmluZGV4IGY5NzZjMGU1YzdlLi4zZTlm NjJlOWQzNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKKysr IGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKQEAgLTUxNDIsNyArNTE0Miw3IEBA IEFUUHJlcENtZChMaXN0ICoqd3F1ZXVlLCBSZWxhdGlvbiByZWwsIEFsdGVyVGFibGVDbWQgKmNt ZCwKIAkJY2FzZSBBVF9DbHVzdGVyT246CQkvKiBDTFVTVEVSIE9OICovCiAJCWNhc2UgQVRfRHJv cENsdXN0ZXI6CS8qIFNFVCBXSVRIT1VUIENMVVNURVIgKi8KIAkJCUFUU2ltcGxlUGVybWlzc2lv bnMoY21kLT5zdWJ0eXBlLCByZWwsCi0JCQkJCQkJCUFUVF9UQUJMRSB8IEFUVF9QQVJUSVRJT05F RF9UQUJMRSB8IEFUVF9NQVRWSUVXKTsKKwkJCQkJCQkJQVRUX1RBQkxFIHwgQVRUX01BVFZJRVcp OwogCQkJLyogVGhlc2UgY29tbWFuZHMgbmV2ZXIgcmVjdXJzZSAqLwogCQkJLyogTm8gY29tbWFu ZC1zcGVjaWZpYyBwcmVwIG5lZWRlZCAqLwogCQkJcGFzcyA9IEFUX1BBU1NfTUlTQzsKZGlmZiAt LWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY2x1c3Rlci5vdXQgYi9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL2NsdXN0ZXIub3V0CmluZGV4IDRkNDBhNjgwOWFiLi4wN2M1MmU2NDdm NyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jbHVzdGVyLm91dAorKysg Yi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NsdXN0ZXIub3V0CkBAIC00OTIsOSArNDkyLDEx IEBAIE51bWJlciBvZiBwYXJ0aXRpb25zOiAzIChVc2UgXGQrIHRvIGxpc3QgdGhlbS4pCiBDTFVT VEVSIGNsc3RycGFydDsKIEVSUk9SOiAgdGhlcmUgaXMgbm8gcHJldmlvdXNseSBjbHVzdGVyZWQg aW5kZXggZm9yIHRhYmxlICJjbHN0cnBhcnQiCiBBTFRFUiBUQUJMRSBjbHN0cnBhcnQgU0VUIFdJ VEhPVVQgQ0xVU1RFUjsKLUVSUk9SOiAgY2Fubm90IG1hcmsgaW5kZXggY2x1c3RlcmVkIGluIHBh cnRpdGlvbmVkIHRhYmxlCitFUlJPUjogIEFMVEVSIGFjdGlvbiBTRVQgV0lUSE9VVCBDTFVTVEVS IGNhbm5vdCBiZSBwZXJmb3JtZWQgb24gcmVsYXRpb24gImNsc3RycGFydCIKK0RFVEFJTDogIFRo aXMgb3BlcmF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHBhcnRpdGlvbmVkIHRhYmxlcy4KIEFM VEVSIFRBQkxFIGNsc3RycGFydCBDTFVTVEVSIE9OIGNsc3RycGFydF9pZHg7Ci1FUlJPUjogIGNh bm5vdCBtYXJrIGluZGV4IGNsdXN0ZXJlZCBpbiBwYXJ0aXRpb25lZCB0YWJsZQorRVJST1I6ICBB TFRFUiBhY3Rpb24gQ0xVU1RFUiBPTiBjYW5ub3QgYmUgcGVyZm9ybWVkIG9uIHJlbGF0aW9uICJj bHN0cnBhcnQiCitERVRBSUw6ICBUaGlzIG9wZXJhdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGZvciBw YXJ0aXRpb25lZCB0YWJsZXMuCiBEUk9QIFRBQkxFIGNsc3RycGFydDsKIC0tIE93bmVyc2hpcCBv ZiBwYXJ0aXRpb25zIGlzIGNoZWNrZWQKIENSRUFURSBUQUJMRSBwdG5vd25lcihpIGludCB1bmlx dWUpIFBBUlRJVElPTiBCWSBMSVNUIChpKTsKLS0gCjIuMzkuNSAoQXBwbGUgR2l0LTE1NCkKCg== --000000000000bd92f90648dde5c4--