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. -- Thanks and Regards Mahendra Singh Thalor EnterpriseDB: http://www.enterprisedb.com
From bbc014ab3e6d956df53aa7965d3a6b6d5d869baf Mon Sep 17 00:00:00 2001 From: Mahendra Singh Thalor <[email protected]> Date: Sun, 15 Mar 2026 00:38:16 +0530 Subject: [PATCH] pg_dumpall: -clean and --data-only are incompatible Report error when -clean and --data-only are given with pg_dumpall. As of now, we are dumping some data and later we are exiting with error from pg_dump. --- src/bin/pg_dump/pg_dumpall.c | 4 ++++ src/bin/pg_dump/t/001_basic.pl | 5 +++++ 2 files changed, 9 insertions(+) diff --git a/src/bin/pg_dump/pg_dumpall.c b/src/bin/pg_dump/pg_dumpall.c index 3d2a1d27aef..47a062d0160 100644 --- a/src/bin/pg_dump/pg_dumpall.c +++ b/src/bin/pg_dump/pg_dumpall.c @@ -455,6 +455,10 @@ main(int argc, char *argv[]) schema_only, "-s/--schema-only", tablespaces_only, "-t/--tablespaces-only"); + /* --clean and --data-only are incompatible */ + check_mut_excl_opts(output_clean, "-c/--clean", + data_only, "-a/--data-only"); + if (if_exists && !output_clean) pg_fatal("option %s requires option %s", "--if-exists", "-c/--clean"); diff --git a/src/bin/pg_dump/t/001_basic.pl b/src/bin/pg_dump/t/001_basic.pl index 2f5eb48e7b8..8aab1187282 100644 --- a/src/bin/pg_dump/t/001_basic.pl +++ b/src/bin/pg_dump/t/001_basic.pl @@ -50,6 +50,11 @@ command_fails_like( 'pg_dump: options -a/--data-only and -s/--schema-only cannot be used together' ); +command_fails_like( + [ 'pg_dumpall', '-c', '-a' ], + qr/\Qpg_dumpall: error: options -c\/--clean and -a\/--data-only cannot be used together\E/, + 'pg_dumpall: options -c/--clean and -a/--data-only cannot be used together'); + command_fails_like( [ 'pg_dump', '-s', '--statistics-only' ], qr/\Qpg_dump: error: options -s\/--schema-only and --statistics-only cannot be used together\E/, -- 2.52.0
