Re: bug: pg_dumpall with --data-only and --clean options is giving an error after some dump - Mailing list pgsql-hackers

From Srinath Reddy Sadipiralla
Subject Re: bug: pg_dumpall with --data-only and --clean options is giving an error after some dump
Date
Msg-id CAFC+b6pOQ3HZMVQu43jZo-pA7+Y+ndPprKa5jV6CQoug3xcs1Q@mail.gmail.com
Whole thread
In response to bug: pg_dumpall with --data-only and --clean options is giving an error after some dump  (Mahendra Singh Thalor <mahi6run@gmail.com>)
List pgsql-hackers
Hello,

On Sun, Mar 15, 2026 at 12:49 AM Mahendra Singh Thalor <mahi6run@gmail.com> wrote:
Hi all,

I was doing some tests with pg_dump, pg_dumpall and pg_restore tools. With "pg_dumpall --data-only --clean", we are reporting an error after dumping some data.

Please see the example below.

./pg_dumpall --data-only --clean
--
-- PostgreSQL database cluster dump
--

\restrict ZQDDv56JBW8CVfkLsRDeyRpBvDGYUeqhZbJkDccKbXG8q6PI4RB69Dd8KaqcWMY

SET default_transaction_read_only = off;

SET client_encoding = 'UTF8';
SET standard_conforming_strings = on;

\unrestrict ZQDDv56JBW8CVfkLsRDeyRpBvDGYUeqhZbJkDccKbXG8q6PI4RB69Dd8KaqcWMY

--
-- Databases
--

--
-- Database "template1" dump
--

pg_dump: error: options -c/--clean and -a/--data-only cannot be used together
pg_dumpall: error: pg_dump failed on database "template1", exiting


Error is coming from pg_dump but it should come from pg_dumpall without any dump.

Here, I am attaching a patch to fix this problem. Please review this.

+1 for the fix , as it immediately throws an error in pg_dumpall itself,
instead of going through all the way until pg_dump and then finding
out it's not a correct combination of options.

I have reviewed,tested the patch , except these it LGTM.
1) maybe match the pg_dumpall comment with the pg_dump comment.
2) please fix the indentation using pgindent

diff --git a/src/bin/pg_dump/pg_dumpall.c b/src/bin/pg_dump/pg_dumpall.c
index 47a062d0160..b47e683e1d4 100644
--- a/src/bin/pg_dump/pg_dumpall.c
+++ b/src/bin/pg_dump/pg_dumpall.c
@@ -455,9 +455,9 @@ main(int argc, char *argv[])
                                                schema_only, "-s/--schema-only",
                                                tablespaces_only, "-t/--tablespaces-only");
 
-       /* --clean and --data-only are incompatible */
+       /* --clean is incompatible with --data-only */
        check_mut_excl_opts(output_clean, "-c/--clean",
-                       data_only, "-a/--data-only");
+                                               data_only, "-a/--data-only");
 
        if (if_exists && !output_clean)
                pg_fatal("option %s requires option %s",

--
Thanks,
Srinath Reddy Sadipiralla
EDB: https://www.enterprisedb.com/

pgsql-hackers by date:

Previous
From: Marcos Magueta
Date:
Subject: Re: WIP - xmlvalidate implementation from TODO list
Next
From: Zsolt Parragi
Date:
Subject: Re: Proposal: common explicit lists for installed headers