The following query stopped working when upgrading from PostgreSQL 9.6 to 11:
with doc as (select * from documents where name = doc_id)
select jsonb_array_elements_text(permissions)
from users
where users.name = user_name
union
select 
  case 
    when doc.reader = user_name then 'read'
    when doc.owner = user_name then unnest(array['read','write'])
    else unnest(array[]::text[])
    end 
from doc;
The union as usual puts together two lists of values, both lists can have zero, one or more elements. 
The first select can return zero, one or more just because that's what's in the users table.
The second select always scans one row from the documents table, but returns zero, one or more rows depending on what the case decides. 
PostgreSQL 9.6 was working as expected, PostgreSQL 11 says:
ERROR:  set-returning functions are not allowed in CASE
LINE 56:    else unnest(array[]::text[])
                 ^
HINT:  You might be able to move the set-returning function into a LATERAL FROM item.
I appreciate the advice, but I can't figure out how to use a LATERAL FROM here.