diff --git a/.cirrus.tasks.yml b/.cirrus.tasks.yml index a3107f82730..4841a204248 100644 --- a/.cirrus.tasks.yml +++ b/.cirrus.tasks.yml @@ -984,7 +984,6 @@ task: --host=x86_64-w64-mingw32ucrt \ --enable-cassert \ --without-icu \ - --without-lz4 \ CC="ccache x86_64-w64-mingw32ucrt-gcc" \ CXX="ccache x86_64-w64-mingw32ucrt-g++" make -s -j${BUILD_JOBS} clean diff --git a/configure b/configure index 7afd8ba01e8..b30b98a586e 100755 --- a/configure +++ b/configure @@ -1603,7 +1603,7 @@ Optional Packages: --with-system-tzdata=DIR use system time zone data in DIR --without-zlib do not use Zlib - --without-lz4 build without LZ4 support + --with-lz4 build with LZ4 support --with-zstd build with ZSTD support --with-ssl=LIB use LIB for SSL/TLS support (openssl) --with-openssl obsolete spelling of --with-ssl=openssl @@ -9570,9 +9570,7 @@ $as_echo "#define USE_LZ4 1" >>confdefs.h esac else - with_lz4=yes - -$as_echo "#define USE_LZ4 1" >>confdefs.h + with_lz4=no fi diff --git a/configure.ac b/configure.ac index 60d1c1900f2..f4e3bd307c8 100644 --- a/configure.ac +++ b/configure.ac @@ -1188,7 +1188,7 @@ AC_SUBST(with_zlib) # LZ4 # AC_MSG_CHECKING([whether to build with LZ4 support]) -PGAC_ARG_BOOL(with, lz4, yes, [build without LZ4 support], +PGAC_ARG_BOOL(with, lz4, no, [build with LZ4 support], [AC_DEFINE([USE_LZ4], 1, [Define to 1 to build with LZ4 support. (--with-lz4)])]) AC_MSG_RESULT([$with_lz4]) AC_SUBST(with_lz4) diff --git a/doc/src/sgml/config.sgml b/doc/src/sgml/config.sgml index 6779bc844d0..f670e2d4c31 100644 --- a/doc/src/sgml/config.sgml +++ b/doc/src/sgml/config.sgml @@ -3498,9 +3498,10 @@ include_dir 'conf.d' etc.). A compressed page image will be decompressed during WAL replay. The supported methods are pglz, - lz4 and zstd (if - PostgreSQL was compiled with - ). + lz4 (if PostgreSQL + was compiled with ) and + zstd (if PostgreSQL + was compiled with ). The default value is off. Only superusers and users with the appropriate SET privilege can change this setting. @@ -10017,9 +10018,9 @@ COPY postgres_log FROM '/full/path/to/logfile.csv' WITH csv; CREATE TABLE or ALTER TABLE.) The supported compression methods are pglz and - lz4. - The default is lz4 (if available); otherwise, - pglz. + (if PostgreSQL was compiled with + ) lz4. + The default is pglz. diff --git a/doc/src/sgml/installation.sgml b/doc/src/sgml/installation.sgml index a026ffea68d..b345a105674 100644 --- a/doc/src/sgml/installation.sgml +++ b/doc/src/sgml/installation.sgml @@ -975,6 +975,15 @@ build-postgresql: + + + + + Build with LZ4 compression support. + + + + @@ -1306,18 +1315,6 @@ build-postgresql: - - - - - - lz4 - - Prevents use of the LZ4 library. - - - - diff --git a/doc/src/sgml/ref/alter_table.sgml b/doc/src/sgml/ref/alter_table.sgml index 9d2c87b660a..aab2c6eb19f 100644 --- a/doc/src/sgml/ref/alter_table.sgml +++ b/doc/src/sgml/ref/alter_table.sgml @@ -462,7 +462,9 @@ WITH ( MODULUS numeric_literal, REM its existing compression method, rather than being recompressed with the compression method of the target column. The supported compression - methods are pglz and lz4. In + methods are pglz and lz4. + (lz4 is available only if + was used when building PostgreSQL.) In addition, compression_method can be default, which selects the default behavior of consulting the setting diff --git a/doc/src/sgml/ref/create_table.sgml b/doc/src/sgml/ref/create_table.sgml index 188bc11e940..982532fe725 100644 --- a/doc/src/sgml/ref/create_table.sgml +++ b/doc/src/sgml/ref/create_table.sgml @@ -344,7 +344,9 @@ WITH ( MODULUS numeric_literal, REM has no direct effect, because such tables have no storage of their own, but the configured value will be inherited by newly-created partitions. The supported compression methods are pglz and - lz4. In addition, + lz4. (lz4 is available only if + was used when building + PostgreSQL.) In addition, compression_method can be default to explicitly specify the default behavior, which is to consult the diff --git a/doc/src/sgml/ref/pg_receivewal.sgml b/doc/src/sgml/ref/pg_receivewal.sgml index 1896f4da0e8..9e353a068e5 100644 --- a/doc/src/sgml/ref/pg_receivewal.sgml +++ b/doc/src/sgml/ref/pg_receivewal.sgml @@ -275,7 +275,9 @@ PostgreSQL documentation The compression method can be set to gzip, - lz4 or none for no compression. + lz4 (if PostgreSQL + was compiled with ) or + none for no compression. A compression detail string can optionally be specified. If the detail string is an integer, it specifies the compression level. Otherwise, it should be a comma-separated list of items, each of the diff --git a/src/backend/access/common/toast_compression.c b/src/backend/access/common/toast_compression.c index 5a5d579494a..4d00537049e 100644 --- a/src/backend/access/common/toast_compression.c +++ b/src/backend/access/common/toast_compression.c @@ -23,7 +23,7 @@ #include "varatt.h" /* GUC */ -int default_toast_compression = DEFAULT_TOAST_COMPRESSION; +int default_toast_compression = TOAST_PGLZ_COMPRESSION; #define NO_COMPRESSION_SUPPORT(method) \ ereport(ERROR, \ diff --git a/src/backend/utils/misc/guc_parameters.dat b/src/backend/utils/misc/guc_parameters.dat index 5ee84a639d8..9507778415d 100644 --- a/src/backend/utils/misc/guc_parameters.dat +++ b/src/backend/utils/misc/guc_parameters.dat @@ -735,7 +735,7 @@ { name => 'default_toast_compression', type => 'enum', context => 'PGC_USERSET', group => 'CLIENT_CONN_STATEMENT', short_desc => 'Sets the default compression method for compressible values.', variable => 'default_toast_compression', - boot_val => 'DEFAULT_TOAST_COMPRESSION', + boot_val => 'TOAST_PGLZ_COMPRESSION', options => 'default_toast_compression_options', }, diff --git a/src/backend/utils/misc/postgresql.conf.sample b/src/backend/utils/misc/postgresql.conf.sample index e686d88afc4..f938cc65a3a 100644 --- a/src/backend/utils/misc/postgresql.conf.sample +++ b/src/backend/utils/misc/postgresql.conf.sample @@ -779,7 +779,7 @@ #row_security = on #default_table_access_method = 'heap' #default_tablespace = '' # a tablespace name, '' uses the default -#default_toast_compression = pglz # pglz or lz4 +#default_toast_compression = 'pglz' # 'pglz' or 'lz4' #temp_tablespaces = '' # a list of tablespace names, '' uses # only default tablespace #check_function_bodies = on diff --git a/src/bin/initdb/initdb.c b/src/bin/initdb/initdb.c index 6387c66289e..53ec1544ff3 100644 --- a/src/bin/initdb/initdb.c +++ b/src/bin/initdb/initdb.c @@ -1426,11 +1426,6 @@ setup_config(void) "0640", false); } -#if USE_LZ4 - conflines = replace_guc_value(conflines, "default_toast_compression", - "lz4", true); -#endif - /* * Now replace anything that's overridden via -c switches. */ diff --git a/src/include/access/toast_compression.h b/src/include/access/toast_compression.h index 3265f10b734..5f3ffa9ab2d 100644 --- a/src/include/access/toast_compression.h +++ b/src/include/access/toast_compression.h @@ -52,15 +52,6 @@ typedef enum ToastCompressionId #define CompressionMethodIsValid(cm) ((cm) != InvalidCompressionMethod) -/* - * Choose an appropriate default toast compression method. If lz4 is - * compiled-in, use it, otherwise use pglz. - */ -#ifdef USE_LZ4 -#define DEFAULT_TOAST_COMPRESSION TOAST_LZ4_COMPRESSION -#else -#define DEFAULT_TOAST_COMPRESSION TOAST_PGLZ_COMPRESSION -#endif /* pglz compression/decompression routines */ extern varlena *pglz_compress_datum(const varlena *value);