This release makes binary-only changes. Once installed, any existing use of pg_clickhouse v0.3 will get its benefits on reload without needing to ALTER EXTENSION UPDATE.
⚡ Improvements
- Added a
compressionserver option for the binary driver to enable ClickHouse native protocol compression of query results andINSERTdata. Acceptsnone,lz4, orzstd, and defaults tolz4(#268). - Added a
secureserver option giving explicit control over TLS for both the binary and HTTP drivers, rather than inferring it from the host name and port. Acceptson(force TLS),off(force plaintext), orauto(the previous cloud-host/port heuristic, still the default). Thanks to Andrey Borodin for the PR (#272). - Added a
min_tls_versionserver option to set the minimum TLS protocol version negotiated by both drivers. AcceptsTLSv1,TLSv1.1,TLSv1.2, orTLSv1.3, and defaults to the TLS library's own minimum (#272). - Added mapping for
regexp_match()to pushdown toextractGroups(), orarraySlice(extractAll(text, pattern), 1, 1)if the regex contains no capturing groups (#270).
🚀 Distribution
- Added support for PostgreSQL 19beta1 (#269).
🐞 Bug Fixes
- Fixed incorrect translation of regular expression flags introduced in v0.2.0 to more accurately match the Postgres behavior when executing in ClickHouse. We no longer automatically push down
-s, because it is enabled by default in both Postgres and ClickHouse. But the Postgres flagssandmcancel each other out, so we only setsif there is nomand if there is anmwe set(?m-s). - Changed the pushdown of the
pregular expression fag as-sinstead ofsto more accurately match the Postgres behavior (#271). - Eliminated push down of regular expression functions when the regular expression argument is not a constant (#270).
- Fixed a memory leak in the http driver when not using streaming (#281).
- Fixed a memory leak when a foreign scan repeatedly re-scans, typically a nested-loop join with a parameterized inner foreign scan (#282).
- Changed the deparsing of
ANY()with an empty array (WHERE x = ANY('{}')) to ahas()function rather than anIN()expression. This fixes errors on versions prior to ClickHouse 25, whereIN()with no list returns an error (#285)
🏗️ Build Setup
- Replaced code formatting, previously performed by
pg_bsd_indent, with clang-format using a modified "Mozilla style" with an emphasis on legibility and safety (#283).
🆚 For more detail compare changes since v0.3.1.