pid 1 lookup table locks
select pid from pg_locks l join pg_class t on l.relation = t.oid where t.relkind = 'r' and t.relname = 'lockedtable';
2 Find the lock table statement
select pid, state, usename, query, query_start from pg_stat_activity where pid in ( select pid from pg_locks l join pg_class t on l.relation = t.oid and t.relkind = 'r' where t.relname = 'lockedtable');
3 Find all active locked tables
select pid, state, usename, query, query_start from pg_stat_activity where pid in ( select pid from pg_locks l join pg_class t on l.relation = t.oid and t.relkind = 'r' );
4 Unlock
SELECT pg_cancel_backend(pid);
5 batch (not to exclude themselves)
select pg_cancel_backend(pid) from pg_stat_activity where pid in ( select pid from pg_locks l join pg_class t on l.relation = t.oid and t.relkind = 'r' );
reference:
1 https://jaketrent.com/post/find-kill-locks-postgres/
2 https://www.postgresonline.com/journal/archives/134-Terminating-Annoying-Back-Ends.html