ClickhouseAnnouncement
What's new in pg_clickhouse v0.10.0: Subqueries, TPC-H Speedups, C Driver, and Aggregates
Summary
pg_clickhouse v0.10.0 expands pushdown for analytic workloads, with full pushdown across the TPC-H suite remaining the stated target. The release moves the scoreboard from 12 of 22 fully pushed-down queries to 16, including Q17, which falls from 32.7 seconds to 37 milliseconds when its correlated aggregate subquery is shipped to ClickHouse. SubPlan handling now turns PostgreSQL subqueries into ClickHouse subqueries, while NOT IN and related operators receive guards that preserve PostgreSQL’s three-valued NULL semantics; compatibility requires ClickHouse 25.8 or later for the correlated-subquery shape. The binary driver was rebuilt on a plain-C client library and hardened against concurrency bugs. The release also broadens pushed-down functions and aggregates, adds clickhouse_perform() and clickhouse_server_version(), and leaves six TPC-H queries plus other roadmap items unresolved.
Context
The project identifies improving pushdown coverage for analytic workloads as its top focus, using full pushdown across the TPC-H benchmark suite as the immediate metric. Some subqueries previously caused pg_clickhouse to fetch every row from ClickHouse and evaluate the subquery locally. Six TPC-H queries remain unpushed after this release.
Approach / What changed
The release adds whole-subquery pushdown, including correlated subqueries and NOT IN handling, with guards that preserve PostgreSQL’s three-valued NULL semantics. It rebuilds the binary driver on a plain-C client library, hardens it against concurrency bugs, expands pushed-down functions and aggregates, and adds clickhouse_perform() for statements executed for effect plus clickhouse_server_version() for version checks.
Takeaways
TPC-H coverage increased from 12 of 22 fully pushed-down queries to 16; Q17 improved from 32.7 seconds to 37 milliseconds after its correlated aggregate subquery was pushed down.
NOT IN and related operators use consumption-aware NULL guards to match PostgreSQL semantics, while non-nullable cases can use simpler native ClickHouse expressions.
clickhouse_perform() handles statements without row results, and clickhouse_raw_query() is deprecated in favor of configured-server functions with managed connection and driver selection.
Source and freshness
- Source
- clickhouse.com
- Published
- Added to Yomu
- Last updated
Summaries are generated from the original by a language model. Check the original before relying on it.
Keep reading
Related reading
The Good Stuff
Paid picks we use ourselves. Links carry a referral code — a subscription through one earns us a commission at no extra cost to you.
The best engineering reads, once a week
One useful email. Unsubscribe anytime.