BUG #14407: pg_attribute shows old column names for indexes

Started by Alexey Bashtanovover 9 years ago2 messagesbugs
Jump to latest
#1Alexey Bashtanov
bashtanov@imap.cc

The following bug has been logged on the website:

Bug reference: 14407
Logged by: Alexey Bashtanov
Email address: bashtanov@imap.cc
PostgreSQL version: 9.6.1
Operating system: Ubuntu Linux 14.04.4 LTS
Description:

STEPS TO REPRODUCE:
create table tt(a int primary key);
alter table tt rename column a to b;
select attrelid::regclass, attname from pg_attribute where attrelid =
any('{tt,tt_pkey}'::regclass[]) and attnum > 0;

EXPECTED:
attrelid | attname
----------+---------
tt | b
tt_pkey | b

RECEIVED:
attrelid | attname
----------+---------
tt | b
tt_pkey | a

reproduced on 9.4.9, 9.6.1 and master

Regards,
Alexey

--
Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-bugs

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Alexey Bashtanov (#1)
Re: BUG #14407: pg_attribute shows old column names for indexes

bashtanov@imap.cc writes:

create table tt(a int primary key);
alter table tt rename column a to b;
select attrelid::regclass, attname from pg_attribute where attrelid =
any('{tt,tt_pkey}'::regclass[]) and attnum > 0;

This is not a bug; we don't attempt to rename index columns when changing
the name of a heap column. It would create collision hazards and gain
little.

If you want to see what the columns of an index actually are, I suggest
psql's \d command. In this example it produces

regression=# \d tt_pkey
Index "public.tt_pkey"
Column | Type | Definition
--------+---------+------------
a | integer | b
primary key, btree, for table "public.tt"

regards, tom lane

--
Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-bugs