Skip to content

v26.9.0

Latest

Choose a tag to compare

@ShawnChen-Sirius ShawnChen-Sirius released this 28 Sep 08:53
· 62 commits to main since this release
a0976a8

chdb-core v26.9.0

Full changelog: v26.7.3...v26.9.0 β€” 63 commits, 14 pull requests.
ClickHouse baseline: v26.7.2.1-stable β†’ v26.9.2.8-stable.

The first chdb-core on the ClickHouse 26.9 line.

πŸš€ New features

  • Python user-defined aggregate functions (#236) β€” a UDAF is registered like a UDF and runs inside the engine, so a Python aggregate can be used in GROUP BY without pulling rows out first. The remaining paths where a shadowed name failed silently now report it.
  • Query pyarrow.RecordBatch and pyarrow.dataset.Dataset (#237) β€” both are accepted wherever a table is, alongside the pyarrow.Table that already was, with cancellation, scan errors, concurrency and nesting covered by tests.
  • chdb_insert_arrow_array / chdb_insert_arrow_stream (#227) β€” name-mapped Arrow ingest through the C ABI. A caller hands over an ArrowArray or an ArrowArrayStream and the engine matches columns by name instead of by position.
  • Every query API raises ChdbError (#204) β€” connection and session query(), the stateless query(), streaming fetch and cursor execute. Only the engine call is wrapped, not result conversion, and the engine's own traceback is dropped so the message is the error rather than the path it took.
  • System logs on the embedded engine (#223) β€” system.query_log and its siblings exist in an embedded session. The text_log queue is reset only when a previous owner shut it down.

πŸ› Bug fixes

  • An INSERT no longer reads the host process's stdin as data (#245, closes #239). A host that had a pipe on stdin got its own input swallowed into the table.
  • Nulls in pandas masked float columns are read from the validity mask (#234), not from the payload underneath it.
  • Four defects an ASan+UBSan build surfaced (#232): a read one byte past the result buffer, a process that could not start the engine a second time, the insert-stream worker holding two thread statuses, and the built-in users XML being parsed once per query instead of once per process.

⚑ Performance

  • chdb's local settings overrides are shared by both entry points, adjusted defaults no longer masquerade as user choices, and statistics materialization is deferred to merges in chdb sessions (#250).
  • FiberLocal takes the portable TLS path it already offers.

πŸ”„ ClickHouse baseline

  • Synced to v26.9.2.8-stable (#246). The two thread pools 26.9 gave LocalServer alone are initialized on the embedded path, and the pool that initializes itself is left alone.

🌐 WASM

  • The browser bundle ships the workers ParquetV3 needs.
  • Iceberg manifests are decoded in place where there are no threads.
  • The UDF probe recognises a build with no engine at all.
  • The lite size gate is at 15 MiB, deliberately and temporarily.

πŸ”§ CI / docs

  • A ClickHouse baseline sync skill (#244, #248) and concise shared agent guidance (#235).
  • bindings.md rewritten for the current C ABI (#233).
  • MinIO comes from the image, since there is nowhere left to download it from.

Assets

Four abi3 wheels (macOS x86_64 / arm64, manylinux x86_64 / aarch64), libchdb.so and libchdb.a per platform with chdb.h and chdb.hpp, debug symbols, and SHA256SUMS.