wal2json

wal2json

wal2json : Changing data capture in JSON format

Overview

ID Extension Package Version Category License Language
9630
wal2json
wal2json
2.6
ETL
BSD 3-Clause
C
Attribute Has Binary Has Library Need Load Has DDL Relocatable Trusted
--s----
No
Yes
No
No
no
no
Relationships
See Also
pglogical
wal2mongo
decoderbufs
decoder_raw
kafka_fdw
pglogical_origin
pglogical_ticker
pg_failover_slots

Packages

Type Repo Version PG Major Compatibility Package Pattern Dependencies
EXT
PGDG
2.6
18
17
16
15
14
wal2json -
RPM
PGDG
2.6
18
17
16
15
14
wal2json_$v -
DEB
PGDG
2.6
18
17
16
15
14
postgresql-$v-wal2json -
Linux / PG PG18 PG17 PG16 PG15 PG14
el8.x86_64
PGDG 2.6
PGDG 2.6
PGDG 2.6
PGDG 2.6
PGDG 2.6
el8.aarch64
PGDG 2.6
PGDG 2.6
PGDG 2.6
PGDG 2.6
PGDG 2.6
el9.x86_64
PGDG 2.6
PGDG 2.6
PGDG 2.5
PGDG 2.5
PGDG 2.5
el9.aarch64
PGDG 2.6
PGDG 2.6
PGDG 2.6
PGDG 2.6
PGDG 2.6
el10.x86_64
PGDG 2.6
PGDG 2.6
PGDG 2.6
PGDG 2.6
PGDG 2.6
el10.aarch64
PGDG 2.6
PGDG 2.6
PGDG 2.6
PGDG 2.6
PGDG 2.6
d12.x86_64
PGDG 2.6
PGDG 2.6
PGDG 2.6
PGDG 2.6
PGDG 2.6
d12.aarch64
PGDG 2.6
PGDG 2.6
PGDG 2.6
PGDG 2.6
PGDG 2.6
d13.x86_64
PGDG 2.6
PGDG 2.6
PGDG 2.6
PGDG 2.6
PGDG 2.6
d13.aarch64
PGDG 2.6
PGDG 2.6
PGDG 2.6
PGDG 2.6
PGDG 2.6
u22.x86_64
PGDG 2.6
PGDG 2.6
PGDG 2.6
PGDG 2.6
PGDG 2.6
u22.aarch64
PGDG 2.6
PGDG 2.6
PGDG 2.6
PGDG 2.6
PGDG 2.6
u24.x86_64
PGDG 2.6
PGDG 2.6
PGDG 2.6
PGDG 2.6
PGDG 2.6
u24.aarch64
PGDG 2.6
PGDG 2.6
PGDG 2.6
PGDG 2.6
PGDG 2.6
Package Version OS ORG SIZE File URL
wal2json_18 2.6 el8.x86_64 pgdg 33.3 KiB wal2json_18-2.6-3PGDG.rhel8.x86_64.rpm
wal2json_18 2.6 el8.x86_64 pigsty 31.4 KiB wal2json_18-2.6-1PIGSTY.el8.x86_64.rpm
wal2json_18 2.6 el8.aarch64 pgdg 31.4 KiB wal2json_18-2.6-3PGDG.rhel8.aarch64.rpm
wal2json_18 2.6 el8.aarch64 pigsty 29.5 KiB wal2json_18-2.6-1PIGSTY.el8.aarch64.rpm
wal2json_18 2.6 el9.x86_64 pgdg 32.1 KiB wal2json_18-2.6-3PGDG.rhel9.x86_64.rpm
wal2json_18 2.6 el9.x86_64 pigsty 31.8 KiB wal2json_18-2.6-1PIGSTY.el9.x86_64.rpm
wal2json_18 2.6 el9.aarch64 pgdg 30.4 KiB wal2json_18-2.6-3PGDG.rhel9.aarch64.rpm
wal2json_18 2.6 el9.aarch64 pigsty 30.1 KiB wal2json_18-2.6-1PIGSTY.el9.aarch64.rpm
wal2json_18 2.6 el10.x86_64 pgdg 32.9 KiB wal2json_18-2.6-3PGDG.rhel10.x86_64.rpm
wal2json_18 2.6 el10.aarch64 pgdg 31.3 KiB wal2json_18-2.6-3PGDG.rhel10.aarch64.rpm
postgresql-18-wal2json 2.6 d12.x86_64 pgdg 56.2 KiB postgresql-18-wal2json_2.6-3.pgdg12+1_amd64.deb
postgresql-18-wal2json 2.6 d12.aarch64 pgdg 53.9 KiB postgresql-18-wal2json_2.6-3.pgdg12+1_arm64.deb
postgresql-18-wal2json 2.6 d13.x86_64 pgdg 55.9 KiB postgresql-18-wal2json_2.6-3.pgdg13+1_amd64.deb
postgresql-18-wal2json 2.6 d13.aarch64 pgdg 54.1 KiB postgresql-18-wal2json_2.6-3.pgdg13+1_arm64.deb
postgresql-18-wal2json 2.6 u22.x86_64 pgdg 57.6 KiB postgresql-18-wal2json_2.6-3.pgdg22.04+1_amd64.deb
postgresql-18-wal2json 2.6 u22.aarch64 pgdg 54.9 KiB postgresql-18-wal2json_2.6-3.pgdg22.04+1_arm64.deb
postgresql-18-wal2json 2.6 u24.x86_64 pgdg 56.1 KiB postgresql-18-wal2json_2.6-3.pgdg24.04+1_amd64.deb
postgresql-18-wal2json 2.6 u24.aarch64 pgdg 53.9 KiB postgresql-18-wal2json_2.6-3.pgdg24.04+1_arm64.deb
Package Version OS ORG SIZE File URL
wal2json_17 2.6 el8.x86_64 pgdg 33.3 KiB wal2json_17-2.6-2PGDG.rhel8.x86_64.rpm
wal2json_17 2.6 el8.aarch64 pgdg 31.5 KiB wal2json_17-2.6-2PGDG.rhel8.aarch64.rpm
wal2json_17 2.6 el9.x86_64 pgdg 32.5 KiB wal2json_17-2.6-2PGDG.rhel9.x86_64.rpm
wal2json_17 2.6 el9.aarch64 pgdg 30.9 KiB wal2json_17-2.6-2PGDG.rhel9.aarch64.rpm
wal2json_17 2.6 el10.x86_64 pgdg 33.0 KiB wal2json_17-2.6-3PGDG.rhel10.x86_64.rpm
wal2json_17 2.6 el10.aarch64 pgdg 31.3 KiB wal2json_17-2.6-3PGDG.rhel10.aarch64.rpm
postgresql-17-wal2json 2.6 d12.x86_64 pgdg 56.0 KiB postgresql-17-wal2json_2.6-3.pgdg12+1_amd64.deb
postgresql-17-wal2json 2.6 d12.aarch64 pgdg 53.8 KiB postgresql-17-wal2json_2.6-3.pgdg12+1_arm64.deb
postgresql-17-wal2json 2.6 d13.x86_64 pgdg 55.9 KiB postgresql-17-wal2json_2.6-3.pgdg13+1_amd64.deb
postgresql-17-wal2json 2.6 d13.aarch64 pgdg 54.0 KiB postgresql-17-wal2json_2.6-3.pgdg13+1_arm64.deb
postgresql-17-wal2json 2.6 u22.x86_64 pgdg 63.9 KiB postgresql-17-wal2json_2.6-3.pgdg22.04+1_amd64.deb
postgresql-17-wal2json 2.6 u22.aarch64 pgdg 61.4 KiB postgresql-17-wal2json_2.6-3.pgdg22.04+1_arm64.deb
postgresql-17-wal2json 2.6 u24.x86_64 pgdg 55.9 KiB postgresql-17-wal2json_2.6-3.pgdg24.04+1_amd64.deb
postgresql-17-wal2json 2.6 u24.aarch64 pgdg 53.8 KiB postgresql-17-wal2json_2.6-3.pgdg24.04+1_arm64.deb
Package Version OS ORG SIZE File URL
wal2json_16 2.6 el8.x86_64 pgdg 33.1 KiB wal2json_16-2.6-1PGDG.rhel8.x86_64.rpm
wal2json_16 2.5 el8.x86_64 pgdg 32.7 KiB wal2json_16-2.5-3.rhel8.1.x86_64.rpm
wal2json_16 2.6 el8.aarch64 pgdg 31.5 KiB wal2json_16-2.6-1PGDG.rhel8.aarch64.rpm
wal2json_16 2.5 el8.aarch64 pgdg 31.0 KiB wal2json_16-2.5-3.rhel8.1.aarch64.rpm
wal2json_16 2.5 el9.x86_64 pgdg 31.8 KiB wal2json_16-2.5-3.rhel9.1.x86_64.rpm
wal2json_16 2.6 el9.aarch64 pgdg 30.8 KiB wal2json_16-2.6-1PGDG.rhel9.aarch64.rpm
wal2json_16 2.5 el9.aarch64 pgdg 30.3 KiB wal2json_16-2.5-3.rhel9.1.aarch64.rpm
wal2json_16 2.6 el10.x86_64 pgdg 33.0 KiB wal2json_16-2.6-3PGDG.rhel10.x86_64.rpm
wal2json_16 2.6 el10.aarch64 pgdg 31.3 KiB wal2json_16-2.6-3PGDG.rhel10.aarch64.rpm
postgresql-16-wal2json 2.6 d12.x86_64 pgdg 56.0 KiB postgresql-16-wal2json_2.6-3.pgdg12+1_amd64.deb
postgresql-16-wal2json 2.6 d12.aarch64 pgdg 53.8 KiB postgresql-16-wal2json_2.6-3.pgdg12+1_arm64.deb
postgresql-16-wal2json 2.6 d13.x86_64 pgdg 55.9 KiB postgresql-16-wal2json_2.6-3.pgdg13+1_amd64.deb
postgresql-16-wal2json 2.6 d13.aarch64 pgdg 54.0 KiB postgresql-16-wal2json_2.6-3.pgdg13+1_arm64.deb
postgresql-16-wal2json 2.6 u22.x86_64 pgdg 63.6 KiB postgresql-16-wal2json_2.6-3.pgdg22.04+1_amd64.deb
postgresql-16-wal2json 2.6 u22.aarch64 pgdg 61.1 KiB postgresql-16-wal2json_2.6-3.pgdg22.04+1_arm64.deb
postgresql-16-wal2json 2.6 u24.x86_64 pgdg 56.0 KiB postgresql-16-wal2json_2.6-3.pgdg24.04+1_amd64.deb
postgresql-16-wal2json 2.6 u24.aarch64 pgdg 53.8 KiB postgresql-16-wal2json_2.6-3.pgdg24.04+1_arm64.deb
Package Version OS ORG SIZE File URL
wal2json_15 2.6 el8.x86_64 pgdg 33.2 KiB wal2json_15-2.6-1PGDG.rhel8.x86_64.rpm
wal2json_15 2.5 el8.x86_64 pgdg 32.3 KiB wal2json_15-2.5-1.rhel8.x86_64.rpm
wal2json_15 2.6 el8.aarch64 pgdg 31.3 KiB wal2json_15-2.6-1PGDG.rhel8.aarch64.rpm
wal2json_15 2.5 el8.aarch64 pgdg 30.6 KiB wal2json_15-2.5-2.rhel8.aarch64.rpm
wal2json_15 2.5 el8.aarch64 pgdg 30.6 KiB wal2json_15-2.5-1.rhel8.aarch64.rpm
wal2json_15 2.5 el9.x86_64 pgdg 32.1 KiB wal2json_15-2.5-1.rhel9.x86_64.rpm
wal2json_15 2.6 el9.aarch64 pgdg 30.7 KiB wal2json_15-2.6-1PGDG.rhel9.aarch64.rpm
wal2json_15 2.5 el9.aarch64 pgdg 30.6 KiB wal2json_15-2.5-2.rhel9.aarch64.rpm
wal2json_15 2.5 el9.aarch64 pgdg 30.5 KiB wal2json_15-2.5-1.rhel9.aarch64.rpm
wal2json_15 2.6 el10.x86_64 pgdg 33.0 KiB wal2json_15-2.6-3PGDG.rhel10.x86_64.rpm
wal2json_15 2.6 el10.aarch64 pgdg 31.4 KiB wal2json_15-2.6-3PGDG.rhel10.aarch64.rpm
postgresql-15-wal2json 2.6 d12.x86_64 pgdg 56.6 KiB postgresql-15-wal2json_2.6-3.pgdg12+1_amd64.deb
postgresql-15-wal2json 2.6 d12.aarch64 pgdg 54.1 KiB postgresql-15-wal2json_2.6-3.pgdg12+1_arm64.deb
postgresql-15-wal2json 2.6 d13.x86_64 pgdg 56.4 KiB postgresql-15-wal2json_2.6-3.pgdg13+1_amd64.deb
postgresql-15-wal2json 2.6 d13.aarch64 pgdg 54.2 KiB postgresql-15-wal2json_2.6-3.pgdg13+1_arm64.deb
postgresql-15-wal2json 2.6 u22.x86_64 pgdg 64.2 KiB postgresql-15-wal2json_2.6-3.pgdg22.04+1_amd64.deb
postgresql-15-wal2json 2.6 u22.aarch64 pgdg 61.5 KiB postgresql-15-wal2json_2.6-3.pgdg22.04+1_arm64.deb
postgresql-15-wal2json 2.6 u24.x86_64 pgdg 56.6 KiB postgresql-15-wal2json_2.6-3.pgdg24.04+1_amd64.deb
postgresql-15-wal2json 2.6 u24.aarch64 pgdg 54.1 KiB postgresql-15-wal2json_2.6-3.pgdg24.04+1_arm64.deb
Package Version OS ORG SIZE File URL
wal2json_14 2.6 el8.x86_64 pgdg 33.2 KiB wal2json_14-2.6-1PGDG.rhel8.x86_64.rpm
wal2json_14 2.5 el8.x86_64 pgdg 32.4 KiB wal2json_14-2.5-1.rhel8.x86_64.rpm
wal2json_14 2.4 el8.x86_64 pgdg 76.4 KiB wal2json_14-2.4-1.rhel8.x86_64.rpm
wal2json_14 2.6 el8.aarch64 pgdg 31.2 KiB wal2json_14-2.6-1PGDG.rhel8.aarch64.rpm
wal2json_14 2.5 el8.aarch64 pgdg 30.6 KiB wal2json_14-2.5-2.rhel8.aarch64.rpm
wal2json_14 2.5 el8.aarch64 pgdg 30.5 KiB wal2json_14-2.5-1.rhel8.aarch64.rpm
wal2json_14 2.5 el9.x86_64 pgdg 32.1 KiB wal2json_14-2.5-1.rhel9.x86_64.rpm
wal2json_14 2.6 el9.aarch64 pgdg 30.7 KiB wal2json_14-2.6-1PGDG.rhel9.aarch64.rpm
wal2json_14 2.5 el9.aarch64 pgdg 30.6 KiB wal2json_14-2.5-2.rhel9.aarch64.rpm
wal2json_14 2.5 el9.aarch64 pgdg 30.6 KiB wal2json_14-2.5-1.rhel9.aarch64.rpm
wal2json_14 2.6 el10.x86_64 pgdg 32.9 KiB wal2json_14-2.6-3PGDG.rhel10.x86_64.rpm
wal2json_14 2.6 el10.aarch64 pgdg 31.5 KiB wal2json_14-2.6-3PGDG.rhel10.aarch64.rpm
postgresql-14-wal2json 2.6 d12.x86_64 pgdg 56.2 KiB postgresql-14-wal2json_2.6-3.pgdg12+1_amd64.deb
postgresql-14-wal2json 2.6 d12.aarch64 pgdg 53.8 KiB postgresql-14-wal2json_2.6-3.pgdg12+1_arm64.deb
postgresql-14-wal2json 2.6 d13.x86_64 pgdg 56.1 KiB postgresql-14-wal2json_2.6-3.pgdg13+1_amd64.deb
postgresql-14-wal2json 2.6 d13.aarch64 pgdg 53.9 KiB postgresql-14-wal2json_2.6-3.pgdg13+1_arm64.deb
postgresql-14-wal2json 2.6 u22.x86_64 pgdg 64.3 KiB postgresql-14-wal2json_2.6-3.pgdg22.04+1_amd64.deb
postgresql-14-wal2json 2.6 u22.aarch64 pgdg 61.5 KiB postgresql-14-wal2json_2.6-3.pgdg22.04+1_arm64.deb
postgresql-14-wal2json 2.6 u24.x86_64 pgdg 56.2 KiB postgresql-14-wal2json_2.6-3.pgdg24.04+1_amd64.deb
postgresql-14-wal2json 2.6 u24.aarch64 pgdg 53.7 KiB postgresql-14-wal2json_2.6-3.pgdg24.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 wal2json;		# install via package name, for the active PG version

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

This extension does not need CREATE EXTENSION DDL command

Usage

wal2json: Changing data capture in JSON format

A logical decoding output plugin that produces JSON-formatted change data capture from the PostgreSQL WAL.

Configuration

In postgresql.conf:

wal_level = logical
max_replication_slots = 10
max_wal_senders = 10

Using with Streaming Protocol (pg_recvlogical)

# Create a replication slot
pg_recvlogical -d postgres --slot test_slot --create-slot -P wal2json

# Start consuming changes
pg_recvlogical -d postgres --slot test_slot --start -o pretty-print=1 -f -

# Drop the slot when done
pg_recvlogical -d postgres --slot test_slot --drop-slot

Using with SQL Functions

-- Create a logical replication slot
SELECT * FROM pg_create_logical_replication_slot('test_slot', 'wal2json');

-- Peek at changes (does not consume)
SELECT data FROM pg_logical_slot_peek_changes('test_slot', NULL, NULL);

-- Get and consume changes
SELECT data FROM pg_logical_slot_get_changes('test_slot', NULL, NULL,
    'pretty-print', '1');

-- Drop the slot
SELECT pg_drop_replication_slot('test_slot');

Output Format v1 (JSON per transaction)

{
  "change": [
    {
      "kind": "insert",
      "schema": "public",
      "table": "my_table",
      "columnnames": ["a", "b"],
      "columntypes": ["integer", "text"],
      "columnvalues": [1, "hello"]
    },
    {
      "kind": "delete",
      "schema": "public",
      "table": "my_table",
      "oldkeys": {
        "keynames": ["a"],
        "keytypes": ["integer"],
        "keyvalues": [1]
      }
    }
  ]
}

Output Format v2 (JSON per tuple)

Enable with: 'format-version', '2'

Key Parameters

  • include-xids - add transaction ID (default: false)
  • include-timestamp - add timestamp (default: false)
  • include-schemas - add schema name (default: true)
  • include-types - add column types (default: true)
  • include-pk - add primary key info (default: false)
  • include-lsn - add WAL LSN (default: false)
  • include-not-null - add NOT NULL info (default: false)
  • include-default - add default expressions (default: false)
  • pretty-print - format JSON output (default: false)
  • filter-tables - comma-separated list of tables to include
  • add-tables - same as filter-tables
  • filter-msg-prefixes - filter logical messages by prefix
  • format-version - 1 (per-transaction) or 2 (per-tuple)
  • actions - filter by action type: insert, update, delete, truncate
Last updated on