What's Changed
⬆️ ClickHouse upgrade
- Sync chdb-core to ClickHouse upstream
v26.7.2.59-stable(fromv26.5.1.882-stable) by @wudidapaopao in #165
🚀 New features
- WebAssembly (wasm64) build of chDB — run the full engine in the browser by @wudidapaopao in #77
- WebAssembly UDF runtime + tests by @ShawnChen-Sirius in #94; live query progress / peak-memory / cancellation for WASM by @wudidapaopao in #100; DataLakeCatalog + Iceberg queries in WASM by @wudidapaopao in #106
- Streaming INSERT interface (C + Python API) by @wudidapaopao in #98, with parameterized streaming INSERT and idempotent fetch-after-EOF in #127
- ADBC driver — export
chdb_adbc_initfrom libchdb by @ShawnChen-Sirius in #132 (marked experimental + conformance-tested in #145, #160) - Arrow PyCapsule interface (
__arrow_c_stream__) for query results andPython()table input by @wudidapaopao in #149 - MySQL, MongoDB and HNSW vector-similarity index enabled on all platforms by @ShawnChen-Sirius in #84
- C API: expose INSERT write progress (
written_rows/written_bytes) by @ShawnChen-Sirius in #89 - Expose the chDB version as a compile-time constant in
chdb.hby @wudidapaopao in #157 - Opt-in error-string stack traces via
--stacktraceby @wudidapaopao in #151 - Support
bytes/bytearray/memoryviewvalues in Python UDFs by @wudidapaopao in #162 - chdb-cloudflare — a chDB bundle for Cloudflare Workers by @wudidapaopao in #147
- Split
chdb.wasminto a hot primary and a lazily-loaded deferred module by @wudidapaopao in #121
⚡ Performance
- Faster Pandas DataFrame scans — session metadata cache, zero-copy buffer mounts, and jemalloc background threads by @wudidapaopao in #174
- Zero-copy Arrow string scan + GIL/NUL correctness fixes by @wudidapaopao in #87
- Faster scan/read path — non-null inference, PREWHERE, top-N late materialization, Arrow string predicate, anchored
replaceRegexpby @wudidapaopao in #95 - Python UDF: cut per-row overhead and free-threaded GC pressure in the scalar call loop by @wudidapaopao in #142
🐞 Fixes
- Make concurrent queries on one connection reliable (token-paired
Python()name bindings) by @wudidapaopao in #175 - Destroy
EmbeddedServerin the atexit hook when a connection is left open (fixes a teardown SIGSEGV) by @wudidapaopao in #178 - Fix
DROP ... SYNCin fresh persistent sessions by @dannanors in #173 - Fix a
handled_signalsdata race and a leaked connection cell by @wudidapaopao in #172 - Avoid a leak in
connect_chdb_with_exceptionon allocation failure by @serprex in #166; contain exceptions insidedl_iterate_phdrcallbacks by @serprex in #167 - Fix named-collection shutdown by @ShawnChen-Sirius in #83 and readonly-mode bypass via named-collection DDL in #120
- Fix
BACKUP/RESTOREto S3 in embedded mode by @ShawnChen-Sirius in #134 - Keep trailing NUL bytes when binding
fixed_size_binaryby @ShawnChen-Sirius in #161 Python(df): fail per-column on pandasArrowDtypeinstead of misreading buffers by @wudidapaopao in #140; fixon_null="skip"invoking UDFs on NULL rows in #112- Make pyarrow optional at import time so plain queries work without it by @wudidapaopao in #118
- Apply query-level
SETTINGSto streaming query output by @wudidapaopao in #144; surface the real error from the streaming INSERT init handshake in #129 - Fix
SELECT chdb()returning"None"in libchdb.so by @wudidapaopao in #154 - Fix the free-threaded cold-start UDF deadlock by @wudidapaopao in #141
- Give macOS
libchdb.soa relocatable install name (@rpath) by @wudidapaopao in #108; hide libcxxstd::__1symbols from the pybind11 shim dylibs in #93 - Run scalar subqueries synchronously on the single-threaded WASM build by @andrey-framer in #101
📦 Packaging & CI
- Ship a single full-featured wasm bundle (drop
CHDB_LITE) by @alxhill in #164 - Fix the silently-missing linux-x86_64 debug-symbols release asset (2 GiB limit) by @wudidapaopao in #104
- Document the five chdb-core distribution artifacts in the README by @wudidapaopao in #155; fix stale single-connection claims in the
connect()docstring by @ShawnChen-Sirius in #130; add a C usage example forchdb_query_with_paramsin #110 - Temporarily disable PyPI publishing of
chdb-core-lite(#102) and free-threading wheels (#124); disable chdb-wasm distribution on tags (#103) by @wudidapaopao - Regression coverage for
Python(df)string columns with NULLs (#138) and byte-exact non-ASCII strings (#139) by @wudidapaopao - CI fixes by @serprex in #168; drop the v26.5 datastore compat shim / fix the wheel release trigger by @ShawnChen-Sirius in #86; remove the split-bundle test flow from wasm CI by @wudidapaopao in #176
New Contributors
- @andrey-framer made their first contribution in #101
- @alxhill made their first contribution in #164
- @serprex made their first contribution in #166
- @dannanors made their first contribution in #173
Full Changelog: v26.5.0...v26.7.0