On Wed, Apr 21, 2021 at 7:04 PM Tom Lane <t...@sss.pgh.pa.us> wrote: > > Amit Kapila <amit.kapil...@gmail.com> writes: > > On Wed, Apr 21, 2021 at 8:12 AM tsunakawa.ta...@fujitsu.com > > <tsunakawa.ta...@fujitsu.com> wrote: > >> From: Tom Lane <t...@sss.pgh.pa.us> > >>> [ raised eyebrow... ] I find it very hard to understand why that would > >>> be necessary, or even a good idea. > > > IIUC, the idea here is to check for parallel safety of functions at > > someplace in the code during function invocation so that if we execute > > any parallel unsafe/restricted function via parallel worker then we > > error out. If so, isn't it possible to deal with built-in and > > non-built-in functions in the same way? > > Yeah, one of the reasons I doubt this is a great idea is that you'd > still have to fetch the pg_proc row for non-built-in functions. >
So, are you suggesting that we should fetch the pg_proc row for built-in functions as well for this purpose? If not, then how to identify parallel safety of built-in functions in fmgr_info()? Another idea could be that we check parallel safety of built-in functions based on some static information. As we know the func_ids of non-parallel-safe built-in functions, we can have a function fmgr_builtin_parallel_safe() which check if the func_id is not one among the predefined func_ids of non-parallel-safe built-in functions, it returns true, otherwise, false. Then, we can call this new function in fmgr_info for built-in functions. Thoughts? -- With Regards, Amit Kapila.