12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- /* ----------
- * 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);
- #endif /* _PG_LZCOMPRESS_H_ */
|