zstd

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
pg_zstd -
RPM
PIGSTY
1.1.2
18
17
16
15
14
pg_zstd_$v -
DEB
PIGSTY
1.1.2
18
17
16
15
14
postgresql-$v-zstd -
Linux / PG PG18 PG17 PG16 PG15 PG14
el8.x86_64
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
el9.x86_64
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
el10.x86_64
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
d12.x86_64
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
d13.x86_64
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
u22.x86_64
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
u24.x86_64
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
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
postgresql-18-zstd 1.1.2 d12.x86_64 pigsty 11.9 KiB postgresql-18-zstd_1.1.2-2PIGSTY~bookworm_amd64.deb
postgresql-18-zstd 1.1.2 d12.aarch64 pigsty 11.8 KiB postgresql-18-zstd_1.1.2-2PIGSTY~bookworm_arm64.deb
postgresql-18-zstd 1.1.2 d13.x86_64 pigsty 11.9 KiB postgresql-18-zstd_1.1.2-2PIGSTY~trixie_amd64.deb
postgresql-18-zstd 1.1.2 d13.aarch64 pigsty 11.8 KiB postgresql-18-zstd_1.1.2-2PIGSTY~trixie_arm64.deb
postgresql-18-zstd 1.1.2 u22.x86_64 pigsty 12.2 KiB postgresql-18-zstd_1.1.2-2PIGSTY~jammy_amd64.deb
postgresql-18-zstd 1.1.2 u22.aarch64 pigsty 12.0 KiB postgresql-18-zstd_1.1.2-2PIGSTY~jammy_arm64.deb
postgresql-18-zstd 1.1.2 u24.x86_64 pigsty 12.3 KiB postgresql-18-zstd_1.1.2-2PIGSTY~noble_amd64.deb
postgresql-18-zstd 1.1.2 u24.aarch64 pigsty 12.1 KiB postgresql-18-zstd_1.1.2-2PIGSTY~noble_arm64.deb
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 d13.x86_64 pigsty 11.9 KiB postgresql-17-zstd_1.1.2-2PIGSTY~trixie_amd64.deb
postgresql-17-zstd 1.1.2 d13.aarch64 pigsty 11.8 KiB postgresql-17-zstd_1.1.2-2PIGSTY~trixie_arm64.deb
postgresql-17-zstd 1.1.2 u22.x86_64 pigsty 12.6 KiB postgresql-17-zstd_1.1.2-2PIGSTY~jammy_amd64.deb
postgresql-17-zstd 1.1.2 u22.aarch64 pigsty 12.4 KiB postgresql-17-zstd_1.1.2-2PIGSTY~jammy_arm64.deb
postgresql-17-zstd 1.1.2 u24.x86_64 pigsty 12.3 KiB postgresql-17-zstd_1.1.2-2PIGSTY~noble_amd64.deb
postgresql-17-zstd 1.1.2 u24.aarch64 pigsty 12.2 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 d13.x86_64 pigsty 11.9 KiB postgresql-16-zstd_1.1.2-2PIGSTY~trixie_amd64.deb
postgresql-16-zstd 1.1.2 d13.aarch64 pigsty 11.9 KiB postgresql-16-zstd_1.1.2-2PIGSTY~trixie_arm64.deb
postgresql-16-zstd 1.1.2 u22.x86_64 pigsty 12.6 KiB postgresql-16-zstd_1.1.2-2PIGSTY~jammy_amd64.deb
postgresql-16-zstd 1.1.2 u22.aarch64 pigsty 12.4 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.2 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.8 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 d13.x86_64 pigsty 11.9 KiB postgresql-15-zstd_1.1.2-2PIGSTY~trixie_amd64.deb
postgresql-15-zstd 1.1.2 d13.aarch64 pigsty 11.8 KiB postgresql-15-zstd_1.1.2-2PIGSTY~trixie_arm64.deb
postgresql-15-zstd 1.1.2 u22.x86_64 pigsty 12.6 KiB postgresql-15-zstd_1.1.2-2PIGSTY~jammy_amd64.deb
postgresql-15-zstd 1.1.2 u22.aarch64 pigsty 12.4 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.8 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 d13.x86_64 pigsty 11.9 KiB postgresql-14-zstd_1.1.2-2PIGSTY~trixie_amd64.deb
postgresql-14-zstd 1.1.2 d13.aarch64 pigsty 11.8 KiB postgresql-14-zstd_1.1.2-2PIGSTY~trixie_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.3 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

Source

pig build pkg pg_zstd;		# build rpm/deb

Install

Make sure PGDG and PIGSTY repo available:

pig repo add pgsql -u   # add both repo and update cache

Install 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

Create 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 world

Compress 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
Last updated on