]> granicus.if.org Git - postgresql/commit
Fix tar files emitted by pg_dump and pg_basebackup to be POSIX conformant.
authorTom Lane <tgl@sss.pgh.pa.us>
Fri, 28 Sep 2012 19:19:15 +0000 (15:19 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Fri, 28 Sep 2012 19:19:15 +0000 (15:19 -0400)
commit05b555d12bc2ad0d581f48a12b45174db41dc10d
tree4b279376cbd5d9bec6eb28267ab6d353abe09c15
parentedc9109c42299ea8d7d897647967cf65d638617c
Fix tar files emitted by pg_dump and pg_basebackup to be POSIX conformant.

Both programs got the "magic" string wrong, causing standard-conforming tar
implementations to believe the output was just legacy tar format without
any POSIX extensions.  This doesn't actually matter that much, especially
since pg_dump failed to fill the POSIX fields anyway, but still there is
little point in emitting tar format if we can't be compliant with the
standard.  In addition, pg_dump failed to write the EOF marker correctly
(there should be 2 blocks of zeroes not just one), pg_basebackup put the
numeric group ID in the wrong place, and both programs had a pretty
brain-dead idea of how to compute the checksum.  Fix all that and improve
the comments a bit.

pg_restore is modified to accept either the correct POSIX-compliant "magic"
string or the previous value.  This part of the change will need to be
back-patched to avoid an unnecessary compatibility break when a previous
version tries to read tar-format output from 9.3 pg_dump.

Brian Weaver and Tom Lane
doc/src/sgml/protocol.sgml
src/backend/replication/basebackup.c
src/bin/pg_dump/pg_backup_tar.c
src/bin/pg_dump/pg_backup_tar.h