Contents
v0.6.0 — Partitioned Tables, Safe DDL, and Circular Dependencies
Full technical details: v0.6.0.md-full.md
Status: ✅ Released | Scope: Medium (~4 weeks)
Stream tables on partitioned source tables, idempotent “create or replace” DDL for simpler deployments, and the foundation for circular dependency handling in complex DAGs.
What problem does this solve?
Many large PostgreSQL deployments use table partitioning to manage data at scale — for example, one partition per month for time-series data. Stream tables that read from partitioned tables need special treatment. Deployment tools (like dbt and migration scripts) need safe, idempotent DDL that can be run repeatedly without errors. And some advanced use cases require stream tables that depend on each other in a cycle.
Partitioned Source Tables
PostgreSQL table partitioning splits a large table into smaller physical subtables based on a partition key. Queries against the parent table automatically route to the right partitions.
pg_trickle now installs change-capture triggers on all partitions of a partitioned source table, and correctly captures changes from any partition. When new partitions are added (e.g. a new monthly partition), pg_trickle detects this and installs triggers automatically.
In plain terms: if your log or events table is partitioned by date, stream tables on it now work correctly without any special configuration.
create_or_replace_stream_table
Deployment pipelines often need to run the same setup script multiple times
— during development, testing, and production rollout. Previously, running
create_stream_table twice on the same name would produce an error.
create_or_replace_stream_table works like a safe upsert: if the stream
table already exists with the same definition, it is left unchanged. If it
exists with a different definition, it is updated. If it does not exist, it
is created. This makes deployment scripts fully idempotent.
Circular Dependency Foundation
Most dependency graphs are acyclic — A depends on B depends on C, with no cycles. But some advanced use cases involve cycles: a stream table whose result feeds back into its own source, or two stream tables that each reference the other.
v0.6.0 lays the groundwork for handling these circular dependencies safely. The scheduler can now detect cycles in the dependency graph and report them clearly, rather than hanging or crashing. Full execution of circular DAGs follows in v0.7.0.
Edge Case Hardening
A set of edge cases in the differential engine were corrected:
COALESCEandNULLIFin aggregate expressions- Multiple
DISTINCT ONcolumns - Subqueries in
FROMclauses that also appear as JOIN targets
Scope
v0.6.0 extends pg_trickle’s reach to partitioned tables (a common production configuration), improves deployment ergonomics with idempotent DDL, and begins the circular dependency story. Partitioned source support is the headline feature for large-scale deployments.