Re: [HACKERS] Transaction control in procedures
От | Simon Riggs |
---|---|
Тема | Re: [HACKERS] Transaction control in procedures |
Дата | |
Msg-id | CANP8+jKaoyvzYh0nNmrF5TPu9avuSHSBoK=L-p9rAacrhDxURw@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: [HACKERS] Transaction control in procedures (Peter Eisentraut <peter.eisentraut@2ndquadrant.com>) |
Ответы |
Re: [HACKERS] Transaction control in procedures
Re: [HACKERS] Transaction control in procedures |
Список | pgsql-hackers |
On 14 November 2017 at 13:09, Peter Eisentraut <peter.eisentraut@2ndquadrant.com> wrote: >> *) Will pg_cancel_backend() cancel the currently executing statement >> or the procedure? (I guess probably the procedure but I'm curious) > > Same as the way it currently works. It will raise an exception, which > will travel up the stack and eventually issue an error or be caught. If > someone knows more specific concerns here I could look into it, but I > don't see any problem. > >> *) Will long running procedures be subject to statement timeout (and >> does it apply to the entire procedure)? > > See previous item. > >> Will they be able to control >> statement_timeout from within the procedure itself? > > The statement timeout alarm is set by the top-level execution loop, so > you can't change a statement timeout that is already in progress. But > you could change the GUC and commit it for the next top-level statement. > >> *) Will pg_stat_activity show the invoking CALL or the currently >> executing statement? I see a strong argument for showing both of >> these things. although I understand that's out of scope here. > > Not different from a function execution, i.e., top-level statement. Which is the "top-level statement"? The CALL or the currently executing statement within the proc? I think you mean former. For the first two answers above the answer was "currently executing statement", yet the third answer seems to be the procedure. So that is a slight discrepancy. ISTM we would like 1) a way to cancel execution of a procedure 2) a way to set a timeout to cancel execution of a procedure as well as 1) a way to cancel execution of a statement that is running within a procedure 2) a way to set a timeout to cancel execution of a statement in a procedure Visibility of what a routine is currently executing is the role of a debugger utility/API. -- Simon Riggs http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
В списке pgsql-hackers по дате отправления: