Il problema è che il dump usa la funzione pg_catalog.lowrite(integer, bytea)
per creare l'oggetto grande e la sintassi predefinita how bytea
i letterali sono rappresentati in PostgreSQL è cambiato con la versione 9.0.
C'è il parametro bytea_output
che può essere impostato su escape
per produrre bytea
nel vecchio formato con le versioni successive di PostgreSQL. Ahimè, pg_dump
non rispetta quel parametro durante la creazione di dump, utilizza sempre il "nuovo" hex
formato.
Il risultato è che un dump contenente oggetti di grandi dimensioni da una versione PostgreSQL di 9.0 o successive non può essere ripristinato in un database precedente alla 9.0.
Dovrai trasferire questi oggetti di grandi dimensioni in qualche altro modo, probabilmente scrivendo un programma di migrazione.
Potresti proporre (sulla mailing list pgsql-hackers) un'opzione per pg_dump
che permette di impostare bytea_escape
per il dump, ma potresti incontrare resistenza, poiché il ripristino di un dump da una versione successiva di PostgreSQL a una precedente non è supportato.