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
>

Reply via email to