Related to this, there is quite a large variation across Postgres versions about whether a particular DML query will take an exclusive lock or not.
Is there a good way to analyse a query and be informed of what sort of lock it will take?
I’ve always resorted to re-reading docs when I’m unsure.