ALTER INDEX .. RENAME allows to rename tables/views as well
Onder Kalaci <onderk@microsoft.com>
From: Onder Kalaci <onderk@microsoft.com>
To: "pgsql-hackers@lists.postgresql.org" <pgsql-hackers@lists.postgresql.org>
Date: 2021-10-04T10:23:23Z
Lists: pgsql-hackers
Hi hackers, I realized a subtle behavior with ALTER INDEX .. RENAME. It seems like a bug to me, please see the steps below. Test 1: Rename table via RENAME .. INDEX CREATE TABLE test_table (a int); SELECT 'test_table'::regclass::oid; oid ------- 34470 (1 row) -- rename table using ALTER INDEX .. ALTER INDEX test_table RENAME TO test_table_2; -- see that table is rename SELECT 34470::regclass; regclass -------------- test_table_2 (1 row) Test 2: Rename view via RENAME .. INDEX CREATE VIEW test_view AS SELECT * FROM pg_class; SELECT 'test_view'::regclass::oid; oid ------- 34473 (1 row) ALTER INDEX test_view RENAME TO test_view_2; ELECT 34473::regclass; regclass ------------- test_view_2 (1 row) It seems like an oversight in ExecRenameStmt(), and probably applies to sequences, mat. views and foreign tables as well. I can reproduce this on both 13.2 and 14.0. Though haven’t checked earlier versions. Thanks, Onder
Commits
-
Ensure correct lock level is used in ALTER ... RENAME
- c2c618ff1137 15.0 landed
- 842fe6123c8a 13.5 landed
- 6c8d1c197bd6 12.9 landed
- 3ce3fb2f7dc6 14.1 landed