init
This commit is contained in:
93
db_include/common/pg_lzcompress.h
Executable file
93
db_include/common/pg_lzcompress.h
Executable file
@@ -0,0 +1,93 @@
|
||||
/* ----------
|
||||
* pg_lzcompress.h -
|
||||
*
|
||||
* Definitions for the builtin LZ compressor
|
||||
*
|
||||
* src/include/common/pg_lzcompress.h
|
||||
* ----------
|
||||
*/
|
||||
|
||||
#ifndef _PG_LZCOMPRESS_H_
|
||||
#define _PG_LZCOMPRESS_H_
|
||||
|
||||
|
||||
/* ----------
|
||||
* PGLZ_MAX_OUTPUT -
|
||||
*
|
||||
* Macro to compute the buffer size required by pglz_compress().
|
||||
* We allow 4 bytes for overrun before detecting compression failure.
|
||||
* ----------
|
||||
*/
|
||||
#define PGLZ_MAX_OUTPUT(_dlen) ((_dlen) + 4)
|
||||
|
||||
|
||||
/* ----------
|
||||
* PGLZ_Strategy -
|
||||
*
|
||||
* Some values that control the compression algorithm.
|
||||
*
|
||||
* min_input_size Minimum input data size to consider compression.
|
||||
*
|
||||
* max_input_size Maximum input data size to consider compression.
|
||||
*
|
||||
* min_comp_rate Minimum compression rate (0-99%) to require.
|
||||
* Regardless of min_comp_rate, the output must be
|
||||
* smaller than the input, else we don't store
|
||||
* compressed.
|
||||
*
|
||||
* first_success_by Abandon compression if we find no compressible
|
||||
* data within the first this-many bytes.
|
||||
*
|
||||
* match_size_good The initial GOOD match size when starting history
|
||||
* lookup. When looking up the history to find a
|
||||
* match that could be expressed as a tag, the
|
||||
* algorithm does not always walk back entirely.
|
||||
* A good match fast is usually better than the
|
||||
* best possible one very late. For each iteration
|
||||
* in the lookup, this value is lowered so the
|
||||
* longer the lookup takes, the smaller matches
|
||||
* are considered good.
|
||||
*
|
||||
* match_size_drop The percentage by which match_size_good is lowered
|
||||
* after each history check. Allowed values are
|
||||
* 0 (no change until end) to 100 (only check
|
||||
* latest history entry at all).
|
||||
* ----------
|
||||
*/
|
||||
typedef struct PGLZ_Strategy
|
||||
{
|
||||
int32 min_input_size;
|
||||
int32 max_input_size;
|
||||
int32 min_comp_rate;
|
||||
int32 first_success_by;
|
||||
int32 match_size_good;
|
||||
int32 match_size_drop;
|
||||
} PGLZ_Strategy;
|
||||
|
||||
|
||||
/* ----------
|
||||
* The standard strategies
|
||||
*
|
||||
* PGLZ_strategy_default Recommended default strategy for TOAST.
|
||||
*
|
||||
* PGLZ_strategy_always Try to compress inputs of any length.
|
||||
* Fallback to uncompressed storage only if
|
||||
* output would be larger than input.
|
||||
* ----------
|
||||
*/
|
||||
extern const PGLZ_Strategy *const PGLZ_strategy_default;
|
||||
extern const PGLZ_Strategy *const PGLZ_strategy_always;
|
||||
|
||||
|
||||
/* ----------
|
||||
* Global function declarations
|
||||
* ----------
|
||||
*/
|
||||
extern int32 pglz_compress(const char *source, int32 slen, char *dest,
|
||||
const PGLZ_Strategy *strategy);
|
||||
extern int32 pglz_decompress(const char *source, int32 slen, char *dest,
|
||||
int32 rawsize, bool check_complete);
|
||||
extern int32 pglz_maximum_compressed_size(int32 rawsize,
|
||||
int32 total_compressed_size);
|
||||
|
||||
#endif /* _PG_LZCOMPRESS_H_ */
|
||||
Reference in New Issue
Block a user