On 2024-Sep-10, Michael Paquier wrote:

> @@ -5060,17 +5061,17 @@ ATPrepCmd(List **wqueue, Relation rel, AlterTableCmd 
> *cmd,
>                       pass = AT_PASS_MISC;
>                       break;
>               case AT_AttachPartition:
> -                     ATSimplePermissions(cmd->subtype, rel, ATT_TABLE | 
> ATT_PARTITIONED_INDEX);
> +                     ATSimplePermissions(cmd->subtype, rel, ATT_TABLE | 
> ATT_PARTITIONED_TABLE | ATT_PARTITIONED_INDEX);
>                       /* No command-specific prep needed */
>                       pass = AT_PASS_MISC;
>                       break;
>               case AT_DetachPartition:
> -                     ATSimplePermissions(cmd->subtype, rel, ATT_TABLE);
> +                     ATSimplePermissions(cmd->subtype, rel, ATT_TABLE | 
> ATT_PARTITIONED_TABLE);
>                       /* No command-specific prep needed */
>                       pass = AT_PASS_MISC;
>                       break;
>               case AT_DetachPartitionFinalize:
> -                     ATSimplePermissions(cmd->subtype, rel, ATT_TABLE);
> +                     ATSimplePermissions(cmd->subtype, rel, ATT_TABLE | 
> ATT_PARTITIONED_TABLE);
>                       /* No command-specific prep needed */
>                       pass = AT_PASS_MISC;
>                       break;

It looks to me like these cases could be modified to accept only
ATT_PARTITIONED_TABLE, not ATT_TABLE anymore.  The ATT_TABLE cases are
useless anyway, because they're rejected by transformPartitionCmd.

-- 
Álvaro Herrera        Breisgau, Deutschland  —  https://www.EnterpriseDB.com/
>From eab048c9c7e01df46b0d98d68507c98d9fa187c1 Mon Sep 17 00:00:00 2001
From: Alvaro Herrera <alvhe...@alvh.no-ip.org>
Date: Thu, 19 Sep 2024 09:51:07 +0200
Subject: [PATCH] Don't take ATT_TABLE for ALTER TABLE ... ATTACH/DETACH

---
 src/backend/commands/tablecmds.c | 8 +++-----
 1 file changed, 3 insertions(+), 5 deletions(-)

diff --git a/src/backend/commands/tablecmds.c b/src/backend/commands/tablecmds.c
index 2d703aa22e..d27e6cf345 100644
--- a/src/backend/commands/tablecmds.c
+++ b/src/backend/commands/tablecmds.c
@@ -5107,19 +5107,17 @@ ATPrepCmd(List **wqueue, Relation rel, AlterTableCmd *cmd,
 			break;
 		case AT_AttachPartition:
 			ATSimplePermissions(cmd->subtype, rel,
-								ATT_TABLE | ATT_PARTITIONED_TABLE | ATT_PARTITIONED_INDEX);
+								ATT_PARTITIONED_TABLE | ATT_PARTITIONED_INDEX);
 			/* No command-specific prep needed */
 			pass = AT_PASS_MISC;
 			break;
 		case AT_DetachPartition:
-			ATSimplePermissions(cmd->subtype, rel,
-								ATT_TABLE | ATT_PARTITIONED_TABLE);
+			ATSimplePermissions(cmd->subtype, rel, ATT_PARTITIONED_TABLE);
 			/* No command-specific prep needed */
 			pass = AT_PASS_MISC;
 			break;
 		case AT_DetachPartitionFinalize:
-			ATSimplePermissions(cmd->subtype, rel,
-								ATT_TABLE | ATT_PARTITIONED_TABLE);
+			ATSimplePermissions(cmd->subtype, rel, ATT_PARTITIONED_TABLE);
 			/* No command-specific prep needed */
 			pass = AT_PASS_MISC;
 			break;
-- 
2.39.2

Reply via email to