54 lines
1.6 KiB
C
54 lines
1.6 KiB
C
/*-------------------------------------------------------------------------
|
|
*
|
|
* compression.h
|
|
*
|
|
* Shared definitions for compression methods and specifications.
|
|
*
|
|
* Portions Copyright (c) 1996-2024, 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
|