PostgreSQL - dblink_exec statement_timeout

PostgreSQL - dblink_exec statement_timeout

我有一个函数在里面使用了 dblink_exec。有时这个执行需要很长时间,在某些情况下会产生死锁。 我知道我可以设置 local lock_timeout 和 local statement_timeout 但是当我在函数内部执行此操作时,它对 dblink_exec.

没有任何影响

有没有办法在 dblink_connect 上设置这些参数?我知道我可以在 .conf 文件上设置这两个参数,但我想在本地(每个连接)执行此操作。

这可能吗?

谢谢!

胡里奥

这很丑陋,但您可以使用 options 构造在连接字符串中指定语句超时(将在远程端实现)。

create or replace function dblink_timeout() returns int language plpgsql as $$ 
  declare xx int;  
begin 
  select x into xx from 
    dblink(
      'dbname=jjanes options = ''-c statement_timeout=500 -c lock_timeout=100''',
      'select count(*) from pgbench_accounts'
    ) as (x int);
  return xx; 
end 
$$;