--- title: 0.19.0 --- ## New Features 🎉 ### Broadened Aggregate Pushdown Support The [custom aggregate scan](/documentation/aggregates) 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: ```sql 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: ```sql 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): ```sql 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. ## Performance Improvements 🚀 ### 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](https://github.com/paradedb/paradedb/pull/3203), 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](https://github.com/paradedb/paradedb/pull/3252), backed by an AVL tree. This data structure was designed to minimize lock contention during heavy, concurrent writes. The full changelog is available [here](https://github.com/paradedb/paradedb/releases/tag/v0.19.0).