Обсуждение: Documentation clarification request: pg_dumpall and Large Objects
Hello,
I would like to request a clarification in the pg_dumpall
documentation regarding Large Objects (LOBs). The current
documentation does not explicitly state whether pg_dumpall includes
Large Objects in its output.
In the source code (pg_dumpall.c), there is a comment indicating
that pg_dumpall forces all pg_dump output to plain text. Since Large
Objects are only included by pg_dump when using -b or non-text
archive formats (custom/tar), pg_dumpall cannot include LOBs in its
output.
This behavior is clear from the implementation, but not from the
documentation.
I propose adding an explicit note such as:
"pg_dumpall does not include Large Objects (BLOBs). To back up
Large Objects, use pg_dump -b per database."
This clarification would help prevent user confusion during
cluster-wide backup procedures.
Thank you.
Best regards,
Dimitre Radoulov
On Thu, 2025-12-04 at 13:12 +0100, Radoulov, Dimitre wrote:
> I would like to request a clarification in the pg_dumpall
> documentation regarding Large Objects (LOBs). The current
> documentation does not explicitly state whether pg_dumpall includes
> Large Objects in its output.
>
> This behavior is clear from the implementation, but not from the
> documentation.
>
> I propose adding an explicit note such as:
>
> "pg_dumpall does not include Large Objects (BLOBs). To back up
> Large Objects, use pg_dump -b per database."
At the beginning of the "pg_dumpall" page we see:
pg_dumpall is a utility for writing out (“dumping”) all PostgreSQL databases
of a cluster into one script file. [...].
It does this by calling pg_dump for each database in the cluster.
And the pg_dump documentation says:
-b
--large-objects
--blobs (deprecated)
Include large objects in the dump. This is the default behavior except when
--schema, --table, --schema-only, --statistics-only, or --no-data is specified.
Since pg_dumpall dumps the databases (and not parts of the databases), it will
automatically dump large objects too.
But I admit that you have to go by circumstantial evidence here. But rather
than explicitly naming large objects, perhaps it would be useful to add something
like
pg_dumpall is primarily intended as a tool to upgrade database clusters.
As such, it by default exports all data of the entire cluster.
The only part of the state of a database cluster that is *not* included
in the output of pg_dumpall are the configuration files and database parameters
changed with ALTER SYSTEM.
Yours,
Laurenz Albe
Il Gio 4 Dic 2025, 16:50 Laurenz Albe <laurenz.albe@cybertec.at> ha scritto:
On Thu, 2025-12-04 at 13:12 +0100, Radoulov, Dimitre wrote:
> I would like to request a clarification in the pg_dumpall
> documentation regarding Large Objects (LOBs). The current
> documentation does not explicitly state whether pg_dumpall includes
> Large Objects in its output.
>
> This behavior is clear from the implementation, but not from the
> documentation.
>
> I propose adding an explicit note such as:
>
> "pg_dumpall does not include Large Objects (BLOBs). To back up
> Large Objects, use pg_dump -b per database."
At the beginning of the "pg_dumpall" page we see:
pg_dumpall is a utility for writing out (“dumping”) all PostgreSQL databases
of a cluster into one script file. [...].
It does this by calling pg_dump for each database in the cluster.
And the pg_dump documentation says:
-b
--large-objects
--blobs (deprecated)
Include large objects in the dump. This is the default behavior except when
--schema, --table, --schema-only, --statistics-only, or --no-data is specified.
Since pg_dumpall dumps the databases (and not parts of the databases), it will
automatically dump large objects too.
But I admit that you have to go by circumstantial evidence here. But rather
than explicitly naming large objects, perhaps it would be useful to add something
like
pg_dumpall is primarily intended as a tool to upgrade database clusters.
As such, it by default exports all data of the entire cluster.
The only part of the state of a database cluster that is *not* included
in the output of pg_dumpall are the configuration files and database parameters
changed with ALTER SYSTEM.
Thank you for the clarification.
I believe the confusion comes from the historical behavior of pg_dump in older PostgreSQL versions.
Since pg_dumpall delegates to pg_dump, and pg_dump’s default behavior has included LOBs since 7.1, the current behavior is consistent with your explanation.
Thank you again for your time and for considering the suggestion.
Best regards
Dimitre
On Thu, 2025-12-04 at 18:12 +0100, Radoulov, Dimitre wrote: > Il Gio 4 Dic 2025, 16:50 Laurenz Albe <laurenz.albe@cybertec.at> ha scritto: > > On Thu, 2025-12-04 at 13:12 +0100, Radoulov, Dimitre wrote: > > > I would like to request a clarification in the pg_dumpall > > > documentation regarding Large Objects (LOBs). The current > > > documentation does not explicitly state whether pg_dumpall includes > > > Large Objects in its output. > > > > I admit that you have to go by circumstantial evidence here. But rather > > than explicitly naming large objects, perhaps it would be useful to add something > > like > > > > pg_dumpall is primarily intended as a tool to upgrade database clusters. > > As such, it by default exports all data of the entire cluster. > > The only part of the state of a database cluster that is *not* included > > in the output of pg_dumpall are the configuration files and database parameters > > changed with ALTER SYSTEM. > > Thank you again for your time and for considering the suggestion. Attached is a patch for such a change. I'll add it to the next commitfest. Yours, Laurenz Albe