[patch] pg_dump/pg_restore zerror() and strerror() mishap

Kunshchikov Vladimir <vladimir.kunshchikov@infotecs.ru>

From: Kunshchikov Vladimir <Vladimir.Kunshchikov@infotecs.ru>
To: "pgsql-hackers@postgresql.org" <pgsql-hackers@postgresql.org>
Date: 2017-06-22T08:46:21Z
Lists: pgsql-hackers

Attachments

Hello,

    our testing team has noticed apparently wrong backup/restore error messages like this:


pg_restore: [compress_io] could not read from input file: success
pg_dump: [directory archiver] could not write to output file: success



Such "success" messages are caused by calling strerror() after gzread()/gzwrite() failures.

In order to properly decode errors, there should be used  gzerror() instead of strerror():
 http://refspecs.linuxbase.org/LSB_2.1.0/LSB-generic/LSB-generic/zlib-gzerror-1.html

Errors should be like this:
pg_restore: [compress_io] could not read from input file: d3/2811.dat.gz: invalid distance too far back

Attached small fix for this issue.

You can view that patch  online on our github:
https://github.com/Infotecs/postgres/commit/1578f5011ad22d78ae059a4ef0924426fd6db762


--
Best regards,
Vladimir Kunschikov
Lead software developer
IDS project
InfoTeCS JSC

<http://portal.infotecs.int/company/structure/Pages/detailsDepartment.aspx?idDepartment=235&idCompany=17>

Commits

  1. Fix pg_dump's errno checking for zlib I/O

  2. Add pg_basebackup tool for streaming base backups