st 26. 12. 2018 v 6:09 odesÃlatel Michael Paquier <mich...@paquier.xyz> napsal:
> On Wed, Dec 19, 2018 at 07:04:50AM +0100, Pavel Stehule wrote: > > I can imagine some tracking extension, that will do some > > initializations on plpgsql_stmt_block statement hook - but the most > > important will not be called ever. > > I was just studying this stuff and reviewing this patch with fresh > eyes, and it seems to me that it is actually incorrect. This changes > the execution logic so as stmt_beg and stmt_end are called > additionally each time a function, a trigger or an event trigger is > executed. If one looks closely at the code, he/she could notice that > func_beg and func_end are already present as hook points to watch what > is happening in the execution, as these are here to give entry points > for execution functions, so it seems to me that we don't need extra > watch calls as proposed, because there is already everything needed, > and that the current points are correct. > The design about this feature has not clean borders - I see a problem with func_beg and func_end because these handlers should to share some logic with stmt_beg, stmt_end when handler for stmt_block is not empty. More the some behave can be surprise for developer - example - if use handler for smt_beg then for code $$ BEGIN RETURN x; END; $$ is called only once - what is expected; but for code $$ BEGIN BEGIN RETURN x; END; END $$ is called two times, what is not expected, if you don't know some about this inconsistency. So it is reason, why I don't think so current behave is correct. On second hand, the impact is very small - only few extensions uses plpgsql plugin API, and workaround is not hard. So I can live with current state if nobody see this issue (sure - it is minor issue). Regards Pavel > -- > Michael >