Hi,

While testing pg_dumpall in v18, I noticed that it still dumps global objects
such as roles and tablespaces even when --statistics-only or --no-schema is
specified. This seems unexpected.

Since pg_dumpall treats global objects as schema-level content, it currently
includes them with --schema-only but skips them with --data-only. By that logic,
it should also skip them when either --statistics-only or --no-schema is used.
Thought?

Attached is a patch to fix this behavior.

Originally, I planned to work on this after we settled the ongoing discussion
about pg_dump options in [1], but since that may take some time, I wanted to
bring this up now so I don't forget the issue.

Regards,

[1] https://postgr.es/m/7cc52488-f876-4ad3-affd-6e4b0ef0c...@eisentraut.org

--
Fujii Masao
NTT DATA Japan Corporation
From a3cd7c76f456144c62e3652cf3edd77d2d8d3816 Mon Sep 17 00:00:00 2001
From: Fujii Masao <fu...@postgresql.org>
Date: Tue, 24 Jun 2025 23:56:28 +0900
Subject: [PATCH v1] pg_dumpall: Skip global objects with --statistics-only or
 --no-schema.

Previously, pg_dumpall would still dump global objects such as roles
and tablespaces even when --statistics-only or --no-schema was specified.
Since these global objects are treated as schema-level data, they should
be skipped in these cases.

This commit fixes the issue by ensuring that global objects are not
dumped when either --statistics-only or --no-schema is used.
---
 src/bin/pg_dump/pg_dumpall.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/bin/pg_dump/pg_dumpall.c b/src/bin/pg_dump/pg_dumpall.c
index 3cbcad65c5f..100317b1aa9 100644
--- a/src/bin/pg_dump/pg_dumpall.c
+++ b/src/bin/pg_dump/pg_dumpall.c
@@ -632,7 +632,7 @@ main(int argc, char *argv[])
                fprintf(OPF, "SET escape_string_warning = off;\n");
        fprintf(OPF, "\n");
 
-       if (!data_only)
+       if (!data_only && !statistics_only && !no_schema)
        {
                /*
                 * If asked to --clean, do that first.  We can avoid detailed
-- 
2.49.0

Reply via email to