I think we can sort the role_addresses list and skip the same role id. I don't intend to fix above two issues in one patch.
So I add a new 0001 attached patch.
Perhaps, you would like to fix it in passing too. I've rechecked all the other object types, that can be DROPped with a list (namely, AGGREGATE, DOMAIN, EXTENSION, FOREIGN DATA WRAPPER, FOREIGN TABLE, FUNCTION, INDEX, MATERIALIZED VIEW, OPERATOR, PROCEDURE, ROUTINE, SEQUENCE, SERVER, STATISTICS, TABLE, TYPE, VIEW), and found that all of these handle such duplicate entries with no error.
I'm not sure if there are other problems like this.
Yes, I've encountered a similar issue, this time with ALTER (TEXT SEARCH CONFIGURATION): 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; ERROR: tuple already updated by self
Yes, this is another issue that DDL operation on an same object twice. Maybe we can report error on Parse phase.
But as you say, all the other DDL commands run OK, so maybe it's better to process this case in execution phase.
I will send a patch later.
And I'm just curious that how do you find these issues? Use some tools?
And again, I could not get similar errors with all the other ALTER commands, that accept lists.
Sorry for mixing two different problems together, I should have reported it separately.