diff --git a/src/backend/commands/tablecmds.c b/src/backend/commands/tablecmds.c index 03dfd2e7fa..534b72c36f 100644 --- a/src/backend/commands/tablecmds.c +++ b/src/backend/commands/tablecmds.c @@ -4161,29 +4161,28 @@ AlterTableGetLockLevel(List *cmds) case AT_DisableTrig: case AT_DisableTrigAll: case AT_DisableTrigUser: + case AT_ColumnDefault: + case AT_CookedColumnDefault: + case AT_ReplicaIdentity: + case AT_AlterConstraint: + case AT_AddIdentity: + case AT_DropIdentity: + case AT_SetIdentity: + case AT_DropExpression: + case AT_SetCompression: cmd_lockmode = ShareRowExclusiveLock; break; /* - * These subcommands affect write operations only. XXX - * Theoretically, these could be ShareRowExclusiveLock. + * These subcommands appear to have various special cases. */ - case AT_ColumnDefault: - case AT_CookedColumnDefault: - case AT_AlterConstraint: case AT_AddIndex: /* from ADD CONSTRAINT */ case AT_AddIndexConstraint: - case AT_ReplicaIdentity: case AT_SetNotNull: case AT_EnableRowSecurity: case AT_DisableRowSecurity: case AT_ForceRowSecurity: case AT_NoForceRowSecurity: - case AT_AddIdentity: - case AT_DropIdentity: - case AT_SetIdentity: - case AT_DropExpression: - case AT_SetCompression: cmd_lockmode = AccessExclusiveLock; break; diff --git a/src/test/regress/expected/alter_table.out b/src/test/regress/expected/alter_table.out index 8dcb00ac67..d35a7c9b51 100644 --- a/src/test/regress/expected/alter_table.out +++ b/src/test/regress/expected/alter_table.out @@ -2697,9 +2697,9 @@ select * from my_locks order by 1; rollback; begin; alter table alterlock alter column f2 set default 'x'; select * from my_locks order by 1; - relname | max_lockmode ------------+--------------------- - alterlock | AccessExclusiveLock + relname | max_lockmode +-----------+----------------------- + alterlock | ShareRowExclusiveLock (1 row) rollback;