Skip to content

Commit b1d25f3

Browse files
genezhangclaude
andauthored
release: v0.6.5-dev (#247)
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent 2d28003 commit b1d25f3

8 files changed

Lines changed: 54 additions & 26 deletions

File tree

CHANGELOG.md

Lines changed: 33 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,39 @@
1-
## [0.6.4-dev] - 2026-03-14
1+
## [0.6.5-dev] - 2026-03-21
22

33
### 🚀 Features
44

5-
- **Hybrid remote query + local storage**: Execute Cypher queries against a remote ClickHouse cluster from embedded mode, then store results locally in chdb as a subgraph for fast re-querying. New `RemoteConfig` for `SystemConfig`, plus `Connection` methods: `query_remote()`, `query_remote_graph()`, `query_graph()`, `store_subgraph()`. New `GraphResult` structured output and `StoreStats` return type. Available in Rust, Python (UniFFI), and Go (UniFFI) bindings. `RoleConnectionPool::new_with_params()` enables programmatic pool creation without env vars.
5+
- **Hybrid remote query + local storage** (PR #240): Execute Cypher queries against a remote ClickHouse cluster from embedded mode, then store results locally in chdb as a subgraph for fast re-querying. New `RemoteConfig` for `SystemConfig`, plus `Connection` methods: `query_remote()`, `query_remote_graph()`, `query_graph()`, `store_subgraph()`. New `GraphResult` structured output and `StoreStats` return type. Available in Rust, Python (UniFFI), and Go (UniFFI) bindings.
6+
7+
- **Embedded write API** (PR #236): `create_node()`, `create_edge()`, `upsert_node()`, `upsert_edge()` with batch variants (`create_nodes()`, `create_edges()`). `delete_nodes()`, `delete_edges()` for cleanup. `import_json()` and `import_json_file()` for bulk JSON import. Schema entries without `source:` get auto-created as `ReplacingMergeTree` tables. `property_types` field for type-aware DDL (PR #238).
8+
9+
- **Multi-format file import** (PR #243): `import_csv_file()`, `import_parquet_file()`, `import_file()` (auto-detect from extension). Supports CSV, Parquet, TSV, JSON/NDJSON/JSONL formats.
10+
11+
- **Richer Value types** (PR #244): `Value::Date("YYYY-MM-DD")`, `Value::Timestamp("YYYY-MM-DD HH:MM:SS")`, `Value::UUID("8-4-4-4-12")` auto-detected from ClickHouse JSON output. `to_sql_literal()` generates `toDate()`/`toDateTime()`/`toUUID()` wrappers. `Value::string()` constructor bypasses detection.
12+
13+
- **Kuzu API parity** (PR #242): `Value::as_bool()`, query timing (`get_compiling_time()`/`get_execution_time()`), `Database::in_memory()`, `Connection::set_query_timeout()`, `QueryResult::get_column_data_types()`.
14+
15+
- **DataFrame output** (PR #245): Python `QueryResult.get_as_df()` (Pandas), `get_as_arrow()` (PyArrow), `get_as_pl()` (Polars) with lazy imports.
16+
17+
- **Python wrapper improvements** (PR #246): `result.compiling_time`/`execution_time`/`column_data_types` properties. `conn.create_node()`/`create_edge()`/`create_nodes()`/`import_file()`/`execute_sql()` accept plain Python dicts with auto-conversion to FFI Value types.
18+
19+
### 📚 Documentation
20+
21+
- **Tutorials and examples** (PR #246): 5 runnable Python scripts (`examples/embedded/`) covering quick start, DataFrames, write API, GraphRAG hybrid workflow, and export formats. Wiki tutorial page (`docs/wiki/Embedded-Tutorials.md`) with Python + Rust code, architecture diagrams, and API quick reference.
22+
23+
### 🐛 Bug Fixes
24+
25+
- **Edge extraction fallback** (PR #241): `extract_edge_from_row` falls back to `from_id`/`to_id` aliases when schema FK column names don't match SQL-generated column names.
26+
- **Security dep updates**: `lz4_flex` 0.11.5→0.11.6 (RUSTSEC-2026-0041), `rustls-webpki` 0.103.8→0.103.10 (RUSTSEC-2026-0049).
27+
28+
### 🧹 Infrastructure
29+
30+
- **CI**: `cargo audit` ignores unmaintained `rustls-pemfile` warning (transitive dep via chdb-rust).
31+
32+
---
33+
34+
## [0.6.4-dev] - 2026-03-14
35+
36+
### 🚀 Features
637

738
- **Denormalized & coupled schema support**: Full query support for schemas where node properties are embedded in edge tables via `from_node_properties`/`to_node_properties`. Includes property mapping, ORDER BY resolution, UNION aggregate column rewriting, and `id()` on virtual nodes (PRs #224-#228).
839

Cargo.lock

Lines changed: 2 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ members = [
77

88
[package]
99
name = "clickgraph"
10-
version = "0.6.4-dev"
10+
version = "0.6.5-dev"
1111
edition = "2021"
1212
rust-version = "1.85"
1313

README.md

Lines changed: 10 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -4,29 +4,25 @@
44

55
# ClickGraph
66

7-
#### ClickGraph - A high-performance, stateless, read-only graph query service for ClickHouse, written in Rust, with Neo4j ecosystem compatibility - Cypher and Bolt Protocol 5.8 support. Now supports embedded mode and exporting query results to external destinations, with Golang, Python bindings, in addition to native Rust.
7+
#### ClickGraph - A high-performance, stateless, read-only graph query service for ClickHouse, written in Rust, with Neo4j ecosystem compatibility - Cypher and Bolt Protocol 5.8 support. Now supports embedded mode with local writes, and exporting query results to external destinations, with Golang, Python bindings, in addition to native Rust.
88

99
> **Note: ClickGraph dev release is at beta quality for view-based graph analytics applications. Kindly raise an issue if you encounter any problem.**
1010
1111
---
1212
## Motivation and Rationale
13-
- Viewing ClickHouse databases (including external sources) as graph data with graph analytics capability brings another level of abstraction and boosts productivity with graph tools, and enables agentic GraphRAG support.
13+
- Viewing ClickHouse databases (including external sources) as graph data with graph analytics capability brings another level of abstraction and boosts productivity with graph tools, and enables agentic GraphRAG support with local writes.
1414
- Research shows relational analytics with columnar stores and vectorized execution engines like ClickHouse provide superior analytical performance and scalability to graph-native technologies, which usually leverage explicit adjacency representations and are more suitable for local-area graph traversals.
1515
- View-based graph analytics offer the benefits of zero-ETL without the hassle of data migration and duplicate cost, yet better performance and scalability than most of the native graph analytics options.
1616
- Neo4j Bolt protocol support gives access to the tools available based on the Bolt protocol.
1717
---
18-
## What's New Under Development
18+
## What's New in v0.6.5-dev
1919

2020
- **Hybrid remote query + local storage** — Execute Cypher queries against a remote ClickHouse cluster from embedded mode, then store results locally in chdb as a subgraph for fast re-querying. `query_remote()`, `query_remote_graph()`, `store_subgraph()` — ideal for GraphRAG context enrichment. Available in Rust, Python, and Go. See [Embedded Mode](docs/wiki/Embedded-Mode.md#hybrid-remote-query--local-storage).
21-
- **Embedded write API for GraphRAG** - `create_node()`, `create_edge()`, `upsert_node()` with batch variants. AI agents can extract entities from documents, store them as graph data, and query with Cypher — all in-process. See [Embedded Mode Write API](docs/wiki/Embedded-Mode.md#write-api-embedded-mode-only).
22-
23-
## What's New in v0.6.4-dev
24-
25-
- **Embedded mode** - Query Parquet/Iceberg/Delta/S3 directly — no ClickHouse server needed. Use as a Rust library (`clickgraph-embedded`) or run the server with `--embedded`. Use for agent's local tool.
26-
- **Golang and Python bindings** - for embedded ClickGraph in addition to Rust native interface.
27-
- **Export query results** - `CALL apoc.export.{csv|json|parquet}.query()` exports to files, S3, GCS, Azure, and HTTP destinations. Compatible commands with Kuzu and DuckDB are also provided.
28-
- **Denormalized & coupled schema fixes** - Corrected property mapping, OPTIONAL MATCH (was silently dropped), and VLP cycle prevention for schemas where node properties are embedded in edge tables.
29-
- **1,591 unit tests** - Up from 1,277, with comprehensive cross-schema pattern matrix tests.
21+
- **Embedded write API for GraphRAG**`create_node()`, `create_edge()`, `upsert_node()` with batch variants. AI agents can extract entities from documents, store them as graph data, and query with Cypher — all in-process. See [Embedded Mode Write API](docs/wiki/Embedded-Mode.md#write-api-embedded-mode-only).
22+
- **Kuzu API parity**`Value::Date/Timestamp/UUID` types, query timing (`compiling_time`/`execution_time`), `Database::in_memory()`, `Connection::set_query_timeout()`, column type metadata, multi-format file import (CSV/Parquet/JSON).
23+
- **DataFrame output**`result.get_as_df()` (Pandas), `result.get_as_arrow()` (PyArrow), `result.get_as_pl()` (Polars) for Python data science workflows.
24+
- **Tutorials and examples** — 5 runnable Python examples covering quick start, DataFrames, write API, GraphRAG hybrid workflow, and export formats. See [`examples/embedded/`](examples/embedded/).
25+
- **1,599 unit tests** — Up from 1,591, with hybrid E2E tests and comprehensive Value type coverage.
3026

3127
See [CHANGELOG.md](CHANGELOG.md) for complete release history.
3228

@@ -46,7 +42,7 @@ See [CHANGELOG.md](CHANGELOG.md) for complete release history.
4642
- **GraphRAG structured output** - `format: "Graph"` returns deduplicated nodes, edges, and stats for graph visualization and RAG pipelines.
4743
- **Query Metrics** - Phase-by-phase timing via HTTP headers and structured logging
4844
- **ClickHouse cluster load balancing** - `CLICKHOUSE_CLUSTER` env var auto-discovers and balances queries across cluster nodes.
49-
- **Complex queries like LDBC SNB benchmark: 36/37 queries (97%)** - Near-complete Social Network Benchmark coverage. See [benchmark results](benchmarks/ldbc_snb/BENCHMARK_RESULTS.md) for performance data on sf0.003 and sf10 datasets.
45+
- **Complex queries like LDBC SNB benchmark: 36/37 queries (97%)** - Near-complete Social Network Benchmark coverage. See [benchmark results](benchmarks/ldbc_snb/BENCHMARK_RESULTS.md) for performance data on sf0.003, sf1 and sf10 datasets.
5046

5147
### Neo4j Ecosystem Compatibility
5248
- **Bolt Protocol v5.8** - Full Neo4j driver compatibility (cypher-shell, Neo4j Browser, graph-notebook)
@@ -226,7 +222,7 @@ RETURN friend.name
226222

227223
## Development Status
228224

229-
**Current Version**: v0.6.4-dev
225+
**Current Version**: v0.6.5-dev
230226

231227
### Test Coverage
232228
- **Rust Unit Tests**: 1,588 passing (100%)

ROADMAP.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# ClickGraph Roadmap
22

3-
**Last Updated**: March 14, 2026
4-
**Current Version**: v0.6.4-dev (Phase 3 Complete, Phase 4 In Progress)
3+
**Last Updated**: March 21, 2026
4+
**Current Version**: v0.6.5-dev (Phase 3 Complete, Phase 4 In Progress)
55

66
This document outlines delivered features, current status, and planned enhancements for ClickGraph.
77

STATUS.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
# ClickGraph Status
22

3-
*Updated: March 14, 2026*
3+
*Updated: March 21, 2026*
44

5-
## Current Version: v0.6.4-dev
5+
## Current Version: v0.6.5-dev
66

77
Read-only Cypher-to-ClickHouse SQL query engine with Neo4j Browser compatibility.
88
Supports both remote ClickHouse and embedded (in-process) mode via chdb.
99

10-
**Unit Tests**: 1,588 passing (100%)
10+
**Unit Tests**: 1,599 passing (100%)
1111
**Integration Tests**: 183 passing (100%)
12-
**Embedded Tests**: 31 passing (unit + e2e)
12+
**Embedded Tests**: 152 passing (unit + integration + e2e)
1313
**Go Binding Tests**: 14 passing (100%)
1414
**LDBC SNB**: 36/37 queries passing at sf0.003 and sf1 (97%) — bi-16 blocked by CALL subquery
1515
**Benchmark**: 14/14 queries (100%)

benchmarks/ldbc_snb/BENCHMARK_RESULTS.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# LDBC SNB Benchmark Results
22

3-
**Updated**: March 2026 · ClickGraph v0.6.4-dev
3+
**Updated**: March 2026 · ClickGraph v0.6.5-dev
44

55
## Summary
66

demos/neo4j-browser/docker-compose.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ services:
5555
- neo4j_demo_logs:/logs
5656

5757
clickgraph:
58-
image: genezhang/clickgraph:v0.6.4-dev
58+
image: genezhang/clickgraph:v0.6.5-dev
5959
container_name: clickgraph-demo
6060
depends_on:
6161
clickhouse:

0 commit comments

Comments
 (0)