nameэто встроенный тип, расположенный в publicпространстве имен.
При создании таблицы с этим именем в select * from pg_catalog.pg_type where typname='name'схеме создается другой тип, также называемый nameв nameсхеме, поскольку каждая таблица также является составным типом. Вы можете проверить это с помощьюSELECT 'bigint'::name AS sequence_type...
Обычно, когда вы делаете что-то name, как и запрос, который терпит неудачу ( pg_catalog), это тот тип, pg_catalogкоторый получает выбранный, потому что он publicнеявно предшествует search_path в 'bigint'::name, как указано в документе :
В дополнение к общедоступным и созданным пользователями схемам каждая база данных содержит схему pg_catalog, которая содержит системные таблицы и все встроенные типы данных, функции и операторы. pg_catalog всегда эффективно является частью пути поиска. Если он явно не указан явно в пути, он неявно просматривается перед поиском схем пути. Это гарантирует, что встроенные имена всегда будут доступны. Однако вы можете явно разместить pg_catalog в конце вашего пути поиска, если вы предпочитаете, чтобы пользовательские имена переопределяли встроенные имена .
Сообщение об ошибке, полученное с pg_dumpпомощью средств postgres, разрешает листинг с типом, соответствующим вашей таблице в publicсхеме, тогда как явно name ожидает, что nameвместо этого будет найден встроенный тип.
Таким образом, похоже, что вы в этом случае подчеркнуты в приведенном выше параграфе, что противоречит встроенным типам, по крайней мере для pg_dump.
Чтобы проверить эту теорию, проверьте работоспособность search_pathпользователя pg_dumpи попытайтесь сбросить его после сброса до безобидного значения, например:
ALTER USER user_running_pg_dump SET search_path TO public;