pg_dump, gzwrite, and errno

Поиск
Список
Период
Сортировка
От Justin Pryzby
Тема pg_dump, gzwrite, and errno
Дата
Msg-id 20200611153753.GU14879@telsasoft.com
обсуждение исходный текст
Ответы Re: pg_dump, gzwrite, and errno  (Alvaro Herrera <alvherre@2ndquadrant.com>)
Список 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 по дате отправления:

Предыдущее
От: Justin Pryzby
Дата:
Сообщение: Re: how to create index concurrently on partitioned table
Следующее
От: Dilip Kumar
Дата:
Сообщение: Re: new heapcheck contrib module