Hi, Triggered by the thread at [1] I looked for functions marked as immutable but not parallel safe.
postgres[19492][1]=# SELECT oid::regprocedure, provolatile, proparallel FROM pg_proc WHERE provolatile = 'i' AND proparallel != 's'; ┌─────────────┬─────────────┬─────────────┐ │ oid │ provolatile │ proparallel │ ├─────────────┼─────────────┼─────────────┤ │ pg_config() │ i │ r │ └─────────────┴─────────────┴─────────────┘ (1 row) # pg_config { oid => '3400', descr => 'pg_config binary as a function', proname => 'pg_config', prorows => '23', proretset => 't', proparallel => 'r', prorettype => 'record', proargtypes => '', proallargtypes => '{text,text}', proargmodes => '{o,o}', proargnames => '{name,setting}', prosrc => 'pg_config' }, so that function is marked as immutable but not parallel safe, without an explanation for that odd combination. Now obviously I don't think it practially matters for pg_config(), but it seems unnecessarily confusing as a general matter. I think we probably should fix this specific case, and then add a check to opr_sanity.sql or such. As far as I can tell pg_config() was marked as such since its addition in [2]. Joe, I assume this wasn't intentional? Greetings, Andres Freund [1] https://www.postgresql.org/message-id/CA+6d-n4dOakgLu2gsTfk9uD2CC9ueNCg+z_mnXA2-=qaod1...@mail.gmail.com [2] http://git.postgresql.org/gitweb/?p=postgresql.git;a=commit;h=a5c43b886942e96ec5c745041f2d6a50c3205147