zstd
pg_zstd : Zstandard compression algorithm implementation in PostgreSQL
Overview
| ID | Extension | Package | Version | Category | License | Language |
|---|---|---|---|---|---|---|
| 4030 | zstd | pg_zstd | 1.1.2 | UTIL | ISC | C |
| Attribute | Has Binary | Has Library | Need Load | Has DDL | Relocatable | Trusted |
|---|---|---|---|---|---|---|
--s-d-r | No | Yes | No | Yes | yes | no |
| Relationships | |
|---|---|
| See Also | gzip bzip http pg_net pg_curl pgjq pgjwt pg_smtp_client |
+varatt.h
Packages
| Type | Repo | Version | PG Major Compatibility | Package Pattern | Dependencies |
|---|---|---|---|---|---|
| EXT | PIGSTY | 1.1.2 | 18 17 16 15 14 13 | pg_zstd | - |
| RPM | PIGSTY | 1.1.2 | 18 17 16 15 14 13 | pg_zstd_$v* | - |
| DEB | PIGSTY | 1.1.2 | 18 17 16 15 14 13 | postgresql-$v-zstd | - |
| Linux / PG | PG18 | PG17 | PG16 | PG15 | PG14 | PG13 |
|---|---|---|---|---|---|---|
el8.x86_64 | PIGSTY 1.1.2 | PIGSTY 1.1.2 | PIGSTY 1.1.2 | PIGSTY 1.1.2 | PIGSTY 1.1.2 | PIGSTY 1.1.2 |
el8.aarch64 | PIGSTY 1.1.2 | PIGSTY 1.1.2 | PIGSTY 1.1.2 | PIGSTY 1.1.2 | PIGSTY 1.1.2 | PIGSTY 1.1.2 |
el9.x86_64 | PIGSTY 1.1.2 | PIGSTY 1.1.2 | PIGSTY 1.1.2 | PIGSTY 1.1.2 | PIGSTY 1.1.2 | PIGSTY 1.1.2 |
el9.aarch64 | PIGSTY 1.1.2 | PIGSTY 1.1.2 | PIGSTY 1.1.2 | PIGSTY 1.1.2 | PIGSTY 1.1.2 | PIGSTY 1.1.2 |
el10.x86_64 | PIGSTY 1.1.2 | PIGSTY 1.1.2 | PIGSTY 1.1.2 | PIGSTY 1.1.2 | PIGSTY 1.1.2 | PIGSTY 1.1.2 |
el10.aarch64 | PIGSTY 1.1.2 | PIGSTY 1.1.2 | PIGSTY 1.1.2 | PIGSTY 1.1.2 | PIGSTY 1.1.2 | PIGSTY 1.1.2 |
d12.x86_64 | PIGSTY 1.1.2 | PIGSTY 1.1.2 | PIGSTY 1.1.2 | PIGSTY 1.1.2 | PIGSTY 1.1.2 | PIGSTY 1.1.2 |
d12.aarch64 | PIGSTY 1.1.2 | PIGSTY 1.1.2 | PIGSTY 1.1.2 | PIGSTY 1.1.2 | PIGSTY 1.1.2 | PIGSTY 1.1.2 |
d13.x86_64 | PIGSTY 1.1.2 | PIGSTY 1.1.2 | PIGSTY 1.1.2 | PIGSTY 1.1.2 | PIGSTY 1.1.2 | PIGSTY 1.1.2 |
d13.aarch64 | PIGSTY 1.1.2 | PIGSTY 1.1.2 | PIGSTY 1.1.2 | PIGSTY 1.1.2 | PIGSTY 1.1.2 | PIGSTY 1.1.2 |
u22.x86_64 | PIGSTY 1.1.2 | PIGSTY 1.1.2 | PIGSTY 1.1.2 | PIGSTY 1.1.2 | PIGSTY 1.1.2 | PIGSTY 1.1.2 |
u22.aarch64 | PIGSTY 1.1.2 | PIGSTY 1.1.2 | PIGSTY 1.1.2 | PIGSTY 1.1.2 | PIGSTY 1.1.2 | PIGSTY 1.1.2 |
u24.x86_64 | PIGSTY 1.1.2 | PIGSTY 1.1.2 | PIGSTY 1.1.2 | PIGSTY 1.1.2 | PIGSTY 1.1.2 | PIGSTY 1.1.2 |
u24.aarch64 | PIGSTY 1.1.2 | PIGSTY 1.1.2 | PIGSTY 1.1.2 | PIGSTY 1.1.2 | PIGSTY 1.1.2 | PIGSTY 1.1.2 |
Source
pig build pkg pg_zstd; # build rpm / deb with pigInstall
Make sure PGDG and PIGSTY repo available:
pig repo add pgdg pigsty -u # add both repo and update cacheInstall this extension with pig:
pig install pg_zstd; # install via package name, for the active PG version
pig install zstd; # install by extension name, for the current active PG version
pig install zstd -v 18; # install for PG 18
pig install zstd -v 17; # install for PG 17
pig install zstd -v 16; # install for PG 16
pig install zstd -v 15; # install for PG 15
pig install zstd -v 14; # install for PG 14
pig install zstd -v 13; # install for PG 13Create this extension with:
CREATE EXTENSION zstd;Usage
| Function | Return Type |
|---|---|
zstd_compress(data bytea [, dictionary bytea [, level integer ]]) | bytea |
zstd_decompress(data bytea [, dictionary bytea ]) | bytea |
zstd_length(data bytea) | integer |
zstd_compress compresses the provided data and returns a Zstandard frame. A
preset dictionary may also be provided. The default compression level may
also be overriden, valid values range from 1 (best speed) to 22 (best
compression). The default level is 3.
If you want to override the compression level without using a dictionary, set
dictionary to NULL.
zstd_decompress decompresses the provided Zstandard frame in data and
returns the uncompressed data. A preset dictionary, matching the dictionary
used to compress the data, may also be provided.
zstd_length returns the decompressed length of the provided Zstandard frame.
If ZSTD_getFrameContentSize() is available it returns NULL if the length is
unknown. If unavailable, it isn’t possible to distinguish the error, unknown
decompressed length and zero decompressed length cases.
Example
Basic compress/decompress example:
CREATE EXTENSION zstd;
SELECT zstd_compress('hello world');
-- zstd_compress
-- --------------------------------------------
-- \x28b52ffd200b59000068656c6c6f20776f726c64
SELECT convert_from(zstd_decompress('\x28b52ffd200b59000068656c6c6f20776f726c64'), 'utf-8');
-- convert_from
-- --------------
-- hello worldCompress with level (1 for best speed, 22 for best compression, default to 3)
CREATE EXTENSION zstd;
SELECT zstd_compress('hello world', NULL, 10);
-- zstd_compress
-- --------------------------------------------
-- \x28b52ffd200b59000068656c6c6f20776f726c64
SELECT convert_from(zstd_decompress('\x28b52ffd200b59000068656c6c6f20776f726c64'), 'utf-8');
-- convert_from
-- --------------
-- hello world