pgsql: Flush table's relcache during ALTER TABLE ADD PRIMARY KEY USING - Mailing list pgsql-committers

From Tom Lane
Subject pgsql: Flush table's relcache during ALTER TABLE ADD PRIMARY KEY USING
Date
Msg-id E1nBLC7-0004ui-Vf@gemulon.postgresql.org
Whole thread Raw
List pgsql-committers
Flush table's relcache during ALTER TABLE ADD PRIMARY KEY USING INDEX.

Previously, unless we had to add a NOT NULL constraint to the column,
this command resulted in updating only the index's relcache entry.
That's problematic when replication behavior is being driven off the
existence of a primary key: other sessions (and ours too for that
matter) failed to recalculate their opinion of whether the table can
be replicated.  Add a relcache invalidation to fix it.

This has been broken since pg_class.relhaspkey was removed in v11.
Before that, updating the table's relhaspkey value sufficed to cause
a cache flush.  Hence, backpatch to v11.

Report and patch by Hou Zhijie

Discussion: https://postgr.es/m/OS0PR01MB5716EBE01F112C62F8F9B786947B9@OS0PR01MB5716.jpnprd01.prod.outlook.com

Branch
------
REL_14_STABLE

Details
-------
https://git.postgresql.org/pg/commitdiff/3839e29c58b44639bb6800f3415af87f4d1fb655

Modified Files
--------------
src/backend/catalog/index.c               | 11 +++++++++++
src/test/regress/expected/publication.out | 14 ++++++++++++++
src/test/regress/sql/publication.sql      | 13 +++++++++++++
3 files changed, 38 insertions(+)


pgsql-committers by date:

Previous
From: Tom Lane
Date:
Subject: pgsql: Fix race condition in gettext() initialization in libpq and ecpg
Next
From: Tom Lane
Date:
Subject: pgsql: Flush table's relcache during ALTER TABLE ADD PRIMARY KEY USING