pg_dump, gzwrite, and errno - Mailing list pgsql-hackers

From Justin Pryzby
Subject pg_dump, gzwrite, and errno
Date
Msg-id 20200611153753.GU14879@telsasoft.com
Whole thread Raw
Responses Re: pg_dump, gzwrite, and errno
List pgsql-hackers
While testing Pavel's patch for pg_dump --filter, I got:

pg_dump: error: could not write to output file: Success
[pryzbyj@database postgresql]$ echo $?
1

I see we tried to fix it few years ago:
https://www.postgresql.org/message-id/flat/1498120508308.9826%40infotecs.ru
https://www.postgresql.org/message-id/flat/20160125143008.2539.2878%40wrigleys.postgresql.org
https://www.postgresql.org/message-id/20160307.174354.251049100.horiguchi.kyotaro@lab.ntt.co.jp
https://www.postgresql.org/message-id/20150608174336.GM133018@postgresql.org

Commits:
4d57e83816778c6f61ea35c697f937a6f9c3c3de
9a3b5d3ad0f1c19c47e2ee65b372344cb0616c9a

This patch fixes it for me
pg_dump: error: could not write to output file: No space left on device

--- a/src/bin/pg_dump/pg_backup_directory.c
+++ b/src/bin/pg_dump/pg_backup_directory.c
@@ -347,8 +347,12 @@ _WriteData(ArchiveHandle *AH, const void *data, size_t dLen)
        lclContext *ctx = (lclContext *) AH->formatData;
 
        if (dLen > 0 && cfwrite(data, dLen, ctx->dataFH) != dLen)
+       {
+               if (errno == 0)
+                       errno = ENOSPC;
                fatal("could not write to output file: %s",
                          get_cfp_error(ctx->dataFH));
+       }
 }


PS. Due to $UserError, I originally sent this message with inaccurate RFC822
headers..



pgsql-hackers by date:

Previous
From: Justin Pryzby
Date:
Subject: Re: how to create index concurrently on partitioned table
Next
From: Dilip Kumar
Date:
Subject: Re: new heapcheck contrib module