Simplifications for error messages related to compression

Started by Michael Paquierover 3 years ago6 messageshackers
Jump to latest
#1Michael Paquier
michael@paquier.xyz

Hi all,

While looking at a different patch, I have noticed that the error
messages produced by pg_basebackup and pg_dump are a bit inconsistent
with the other others. Why not switching all of them as of the
attached? This reduces the overall translation effort, using more:
"this build does not support compression with %s"

Thoughts or objections?
--
Michael

Attachments:

compress-strings.patchtext/x-diff; charset=us-asciiDownload+11-11
#2Michael Paquier
michael@paquier.xyz
In reply to: Michael Paquier (#1)
Re: Simplifications for error messages related to compression

On Mon, Dec 19, 2022 at 02:42:13PM +0900, Michael Paquier wrote:

Thoughts or objections?

Hearing nothing, done..
--
Michael

#3Justin Pryzby
pryzby@telsasoft.com
In reply to: Michael Paquier (#2)
Re: Simplifications for error messages related to compression

On Wed, Dec 21, 2022 at 10:43:19AM +0900, Michael Paquier wrote:

On Mon, Dec 19, 2022 at 02:42:13PM +0900, Michael Paquier wrote:

Thoughts or objections?

Hearing nothing, done..

-                       pg_fatal("not built with zlib support");
+                       pg_fatal("this build does not support compression with %s", "gzip");

I tried to say in the other thread that gzip != zlib.

This message may be better for translation, but (for WriteDataToArchive
et al) the message is now less accurate, and I suspect will cause some
confusion.

5e73a6048 introduced a similar user-facing issue: pg_dump -Fc -Z gzip
does not output a gzip.

$ ./tmp_install/usr/local/pgsql/bin/pg_dump -h /tmp -Fc -Z gzip regression |xxd |head
00000000: 5047 444d 5001 0e00 0408 0101 0100 0000 PGDMP...........

I'm okay with it if you think this is no problem - maybe it's enough to
document that the output is zlib and not gzip.

Otherwise, one idea was to reject "gzip" with -Fc. It could accept
integers only.

BTW I think it's helpful to include the existing participants when
forking a thread.

--
Justin

#4Michael Paquier
michael@paquier.xyz
In reply to: Justin Pryzby (#3)
Re: Simplifications for error messages related to compression

On Tue, Dec 20, 2022 at 08:29:32PM -0600, Justin Pryzby wrote:

-                       pg_fatal("not built with zlib support");
+                       pg_fatal("this build does not support compression with %s", "gzip");

I tried to say in the other thread that gzip != zlib.

This message may be better for translation, but (for WriteDataToArchive
et al) the message is now less accurate, and I suspect will cause some
confusion.

Compression specifications use this term, so, like bbstreamer_gzip.c,
that does not sound like a big difference to me as everything depends
on HAVE_LIBZ, still we use gzip for all the user-facing terms.

5e73a6048 introduced a similar user-facing issue: pg_dump -Fc -Z gzip
does not output a gzip.

We've never mentioned any compression method in the past docs, just
that things can be compressed.

$ ./tmp_install/usr/local/pgsql/bin/pg_dump -h /tmp -Fc -Z gzip regression |xxd |head
00000000: 5047 444d 5001 0e00 0408 0101 0100 0000 PGDMP...........

I'm okay with it if you think this is no problem - maybe it's enough to
document that the output is zlib and not gzip.

Perhaps.

Otherwise, one idea was to reject "gzip" with -Fc. It could accept
integers only.

I am not sure what we would gain by doing that, except complications
with the code surrounding the handling of compression specifications,
which is a backward-compatible thing as it can handle integer-only
inputs.

BTW I think it's helpful to include the existing participants when
forking a thread.

Err, okay.. Sorry about that.
--
Michael

#5Justin Pryzby
pryzby@telsasoft.com
In reply to: Michael Paquier (#4)
Re: Simplifications for error messages related to compression

On Wed, Dec 21, 2022 at 01:52:21PM +0900, Michael Paquier wrote:

On Tue, Dec 20, 2022 at 08:29:32PM -0600, Justin Pryzby wrote:

-                       pg_fatal("not built with zlib support");
+                       pg_fatal("this build does not support compression with %s", "gzip");

I tried to say in the other thread that gzip != zlib.

This message may be better for translation, but (for WriteDataToArchive
et al) the message is now less accurate, and I suspect will cause some
confusion.

Compression specifications use this term, so, like bbstreamer_gzip.c,

Yes, and its current users (basebackup) output a gzip file, right ?

pg_dump -Fc doesn't output a gzip file, but now it's using user-facing
compression specifications referring to it as "gzip".

that does not sound like a big difference to me as everything depends
on HAVE_LIBZ, still we use gzip for all the user-facing terms.

postgres is using -lz to write both gzip files and non-gzip libz files;
its associated compiletime constant has nothing to do with which header
format is being output.

* This file includes two APIs for dealing with compressed data. The first
* provides more flexibility, using callbacks to read/write data from the
* underlying stream. The second API is a wrapper around fopen/gzopen and
* friends, providing an interface similar to those, but abstracts away
* the possible compression. Both APIs use libz for the compression, but
* the second API uses gzip headers, so the resulting files can be easily
* manipulated with the gzip utility.

5e73a6048 introduced a similar user-facing issue: pg_dump -Fc -Z gzip
does not output a gzip.

We've never mentioned any compression method in the past docs, just
that things can be compressed.

What do you mean ?

The commit added:
+ The compression method can be set to <literal>gzip</literal> or ...

And the docs still say:

- For plain text output, setting a nonzero compression level causes
- the entire output file to be compressed, as though it had been
- fed through <application>gzip</application>; but the default is not to compress.

If you tell someone they can write -Z gzip, they'll be justified in
expecting to see "gzip" as output.

--
Justin

#6Michael Paquier
michael@paquier.xyz
In reply to: Justin Pryzby (#5)
Re: Simplifications for error messages related to compression

On Tue, Dec 20, 2022 at 11:12:22PM -0600, Justin Pryzby wrote:

Yes, and its current users (basebackup) output a gzip file, right ?

pg_dump -Fc doesn't output a gzip file, but now it's using user-facing
compression specifications referring to it as "gzip".

Not all of them are compressed either, like the base TOC file.

If you tell someone they can write -Z gzip, they'll be justified in
expecting to see "gzip" as output.

That's the point where my interpretation is different than yours,
where I don't really see as an issue that we do not generate a gzip
file all the time in the output. Honestly, I am not sure that there
is anything to win here by not using the same option interface for all
the binaries or have tweaks to make pg_dump cope with that (like using
zlib as an extra alias). The custom, directory and tar formats of
pg_dumps have their own idea of the files to compress or not (like
the base TOC file is never compressed so as one can do a pg_restore
-l).
--
Michael