Postgres ejecuta PL/pgSQL dentro de la transacción. Por lo tanto, no puede controlar la transacción desde dentro de PL/pgSQL . El código se verá así:
begin;
select plpgsql_fn();
do '/*same any plpgsql*/';
end;
Entonces, respondiendo a tu pregunta:
Si tiene PL/pgSQL ejecutando ATM, tiene su transacción ATM activa...
Por supuesto que puedes hacer algún truco, como comenzar/finalizar el trabajo sobre dblink o tal. pero luego puedes marcar select txid_current(); sobre el dblink correctamente...