From 05b555d12bc2ad0d581f48a12b45174db41dc10d Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Fri, 28 Sep 2012 15:19:15 -0400 Subject: 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 | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'doc/src') diff --git a/doc/src/sgml/protocol.sgml b/doc/src/sgml/protocol.sgml index e72556303ab..3d72a162ebf 100644 --- a/doc/src/sgml/protocol.sgml +++ b/doc/src/sgml/protocol.sgml @@ -1759,9 +1759,11 @@ The commands accepted in walsender mode are: After the second regular result set, one or more CopyResponse results will be sent, one for PGDATA and one for each additional tablespace other than pg_default and pg_global. The data in - the CopyResponse results will be a tar format (using ustar00 - extensions) dump of the tablespace contents. After the tar data is - complete, a final ordinary result set will be sent. + the CopyResponse results will be a tar format (following the + ustar interchange format specified in the POSIX 1003.1-2008 + standard) dump of the tablespace contents, except that the two trailing + blocks of zeroes specified in the standard are omitted. + After the tar data is complete, a final ordinary result set will be sent. -- cgit v1.2.3