From: Michael Paquier Date: Mon, 18 Apr 2022 01:18:34 +0000 (+0900) Subject: Handle compression level in pg_receivewal for LZ4 X-Git-Tag: REL_15_BETA1~142 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=42e44f3b3830cbc051a5d83956546e2ef553b047;p=thirdparty%2Fpostgresql.git Handle compression level in pg_receivewal for LZ4 The new option set of pg_receivewal introduced in 042a923 to control the compression method makes it now easy to pass down various options, including the compression level. The change to be able to do is simple, and requires one LZ4F_preferences_t fed to LZ4F_compressBegin(). Note that LZ4F_INIT_PREFERENCES could be used to initialize the contents of LZ4F_preferences_t as required by LZ4, but this is only available since v1.8.3. memset()'ing its structure to 0 is enough. Discussion: https://postgr.es/m/YlPQGNAAa04raObK@paquier.xyz --- diff --git a/src/bin/pg_basebackup/walmethods.c b/src/bin/pg_basebackup/walmethods.c index d5bcc208a97..cc292718da9 100644 --- a/src/bin/pg_basebackup/walmethods.c +++ b/src/bin/pg_basebackup/walmethods.c @@ -165,6 +165,7 @@ dir_open_for_write(const char *pathname, const char *temp_suffix, size_t pad_to_ { size_t ctx_out; size_t header_size; + LZ4F_preferences_t prefs; ctx_out = LZ4F_createCompressionContext(&ctx, LZ4F_VERSION); if (LZ4F_isError(ctx_out)) @@ -177,8 +178,12 @@ dir_open_for_write(const char *pathname, const char *temp_suffix, size_t pad_to_ lz4bufsize = LZ4F_compressBound(LZ4_IN_SIZE, NULL); lz4buf = pg_malloc0(lz4bufsize); + /* assign the compression level, default is 0 */ + memset(&prefs, 0, sizeof(prefs)); + prefs.compressionLevel = dir_data->compression_level; + /* add the header */ - header_size = LZ4F_compressBegin(ctx, lz4buf, lz4bufsize, NULL); + header_size = LZ4F_compressBegin(ctx, lz4buf, lz4bufsize, &prefs); if (LZ4F_isError(header_size)) { dir_data->lasterrstring = LZ4F_getErrorName(header_size);