Working on upgrading a PostgreSQL 9.6 database to 10 , I am encountering the breaking change that set-returning functions, such as jsonb_object_keys and json_array_elements_text, can no longer be used in CASE expressions.
Where can the definitive list of set-returning functions (including built-ins) be found in PostgreSQL - it doesn't appear that there is a reference in the PostgreSQL documentation, and the result set of SELECT * FROM information_schema.routines does not appear to have an obvious column that indicates 'result type is a set'.
CodePudding user response:
Query the system catalog pg_proc.
select *
from pg_proc
where proretset
According to the documentation the column proretset contains this information.
proretset bool
Function returns a set (i.e., multiple values of the specified data type)
See also PostgreSQL error: CASE with JSON set-returning functions
