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 Availability | Package Pattern | Dependencies |
|---|---|---|---|---|---|
| EL | PIGSTY | 1.1.2 | 18 17 16 15 14 13 | pg_zstd_$v* | - |
| Debian | 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 | MISS | PIGSTY 1.1.2 | PIGSTY 1.1.2 | PIGSTY 1.1.2 | PIGSTY 1.1.2 | PIGSTY 1.1.2 |
d12.aarch64 | MISS | PIGSTY 1.1.2 | PIGSTY 1.1.2 | PIGSTY 1.1.2 | PIGSTY 1.1.2 | PIGSTY 1.1.2 |
d13.x86_64 | MISS | MISS | MISS | MISS | MISS | MISS |
d13.aarch64 | MISS | MISS | MISS | MISS | MISS | MISS |
u22.x86_64 | MISS | PIGSTY 1.1.2 | PIGSTY 1.1.2 | PIGSTY 1.1.2 | PIGSTY 1.1.2 | PIGSTY 1.1.2 |
u22.aarch64 | MISS | PIGSTY 1.1.2 | PIGSTY 1.1.2 | PIGSTY 1.1.2 | PIGSTY 1.1.2 | PIGSTY 1.1.2 |
u24.x86_64 | MISS | PIGSTY 1.1.2 | PIGSTY 1.1.2 | PIGSTY 1.1.2 | PIGSTY 1.1.2 | PIGSTY 1.1.2 |
u24.aarch64 | MISS | PIGSTY 1.1.2 | PIGSTY 1.1.2 | PIGSTY 1.1.2 | PIGSTY 1.1.2 | PIGSTY 1.1.2 |
| Package | Version | OS | ORG | SIZE | File URL |
|---|---|---|---|---|---|
pg_zstd_18 | 1.1.2 | el8.x86_64 | pigsty | 12.2 KiB | pg_zstd_18-1.1.2-1PIGSTY.el8.x86_64.rpm |
pg_zstd_18 | 1.1.2 | el8.aarch64 | pigsty | 12.2 KiB | pg_zstd_18-1.1.2-1PIGSTY.el8.aarch64.rpm |
pg_zstd_18 | 1.1.2 | el9.x86_64 | pigsty | 11.8 KiB | pg_zstd_18-1.1.2-1PIGSTY.el9.x86_64.rpm |
pg_zstd_18 | 1.1.2 | el9.aarch64 | pigsty | 11.7 KiB | pg_zstd_18-1.1.2-1PIGSTY.el9.aarch64.rpm |
pg_zstd_18 | 1.1.2 | el10.x86_64 | pigsty | 11.8 KiB | pg_zstd_18-1.1.2-1PIGSTY.el10.x86_64.rpm |
pg_zstd_18 | 1.1.2 | el10.aarch64 | pigsty | 11.8 KiB | pg_zstd_18-1.1.2-1PIGSTY.el10.aarch64.rpm |
| Package | Version | OS | ORG | SIZE | File URL |
|---|---|---|---|---|---|
pg_zstd_17 | 1.1.2 | el8.x86_64 | pigsty | 12.2 KiB | pg_zstd_17-1.1.2-1PIGSTY.el8.x86_64.rpm |
pg_zstd_17 | 1.1.2 | el8.aarch64 | pigsty | 12.2 KiB | pg_zstd_17-1.1.2-1PIGSTY.el8.aarch64.rpm |
pg_zstd_17 | 1.1.2 | el9.x86_64 | pigsty | 12.0 KiB | pg_zstd_17-1.1.2-1PIGSTY.el9.x86_64.rpm |
pg_zstd_17 | 1.1.2 | el9.aarch64 | pigsty | 11.8 KiB | pg_zstd_17-1.1.2-1PIGSTY.el9.aarch64.rpm |
pg_zstd_17 | 1.1.2 | el10.x86_64 | pigsty | 11.9 KiB | pg_zstd_17-1.1.2-1PIGSTY.el10.x86_64.rpm |
pg_zstd_17 | 1.1.2 | el10.aarch64 | pigsty | 12.0 KiB | pg_zstd_17-1.1.2-1PIGSTY.el10.aarch64.rpm |
postgresql-17-zstd | 1.1.2 | d12.x86_64 | pigsty | 11.9 KiB | postgresql-17-zstd_1.1.2-2PIGSTY~bookworm_amd64.deb |
postgresql-17-zstd | 1.1.2 | d12.aarch64 | pigsty | 11.8 KiB | postgresql-17-zstd_1.1.2-2PIGSTY~bookworm_arm64.deb |
postgresql-17-zstd | 1.1.2 | u22.x86_64 | pigsty | 12.7 KiB | postgresql-17-zstd_1.1.2-2PIGSTY~jammy_amd64.deb |
postgresql-17-zstd | 1.1.2 | u22.aarch64 | pigsty | 12.5 KiB | postgresql-17-zstd_1.1.2-2PIGSTY~jammy_arm64.deb |
postgresql-17-zstd | 1.1.2 | u24.x86_64 | pigsty | 12.4 KiB | postgresql-17-zstd_1.1.2-2PIGSTY~noble_amd64.deb |
postgresql-17-zstd | 1.1.2 | u24.aarch64 | pigsty | 12.3 KiB | postgresql-17-zstd_1.1.2-2PIGSTY~noble_arm64.deb |
| Package | Version | OS | ORG | SIZE | File URL |
|---|---|---|---|---|---|
pg_zstd_16 | 1.1.2 | el8.x86_64 | pigsty | 12.2 KiB | pg_zstd_16-1.1.2-1PIGSTY.el8.x86_64.rpm |
pg_zstd_16 | 1.1.2 | el8.aarch64 | pigsty | 12.2 KiB | pg_zstd_16-1.1.2-1PIGSTY.el8.aarch64.rpm |
pg_zstd_16 | 1.1.2 | el9.x86_64 | pigsty | 12.0 KiB | pg_zstd_16-1.1.2-1PIGSTY.el9.x86_64.rpm |
pg_zstd_16 | 1.1.2 | el9.aarch64 | pigsty | 11.8 KiB | pg_zstd_16-1.1.2-1PIGSTY.el9.aarch64.rpm |
pg_zstd_16 | 1.1.2 | el10.x86_64 | pigsty | 11.9 KiB | pg_zstd_16-1.1.2-1PIGSTY.el10.x86_64.rpm |
pg_zstd_16 | 1.1.2 | el10.aarch64 | pigsty | 11.9 KiB | pg_zstd_16-1.1.2-1PIGSTY.el10.aarch64.rpm |
postgresql-16-zstd | 1.1.2 | d12.x86_64 | pigsty | 11.9 KiB | postgresql-16-zstd_1.1.2-2PIGSTY~bookworm_amd64.deb |
postgresql-16-zstd | 1.1.2 | d12.aarch64 | pigsty | 11.8 KiB | postgresql-16-zstd_1.1.2-2PIGSTY~bookworm_arm64.deb |
postgresql-16-zstd | 1.1.2 | u22.x86_64 | pigsty | 12.7 KiB | postgresql-16-zstd_1.1.2-2PIGSTY~jammy_amd64.deb |
postgresql-16-zstd | 1.1.2 | u22.aarch64 | pigsty | 12.5 KiB | postgresql-16-zstd_1.1.2-2PIGSTY~jammy_arm64.deb |
postgresql-16-zstd | 1.1.2 | u24.x86_64 | pigsty | 12.4 KiB | postgresql-16-zstd_1.1.2-2PIGSTY~noble_amd64.deb |
postgresql-16-zstd | 1.1.2 | u24.aarch64 | pigsty | 12.3 KiB | postgresql-16-zstd_1.1.2-2PIGSTY~noble_arm64.deb |
| Package | Version | OS | ORG | SIZE | File URL |
|---|---|---|---|---|---|
pg_zstd_15 | 1.1.2 | el8.x86_64 | pigsty | 12.2 KiB | pg_zstd_15-1.1.2-1PIGSTY.el8.x86_64.rpm |
pg_zstd_15 | 1.1.2 | el8.aarch64 | pigsty | 12.2 KiB | pg_zstd_15-1.1.2-1PIGSTY.el8.aarch64.rpm |
pg_zstd_15 | 1.1.2 | el9.x86_64 | pigsty | 12.0 KiB | pg_zstd_15-1.1.2-1PIGSTY.el9.x86_64.rpm |
pg_zstd_15 | 1.1.2 | el9.aarch64 | pigsty | 11.8 KiB | pg_zstd_15-1.1.2-1PIGSTY.el9.aarch64.rpm |
pg_zstd_15 | 1.1.2 | el10.x86_64 | pigsty | 11.9 KiB | pg_zstd_15-1.1.2-1PIGSTY.el10.x86_64.rpm |
pg_zstd_15 | 1.1.2 | el10.aarch64 | pigsty | 11.9 KiB | pg_zstd_15-1.1.2-1PIGSTY.el10.aarch64.rpm |
postgresql-15-zstd | 1.1.2 | d12.x86_64 | pigsty | 11.9 KiB | postgresql-15-zstd_1.1.2-2PIGSTY~bookworm_amd64.deb |
postgresql-15-zstd | 1.1.2 | d12.aarch64 | pigsty | 11.8 KiB | postgresql-15-zstd_1.1.2-2PIGSTY~bookworm_arm64.deb |
postgresql-15-zstd | 1.1.2 | u22.x86_64 | pigsty | 12.7 KiB | postgresql-15-zstd_1.1.2-2PIGSTY~jammy_amd64.deb |
postgresql-15-zstd | 1.1.2 | u22.aarch64 | pigsty | 12.5 KiB | postgresql-15-zstd_1.1.2-2PIGSTY~jammy_arm64.deb |
postgresql-15-zstd | 1.1.2 | u24.x86_64 | pigsty | 12.4 KiB | postgresql-15-zstd_1.1.2-2PIGSTY~noble_amd64.deb |
postgresql-15-zstd | 1.1.2 | u24.aarch64 | pigsty | 12.2 KiB | postgresql-15-zstd_1.1.2-2PIGSTY~noble_arm64.deb |
| Package | Version | OS | ORG | SIZE | File URL |
|---|---|---|---|---|---|
pg_zstd_14 | 1.1.2 | el8.x86_64 | pigsty | 12.2 KiB | pg_zstd_14-1.1.2-1PIGSTY.el8.x86_64.rpm |
pg_zstd_14 | 1.1.2 | el8.aarch64 | pigsty | 12.2 KiB | pg_zstd_14-1.1.2-1PIGSTY.el8.aarch64.rpm |
pg_zstd_14 | 1.1.2 | el9.x86_64 | pigsty | 12.0 KiB | pg_zstd_14-1.1.2-1PIGSTY.el9.x86_64.rpm |
pg_zstd_14 | 1.1.2 | el9.aarch64 | pigsty | 11.8 KiB | pg_zstd_14-1.1.2-1PIGSTY.el9.aarch64.rpm |
pg_zstd_14 | 1.1.2 | el10.x86_64 | pigsty | 11.9 KiB | pg_zstd_14-1.1.2-1PIGSTY.el10.x86_64.rpm |
pg_zstd_14 | 1.1.2 | el10.aarch64 | pigsty | 11.9 KiB | pg_zstd_14-1.1.2-1PIGSTY.el10.aarch64.rpm |
postgresql-14-zstd | 1.1.2 | d12.x86_64 | pigsty | 11.9 KiB | postgresql-14-zstd_1.1.2-2PIGSTY~bookworm_amd64.deb |
postgresql-14-zstd | 1.1.2 | d12.aarch64 | pigsty | 11.8 KiB | postgresql-14-zstd_1.1.2-2PIGSTY~bookworm_arm64.deb |
postgresql-14-zstd | 1.1.2 | u22.x86_64 | pigsty | 12.6 KiB | postgresql-14-zstd_1.1.2-2PIGSTY~jammy_amd64.deb |
postgresql-14-zstd | 1.1.2 | u22.aarch64 | pigsty | 12.4 KiB | postgresql-14-zstd_1.1.2-2PIGSTY~jammy_arm64.deb |
postgresql-14-zstd | 1.1.2 | u24.x86_64 | pigsty | 12.4 KiB | postgresql-14-zstd_1.1.2-2PIGSTY~noble_amd64.deb |
postgresql-14-zstd | 1.1.2 | u24.aarch64 | pigsty | 12.2 KiB | postgresql-14-zstd_1.1.2-2PIGSTY~noble_arm64.deb |
| Package | Version | OS | ORG | SIZE | File URL |
|---|---|---|---|---|---|
pg_zstd_13 | 1.1.2 | el8.x86_64 | pigsty | 12.1 KiB | pg_zstd_13-1.1.2-1PIGSTY.el8.x86_64.rpm |
pg_zstd_13 | 1.1.2 | el8.aarch64 | pigsty | 12.2 KiB | pg_zstd_13-1.1.2-1PIGSTY.el8.aarch64.rpm |
pg_zstd_13 | 1.1.2 | el9.x86_64 | pigsty | 11.9 KiB | pg_zstd_13-1.1.2-1PIGSTY.el9.x86_64.rpm |
pg_zstd_13 | 1.1.2 | el9.aarch64 | pigsty | 11.8 KiB | pg_zstd_13-1.1.2-1PIGSTY.el9.aarch64.rpm |
pg_zstd_13 | 1.1.2 | el10.x86_64 | pigsty | 11.9 KiB | pg_zstd_13-1.1.2-1PIGSTY.el10.x86_64.rpm |
pg_zstd_13 | 1.1.2 | el10.aarch64 | pigsty | 11.9 KiB | pg_zstd_13-1.1.2-1PIGSTY.el10.aarch64.rpm |
postgresql-13-zstd | 1.1.2 | d12.x86_64 | pigsty | 11.8 KiB | postgresql-13-zstd_1.1.2-2PIGSTY~bookworm_amd64.deb |
postgresql-13-zstd | 1.1.2 | d12.aarch64 | pigsty | 11.8 KiB | postgresql-13-zstd_1.1.2-2PIGSTY~bookworm_arm64.deb |
postgresql-13-zstd | 1.1.2 | u22.x86_64 | pigsty | 12.4 KiB | postgresql-13-zstd_1.1.2-2PIGSTY~jammy_amd64.deb |
postgresql-13-zstd | 1.1.2 | u22.aarch64 | pigsty | 12.4 KiB | postgresql-13-zstd_1.1.2-2PIGSTY~jammy_arm64.deb |
postgresql-13-zstd | 1.1.2 | u24.x86_64 | pigsty | 12.3 KiB | postgresql-13-zstd_1.1.2-2PIGSTY~noble_amd64.deb |
postgresql-13-zstd | 1.1.2 | u24.aarch64 | pigsty | 12.2 KiB | postgresql-13-zstd_1.1.2-2PIGSTY~noble_arm64.deb |
Source
pig build get zstd; # get zstd source code
pig build dep zstd; # install build dependencies
pig build pkg zstd; # build extension rpm or deb
pig build ext zstd; # build extension rpmsInstall
To add the required PGDG / PIGSTY upstream repository, use:
pig repo add pgsql -u # add PGDG + Pigsty repo and update cache (leave existing repos)Install this extension with:
pig ext install zstd; # install by extension name, for the current active PG version
pig ext install pg_zstd; # install via package alias, for the active PG version
pig ext install zstd -v 18; # install for PG 18
pig ext install zstd -v 17; # install for PG 17
pig ext install zstd -v 16; # install for PG 16
pig ext install zstd -v 15; # install for PG 15
pig ext install zstd -v 14; # install for PG 14
pig ext 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