pg_trickle

Streaming tables and differential view maintenance for PostgreSQL 18

Overview

PackageVersionCategoryLicenseLanguage
pg_trickle0.17.0FEATApache-2.0Rust
IDExtensionBinLibLoadCreateTrustRelocSchema
2860pg_trickleNoYesYesYesNoNo-
Relatedpg_ivm pg_incremental pg_partman timeseries

Version

TypeRepoVersionPG VerPackageDeps
EXTPIGSTY0.17.01817161514pg_trickle-
RPMPIGSTY0.17.01817161514pg_trickle_$v-
DEBPIGSTY0.17.01817161514postgresql-$v-pg-trickle-
OS / PGPG18PG17PG16PG15PG14
el8.x86_64PIGSTY MISSPIGSTY MISSPIGSTY MISSPIGSTY MISS
el8.aarch64PIGSTY MISSPIGSTY MISSPIGSTY MISSPIGSTY MISS
el9.x86_64PIGSTY MISSPIGSTY MISSPIGSTY MISSPIGSTY MISS
el9.aarch64PIGSTY MISSPIGSTY MISSPIGSTY MISSPIGSTY MISS
el10.x86_64PIGSTY MISSPIGSTY MISSPIGSTY MISSPIGSTY MISS
el10.aarch64PIGSTY MISSPIGSTY MISSPIGSTY MISSPIGSTY MISS
d12.x86_64PIGSTY MISSPIGSTY MISSPIGSTY MISSPIGSTY MISS
d12.aarch64
PIGSTY 0.20.0
PIGSTY MISSPIGSTY MISSPIGSTY MISSPIGSTY MISS
d13.x86_64
PIGSTY 0.20.0
PIGSTY MISSPIGSTY MISSPIGSTY MISSPIGSTY MISS
d13.aarch64
PIGSTY 0.20.0
PIGSTY MISSPIGSTY MISSPIGSTY MISSPIGSTY MISS
u22.x86_64
PIGSTY 0.20.0
PIGSTY MISSPIGSTY MISSPIGSTY MISSPIGSTY MISS
u22.aarch64
PIGSTY 0.20.0
PIGSTY MISSPIGSTY MISSPIGSTY MISSPIGSTY MISS
u24.x86_64
PIGSTY 0.20.0
PIGSTY MISSPIGSTY MISSPIGSTY MISSPIGSTY MISS
u24.aarch64
PIGSTY 0.20.0
PIGSTY MISSPIGSTY MISSPIGSTY MISSPIGSTY MISS

Build

You can build the RPM / DEB packages for pg_trickle using pig build:

pig build pkg pg_trickle         # build RPM / DEB packages

Install

You can install pg_trickle directly. First, make sure the PGDG and PIGSTY repositories are added and enabled:

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

Install the extension using pig or apt/yum/dnf:

pig install pg_trickle;          # Install for current active PG version
pig ext install -y pg_trickle -v 18  # PG 18
dnf install -y pg_trickle_18       # PG 18
apt install -y postgresql-18-pg-trickle   # PG 18

Preload:

shared_preload_libraries = 'pg_trickle';

Create Extension:

CREATE EXTENSION pg_trickle;

Usage

Sources: README v0.20.0, v0.20.0 release notes

pg_trickle provides incrementally maintained stream tables for PostgreSQL 18. It keeps query results fresh using differential refresh when possible, with full recompute and immediate in-transaction modes also documented upstream.

Enable the Extension

-- postgresql.conf
shared_preload_libraries = 'pg_trickle'
max_worker_processes = 8

CREATE EXTENSION pg_trickle;

The upstream README notes that wal_level = logical is not required by default. CDC starts with row-level triggers and can switch to WAL-based capture when pg_trickle.cdc_mode = 'auto'.

Create and Refresh Stream Tables

SELECT pgtrickle.create_stream_table(
    'regional_totals',
    'SELECT region, SUM(amount) AS total, COUNT(*) AS cnt
     FROM orders GROUP BY region'
);

SELECT * FROM regional_totals;
SELECT pgtrickle.refresh_stream_table('regional_totals');

The documented refresh modes are AUTO, DIFFERENTIAL, FULL, and IMMEDIATE.

SELECT pgtrickle.create_stream_table(
    'regional_totals_live',
    'SELECT region, SUM(amount) AS total, COUNT(*) AS cnt
     FROM orders GROUP BY region',
    schedule => NULL,
    refresh_mode => 'IMMEDIATE'
);

Operations and Introspection

SELECT pgtrickle.alter_stream_table(
    'regional_totals',
    query => 'SELECT region, SUM(amount) AS total FROM orders GROUP BY region'
);

SELECT * FROM pgtrickle.pgt_status();
SELECT * FROM pgtrickle.health_check();
SELECT * FROM pgtrickle.refresh_timeline(20);
SELECT * FROM pgtrickle.change_buffer_sizes();
SELECT * FROM pgtrickle.dependency_tree();

The README also documents broad SQL coverage including joins, aggregates, window functions, recursive CTEs, subqueries, set operations, and TopK queries.

v0.20.0 Monitoring Additions

The v0.20.0 release adds built-in self-monitoring:

  • pgtrickle.setup_dog_feeding()
  • pgtrickle.teardown_dog_feeding()
  • pgtrickle.dog_feeding_status()

Release notes describe five monitoring stream tables that analyze refresh history and can emit threshold advice and alerts.


Last Modified 2026-04-19: update extension stub docs (9f178c3)