On Sat, Apr 24, 2021 at 12:53 PM Amit Kapila <[email protected]> wrote: > > On Fri, Apr 23, 2021 at 6:45 PM Tom Lane <[email protected]> wrote: > > > > Greg Nancarrow <[email protected]> writes: > > > I'm curious. The FmgrBuiltin struct includes the "strict" flag, so > > > that would "lock down the value" of the strict flag, wouldn't it? > > > > It does, but that's much more directly a property of the function's > > C code than parallel-safety is. > > > > Isn't parallel safety also the C code property? I mean unless someone > changes the built-in function code, changing that property would be > dangerous. The other thing is even if a user is allowed to change one > function's property, how will they know which other functions are > called by that function and whether they are parallel-safe or not. For > example, say if the user wants to change the parallel safe property of > a built-in function brin_summarize_new_values, unless she changes its > code and the functions called by it like brin_summarize_range, it > would be dangerous. So, isn't it better to disallow changing parallel > safety for built-in functions? > > Also, if the strict property of built-in functions is fixed > internally, why we allow users to change it and is that of any help? >
Yes, I'd like to know too. I think it would make more sense to disallow changing properties like strict/parallel-safety on built-in functions. Also, with sufficient privileges, a built-in function can be redefined, yet the original function (whose info is cached in FmgrBuiltins[], from build-time) is always invoked, not the newly-defined version. Regards, Greg Nancarrow Fujitsu Australia
