Обсуждение: statement_timeout doesnt work within plpgsql by design?
pagila=# select version(); version -------------------------------------------------------------PostgreSQL 8.2.3 on i386-pc-solaris2.10, compiled by cc -Xa (1 row) pagila=# create or replace function test() returns bool as $$ begin set statement_timeout = 3000; perform pg_sleep(4) ; return true; end $$ language plpgsql; CREATE FUNCTION pagila=# select test();test ------t (1 row) pagila=# select test(); ERROR: canceling statement due to statement timeout CONTEXT: SQL statement "SELECT pg_sleep(4)" PL/pgSQL function "test" line 1 at perform is this behavior by design? if so why would you design it that way? :-) -- Robert Treat Build A Brighter LAMP :: Linux Apache {middleware} PostgreSQL
Robert Treat <xzilla@users.sourceforge.net> writes: > pagila=# create or replace function test() returns bool as $$ begin set > statement_timeout = 3000; perform pg_sleep(4) ; return true; end $$ language > plpgsql; > CREATE FUNCTION statement_timeout is measured across an entire interactive command, not individual commands within a function; and the timeout that applies to an interactive command is determined at its beginning. So the above doesn't do what you think. regards, tom lane
On Tuesday 20 February 2007 12:50, Tom Lane wrote: > Robert Treat <xzilla@users.sourceforge.net> writes: > > pagila=# create or replace function test() returns bool as $$ begin set > > statement_timeout = 3000; perform pg_sleep(4) ; return true; end $$ > > language plpgsql; > > CREATE FUNCTION > > statement_timeout is measured across an entire interactive command, not > individual commands within a function; and the timeout that applies to > an interactive command is determined at its beginning. So the above > doesn't do what you think. > Well, I'd be happy if it caused the entire function to bail out or if it caused individual statements within a function to bail out, but it does neither. I can see how that would be a bit tricky to implement though. -- Robert Treat Build A Brighter LAMP :: Linux Apache {middleware} PostgreSQL