/*-------------------------------------------------------------------------
*
* toast_compression . h
* Functions for toast compression .
*
* Copyright ( c ) 2021 - 2025 , 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)
/* pglz compression/decompression routines */
extern struct varlena *pglz_compress_datum(const struct varlena *value);
extern struct varlena *pglz_decompress_datum(const struct varlena *value);
extern struct varlena *pglz_decompress_datum_slice(const struct varlena *value,
int32 slicelength);
/* lz4 compression/decompression routines */
extern struct varlena *lz4_compress_datum(const struct varlena *value);
extern struct varlena *lz4_decompress_datum(const struct varlena *value);
extern struct varlena *lz4_decompress_datum_slice(const struct varlena *value,
int32 slicelength);
/* other stuff */
extern ToastCompressionId toast_get_compression_id(struct varlena *attr);
extern char CompressionNameToMethod(const char *compression);
extern const char *GetCompressionMethodName(char method);
#endif /* TOAST_COMPRESSION_H */
Messung V0.5 in Prozent C=93 H=92 G=92
¤ Dauer der Verarbeitung: 0.14 Sekunden
(vorverarbeitet am 2026-08-08)
¤
*© Formatika GbR, Deutschland