BUG #18310: Some SQL commands fail to process duplicate objects with error: tuple already updated by self

The Post Office <noreply@postgresql.org>

From: PG Bug reporting form <noreply@postgresql.org>
To: pgsql-bugs@lists.postgresql.org
Cc: exclusion@gmail.com
Date: 2024-01-25T04:00:01Z
Lists: pgsql-bugs
The following bug has been logged on the website:

Bug reference:      18310
Logged by:          Alexander Lakhin
Email address:      exclusion@gmail.com
PostgreSQL version: 16.1
Operating system:   Ubuntu 22.04
Description:        

[ this bug reported to fix defects discovered while working on bug #18297
]

The following query:
CREATE ROLE u;
DROP ROLE u, u;
fails with
ERROR:  tuple already updated by self

Whilst all the other DROP commands, accepting a list of objects (namely,
AGGREGATE, DOMAIN, EXTENSION, FOREIGN DATA WRAPPER, FOREIGN TABLE,
FUNCTION, INDEX, MATERIALIZED VIEW, OPERATOR, PROCEDURE, ROUTINE,
SEQUENCE, SERVER, STATISTICS, TABLE, TYPE, VIEW), handle such duplicates
with no error.

Also, the following ALTER query:
CREATE TEXT SEARCH CONFIGURATION ispell_tst (COPY=english);
CREATE TEXT SEARCH DICTIONARY ispell (Template=ispell,
 DictFile=ispell_sample, AffFile=ispell_sample);
ALTER TEXT SEARCH CONFIGURATION ispell_tst ALTER MAPPING FOR word, word
 WITH ispell;
fails with the same
ERROR:  tuple already updated by self

Again, I re-checked all the other ALTER commands, that accept a list of
objects, and could not find other ones producing the same error.

Commits

  1. Fix various issues with ALTER TEXT SEARCH CONFIGURATION

  2. Fix DROP ROLE when specifying duplicated roles