On Wed, Mar 01, 2023 at 05:20:05PM +0100, Tomas Vondra wrote: > On 2/25/23 15:05, Justin Pryzby wrote: > > On Fri, Feb 24, 2023 at 11:02:14PM -0600, Justin Pryzby wrote: > >> I have some fixes (attached) and questions while polishing the patch for > >> zstd compression. The fixes are small and could be integrated with the > >> patch for zstd, but could be applied independently. > > > > One more - WriteDataToArchiveGzip() says: > > > > + if (cs->compression_spec.level == 0) > > + pg_fatal("requested to compress the archive yet no level was > > specified"); > > > > That was added at e9960732a. > > > > But if you specify gzip:0, the compression level is already enforced by > > validate_compress_specification(), before hitting gzip.c: > > > > | pg_dump: error: invalid compression specification: compression algorithm > > "gzip" expects a compression level between 1 and 9 (default at -1) > > > > 5e73a6048 intended that to work as before, and you *can* specify -Z0: > > > > The change is backward-compatible, hence specifying only an integer > > leads to no compression for a level of 0 and gzip compression when the > > level is greater than 0. > > > > $ time ./src/bin/pg_dump/pg_dump -h /tmp regression -t int8_tbl -Fp > > --compress 0 |file - > > /dev/stdin: ASCII text > > FWIW I agree we should make this backwards-compatible - accept "0" and > treat it as no compression. > > Georgios, can you prepare a patch doing that?
I think maybe Tomas misunderstood. What I was trying to say is that -Z 0 *is* accepted to mean no compression. This part wasn't quoted, but I said: > Right now, I think that pg_fatal in gzip.c is dead code - that was first > added in the patch version sent on 21 Dec 2022. If you run the diff command that I've been talking about, you'll see that InitCompressorZlib was almost unchanged - e9960732 is essentially a refactoring. I don't think it's desirable to add a pg_fatal() in a function that's otherwise nearly-unchanged. The fact that it's nearly-unchanged is a good thing: it simplifies reading of what changed. If someone wants to add a pg_fatal() in that code path, it'd be better done in its own commit, with a separate message explaining the change. If you insist on changing anything here, you might add an assertion (as you said earlier) along with a comment like /* -Z 0 uses the "None" compressor rather than zlib with no compression */ -- Justin