diff --git a/doc/src/sgml/config.sgml b/doc/src/sgml/config.sgml index 009295f20e9..c7107dec232 100644 --- a/doc/src/sgml/config.sgml +++ b/doc/src/sgml/config.sgml @@ -3634,6 +3634,8 @@ include_dir 'conf.d' was compiled with ) and zstd (if PostgreSQL was compiled with ). + The value on selects lz4, if + available; otherwise, it selects pglz. The default value is off. Only superusers and users with the appropriate SET privilege can change this setting. diff --git a/src/backend/utils/misc/guc_tables.c b/src/backend/utils/misc/guc_tables.c index 290ccbc543e..9efd34aafea 100644 --- a/src/backend/utils/misc/guc_tables.c +++ b/src/backend/utils/misc/guc_tables.c @@ -484,13 +484,13 @@ static const struct config_enum_entry wal_compression_options[] = { #ifdef USE_ZSTD {"zstd", WAL_COMPRESSION_ZSTD, false}, #endif - {"on", WAL_COMPRESSION_PGLZ, false}, + {"on", DEFAULT_WAL_COMPRESSION, false}, {"off", WAL_COMPRESSION_NONE, false}, - {"true", WAL_COMPRESSION_PGLZ, true}, + {"true", DEFAULT_WAL_COMPRESSION, true}, {"false", WAL_COMPRESSION_NONE, true}, - {"yes", WAL_COMPRESSION_PGLZ, true}, + {"yes", DEFAULT_WAL_COMPRESSION, true}, {"no", WAL_COMPRESSION_NONE, true}, - {"1", WAL_COMPRESSION_PGLZ, true}, + {"1", DEFAULT_WAL_COMPRESSION, true}, {"0", WAL_COMPRESSION_NONE, true}, {NULL, 0, false} }; diff --git a/src/backend/utils/misc/postgresql.conf.sample b/src/backend/utils/misc/postgresql.conf.sample index ac38cddaaf9..d3e060b2111 100644 --- a/src/backend/utils/misc/postgresql.conf.sample +++ b/src/backend/utils/misc/postgresql.conf.sample @@ -263,6 +263,7 @@ # (change requires restart) #wal_compression = off # enables compression of full-page writes; # off, pglz, lz4, zstd, or on + # (on = lz4 if available, else pglz) #wal_init_zero = on # zero-fill new WAL files #wal_recycle = on # recycle WAL files #wal_buffers = -1 # min 32kB, -1 sets based on shared_buffers diff --git a/src/include/access/xlog.h b/src/include/access/xlog.h index 437b4f32349..4dad4e47cbf 100644 --- a/src/include/access/xlog.h +++ b/src/include/access/xlog.h @@ -87,6 +87,16 @@ typedef enum WalCompression WAL_COMPRESSION_ZSTD, } WalCompression; +/* + * Choose an appropriate default WAL compression method for wal_compression=on. + * If LZ4 is compiled in, use it; otherwise, use pglz. + */ +#ifdef USE_LZ4 +#define DEFAULT_WAL_COMPRESSION WAL_COMPRESSION_LZ4 +#else +#define DEFAULT_WAL_COMPRESSION WAL_COMPRESSION_PGLZ +#endif + /* Recovery states */ typedef enum RecoveryState {