pgsql: Ensure correct lock level is used in ALTER ... RENAME
Ensure correct lock level is used in ALTER ... RENAME
Commit 1b5d797cd4f7 intended to relax the lock level used to rename
indexes, but inadvertently allowed *any* relation to be renamed with a
lowered lock level, as long as the command is spelled ALTER INDEX.
That's undesirable for other relation types, so retry the operation with
the higher lock if the relation turns out not to be an index.
After this fix, ALTER INDEX <sometable> RENAME will require access
exclusive lock, which it didn't before.
Author: Nathan Bossart <bossartn@amazon.com>
Author: Álvaro Herrera <alvherre@alvh.no-ip.org>
Reported-by: Onder Kalaci <onderk@microsoft.com>
Discussion: /messages/by-id/PH0PR21MB1328189E2821CDEC646F8178D8AE9@PH0PR21MB1328.namprd21.prod.outlook.com
Branch
------
master
Details
-------
https://git.postgresql.org/pg/commitdiff/c2c618ff1137f9ef58827f57e4ec0f97453e454e
Modified Files
--------------
src/backend/commands/tablecmds.c | 62 ++++++++++++++++++++++++-------
src/test/regress/expected/alter_table.out | 48 ++++++++++++++++++++++++
src/test/regress/sql/alter_table.sql | 31 ++++++++++++++++
3 files changed, 127 insertions(+), 14 deletions(-)
Hi Alvaro,
On Tue, Oct 19, 2021 at 10:11:24PM +0000, Alvaro Herrera wrote:
Ensure correct lock level is used in ALTER ... RENAME
Commit 1b5d797cd4f7 intended to relax the lock level used to rename
indexes, but inadvertently allowed *any* relation to be renamed with a
lowered lock level, as long as the command is spelled ALTER INDEX.
That's undesirable for other relation types, so retry the operation with
the higher lock if the relation turns out not to be an index.After this fix, ALTER INDEX <sometable> RENAME will require access
exclusive lock, which it didn't before.
hippopotamus and jay are complaining that this commit has introduced a
test with ordering issues:
ORDER BY relation::regclass::text;
relation | mode
--------------------------------+---------------------
- alter_idx_rename_test_2 | AccessExclusiveLock
alter_idx_rename_test_parted_2 | AccessExclusiveLock
+ alter_idx_rename_test_2 | AccessExclusiveLock
(2 rows)
Hi,
On 2021-Oct-20, Michael Paquier wrote:
hippopotamus and jay are complaining that this commit has introduced a
test with ordering issues:
ORDER BY relation::regclass::text;
Oh, I forgot that we need a COLLATE clause there. Will fix, thanks ...
--
Álvaro Herrera Valdivia, Chile — https://www.EnterpriseDB.com/
"No hay ausente sin culpa ni presente sin disculpa" (Prov. francés)