Mini-bomba do dia:
Rotina de exclusão de banco/usuario postgres não era executada quando haviam conexões em idle ou queries sendo executadas no momento.
Depois de um tempo de pesquisa eis a solução:
SELECT pg_cancel_backend(procpid) FROM pg_stat_activity WHERE usename = 'BANCO_DE_DADOS'; SELECT pg_terminate_backend(procpid) FROM pg_stat_activity WHERE usename = 'BANCO_DE_DADOS';
Bonus stage:
Para visualizar as conexões ativas e garantir que matou todos os pids:
select * from pg_stat_activity WHERE datname='BANCO_DE_DADOS';
Atualização: a function pg_terminate_backend() só funciona em postgre 8.4 ou superior, logo estou procurando outra opção via query em versões antigas, pois matar os pids via kill não eh uma alternativa no que estou fazendo.