O problema é que o dump usa a função
pg_catalog.lowrite(integer, bytea)
para criar o objeto grande e a sintaxe padrão como bytea
literais são representados no PostgreSQL mudou com a versão 9.0. Existe o parâmetro
bytea_output
que pode ser definido como escape
para produzir bytea
no formato antigo com versões posteriores do PostgreSQL. Infelizmente, pg_dump
não respeita esse parâmetro ao criar dumps, ele sempre usa o “novo” hex
formato. O resultado é que um dump contendo objetos grandes de uma versão do PostgreSQL 9.0 ou posterior não pode ser restaurado em um banco de dados pré-9.0.
Você terá que transferir esses objetos grandes de alguma outra forma, provavelmente escrevendo um programa de migração.
Você poderia propor (na lista de discussão pgsql-hackers) uma opção para
pg_dump
que permite definir bytea_escape
para o dump, mas você pode encontrar resistência, pois a restauração de um dump de uma versão posterior do PostgreSQL para uma mais antiga não é suportada.