Thread: pgsql: Properly detect read and write errors in pg_dump/dumpall, and pg

pgsql: Properly detect read and write errors in pg_dump/dumpall, and pg

From
Bruce Momjian
Date:
Properly detect read and write errors in pg_dump/dumpall, and pg_restore

Previously some I/O errors were ignored.

Branch
------
master

Details
-------
http://git.postgresql.org/pg/commitdiff/14ea89366fe321609afc5838ff9fe2ded1cd707d

Modified Files
--------------
src/bin/pg_dump/compress_io.c         |   82 +++++++++++++++++++-----------
src/bin/pg_dump/compress_io.h         |    4 +-
src/bin/pg_dump/pg_backup.h           |    4 +-
src/bin/pg_dump/pg_backup_archiver.c  |   83 ++++++++++++++-----------------
src/bin/pg_dump/pg_backup_archiver.h  |   26 ++++++++--
src/bin/pg_dump/pg_backup_custom.c    |   88 ++++++++++++++-------------------
src/bin/pg_dump/pg_backup_db.c        |    2 +-
src/bin/pg_dump/pg_backup_directory.c |   51 +++++++++----------
src/bin/pg_dump/pg_backup_null.c      |   21 ++++----
src/bin/pg_dump/pg_backup_tar.c       |   83 ++++++++++++++++++-------------
10 files changed, 237 insertions(+), 207 deletions(-)


Re: pgsql: Properly detect read and write errors in pg_dump/dumpall, and pg

From
Andres Freund
Date:
On 2014-05-06 00:27:21 +0000, Bruce Momjian wrote:
> Properly detect read and write errors in pg_dump/dumpall, and pg_restore
>
> Previously some I/O errors were ignored.

My compiler complains about this with:

/home/andres/src/postgresql/src/bin/pg_dump/pg_backup_tar.c: In function ‘_tarReadRaw’:
/home/andres/src/postgresql/src/bin/pg_dump/pg_backup_archiver.h:48:19: warning: passing argument 1 of ‘gzeof’ from
incompatiblepointer type 
 #define GZEOF(fh) gzeof(fh)
                   ^
/home/andres/src/postgresql/src/bin/pg_dump/pg_backup_tar.c:561:24: note: in expansion of macro ‘GZEOF’
     if (res != len && !GZEOF(fh))
                        ^
In file included from /home/andres/src/postgresql/src/bin/pg_dump/pg_backup_archiver.h:44:0,
                 from /home/andres/src/postgresql/src/bin/pg_dump/pg_backup_tar.c:32:
/usr/include/zlib.h:1475:21: note: expected ‘gzFile’ but argument is of type ‘struct FILE *’
 ZEXTERN int ZEXPORT gzeof OF((gzFile file));
                     ^
You're passing fh to GZEOF instead of th->zFH if I see that correctly.

Greetings,

Andres Freund

--
 Andres Freund                       http://www.2ndQuadrant.com/
 PostgreSQL Development, 24x7 Support, Training & Services


Re: pgsql: Properly detect read and write errors in pg_dump/dumpall, and pg

From
Bruce Momjian
Date:
On Tue, May  6, 2014 at 05:52:59PM +0200, Andres Freund wrote:
> On 2014-05-06 00:27:21 +0000, Bruce Momjian wrote:
> > Properly detect read and write errors in pg_dump/dumpall, and pg_restore
> >
> > Previously some I/O errors were ignored.
>
> My compiler complains about this with:
>
> /home/andres/src/postgresql/src/bin/pg_dump/pg_backup_tar.c: In function ‘_tarReadRaw’:
> /home/andres/src/postgresql/src/bin/pg_dump/pg_backup_archiver.h:48:19: warning: passing argument 1 of ‘gzeof’ from
incompatiblepointer type 
>  #define GZEOF(fh) gzeof(fh)
>                    ^
> /home/andres/src/postgresql/src/bin/pg_dump/pg_backup_tar.c:561:24: note: in expansion of macro ‘GZEOF’
>      if (res != len && !GZEOF(fh))
>                         ^
> In file included from /home/andres/src/postgresql/src/bin/pg_dump/pg_backup_archiver.h:44:0,
>                  from /home/andres/src/postgresql/src/bin/pg_dump/pg_backup_tar.c:32:
> /usr/include/zlib.h:1475:21: note: expected ‘gzFile’ but argument is of type ‘struct FILE *’
>  ZEXTERN int ZEXPORT gzeof OF((gzFile file));
>                      ^
> You're passing fh to GZEOF instead of th->zFH if I see that correctly.

There were a few bugs, all fixed.  Thanks.

--
  Bruce Momjian  <bruce@momjian.us>        http://momjian.us
  EnterpriseDB                             http://enterprisedb.com

  + Everyone has their own god. +