... BTW:
# select proname, proparallel from pg_proc where proname like 'binary_upg%';
proname | proparallel
--------------------------------------------+-------------
binary_upgrade_create_empty_extension | r
binary_upgrade_set_next_array_pg_type_oid | r
binary_upgrade_set_next_heap_pg_class_oid | r
binary_upgrade_set_next_index_pg_class_oid | r
binary_upgrade_set_next_pg_authid_oid | r
binary_upgrade_set_next_pg_enum_oid | r
binary_upgrade_set_next_pg_type_oid | r
binary_upgrade_set_next_toast_pg_class_oid | r
binary_upgrade_set_next_toast_pg_type_oid | r
binary_upgrade_set_record_init_privs | r
(10 rows)
I wonder whether we shouldn't mark *all* of these parallel-unsafe.
I'm not exactly convinced that 'restricted' is sufficient for the
others, and even if it is, there's certainly little if any upside
for letting them be executed in parallel-enabled mode.
regards, tom lane