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
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
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
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.7 KiB postgresql-13-zstd_1.1.2-2PIGSTY~bookworm_arm64.deb
postgresql-13-zstd 1.1.2 d13.x86_64 pigsty 11.8 KiB postgresql-13-zstd_1.1.2-2PIGSTY~trixie_amd64.deb
postgresql-13-zstd 1.1.2 d13.aarch64 pigsty 11.8 KiB postgresql-13-zstd_1.1.2-2PIGSTY~trixie_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.3 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 pkg pg_zstd;		# build rpm / deb with pig

Install

Make sure PGDG and PIGSTY repo available:

pig repo add pgdg pigsty -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
pig install zstd -v 13;   # install for PG 13

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