Flush table's relcache during ALTER TABLE ADD PRIMARY KEY USING INDEX.
Tom Lane <tgl@sss.pgh.pa.us>
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
Files
| Path | Change | +/− |
|---|---|---|
| src/backend/catalog/index.c | modified | +11 −0 |
| src/test/regress/expected/publication.out | modified | +14 −0 |
| src/test/regress/sql/publication.sql | modified | +13 −0 |
Discussion
- relcache not invalidated when ADD PRIMARY KEY USING INDEX 4 messages · 2021-12-20 → 2022-01-22