init
This commit is contained in:
73
db_include/access/toast_compression.h
Executable file
73
db_include/access/toast_compression.h
Executable file
@@ -0,0 +1,73 @@
|
||||
/*-------------------------------------------------------------------------
|
||||
*
|
||||
* toast_compression.h
|
||||
* Functions for toast compression.
|
||||
*
|
||||
* Copyright (c) 2021, 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 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 */
|
||||
Reference in New Issue
Block a user