Skip to content
decoderbufs

decoderbufs

decoderbufs : Logical decoding plugin that delivers WAL stream changes using a Protocol Buffer format

Overview

IDExtensionPackageVersionCategoryLicenseLanguage
9650
decoderbufs
decoderbufs
3.5.0
ETL
MIT
C
AttributeHas BinaryHas LibraryNeed LoadHas DDLRelocatableTrusted
--sL---
No
Yes
Yes
No
no
no
Relationships
See Also
pglogical
wal2json
decoder_raw
test_decoding
kafka_fdw
pglogical_origin
pglogical_ticker
pg_failover_slots

Packages

TypeRepoVersionPG Major CompatibilityPackage PatternDependencies
EXT
PGDG
3.5.0
18
17
16
15
14
decoderbufs-
RPM
PGDG
3.5.0
18
17
16
15
14
postgres-decoderbufs_$v-
DEB
PGDG
3.5.0
18
17
16
15
14
postgresql-$v-decoderbufs-
Linux / PGPG18PG17PG16PG15PG14
el8.x86_64
PGDG 3.5.0
PGDG 3.5.0
PGDG 3.5.0
PGDG 3.5.0
PGDG 3.5.0
el8.aarch64
PGDG 3.5.0
PGDG 3.5.0
PGDG 3.5.0
PGDG 3.5.0
PGDG 3.5.0
el9.x86_64
PGDG 3.5.0
PGDG 3.5.0
PGDG 3.5.0
PGDG 3.5.0
PGDG 3.5.0
el9.aarch64
PGDG 3.5.0
PGDG 3.5.0
PGDG 3.5.0
PGDG 3.5.0
PGDG 3.5.0
el10.x86_64
PGDG 3.5.0
PGDG 3.5.0
PGDG 3.5.0
PGDG 3.5.0
PGDG 3.5.0
el10.aarch64
PGDG 3.5.0
PGDG 3.5.0
PGDG 3.5.0
PGDG 3.5.0
PGDG 3.5.0
d12.x86_64
PGDG 3.5.0
PGDG 3.5.0
PGDG 3.5.0
PGDG 3.5.0
PGDG 3.5.0
d12.aarch64
PGDG 3.5.0
PGDG 3.5.0
PGDG 3.5.0
PGDG 3.5.0
PGDG 3.5.0
d13.x86_64
PGDG 3.5.0
PGDG 3.5.0
PGDG 3.5.0
PGDG 3.5.0
PGDG 3.5.0
d13.aarch64
PGDG 3.5.0
PGDG 3.5.0
PGDG 3.5.0
PGDG 3.5.0
PGDG 3.5.0
u22.x86_64
PGDG 3.5.0
PGDG 3.5.0
PGDG 3.5.0
PGDG 3.5.0
PGDG 3.5.0
u22.aarch64
PGDG 3.5.0
PGDG 3.5.0
PGDG 3.5.0
PGDG 3.5.0
PGDG 3.5.0
u24.x86_64
PGDG 3.5.0
PGDG 3.5.0
PGDG 3.5.0
PGDG 3.5.0
PGDG 3.5.0
u24.aarch64
PGDG 3.5.0
PGDG 3.5.0
PGDG 3.5.0
PGDG 3.5.0
PGDG 3.5.0
u26.x86_64
PGDG 3.5.0
PGDG 3.5.0
PGDG 3.5.0
PGDG 3.5.0
PGDG 3.5.0
u26.aarch64
PGDG 3.5.0
PGDG 3.5.0
PGDG 3.5.0
PGDG 3.5.0
PGDG 3.5.0
PackageVersionOSORGSIZEFile URL
postgres-decoderbufs_183.5.0el8.x86_64pgdg25.1 KiBpostgres-decoderbufs_18-3.5.0-1PGDG.rhel8.10.x86_64.rpm
postgres-decoderbufs_183.4.1el8.x86_64pgdg24.9 KiBpostgres-decoderbufs_18-3.4.1-1PGDG.rhel8.10.x86_64.rpm
postgres-decoderbufs_183.3.0el8.x86_64pgdg24.6 KiBpostgres-decoderbufs_18-3.3.0-1PGDG.rhel8.x86_64.rpm
postgres-decoderbufs_183.2.0el8.x86_64pgdg24.2 KiBpostgres-decoderbufs_18-3.2.0-1PGDG.rhel8.x86_64.rpm
postgres-decoderbufs_183.5.0el8.aarch64pgdg24.8 KiBpostgres-decoderbufs_18-3.5.0-1PGDG.rhel8.10.aarch64.rpm
postgres-decoderbufs_183.4.1el8.aarch64pgdg24.6 KiBpostgres-decoderbufs_18-3.4.1-1PGDG.rhel8.10.aarch64.rpm
postgres-decoderbufs_183.3.0el8.aarch64pgdg24.2 KiBpostgres-decoderbufs_18-3.3.0-1PGDG.rhel8.aarch64.rpm
postgres-decoderbufs_183.2.0el8.aarch64pgdg23.8 KiBpostgres-decoderbufs_18-3.2.0-1PGDG.rhel8.aarch64.rpm
postgres-decoderbufs_183.5.0el9.x86_64pgdg23.7 KiBpostgres-decoderbufs_18-3.5.0-1PGDG.rhel9.7.x86_64.rpm
postgres-decoderbufs_183.4.1el9.x86_64pgdg23.8 KiBpostgres-decoderbufs_18-3.4.1-1PGDG.rhel9.7.x86_64.rpm
postgres-decoderbufs_183.3.0el9.x86_64pgdg23.7 KiBpostgres-decoderbufs_18-3.3.0-1PGDG.rhel9.x86_64.rpm
postgres-decoderbufs_183.2.0el9.x86_64pgdg23.4 KiBpostgres-decoderbufs_18-3.2.0-1PGDG.rhel9.x86_64.rpm
postgres-decoderbufs_183.5.0el9.aarch64pgdg23.3 KiBpostgres-decoderbufs_18-3.5.0-1PGDG.rhel9.7.aarch64.rpm
postgres-decoderbufs_183.4.1el9.aarch64pgdg23.4 KiBpostgres-decoderbufs_18-3.4.1-1PGDG.rhel9.7.aarch64.rpm
postgres-decoderbufs_183.3.0el9.aarch64pgdg23.2 KiBpostgres-decoderbufs_18-3.3.0-1PGDG.rhel9.aarch64.rpm
postgres-decoderbufs_183.2.0el9.aarch64pgdg22.9 KiBpostgres-decoderbufs_18-3.2.0-1PGDG.rhel9.aarch64.rpm
postgres-decoderbufs_183.5.0el10.x86_64pgdg23.8 KiBpostgres-decoderbufs_18-3.5.0-1PGDG.rhel10.1.x86_64.rpm
postgres-decoderbufs_183.4.1el10.x86_64pgdg23.8 KiBpostgres-decoderbufs_18-3.4.1-1PGDG.rhel10.1.x86_64.rpm
postgres-decoderbufs_183.3.0el10.x86_64pgdg24.1 KiBpostgres-decoderbufs_18-3.3.0-1PGDG.rhel10.x86_64.rpm
postgres-decoderbufs_183.2.0el10.x86_64pgdg23.8 KiBpostgres-decoderbufs_18-3.2.0-1PGDG.rhel10.x86_64.rpm
postgres-decoderbufs_183.5.0el10.aarch64pgdg23.7 KiBpostgres-decoderbufs_18-3.5.0-1PGDG.rhel10.1.aarch64.rpm
postgres-decoderbufs_183.4.1el10.aarch64pgdg23.7 KiBpostgres-decoderbufs_18-3.4.1-1PGDG.rhel10.1.aarch64.rpm
postgres-decoderbufs_183.3.0el10.aarch64pgdg24.0 KiBpostgres-decoderbufs_18-3.3.0-1PGDG.rhel10.aarch64.rpm
postgres-decoderbufs_183.2.0el10.aarch64pgdg23.7 KiBpostgres-decoderbufs_18-3.2.0-1PGDG.rhel10.aarch64.rpm
postgresql-18-decoderbufs3.5.0d12.x86_64pgdg39.3 KiBpostgresql-18-decoderbufs_3.5.0-1.pgdg12+1_amd64.deb
postgresql-18-decoderbufs3.4.0d12.x86_64pgdg39.2 KiBpostgresql-18-decoderbufs_3.4.0-1.pgdg12+1_amd64.deb
postgresql-18-decoderbufs3.5.0d12.aarch64pgdg38.6 KiBpostgresql-18-decoderbufs_3.5.0-1.pgdg12+1_arm64.deb
postgresql-18-decoderbufs3.4.0d12.aarch64pgdg38.6 KiBpostgresql-18-decoderbufs_3.4.0-1.pgdg12+1_arm64.deb
postgresql-18-decoderbufs3.5.0d13.x86_64pgdg39.4 KiBpostgresql-18-decoderbufs_3.5.0-1.pgdg13+1_amd64.deb
postgresql-18-decoderbufs3.4.0d13.x86_64pgdg39.3 KiBpostgresql-18-decoderbufs_3.4.0-1.pgdg13+1_amd64.deb
postgresql-18-decoderbufs3.5.0d13.aarch64pgdg38.7 KiBpostgresql-18-decoderbufs_3.5.0-1.pgdg13+1_arm64.deb
postgresql-18-decoderbufs3.4.0d13.aarch64pgdg38.8 KiBpostgresql-18-decoderbufs_3.4.0-1.pgdg13+1_arm64.deb
postgresql-18-decoderbufs3.5.0u22.x86_64pgdg39.8 KiBpostgresql-18-decoderbufs_3.5.0-1.pgdg22.04+1_amd64.deb
postgresql-18-decoderbufs3.4.0u22.x86_64pgdg39.7 KiBpostgresql-18-decoderbufs_3.4.0-1.pgdg22.04+1_amd64.deb
postgresql-18-decoderbufs3.5.0u22.aarch64pgdg39.2 KiBpostgresql-18-decoderbufs_3.5.0-1.pgdg22.04+1_arm64.deb
postgresql-18-decoderbufs3.4.0u22.aarch64pgdg39.2 KiBpostgresql-18-decoderbufs_3.4.0-1.pgdg22.04+1_arm64.deb
postgresql-18-decoderbufs3.5.0u24.x86_64pgdg38.9 KiBpostgresql-18-decoderbufs_3.5.0-1.pgdg24.04+1_amd64.deb
postgresql-18-decoderbufs3.4.0u24.x86_64pgdg38.8 KiBpostgresql-18-decoderbufs_3.4.0-1.pgdg24.04+1_amd64.deb
postgresql-18-decoderbufs3.5.0u24.aarch64pgdg38.4 KiBpostgresql-18-decoderbufs_3.5.0-1.pgdg24.04+1_arm64.deb
postgresql-18-decoderbufs3.4.0u24.aarch64pgdg38.4 KiBpostgresql-18-decoderbufs_3.4.0-1.pgdg24.04+1_arm64.deb
postgresql-18-decoderbufs3.5.0u26.x86_64pgdg38.4 KiBpostgresql-18-decoderbufs_3.5.0-1.pgdg26.04+1_amd64.deb
postgresql-18-decoderbufs3.4.0u26.x86_64pgdg38.5 KiBpostgresql-18-decoderbufs_3.4.0-1.pgdg26.04+1_amd64.deb
postgresql-18-decoderbufs3.5.0u26.aarch64pgdg38.5 KiBpostgresql-18-decoderbufs_3.5.0-1.pgdg26.04+1_arm64.deb
postgresql-18-decoderbufs3.4.0u26.aarch64pgdg38.5 KiBpostgresql-18-decoderbufs_3.4.0-1.pgdg26.04+1_arm64.deb

Source

Install

Make sure PGDG repo available:

pig repo add pgdg -u    # add pgdg repo and update cache

Install this extension with pig:

pig install decoderbufs;		# install via package name, for the active PG version

pig install decoderbufs -v 18;   # install for PG 18
pig install decoderbufs -v 17;   # install for PG 17
pig install decoderbufs -v 16;   # install for PG 16
pig install decoderbufs -v 15;   # install for PG 15
pig install decoderbufs -v 14;   # install for PG 14

Config this extension to shared_preload_libraries:

shared_preload_libraries = 'decoderbufs';

This extension does not need CREATE EXTENSION DDL command

Usage

decoderbufs: Logical decoding plugin that delivers WAL stream changes using a Protocol Buffer format

A PostgreSQL logical decoding output plugin that serializes WAL changes into Protocol Buffers format, primarily used by the Debezium PostgreSQL connector for change data capture.

Configuration

In postgresql.conf:

shared_preload_libraries = 'decoderbufs'
wal_level = logical
max_wal_senders = 8
max_replication_slots = 4

Using with SQL (Debug Mode)

-- Create a logical replication slot
SELECT * FROM pg_create_logical_replication_slot('decoderbufs_demo', 'decoderbufs');

-- Perform table modifications
INSERT INTO my_table VALUES (1, 'test');
UPDATE my_table SET col = 'updated' WHERE id = 1;

-- Peek at changes in debug text mode
SELECT data FROM pg_logical_slot_peek_changes(
    'decoderbufs_demo', NULL, NULL, 'debug-mode', '1');

-- Consume changes
SELECT data FROM pg_logical_slot_get_changes(
    'decoderbufs_demo', NULL, NULL, 'debug-mode', '1');

-- Check slot status
SELECT * FROM pg_replication_slots WHERE slot_type = 'logical';

Type Mappings

PostgreSQL TypeProtobuf Field
BOOLdatum_boolean
INT2, INT4datum_int32
INT8, OIDdatum_int64
FLOAT4datum_float
FLOAT8, NUMERICdatum_double
CHAR, VARCHAR, TEXTdatum_string
JSON, XML, UUIDdatum_string
TIMESTAMP(TZ)datum_string
BYTEAdatum_bytes
POINT, PostGISdatum_point

Notes

  • For UPDATE/DELETE, set REPLICA IDENTITY appropriately
  • Binary Protocol Buffer output is consumed by the Debezium Postgres Connector
  • debug-mode option provides human-readable text output for SQL console testing
  • Requires protobuf-c library and PostGIS development packages for compilation
Last updated on