Fix tar files emitted by pg_dump and pg_basebackup to be POSIX conformant.
Tom Lane <tgl@sss.pgh.pa.us>
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
Files
| Path | Change | +/− |
|---|---|---|
| doc/src/sgml/protocol.sgml | modified | +5 −3 |
| src/backend/replication/basebackup.c | modified | +40 −23 |
| src/bin/pg_dump/pg_backup_tar.c | modified | +53 −34 |
| src/bin/pg_dump/pg_backup_tar.h | modified | +12 −9 |