Ășt 20. 4. 2021 v 4:47 odesĂ­latel Andy Fan <zhihui.fan1...@gmail.com> napsal:

>
>
> > - a PL/PGSQL function's meaning depends on the search path in effect
> when it is called, unless it has a SET search_path clause or it fully
> qualifies all object references, so it isn't actually possible in general
> to determine what a function calls at definition time
>
>
> I'd think this one as a blocker issue at the beginning since I have to
> insist on
> any new features should not cause semantic changes for existing ones.
> Later I
> found the new definition. As for this feature request, I think we can
> define the
> features like this:
>
> 1. We define a new attribute named VOLATILE_AUTO;  The semantic is PG will
> auto
>    detect the volatile info based on current search_path / existing
>    function. If any embedded function can't be found, we can raise an
> error if
>    VOLATILE_AUTO is used. If people change the volatile attribute later,
> we can:
>    a). do nothing. This can be the documented feature. or. b). Maintain the
>    dependency tree between functions and if anyone is changed, other
> functions
>    should be recalculated as well.
>
> 2. VOLATILE_AUTO should never be the default value. It only works when
> people
>    requires it.
>
> Then what we can get from this?  Thinking a user is migrating lots of UDF
> from
> other databases.  Asking them to check/set each function's attribute might
> be bad. However if we tell them about how VOLATILE_AUTO works, and they
> accept it (I guess most people would accept), then the migration would be
> pretty productive.
>
> I'm listening to any obvious reason to reject it.
>

a) This analyses can be very slow - PLpgSQL does lazy planning - query
plans are planned only when are required - and this feature requires
complete planning current function and all nested VOLATILE_AUTO functions -
so start of function can be significantly slower

b) When you migrate from Oracle,then you can use the STABLE flag, and it
will be mostly correct.

Regards

Pavel



> --
> Best Regards
> Andy Fan (https://www.aliyun.com/)
>

Reply via email to