/
githubmirror
/
postgres
Обзор
Документация
Войти
/
githubmirror
/
postgres
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
src/include/access/toast_compression.h
82 строки
3 KB
Michael Paquier
Change default value of default_toast_compression to "lz4", take two
05 мар 2026, 03:24
05 мар 2026, 03:24
34dfca2
Код
Авторство
О чём код?
/*------------------------------------------------------------------------- * * toast_compression.h * Functions for toast compression. * * Copyright (c) 2021-2026, PostgreSQL Global Development Group * * src/include/access/toast_compression.h * *------------------------------------------------------------------------- */ #ifndef TOAST_COMPRESSION_H #define TOAST_COMPRESSION_H /* * GUC support. * * default_toast_compression is an integer for purposes of the GUC machinery, * but the value is one of the char values defined below, as they appear in * pg_attribute.attcompression, e.g. TOAST_PGLZ_COMPRESSION. */ extern PGDLLIMPORT int default_toast_compression; /* * Built-in compression method ID. The toast compression header will store * this in the first 2 bits of the raw length. These built-in compression * method IDs are directly mapped to the built-in compression methods. * * Don't use these values for anything other than understanding the meaning * of the raw bits from a varlena; in particular, if the goal is to identify * a compression method, use the constants TOAST_PGLZ_COMPRESSION, etc. * below. We might someday support more than 4 compression methods, but * we can never have more than 4 values in this enum, because there are * only 2 bits available in the places where this is stored. */ typedef enum ToastCompressionId { TOAST_PGLZ_COMPRESSION_ID = 0, TOAST_LZ4_COMPRESSION_ID = 1, TOAST_INVALID_COMPRESSION_ID = 2, } ToastCompressionId; /* * Built-in compression methods. pg_attribute will store these in the * attcompression column. In attcompression, InvalidCompressionMethod * denotes the default behavior. */ #define TOAST_PGLZ_COMPRESSION 'p' #define TOAST_LZ4_COMPRESSION 'l' #define InvalidCompressionMethod '\0' #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); extern varlena *pglz_decompress_datum(const varlena *value); extern varlena *pglz_decompress_datum_slice(const varlena *value, int32 slicelength); /* lz4 compression/decompression routines */ extern varlena *lz4_compress_datum(const varlena *value); extern varlena *lz4_decompress_datum(const varlena *value); extern varlena *lz4_decompress_datum_slice(const varlena *value, int32 slicelength); /* other stuff */ extern ToastCompressionId toast_get_compression_id(varlena *attr); extern char CompressionNameToMethod(const char *compression); extern const char *GetCompressionMethodName(char method); #endif /* TOAST_COMPRESSION_H */