New Features 🎉
Broadened Aggregate Pushdown Support
The custom aggregate scan has pushdown support for several new query types. The first is FILTER
,
which is analogous to the Elastic filters aggregation. It allows a single query to efficiently collect aggregates over multiple
WHERE
clauses:
SELECT
COUNT(*) FILTER (WHERE category @@@ 'electronics') AS electronics,
COUNT(*) FILTER (WHERE category @@@ 'books') AS books,
AVG(price) FILTER (WHERE status @@@ 'available') AS avg_available_price
FROM products
GROUP BY brand;
The second is pushdown support for COALESCE
within an aggregate:
SELECT AVG(COALESCE(price, 0)) FROM products WHERE status @@@ 'available';
And the third is support for COUNT
over a specific field (previously, only COUNT(*)
was pushed down):
SELECT COUNT(price) FROM products WHERE status @@@ 'available';
Logical Replication Support
Previously, logical replication was an enterprise-only feature. We have made this feature available in ParadeDB Community,
which means that ParadeDB Community can now run as a logical replica.
Logical replication in ParadeDB is supported for PG17+ only.
Write Throughput
We have made significant improvements to ParadeDB’s write throughput, especially for single-row updates. The first change is a new
“mutable segment” data structure, designed to incur the minimal possible overhead during a single-row write. The overhead of tokenizing,
serializing, and flushing an immutable segment is now completely gone for these single-row writes.
The second is a new free space map data structure, backed by an AVL tree. This data structure was designed to minimize lock contention
during heavy, concurrent writes.
The full changelog is available here.