Inconsistency between attname of index and attname of relation

From: Ronan Dunklau <ronan_dunklau(at)ultimatesoftware(dot)com>
To: pgsql-hackers(at)lists(dot)postgresql(dot)org
Subject: Inconsistency between attname of index and attname of relation
Date: 2019-07-05 10:37:25
Message-ID: CAA8M49r=1XoE27tQ08sAPhft_ayBu4Vvib+ubwX4SRqtUGJ+3g@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Hello,

I've noticed that renaming an indexed column produces inconsistencies in
the catalog. Namely, the attname of the attribute of the relation is
properly updated, whereas the attname of the attribute in the index is not,
and keeps the old value.

Example:

test # create table test (id int primary key);
CREATE TABLE
test # alter table test rename id to idnew;
ALTER TABLE
test # select attrelid::regclass, attname from pg_attribute where attrelid
in ('test'::regclass, 'test_pkey'::regclass) and attnum > 0;
attrelid | attname
-----------+---------
test | idnew
test_pkey | id

We ran into that while using wal2json, which uses the replication id index
attnames to identify which columns are part of the primary key. If the
primary key column has been renamed, we end with no information about the
identity of the tuple being updated / deleted.

I think this could be considered a bug in Postgres. If it isn't, what
should be the proper way to retrieve this information ?

--

This e-mail message and any attachments to it are intended only for the
named recipients and may contain legally privileged and/or confidential
information. If you are not one of the intended recipients, do not
duplicate or forward this e-mail message.

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Will Bryant 2019-07-05 10:42:35 Changing GENERATED ALWAYS AS expression
Previous Message Peter Eisentraut 2019-07-05 09:37:11 Re: Use relative rpath if possible