/*------------------------------------------------------------------------- * * compression.h * * Shared definitions for compression methods and specifications. * * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group * * IDENTIFICATION * src/include/common/compression.h *------------------------------------------------------------------------- */ #ifndef PG_COMPRESSION_H #define PG_COMPRESSION_H /* * These values are stored in disk, for example in files generated by pg_dump. * Create the necessary backwards compatibility layers if their order changes. */ typedef enum pg_compress_algorithm { PG_COMPRESSION_NONE, PG_COMPRESSION_GZIP, PG_COMPRESSION_LZ4, PG_COMPRESSION_ZSTD } pg_compress_algorithm; #define PG_COMPRESSION_OPTION_WORKERS (1 << 0) #define PG_COMPRESSION_OPTION_LONG_DISTANCE (1 << 1) typedef struct pg_compress_specification { pg_compress_algorithm algorithm; unsigned options; /* OR of PG_COMPRESSION_OPTION constants */ int level; int workers; bool long_distance; char *parse_error; /* NULL if parsing was OK, else message */ } pg_compress_specification; extern void parse_compress_options(const char *option, char **algorithm, char **detail); extern bool parse_compress_algorithm(char *name, pg_compress_algorithm *algorithm); extern const char *get_compress_algorithm_name(pg_compress_algorithm algorithm); extern void parse_compress_specification(pg_compress_algorithm algorithm, char *specification, pg_compress_specification *result); extern char *validate_compress_specification(pg_compress_specification *); #endif