Thread: pg_dump is not backwards compatible in PG12

pg_dump is not backwards compatible in PG12

From
Vera Gangeskar Johne
Date:
PG 12 bumped the pg_backup_archiver version to 1.14, however this version is not supported in past versions of pg_backup_archiver, resulting in restores to earlier versions not working.

- Supported pg_backup_archiver versions in 12: https://github.com/postgres/postgres/blob/REL_12_0/src/bin/pg_dump/pg_backup_archiver.h#L77-L103

The following steps will reproduce the error:
1. pg_dump on a 12.1 database
2. pg_restore to a postgres db on a version < 12 (in my case 9.6).  The error: `pg_restore: [archiver] unsupported version (1.14) in file header`

Questions/observations:
1. Is it expected that pg_dump will produce backwards incompatible dumps? If so, is this documented somewhere?
2. The release notes don't mention this at all as far as I could see. Should they?
3. Should this be a bug? This is the first backwards incompatibility in pg_dump (that I can see) since 9.6

Thanks,
Vera Johne

Re: pg_dump is not backwards compatible in PG12

From
Tom Lane
Date:
Vera Gangeskar Johne <vjohne@salesforce.com> writes:
> PG 12 bumped the pg_backup_archiver version to 1.14, however this version
> is not supported in past versions of pg_backup_archiver, resulting in
> restores to earlier versions not working.

Yup.  Use a newer version of pg_restore.

> 1. Is it expected that pg_dump will produce backwards incompatible dumps?

It's happened before, and it will happen again, no doubt.

> 2. The release notes don't mention this at all as far as I could see.
> Should they?

Possibly.  In practice, backwards-incompatibility of the SQL contained
in the dump is a bigger issue most of the time than the dump file format
proper, and there are issues of that sort in almost every major release.

> 3. Should this be a bug?

No.  It's impractical to freeze that file format, because we keep adding
new things that pg_dump has to deal with (as the version history you found
shows).  Maybe it could've been designed to be more extension-friendly,
but such a redesign would itself be backwards-incompatible.

            regards, tom lane