mirror of
https://github.com/postgres/postgres.git
synced 2025-11-09 06:21:09 +03:00
Rework compression options of pg_receivewal
pg_receivewal includes since cada1af the option --compress, to allow the
compression of WAL segments using gzip, with a value of 0 (the default)
meaning that no compression can be used.
This commit introduces a new option, called --compression-method, able
to use as values "none", the default, and "gzip", to make things more
extensible. The case of --compress=0 becomes fuzzy with this option
layer, so we have made the choice to make pg_receivewal return an error
when using "none" and a non-zero compression level, meaning that the
authorized values of --compress are now [1,9] instead of [0,9]. Not
specifying --compress with "gzip" as compression method makes
pg_receivewal use the default of zlib instead (Z_DEFAULT_COMPRESSION).
The code in charge of finding the streaming start LSN when scanning the
existing archives is refactored and made more extensible. While on it,
rename "compression" to "compression_level" in walmethods.c, to reduce
the confusion with the introduction of the compression method, even if
the tar method used by pg_basebackup does not rely on the compression
method (yet, at least), but just on the compression level (this area
could be improved more, actually).
This is in preparation for an upcoming patch that adds LZ4 support to
pg_receivewal.
Author: Georgios Kokolatos
Reviewed-by: Michael Paquier, Jian Guo, Magnus Hagander, Dilip Kumar,
Robert Haas
Discussion: https://postgr.es/m/ZCm1J5vfyQ2E6dYvXz8si39HQ2gwxSZ3IpYaVgYa3lUwY88SLapx9EEnOf5uEwrddhx2twG7zYKjVeuP5MwZXCNPybtsGouDsAD1o2L_I5E=@pm.me
This commit is contained in:
@@ -19,6 +19,13 @@ typedef enum
|
||||
CLOSE_NO_RENAME
|
||||
} WalCloseMethod;
|
||||
|
||||
/* Types of compression supported */
|
||||
typedef enum
|
||||
{
|
||||
COMPRESSION_GZIP,
|
||||
COMPRESSION_NONE
|
||||
} WalCompressionMethod;
|
||||
|
||||
/*
|
||||
* A WalWriteMethod structure represents the different methods used
|
||||
* to write the streaming WAL as it's received.
|
||||
@@ -58,8 +65,8 @@ struct WalWriteMethod
|
||||
*/
|
||||
char *(*get_file_name) (const char *pathname, const char *temp_suffix);
|
||||
|
||||
/* Return the level of compression */
|
||||
int (*compression) (void);
|
||||
/* Returns the compression method */
|
||||
WalCompressionMethod (*compression_method) (void);
|
||||
|
||||
/*
|
||||
* Write count number of bytes to the file, and return the number of bytes
|
||||
@@ -95,8 +102,11 @@ struct WalWriteMethod
|
||||
* not all those required for pg_receivewal)
|
||||
*/
|
||||
WalWriteMethod *CreateWalDirectoryMethod(const char *basedir,
|
||||
WalCompressionMethod compression_method,
|
||||
int compression, bool sync);
|
||||
WalWriteMethod *CreateWalTarMethod(const char *tarbase, int compression, bool sync);
|
||||
WalWriteMethod *CreateWalTarMethod(const char *tarbase,
|
||||
WalCompressionMethod compression_method,
|
||||
int compression, bool sync);
|
||||
|
||||
/* Cleanup routines for previously-created methods */
|
||||
void FreeWalDirectoryMethod(void);
|
||||
|
||||
Reference in New Issue
Block a user